nightingale 16.2.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +1 -1
- package/dist/definitions/formatter-utils/formatRecordToString.d.ts +1 -1
- package/dist/definitions/formatter-utils/formatRecordToString.d.ts.map +1 -1
- package/dist/definitions/formatter-utils/index.d.ts +1 -4
- package/dist/definitions/formatter-utils/index.d.ts.map +1 -1
- package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts +3 -3
- package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts.map +1 -1
- package/dist/definitions/formatters/JSONFormatter.d.ts.map +1 -1
- package/dist/definitions/handlers/ConsoleCLIHandler.d.ts +1 -0
- package/dist/definitions/handlers/ConsoleCLIHandler.d.ts.map +1 -1
- package/dist/definitions/handlers/ConsoleHandler.d.ts +2 -1
- package/dist/definitions/handlers/ConsoleHandler.d.ts.map +1 -1
- package/dist/definitions/handlers/defaultFormatter.d.ts +2 -0
- package/dist/definitions/handlers/defaultFormatter.d.ts.map +1 -0
- package/dist/definitions/handlers/defaultFormatter.target-node.d.ts +2 -0
- package/dist/definitions/handlers/defaultFormatter.target-node.d.ts.map +1 -0
- package/dist/definitions/loggers/LoggerCLI.d.ts +6 -1
- package/dist/definitions/loggers/LoggerCLI.d.ts.map +1 -1
- package/dist/definitions/loggers/LoggerCLI.test.d.ts +2 -0
- package/dist/definitions/loggers/LoggerCLI.test.d.ts.map +1 -0
- package/dist/definitions/outputs/cliConsoleOutput.d.ts +1 -1
- package/dist/definitions/outputs/cliConsoleOutput.d.ts.map +1 -1
- package/dist/definitions/outputs/consoleOutput.d.ts +1 -1
- package/dist/definitions/outputs/consoleOutput.d.ts.map +1 -1
- package/dist/definitions/outputs/consoleOutput.target-node.d.ts +3 -0
- package/dist/definitions/outputs/consoleOutput.target-node.d.ts.map +1 -0
- package/dist/index-browser.es.js +262 -357
- package/dist/index-browser.es.js.map +1 -1
- package/dist/index-node20.mjs +266 -362
- package/dist/index-node20.mjs.map +1 -1
- package/package.json +14 -12
- package/src/formatter-utils/formatObject.test.ts +1 -3
- package/src/formatter-utils/formatRecordToString.ts +2 -2
- package/src/formatter-utils/index.ts +1 -5
- package/src/formatters/ANSIFormatter.test.ts +1 -1
- package/src/formatters/BrowserConsoleFormatter.ts +4 -6
- package/src/formatters/HTMLFormatter.test.ts +2 -2
- package/src/formatters/JSONFormatter.test.ts +5 -5
- package/src/formatters/JSONFormatter.ts +19 -15
- package/src/formatters/MarkdownFormatter.test.ts +3 -1
- package/src/formatters/RawFormatter.test.ts +2 -2
- package/src/handlers/ConsoleCLIHandler.ts +11 -2
- package/src/handlers/ConsoleHandler.ts +3 -11
- package/src/handlers/StringHandler.ts +1 -1
- package/src/handlers/defaultFormatter.target-node.ts +7 -0
- package/src/handlers/defaultFormatter.ts +3 -0
- package/src/loggers/LoggerCLI.test.ts +19 -0
- package/src/loggers/LoggerCLI.ts +22 -2
- package/src/outputs/cliConsoleOutput.ts +2 -9
- package/src/outputs/consoleOutput.target-node.ts +10 -0
- package/src/outputs/consoleOutput.ts +2 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browser.es.js","sources":["../src/config.ts","../src/formatter-utils/levelToStyles.ts","../src/formatter-utils/levelToSymbol.ts","../src/formatter-utils/styleToHexColor.ts","../src/formatter-utils/styleToHtmlStyle.ts","../src/formatter-utils/formatStyles.ts","../src/formatter-utils/formatObject.ts","../src/formatter-utils/formatRecordToString.ts","../src/debug/debug.ts","../src/formatters/RawFormatter.ts","../src/formatters/MarkdownFormatter.ts","../src/formatters/JSONFormatter.ts","../src/formatters/ANSIFormatter.ts","../src/formatters/HTMLFormatter.ts","../src/formatters/BrowserConsoleFormatter.ts","../src/outputs/consoleOutput.ts","../src/handlers/StringHandler.ts","../src/handlers/BrowserConsoleHandler.ts","../src/handlers/ConsoleHandler.ts","../src/outputs/cliConsoleOutput.ts","../src/handlers/ConsoleCLIHandler.ts","../src/loggers/LoggerCLI.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from \"nightingale-logger\";\nimport type { Handler, Level } from \"nightingale-types\";\n\nconst globalOrWindow: typeof global =\n typeof global !== \"undefined\" ? global : (window as typeof global);\n\nif (\n process.env.NODE_ENV !== \"production\" &&\n globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS\n) {\n throw new Error(\"nightingale: update all to ^5.0.0\");\n}\n\nif (!globalOrWindow.__NIGHTINGALE_CONFIG) {\n globalOrWindow.__NIGHTINGALE_CONFIG = [];\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE = new Map<\n string,\n ComputedConfigForKey\n >();\n globalOrWindow.__NIGHTINGALE_CONFIG_DEFAULT = {\n handlers: [],\n processors: [],\n };\n}\n\nfunction clearCache(): void {\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE.clear();\n}\n\nfunction handleConfig(config: Config): Config {\n if (config.keys) {\n if (config.pattern) {\n throw new Error(\"Cannot have key and pattern for the same config\");\n }\n if (config.key) {\n throw new Error(\"Cannot have key and keys for the same config\");\n }\n } else if (config.key) {\n if (config.pattern) {\n throw new Error(\"Cannot have key and pattern for the same config\");\n }\n config.keys = [config.key];\n delete config.key;\n }\n\n if (config.handler) {\n if (config.handlers) {\n throw new Error(\"Cannot have handler and handlers for the same config\");\n }\n config.handlers = [config.handler];\n delete config.handler;\n }\n\n if (config.processor) {\n if (config.processors) {\n throw new Error(\n \"Cannot have processors and processors for the same config\",\n );\n }\n config.processors = [config.processor];\n delete config.processor;\n }\n\n return config;\n}\n\nexport function configure(config: Config[]): void {\n if (globalOrWindow.__NIGHTINGALE_CONFIG.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"nightingale: warning: config overridden\");\n }\n\n clearCache();\n globalOrWindow.__NIGHTINGALE_CONFIG = config.map(handleConfig);\n}\n\nexport function addConfig(config: Config, unshift = false): void {\n config = handleConfig(config);\n globalOrWindow.__NIGHTINGALE_CONFIG[unshift ? \"unshift\" : \"push\"](config);\n clearCache();\n}\n\nconst configIsForKey = (key: string) => (config: Config) => {\n if (config.keys) return config.keys.includes(key);\n if (config.pattern) return config.pattern.test(key);\n return true;\n};\n\nglobalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (\n key: string,\n): ComputedConfigForKey => {\n const globalCache = globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE;\n\n const existingCache = globalCache.get(key);\n\n if (existingCache) {\n return existingCache;\n }\n\n const loggerConfig: ComputedConfigForKey = {\n handlers: [],\n processors: [],\n };\n\n globalOrWindow.__NIGHTINGALE_CONFIG\n .filter(configIsForKey(key))\n .some((config: Config) => {\n if (config.handlers) loggerConfig.handlers.push(...config.handlers);\n if (config.processors) loggerConfig.processors.push(...config.processors);\n return config.stop;\n });\n\n globalCache.set(key, loggerConfig);\n return loggerConfig;\n};\n\nif (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler: Handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n","import { Level } from \"nightingale-levels\";\n\nexport type LevelToStyles = Readonly<Record<number, string[]>>;\n\nexport const levelToStyles: LevelToStyles = {\n [Level.TRACE]: [\"gray\"],\n [Level.DEBUG]: [\"gray\"],\n // [Level.INFO]: ['gray'],\n [Level.WARN]: [\"yellow\"],\n [Level.ERROR]: [\"red\", \"bold\"],\n [Level.CRITICAL]: [\"red\", \"bold\"],\n [Level.FATAL]: [\"bgRed\", \"white\"],\n [Level.EMERGENCY]: [\"bgRed\", \"white\"],\n};\n","import { Level } from \"nightingale-levels\";\n\nexport type LevelToSymbol = Readonly<Record<number, string>>;\n\nexport const levelToSymbol: LevelToSymbol = {\n [Level.TRACE]: \"•\",\n [Level.DEBUG]: \"•\",\n [Level.INFO]: \"→\",\n [Level.WARN]: \"⚠\",\n [Level.ERROR]: \"✖\",\n [Level.CRITICAL]: \"!\",\n [Level.FATAL]: \"‼\",\n [Level.EMERGENCY]: \"‼\",\n};\n","export const styleToHexColor = {\n orange: \"ff5f00\",\n} as const;\n\nexport type StyleToHexColor = Readonly<\n Record<keyof typeof styleToHexColor, string>\n>;\n","import { styleToHexColor } from \"./styleToHexColor\";\n\nexport interface HtmlStyle {\n readonly open: string;\n readonly close: string;\n}\n\nexport const styleToHtmlStyleThemeLight = {\n // text style\n bold: { open: \"font-weight: bold\", close: \"font-weight: normal\" },\n italic: { open: \"font-style: italic\", close: \"font-style: normal\" },\n underline: {\n open: \"text-decoration: underline\",\n close: \"text-decoration: none\",\n },\n inverse: {\n open: \"unicode-bidi: bidi-override; direction: rtl\",\n close: \"unicode-bidi: normal; direction: ltr\",\n },\n strikethrough: {\n open: \"text-decoration: line-through\",\n close: \"text-decoration: none\",\n },\n\n black: { open: \"color: black\", close: \"color: currentcolor\" },\n red: { open: \"color: #ff0020\", close: \"color: currentcolor\" },\n green: { open: \"color: #00b317\", close: \"color: currentcolor\" },\n yellow: { open: \"color: #ffcc00\", close: \"color: currentcolor\" },\n blue: { open: \"color: #00a0ff\", close: \"color: currentcolor\" },\n magenta: { open: \"color: #ff00a0\", close: \"color: currentcolor\" },\n cyan: { open: \"color: #00cfd8\", close: \"color: currentcolor\" },\n white: { open: \"color: white\", close: \"color: currentcolor\" },\n gray: { open: \"color: gray\", close: \"color: currentcolor\" },\n dim: { open: \"color: #808080\", close: \"color: currentcolor\" },\n\n bgBlack: { open: \"background: black\", close: \"background: initial\" },\n bgRed: { open: \"background: #ff0020\", close: \"background: initial\" },\n bgGreen: { open: \"background: #00b317\", close: \"background: initial\" },\n bgYellow: { open: \"background: #ffcc00\", close: \"background: initial\" },\n bgBlue: { open: \"background: #00a0ff\", close: \"background: initial\" },\n bgMagenta: { open: \"background: #ff00a0\", close: \"background: initial\" },\n bgCyan: { open: \"background: #00cfd8\", close: \"background: initial\" },\n bgWhite: { open: \"background: white\", close: \"background: initial\" },\n\n orange: {\n open: `color: #${styleToHexColor.orange}`,\n close: \"color: currentcolor\",\n },\n} as const;\n\nexport type StyleToHtmlStyle = Readonly<\n Record<keyof typeof styleToHtmlStyleThemeLight, HtmlStyle>\n>;\n\nexport const styleToHtmlStyleThemeDark: StyleToHtmlStyle = {\n ...styleToHtmlStyleThemeLight,\n black: styleToHtmlStyleThemeLight.white,\n bgBlack: styleToHtmlStyleThemeLight.bgWhite,\n white: styleToHtmlStyleThemeLight.black,\n bgWhite: styleToHtmlStyleThemeLight.bgBlack,\n gray: { open: \"color: lightgray\", close: \"color: currentcolor\" },\n};\n","/* eslint sort-keys: error */\n\nexport const formatStyles = {\n bigint: [\"yellow\", \"bold\"],\n boolean: [\"green\"],\n date: [\"magenta\"],\n error: [\"red\"],\n function: [\"blue\"],\n null: [\"bold\"],\n number: [\"yellow\"],\n regexp: [\"magenta\"],\n string: [\"orange\"],\n symbol: [\"magenta\"],\n undefined: [\"dim\"],\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\nimport { formatStyles } from \"./formatStyles\";\n\nexport interface FormatObjectOptions {\n padding?: string;\n maxDepth?: number;\n}\n\nexport type StyleFn = (styles: Styles, value: string) => string;\n\nexport type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;\n\nconst noStyleFn: StyleFn = (styles: Styles, value: string): string => value;\n\ninterface InternalFormatParams {\n padding: string;\n depth: number;\n maxDepth: number;\n objects: Set<unknown>;\n}\n\ninterface FormattedKey {\n stringKey: string;\n formattedKey: string;\n}\n\ntype FormatKey<Key> = (\n key: Key,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n) => FormattedKey;\n\ninterface Value<Key> {\n key: Key;\n value: unknown;\n}\n\ninterface FormattedValue {\n stringValue: string;\n formattedValue: string;\n}\n\ntype Values<Key> = Value<Key>[];\n\ninterface InternalFormatIteratorParams<Key> {\n prefix: string;\n suffix: string;\n formatKey: FormatKey<Key>;\n prefixSuffixSpace?: string;\n}\n\nfunction tryStringify(arg: unknown): string {\n try {\n return JSON.stringify(arg).replace(/\\\\n/g, \"\\n\");\n } catch {\n return \"[Circular]\";\n }\n}\n\nconst sameRawFormattedValue = (value: string): FormattedValue => ({\n stringValue: value,\n formattedValue: value,\n});\n\nconst numericSeparator = \"_\";\n\nconst formatIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = integerAsString.length;\n const start = integerAsString.startsWith(\"-\") ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n result = `${numericSeparator}${integerAsString.slice(i - 3, i)}${result}`;\n }\n return i === integerAsString.length\n ? integerAsString\n : `${integerAsString.slice(0, i)}${result}`;\n};\n\nconst formatDecimalIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = 0;\n for (; i < integerAsString.length - 3; i += 3) {\n result += `${integerAsString.slice(i, i + 3)}${numericSeparator}`;\n }\n return i === 0 ? integerAsString : `${result}${integerAsString.slice(i)}`;\n};\n\nconst formatNumberValue = (value: number): string => {\n if (Number.isNaN(value)) {\n return \"NaN\";\n }\n if (value === Number.POSITIVE_INFINITY) {\n return \"+Infinity\";\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return \"-Infinity\";\n }\n if (value === Number.EPSILON) {\n return \"Epsilon\";\n }\n if (Object.is(value, -0)) {\n return \"-0\";\n }\n const integer = Math.trunc(value);\n const integerAsString = integer.toString();\n if (integer === value) {\n if (integerAsString.includes(\"e\")) {\n return integerAsString;\n }\n return formatIntegerValue(integerAsString);\n } else {\n return `${formatIntegerValue(integerAsString)}.${formatDecimalIntegerValue(String(value).slice(integerAsString.length + 1))}`;\n }\n};\n\nfunction internalFormatValue(\n value: unknown,\n styleFn: StyleFn,\n styles: Styles,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n const typeofValue = typeof value;\n\n if (!styles) {\n if (value === null) {\n styles = [\"bold\"];\n } else {\n switch (typeofValue) {\n case \"bigint\":\n styles = formatStyles.bigint;\n break;\n case \"boolean\":\n styles = formatStyles.boolean;\n break;\n case \"undefined\":\n styles = formatStyles.undefined;\n break;\n case \"number\":\n styles = formatStyles.number;\n break;\n case \"string\":\n styles = formatStyles.string;\n break;\n case \"symbol\":\n styles = formatStyles.symbol;\n break;\n case \"object\":\n if (value instanceof Date) {\n styles = formatStyles.date;\n }\n if (value instanceof RegExp) {\n styles = formatStyles.regexp;\n }\n if (value instanceof Error) {\n styles = formatStyles.error;\n }\n break;\n case \"function\":\n styles = formatStyles.function;\n break;\n default:\n break;\n }\n }\n }\n\n let stringValue: string;\n if (value === null) {\n stringValue = \"null\";\n } else if (value === undefined) {\n stringValue = \"undefined\";\n } else if (typeofValue === \"number\") {\n stringValue = formatNumberValue(value as number);\n } else if (typeofValue === \"boolean\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n stringValue = (value as any).toString() as string;\n } else if ((value as () => unknown).constructor === Object) {\n if (depth >= maxDepth) {\n stringValue = \"{Object...}\";\n } else {\n return internalFormatObject(\n value as Record<string, unknown>,\n styleFn,\n undefined,\n {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n },\n );\n }\n } else if (Array.isArray(value)) {\n if (depth >= maxDepth) {\n stringValue = \"[Array...]\";\n } else {\n return internalFormatArray(value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof Error) {\n const stack = value.stack;\n stringValue =\n stack?.startsWith(value.message) ||\n stack?.startsWith(`${value.name}: ${value.message}`)\n ? stack\n : `${value.message}\\n${stack || \"\"}`;\n } else if (value instanceof Map) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatMap(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (typeofValue === \"bigint\") {\n stringValue = `[BigInt: ${(value as bigint).toString()}]`;\n } else if (typeofValue === \"symbol\") {\n stringValue = (value as symbol).toString();\n } else if (value instanceof Set) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatSet(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof WeakMap) {\n stringValue = \"{WeakMap...}\";\n } else if (value instanceof WeakSet) {\n stringValue = \"{WeakSet...}\";\n } else if (value instanceof Date) {\n stringValue = `[Date: ${value.toISOString()}]`;\n } else if (value instanceof RegExp) {\n stringValue = `[RegExp: ${value.toString()}]`;\n } else if (typeof value === \"function\") {\n stringValue = `[Function: ${value.name}]`;\n } else {\n stringValue = tryStringify(value);\n }\n\n const formattedValue = styleFn(styles, stringValue);\n\n return {\n stringValue,\n formattedValue,\n };\n}\n\nconst separator = \",\";\n\nconst internalFormatKey: FormatKey<string> = (\n key: string,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return {\n stringKey: `${key}: `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${key}:`)} `,\n };\n};\n\nconst internalNoKey: FormatKey<undefined> = (\n key: string | undefined,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return { stringKey: \"\", formattedKey: \"\" };\n};\n\nconst internalFormatMapKey: FormatKey<unknown> = (\n key: unknown,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n const { stringValue, formattedValue } = internalFormatValue(\n key,\n noStyleFn,\n undefined,\n internalFormatParams,\n );\n return {\n stringKey: `${stringValue} => `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${formattedValue}:`)} `,\n };\n};\n\nconst internalFormatIterator = <Key>(\n values: Values<Key>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n {\n prefix,\n suffix,\n prefixSuffixSpace = \" \",\n formatKey,\n }: InternalFormatIteratorParams<Key>,\n): FormattedValue => {\n let breakLine = false;\n const formattedSeparator = (): string => styleFn([\"gray\"], separator);\n\n const valuesMaxIndex = values.length - 1;\n const formattedValues: FormattedValue[] = values.map(\n ({ key, value }, index: number) => {\n const nextDepth = depth + 1;\n const internalFormatParams = {\n padding,\n depth: nextDepth,\n maxDepth,\n objects,\n };\n\n // key must be formatted before value (browser-formatter needs order)\n const { stringKey, formattedKey } = formatKey(\n key,\n styleFn,\n internalFormatParams,\n );\n\n let { stringValue, formattedValue } = internalFormatValue(\n value,\n styleFn,\n key && objectStyles\n ? objectStyles[key as unknown as string]\n : undefined,\n internalFormatParams,\n );\n\n if (\n stringValue &&\n (stringValue.length > 80 || stringValue.includes(\"\\n\"))\n ) {\n breakLine = true;\n stringValue = stringValue.replace(/\\n/g, `\\n${padding}`);\n formattedValue = formattedValue.replace(/\\n/g, `\\n${padding}`);\n }\n\n return {\n stringValue:\n stringKey + stringValue + (index === valuesMaxIndex ? \"\" : separator),\n formattedValue:\n formattedKey +\n formattedValue +\n (index === valuesMaxIndex ? \"\" : formattedSeparator()),\n // note: we need to format the separator for each values for browser-formatter\n };\n },\n );\n\n return {\n stringValue:\n prefix +\n formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.stringValue}`\n : (fv) => fv.stringValue,\n )\n .join(breakLine ? \"\\n\" : \" \") +\n suffix,\n formattedValue: `${prefix}${\n breakLine ? \"\" : prefixSuffixSpace\n }${formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.formattedValue}`\n : (v) => v.formattedValue,\n )\n .join(breakLine ? \"\" : \" \")}${\n breakLine ? \",\\n\" : prefixSuffixSpace\n }${suffix}`,\n };\n};\n\nfunction internalFormatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(object)) {\n return sameRawFormattedValue(\"{Circular Object}\");\n }\n\n const keys: string[] = Object.keys(object);\n if (keys.length === 0) {\n return sameRawFormattedValue(\"{}\");\n }\n\n objects.add(object);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: object[key] })),\n styleFn,\n objectStyles,\n { padding, depth, maxDepth, objects },\n { prefix: \"{\", suffix: \"}\", formatKey: internalFormatKey },\n );\n\n objects.delete(object);\n\n return result;\n}\n\nfunction internalFormatMap(\n name: string,\n map: Map<unknown, unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(map)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const keys = [...map.keys()];\n if (keys.length === 0) {\n return sameRawFormattedValue(`${name} {}`);\n }\n\n objects.add(map);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: map.get(key) })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} {`, suffix: \"}\", formatKey: internalFormatMapKey },\n );\n\n objects.delete(map);\n\n return result;\n}\n\nfunction internalFormatArray(\n array: unknown[],\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(array)) {\n return sameRawFormattedValue(\"{Circular Array}\");\n }\n\n if (array.length === 0) {\n return sameRawFormattedValue(\"[]\");\n }\n\n objects.add(array);\n\n const result = internalFormatIterator(\n array.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n {\n prefix: \"[\",\n suffix: \"]\",\n prefixSuffixSpace: \"\",\n formatKey: internalNoKey,\n },\n );\n\n objects.delete(array);\n\n return result;\n}\n\nfunction internalFormatSet(\n name: string,\n set: Set<unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(set)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const values = [...set.values()];\n if (values.length === 0) {\n return sameRawFormattedValue(`${name} []`);\n }\n\n objects.add(set);\n\n const result = internalFormatIterator(\n values.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} [`, suffix: \"]\", formatKey: internalNoKey },\n );\n\n objects.delete(set);\n\n return result;\n}\n\nexport function formatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn = noStyleFn,\n objectStyles?: ObjectStyles,\n { padding = \" \", maxDepth = 10 }: FormatObjectOptions = {},\n): string {\n const { formattedValue: result } = internalFormatObject(\n object,\n styleFn,\n objectStyles,\n {\n padding,\n maxDepth,\n depth: 0,\n objects: new Set(),\n },\n );\n\n if (result === \"{}\") {\n return \"\";\n }\n\n return result;\n}\n","import type { LogRecord, Metadata } from \"nightingale-types\";\nimport type { ObjectStyles, StyleFn } from \"./formatObject\";\nimport { formatObject } from \"./formatObject\";\nimport { levelToStyles } from \"./levelToStyles\";\nimport { levelToSymbol } from \"./levelToSymbol\";\n\nexport function formatRecordToString<T extends Metadata>(\n record: LogRecord<T>,\n style: StyleFn,\n): string {\n const parts: string[] = [];\n\n if (record.displayName) {\n parts.push(style([\"dim\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"dim\"], record.key));\n }\n\n if (record.datetime) {\n parts.push(\n style([\"gray\", \"bold\"], record.datetime.toTimeString().split(\" \", 2)[0]!),\n );\n /* new Date().toFormat('HH24:MI:SS') */\n }\n\n let message: string = record.symbol || levelToSymbol[record.level] || \"\";\n const styles = record.styles || levelToStyles[record.level];\n\n if (record.message) {\n if (message) {\n message += ` ${record.message}`;\n } else {\n message = record.message;\n }\n }\n\n if (message) {\n if (styles) {\n message = style(styles, message);\n }\n parts.push(message);\n }\n\n const formatRecordObject = (\n key: string,\n object: Record<string, unknown> | undefined,\n objectStyles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, objectStyles);\n\n if (!stringObject) {\n return;\n }\n\n parts.push(stringObject);\n };\n\n formatRecordObject(\"metadata\", record.metadata, record.metadataStyles);\n formatRecordObject(\"extra\", record.extra, undefined);\n formatRecordObject(\"context\", record.context, undefined);\n\n return parts.join(\" \");\n}\n","/* eslint-disable complexity */\nimport { Level } from \"nightingale-levels\";\n\nconst specialRegexpChars = /[$()+.?[\\\\\\]^{|}]/;\n\ntype TestFunction = (string: string) => boolean;\nexport type DebugValueType = RegExp | string[] | string;\n\nconst createTestFunctionFromRegexp =\n (regexp: RegExp): TestFunction =>\n (string: string) =>\n regexp.test(string);\n\nconst createTestFunctionFromRegexpString = (value: string): TestFunction => {\n if (!value.endsWith(\"/\")) throw new Error(\"Invalid RegExp DEBUG value\");\n return createTestFunctionFromRegexp(new RegExp(value.slice(1, -1)));\n};\n\nconst createTestFunctionFromValue = (value: string): TestFunction => {\n if (value.endsWith(\":*\")) {\n value = value.slice(0, -2);\n return (string: string) => string.startsWith(value);\n }\n\n return (string: string) => string === value;\n};\n\nexport type FindDebugLevel = (minLevel: Level, key: string) => Level;\n\nexport function createFindDebugLevel(\n debugValue?: DebugValueType,\n): FindDebugLevel {\n let isWildcard = false;\n const debugValues: TestFunction[] = [];\n const skips: TestFunction[] = [];\n\n if (!Array.isArray(debugValue)) {\n if (debugValue instanceof RegExp) {\n debugValues.push(createTestFunctionFromRegexp(debugValue));\n debugValue = undefined;\n } else if (debugValue) {\n debugValue = debugValue.trim();\n\n if (debugValue.startsWith(\"/\")) {\n debugValues.push(createTestFunctionFromRegexpString(debugValue));\n debugValue = undefined;\n } else {\n debugValue = debugValue.split(/[\\s,]+/);\n }\n }\n }\n\n if (debugValue) {\n (debugValue as string[]).forEach((value) => {\n if (specialRegexpChars.test(value)) {\n throw new Error(\n `Invalid debug value: \"${value}\" (contains special chars)`,\n );\n }\n\n if (!value) return;\n\n if (value === \"*\") {\n isWildcard = true;\n return;\n }\n\n if (value.startsWith(\"-\")) {\n skips.push(createTestFunctionFromValue(value.slice(1)));\n } else if (!isWildcard) {\n debugValues.push(createTestFunctionFromValue(value));\n }\n });\n }\n\n if (isWildcard) {\n if (skips.length === 0) {\n return () => Level.ALL;\n } else {\n return (minLevel: Level, key: string) =>\n skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n }\n\n if (debugValues.length === 0) {\n return (minLevel: Level) => minLevel;\n }\n\n return (minLevel: Level, key: string) => {\n if (minLevel === Level.ALL || !key) {\n return minLevel;\n }\n\n if (debugValues.some((dv) => dv(key))) {\n return skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n\n return minLevel;\n };\n}\n","import type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { formatRecordToString } from \"../formatter-utils\";\n\nexport function style(styles: Styles, value: string): string {\n return value;\n}\n\nexport const RawFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { formatRecordToString } from \"../formatter-utils\";\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((part, styleName) => {\n switch (styleName) {\n case \"bold\":\n return `*${part}*`;\n case \"italic\":\n return `_${part}_`;\n case \"strikethrough\":\n return `~${part}~`;\n\n // no default\n }\n\n return part;\n }, string);\n}\n\nexport const MarkdownFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { NightingaleFormatter } from \"../formatter-utils\";\n\nfunction map2object(map: Map<unknown, unknown>): unknown {\n const object: Record<string, unknown> = {};\n\n map.forEach((value, key) => {\n if (typeof key === \"object\") {\n // ignore key\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n object[String(key)] = value;\n });\n\n return object;\n}\n\nfunction stringify(value: unknown, space?: number | string): string {\n return JSON.stringify(\n value,\n (key, objectValue) => {\n if (objectValue instanceof Map) {\n return map2object(objectValue);\n }\n if (objectValue instanceof Error) {\n return {\n message: objectValue.message,\n stack: objectValue.stack,\n };\n }\n\n return objectValue as unknown;\n },\n space,\n );\n}\n\nexport const JSONFormatter: NightingaleFormatter = {\n format(record) {\n return stringify({\n key: record.key,\n level: record.level,\n datetime: record.datetime,\n message: record.message,\n metadata: record.metadata,\n extra: record.extra,\n });\n },\n};\n\nexport const JSONCLIFormatter: NightingaleFormatter = {\n format(record) {\n return stringify({\n key: record.key,\n time: record.datetime.toTimeString().split(\" \", 2)[0]!,\n message: record.message,\n ...record.metadata,\n ...record.extra,\n });\n },\n};\n","import ansi from \"ansi-styles\";\nimport type { NightingaleFormatter } from \"nightingale\";\nimport type { Styles } from \"nightingale-types\";\nimport { formatRecordToString, styleToHexColor } from \"../formatter-utils\";\n\nexport type { Styles } from \"nightingale-types\";\n\ninterface CodePair {\n open: string;\n close: string;\n}\n\ntype AnsiStyles = Record<string, CodePair | undefined>;\n\nconst ansiStyles: AnsiStyles = {\n black: ansi.black,\n red: ansi.red,\n green: ansi.green,\n yellow: ansi.yellow,\n blue: ansi.blue,\n magenta: ansi.magenta,\n cyan: ansi.cyan,\n white: ansi.white,\n gray: ansi.gray,\n dim: ansi.dim,\n\n bgBlack: ansi.bgBlack,\n bgRed: ansi.bgRed,\n bgGreen: ansi.bgGreen,\n bgYellow: ansi.bgYellow,\n bgBlue: ansi.bgBlue,\n bgMagenta: ansi.bgMagenta,\n bgCyan: ansi.bgCyan,\n bgWhite: ansi.bgWhite,\n\n bold: ansi.bold,\n underline: ansi.underline,\n\n // http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html\n orange: {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor.orange)),\n close: ansi.color.close,\n },\n};\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((styledString: string, styleName: string) => {\n const codePair: CodePair | undefined = ansiStyles[styleName];\n\n if (!codePair) {\n throw new Error(`Unknown style: ${styleName}`);\n }\n\n return codePair.open + styledString + codePair.close;\n }, string);\n}\n\nexport const ANSIFormatter: NightingaleFormatter = {\n format: (record) => formatRecordToString(record, style),\n};\n","import type { Styles } from \"nightingale-types\";\nimport type {\n NightingaleFormatter,\n StyleToHtmlStyle,\n} from \"../formatter-utils\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils\";\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n return `<span style=\"${styles\n .map(\n (styleName) =>\n styleToHtmlStyleThemeLight[styleName as keyof StyleToHtmlStyle].open,\n )\n .join(\"; \")}\">${string}</span>`;\n}\n\nexport const HTMLFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { StyleToHtmlStyle } from \"nightingale\";\nimport type { LogRecord, Metadata, Styles } from \"nightingale-types\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeDark,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils\";\nimport type { StringArrayNightingaleFormatter } from \"../formatter-utils\";\n\nexport const style =\n (styleToHtmlStyle: StyleToHtmlStyle, args: string[]) =>\n (styles: Styles, string: string): string => {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n const htmlStyles = styles.map(\n (styleName) => styleToHtmlStyle[styleName as keyof StyleToHtmlStyle],\n );\n\n args.push(\n htmlStyles.map((s) => s.open).join(\"; \"),\n htmlStyles.map((s) => s.close).join(\"; \"),\n );\n return `%c${string}%c`;\n };\n\nexport class BrowserConsoleFormatter\n implements StringArrayNightingaleFormatter\n{\n styleToHtmlStyle: StyleToHtmlStyle;\n constructor(theme: \"dark\" | \"light\" = \"light\") {\n this.styleToHtmlStyle =\n theme === \"dark\" ? styleToHtmlStyleThemeDark : styleToHtmlStyleThemeLight;\n }\n\n format<T extends Metadata>(record: LogRecord<T>): string[] {\n const args: string[] = [];\n const string = formatRecordToString(\n record,\n style(this.styleToHtmlStyle, args),\n );\n return [string, ...args];\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\nimport { POB_TARGET } from \"pob-babel\";\n\nexport function consoleOutput<T extends Metadata>(\n param: string[] | string,\n record: LogRecord<T>,\n): void {\n if (POB_TARGET !== \"browser\") {\n const outKey = record.level >= Level.ERROR ? \"stderr\" : \"stdout\";\n process[outKey].write(`${param as string}\\n`);\n } else {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](\n ...(param as string[]),\n );\n }\n}\n","/* eslint-disable prefer-template */\nimport type { Handler, Level, LogRecord, Metadata } from \"nightingale-types\";\nimport { RawFormatter } from \"../formatters/RawFormatter\";\n\nexport class StringHandler implements Handler {\n readonly minLevel: Level;\n\n private _buffer = \"\";\n\n constructor(minLevel: Level) {\n this.minLevel = minLevel;\n }\n\n get string(): string {\n return this._buffer;\n }\n\n handle<T extends Metadata>(record: LogRecord<T>): void {\n this._buffer += RawFormatter.format(record) + \"\\n\";\n }\n}\n","import type {\n Handle,\n Handler,\n IsHandling,\n Level,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug\";\nimport { BrowserConsoleFormatter } from \"../formatters/BrowserConsoleFormatter\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\n\nexport function getDebugString(): string {\n const querystring = document.location.search;\n const debugFromLocalStorage =\n // eslint-disable-next-line unicorn/prefer-global-this, @typescript-eslint/no-unnecessary-condition\n window.localStorage?.getItem(\"debug\") || \"\";\n\n if (!querystring) {\n return debugFromLocalStorage;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param\n const debugFromQueryString = decodeURI(\n querystring.replace(\n // eslint-disable-next-line prefer-regex-literals, regexp/no-super-linear-backtracking\n new RegExp(\"^(?:.*[&?]DEBUG(?:=([^&]*))?)?.*$\", \"i\"),\n \"$1\",\n ),\n );\n\n return (\n (debugFromLocalStorage ? `${debugFromLocalStorage},` : \"\") +\n debugFromQueryString\n );\n}\n\n// debug string can change any time (localStorage), so we need a new object each time.\nconst findDebugLevel = (minLevel: Level, key: string): Level =>\n createFindDebugLevel(getDebugString())(minLevel, key);\n\ntype Theme = \"dark\" | \"light\";\n\nconst getDefaultTheme = (): Theme => {\n try {\n const configInLocalStorage = localStorage.getItem(\"NIGHTINGALE_THEME\");\n if (configInLocalStorage && configInLocalStorage === \"dark\") {\n return configInLocalStorage;\n }\n } catch {}\n return \"light\";\n};\n\nconst createHandler = (theme: Theme = getDefaultTheme()): Handle => {\n const browserConsoleFormatter = new BrowserConsoleFormatter(theme);\n return <T extends Metadata>(record: LogRecord<T>) => {\n consoleOutput(browserConsoleFormatter.format(record), record);\n };\n};\n\nexport interface BrowserConsoleHandlerOptions {\n theme?: Theme;\n}\n\nexport class BrowserConsoleHandler implements Handler {\n minLevel: Level = 0;\n\n handle: Handle;\n\n isHandling: IsHandling;\n\n constructor(minLevel: Level, options: BrowserConsoleHandlerOptions = {}) {\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n\n this.handle = createHandler(options.theme);\n }\n}\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { POB_TARGET } from \"pob-babel\";\nimport { createFindDebugLevel } from \"../debug/debug\";\nimport { ANSIFormatter } from \"../formatters/ANSIFormatter\";\nimport { JSONFormatter } from \"../formatters/JSONFormatter\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\n\nconst defaultFormatter =\n POB_TARGET === \"node\" &&\n !process.stdout.isTTY &&\n process.env.NIGHTINGALE_CONSOLE_FORMATTER !== \"ansi\"\n ? JSONFormatter.format\n : ANSIFormatter.format;\n\nconst createHandle = (\n formatter = defaultFormatter,\n output = consoleOutput,\n): Handle => {\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleHandlerOptions {\n formatter?: <T extends Metadata>(record: LogRecord<T>) => string;\n output?: <T extends Metadata>(\n param: string[] | string,\n record: LogRecord<T>,\n ) => void;\n // compat with nightingale-app-console, not used yet\n theme?: \"dark\" | \"light\";\n}\n\nexport class ConsoleHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options.formatter, options.output);\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\nimport { POB_TARGET } from \"pob-babel\";\n\nexport function cliConsoleOutput<T extends Metadata>(\n param: string[] | string,\n record: LogRecord<T>,\n): void {\n if (POB_TARGET !== \"browser\") {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](param as string);\n } else {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](\n ...(param as string[]),\n );\n }\n}\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug\";\nimport { ANSIFormatter } from \"../formatters/ANSIFormatter\";\nimport { JSONFormatter } from \"../formatters/JSONFormatter\";\nimport { cliConsoleOutput } from \"../outputs/cliConsoleOutput\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\n\nconst createHandle = ({ json }: ConsoleCLIHandlerOptions): Handle => {\n const formatter = json ? JSONFormatter.format : ANSIFormatter.format;\n const output = json ? consoleOutput : cliConsoleOutput;\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleCLIHandlerOptions {\n json?: boolean;\n}\n\nexport class ConsoleCLIHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleCLIHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options);\n }\n}\n","import type { ComputedConfigForKey } from \"nightingale-logger\";\nimport { Level, Logger } from \"nightingale-logger\";\nimport type { Handler, Processor } from \"nightingale-types\";\nimport { ConsoleCLIHandler } from \"../handlers/ConsoleCLIHandler\";\n\nexport interface LoggerCLIOptions {\n displayName?: string;\n handlers?: Handler[];\n processors?: Processor[];\n json?: boolean;\n}\n\nexport class LoggerCLI extends Logger {\n private handlers: Handler[];\n private processors: Processor[] = [];\n private json: boolean;\n constructor(\n key: string,\n { displayName, processors, json = false }: LoggerCLIOptions = {},\n ) {\n super(key, displayName);\n this.handlers = [new ConsoleCLIHandler(Level.INFO, { json })];\n this.processors = processors ?? [];\n this.json = json;\n }\n\n protected override getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return {\n handlers: this.handlers,\n processors: this.processors,\n };\n }\n\n logJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n level: Level = Level.INFO,\n ): void {\n if (this.json) {\n this.log(messageOrError, metadata, level);\n }\n }\n\n debugJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.debug(messageOrError, metadata);\n }\n }\n\n noticeJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.notice(messageOrError, metadata);\n }\n }\n\n infoJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.info(messageOrError, metadata);\n }\n }\n\n warnJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.warn(messageOrError, metadata);\n }\n }\n\n group<T, Result extends Awaited<T> | Promise<T>>(\n name: string,\n fn: () => Result,\n ): Result extends Promise<infer V> ? Promise<V> : Awaited<T> {\n if (this.json) {\n return fn() as Result extends Promise<infer V> ? Promise<V> : Awaited<T>;\n } else {\n console.group(name);\n const result = fn();\n if (result instanceof Promise) {\n return result.finally(() => {\n console.groupEnd();\n }) as Result extends Promise<infer V> ? Promise<V> : never;\n } else {\n console.groupEnd();\n return result as Result extends Promise<infer V>\n ? Promise<V>\n : Awaited<T>;\n }\n }\n }\n}\n","import { Logger } from \"nightingale-logger\";\n\nexport { Logger } from \"nightingale-logger\";\nexport { Level, Level as levels } from \"nightingale-levels\";\nexport { configure, addConfig } from \"./config\";\nexport * from \"./formatter-utils\";\nexport { createFindDebugLevel } from \"./debug/debug\";\nexport { RawFormatter } from \"./formatters/RawFormatter\";\nexport { MarkdownFormatter } from \"./formatters/MarkdownFormatter\";\nexport { JSONFormatter } from \"./formatters/JSONFormatter\";\nexport { ANSIFormatter } from \"./formatters/ANSIFormatter\";\nexport { HTMLFormatter } from \"./formatters/HTMLFormatter\";\nexport { BrowserConsoleFormatter } from \"./formatters/BrowserConsoleFormatter\";\nexport { consoleOutput } from \"./outputs/consoleOutput\";\nexport { StringHandler } from \"./handlers/StringHandler\";\nexport { BrowserConsoleHandler } from \"./handlers/BrowserConsoleHandler\";\nexport { ConsoleHandler } from \"./handlers/ConsoleHandler\";\nexport { ConsoleCLIHandler } from \"./handlers/ConsoleCLIHandler\";\nexport { LoggerCLI } from \"./loggers/LoggerCLI\";\nexport { formatStyles } from \"./formatter-utils/formatStyles\";\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n \"nightingale:listenUnhandledErrors\",\n \"UnhandledErrors\",\n ),\n): void {\n process.on(\"uncaughtException\", (error) => {\n logger.error(error, {\n unhandled: true,\n type: \"uncaughtException\",\n });\n });\n process.on(\"unhandledRejection\", (error) => {\n logger.error(error as Error, {\n unhandled: true,\n type: \"unhandledRejection\",\n });\n });\n}\n"],"names":["globalOrWindow","global","window","process","env","NODE_ENV","__NIGHTINGALE_GLOBAL_HANDLERS","Error","__NIGHTINGALE_CONFIG","__NIGHTINGALE_LOGGER_MAP_CACHE","Map","__NIGHTINGALE_CONFIG_DEFAULT","handlers","processors","clearCache","clear","handleConfig","config","keys","pattern","key","handler","processor","configure","length","console","log","map","addConfig","unshift","configIsForKey","includes","test","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","globalCache","existingCache","get","loggerConfig","filter","some","push","stop","set","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","level","minLevel","isHandling","levelToStyles","Level","TRACE","DEBUG","WARN","ERROR","CRITICAL","FATAL","EMERGENCY","levelToSymbol","INFO","styleToHexColor","orange","styleToHtmlStyleThemeLight","bold","open","close","italic","underline","inverse","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","dim","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","styleToHtmlStyleThemeDark","formatStyles","bigint","boolean","date","error","function","null","number","regexp","string","symbol","undefined","noStyleFn","styles","value","tryStringify","arg","JSON","stringify","replace","sameRawFormattedValue","stringValue","formattedValue","numericSeparator","formatIntegerValue","integerAsString","result","i","start","startsWith","slice","formatDecimalIntegerValue","formatNumberValue","Number","isNaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","EPSILON","Object","is","integer","Math","trunc","toString","String","internalFormatValue","styleFn","padding","depth","maxDepth","objects","typeofValue","Date","RegExp","constructor","internalFormatObject","Array","isArray","internalFormatArray","stack","message","name","internalFormatMap","Set","internalFormatSet","WeakMap","WeakSet","toISOString","separator","internalFormatKey","stringKey","formattedKey","internalNoKey","internalFormatMapKey","internalFormatParams","internalFormatIterator","values","objectStyles","prefix","suffix","prefixSuffixSpace","formatKey","breakLine","formattedSeparator","valuesMaxIndex","formattedValues","index","v","fv","join","object","has","add","delete","array","formatObject","formatRecordToString","record","style","parts","displayName","datetime","toTimeString","split","formatRecordObject","stringObject","metadata","metadataStyles","extra","context","specialRegexpChars","createTestFunctionFromRegexp","createTestFunctionFromRegexpString","endsWith","createTestFunctionFromValue","createFindDebugLevel","debugValue","isWildcard","debugValues","skips","trim","forEach","ALL","skip","dv","RawFormatter","format","reduce","part","styleName","MarkdownFormatter","map2object","space","objectValue","JSONFormatter","ansiStyles","ansi","color","ansi256","hexToAnsi256","styledString","codePair","ANSIFormatter","HTMLFormatter","styleToHtmlStyle","args","htmlStyles","s","BrowserConsoleFormatter","theme","consoleOutput","param","StringHandler","_buffer","handle","getDebugString","querystring","document","location","search","debugFromLocalStorage","localStorage","getItem","debugFromQueryString","decodeURI","findDebugLevel","getDefaultTheme","configInLocalStorage","createHandler","browserConsoleFormatter","BrowserConsoleHandler","options","defaultFormatter","createHandle","formatter","output","ConsoleHandler","cliConsoleOutput","json","ConsoleCLIHandler","LoggerCLI","Logger","getHandlersAndProcessors","logJsonOnly","messageOrError","debugJsonOnly","debug","noticeJsonOnly","notice","infoJsonOnly","info","warnJsonOnly","warn","group","fn","Promise","finally","groupEnd","listenUnhandledErrors","logger","on","unhandled","type"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-browser.es.js","sources":["../src/config.ts","../src/formatter-utils/levelToStyles.ts","../src/formatter-utils/levelToSymbol.ts","../src/formatter-utils/styleToHexColor.ts","../src/formatter-utils/styleToHtmlStyle.ts","../src/formatter-utils/formatStyles.ts","../src/formatter-utils/formatObject.ts","../src/formatter-utils/formatRecordToString.ts","../src/debug/debug.ts","../src/formatters/RawFormatter.ts","../src/formatters/MarkdownFormatter.ts","../src/formatters/JSONFormatter.ts","../src/formatters/ANSIFormatter.ts","../src/formatters/HTMLFormatter.ts","../src/formatters/BrowserConsoleFormatter.ts","../src/outputs/consoleOutput.ts","../src/handlers/StringHandler.ts","../src/handlers/BrowserConsoleHandler.ts","../src/handlers/defaultFormatter.ts","../src/handlers/ConsoleHandler.ts","../src/outputs/cliConsoleOutput.ts","../src/handlers/ConsoleCLIHandler.ts","../src/loggers/LoggerCLI.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from \"nightingale-logger\";\nimport type { Handler, Level } from \"nightingale-types\";\n\nconst globalOrWindow: typeof global =\n typeof global !== \"undefined\" ? global : (window as typeof global);\n\nif (\n process.env.NODE_ENV !== \"production\" &&\n globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS\n) {\n throw new Error(\"nightingale: update all to ^5.0.0\");\n}\n\nif (!globalOrWindow.__NIGHTINGALE_CONFIG) {\n globalOrWindow.__NIGHTINGALE_CONFIG = [];\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE = new Map<\n string,\n ComputedConfigForKey\n >();\n globalOrWindow.__NIGHTINGALE_CONFIG_DEFAULT = {\n handlers: [],\n processors: [],\n };\n}\n\nfunction clearCache(): void {\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE.clear();\n}\n\nfunction handleConfig(config: Config): Config {\n if (config.keys) {\n if (config.pattern) {\n throw new Error(\"Cannot have key and pattern for the same config\");\n }\n if (config.key) {\n throw new Error(\"Cannot have key and keys for the same config\");\n }\n } else if (config.key) {\n if (config.pattern) {\n throw new Error(\"Cannot have key and pattern for the same config\");\n }\n config.keys = [config.key];\n delete config.key;\n }\n\n if (config.handler) {\n if (config.handlers) {\n throw new Error(\"Cannot have handler and handlers for the same config\");\n }\n config.handlers = [config.handler];\n delete config.handler;\n }\n\n if (config.processor) {\n if (config.processors) {\n throw new Error(\n \"Cannot have processors and processors for the same config\",\n );\n }\n config.processors = [config.processor];\n delete config.processor;\n }\n\n return config;\n}\n\nexport function configure(config: Config[]): void {\n if (globalOrWindow.__NIGHTINGALE_CONFIG.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"nightingale: warning: config overridden\");\n }\n\n clearCache();\n globalOrWindow.__NIGHTINGALE_CONFIG = config.map(handleConfig);\n}\n\nexport function addConfig(config: Config, unshift = false): void {\n config = handleConfig(config);\n globalOrWindow.__NIGHTINGALE_CONFIG[unshift ? \"unshift\" : \"push\"](config);\n clearCache();\n}\n\nconst configIsForKey = (key: string) => (config: Config) => {\n if (config.keys) return config.keys.includes(key);\n if (config.pattern) return config.pattern.test(key);\n return true;\n};\n\nglobalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (\n key: string,\n): ComputedConfigForKey => {\n const globalCache = globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE;\n\n const existingCache = globalCache.get(key);\n\n if (existingCache) {\n return existingCache;\n }\n\n const loggerConfig: ComputedConfigForKey = {\n handlers: [],\n processors: [],\n };\n\n globalOrWindow.__NIGHTINGALE_CONFIG\n .filter(configIsForKey(key))\n .some((config: Config) => {\n if (config.handlers) loggerConfig.handlers.push(...config.handlers);\n if (config.processors) loggerConfig.processors.push(...config.processors);\n return config.stop;\n });\n\n globalCache.set(key, loggerConfig);\n return loggerConfig;\n};\n\nif (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler: Handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n","import { Level } from \"nightingale-levels\";\n\nexport type LevelToStyles = Readonly<Record<number, string[]>>;\n\nexport const levelToStyles: LevelToStyles = {\n [Level.TRACE]: [\"gray\"],\n [Level.DEBUG]: [\"gray\"],\n // [Level.INFO]: ['gray'],\n [Level.WARN]: [\"yellow\"],\n [Level.ERROR]: [\"red\", \"bold\"],\n [Level.CRITICAL]: [\"red\", \"bold\"],\n [Level.FATAL]: [\"bgRed\", \"white\"],\n [Level.EMERGENCY]: [\"bgRed\", \"white\"],\n};\n","import { Level } from \"nightingale-levels\";\n\nexport type LevelToSymbol = Readonly<Record<number, string>>;\n\nexport const levelToSymbol: LevelToSymbol = {\n [Level.TRACE]: \"•\",\n [Level.DEBUG]: \"•\",\n [Level.INFO]: \"→\",\n [Level.WARN]: \"⚠\",\n [Level.ERROR]: \"✖\",\n [Level.CRITICAL]: \"!\",\n [Level.FATAL]: \"‼\",\n [Level.EMERGENCY]: \"‼\",\n};\n","export const styleToHexColor = {\n orange: \"ff5f00\",\n} as const;\n\nexport type StyleToHexColor = Readonly<\n Record<keyof typeof styleToHexColor, string>\n>;\n","import { styleToHexColor } from \"./styleToHexColor\";\n\nexport interface HtmlStyle {\n readonly open: string;\n readonly close: string;\n}\n\nexport const styleToHtmlStyleThemeLight = {\n // text style\n bold: { open: \"font-weight: bold\", close: \"font-weight: normal\" },\n italic: { open: \"font-style: italic\", close: \"font-style: normal\" },\n underline: {\n open: \"text-decoration: underline\",\n close: \"text-decoration: none\",\n },\n inverse: {\n open: \"unicode-bidi: bidi-override; direction: rtl\",\n close: \"unicode-bidi: normal; direction: ltr\",\n },\n strikethrough: {\n open: \"text-decoration: line-through\",\n close: \"text-decoration: none\",\n },\n\n black: { open: \"color: black\", close: \"color: currentcolor\" },\n red: { open: \"color: #ff0020\", close: \"color: currentcolor\" },\n green: { open: \"color: #00b317\", close: \"color: currentcolor\" },\n yellow: { open: \"color: #ffcc00\", close: \"color: currentcolor\" },\n blue: { open: \"color: #00a0ff\", close: \"color: currentcolor\" },\n magenta: { open: \"color: #ff00a0\", close: \"color: currentcolor\" },\n cyan: { open: \"color: #00cfd8\", close: \"color: currentcolor\" },\n white: { open: \"color: white\", close: \"color: currentcolor\" },\n gray: { open: \"color: gray\", close: \"color: currentcolor\" },\n dim: { open: \"color: #808080\", close: \"color: currentcolor\" },\n\n bgBlack: { open: \"background: black\", close: \"background: initial\" },\n bgRed: { open: \"background: #ff0020\", close: \"background: initial\" },\n bgGreen: { open: \"background: #00b317\", close: \"background: initial\" },\n bgYellow: { open: \"background: #ffcc00\", close: \"background: initial\" },\n bgBlue: { open: \"background: #00a0ff\", close: \"background: initial\" },\n bgMagenta: { open: \"background: #ff00a0\", close: \"background: initial\" },\n bgCyan: { open: \"background: #00cfd8\", close: \"background: initial\" },\n bgWhite: { open: \"background: white\", close: \"background: initial\" },\n\n orange: {\n open: `color: #${styleToHexColor.orange}`,\n close: \"color: currentcolor\",\n },\n} as const;\n\nexport type StyleToHtmlStyle = Readonly<\n Record<keyof typeof styleToHtmlStyleThemeLight, HtmlStyle>\n>;\n\nexport const styleToHtmlStyleThemeDark: StyleToHtmlStyle = {\n ...styleToHtmlStyleThemeLight,\n black: styleToHtmlStyleThemeLight.white,\n bgBlack: styleToHtmlStyleThemeLight.bgWhite,\n white: styleToHtmlStyleThemeLight.black,\n bgWhite: styleToHtmlStyleThemeLight.bgBlack,\n gray: { open: \"color: lightgray\", close: \"color: currentcolor\" },\n};\n","/* eslint sort-keys: error */\n\nexport const formatStyles = {\n bigint: [\"yellow\", \"bold\"],\n boolean: [\"green\"],\n date: [\"magenta\"],\n error: [\"red\"],\n function: [\"blue\"],\n null: [\"bold\"],\n number: [\"yellow\"],\n regexp: [\"magenta\"],\n string: [\"orange\"],\n symbol: [\"magenta\"],\n undefined: [\"dim\"],\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\nimport { formatStyles } from \"./formatStyles\";\n\nexport interface FormatObjectOptions {\n padding?: string;\n maxDepth?: number;\n}\n\nexport type StyleFn = (styles: Styles, value: string) => string;\n\nexport type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;\n\nconst noStyleFn: StyleFn = (styles: Styles, value: string): string => value;\n\ninterface InternalFormatParams {\n padding: string;\n depth: number;\n maxDepth: number;\n objects: Set<unknown>;\n}\n\ninterface FormattedKey {\n stringKey: string;\n formattedKey: string;\n}\n\ntype FormatKey<Key> = (\n key: Key,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n) => FormattedKey;\n\ninterface Value<Key> {\n key: Key;\n value: unknown;\n}\n\ninterface FormattedValue {\n stringValue: string;\n formattedValue: string;\n}\n\ntype Values<Key> = Value<Key>[];\n\ninterface InternalFormatIteratorParams<Key> {\n prefix: string;\n suffix: string;\n formatKey: FormatKey<Key>;\n prefixSuffixSpace?: string;\n}\n\nfunction tryStringify(arg: unknown): string {\n try {\n return JSON.stringify(arg).replace(/\\\\n/g, \"\\n\");\n } catch {\n return \"[Circular]\";\n }\n}\n\nconst sameRawFormattedValue = (value: string): FormattedValue => ({\n stringValue: value,\n formattedValue: value,\n});\n\nconst numericSeparator = \"_\";\n\nconst formatIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = integerAsString.length;\n const start = integerAsString.startsWith(\"-\") ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n result = `${numericSeparator}${integerAsString.slice(i - 3, i)}${result}`;\n }\n return i === integerAsString.length\n ? integerAsString\n : `${integerAsString.slice(0, i)}${result}`;\n};\n\nconst formatDecimalIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = 0;\n for (; i < integerAsString.length - 3; i += 3) {\n result += `${integerAsString.slice(i, i + 3)}${numericSeparator}`;\n }\n return i === 0 ? integerAsString : `${result}${integerAsString.slice(i)}`;\n};\n\nconst formatNumberValue = (value: number): string => {\n if (Number.isNaN(value)) {\n return \"NaN\";\n }\n if (value === Number.POSITIVE_INFINITY) {\n return \"+Infinity\";\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return \"-Infinity\";\n }\n if (value === Number.EPSILON) {\n return \"Epsilon\";\n }\n if (Object.is(value, -0)) {\n return \"-0\";\n }\n const integer = Math.trunc(value);\n const integerAsString = integer.toString();\n if (integer === value) {\n if (integerAsString.includes(\"e\")) {\n return integerAsString;\n }\n return formatIntegerValue(integerAsString);\n } else {\n return `${formatIntegerValue(integerAsString)}.${formatDecimalIntegerValue(String(value).slice(integerAsString.length + 1))}`;\n }\n};\n\nfunction internalFormatValue(\n value: unknown,\n styleFn: StyleFn,\n styles: Styles,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n const typeofValue = typeof value;\n\n if (!styles) {\n if (value === null) {\n styles = [\"bold\"];\n } else {\n switch (typeofValue) {\n case \"bigint\":\n styles = formatStyles.bigint;\n break;\n case \"boolean\":\n styles = formatStyles.boolean;\n break;\n case \"undefined\":\n styles = formatStyles.undefined;\n break;\n case \"number\":\n styles = formatStyles.number;\n break;\n case \"string\":\n styles = formatStyles.string;\n break;\n case \"symbol\":\n styles = formatStyles.symbol;\n break;\n case \"object\":\n if (value instanceof Date) {\n styles = formatStyles.date;\n }\n if (value instanceof RegExp) {\n styles = formatStyles.regexp;\n }\n if (value instanceof Error) {\n styles = formatStyles.error;\n }\n break;\n case \"function\":\n styles = formatStyles.function;\n break;\n default:\n break;\n }\n }\n }\n\n let stringValue: string;\n if (value === null) {\n stringValue = \"null\";\n } else if (value === undefined) {\n stringValue = \"undefined\";\n } else if (typeofValue === \"number\") {\n stringValue = formatNumberValue(value as number);\n } else if (typeofValue === \"boolean\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n stringValue = (value as any).toString() as string;\n } else if ((value as () => unknown).constructor === Object) {\n if (depth >= maxDepth) {\n stringValue = \"{Object...}\";\n } else {\n return internalFormatObject(\n value as Record<string, unknown>,\n styleFn,\n undefined,\n {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n },\n );\n }\n } else if (Array.isArray(value)) {\n if (depth >= maxDepth) {\n stringValue = \"[Array...]\";\n } else {\n return internalFormatArray(value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof Error) {\n const stack = value.stack;\n stringValue =\n stack?.startsWith(value.message) ||\n stack?.startsWith(`${value.name}: ${value.message}`)\n ? stack\n : `${value.message}\\n${stack || \"\"}`;\n } else if (value instanceof Map) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatMap(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (typeofValue === \"bigint\") {\n stringValue = `[BigInt: ${(value as bigint).toString()}]`;\n } else if (typeofValue === \"symbol\") {\n stringValue = (value as symbol).toString();\n } else if (value instanceof Set) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatSet(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof WeakMap) {\n stringValue = \"{WeakMap...}\";\n } else if (value instanceof WeakSet) {\n stringValue = \"{WeakSet...}\";\n } else if (value instanceof Date) {\n stringValue = `[Date: ${value.toISOString()}]`;\n } else if (value instanceof RegExp) {\n stringValue = `[RegExp: ${value.toString()}]`;\n } else if (typeof value === \"function\") {\n stringValue = `[Function: ${value.name}]`;\n } else {\n stringValue = tryStringify(value);\n }\n\n const formattedValue = styleFn(styles, stringValue);\n\n return {\n stringValue,\n formattedValue,\n };\n}\n\nconst separator = \",\";\n\nconst internalFormatKey: FormatKey<string> = (\n key: string,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return {\n stringKey: `${key}: `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${key}:`)} `,\n };\n};\n\nconst internalNoKey: FormatKey<undefined> = (\n key: string | undefined,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return { stringKey: \"\", formattedKey: \"\" };\n};\n\nconst internalFormatMapKey: FormatKey<unknown> = (\n key: unknown,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n const { stringValue, formattedValue } = internalFormatValue(\n key,\n noStyleFn,\n undefined,\n internalFormatParams,\n );\n return {\n stringKey: `${stringValue} => `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${formattedValue}:`)} `,\n };\n};\n\nconst internalFormatIterator = <Key>(\n values: Values<Key>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n {\n prefix,\n suffix,\n prefixSuffixSpace = \" \",\n formatKey,\n }: InternalFormatIteratorParams<Key>,\n): FormattedValue => {\n let breakLine = false;\n const formattedSeparator = (): string => styleFn([\"gray\"], separator);\n\n const valuesMaxIndex = values.length - 1;\n const formattedValues: FormattedValue[] = values.map(\n ({ key, value }, index: number) => {\n const nextDepth = depth + 1;\n const internalFormatParams = {\n padding,\n depth: nextDepth,\n maxDepth,\n objects,\n };\n\n // key must be formatted before value (browser-formatter needs order)\n const { stringKey, formattedKey } = formatKey(\n key,\n styleFn,\n internalFormatParams,\n );\n\n let { stringValue, formattedValue } = internalFormatValue(\n value,\n styleFn,\n key && objectStyles\n ? objectStyles[key as unknown as string]\n : undefined,\n internalFormatParams,\n );\n\n if (\n stringValue &&\n (stringValue.length > 80 || stringValue.includes(\"\\n\"))\n ) {\n breakLine = true;\n stringValue = stringValue.replace(/\\n/g, `\\n${padding}`);\n formattedValue = formattedValue.replace(/\\n/g, `\\n${padding}`);\n }\n\n return {\n stringValue:\n stringKey + stringValue + (index === valuesMaxIndex ? \"\" : separator),\n formattedValue:\n formattedKey +\n formattedValue +\n (index === valuesMaxIndex ? \"\" : formattedSeparator()),\n // note: we need to format the separator for each values for browser-formatter\n };\n },\n );\n\n return {\n stringValue:\n prefix +\n formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.stringValue}`\n : (fv) => fv.stringValue,\n )\n .join(breakLine ? \"\\n\" : \" \") +\n suffix,\n formattedValue: `${prefix}${\n breakLine ? \"\" : prefixSuffixSpace\n }${formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.formattedValue}`\n : (v) => v.formattedValue,\n )\n .join(breakLine ? \"\" : \" \")}${\n breakLine ? \",\\n\" : prefixSuffixSpace\n }${suffix}`,\n };\n};\n\nfunction internalFormatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(object)) {\n return sameRawFormattedValue(\"{Circular Object}\");\n }\n\n const keys: string[] = Object.keys(object);\n if (keys.length === 0) {\n return sameRawFormattedValue(\"{}\");\n }\n\n objects.add(object);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: object[key] })),\n styleFn,\n objectStyles,\n { padding, depth, maxDepth, objects },\n { prefix: \"{\", suffix: \"}\", formatKey: internalFormatKey },\n );\n\n objects.delete(object);\n\n return result;\n}\n\nfunction internalFormatMap(\n name: string,\n map: Map<unknown, unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(map)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const keys = [...map.keys()];\n if (keys.length === 0) {\n return sameRawFormattedValue(`${name} {}`);\n }\n\n objects.add(map);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: map.get(key) })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} {`, suffix: \"}\", formatKey: internalFormatMapKey },\n );\n\n objects.delete(map);\n\n return result;\n}\n\nfunction internalFormatArray(\n array: unknown[],\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(array)) {\n return sameRawFormattedValue(\"{Circular Array}\");\n }\n\n if (array.length === 0) {\n return sameRawFormattedValue(\"[]\");\n }\n\n objects.add(array);\n\n const result = internalFormatIterator(\n array.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n {\n prefix: \"[\",\n suffix: \"]\",\n prefixSuffixSpace: \"\",\n formatKey: internalNoKey,\n },\n );\n\n objects.delete(array);\n\n return result;\n}\n\nfunction internalFormatSet(\n name: string,\n set: Set<unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(set)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const values = [...set.values()];\n if (values.length === 0) {\n return sameRawFormattedValue(`${name} []`);\n }\n\n objects.add(set);\n\n const result = internalFormatIterator(\n values.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} [`, suffix: \"]\", formatKey: internalNoKey },\n );\n\n objects.delete(set);\n\n return result;\n}\n\nexport function formatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn = noStyleFn,\n objectStyles?: ObjectStyles,\n { padding = \" \", maxDepth = 10 }: FormatObjectOptions = {},\n): string {\n const { formattedValue: result } = internalFormatObject(\n object,\n styleFn,\n objectStyles,\n {\n padding,\n maxDepth,\n depth: 0,\n objects: new Set(),\n },\n );\n\n if (result === \"{}\") {\n return \"\";\n }\n\n return result;\n}\n","import type { LogRecord, Metadata } from \"nightingale-types\";\nimport type { ObjectStyles, StyleFn } from \"./formatObject\";\nimport { formatObject } from \"./formatObject\";\nimport { levelToStyles } from \"./levelToStyles\";\nimport { levelToSymbol } from \"./levelToSymbol\";\n\nexport function formatRecordToString<T extends Metadata>(\n record: LogRecord<T>,\n style: StyleFn,\n): [string, ...string[]] {\n const parts: string[] = [];\n\n if (record.displayName) {\n parts.push(style([\"dim\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"dim\"], record.key));\n }\n\n if (record.datetime) {\n parts.push(\n style([\"gray\", \"bold\"], record.datetime.toTimeString().split(\" \", 2)[0]!),\n );\n /* new Date().toFormat('HH24:MI:SS') */\n }\n\n let message: string = record.symbol || levelToSymbol[record.level] || \"\";\n const styles = record.styles || levelToStyles[record.level];\n\n if (record.message) {\n if (message) {\n message += ` ${record.message}`;\n } else {\n message = record.message;\n }\n }\n\n if (message) {\n if (styles) {\n message = style(styles, message);\n }\n parts.push(message);\n }\n\n const formatRecordObject = (\n key: string,\n object: Record<string, unknown> | undefined,\n objectStyles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, objectStyles);\n\n if (!stringObject) {\n return;\n }\n\n parts.push(stringObject);\n };\n\n formatRecordObject(\"metadata\", record.metadata, record.metadataStyles);\n formatRecordObject(\"extra\", record.extra, undefined);\n formatRecordObject(\"context\", record.context, undefined);\n\n return [parts.join(\" \")];\n}\n","/* eslint-disable complexity */\nimport { Level } from \"nightingale-levels\";\n\nconst specialRegexpChars = /[$()+.?[\\\\\\]^{|}]/;\n\ntype TestFunction = (string: string) => boolean;\nexport type DebugValueType = RegExp | string[] | string;\n\nconst createTestFunctionFromRegexp =\n (regexp: RegExp): TestFunction =>\n (string: string) =>\n regexp.test(string);\n\nconst createTestFunctionFromRegexpString = (value: string): TestFunction => {\n if (!value.endsWith(\"/\")) throw new Error(\"Invalid RegExp DEBUG value\");\n return createTestFunctionFromRegexp(new RegExp(value.slice(1, -1)));\n};\n\nconst createTestFunctionFromValue = (value: string): TestFunction => {\n if (value.endsWith(\":*\")) {\n value = value.slice(0, -2);\n return (string: string) => string.startsWith(value);\n }\n\n return (string: string) => string === value;\n};\n\nexport type FindDebugLevel = (minLevel: Level, key: string) => Level;\n\nexport function createFindDebugLevel(\n debugValue?: DebugValueType,\n): FindDebugLevel {\n let isWildcard = false;\n const debugValues: TestFunction[] = [];\n const skips: TestFunction[] = [];\n\n if (!Array.isArray(debugValue)) {\n if (debugValue instanceof RegExp) {\n debugValues.push(createTestFunctionFromRegexp(debugValue));\n debugValue = undefined;\n } else if (debugValue) {\n debugValue = debugValue.trim();\n\n if (debugValue.startsWith(\"/\")) {\n debugValues.push(createTestFunctionFromRegexpString(debugValue));\n debugValue = undefined;\n } else {\n debugValue = debugValue.split(/[\\s,]+/);\n }\n }\n }\n\n if (debugValue) {\n (debugValue as string[]).forEach((value) => {\n if (specialRegexpChars.test(value)) {\n throw new Error(\n `Invalid debug value: \"${value}\" (contains special chars)`,\n );\n }\n\n if (!value) return;\n\n if (value === \"*\") {\n isWildcard = true;\n return;\n }\n\n if (value.startsWith(\"-\")) {\n skips.push(createTestFunctionFromValue(value.slice(1)));\n } else if (!isWildcard) {\n debugValues.push(createTestFunctionFromValue(value));\n }\n });\n }\n\n if (isWildcard) {\n if (skips.length === 0) {\n return () => Level.ALL;\n } else {\n return (minLevel: Level, key: string) =>\n skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n }\n\n if (debugValues.length === 0) {\n return (minLevel: Level) => minLevel;\n }\n\n return (minLevel: Level, key: string) => {\n if (minLevel === Level.ALL || !key) {\n return minLevel;\n }\n\n if (debugValues.some((dv) => dv(key))) {\n return skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n\n return minLevel;\n };\n}\n","import type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { formatRecordToString } from \"../formatter-utils\";\n\nexport function style(styles: Styles, value: string): string {\n return value;\n}\n\nexport const RawFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { formatRecordToString } from \"../formatter-utils\";\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((part, styleName) => {\n switch (styleName) {\n case \"bold\":\n return `*${part}*`;\n case \"italic\":\n return `_${part}_`;\n case \"strikethrough\":\n return `~${part}~`;\n\n // no default\n }\n\n return part;\n }, string);\n}\n\nexport const MarkdownFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { NightingaleFormatter } from \"../formatter-utils\";\n\nfunction map2object(map: Map<unknown, unknown>): unknown {\n const object: Record<string, unknown> = {};\n\n map.forEach((value, key) => {\n if (typeof key === \"object\") {\n // ignore key\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n object[String(key)] = value;\n });\n\n return object;\n}\n\nfunction stringify(value: unknown, space?: number | string): string {\n return JSON.stringify(\n value,\n (key, objectValue) => {\n if (objectValue instanceof Map) {\n return map2object(objectValue);\n }\n if (objectValue instanceof Error) {\n return {\n message: objectValue.message,\n stack: objectValue.stack,\n };\n }\n\n return objectValue as unknown;\n },\n space,\n );\n}\n\nexport const JSONFormatter: NightingaleFormatter = {\n format(record) {\n return [\n stringify({\n key: record.key,\n level: record.level,\n datetime: record.datetime,\n message: record.message,\n metadata: record.metadata,\n extra: record.extra,\n }),\n ];\n },\n};\n\nexport const JSONCLIFormatter: NightingaleFormatter = {\n format(record) {\n return [\n stringify({\n key: record.key,\n time: record.datetime.toTimeString().split(\" \", 2)[0]!,\n message: record.message,\n ...record.metadata,\n ...record.extra,\n }),\n ];\n },\n};\n","import ansi from \"ansi-styles\";\nimport type { NightingaleFormatter } from \"nightingale\";\nimport type { Styles } from \"nightingale-types\";\nimport { formatRecordToString, styleToHexColor } from \"../formatter-utils\";\n\nexport type { Styles } from \"nightingale-types\";\n\ninterface CodePair {\n open: string;\n close: string;\n}\n\ntype AnsiStyles = Record<string, CodePair | undefined>;\n\nconst ansiStyles: AnsiStyles = {\n black: ansi.black,\n red: ansi.red,\n green: ansi.green,\n yellow: ansi.yellow,\n blue: ansi.blue,\n magenta: ansi.magenta,\n cyan: ansi.cyan,\n white: ansi.white,\n gray: ansi.gray,\n dim: ansi.dim,\n\n bgBlack: ansi.bgBlack,\n bgRed: ansi.bgRed,\n bgGreen: ansi.bgGreen,\n bgYellow: ansi.bgYellow,\n bgBlue: ansi.bgBlue,\n bgMagenta: ansi.bgMagenta,\n bgCyan: ansi.bgCyan,\n bgWhite: ansi.bgWhite,\n\n bold: ansi.bold,\n underline: ansi.underline,\n\n // http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html\n orange: {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor.orange)),\n close: ansi.color.close,\n },\n};\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((styledString: string, styleName: string) => {\n const codePair: CodePair | undefined = ansiStyles[styleName];\n\n if (!codePair) {\n throw new Error(`Unknown style: ${styleName}`);\n }\n\n return codePair.open + styledString + codePair.close;\n }, string);\n}\n\nexport const ANSIFormatter: NightingaleFormatter = {\n format: (record) => formatRecordToString(record, style),\n};\n","import type { Styles } from \"nightingale-types\";\nimport type {\n NightingaleFormatter,\n StyleToHtmlStyle,\n} from \"../formatter-utils\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils\";\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n return `<span style=\"${styles\n .map(\n (styleName) =>\n styleToHtmlStyleThemeLight[styleName as keyof StyleToHtmlStyle].open,\n )\n .join(\"; \")}\">${string}</span>`;\n}\n\nexport const HTMLFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { StyleToHtmlStyle } from \"nightingale\";\nimport type { LogRecord, Metadata, Styles } from \"nightingale-types\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeDark,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\n\nexport const style =\n (styleToHtmlStyle: StyleToHtmlStyle, args: string[]) =>\n (styles: Styles, string: string): string => {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n const htmlStyles = styles.map(\n (styleName) => styleToHtmlStyle[styleName as keyof StyleToHtmlStyle],\n );\n\n args.push(\n htmlStyles.map((s) => s.open).join(\"; \"),\n htmlStyles.map((s) => s.close).join(\"; \"),\n );\n return `%c${string}%c`;\n };\n\nexport class BrowserConsoleFormatter implements NightingaleFormatter {\n styleToHtmlStyle: StyleToHtmlStyle;\n constructor(theme: \"dark\" | \"light\" = \"light\") {\n this.styleToHtmlStyle =\n theme === \"dark\" ? styleToHtmlStyleThemeDark : styleToHtmlStyleThemeLight;\n }\n\n format<T extends Metadata>(record: LogRecord<T>): [string, ...string[]] {\n const args: string[] = [];\n const string = formatRecordToString(\n record,\n style(this.styleToHtmlStyle, args),\n )[0];\n return [string, ...args];\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\n\nexport function consoleOutput<T extends Metadata>(\n param: [string, ...string[]],\n record: LogRecord<T>,\n): void {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](...param);\n}\n","/* eslint-disable prefer-template */\nimport type { Handler, Level, LogRecord, Metadata } from \"nightingale-types\";\nimport { RawFormatter } from \"../formatters/RawFormatter\";\n\nexport class StringHandler implements Handler {\n readonly minLevel: Level;\n\n private _buffer = \"\";\n\n constructor(minLevel: Level) {\n this.minLevel = minLevel;\n }\n\n get string(): string {\n return this._buffer;\n }\n\n handle<T extends Metadata>(record: LogRecord<T>): void {\n this._buffer += RawFormatter.format(record)[0] + \"\\n\";\n }\n}\n","import type {\n Handle,\n Handler,\n IsHandling,\n Level,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug\";\nimport { BrowserConsoleFormatter } from \"../formatters/BrowserConsoleFormatter\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\n\nexport function getDebugString(): string {\n const querystring = document.location.search;\n const debugFromLocalStorage =\n // eslint-disable-next-line unicorn/prefer-global-this, @typescript-eslint/no-unnecessary-condition\n window.localStorage?.getItem(\"debug\") || \"\";\n\n if (!querystring) {\n return debugFromLocalStorage;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param\n const debugFromQueryString = decodeURI(\n querystring.replace(\n // eslint-disable-next-line prefer-regex-literals, regexp/no-super-linear-backtracking\n new RegExp(\"^(?:.*[&?]DEBUG(?:=([^&]*))?)?.*$\", \"i\"),\n \"$1\",\n ),\n );\n\n return (\n (debugFromLocalStorage ? `${debugFromLocalStorage},` : \"\") +\n debugFromQueryString\n );\n}\n\n// debug string can change any time (localStorage), so we need a new object each time.\nconst findDebugLevel = (minLevel: Level, key: string): Level =>\n createFindDebugLevel(getDebugString())(minLevel, key);\n\ntype Theme = \"dark\" | \"light\";\n\nconst getDefaultTheme = (): Theme => {\n try {\n const configInLocalStorage = localStorage.getItem(\"NIGHTINGALE_THEME\");\n if (configInLocalStorage && configInLocalStorage === \"dark\") {\n return configInLocalStorage;\n }\n } catch {}\n return \"light\";\n};\n\nconst createHandler = (theme: Theme = getDefaultTheme()): Handle => {\n const browserConsoleFormatter = new BrowserConsoleFormatter(theme);\n return <T extends Metadata>(record: LogRecord<T>) => {\n consoleOutput(browserConsoleFormatter.format(record), record);\n };\n};\n\nexport interface BrowserConsoleHandlerOptions {\n theme?: Theme;\n}\n\nexport class BrowserConsoleHandler implements Handler {\n minLevel: Level = 0;\n\n handle: Handle;\n\n isHandling: IsHandling;\n\n constructor(minLevel: Level, options: BrowserConsoleHandlerOptions = {}) {\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n\n this.handle = createHandler(options.theme);\n }\n}\n","import { ANSIFormatter } from \"../formatters/ANSIFormatter\";\n\nexport const defaultFormatter = ANSIFormatter.format;\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\nimport { defaultFormatter } from \"./defaultFormatter\";\n\nconst createHandle = (\n formatter = defaultFormatter,\n output = consoleOutput,\n): Handle => {\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleHandlerOptions {\n formatter?: NightingaleFormatter[\"format\"];\n output?: <T extends Metadata>(\n param: string[] | string,\n record: LogRecord<T>,\n ) => void;\n // compat with nightingale-app-console, not used yet\n theme?: \"dark\" | \"light\";\n}\n\nexport class ConsoleHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options.formatter, options.output);\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\n\nexport function cliConsoleOutput<T extends Metadata>(\n param: [string, ...string[]],\n record: LogRecord<T>,\n): void {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](...param);\n}\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug\";\nimport { ANSIFormatter } from \"../formatters/ANSIFormatter\";\nimport { JSONFormatter } from \"../formatters/JSONFormatter\";\nimport { RawFormatter } from \"../formatters/RawFormatter\";\nimport { cliConsoleOutput } from \"../outputs/cliConsoleOutput\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\n\nconst createHandle = ({\n json,\n noColor = process.env.NO_COLOR === \"1\" || process.env.NO_COLOR === \"true\",\n}: ConsoleCLIHandlerOptions): Handle => {\n const formatter = (() => {\n if (json) return JSONFormatter.format;\n if (noColor) return RawFormatter.format;\n return ANSIFormatter.format;\n })();\n const output = json ? consoleOutput : cliConsoleOutput;\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleCLIHandlerOptions {\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class ConsoleCLIHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleCLIHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options);\n }\n}\n","import type { ComputedConfigForKey } from \"nightingale-logger\";\nimport { Level, Logger } from \"nightingale-logger\";\nimport type { Handler, Processor } from \"nightingale-types\";\nimport { ConsoleCLIHandler } from \"../handlers/ConsoleCLIHandler\";\n\nexport interface LoggerCLIOptions {\n displayName?: string;\n handlers?: Handler[];\n processors?: Processor[];\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class LoggerCLI extends Logger {\n private handlers: Handler[];\n private processors: Processor[] = [];\n private json: boolean;\n constructor(\n key: string,\n { displayName, processors, json = false, noColor }: LoggerCLIOptions = {},\n ) {\n super(key, displayName);\n this.handlers = [new ConsoleCLIHandler(Level.INFO, { json, noColor })];\n this.processors = processors ?? [];\n this.json = json;\n }\n\n protected override getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return {\n handlers: this.handlers,\n processors: this.processors,\n };\n }\n\n logJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n level: Level = Level.INFO,\n ): void {\n if (this.json) {\n this.log(messageOrError, metadata, level);\n }\n }\n\n debugJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.debug(messageOrError, metadata);\n }\n }\n\n noticeJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.notice(messageOrError, metadata);\n }\n }\n\n infoJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.info(messageOrError, metadata);\n }\n }\n\n warnJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.warn(messageOrError, metadata);\n }\n }\n\n group<T, Result extends Awaited<T> | Promise<T>>(\n name: string,\n fn: () => Result,\n ): Result extends Promise<infer V> ? Promise<V> : Awaited<T> {\n if (this.json) {\n return fn() as Result extends Promise<infer V> ? Promise<V> : Awaited<T>;\n } else {\n console.group(name);\n const result = fn();\n if (result instanceof Promise) {\n return result.finally(() => {\n console.groupEnd();\n }) as Result extends Promise<infer V> ? Promise<V> : never;\n } else {\n console.groupEnd();\n return result as Result extends Promise<infer V>\n ? Promise<V>\n : Awaited<T>;\n }\n }\n }\n\n separator(): void {\n console.log();\n }\n}\n\nexport class LoggerCLIString extends LoggerCLI {\n constructor(\n key: string,\n {\n displayName,\n handlers,\n processors,\n json = false,\n noColor = false,\n }: LoggerCLIOptions = {},\n ) {\n super(key, { displayName, handlers, processors, json, noColor });\n }\n}\n","import { Logger } from \"nightingale-logger\";\n\nexport { Logger } from \"nightingale-logger\";\nexport { Level, Level as levels } from \"nightingale-levels\";\nexport { configure, addConfig } from \"./config\";\nexport * from \"./formatter-utils\";\nexport { createFindDebugLevel } from \"./debug/debug\";\nexport { RawFormatter } from \"./formatters/RawFormatter\";\nexport { MarkdownFormatter } from \"./formatters/MarkdownFormatter\";\nexport { JSONFormatter } from \"./formatters/JSONFormatter\";\nexport { ANSIFormatter } from \"./formatters/ANSIFormatter\";\nexport { HTMLFormatter } from \"./formatters/HTMLFormatter\";\nexport { BrowserConsoleFormatter } from \"./formatters/BrowserConsoleFormatter\";\nexport { consoleOutput } from \"./outputs/consoleOutput\";\nexport { StringHandler } from \"./handlers/StringHandler\";\nexport { BrowserConsoleHandler } from \"./handlers/BrowserConsoleHandler\";\nexport { ConsoleHandler } from \"./handlers/ConsoleHandler\";\nexport { ConsoleCLIHandler } from \"./handlers/ConsoleCLIHandler\";\nexport { LoggerCLI } from \"./loggers/LoggerCLI\";\nexport { formatStyles } from \"./formatter-utils/formatStyles\";\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n \"nightingale:listenUnhandledErrors\",\n \"UnhandledErrors\",\n ),\n): void {\n process.on(\"uncaughtException\", (error) => {\n logger.error(error, {\n unhandled: true,\n type: \"uncaughtException\",\n });\n });\n process.on(\"unhandledRejection\", (error) => {\n logger.error(error as Error, {\n unhandled: true,\n type: \"unhandledRejection\",\n });\n });\n}\n"],"names":["style","findDebugLevel","createHandle","Level"],"mappings":"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"}
|