nightingale 18.0.0 → 18.2.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +0 -1
  3. package/dist/definitions/formatters/ANSIFormatter.d.ts +1 -1
  4. package/dist/definitions/formatters/ANSIFormatter.d.ts.map +1 -1
  5. package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts +1 -1
  6. package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts.map +1 -1
  7. package/dist/definitions/loggers/LoggerCLI.d.ts +1 -5
  8. package/dist/definitions/loggers/LoggerCLI.d.ts.map +1 -1
  9. package/dist/index-browser.es.js +29 -6
  10. package/dist/index-browser.es.js.map +1 -1
  11. package/dist/index-node22.mjs +29 -6
  12. package/dist/index-node22.mjs.map +1 -1
  13. package/dist/index-react-native.es.js +29 -6
  14. package/dist/index-react-native.es.js.map +1 -1
  15. package/package.json +29 -26
  16. package/src/config.ts +1 -1
  17. package/src/debug/debug.test.ts +1 -0
  18. package/src/formatter-utils/formatObject.test.ts +2 -1
  19. package/src/formatter-utils/index.test.ts +1 -0
  20. package/src/formatters/ANSIFormatter.test.ts +1 -0
  21. package/src/formatters/ANSIFormatter.ts +1 -1
  22. package/src/formatters/BrowserConsoleFormatter.test.ts +2 -1
  23. package/src/formatters/BrowserConsoleFormatter.ts +1 -1
  24. package/src/formatters/HTMLFormatter.test.ts +1 -0
  25. package/src/formatters/JSONFormatter.test.ts +1 -0
  26. package/src/formatters/MarkdownFormatter.test.ts +1 -0
  27. package/src/formatters/RawFormatter.test.ts +1 -0
  28. package/src/handlers/ConsoleCLIHandler.ts +2 -2
  29. package/src/index.test.ts +1 -0
  30. package/src/loggers/LoggerCLI.test.ts +36 -7
  31. package/src/loggers/LoggerCLI.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"index-react-native.es.js","sources":["../src/config.ts","../src/formatter-utils/levelToStyles.ts","../src/formatter-utils/levelToSymbol.ts","../src/formatter-utils/styleToHexColor.ts","../src/formatter-utils/styleToHtmlStyle.ts","../src/formatter-utils/formatStyles.ts","../src/formatter-utils/formatObject.ts","../src/formatter-utils/formatRecordToString.ts","../src/debug/debug.ts","../src/formatters/RawFormatter.ts","../src/formatters/MarkdownFormatter.ts","../src/formatters/JSONFormatter.ts","../src/formatters/ANSIFormatter.ts","../src/formatters/HTMLFormatter.ts","../src/formatters/BrowserConsoleFormatter.ts","../src/outputs/consoleOutput.ts","../src/handlers/StringHandler.ts","../src/debug/getDebugString.ts","../src/handlers/BrowserConsoleHandler.ts","../src/handlers/defaultFormatter.ts","../src/handlers/ConsoleHandler.ts","../src/outputs/cliConsoleOutput.ts","../src/handlers/ConsoleCLIHandler.ts","../src/loggers/LoggerCLI.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from \"nightingale-logger\";\nimport type { Handler, Level } from \"nightingale-types\";\n\nconst globalOrWindow: typeof global =\n typeof global !== \"undefined\" ? global : (window as typeof global);\n\nif (\n process.env.NODE_ENV !== \"production\" &&\n globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS\n) {\n throw new Error(\"nightingale: update all to ^5.0.0\");\n}\n\nif (!globalOrWindow.__NIGHTINGALE_CONFIG) {\n globalOrWindow.__NIGHTINGALE_CONFIG = [];\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE = new Map<\n string,\n ComputedConfigForKey\n >();\n globalOrWindow.__NIGHTINGALE_CONFIG_DEFAULT = {\n handlers: [],\n processors: [],\n };\n}\n\nfunction clearCache(): void {\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE.clear();\n}\n\nfunction handleConfig(config: Config): Config {\n if (config.keys) {\n if (config.pattern) {\n throw new Error(\"Cannot have key and pattern for the same config\");\n }\n if (config.key) {\n throw new Error(\"Cannot have key and keys for the same config\");\n }\n } else if (config.key) {\n if (config.pattern) {\n throw new Error(\"Cannot have key and pattern for the same config\");\n }\n config.keys = [config.key];\n delete config.key;\n }\n\n if (config.handler) {\n if (config.handlers) {\n throw new Error(\"Cannot have handler and handlers for the same config\");\n }\n config.handlers = [config.handler];\n delete config.handler;\n }\n\n if (config.processor) {\n if (config.processors) {\n throw new Error(\n \"Cannot have processors and processors for the same config\",\n );\n }\n config.processors = [config.processor];\n delete config.processor;\n }\n\n return config;\n}\n\nexport function configure(config: Config[]): void {\n if (globalOrWindow.__NIGHTINGALE_CONFIG.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"nightingale: warning: config overridden\");\n }\n\n clearCache();\n globalOrWindow.__NIGHTINGALE_CONFIG = config.map(handleConfig);\n}\n\nexport function addConfig(config: Config, unshift = false): void {\n config = handleConfig(config);\n globalOrWindow.__NIGHTINGALE_CONFIG[unshift ? \"unshift\" : \"push\"](config);\n clearCache();\n}\n\nconst configIsForKey = (key: string) => (config: Config) => {\n if (config.keys) return config.keys.includes(key);\n if (config.pattern) return config.pattern.test(key);\n return true;\n};\n\nglobalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (\n key: string,\n): ComputedConfigForKey => {\n const globalCache = globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE;\n\n const existingCache = globalCache.get(key);\n\n if (existingCache) {\n return existingCache;\n }\n\n const loggerConfig: ComputedConfigForKey = {\n handlers: [],\n processors: [],\n };\n\n globalOrWindow.__NIGHTINGALE_CONFIG\n .filter(configIsForKey(key))\n .some((config: Config) => {\n if (config.handlers) loggerConfig.handlers.push(...config.handlers);\n if (config.processors) loggerConfig.processors.push(...config.processors);\n return config.stop;\n });\n\n globalCache.set(key, loggerConfig);\n return loggerConfig;\n};\n\nif (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler: Handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n","import { Level } from \"nightingale-levels\";\n\nexport type LevelToStyles = Readonly<Record<number, string[]>>;\n\nexport const levelToStyles: LevelToStyles = {\n [Level.TRACE]: [\"gray\"],\n [Level.DEBUG]: [\"gray\"],\n // [Level.INFO]: ['gray'],\n [Level.WARN]: [\"yellow\"],\n [Level.ERROR]: [\"red\", \"bold\"],\n [Level.CRITICAL]: [\"red\", \"bold\"],\n [Level.FATAL]: [\"bgRed\", \"white\"],\n [Level.EMERGENCY]: [\"bgRed\", \"white\"],\n};\n","import { Level } from \"nightingale-levels\";\n\nexport type LevelToSymbol = Readonly<Record<number, string>>;\n\nexport const levelToSymbol: LevelToSymbol = {\n [Level.TRACE]: \"•\",\n [Level.DEBUG]: \"•\",\n [Level.INFO]: \"→\",\n [Level.WARN]: \"⚠\",\n [Level.ERROR]: \"✖\",\n [Level.CRITICAL]: \"!\",\n [Level.FATAL]: \"‼\",\n [Level.EMERGENCY]: \"‼\",\n};\n","export const styleToHexColor = {\n orange: \"ff5f00\",\n} as const;\n\nexport type StyleToHexColor = Readonly<\n Record<keyof typeof styleToHexColor, string>\n>;\n","import { styleToHexColor } from \"./styleToHexColor.ts\";\n\nexport interface HtmlStyle {\n readonly open: string;\n readonly close: string;\n}\n\nexport const styleToHtmlStyleThemeLight = {\n // text style\n bold: { open: \"font-weight: bold\", close: \"font-weight: normal\" },\n italic: { open: \"font-style: italic\", close: \"font-style: normal\" },\n underline: {\n open: \"text-decoration: underline\",\n close: \"text-decoration: none\",\n },\n inverse: {\n open: \"unicode-bidi: bidi-override; direction: rtl\",\n close: \"unicode-bidi: normal; direction: ltr\",\n },\n strikethrough: {\n open: \"text-decoration: line-through\",\n close: \"text-decoration: none\",\n },\n\n black: { open: \"color: black\", close: \"color: currentcolor\" },\n red: { open: \"color: #ff0020\", close: \"color: currentcolor\" },\n green: { open: \"color: #00b317\", close: \"color: currentcolor\" },\n yellow: { open: \"color: #ffcc00\", close: \"color: currentcolor\" },\n blue: { open: \"color: #00a0ff\", close: \"color: currentcolor\" },\n magenta: { open: \"color: #ff00a0\", close: \"color: currentcolor\" },\n cyan: { open: \"color: #00cfd8\", close: \"color: currentcolor\" },\n white: { open: \"color: white\", close: \"color: currentcolor\" },\n gray: { open: \"color: gray\", close: \"color: currentcolor\" },\n dim: { open: \"color: #808080\", close: \"color: currentcolor\" },\n\n bgBlack: { open: \"background: black\", close: \"background: initial\" },\n bgRed: { open: \"background: #ff0020\", close: \"background: initial\" },\n bgGreen: { open: \"background: #00b317\", close: \"background: initial\" },\n bgYellow: { open: \"background: #ffcc00\", close: \"background: initial\" },\n bgBlue: { open: \"background: #00a0ff\", close: \"background: initial\" },\n bgMagenta: { open: \"background: #ff00a0\", close: \"background: initial\" },\n bgCyan: { open: \"background: #00cfd8\", close: \"background: initial\" },\n bgWhite: { open: \"background: white\", close: \"background: initial\" },\n\n orange: {\n open: `color: #${styleToHexColor.orange}`,\n close: \"color: currentcolor\",\n },\n} as const;\n\nexport type StyleToHtmlStyle = Readonly<\n Record<keyof typeof styleToHtmlStyleThemeLight, HtmlStyle>\n>;\n\nexport const styleToHtmlStyleThemeDark: StyleToHtmlStyle = {\n ...styleToHtmlStyleThemeLight,\n black: styleToHtmlStyleThemeLight.white,\n bgBlack: styleToHtmlStyleThemeLight.bgWhite,\n white: styleToHtmlStyleThemeLight.black,\n bgWhite: styleToHtmlStyleThemeLight.bgBlack,\n gray: { open: \"color: lightgray\", close: \"color: currentcolor\" },\n};\n","/* eslint sort-keys: error */\n\nexport const formatStyles = {\n bigint: [\"yellow\", \"bold\"],\n boolean: [\"green\"],\n date: [\"magenta\"],\n error: [\"red\"],\n function: [\"blue\"],\n null: [\"bold\"],\n number: [\"yellow\"],\n regexp: [\"magenta\"],\n string: [\"orange\"],\n symbol: [\"magenta\"],\n undefined: [\"dim\"],\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\nimport { formatStyles } from \"./formatStyles.ts\";\n\nexport interface FormatObjectOptions {\n padding?: string;\n maxDepth?: number;\n}\n\nexport type StyleFn = (styles: Styles, value: string) => string;\n\nexport type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;\n\nconst noStyleFn: StyleFn = (styles: Styles, value: string): string => value;\n\ninterface InternalFormatParams {\n padding: string;\n depth: number;\n maxDepth: number;\n objects: Set<unknown>;\n}\n\ninterface FormattedKey {\n stringKey: string;\n formattedKey: string;\n}\n\ntype FormatKey<Key> = (\n key: Key,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n) => FormattedKey;\n\ninterface Value<Key> {\n key: Key;\n value: unknown;\n}\n\ninterface FormattedValue {\n stringValue: string;\n formattedValue: string;\n}\n\ntype Values<Key> = Value<Key>[];\n\ninterface InternalFormatIteratorParams<Key> {\n prefix: string;\n suffix: string;\n formatKey: FormatKey<Key>;\n prefixSuffixSpace?: string;\n}\n\nfunction tryStringify(arg: unknown): string {\n try {\n return JSON.stringify(arg).replace(/\\\\n/g, \"\\n\");\n } catch {\n return \"[Circular]\";\n }\n}\n\nconst sameRawFormattedValue = (value: string): FormattedValue => ({\n stringValue: value,\n formattedValue: value,\n});\n\nconst numericSeparator = \"_\";\n\nconst formatIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = integerAsString.length;\n const start = integerAsString.startsWith(\"-\") ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n result = `${numericSeparator}${integerAsString.slice(i - 3, i)}${result}`;\n }\n return i === integerAsString.length\n ? integerAsString\n : `${integerAsString.slice(0, i)}${result}`;\n};\n\nconst formatDecimalIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = 0;\n for (; i < integerAsString.length - 3; i += 3) {\n result += `${integerAsString.slice(i, i + 3)}${numericSeparator}`;\n }\n return i === 0 ? integerAsString : `${result}${integerAsString.slice(i)}`;\n};\n\nconst formatNumberValue = (value: number): string => {\n if (Number.isNaN(value)) {\n return \"NaN\";\n }\n if (value === Number.POSITIVE_INFINITY) {\n return \"+Infinity\";\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return \"-Infinity\";\n }\n if (value === Number.EPSILON) {\n return \"Epsilon\";\n }\n if (Object.is(value, -0)) {\n return \"-0\";\n }\n const integer = Math.trunc(value);\n const integerAsString = integer.toString();\n if (integer === value) {\n if (integerAsString.includes(\"e\")) {\n return integerAsString;\n }\n return formatIntegerValue(integerAsString);\n } else {\n return `${formatIntegerValue(integerAsString)}.${formatDecimalIntegerValue(String(value).slice(integerAsString.length + 1))}`;\n }\n};\n\nfunction internalFormatValue(\n value: unknown,\n styleFn: StyleFn,\n styles: Styles,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n const typeofValue = typeof value;\n\n if (!styles) {\n if (value === null) {\n styles = [\"bold\"];\n } else {\n switch (typeofValue) {\n case \"bigint\":\n styles = formatStyles.bigint;\n break;\n case \"boolean\":\n styles = formatStyles.boolean;\n break;\n case \"undefined\":\n styles = formatStyles.undefined;\n break;\n case \"number\":\n styles = formatStyles.number;\n break;\n case \"string\":\n styles = formatStyles.string;\n break;\n case \"symbol\":\n styles = formatStyles.symbol;\n break;\n case \"object\":\n if (value instanceof Date) {\n styles = formatStyles.date;\n }\n if (value instanceof RegExp) {\n styles = formatStyles.regexp;\n }\n if (value instanceof Error) {\n styles = formatStyles.error;\n }\n break;\n case \"function\":\n styles = formatStyles.function;\n break;\n default:\n break;\n }\n }\n }\n\n let stringValue: string;\n if (value === null) {\n stringValue = \"null\";\n } else if (value === undefined) {\n stringValue = \"undefined\";\n } else if (typeofValue === \"number\") {\n stringValue = formatNumberValue(value as number);\n } else if (typeofValue === \"boolean\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n stringValue = (value as any).toString() as string;\n } else if ((value as () => unknown).constructor === Object) {\n if (depth >= maxDepth) {\n stringValue = \"{Object...}\";\n } else {\n return internalFormatObject(\n value as Record<string, unknown>,\n styleFn,\n undefined,\n {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n },\n );\n }\n } else if (Array.isArray(value)) {\n if (depth >= maxDepth) {\n stringValue = \"[Array...]\";\n } else {\n return internalFormatArray(value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof Error) {\n const stack = value.stack;\n stringValue =\n stack?.startsWith(value.message) ||\n stack?.startsWith(`${value.name}: ${value.message}`)\n ? stack\n : `${value.message}\\n${stack || \"\"}`;\n } else if (value instanceof Map) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatMap(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (typeofValue === \"bigint\") {\n stringValue = `[BigInt: ${(value as bigint).toString()}]`;\n } else if (typeofValue === \"symbol\") {\n stringValue = (value as symbol).toString();\n } else if (value instanceof Set) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatSet(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof WeakMap) {\n stringValue = \"{WeakMap...}\";\n } else if (value instanceof WeakSet) {\n stringValue = \"{WeakSet...}\";\n } else if (value instanceof Date) {\n stringValue = `[Date: ${value.toISOString()}]`;\n } else if (value instanceof RegExp) {\n stringValue = `[RegExp: ${value.toString()}]`;\n } else if (typeof value === \"function\") {\n stringValue = `[Function: ${value.name}]`;\n } else {\n stringValue = tryStringify(value);\n }\n\n const formattedValue = styleFn(styles, stringValue);\n\n return {\n stringValue,\n formattedValue,\n };\n}\n\nconst separator = \",\";\n\nconst internalFormatKey: FormatKey<string> = (\n key: string,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return {\n stringKey: `${key}: `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${key}:`)} `,\n };\n};\n\nconst internalNoKey: FormatKey<undefined> = (\n key: string | undefined,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return { stringKey: \"\", formattedKey: \"\" };\n};\n\nconst internalFormatMapKey: FormatKey<unknown> = (\n key: unknown,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n const { stringValue, formattedValue } = internalFormatValue(\n key,\n noStyleFn,\n undefined,\n internalFormatParams,\n );\n return {\n stringKey: `${stringValue} => `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${formattedValue}:`)} `,\n };\n};\n\nconst internalFormatIterator = <Key>(\n values: Values<Key>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n {\n prefix,\n suffix,\n prefixSuffixSpace = \" \",\n formatKey,\n }: InternalFormatIteratorParams<Key>,\n): FormattedValue => {\n let breakLine = false;\n const formattedSeparator = (): string => styleFn([\"gray\"], separator);\n\n const valuesMaxIndex = values.length - 1;\n const formattedValues: FormattedValue[] = values.map(\n ({ key, value }, index: number) => {\n const nextDepth = depth + 1;\n const internalFormatParams = {\n padding,\n depth: nextDepth,\n maxDepth,\n objects,\n };\n\n // key must be formatted before value (browser-formatter needs order)\n const { stringKey, formattedKey } = formatKey(\n key,\n styleFn,\n internalFormatParams,\n );\n\n let { stringValue, formattedValue } = internalFormatValue(\n value,\n styleFn,\n key && objectStyles\n ? objectStyles[key as unknown as string]\n : undefined,\n internalFormatParams,\n );\n\n if (\n stringValue &&\n (stringValue.length > 80 || stringValue.includes(\"\\n\"))\n ) {\n breakLine = true;\n stringValue = stringValue.replace(/\\n/g, `\\n${padding}`);\n formattedValue = formattedValue.replace(/\\n/g, `\\n${padding}`);\n }\n\n return {\n stringValue:\n stringKey + stringValue + (index === valuesMaxIndex ? \"\" : separator),\n formattedValue:\n formattedKey +\n formattedValue +\n (index === valuesMaxIndex ? \"\" : formattedSeparator()),\n // note: we need to format the separator for each values for browser-formatter\n };\n },\n );\n\n return {\n stringValue:\n prefix +\n formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.stringValue}`\n : (fv) => fv.stringValue,\n )\n .join(breakLine ? \"\\n\" : \" \") +\n suffix,\n formattedValue: `${prefix}${\n breakLine ? \"\" : prefixSuffixSpace\n }${formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.formattedValue}`\n : (v) => v.formattedValue,\n )\n .join(breakLine ? \"\" : \" \")}${\n breakLine ? \",\\n\" : prefixSuffixSpace\n }${suffix}`,\n };\n};\n\nfunction internalFormatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(object)) {\n return sameRawFormattedValue(\"{Circular Object}\");\n }\n\n const keys: string[] = Object.keys(object);\n if (keys.length === 0) {\n return sameRawFormattedValue(\"{}\");\n }\n\n objects.add(object);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: object[key] })),\n styleFn,\n objectStyles,\n { padding, depth, maxDepth, objects },\n { prefix: \"{\", suffix: \"}\", formatKey: internalFormatKey },\n );\n\n objects.delete(object);\n\n return result;\n}\n\nfunction internalFormatMap(\n name: string,\n map: Map<unknown, unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(map)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const keys = [...map.keys()];\n if (keys.length === 0) {\n return sameRawFormattedValue(`${name} {}`);\n }\n\n objects.add(map);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: map.get(key) })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} {`, suffix: \"}\", formatKey: internalFormatMapKey },\n );\n\n objects.delete(map);\n\n return result;\n}\n\nfunction internalFormatArray(\n array: unknown[],\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(array)) {\n return sameRawFormattedValue(\"{Circular Array}\");\n }\n\n if (array.length === 0) {\n return sameRawFormattedValue(\"[]\");\n }\n\n objects.add(array);\n\n const result = internalFormatIterator(\n array.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n {\n prefix: \"[\",\n suffix: \"]\",\n prefixSuffixSpace: \"\",\n formatKey: internalNoKey,\n },\n );\n\n objects.delete(array);\n\n return result;\n}\n\nfunction internalFormatSet(\n name: string,\n set: Set<unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(set)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const values = [...set.values()];\n if (values.length === 0) {\n return sameRawFormattedValue(`${name} []`);\n }\n\n objects.add(set);\n\n const result = internalFormatIterator(\n values.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} [`, suffix: \"]\", formatKey: internalNoKey },\n );\n\n objects.delete(set);\n\n return result;\n}\n\nexport function formatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn = noStyleFn,\n objectStyles?: ObjectStyles,\n { padding = \" \", maxDepth = 10 }: FormatObjectOptions = {},\n): string {\n const { formattedValue: result } = internalFormatObject(\n object,\n styleFn,\n objectStyles,\n {\n padding,\n maxDepth,\n depth: 0,\n objects: new Set(),\n },\n );\n\n if (result === \"{}\") {\n return \"\";\n }\n\n return result;\n}\n","import type { LogRecord, Metadata } from \"nightingale-types\";\nimport type { ObjectStyles, StyleFn } from \"./formatObject.ts\";\nimport { formatObject } from \"./formatObject.ts\";\nimport { levelToStyles } from \"./levelToStyles.ts\";\nimport { levelToSymbol } from \"./levelToSymbol.ts\";\n\nexport function formatRecordToString<T extends Metadata>(\n record: LogRecord<T>,\n style: StyleFn,\n): [string, ...string[]] {\n const parts: string[] = [];\n\n if (record.displayName) {\n parts.push(style([\"dim\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"dim\"], record.key));\n }\n\n if (record.datetime) {\n parts.push(\n style([\"gray\", \"bold\"], record.datetime.toTimeString().split(\" \", 2)[0]!),\n );\n /* new Date().toFormat('HH24:MI:SS') */\n }\n\n let message: string = record.symbol || levelToSymbol[record.level] || \"\";\n const styles = record.styles || levelToStyles[record.level];\n\n if (record.message) {\n if (message) {\n message += ` ${record.message}`;\n } else {\n message = record.message;\n }\n }\n\n if (message) {\n if (styles) {\n message = style(styles, message);\n }\n parts.push(message);\n }\n\n const formatRecordObject = (\n key: string,\n object: Record<string, unknown> | undefined,\n objectStyles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, objectStyles);\n\n if (!stringObject) {\n return;\n }\n\n parts.push(stringObject);\n };\n\n formatRecordObject(\"metadata\", record.metadata, record.metadataStyles);\n formatRecordObject(\"extra\", record.extra, undefined);\n formatRecordObject(\"context\", record.context, undefined);\n\n return [parts.join(\" \")];\n}\n","/* eslint-disable complexity */\nimport { Level } from \"nightingale-levels\";\n\nconst specialRegexpChars = /[$()+.?[\\\\\\]^{|}]/;\n\ntype TestFunction = (string: string) => boolean;\nexport type DebugValueType = RegExp | string[] | string;\n\nconst createTestFunctionFromRegexp =\n (regexp: RegExp): TestFunction =>\n (string: string) =>\n regexp.test(string);\n\nconst createTestFunctionFromRegexpString = (value: string): TestFunction => {\n if (!value.endsWith(\"/\")) throw new Error(\"Invalid RegExp DEBUG value\");\n return createTestFunctionFromRegexp(new RegExp(value.slice(1, -1)));\n};\n\nconst createTestFunctionFromValue = (value: string): TestFunction => {\n if (value.endsWith(\":*\")) {\n value = value.slice(0, -2);\n return (string: string) => string.startsWith(value);\n }\n\n return (string: string) => string === value;\n};\n\nexport type FindDebugLevel = (minLevel: Level, key: string) => Level;\n\nexport function createFindDebugLevel(\n debugValue?: DebugValueType,\n): FindDebugLevel {\n let isWildcard = false;\n const debugValues: TestFunction[] = [];\n const skips: TestFunction[] = [];\n\n if (!Array.isArray(debugValue)) {\n if (debugValue instanceof RegExp) {\n debugValues.push(createTestFunctionFromRegexp(debugValue));\n debugValue = undefined;\n } else if (debugValue) {\n debugValue = debugValue.trim();\n\n if (debugValue.startsWith(\"/\")) {\n debugValues.push(createTestFunctionFromRegexpString(debugValue));\n debugValue = undefined;\n } else {\n debugValue = debugValue.split(/[\\s,]+/);\n }\n }\n }\n\n if (debugValue) {\n (debugValue as string[]).forEach((value) => {\n if (specialRegexpChars.test(value)) {\n throw new Error(\n `Invalid debug value: \"${value}\" (contains special chars)`,\n );\n }\n\n if (!value) return;\n\n if (value === \"*\") {\n isWildcard = true;\n return;\n }\n\n if (value.startsWith(\"-\")) {\n skips.push(createTestFunctionFromValue(value.slice(1)));\n } else if (!isWildcard) {\n debugValues.push(createTestFunctionFromValue(value));\n }\n });\n }\n\n if (isWildcard) {\n if (skips.length === 0) {\n return () => Level.ALL;\n } else {\n return (minLevel: Level, key: string) =>\n skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n }\n\n if (debugValues.length === 0) {\n return (minLevel: Level) => minLevel;\n }\n\n return (minLevel: Level, key: string) => {\n if (minLevel === Level.ALL || !key) {\n return minLevel;\n }\n\n if (debugValues.some((dv) => dv(key))) {\n return skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n\n return minLevel;\n };\n}\n","import type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { formatRecordToString } from \"../formatter-utils/index.ts\";\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/index.ts\";\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((part, styleName) => {\n switch (styleName) {\n case \"bold\":\n return `*${part}*`;\n case \"italic\":\n return `_${part}_`;\n case \"strikethrough\":\n return `~${part}~`;\n\n // no default\n }\n\n return part;\n }, string);\n}\n\nexport const MarkdownFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { NightingaleFormatter } from \"../formatter-utils\";\n\nfunction map2object(map: Map<unknown, unknown>): unknown {\n const object: Record<string, unknown> = {};\n\n map.forEach((value, key) => {\n if (typeof key === \"object\") {\n // ignore key\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n object[String(key)] = value;\n });\n\n return object;\n}\n\nfunction stringify(value: unknown, space?: number | string): string {\n return JSON.stringify(\n value,\n (key, objectValue) => {\n if (objectValue instanceof Map) {\n return map2object(objectValue);\n }\n if (objectValue instanceof Error) {\n return {\n message: objectValue.message,\n stack: objectValue.stack,\n };\n }\n\n return objectValue as unknown;\n },\n space,\n );\n}\n\nexport const JSONFormatter: NightingaleFormatter = {\n format(record) {\n return [\n stringify({\n key: record.key,\n level: record.level,\n datetime: record.datetime,\n message: record.message,\n metadata: record.metadata,\n extra: record.extra,\n }),\n ];\n },\n};\n\nexport const JSONCLIFormatter: NightingaleFormatter = {\n format(record) {\n return [\n stringify({\n key: record.key,\n time: record.datetime.toTimeString().split(\" \", 2)[0]!,\n message: record.message,\n ...record.metadata,\n ...record.extra,\n }),\n ];\n },\n};\n","import ansi from \"ansi-styles\";\nimport type { NightingaleFormatter } from \"nightingale\";\nimport type { Styles } from \"nightingale-types\";\nimport {\n formatRecordToString,\n styleToHexColor,\n} from \"../formatter-utils/index.ts\";\n\nexport type { Styles } from \"nightingale-types\";\n\ninterface CodePair {\n open: string;\n close: string;\n}\n\ntype AnsiStyles = Record<string, CodePair | undefined>;\n\nconst ansiStyles: AnsiStyles = {\n black: ansi.black,\n red: ansi.red,\n green: ansi.green,\n yellow: ansi.yellow,\n blue: ansi.blue,\n magenta: ansi.magenta,\n cyan: ansi.cyan,\n white: ansi.white,\n gray: ansi.gray,\n dim: ansi.dim,\n\n bgBlack: ansi.bgBlack,\n bgRed: ansi.bgRed,\n bgGreen: ansi.bgGreen,\n bgYellow: ansi.bgYellow,\n bgBlue: ansi.bgBlue,\n bgMagenta: ansi.bgMagenta,\n bgCyan: ansi.bgCyan,\n bgWhite: ansi.bgWhite,\n\n bold: ansi.bold,\n underline: ansi.underline,\n\n // http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html\n orange: {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor.orange)),\n close: ansi.color.close,\n },\n};\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((styledString: string, styleName: string) => {\n const codePair: CodePair | undefined = ansiStyles[styleName];\n\n if (!codePair) {\n throw new Error(`Unknown style: ${styleName}`);\n }\n\n return codePair.open + styledString + codePair.close;\n }, string);\n}\n\nexport const ANSIFormatter: NightingaleFormatter = {\n format: (record) => formatRecordToString(record, style),\n};\n","import type { Styles } from \"nightingale-types\";\nimport type {\n NightingaleFormatter,\n StyleToHtmlStyle,\n} from \"../formatter-utils\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils/index.ts\";\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 type { NightingaleFormatter } from \"../formatter-utils\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeDark,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils/index.ts\";\n\nexport const style =\n (styleToHtmlStyle: StyleToHtmlStyle, args: string[]) =>\n (styles: Styles, string: string): string => {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n const htmlStyles = styles.map(\n (styleName) => styleToHtmlStyle[styleName as keyof StyleToHtmlStyle],\n );\n\n args.push(\n htmlStyles.map((s) => s.open).join(\"; \"),\n htmlStyles.map((s) => s.close).join(\"; \"),\n );\n return `%c${string}%c`;\n };\n\nexport class BrowserConsoleFormatter implements NightingaleFormatter {\n styleToHtmlStyle: StyleToHtmlStyle;\n constructor(theme: \"dark\" | \"light\" = \"light\") {\n this.styleToHtmlStyle =\n theme === \"dark\" ? styleToHtmlStyleThemeDark : styleToHtmlStyleThemeLight;\n }\n\n format<T extends Metadata>(record: LogRecord<T>): [string, ...string[]] {\n const args: string[] = [];\n const string = formatRecordToString(\n record,\n style(this.styleToHtmlStyle, args),\n )[0];\n return [string, ...args];\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\n\nexport function consoleOutput<T extends Metadata>(\n param: [string, ...string[]],\n record: LogRecord<T>,\n): void {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](...param);\n}\n","/* eslint-disable prefer-template */\nimport type { Handler, Level, LogRecord, Metadata } from \"nightingale-types\";\nimport { RawFormatter } from \"../formatters/RawFormatter.ts\";\n\nexport class StringHandler implements Handler {\n readonly minLevel: Level;\n\n private _buffer = \"\";\n\n constructor(minLevel: Level) {\n this.minLevel = minLevel;\n }\n\n get string(): string {\n return this._buffer;\n }\n\n handle<T extends Metadata>(record: LogRecord<T>): void {\n this._buffer += RawFormatter.format(record)[0] + \"\\n\";\n }\n}\n","export function getDebugString(): string {\n return \"\";\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.ts\";\nimport { getDebugString } from \"../debug/getDebugString.ts\";\nimport { BrowserConsoleFormatter } from \"../formatters/BrowserConsoleFormatter.ts\";\nimport { consoleOutput } from \"../outputs/consoleOutput.ts\";\n\n// debug string can change any time (localStorage), so we need a new object each time.\nconst findDebugLevel = (minLevel: Level, key: string): Level =>\n createFindDebugLevel(getDebugString())(minLevel, key);\n\ntype Theme = \"dark\" | \"light\";\n\nconst getDefaultTheme = (): Theme => {\n try {\n const configInLocalStorage = localStorage.getItem(\"NIGHTINGALE_THEME\");\n if (configInLocalStorage && configInLocalStorage === \"dark\") {\n return configInLocalStorage;\n }\n } catch {}\n return \"light\";\n};\n\nconst createHandler = (theme: Theme = getDefaultTheme()): Handle => {\n const browserConsoleFormatter = new BrowserConsoleFormatter(theme);\n return <T extends Metadata>(record: LogRecord<T>) => {\n consoleOutput(browserConsoleFormatter.format(record), record);\n };\n};\n\nexport interface BrowserConsoleHandlerOptions {\n theme?: Theme;\n}\n\nexport class BrowserConsoleHandler implements Handler {\n minLevel: Level = 0;\n\n handle: Handle;\n\n isHandling: IsHandling;\n\n constructor(minLevel: Level, options: BrowserConsoleHandlerOptions = {}) {\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n\n this.handle = createHandler(options.theme);\n }\n}\n","import { ANSIFormatter } from \"../formatters/ANSIFormatter.ts\";\n\nexport const defaultFormatter = ANSIFormatter.format;\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug.ts\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { consoleOutput } from \"../outputs/consoleOutput.ts\";\nimport { defaultFormatter } from \"./defaultFormatter.ts\";\n\nconst createHandle = (\n formatter = defaultFormatter,\n output = consoleOutput,\n): Handle => {\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleHandlerOptions {\n formatter?: NightingaleFormatter[\"format\"];\n output?: <T extends Metadata>(\n param: string[] | string,\n record: LogRecord<T>,\n ) => void;\n // compat with nightingale-app-console, not used yet\n theme?: \"dark\" | \"light\";\n}\n\nexport class ConsoleHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options.formatter, options.output);\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\n\nexport function cliConsoleOutput<T extends Metadata>(\n param: [string, ...string[]],\n record: LogRecord<T>,\n): void {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](...param);\n}\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug.ts\";\nimport { ANSIFormatter } from \"../formatters/ANSIFormatter.ts\";\nimport { JSONFormatter } from \"../formatters/JSONFormatter.ts\";\nimport { RawFormatter } from \"../formatters/RawFormatter.ts\";\nimport { cliConsoleOutput } from \"../outputs/cliConsoleOutput.ts\";\nimport { consoleOutput } from \"../outputs/consoleOutput.ts\";\n\nconst createHandle = ({\n json,\n noColor = process.env.NO_COLOR === \"1\" || process.env.NO_COLOR === \"true\",\n}: ConsoleCLIHandlerOptions): Handle => {\n const formatter = (() => {\n if (json) return JSONFormatter.format;\n if (noColor) return RawFormatter.format;\n return ANSIFormatter.format;\n })();\n const output = json ? consoleOutput : cliConsoleOutput;\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleCLIHandlerOptions {\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class ConsoleCLIHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleCLIHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options);\n }\n}\n","import type { ComputedConfigForKey } from \"nightingale-logger\";\nimport { Level, Logger } from \"nightingale-logger\";\nimport type { Handler, Processor } from \"nightingale-types\";\nimport { ConsoleCLIHandler } from \"../handlers/ConsoleCLIHandler.ts\";\n\nexport interface LoggerCLIOptions {\n displayName?: string;\n handlers?: Handler[];\n processors?: Processor[];\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class LoggerCLI extends Logger {\n private handlers: Handler[];\n private processors: Processor[] = [];\n private json: boolean;\n constructor(\n key: string,\n { displayName, processors, json = false, noColor }: LoggerCLIOptions = {},\n ) {\n super(key, displayName);\n this.handlers = [new ConsoleCLIHandler(Level.INFO, { json, noColor })];\n this.processors = processors ?? [];\n this.json = json;\n }\n\n protected override getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return {\n handlers: this.handlers,\n processors: this.processors,\n };\n }\n\n logJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n level: Level = Level.INFO,\n ): void {\n if (this.json) {\n this.log(messageOrError, metadata, level);\n }\n }\n\n debugJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.debug(messageOrError, metadata);\n }\n }\n\n noticeJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.notice(messageOrError, metadata);\n }\n }\n\n infoJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.info(messageOrError, metadata);\n }\n }\n\n warnJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.warn(messageOrError, metadata);\n }\n }\n\n group<T, Result extends Awaited<T> | Promise<T>>(\n name: string,\n fn: () => Result,\n ): Result extends Promise<infer V> ? Promise<V> : Awaited<T> {\n if (this.json) {\n return fn() as Result extends Promise<infer V> ? Promise<V> : Awaited<T>;\n } else {\n console.group(name);\n const result = fn();\n if (result instanceof Promise) {\n return result.finally(() => {\n console.groupEnd();\n }) as Result extends Promise<infer V> ? Promise<V> : never;\n } else {\n console.groupEnd();\n return result as Result extends Promise<infer V>\n ? Promise<V>\n : Awaited<T>;\n }\n }\n }\n\n separator(): void {\n console.log();\n }\n}\n\nexport class LoggerCLIString extends LoggerCLI {\n constructor(\n key: string,\n {\n displayName,\n handlers,\n processors,\n json = false,\n noColor = false,\n }: LoggerCLIOptions = {},\n ) {\n super(key, { displayName, handlers, processors, json, noColor });\n }\n}\n","import { Logger } from \"nightingale-logger\";\n\nexport { Logger } from \"nightingale-logger\";\nexport { Level, Level as levels } from \"nightingale-levels\";\nexport { configure, addConfig } from \"./config.ts\";\nexport * from \"./formatter-utils/index.ts\";\nexport { createFindDebugLevel } from \"./debug/debug.ts\";\nexport { RawFormatter } from \"./formatters/RawFormatter.ts\";\nexport { MarkdownFormatter } from \"./formatters/MarkdownFormatter.ts\";\nexport { JSONFormatter } from \"./formatters/JSONFormatter.ts\";\nexport { ANSIFormatter } from \"./formatters/ANSIFormatter.ts\";\nexport { HTMLFormatter } from \"./formatters/HTMLFormatter.ts\";\nexport { BrowserConsoleFormatter } from \"./formatters/BrowserConsoleFormatter.ts\";\nexport { consoleOutput } from \"./outputs/consoleOutput.ts\";\nexport { StringHandler } from \"./handlers/StringHandler.ts\";\nexport { BrowserConsoleHandler } from \"./handlers/BrowserConsoleHandler.ts\";\nexport { ConsoleHandler } from \"./handlers/ConsoleHandler.ts\";\nexport { ConsoleCLIHandler } from \"./handlers/ConsoleCLIHandler.ts\";\nexport { LoggerCLI } from \"./loggers/LoggerCLI.ts\";\nexport { formatStyles } from \"./formatter-utils/formatStyles.ts\";\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n \"nightingale:listenUnhandledErrors\",\n \"UnhandledErrors\",\n ),\n): void {\n process.on(\"uncaughtException\", (error) => {\n logger.error(error, {\n unhandled: true,\n type: \"uncaughtException\",\n });\n });\n process.on(\"unhandledRejection\", (error) => {\n logger.error(error as Error, {\n unhandled: true,\n type: \"unhandledRejection\",\n });\n });\n}\n"],"names":["style","findDebugLevel","createHandle","Level"],"mappings":"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"}
