nightingale 18.1.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.
- package/CHANGELOG.md +17 -0
- package/README.md +0 -1
- package/dist/definitions/formatters/ANSIFormatter.d.ts +1 -1
- package/dist/definitions/formatters/ANSIFormatter.d.ts.map +1 -1
- package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts +1 -1
- package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts.map +1 -1
- package/dist/definitions/loggers/LoggerCLI.d.ts +1 -5
- package/dist/definitions/loggers/LoggerCLI.d.ts.map +1 -1
- package/dist/index-browser.es.js +15 -5
- package/dist/index-browser.es.js.map +1 -1
- package/dist/index-node22.mjs +15 -5
- package/dist/index-node22.mjs.map +1 -1
- package/dist/index-react-native.es.js +15 -5
- package/dist/index-react-native.es.js.map +1 -1
- package/package.json +29 -26
- package/src/config.ts +1 -1
- package/src/debug/debug.test.ts +1 -0
- package/src/formatter-utils/formatObject.test.ts +2 -1
- package/src/formatter-utils/index.test.ts +1 -0
- package/src/formatters/ANSIFormatter.test.ts +1 -0
- package/src/formatters/ANSIFormatter.ts +1 -1
- package/src/formatters/BrowserConsoleFormatter.test.ts +2 -1
- package/src/formatters/BrowserConsoleFormatter.ts +1 -1
- package/src/formatters/HTMLFormatter.test.ts +1 -0
- package/src/formatters/JSONFormatter.test.ts +1 -0
- package/src/formatters/MarkdownFormatter.test.ts +1 -0
- package/src/formatters/RawFormatter.test.ts +1 -0
- package/src/index.test.ts +1 -0
- package/src/loggers/LoggerCLI.test.ts +10 -13
- package/src/loggers/LoggerCLI.ts +0 -16
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [18.2.0](https://github.com/christophehurpeau/nightingale/compare/v18.1.0...v18.2.0) (2026-06-12)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* update nightingale-app-react-native package and deprecate nightingale-react-native-console
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* cleanup LoggerCLIString
|
|
15
|
+
* **deps:** update dependency @types/node to >=22.19.1 ([#1280](https://github.com/christophehurpeau/nightingale/issues/1280))
|
|
16
|
+
* **deps:** update dependency @types/node to v24.10.4 ([#1269](https://github.com/christophehurpeau/nightingale/issues/1269))
|
|
17
|
+
|
|
18
|
+
Version bump for dependency: nightingale-levels
|
|
19
|
+
Version bump for dependency: nightingale-logger
|
|
20
|
+
Version bump for dependency: nightingale-types
|
|
21
|
+
|
|
22
|
+
|
|
6
23
|
## [18.1.0](https://github.com/christophehurpeau/nightingale/compare/v18.0.0...v18.1.0) (2025-11-18)
|
|
7
24
|
|
|
8
25
|
### Features
|
package/README.md
CHANGED
|
@@ -294,7 +294,6 @@ console.log(stringHandler.string);
|
|
|
294
294
|
You can find handlers [on npm](https://www.npmjs.com/search?q=nightingale-handler)
|
|
295
295
|
|
|
296
296
|
- [SlackHandler](https://npmjs.org/package/nightingale-slack)
|
|
297
|
-
- [ReactNativeConsoleHandler](https://npmjs.org/package/nightingale-react-native-console)
|
|
298
297
|
- [WinstonAdapterHandler](https://npmjs.org/package/nightingale-winston-adapter)
|
|
299
298
|
|
|
300
299
|
### Formatter
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { NightingaleFormatter } from "nightingale";
|
|
2
1
|
import type { Styles } from "nightingale-types";
|
|
2
|
+
import type { NightingaleFormatter } from "nightingale";
|
|
3
3
|
export type { Styles } from "nightingale-types";
|
|
4
4
|
export declare function style(styles: Styles, string: string): string;
|
|
5
5
|
export declare const ANSIFormatter: NightingaleFormatter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ANSIFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatters/ANSIFormatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ANSIFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatters/ANSIFormatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAMxD,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAwChD,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAe5D;AAED,eAAO,MAAM,aAAa,EAAE,oBAE3B,CAAC"}
|
|
@@ -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
|
export declare const style: (styleToHtmlStyle: StyleToHtmlStyle, args: string[]) => (styles: Styles, string: string) => string;
|
|
5
5
|
export declare class BrowserConsoleFormatter implements NightingaleFormatter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserConsoleFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatters/BrowserConsoleFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"BrowserConsoleFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatters/BrowserConsoleFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAO/D,eAAO,MAAM,KAAK,GACf,kBAAkB,gBAAgB,EAAE,MAAM,MAAM,EAAE,MAClD,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,MAcjC,CAAC;AAEJ,qBAAa,uBAAwB,YAAW,oBAAoB;IAClE,gBAAgB,EAAE,gBAAgB,CAAC;gBACvB,KAAK,GAAE,MAAM,GAAG,OAAiB;IAK7C,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;CAQxE"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { ComputedConfigForKey } from "nightingale-logger";
|
|
2
2
|
import { Level, Logger } from "nightingale-logger";
|
|
3
|
-
import type {
|
|
3
|
+
import type { Processor } from "nightingale-types";
|
|
4
4
|
export interface LoggerCLIOptions {
|
|
5
5
|
displayName?: string;
|
|
6
|
-
handlers?: Handler[];
|
|
7
6
|
processors?: Processor[];
|
|
8
7
|
json?: boolean;
|
|
9
8
|
noColor?: boolean;
|
|
@@ -22,7 +21,4 @@ export declare class LoggerCLI extends Logger {
|
|
|
22
21
|
group<T, Result extends Awaited<T> | Promise<T>>(name: string, fn: () => Result): Result extends Promise<infer V> ? Promise<V> : Awaited<T>;
|
|
23
22
|
separator(): void;
|
|
24
23
|
}
|
|
25
|
-
export declare class LoggerCLIString extends LoggerCLI {
|
|
26
|
-
constructor(key: string, { displayName, handlers, processors, json, noColor, }?: LoggerCLIOptions);
|
|
27
|
-
}
|
|
28
24
|
//# sourceMappingURL=LoggerCLI.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoggerCLI.d.ts","sourceRoot":"","sources":["../../../src/loggers/LoggerCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"LoggerCLI.d.ts","sourceRoot":"","sources":["../../../src/loggers/LoggerCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAW,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG5D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,SAAU,SAAQ,MAAM;IACnC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,IAAI,CAAU;gBAEpB,GAAG,EAAE,MAAM,EACX,EAAE,WAAW,EAAE,UAAU,EAAE,IAAY,EAAE,OAAO,EAAE,GAAE,gBAAqB;cAQxD,wBAAwB,CACzC,WAAW,EAAE,MAAM,GAClB,oBAAoB;IAOvB,WAAW,CACT,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,GAAE,KAAkB,GACxB,IAAI;IAMP,aAAa,CACX,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,cAAc,CACZ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,YAAY,CACV,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,YAAY,CACV,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI;IAMP,KAAK,CAAC,CAAC,EAAE,MAAM,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC7C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,MAAM,GACf,MAAM,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmB5D,SAAS,IAAI,IAAI;CAGlB"}
|
package/dist/index-browser.es.js
CHANGED
|
@@ -819,6 +819,7 @@ const style = (styleToHtmlStyle, args) => (styles, string) => {
|
|
|
819
819
|
return `%c${string}%c`;
|
|
820
820
|
};
|
|
821
821
|
class BrowserConsoleFormatter {
|
|
822
|
+
styleToHtmlStyle;
|
|
822
823
|
constructor(theme = "light") {
|
|
823
824
|
this.styleToHtmlStyle = theme === "dark" ? styleToHtmlStyleThemeDark : styleToHtmlStyleThemeLight;
|
|
824
825
|
}
|
|
@@ -837,8 +838,9 @@ function consoleOutput(param, record) {
|
|
|
837
838
|
}
|
|
838
839
|
|
|
839
840
|
class StringHandler {
|
|
841
|
+
minLevel;
|
|
842
|
+
_buffer = "";
|
|
840
843
|
constructor(minLevel) {
|
|
841
|
-
this._buffer = "";
|
|
842
844
|
this.minLevel = minLevel;
|
|
843
845
|
}
|
|
844
846
|
get string() {
|
|
@@ -886,8 +888,10 @@ const createHandler = (theme = getDefaultTheme()) => {
|
|
|
886
888
|
};
|
|
887
889
|
};
|
|
888
890
|
class BrowserConsoleHandler {
|
|
891
|
+
minLevel = 0;
|
|
892
|
+
handle;
|
|
893
|
+
isHandling;
|
|
889
894
|
constructor(minLevel, options = {}) {
|
|
890
|
-
this.minLevel = 0;
|
|
891
895
|
this.isHandling = (level, key) => level >= findDebugLevel$2(minLevel, key);
|
|
892
896
|
this.handle = createHandler(options.theme);
|
|
893
897
|
}
|
|
@@ -902,8 +906,10 @@ const createHandle$1 = (formatter = defaultFormatter, output = consoleOutput) =>
|
|
|
902
906
|
};
|
|
903
907
|
const findDebugLevel$1 = createFindDebugLevel(process.env.DEBUG);
|
|
904
908
|
class ConsoleHandler {
|
|
909
|
+
minLevel = Level.ALL;
|
|
910
|
+
isHandling;
|
|
911
|
+
handle;
|
|
905
912
|
constructor(minLevel, options = {}) {
|
|
906
|
-
this.minLevel = Level.ALL;
|
|
907
913
|
this.minLevel = minLevel;
|
|
908
914
|
this.isHandling = (level, key) => level >= findDebugLevel$1(minLevel, key);
|
|
909
915
|
this.handle = createHandle$1(options.formatter, options.output);
|
|
@@ -930,8 +936,10 @@ const createHandle = ({
|
|
|
930
936
|
};
|
|
931
937
|
const findDebugLevel = createFindDebugLevel(process.env.DEBUG);
|
|
932
938
|
class ConsoleCLIHandler {
|
|
939
|
+
minLevel = Level.ALL;
|
|
940
|
+
isHandling;
|
|
941
|
+
handle;
|
|
933
942
|
constructor(minLevel, options = {}) {
|
|
934
|
-
this.minLevel = Level.ALL;
|
|
935
943
|
this.minLevel = minLevel;
|
|
936
944
|
this.isHandling = (level, key) => level >= findDebugLevel(minLevel, key);
|
|
937
945
|
this.handle = createHandle(options);
|
|
@@ -939,9 +947,11 @@ class ConsoleCLIHandler {
|
|
|
939
947
|
}
|
|
940
948
|
|
|
941
949
|
class LoggerCLI extends Logger {
|
|
950
|
+
handlers;
|
|
951
|
+
processors = [];
|
|
952
|
+
json;
|
|
942
953
|
constructor(key, { displayName, processors, json = false, noColor } = {}) {
|
|
943
954
|
super(key, displayName);
|
|
944
|
-
this.processors = [];
|
|
945
955
|
this.handlers = [new ConsoleCLIHandler(Level$1.INFO, { json, noColor })];
|
|
946
956
|
this.processors = processors ?? [];
|
|
947
957
|
this.json = json;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browser.es.js","sources":["../src/config.ts","../src/formatter-utils/levelToStyles.ts","../src/formatter-utils/levelToSymbol.ts","../src/formatter-utils/styleToHexColor.ts","../src/formatter-utils/styleToHtmlStyle.ts","../src/formatter-utils/formatStyles.ts","../src/formatter-utils/formatObject.ts","../src/formatter-utils/formatRecordToString.ts","../src/debug/debug.ts","../src/formatters/RawFormatter.ts","../src/formatters/MarkdownFormatter.ts","../src/formatters/JSONFormatter.ts","../src/formatters/ANSIFormatter.ts","../src/formatters/HTMLFormatter.ts","../src/formatters/BrowserConsoleFormatter.ts","../src/outputs/consoleOutput.ts","../src/handlers/StringHandler.ts","../src/debug/getDebugString.web.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 const querystring = document.location.search;\n const debugFromLocalStorage =\n // eslint-disable-next-line unicorn/prefer-global-this, @typescript-eslint/no-unnecessary-condition\n window.localStorage?.getItem(\"debug\") || \"\";\n\n if (!querystring) {\n return debugFromLocalStorage;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param\n const debugFromQueryString = decodeURI(\n querystring.replace(\n // eslint-disable-next-line prefer-regex-literals, regexp/no-super-linear-backtracking\n new RegExp(\"^(?:.*[&?]DEBUG(?:=([^&]*))?)?.*$\", \"i\"),\n \"$1\",\n ),\n );\n\n return (\n (debugFromLocalStorage ? `${debugFromLocalStorage},` : \"\") +\n debugFromQueryString\n );\n}\n","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 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-browser.es.js","sources":["../src/config.ts","../src/formatter-utils/levelToStyles.ts","../src/formatter-utils/levelToSymbol.ts","../src/formatter-utils/styleToHexColor.ts","../src/formatter-utils/styleToHtmlStyle.ts","../src/formatter-utils/formatStyles.ts","../src/formatter-utils/formatObject.ts","../src/formatter-utils/formatRecordToString.ts","../src/debug/debug.ts","../src/formatters/RawFormatter.ts","../src/formatters/MarkdownFormatter.ts","../src/formatters/JSONFormatter.ts","../src/formatters/ANSIFormatter.ts","../src/formatters/HTMLFormatter.ts","../src/formatters/BrowserConsoleFormatter.ts","../src/outputs/consoleOutput.ts","../src/handlers/StringHandler.ts","../src/debug/getDebugString.web.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 const querystring = document.location.search;\n const debugFromLocalStorage =\n // eslint-disable-next-line unicorn/prefer-global-this, @typescript-eslint/no-unnecessary-condition\n window.localStorage?.getItem(\"debug\") || \"\";\n\n if (!querystring) {\n return debugFromLocalStorage;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param\n const debugFromQueryString = decodeURI(\n querystring.replace(\n // eslint-disable-next-line prefer-regex-literals, regexp/no-super-linear-backtracking\n new RegExp(\"^(?:.*[&?]DEBUG(?:=([^&]*))?)?.*$\", \"i\"),\n \"$1\",\n ),\n );\n\n return (\n (debugFromLocalStorage ? `${debugFromLocalStorage},` : \"\") +\n debugFromQueryString\n );\n}\n","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/dist/index-node22.mjs
CHANGED
|
@@ -819,6 +819,7 @@ const style = (styleToHtmlStyle, args) => (styles, string) => {
|
|
|
819
819
|
return `%c${string}%c`;
|
|
820
820
|
};
|
|
821
821
|
class BrowserConsoleFormatter {
|
|
822
|
+
styleToHtmlStyle;
|
|
822
823
|
constructor(theme = "light") {
|
|
823
824
|
this.styleToHtmlStyle = theme === "dark" ? styleToHtmlStyleThemeDark : styleToHtmlStyleThemeLight;
|
|
824
825
|
}
|
|
@@ -839,8 +840,9 @@ function consoleOutput(param, record) {
|
|
|
839
840
|
}
|
|
840
841
|
|
|
841
842
|
class StringHandler {
|
|
843
|
+
minLevel;
|
|
844
|
+
_buffer = "";
|
|
842
845
|
constructor(minLevel) {
|
|
843
|
-
this._buffer = "";
|
|
844
846
|
this.minLevel = minLevel;
|
|
845
847
|
}
|
|
846
848
|
get string() {
|
|
@@ -873,8 +875,10 @@ const createHandler = (theme = getDefaultTheme()) => {
|
|
|
873
875
|
};
|
|
874
876
|
};
|
|
875
877
|
class BrowserConsoleHandler {
|
|
878
|
+
minLevel = 0;
|
|
879
|
+
handle;
|
|
880
|
+
isHandling;
|
|
876
881
|
constructor(minLevel, options = {}) {
|
|
877
|
-
this.minLevel = 0;
|
|
878
882
|
this.isHandling = (level, key) => level >= findDebugLevel$2(minLevel, key);
|
|
879
883
|
this.handle = createHandler(options.theme);
|
|
880
884
|
}
|
|
@@ -889,8 +893,10 @@ const createHandle$1 = (formatter = defaultFormatter, output = consoleOutput) =>
|
|
|
889
893
|
};
|
|
890
894
|
const findDebugLevel$1 = createFindDebugLevel(process.env.DEBUG);
|
|
891
895
|
class ConsoleHandler {
|
|
896
|
+
minLevel = Level.ALL;
|
|
897
|
+
isHandling;
|
|
898
|
+
handle;
|
|
892
899
|
constructor(minLevel, options = {}) {
|
|
893
|
-
this.minLevel = Level.ALL;
|
|
894
900
|
this.minLevel = minLevel;
|
|
895
901
|
this.isHandling = (level, key) => level >= findDebugLevel$1(minLevel, key);
|
|
896
902
|
this.handle = createHandle$1(options.formatter, options.output);
|
|
@@ -917,8 +923,10 @@ const createHandle = ({
|
|
|
917
923
|
};
|
|
918
924
|
const findDebugLevel = createFindDebugLevel(process.env.DEBUG);
|
|
919
925
|
class ConsoleCLIHandler {
|
|
926
|
+
minLevel = Level.ALL;
|
|
927
|
+
isHandling;
|
|
928
|
+
handle;
|
|
920
929
|
constructor(minLevel, options = {}) {
|
|
921
|
-
this.minLevel = Level.ALL;
|
|
922
930
|
this.minLevel = minLevel;
|
|
923
931
|
this.isHandling = (level, key) => level >= findDebugLevel(minLevel, key);
|
|
924
932
|
this.handle = createHandle(options);
|
|
@@ -926,9 +934,11 @@ class ConsoleCLIHandler {
|
|
|
926
934
|
}
|
|
927
935
|
|
|
928
936
|
class LoggerCLI extends Logger {
|
|
937
|
+
handlers;
|
|
938
|
+
processors = [];
|
|
939
|
+
json;
|
|
929
940
|
constructor(key, { displayName, processors, json = false, noColor } = {}) {
|
|
930
941
|
super(key, displayName);
|
|
931
|
-
this.processors = [];
|
|
932
942
|
this.handlers = [new ConsoleCLIHandler(Level$1.INFO, { json, noColor })];
|
|
933
943
|
this.processors = processors ?? [];
|
|
934
944
|
this.json = json;
|