nightingale 16.0.0 → 16.1.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 CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [16.1.0](https://github.com/christophehurpeau/nightingale/compare/v16.0.0...v16.1.0) (2025-03-30)
7
+
8
+ ### Features
9
+
10
+ * support async in logger cli group ([e27d763](https://github.com/christophehurpeau/nightingale/commit/e27d7638538690b73f45a286cc4c5bdba759f159))
11
+
6
12
  ## [16.0.0](https://github.com/christophehurpeau/nightingale/compare/v15.0.0...v16.0.0) (2025-03-30)
7
13
 
8
14
  ### ⚠ BREAKING CHANGES
@@ -18,6 +18,6 @@ export declare class LoggerCLI extends Logger {
18
18
  noticeJsonOnly(messageOrError: string, metadata: Record<string, unknown>): void;
19
19
  infoJsonOnly(messageOrError: string, metadata: Record<string, unknown>): void;
20
20
  warnJsonOnly(messageOrError: string, metadata: Record<string, unknown>): void;
21
- group(name: string, fn: () => void): void;
21
+ group<T, Result extends Awaited<T> | Promise<T>>(name: string, fn: () => Result): Result extends Promise<infer V> ? Promise<V> : Awaited<T>;
22
22
  }
23
23
  //# sourceMappingURL=LoggerCLI.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoggerCLI.d.ts","sourceRoot":"","sources":["../../../src/loggers/LoggerCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG5D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,SAAU,SAAQ,MAAM;IACnC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,IAAI,CAAU;gBAEpB,GAAG,EAAE,MAAM,EACX,EAAE,WAAW,EAAE,UAAU,EAAE,IAAY,EAAE,GAAE,gBAAqB;cAQ/C,wBAAwB,CACzC,WAAW,EAAE,MAAM,GAClB,oBAAoB;IAOvB,WAAW,CACT,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,GAAE,KAAkB,GACxB,IAAI;IAMP,aAAa,CACX,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,cAAc,CACZ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,YAAY,CACV,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,YAAY,CACV,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;CAS1C"}
1
+ {"version":3,"file":"LoggerCLI.d.ts","sourceRoot":"","sources":["../../../src/loggers/LoggerCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG5D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,SAAU,SAAQ,MAAM;IACnC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,IAAI,CAAU;gBAEpB,GAAG,EAAE,MAAM,EACX,EAAE,WAAW,EAAE,UAAU,EAAE,IAAY,EAAE,GAAE,gBAAqB;cAQ/C,wBAAwB,CACzC,WAAW,EAAE,MAAM,GAClB,oBAAoB;IAOvB,WAAW,CACT,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,GAAE,KAAkB,GACxB,IAAI;IAMP,aAAa,CACX,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,cAAc,CACZ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,YAAY,CACV,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,YAAY,CACV,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,KAAK,CAAC,CAAC,EAAE,MAAM,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC7C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,MAAM,GACf,MAAM,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAkB7D"}
@@ -988,11 +988,18 @@ class LoggerCLI extends Logger {
988
988
  }
989
989
  group(name, fn) {
990
990
  if (this.json) {
991
- fn();
991
+ return fn();
992
992
  } else {
993
993
  console.group(name);
994
- fn();
995
- console.groupEnd();
994
+ const result = fn();
995
+ if (result instanceof Promise) {
996
+ return result.finally(() => {
997
+ console.groupEnd();
998
+ });
999
+ } else {
1000
+ console.groupEnd();
1001
+ return result;
1002
+ }
996
1003
  }
997
1004
  }
998
1005
  }
@@ -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/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 grayLight: \"808080\",\n \"gray-light\": \"808080\",\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\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 grayLight: {\n open: `color: #${styleToHexColor.grayLight}`,\n close: \"color: currentcolor\",\n },\n \"gray-light\": {\n open: `color: #${styleToHexColor.grayLight}`,\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-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\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\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 = [\"cyan\"];\n } else {\n switch (typeofValue) {\n case \"undefined\":\n styles = [\"cyan\"];\n break;\n case \"boolean\":\n styles = [\"green\"];\n break;\n case \"number\":\n styles = [\"yellow\"];\n break;\n case \"bigint\":\n styles = [\"red\"];\n break;\n case \"string\":\n styles = [\"orange\"];\n break;\n case \"symbol\":\n styles = [\"magenta\"];\n break;\n case \"object\":\n case \"function\":\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 === \"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 = (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 {\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([\"gray-light\", \"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([\"gray-light\", \"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([\"gray-light\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"gray-light\"], 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\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 \"gray-light\": {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor[\"gray-light\"])),\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(name: string, fn: () => void): void {\n if (this.json) {\n fn();\n } else {\n console.group(name);\n fn();\n console.groupEnd();\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\";\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","grayLight","styleToHtmlStyleThemeLight","bold","open","close","italic","underline","inverse","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","styleToHtmlStyleThemeDark","noStyleFn","styles","value","tryStringify","arg","JSON","stringify","replace","sameRawFormattedValue","stringValue","formattedValue","internalFormatValue","styleFn","padding","depth","maxDepth","objects","typeofValue","undefined","toString","constructor","Object","internalFormatObject","Array","isArray","internalFormatArray","stack","startsWith","message","name","internalFormatMap","Set","internalFormatSet","WeakMap","WeakSet","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","result","delete","array","formatObject","formatRecordToString","record","style","parts","displayName","datetime","toTimeString","split","symbol","formatRecordObject","stringObject","metadata","metadataStyles","extra","context","specialRegexpChars","createTestFunctionFromRegexp","regexp","string","createTestFunctionFromRegexpString","endsWith","RegExp","slice","createTestFunctionFromValue","createFindDebugLevel","debugValue","isWildcard","debugValues","skips","trim","forEach","ALL","skip","dv","RawFormatter","format","reduce","part","styleName","MarkdownFormatter","map2object","String","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","groupEnd","listenUnhandledErrors","logger","on","error","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/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 grayLight: \"808080\",\n \"gray-light\": \"808080\",\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\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 grayLight: {\n open: `color: #${styleToHexColor.grayLight}`,\n close: \"color: currentcolor\",\n },\n \"gray-light\": {\n open: `color: #${styleToHexColor.grayLight}`,\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-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\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\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 = [\"cyan\"];\n } else {\n switch (typeofValue) {\n case \"undefined\":\n styles = [\"cyan\"];\n break;\n case \"boolean\":\n styles = [\"green\"];\n break;\n case \"number\":\n styles = [\"yellow\"];\n break;\n case \"bigint\":\n styles = [\"red\"];\n break;\n case \"string\":\n styles = [\"orange\"];\n break;\n case \"symbol\":\n styles = [\"magenta\"];\n break;\n case \"object\":\n case \"function\":\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 === \"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 = (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 {\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([\"gray-light\", \"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([\"gray-light\", \"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([\"gray-light\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"gray-light\"], 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\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 \"gray-light\": {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor[\"gray-light\"])),\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\";\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","grayLight","styleToHtmlStyleThemeLight","bold","open","close","italic","underline","inverse","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","styleToHtmlStyleThemeDark","noStyleFn","styles","value","tryStringify","arg","JSON","stringify","replace","sameRawFormattedValue","stringValue","formattedValue","internalFormatValue","styleFn","padding","depth","maxDepth","objects","typeofValue","undefined","toString","constructor","Object","internalFormatObject","Array","isArray","internalFormatArray","stack","startsWith","message","name","internalFormatMap","Set","internalFormatSet","WeakMap","WeakSet","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","result","delete","array","formatObject","formatRecordToString","record","style","parts","displayName","datetime","toTimeString","split","symbol","formatRecordObject","stringObject","metadata","metadataStyles","extra","context","specialRegexpChars","createTestFunctionFromRegexp","regexp","string","createTestFunctionFromRegexpString","endsWith","RegExp","slice","createTestFunctionFromValue","createFindDebugLevel","debugValue","isWildcard","debugValues","skips","trim","forEach","ALL","skip","dv","RawFormatter","format","reduce","part","styleName","MarkdownFormatter","map2object","String","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","error","unhandled","type"],"mappings":"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"}
@@ -991,11 +991,18 @@ class LoggerCLI extends Logger {
991
991
  }
992
992
  group(name, fn) {
993
993
  if (this.json) {
994
- fn();
994
+ return fn();
995
995
  } else {
996
996
  console.group(name);
997
- fn();
998
- console.groupEnd();
997
+ const result = fn();
998
+ if (result instanceof Promise) {
999
+ return result.finally(() => {
1000
+ console.groupEnd();
1001
+ });
1002
+ } else {
1003
+ console.groupEnd();
1004
+ return result;
1005
+ }
999
1006
  }
1000
1007
  }
1001
1008
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index-node20.mjs","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/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 grayLight: \"808080\",\n \"gray-light\": \"808080\",\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\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 grayLight: {\n open: `color: #${styleToHexColor.grayLight}`,\n close: \"color: currentcolor\",\n },\n \"gray-light\": {\n open: `color: #${styleToHexColor.grayLight}`,\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-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\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\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 = [\"cyan\"];\n } else {\n switch (typeofValue) {\n case \"undefined\":\n styles = [\"cyan\"];\n break;\n case \"boolean\":\n styles = [\"green\"];\n break;\n case \"number\":\n styles = [\"yellow\"];\n break;\n case \"bigint\":\n styles = [\"red\"];\n break;\n case \"string\":\n styles = [\"orange\"];\n break;\n case \"symbol\":\n styles = [\"magenta\"];\n break;\n case \"object\":\n case \"function\":\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 === \"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 = (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 {\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([\"gray-light\", \"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([\"gray-light\", \"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([\"gray-light\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"gray-light\"], 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\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 \"gray-light\": {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor[\"gray-light\"])),\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(name: string, fn: () => void): void {\n if (this.json) {\n fn();\n } else {\n console.group(name);\n fn();\n console.groupEnd();\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\";\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","grayLight","styleToHtmlStyleThemeLight","bold","open","close","italic","underline","inverse","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","styleToHtmlStyleThemeDark","noStyleFn","styles","value","tryStringify","arg","JSON","stringify","replace","sameRawFormattedValue","stringValue","formattedValue","internalFormatValue","styleFn","padding","depth","maxDepth","objects","typeofValue","undefined","toString","constructor","Object","internalFormatObject","Array","isArray","internalFormatArray","stack","startsWith","message","name","internalFormatMap","Set","internalFormatSet","WeakMap","WeakSet","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","result","delete","array","formatObject","formatRecordToString","record","style","parts","displayName","datetime","toTimeString","split","symbol","formatRecordObject","stringObject","metadata","metadataStyles","extra","context","specialRegexpChars","createTestFunctionFromRegexp","regexp","string","createTestFunctionFromRegexpString","endsWith","RegExp","slice","createTestFunctionFromValue","createFindDebugLevel","debugValue","isWildcard","debugValues","skips","trim","forEach","ALL","skip","dv","RawFormatter","format","reduce","part","styleName","MarkdownFormatter","map2object","String","space","objectValue","JSONFormatter","ansiStyles","ansi","color","ansi256","hexToAnsi256","styledString","codePair","ANSIFormatter","HTMLFormatter","styleToHtmlStyle","args","htmlStyles","s","BrowserConsoleFormatter","theme","consoleOutput","param","outKey","write","StringHandler","_buffer","handle","getDebugString","querystring","document","location","search","debugFromLocalStorage","localStorage","getItem","debugFromQueryString","decodeURI","findDebugLevel","getDefaultTheme","configInLocalStorage","createHandler","browserConsoleFormatter","BrowserConsoleHandler","options","defaultFormatter","stdout","isTTY","NIGHTINGALE_CONSOLE_FORMATTER","createHandle","formatter","output","ConsoleHandler","cliConsoleOutput","json","ConsoleCLIHandler","LoggerCLI","Logger","getHandlersAndProcessors","logJsonOnly","messageOrError","debugJsonOnly","debug","noticeJsonOnly","notice","infoJsonOnly","info","warnJsonOnly","warn","group","fn","groupEnd","listenUnhandledErrors","logger","on","error","unhandled","type"],"mappings":"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"}
1
+ {"version":3,"file":"index-node20.mjs","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/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 grayLight: \"808080\",\n \"gray-light\": \"808080\",\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\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 grayLight: {\n open: `color: #${styleToHexColor.grayLight}`,\n close: \"color: currentcolor\",\n },\n \"gray-light\": {\n open: `color: #${styleToHexColor.grayLight}`,\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-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\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\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 = [\"cyan\"];\n } else {\n switch (typeofValue) {\n case \"undefined\":\n styles = [\"cyan\"];\n break;\n case \"boolean\":\n styles = [\"green\"];\n break;\n case \"number\":\n styles = [\"yellow\"];\n break;\n case \"bigint\":\n styles = [\"red\"];\n break;\n case \"string\":\n styles = [\"orange\"];\n break;\n case \"symbol\":\n styles = [\"magenta\"];\n break;\n case \"object\":\n case \"function\":\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 === \"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 = (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 {\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([\"gray-light\", \"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([\"gray-light\", \"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([\"gray-light\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"gray-light\"], 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\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 \"gray-light\": {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor[\"gray-light\"])),\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\";\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","grayLight","styleToHtmlStyleThemeLight","bold","open","close","italic","underline","inverse","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","styleToHtmlStyleThemeDark","noStyleFn","styles","value","tryStringify","arg","JSON","stringify","replace","sameRawFormattedValue","stringValue","formattedValue","internalFormatValue","styleFn","padding","depth","maxDepth","objects","typeofValue","undefined","toString","constructor","Object","internalFormatObject","Array","isArray","internalFormatArray","stack","startsWith","message","name","internalFormatMap","Set","internalFormatSet","WeakMap","WeakSet","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","result","delete","array","formatObject","formatRecordToString","record","style","parts","displayName","datetime","toTimeString","split","symbol","formatRecordObject","stringObject","metadata","metadataStyles","extra","context","specialRegexpChars","createTestFunctionFromRegexp","regexp","string","createTestFunctionFromRegexpString","endsWith","RegExp","slice","createTestFunctionFromValue","createFindDebugLevel","debugValue","isWildcard","debugValues","skips","trim","forEach","ALL","skip","dv","RawFormatter","format","reduce","part","styleName","MarkdownFormatter","map2object","String","space","objectValue","JSONFormatter","ansiStyles","ansi","color","ansi256","hexToAnsi256","styledString","codePair","ANSIFormatter","HTMLFormatter","styleToHtmlStyle","args","htmlStyles","s","BrowserConsoleFormatter","theme","consoleOutput","param","outKey","write","StringHandler","_buffer","handle","getDebugString","querystring","document","location","search","debugFromLocalStorage","localStorage","getItem","debugFromQueryString","decodeURI","findDebugLevel","getDefaultTheme","configInLocalStorage","createHandler","browserConsoleFormatter","BrowserConsoleHandler","options","defaultFormatter","stdout","isTTY","NIGHTINGALE_CONSOLE_FORMATTER","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","error","unhandled","type"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nightingale",
3
- "version": "16.0.0",
3
+ "version": "16.1.0",
4
4
  "description": "Logger for browser and node",
5
5
  "keywords": [
6
6
  "logger"
@@ -79,13 +79,25 @@ export class LoggerCLI extends Logger {
79
79
  }
80
80
  }
81
81
 
82
- group(name: string, fn: () => void): void {
82
+ group<T, Result extends Awaited<T> | Promise<T>>(
83
+ name: string,
84
+ fn: () => Result,
85
+ ): Result extends Promise<infer V> ? Promise<V> : Awaited<T> {
83
86
  if (this.json) {
84
- fn();
87
+ return fn() as Result extends Promise<infer V> ? Promise<V> : Awaited<T>;
85
88
  } else {
86
89
  console.group(name);
87
- fn();
88
- console.groupEnd();
90
+ const result = fn();
91
+ if (result instanceof Promise) {
92
+ return result.finally(() => {
93
+ console.groupEnd();
94
+ }) as Result extends Promise<infer V> ? Promise<V> : never;
95
+ } else {
96
+ console.groupEnd();
97
+ return result as Result extends Promise<infer V>
98
+ ? Promise<V>
99
+ : Awaited<T>;
100
+ }
89
101
  }
90
102
  }
91
103
  }