1
+ {"version":3,"file":"index-react-native.es.js","sources":["../src/config.ts","../src/formatter-utils/levelToStyles.ts","../src/formatter-utils/levelToSymbol.ts","../src/formatter-utils/styleToHexColor.ts","../src/formatter-utils/styleToHtmlStyle.ts","../src/formatter-utils/formatStyles.ts","../src/formatter-utils/formatObject.ts","../src/formatter-utils/formatRecordToString.ts","../src/debug/debug.ts","../src/formatters/RawFormatter.ts","../src/formatters/MarkdownFormatter.ts","../src/formatters/JSONFormatter.ts","../src/formatters/ANSIFormatter.ts","../src/formatters/HTMLFormatter.ts","../src/formatters/BrowserConsoleFormatter.ts","../src/outputs/consoleOutput.ts","../src/handlers/StringHandler.ts","../src/debug/getDebugString.ts","../src/handlers/BrowserConsoleHandler.ts","../src/handlers/defaultFormatter.ts","../src/handlers/ConsoleHandler.ts","../src/outputs/cliConsoleOutput.ts","../src/handlers/ConsoleCLIHandler.ts","../src/loggers/LoggerCLI.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from \"nightingale-logger\";\nimport type { Handler, Level } from \"nightingale-types\";\n\nconst globalOrWindow: typeof global =\n typeof global !== \"undefined\" ? global : window;\n\nif (\n process.env.NODE_ENV !== \"production\" &&\n globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS\n) {\n throw new Error(\"nightingale: update all to ^5.0.0\");\n}\n\nif (!globalOrWindow.__NIGHTINGALE_CONFIG) {\n globalOrWindow.__NIGHTINGALE_CONFIG = [];\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE = new Map<\n string,\n ComputedConfigForKey\n >();\n globalOrWindow.__NIGHTINGALE_CONFIG_DEFAULT = {\n handlers: [],\n processors: [],\n };\n}\n\nfunction clearCache(): void {\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE.clear();\n}\n\nfunction handleConfig(config: Config): Config {\n if (config.keys) {\n if (config.pattern) {\n throw new Error(\"Cannot have key and pattern for the same config\");\n }\n if (config.key) {\n throw new Error(\"Cannot have key and keys for the same config\");\n }\n } else if (config.key) {\n if (config.pattern) {\n throw new Error(\"Cannot have key and pattern for the same config\");\n }\n config.keys = [config.key];\n delete config.key;\n }\n\n if (config.handler) {\n if (config.handlers) {\n throw new Error(\"Cannot have handler and handlers for the same config\");\n }\n config.handlers = [config.handler];\n delete config.handler;\n }\n\n if (config.processor) {\n if (config.processors) {\n throw new Error(\n \"Cannot have processors and processors for the same config\",\n );\n }\n config.processors = [config.processor];\n delete config.processor;\n }\n\n return config;\n}\n\nexport function configure(config: Config[]): void {\n if (globalOrWindow.__NIGHTINGALE_CONFIG.length > 0) {\n // eslint-disable-next-line no-console\n console.log(\"nightingale: warning: config overridden\");\n }\n\n clearCache();\n globalOrWindow.__NIGHTINGALE_CONFIG = config.map(handleConfig);\n}\n\nexport function addConfig(config: Config, unshift = false): void {\n config = handleConfig(config);\n globalOrWindow.__NIGHTINGALE_CONFIG[unshift ? \"unshift\" : \"push\"](config);\n clearCache();\n}\n\nconst configIsForKey = (key: string) => (config: Config) => {\n if (config.keys) return config.keys.includes(key);\n if (config.pattern) return config.pattern.test(key);\n return true;\n};\n\nglobalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (\n key: string,\n): ComputedConfigForKey => {\n const globalCache = globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE;\n\n const existingCache = globalCache.get(key);\n\n if (existingCache) {\n return existingCache;\n }\n\n const loggerConfig: ComputedConfigForKey = {\n handlers: [],\n processors: [],\n };\n\n globalOrWindow.__NIGHTINGALE_CONFIG\n .filter(configIsForKey(key))\n .some((config: Config) => {\n if (config.handlers) loggerConfig.handlers.push(...config.handlers);\n if (config.processors) loggerConfig.processors.push(...config.processors);\n return config.stop;\n });\n\n globalCache.set(key, loggerConfig);\n return loggerConfig;\n};\n\nif (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler: Handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n","import { Level } from \"nightingale-levels\";\n\nexport type LevelToStyles = Readonly<Record<number, string[]>>;\n\nexport const levelToStyles: LevelToStyles = {\n [Level.TRACE]: [\"gray\"],\n [Level.DEBUG]: [\"gray\"],\n // [Level.INFO]: ['gray'],\n [Level.WARN]: [\"yellow\"],\n [Level.ERROR]: [\"red\", \"bold\"],\n [Level.CRITICAL]: [\"red\", \"bold\"],\n [Level.FATAL]: [\"bgRed\", \"white\"],\n [Level.EMERGENCY]: [\"bgRed\", \"white\"],\n};\n","import { Level } from \"nightingale-levels\";\n\nexport type LevelToSymbol = Readonly<Record<number, string>>;\n\nexport const levelToSymbol: LevelToSymbol = {\n [Level.TRACE]: \"•\",\n [Level.DEBUG]: \"•\",\n [Level.INFO]: \"→\",\n [Level.WARN]: \"⚠\",\n [Level.ERROR]: \"✖\",\n [Level.CRITICAL]: \"!\",\n [Level.FATAL]: \"‼\",\n [Level.EMERGENCY]: \"‼\",\n};\n","export const styleToHexColor = {\n orange: \"ff5f00\",\n} as const;\n\nexport type StyleToHexColor = Readonly<\n Record<keyof typeof styleToHexColor, string>\n>;\n","import { styleToHexColor } from \"./styleToHexColor.ts\";\n\nexport interface HtmlStyle {\n readonly open: string;\n readonly close: string;\n}\n\nexport const styleToHtmlStyleThemeLight = {\n // text style\n bold: { open: \"font-weight: bold\", close: \"font-weight: normal\" },\n italic: { open: \"font-style: italic\", close: \"font-style: normal\" },\n underline: {\n open: \"text-decoration: underline\",\n close: \"text-decoration: none\",\n },\n inverse: {\n open: \"unicode-bidi: bidi-override; direction: rtl\",\n close: \"unicode-bidi: normal; direction: ltr\",\n },\n strikethrough: {\n open: \"text-decoration: line-through\",\n close: \"text-decoration: none\",\n },\n\n black: { open: \"color: black\", close: \"color: currentcolor\" },\n red: { open: \"color: #ff0020\", close: \"color: currentcolor\" },\n green: { open: \"color: #00b317\", close: \"color: currentcolor\" },\n yellow: { open: \"color: #ffcc00\", close: \"color: currentcolor\" },\n blue: { open: \"color: #00a0ff\", close: \"color: currentcolor\" },\n magenta: { open: \"color: #ff00a0\", close: \"color: currentcolor\" },\n cyan: { open: \"color: #00cfd8\", close: \"color: currentcolor\" },\n white: { open: \"color: white\", close: \"color: currentcolor\" },\n gray: { open: \"color: gray\", close: \"color: currentcolor\" },\n dim: { open: \"color: #808080\", close: \"color: currentcolor\" },\n\n bgBlack: { open: \"background: black\", close: \"background: initial\" },\n bgRed: { open: \"background: #ff0020\", close: \"background: initial\" },\n bgGreen: { open: \"background: #00b317\", close: \"background: initial\" },\n bgYellow: { open: \"background: #ffcc00\", close: \"background: initial\" },\n bgBlue: { open: \"background: #00a0ff\", close: \"background: initial\" },\n bgMagenta: { open: \"background: #ff00a0\", close: \"background: initial\" },\n bgCyan: { open: \"background: #00cfd8\", close: \"background: initial\" },\n bgWhite: { open: \"background: white\", close: \"background: initial\" },\n\n orange: {\n open: `color: #${styleToHexColor.orange}`,\n close: \"color: currentcolor\",\n },\n} as const;\n\nexport type StyleToHtmlStyle = Readonly<\n Record<keyof typeof styleToHtmlStyleThemeLight, HtmlStyle>\n>;\n\nexport const styleToHtmlStyleThemeDark: StyleToHtmlStyle = {\n ...styleToHtmlStyleThemeLight,\n black: styleToHtmlStyleThemeLight.white,\n bgBlack: styleToHtmlStyleThemeLight.bgWhite,\n white: styleToHtmlStyleThemeLight.black,\n bgWhite: styleToHtmlStyleThemeLight.bgBlack,\n gray: { open: \"color: lightgray\", close: \"color: currentcolor\" },\n};\n","/* eslint sort-keys: error */\n\nexport const formatStyles = {\n bigint: [\"yellow\", \"bold\"],\n boolean: [\"green\"],\n date: [\"magenta\"],\n error: [\"red\"],\n function: [\"blue\"],\n null: [\"bold\"],\n number: [\"yellow\"],\n regexp: [\"magenta\"],\n string: [\"orange\"],\n symbol: [\"magenta\"],\n undefined: [\"dim\"],\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\nimport { formatStyles } from \"./formatStyles.ts\";\n\nexport interface FormatObjectOptions {\n padding?: string;\n maxDepth?: number;\n}\n\nexport type StyleFn = (styles: Styles, value: string) => string;\n\nexport type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;\n\nconst noStyleFn: StyleFn = (styles: Styles, value: string): string => value;\n\ninterface InternalFormatParams {\n padding: string;\n depth: number;\n maxDepth: number;\n objects: Set<unknown>;\n}\n\ninterface FormattedKey {\n stringKey: string;\n formattedKey: string;\n}\n\ntype FormatKey<Key> = (\n key: Key,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n) => FormattedKey;\n\ninterface Value<Key> {\n key: Key;\n value: unknown;\n}\n\ninterface FormattedValue {\n stringValue: string;\n formattedValue: string;\n}\n\ntype Values<Key> = Value<Key>[];\n\ninterface InternalFormatIteratorParams<Key> {\n prefix: string;\n suffix: string;\n formatKey: FormatKey<Key>;\n prefixSuffixSpace?: string;\n}\n\nfunction tryStringify(arg: unknown): string {\n try {\n return JSON.stringify(arg).replace(/\\\\n/g, \"\\n\");\n } catch {\n return \"[Circular]\";\n }\n}\n\nconst sameRawFormattedValue = (value: string): FormattedValue => ({\n stringValue: value,\n formattedValue: value,\n});\n\nconst numericSeparator = \"_\";\n\nconst formatIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = integerAsString.length;\n const start = integerAsString.startsWith(\"-\") ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n result = `${numericSeparator}${integerAsString.slice(i - 3, i)}${result}`;\n }\n return i === integerAsString.length\n ? integerAsString\n : `${integerAsString.slice(0, i)}${result}`;\n};\n\nconst formatDecimalIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = 0;\n for (; i < integerAsString.length - 3; i += 3) {\n result += `${integerAsString.slice(i, i + 3)}${numericSeparator}`;\n }\n return i === 0 ? integerAsString : `${result}${integerAsString.slice(i)}`;\n};\n\nconst formatNumberValue = (value: number): string => {\n if (Number.isNaN(value)) {\n return \"NaN\";\n }\n if (value === Number.POSITIVE_INFINITY) {\n return \"+Infinity\";\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return \"-Infinity\";\n }\n if (value === Number.EPSILON) {\n return \"Epsilon\";\n }\n if (Object.is(value, -0)) {\n return \"-0\";\n }\n const integer = Math.trunc(value);\n const integerAsString = integer.toString();\n if (integer === value) {\n if (integerAsString.includes(\"e\")) {\n return integerAsString;\n }\n return formatIntegerValue(integerAsString);\n } else {\n return `${formatIntegerValue(integerAsString)}.${formatDecimalIntegerValue(String(value).slice(integerAsString.length + 1))}`;\n }\n};\n\nfunction internalFormatValue(\n value: unknown,\n styleFn: StyleFn,\n styles: Styles,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n const typeofValue = typeof value;\n\n if (!styles) {\n if (value === null) {\n styles = [\"bold\"];\n } else {\n switch (typeofValue) {\n case \"bigint\":\n styles = formatStyles.bigint;\n break;\n case \"boolean\":\n styles = formatStyles.boolean;\n break;\n case \"undefined\":\n styles = formatStyles.undefined;\n break;\n case \"number\":\n styles = formatStyles.number;\n break;\n case \"string\":\n styles = formatStyles.string;\n break;\n case \"symbol\":\n styles = formatStyles.symbol;\n break;\n case \"object\":\n if (value instanceof Date) {\n styles = formatStyles.date;\n }\n if (value instanceof RegExp) {\n styles = formatStyles.regexp;\n }\n if (value instanceof Error) {\n styles = formatStyles.error;\n }\n break;\n case \"function\":\n styles = formatStyles.function;\n break;\n default:\n break;\n }\n }\n }\n\n let stringValue: string;\n if (value === null) {\n stringValue = \"null\";\n } else if (value === undefined) {\n stringValue = \"undefined\";\n } else if (typeofValue === \"number\") {\n stringValue = formatNumberValue(value as number);\n } else if (typeofValue === \"boolean\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n stringValue = (value as any).toString() as string;\n } else if ((value as () => unknown).constructor === Object) {\n if (depth >= maxDepth) {\n stringValue = \"{Object...}\";\n } else {\n return internalFormatObject(\n value as Record<string, unknown>,\n styleFn,\n undefined,\n {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n },\n );\n }\n } else if (Array.isArray(value)) {\n if (depth >= maxDepth) {\n stringValue = \"[Array...]\";\n } else {\n return internalFormatArray(value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof Error) {\n const stack = value.stack;\n stringValue =\n stack?.startsWith(value.message) ||\n stack?.startsWith(`${value.name}: ${value.message}`)\n ? stack\n : `${value.message}\\n${stack || \"\"}`;\n } else if (value instanceof Map) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatMap(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (typeofValue === \"bigint\") {\n stringValue = `[BigInt: ${(value as bigint).toString()}]`;\n } else if (typeofValue === \"symbol\") {\n stringValue = (value as symbol).toString();\n } else if (value instanceof Set) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatSet(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof WeakMap) {\n stringValue = \"{WeakMap...}\";\n } else if (value instanceof WeakSet) {\n stringValue = \"{WeakSet...}\";\n } else if (value instanceof Date) {\n stringValue = `[Date: ${value.toISOString()}]`;\n } else if (value instanceof RegExp) {\n stringValue = `[RegExp: ${value.toString()}]`;\n } else if (typeof value === \"function\") {\n stringValue = `[Function: ${value.name}]`;\n } else {\n stringValue = tryStringify(value);\n }\n\n const formattedValue = styleFn(styles, stringValue);\n\n return {\n stringValue,\n formattedValue,\n };\n}\n\nconst separator = \",\";\n\nconst internalFormatKey: FormatKey<string> = (\n key: string,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return {\n stringKey: `${key}: `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${key}:`)} `,\n };\n};\n\nconst internalNoKey: FormatKey<undefined> = (\n key: string | undefined,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return { stringKey: \"\", formattedKey: \"\" };\n};\n\nconst internalFormatMapKey: FormatKey<unknown> = (\n key: unknown,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n const { stringValue, formattedValue } = internalFormatValue(\n key,\n noStyleFn,\n undefined,\n internalFormatParams,\n );\n return {\n stringKey: `${stringValue} => `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${formattedValue}:`)} `,\n };\n};\n\nconst internalFormatIterator = <Key>(\n values: Values<Key>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n {\n prefix,\n suffix,\n prefixSuffixSpace = \" \",\n formatKey,\n }: InternalFormatIteratorParams<Key>,\n): FormattedValue => {\n let breakLine = false;\n const formattedSeparator = (): string => styleFn([\"gray\"], separator);\n\n const valuesMaxIndex = values.length - 1;\n const formattedValues: FormattedValue[] = values.map(\n ({ key, value }, index: number) => {\n const nextDepth = depth + 1;\n const internalFormatParams = {\n padding,\n depth: nextDepth,\n maxDepth,\n objects,\n };\n\n // key must be formatted before value (browser-formatter needs order)\n const { stringKey, formattedKey } = formatKey(\n key,\n styleFn,\n internalFormatParams,\n );\n\n let { stringValue, formattedValue } = internalFormatValue(\n value,\n styleFn,\n key && objectStyles\n ? objectStyles[key as unknown as string]\n : undefined,\n internalFormatParams,\n );\n\n if (\n stringValue &&\n (stringValue.length > 80 || stringValue.includes(\"\\n\"))\n ) {\n breakLine = true;\n stringValue = stringValue.replace(/\\n/g, `\\n${padding}`);\n formattedValue = formattedValue.replace(/\\n/g, `\\n${padding}`);\n }\n\n return {\n stringValue:\n stringKey + stringValue + (index === valuesMaxIndex ? \"\" : separator),\n formattedValue:\n formattedKey +\n formattedValue +\n (index === valuesMaxIndex ? \"\" : formattedSeparator()),\n // note: we need to format the separator for each values for browser-formatter\n };\n },\n );\n\n return {\n stringValue:\n prefix +\n formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.stringValue}`\n : (fv) => fv.stringValue,\n )\n .join(breakLine ? \"\\n\" : \" \") +\n suffix,\n formattedValue: `${prefix}${\n breakLine ? \"\" : prefixSuffixSpace\n }${formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.formattedValue}`\n : (v) => v.formattedValue,\n )\n .join(breakLine ? \"\" : \" \")}${\n breakLine ? \",\\n\" : prefixSuffixSpace\n }${suffix}`,\n };\n};\n\nfunction internalFormatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(object)) {\n return sameRawFormattedValue(\"{Circular Object}\");\n }\n\n const keys: string[] = Object.keys(object);\n if (keys.length === 0) {\n return sameRawFormattedValue(\"{}\");\n }\n\n objects.add(object);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: object[key] })),\n styleFn,\n objectStyles,\n { padding, depth, maxDepth, objects },\n { prefix: \"{\", suffix: \"}\", formatKey: internalFormatKey },\n );\n\n objects.delete(object);\n\n return result;\n}\n\nfunction internalFormatMap(\n name: string,\n map: Map<unknown, unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(map)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const keys = [...map.keys()];\n if (keys.length === 0) {\n return sameRawFormattedValue(`${name} {}`);\n }\n\n objects.add(map);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: map.get(key) })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} {`, suffix: \"}\", formatKey: internalFormatMapKey },\n );\n\n objects.delete(map);\n\n return result;\n}\n\nfunction internalFormatArray(\n array: unknown[],\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(array)) {\n return sameRawFormattedValue(\"{Circular Array}\");\n }\n\n if (array.length === 0) {\n return sameRawFormattedValue(\"[]\");\n }\n\n objects.add(array);\n\n const result = internalFormatIterator(\n array.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n {\n prefix: \"[\",\n suffix: \"]\",\n prefixSuffixSpace: \"\",\n formatKey: internalNoKey,\n },\n );\n\n objects.delete(array);\n\n return result;\n}\n\nfunction internalFormatSet(\n name: string,\n set: Set<unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(set)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const values = [...set.values()];\n if (values.length === 0) {\n return sameRawFormattedValue(`${name} []`);\n }\n\n objects.add(set);\n\n const result = internalFormatIterator(\n values.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} [`, suffix: \"]\", formatKey: internalNoKey },\n );\n\n objects.delete(set);\n\n return result;\n}\n\nexport function formatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn = noStyleFn,\n objectStyles?: ObjectStyles,\n { padding = \" \", maxDepth = 10 }: FormatObjectOptions = {},\n): string {\n const { formattedValue: result } = internalFormatObject(\n object,\n styleFn,\n objectStyles,\n {\n padding,\n maxDepth,\n depth: 0,\n objects: new Set(),\n },\n );\n\n if (result === \"{}\") {\n return \"\";\n }\n\n return result;\n}\n","import type { LogRecord, Metadata } from \"nightingale-types\";\nimport type { ObjectStyles, StyleFn } from \"./formatObject.ts\";\nimport { formatObject } from \"./formatObject.ts\";\nimport { levelToStyles } from \"./levelToStyles.ts\";\nimport { levelToSymbol } from \"./levelToSymbol.ts\";\n\nexport function formatRecordToString<T extends Metadata>(\n record: LogRecord<T>,\n style: StyleFn,\n): [string, ...string[]] {\n const parts: string[] = [];\n\n if (record.displayName) {\n parts.push(style([\"dim\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"dim\"], record.key));\n }\n\n if (record.datetime) {\n parts.push(\n style([\"gray\", \"bold\"], record.datetime.toTimeString().split(\" \", 2)[0]!),\n );\n /* new Date().toFormat('HH24:MI:SS') */\n }\n\n let message: string = record.symbol || levelToSymbol[record.level] || \"\";\n const styles = record.styles || levelToStyles[record.level];\n\n if (record.message) {\n if (message) {\n message += ` ${record.message}`;\n } else {\n message = record.message;\n }\n }\n\n if (message) {\n if (styles) {\n message = style(styles, message);\n }\n parts.push(message);\n }\n\n const formatRecordObject = (\n key: string,\n object: Record<string, unknown> | undefined,\n objectStyles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, objectStyles);\n\n if (!stringObject) {\n return;\n }\n\n parts.push(stringObject);\n };\n\n formatRecordObject(\"metadata\", record.metadata, record.metadataStyles);\n formatRecordObject(\"extra\", record.extra, undefined);\n formatRecordObject(\"context\", record.context, undefined);\n\n return [parts.join(\" \")];\n}\n","/* eslint-disable complexity */\nimport { Level } from \"nightingale-levels\";\n\nconst specialRegexpChars = /[$()+.?[\\\\\\]^{|}]/;\n\ntype TestFunction = (string: string) => boolean;\nexport type DebugValueType = RegExp | string[] | string;\n\nconst createTestFunctionFromRegexp =\n (regexp: RegExp): TestFunction =>\n (string: string) =>\n regexp.test(string);\n\nconst createTestFunctionFromRegexpString = (value: string): TestFunction => {\n if (!value.endsWith(\"/\")) throw new Error(\"Invalid RegExp DEBUG value\");\n return createTestFunctionFromRegexp(new RegExp(value.slice(1, -1)));\n};\n\nconst createTestFunctionFromValue = (value: string): TestFunction => {\n if (value.endsWith(\":*\")) {\n value = value.slice(0, -2);\n return (string: string) => string.startsWith(value);\n }\n\n return (string: string) => string === value;\n};\n\nexport type FindDebugLevel = (minLevel: Level, key: string) => Level;\n\nexport function createFindDebugLevel(\n debugValue?: DebugValueType,\n): FindDebugLevel {\n let isWildcard = false;\n const debugValues: TestFunction[] = [];\n const skips: TestFunction[] = [];\n\n if (!Array.isArray(debugValue)) {\n if (debugValue instanceof RegExp) {\n debugValues.push(createTestFunctionFromRegexp(debugValue));\n debugValue = undefined;\n } else if (debugValue) {\n debugValue = debugValue.trim();\n\n if (debugValue.startsWith(\"/\")) {\n debugValues.push(createTestFunctionFromRegexpString(debugValue));\n debugValue = undefined;\n } else {\n debugValue = debugValue.split(/[\\s,]+/);\n }\n }\n }\n\n if (debugValue) {\n (debugValue as string[]).forEach((value) => {\n if (specialRegexpChars.test(value)) {\n throw new Error(\n `Invalid debug value: \"${value}\" (contains special chars)`,\n );\n }\n\n if (!value) return;\n\n if (value === \"*\") {\n isWildcard = true;\n return;\n }\n\n if (value.startsWith(\"-\")) {\n skips.push(createTestFunctionFromValue(value.slice(1)));\n } else if (!isWildcard) {\n debugValues.push(createTestFunctionFromValue(value));\n }\n });\n }\n\n if (isWildcard) {\n if (skips.length === 0) {\n return () => Level.ALL;\n } else {\n return (minLevel: Level, key: string) =>\n skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n }\n\n if (debugValues.length === 0) {\n return (minLevel: Level) => minLevel;\n }\n\n return (minLevel: Level, key: string) => {\n if (minLevel === Level.ALL || !key) {\n return minLevel;\n }\n\n if (debugValues.some((dv) => dv(key))) {\n return skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n\n return minLevel;\n };\n}\n","import type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { formatRecordToString } from \"../formatter-utils/index.ts\";\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/index.ts\";\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((part, styleName) => {\n switch (styleName) {\n case \"bold\":\n return `*${part}*`;\n case \"italic\":\n return `_${part}_`;\n case \"strikethrough\":\n return `~${part}~`;\n\n // no default\n }\n\n return part;\n }, string);\n}\n\nexport const MarkdownFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { NightingaleFormatter } from \"../formatter-utils\";\n\nfunction map2object(map: Map<unknown, unknown>): unknown {\n const object: Record<string, unknown> = {};\n\n map.forEach((value, key) => {\n if (typeof key === \"object\") {\n // ignore key\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n object[String(key)] = value;\n });\n\n return object;\n}\n\nfunction stringify(value: unknown, space?: number | string): string {\n return JSON.stringify(\n value,\n (key, objectValue) => {\n if (objectValue instanceof Map) {\n return map2object(objectValue);\n }\n if (objectValue instanceof Error) {\n return {\n message: objectValue.message,\n stack: objectValue.stack,\n };\n }\n\n return objectValue as unknown;\n },\n space,\n );\n}\n\nexport const JSONFormatter: NightingaleFormatter = {\n format(record) {\n return [\n stringify({\n key: record.key,\n level: record.level,\n datetime: record.datetime,\n message: record.message,\n metadata: record.metadata,\n extra: record.extra,\n }),\n ];\n },\n};\n\nexport const JSONCLIFormatter: NightingaleFormatter = {\n format(record) {\n return [\n stringify({\n key: record.key,\n time: record.datetime.toTimeString().split(\" \", 2)[0]!,\n message: record.message,\n ...record.metadata,\n ...record.extra,\n }),\n ];\n },\n};\n","import ansi from \"ansi-styles\";\nimport type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"nightingale\";\nimport {\n formatRecordToString,\n styleToHexColor,\n} from \"../formatter-utils/index.ts\";\n\nexport type { Styles } from \"nightingale-types\";\n\ninterface CodePair {\n open: string;\n close: string;\n}\n\ntype AnsiStyles = Record<string, CodePair | undefined>;\n\nconst ansiStyles: AnsiStyles = {\n black: ansi.black,\n red: ansi.red,\n green: ansi.green,\n yellow: ansi.yellow,\n blue: ansi.blue,\n magenta: ansi.magenta,\n cyan: ansi.cyan,\n white: ansi.white,\n gray: ansi.gray,\n dim: ansi.dim,\n\n bgBlack: ansi.bgBlack,\n bgRed: ansi.bgRed,\n bgGreen: ansi.bgGreen,\n bgYellow: ansi.bgYellow,\n bgBlue: ansi.bgBlue,\n bgMagenta: ansi.bgMagenta,\n bgCyan: ansi.bgCyan,\n bgWhite: ansi.bgWhite,\n\n bold: ansi.bold,\n underline: ansi.underline,\n\n // http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html\n orange: {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor.orange)),\n close: ansi.color.close,\n },\n};\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((styledString: string, styleName: string) => {\n const codePair: CodePair | undefined = ansiStyles[styleName];\n\n if (!codePair) {\n throw new Error(`Unknown style: ${styleName}`);\n }\n\n return codePair.open + styledString + codePair.close;\n }, string);\n}\n\nexport const ANSIFormatter: NightingaleFormatter = {\n format: (record) => formatRecordToString(record, style),\n};\n","import type { Styles } from \"nightingale-types\";\nimport type {\n NightingaleFormatter,\n StyleToHtmlStyle,\n} from \"../formatter-utils\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils/index.ts\";\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 { LogRecord, Metadata, Styles } from \"nightingale-types\";\nimport type { StyleToHtmlStyle } from \"nightingale\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeDark,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils/index.ts\";\n\nexport const style =\n (styleToHtmlStyle: StyleToHtmlStyle, args: string[]) =>\n (styles: Styles, string: string): string => {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n const htmlStyles = styles.map(\n (styleName) => styleToHtmlStyle[styleName as keyof StyleToHtmlStyle],\n );\n\n args.push(\n htmlStyles.map((s) => s.open).join(\"; \"),\n htmlStyles.map((s) => s.close).join(\"; \"),\n );\n return `%c${string}%c`;\n };\n\nexport class BrowserConsoleFormatter implements NightingaleFormatter {\n styleToHtmlStyle: StyleToHtmlStyle;\n constructor(theme: \"dark\" | \"light\" = \"light\") {\n this.styleToHtmlStyle =\n theme === \"dark\" ? styleToHtmlStyleThemeDark : styleToHtmlStyleThemeLight;\n }\n\n format<T extends Metadata>(record: LogRecord<T>): [string, ...string[]] {\n const args: string[] = [];\n const string = formatRecordToString(\n record,\n style(this.styleToHtmlStyle, args),\n )[0];\n return [string, ...args];\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\n\nexport function consoleOutput<T extends Metadata>(\n param: [string, ...string[]],\n record: LogRecord<T>,\n): void {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](...param);\n}\n","/* eslint-disable prefer-template */\nimport type { Handler, Level, LogRecord, Metadata } from \"nightingale-types\";\nimport { RawFormatter } from \"../formatters/RawFormatter.ts\";\n\nexport class StringHandler implements Handler {\n readonly minLevel: Level;\n\n private _buffer = \"\";\n\n constructor(minLevel: Level) {\n this.minLevel = minLevel;\n }\n\n get string(): string {\n return this._buffer;\n }\n\n handle<T extends Metadata>(record: LogRecord<T>): void {\n this._buffer += RawFormatter.format(record)[0] + \"\\n\";\n }\n}\n","export function getDebugString(): string {\n return \"\";\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.ts\";\nimport { getDebugString } from \"../debug/getDebugString.ts\";\nimport { BrowserConsoleFormatter } from \"../formatters/BrowserConsoleFormatter.ts\";\nimport { consoleOutput } from \"../outputs/consoleOutput.ts\";\n\n// debug string can change any time (localStorage), so we need a new object each time.\nconst findDebugLevel = (minLevel: Level, key: string): Level =>\n createFindDebugLevel(getDebugString())(minLevel, key);\n\ntype Theme = \"dark\" | \"light\";\n\nconst getDefaultTheme = (): Theme => {\n try {\n const configInLocalStorage = localStorage.getItem(\"NIGHTINGALE_THEME\");\n if (configInLocalStorage && configInLocalStorage === \"dark\") {\n return configInLocalStorage;\n }\n } catch {}\n return \"light\";\n};\n\nconst createHandler = (theme: Theme = getDefaultTheme()): Handle => {\n const browserConsoleFormatter = new BrowserConsoleFormatter(theme);\n return <T extends Metadata>(record: LogRecord<T>) => {\n consoleOutput(browserConsoleFormatter.format(record), record);\n };\n};\n\nexport interface BrowserConsoleHandlerOptions {\n theme?: Theme;\n}\n\nexport class BrowserConsoleHandler implements Handler {\n minLevel: Level = 0;\n\n handle: Handle;\n\n isHandling: IsHandling;\n\n constructor(minLevel: Level, options: BrowserConsoleHandlerOptions = {}) {\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n\n this.handle = createHandler(options.theme);\n }\n}\n","import { ANSIFormatter } from \"../formatters/ANSIFormatter.ts\";\n\nexport const defaultFormatter = ANSIFormatter.format;\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug.ts\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { consoleOutput } from \"../outputs/consoleOutput.ts\";\nimport { defaultFormatter } from \"./defaultFormatter.ts\";\n\nconst createHandle = (\n formatter = defaultFormatter,\n output = consoleOutput,\n): Handle => {\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleHandlerOptions {\n formatter?: NightingaleFormatter[\"format\"];\n output?: <T extends Metadata>(\n param: string[] | string,\n record: LogRecord<T>,\n ) => void;\n // compat with nightingale-app-console, not used yet\n theme?: \"dark\" | \"light\";\n}\n\nexport class ConsoleHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options.formatter, options.output);\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\n\nexport function cliConsoleOutput<T extends Metadata>(\n param: [string, ...string[]],\n record: LogRecord<T>,\n): void {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](...param);\n}\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug.ts\";\nimport { ANSIFormatter } from \"../formatters/ANSIFormatter.ts\";\nimport { JSONCLIFormatter } from \"../formatters/JSONFormatter.ts\";\nimport { RawFormatter } from \"../formatters/RawFormatter.ts\";\nimport { cliConsoleOutput } from \"../outputs/cliConsoleOutput.ts\";\nimport { consoleOutput } from \"../outputs/consoleOutput.ts\";\n\nconst createHandle = ({\n json,\n noColor = process.env.NO_COLOR === \"1\" || process.env.NO_COLOR === \"true\",\n}: ConsoleCLIHandlerOptions): Handle => {\n const formatter = (() => {\n if (json) return JSONCLIFormatter.format;\n if (noColor) return RawFormatter.format;\n return ANSIFormatter.format;\n })();\n const output = json ? consoleOutput : cliConsoleOutput;\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleCLIHandlerOptions {\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class ConsoleCLIHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleCLIHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options);\n }\n}\n","import type { ComputedConfigForKey } from \"nightingale-logger\";\nimport { Level, Logger } from \"nightingale-logger\";\nimport type { Handler, Processor } from \"nightingale-types\";\nimport { ConsoleCLIHandler } from \"../handlers/ConsoleCLIHandler.ts\";\n\nexport interface LoggerCLIOptions {\n displayName?: string;\n processors?: Processor[];\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class LoggerCLI extends Logger {\n private handlers: Handler[];\n private processors: Processor[] = [];\n private json: boolean;\n constructor(\n key: string,\n { displayName, processors, json = false, noColor }: LoggerCLIOptions = {},\n ) {\n super(key, displayName);\n this.handlers = [new ConsoleCLIHandler(Level.INFO, { json, noColor })];\n this.processors = processors ?? [];\n this.json = json;\n }\n\n protected override getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return {\n handlers: this.handlers,\n processors: this.processors,\n };\n }\n\n logJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n level: Level = Level.INFO,\n ): void {\n if (this.json) {\n this.log(messageOrError, metadata, level);\n }\n }\n\n debugJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.debug(messageOrError, metadata);\n }\n }\n\n noticeJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.notice(messageOrError, metadata);\n }\n }\n\n infoJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.info(messageOrError, metadata);\n }\n }\n\n warnJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.warn(messageOrError, metadata);\n }\n }\n\n group<T, Result extends Awaited<T> | Promise<T>>(\n name: string,\n fn: () => Result,\n ): Result extends Promise<infer V> ? Promise<V> : Awaited<T> {\n if (this.json) {\n return fn() as Result extends Promise<infer V> ? Promise<V> : Awaited<T>;\n } else {\n console.group(name);\n const result = fn();\n if (result instanceof Promise) {\n return result.finally(() => {\n console.groupEnd();\n }) as Result extends Promise<infer V> ? Promise<V> : never;\n } else {\n console.groupEnd();\n return result as Result extends Promise<infer V>\n ? Promise<V>\n : Awaited<T>;\n }\n }\n }\n\n separator(): void {\n console.log();\n }\n}\n","import { Logger } from \"nightingale-logger\";\n\nexport { Logger } from \"nightingale-logger\";\nexport { Level, Level as levels } from \"nightingale-levels\";\nexport { configure, addConfig } from \"./config.ts\";\nexport * from \"./formatter-utils/index.ts\";\nexport { createFindDebugLevel } from \"./debug/debug.ts\";\nexport { RawFormatter } from \"./formatters/RawFormatter.ts\";\nexport { MarkdownFormatter } from \"./formatters/MarkdownFormatter.ts\";\nexport { JSONFormatter } from \"./formatters/JSONFormatter.ts\";\nexport { ANSIFormatter } from \"./formatters/ANSIFormatter.ts\";\nexport { HTMLFormatter } from \"./formatters/HTMLFormatter.ts\";\nexport { BrowserConsoleFormatter } from \"./formatters/BrowserConsoleFormatter.ts\";\nexport { consoleOutput } from \"./outputs/consoleOutput.ts\";\nexport { StringHandler } from \"./handlers/StringHandler.ts\";\nexport { BrowserConsoleHandler } from \"./handlers/BrowserConsoleHandler.ts\";\nexport { ConsoleHandler } from \"./handlers/ConsoleHandler.ts\";\nexport { ConsoleCLIHandler } from \"./handlers/ConsoleCLIHandler.ts\";\nexport { LoggerCLI } from \"./loggers/LoggerCLI.ts\";\nexport { formatStyles } from \"./formatter-utils/formatStyles.ts\";\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n \"nightingale:listenUnhandledErrors\",\n \"UnhandledErrors\",\n ),\n): void {\n process.on(\"uncaughtException\", (error) => {\n logger.error(error, {\n unhandled: true,\n type: \"uncaughtException\",\n });\n });\n process.on(\"unhandledRejection\", (error) => {\n logger.error(error as Error, {\n unhandled: true,\n type: \"unhandledRejection\",\n });\n });\n}\n"],"names":["style","findDebugLevel","createHandle","Level"],"mappings":"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"}
package/package.json CHANGED
@@ -1,27 +1,31 @@
1
1
  {
2
2
  "name": "nightingale",
3
- "version": "18.0.0",
3
+ "version": "18.2.0",
4
4
  "description": "Logger for browser and node",
5
5
  "keywords": [
6
6
  "logger"
7
7
  ],
8
- "author": "Christophe Hurpeau <christophe@hurpeau.com> (http://christophe.hurpeau.com/)",
8
+ "homepage": "https://github.com/christophehurpeau/nightingale",
9
+ "bugs": {
10
+ "url": "https://github.com/christophehurpeau/nightingale/issues"
11
+ },
9
12
  "license": "ISC",
13
+ "author": "Christophe Hurpeau <christophe@hurpeau.com> (http://christophe.hurpeau.com/)",
10
14
  "repository": {
11
15
  "type": "git",
12
16
  "url": "https://github.com/christophehurpeau/nightingale.git",
13
17
  "directory": "packages/nightingale"
14
18
  },
15
- "homepage": "https://github.com/christophehurpeau/nightingale",
19
+ "files": [
20
+ "src",
21
+ "dist"
22
+ ],
16
23
  "type": "module",
17
- "engines": {
18
- "node": ">=22.18.0"
19
- },
20
24
  "sideEffects": false,
21
25
  "main": "./dist/index-node22.mjs",
22
- "types": "./dist/definitions/index.d.ts",
23
26
  "module": "./dist/index-browser.es.js",
24
27
  "browser": "./dist/index-browser.es.js",
28
+ "types": "./dist/definitions/index.d.ts",
25
29
  "exports": {
26
30
  "./package.json": "./package.json",
27
31
  ".": {
@@ -37,20 +41,28 @@
37
41
  }
38
42
  }
39
43
  },
40
- "files": [
41
- "src",
42
- "dist"
43
- ],
44
44
  "scripts": {
45
- "build": "yarn clean:build && rollup --config rollup.config.mjs && yarn run build:definitions",
45
+ "build": "yarn run clean:build && rollup --config rollup.config.mjs && yarn run build:definitions",
46
46
  "build:definitions": "tsc -p tsconfig.json",
47
47
  "clean": "yarn clean:build",
48
48
  "clean:build": "pob-esbuild-clean-out dist",
49
49
  "lint": "yarn run lint:eslint",
50
- "lint:eslint": "yarn ../.. run eslint --quiet packages/nightingale",
51
- "test": "yarn ../../ run test -- packages/nightingale",
50
+ "lint:eslint": "yarn '../..' run eslint --quiet 'packages/nightingale'",
51
+ "test": "yarn '../..' run test -- 'packages/nightingale'",
52
+ "tsc": "tsc",
52
53
  "watch": "yarn clean:build && rollup --config rollup.config.mjs --watch"
53
54
  },
55
+ "dependencies": {
56
+ "@types/node": ">=22.0.0",
57
+ "ansi-styles": "^6.2.3",
58
+ "nightingale-levels": "18.2.0",
59
+ "nightingale-logger": "18.2.0",
60
+ "nightingale-types": "18.2.0"
61
+ },
62
+ "devDependencies": {
63
+ "@pob/rollup-esbuild": "9.1.1",
64
+ "typescript": "6.0.3"
65
+ },
54
66
  "browserslist": {
55
67
  "production": [
56
68
  "defaults",
@@ -60,6 +72,9 @@
60
72
  "not ios_saf < 10"
61
73
  ]
62
74
  },
75
+ "engines": {
76
+ "node": ">=22.18.0"
77
+ },
63
78
  "pob": {
64
79
  "bundler": "rollup-esbuild",
65
80
  "entries": [
@@ -78,17 +93,5 @@
78
93
  }
79
94
  ],
80
95
  "typescript": true
81
- },
82
- "prettier": "@pob/root/prettier-config",
83
- "dependencies": {
84
- "@types/node": ">=22.0.0",
85
- "ansi-styles": "^6.2.3",
86
- "nightingale-levels": "18.0.0",
87
- "nightingale-logger": "18.0.0",
88
- "nightingale-types": "18.0.0"
89
- },
90
- "devDependencies": {
91
- "@pob/rollup-esbuild": "7.3.2",
92
- "typescript": "5.9.3"
93
96
  }
94
97
  }
package/src/config.ts CHANGED
@@ -2,7 +2,7 @@ import type { ComputedConfigForKey, Config } from "nightingale-logger";
2
2
  import type { Handler, Level } from "nightingale-types";
3
3
 
4
4
  const globalOrWindow: typeof global =
5
- typeof global !== "undefined" ? global : (window as typeof global);
5
+ typeof global !== "undefined" ? global : window;
6
6
 
7
7
  if (
8
8
  process.env.NODE_ENV !== "production" &&
@@ -1,3 +1,4 @@
1
+ import { describe, expect, test } from "vitest";
1
2
  import { Level } from "nightingale-levels";
2
3
  import { createFindDebugLevel } from "./debug.ts";
3
4
 
@@ -1,3 +1,4 @@
1
+ import { describe, expect, test } from "vitest";
1
2
  import type { Styles } from "nightingale-types";
2
3
  import { formatObject } from "./formatObject.ts";
3
4
 
@@ -162,7 +163,7 @@ test("date", () => {
162
163
  });
163
164
 
164
165
  test("function", () => {
165
- const fn = () => {};
166
+ const fn = (): void => {};
166
167
  expect(formatObject({ a: fn }, styleFn)).toBe(
167
168
  "{ [styles:dim,bold]a:[/styles] [styles:blue][Function: fn][/styles] }",
168
169
  );
@@ -1,3 +1,4 @@
1
+ import { describe, expect, test } from "vitest";
1
2
  import {
2
3
  formatObject,
3
4
  formatRecordToString,
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable no-control-regex */
2
+ import { expect, test } from "vitest";
2
3
  import { ANSIFormatter, style } from "./ANSIFormatter.ts";
3
4
 
4
5
  test("style: blue bold color", () => {
@@ -1,6 +1,6 @@
1
1
  import ansi from "ansi-styles";
2
- import type { NightingaleFormatter } from "nightingale";
3
2
  import type { Styles } from "nightingale-types";
3
+ import type { NightingaleFormatter } from "nightingale";
4
4
  import {
5
5
  formatRecordToString,
6
6
  styleToHexColor,
@@ -1,5 +1,6 @@
1
- import type { StyleToHtmlStyle } from "nightingale";
1
+ import { expect, test } from "vitest";
2
2
  import { Level } from "nightingale-levels";
3
+ import type { StyleToHtmlStyle } from "nightingale";
3
4
  import { styleToHtmlStyleThemeLight } from "../formatter-utils/index.ts";
4
5
  import { BrowserConsoleFormatter, style } from "./BrowserConsoleFormatter.ts";
5
6
 
@@ -1,5 +1,5 @@
1
- import type { StyleToHtmlStyle } from "nightingale";
2
1
  import type { LogRecord, Metadata, Styles } from "nightingale-types";
2
+ import type { StyleToHtmlStyle } from "nightingale";
3
3
  import type { NightingaleFormatter } from "../formatter-utils";
4
4
  import {
5
5
  formatRecordToString,
@@ -1,3 +1,4 @@
1
+ import { expect, test } from "vitest";
1
2
  import { Level } from "nightingale-levels";
2
3
  import { HTMLFormatter, style } from "./HTMLFormatter.ts";
3
4
 
@@ -1,3 +1,4 @@
1
+ import { expect, test } from "vitest";
1
2
  import { Level } from "nightingale-levels";
2
3
  import { JSONFormatter } from "./JSONFormatter.ts";
3
4
 
@@ -1,3 +1,4 @@
1
+ import { expect, test } from "vitest";
1
2
  import { Level } from "nightingale-levels";
2
3
  import { MarkdownFormatter, style } from "./MarkdownFormatter.ts";
3
4
 
@@ -1,3 +1,4 @@
1
+ import { expect, test } from "vitest";
1
2
  import { Level } from "nightingale-levels";
2
3
  import { RawFormatter, style } from "./RawFormatter.ts";
3
4
 
@@ -8,7 +8,7 @@ import type {
8
8
  } from "nightingale-types";
9
9
  import { createFindDebugLevel } from "../debug/debug.ts";
10
10
  import { ANSIFormatter } from "../formatters/ANSIFormatter.ts";
11
- import { JSONFormatter } from "../formatters/JSONFormatter.ts";
11
+ import { JSONCLIFormatter } from "../formatters/JSONFormatter.ts";
12
12
  import { RawFormatter } from "../formatters/RawFormatter.ts";
13
13
  import { cliConsoleOutput } from "../outputs/cliConsoleOutput.ts";
14
14
  import { consoleOutput } from "../outputs/consoleOutput.ts";
@@ -18,7 +18,7 @@ const createHandle = ({
18
18
  noColor = process.env.NO_COLOR === "1" || process.env.NO_COLOR === "true",
19
19
  }: ConsoleCLIHandlerOptions): Handle => {
20
20
  const formatter = (() => {
21
- if (json) return JSONFormatter.format;
21
+ if (json) return JSONCLIFormatter.format;
22
22
  if (noColor) return RawFormatter.format;
23
23
  return ANSIFormatter.format;
24
24
  })();
package/src/index.test.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { expect, test } from "vitest";
1
2
  import type { ComputedConfigForKey } from "nightingale-logger";
2
3
  import { StringHandler } from "./handlers/StringHandler.ts";
3
4
  import { Level, Logger } from "./index.ts";