nightingale 17.0.1 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/definitions/formatter-utils/formatRecordToString.d.ts +1 -1
- package/dist/definitions/formatter-utils/formatRecordToString.d.ts.map +1 -1
- package/dist/definitions/formatter-utils/index.d.ts +7 -7
- package/dist/definitions/formatter-utils/index.d.ts.map +1 -1
- package/dist/definitions/formatters/ANSIFormatter.d.ts.map +1 -1
- package/dist/definitions/formatters/BrowserConsoleFormatter.d.ts.map +1 -1
- package/dist/definitions/index.d.ts +16 -16
- package/dist/definitions/index.d.ts.map +1 -1
- package/dist/index-browser.es.js.map +1 -1
- package/dist/{index-node20.mjs → index-node22.mjs} +1 -1
- package/dist/index-node22.mjs.map +1 -0
- package/dist/index-react-native.es.js.map +1 -1
- package/package.json +12 -12
- package/src/debug/debug.test.ts +1 -1
- package/src/formatter-utils/formatObject.test.ts +1 -1
- package/src/formatter-utils/formatObject.ts +1 -1
- package/src/formatter-utils/formatRecordToString.ts +4 -4
- package/src/formatter-utils/index.test.ts +1 -1
- package/src/formatter-utils/index.ts +7 -7
- package/src/formatter-utils/styleToHtmlStyle.ts +1 -1
- package/src/formatters/ANSIFormatter.test.ts +1 -1
- package/src/formatters/ANSIFormatter.ts +4 -1
- package/src/formatters/BrowserConsoleFormatter.test.ts +2 -2
- package/src/formatters/BrowserConsoleFormatter.ts +2 -2
- package/src/formatters/HTMLFormatter.test.ts +1 -1
- package/src/formatters/HTMLFormatter.ts +1 -1
- package/src/formatters/JSONFormatter.test.ts +1 -1
- package/src/formatters/MarkdownFormatter.test.ts +1 -1
- package/src/formatters/MarkdownFormatter.ts +1 -1
- package/src/formatters/RawFormatter.test.ts +1 -1
- package/src/formatters/RawFormatter.ts +1 -1
- package/src/handlers/BrowserConsoleHandler.ts +4 -4
- package/src/handlers/ConsoleCLIHandler.ts +6 -6
- package/src/handlers/ConsoleHandler.ts +3 -3
- package/src/handlers/StringHandler.ts +1 -1
- package/src/handlers/defaultFormatter.target-node.ts +2 -2
- package/src/handlers/defaultFormatter.ts +1 -1
- package/src/index.test.ts +2 -2
- package/src/index.ts +16 -16
- package/src/loggers/LoggerCLI.test.ts +1 -1
- package/src/loggers/LoggerCLI.ts +1 -1
- package/dist/index-node20.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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.0.0](https://github.com/christophehurpeau/nightingale/compare/v17.0.1...v18.0.0) (2025-11-15)
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
* drop node 20
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* update dependencies
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **deps:** update dependency ansi-styles to ^6.2.3 ([#1272](https://github.com/christophehurpeau/nightingale/issues/1272))
|
|
19
|
+
|
|
20
|
+
Version bump for dependency: nightingale-levels
|
|
21
|
+
Version bump for dependency: nightingale-logger
|
|
22
|
+
Version bump for dependency: nightingale-types
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
## [17.0.1](https://github.com/christophehurpeau/nightingale/compare/v17.0.0...v17.0.1) (2025-10-22)
|
|
7
26
|
|
|
8
27
|
### Bug Fixes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { LogRecord, Metadata } from "nightingale-types";
|
|
2
|
-
import type { StyleFn } from "./formatObject";
|
|
2
|
+
import type { StyleFn } from "./formatObject.ts";
|
|
3
3
|
export declare function formatRecordToString<T extends Metadata>(record: LogRecord<T>, style: StyleFn): [string, ...string[]];
|
|
4
4
|
//# sourceMappingURL=formatRecordToString.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatRecordToString.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/formatRecordToString.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"formatRecordToString.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/formatRecordToString.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAK/D,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EACrD,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,OAAO,GACb,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAyDvB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { LogRecord, Metadata } from "nightingale-types";
|
|
2
|
-
export { levelToStyles } from "./levelToStyles";
|
|
3
|
-
export { levelToSymbol } from "./levelToSymbol";
|
|
4
|
-
export { styleToHtmlStyleThemeDark, styleToHtmlStyleThemeLight, } from "./styleToHtmlStyle";
|
|
5
|
-
export type { StyleToHtmlStyle } from "./styleToHtmlStyle";
|
|
6
|
-
export { styleToHexColor } from "./styleToHexColor";
|
|
7
|
-
export { formatObject } from "./formatObject";
|
|
8
|
-
export { formatRecordToString } from "./formatRecordToString";
|
|
2
|
+
export { levelToStyles } from "./levelToStyles.ts";
|
|
3
|
+
export { levelToSymbol } from "./levelToSymbol.ts";
|
|
4
|
+
export { styleToHtmlStyleThemeDark, styleToHtmlStyleThemeLight, } from "./styleToHtmlStyle.ts";
|
|
5
|
+
export type { StyleToHtmlStyle } from "./styleToHtmlStyle.ts";
|
|
6
|
+
export { styleToHexColor } from "./styleToHexColor.ts";
|
|
7
|
+
export { formatObject } from "./formatObject.ts";
|
|
8
|
+
export { formatRecordToString } from "./formatRecordToString.ts";
|
|
9
9
|
export interface NightingaleFormatter {
|
|
10
10
|
format: <T extends Metadata>(record: LogRecord<T>) => [string, ...string[]];
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatter-utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;CAC7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ANSIFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatters/ANSIFormatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ANSIFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatters/ANSIFormatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserConsoleFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatters/BrowserConsoleFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"BrowserConsoleFormatter.d.ts","sourceRoot":"","sources":["../../../src/formatters/BrowserConsoleFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrE,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,22 +1,22 @@
|
|
|
1
1
|
import { Logger } from "nightingale-logger";
|
|
2
2
|
export { Logger } from "nightingale-logger";
|
|
3
3
|
export { Level, Level as levels } from "nightingale-levels";
|
|
4
|
-
export { configure, addConfig } from "./config";
|
|
5
|
-
export * from "./formatter-utils";
|
|
6
|
-
export { createFindDebugLevel } from "./debug/debug";
|
|
7
|
-
export { RawFormatter } from "./formatters/RawFormatter";
|
|
8
|
-
export { MarkdownFormatter } from "./formatters/MarkdownFormatter";
|
|
9
|
-
export { JSONFormatter } from "./formatters/JSONFormatter";
|
|
10
|
-
export { ANSIFormatter } from "./formatters/ANSIFormatter";
|
|
11
|
-
export { HTMLFormatter } from "./formatters/HTMLFormatter";
|
|
12
|
-
export { BrowserConsoleFormatter } from "./formatters/BrowserConsoleFormatter";
|
|
13
|
-
export { consoleOutput } from "./outputs/consoleOutput";
|
|
14
|
-
export { StringHandler } from "./handlers/StringHandler";
|
|
15
|
-
export { BrowserConsoleHandler } from "./handlers/BrowserConsoleHandler";
|
|
16
|
-
export { ConsoleHandler } from "./handlers/ConsoleHandler";
|
|
17
|
-
export { ConsoleCLIHandler } from "./handlers/ConsoleCLIHandler";
|
|
18
|
-
export { LoggerCLI } from "./loggers/LoggerCLI";
|
|
19
|
-
export { formatStyles } from "./formatter-utils/formatStyles";
|
|
4
|
+
export { configure, addConfig } from "./config.ts";
|
|
5
|
+
export * from "./formatter-utils/index.ts";
|
|
6
|
+
export { createFindDebugLevel } from "./debug/debug.ts";
|
|
7
|
+
export { RawFormatter } from "./formatters/RawFormatter.ts";
|
|
8
|
+
export { MarkdownFormatter } from "./formatters/MarkdownFormatter.ts";
|
|
9
|
+
export { JSONFormatter } from "./formatters/JSONFormatter.ts";
|
|
10
|
+
export { ANSIFormatter } from "./formatters/ANSIFormatter.ts";
|
|
11
|
+
export { HTMLFormatter } from "./formatters/HTMLFormatter.ts";
|
|
12
|
+
export { BrowserConsoleFormatter } from "./formatters/BrowserConsoleFormatter.ts";
|
|
13
|
+
export { consoleOutput } from "./outputs/consoleOutput.ts";
|
|
14
|
+
export { StringHandler } from "./handlers/StringHandler.ts";
|
|
15
|
+
export { BrowserConsoleHandler } from "./handlers/BrowserConsoleHandler.ts";
|
|
16
|
+
export { ConsoleHandler } from "./handlers/ConsoleHandler.ts";
|
|
17
|
+
export { ConsoleCLIHandler } from "./handlers/ConsoleCLIHandler.ts";
|
|
18
|
+
export { LoggerCLI } from "./loggers/LoggerCLI.ts";
|
|
19
|
+
export { formatStyles } from "./formatter-utils/formatStyles.ts";
|
|
20
20
|
/**
|
|
21
21
|
* listen to uncaughtException and unhandledRejection
|
|
22
22
|
* @param {Logger} [logger]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,GAAE,MAGP,GACA,IAAI,CAaN"}
|
|
@@ -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\";\n\nexport interface HtmlStyle {\n readonly open: string;\n readonly close: string;\n}\n\nexport const styleToHtmlStyleThemeLight = {\n // text style\n bold: { open: \"font-weight: bold\", close: \"font-weight: normal\" },\n italic: { open: \"font-style: italic\", close: \"font-style: normal\" },\n underline: {\n open: \"text-decoration: underline\",\n close: \"text-decoration: none\",\n },\n inverse: {\n open: \"unicode-bidi: bidi-override; direction: rtl\",\n close: \"unicode-bidi: normal; direction: ltr\",\n },\n strikethrough: {\n open: \"text-decoration: line-through\",\n close: \"text-decoration: none\",\n },\n\n black: { open: \"color: black\", close: \"color: currentcolor\" },\n red: { open: \"color: #ff0020\", close: \"color: currentcolor\" },\n green: { open: \"color: #00b317\", close: \"color: currentcolor\" },\n yellow: { open: \"color: #ffcc00\", close: \"color: currentcolor\" },\n blue: { open: \"color: #00a0ff\", close: \"color: currentcolor\" },\n magenta: { open: \"color: #ff00a0\", close: \"color: currentcolor\" },\n cyan: { open: \"color: #00cfd8\", close: \"color: currentcolor\" },\n white: { open: \"color: white\", close: \"color: currentcolor\" },\n gray: { open: \"color: gray\", close: \"color: currentcolor\" },\n dim: { open: \"color: #808080\", close: \"color: currentcolor\" },\n\n bgBlack: { open: \"background: black\", close: \"background: initial\" },\n bgRed: { open: \"background: #ff0020\", close: \"background: initial\" },\n bgGreen: { open: \"background: #00b317\", close: \"background: initial\" },\n bgYellow: { open: \"background: #ffcc00\", close: \"background: initial\" },\n bgBlue: { open: \"background: #00a0ff\", close: \"background: initial\" },\n bgMagenta: { open: \"background: #ff00a0\", close: \"background: initial\" },\n bgCyan: { open: \"background: #00cfd8\", close: \"background: initial\" },\n bgWhite: { open: \"background: white\", close: \"background: initial\" },\n\n orange: {\n open: `color: #${styleToHexColor.orange}`,\n close: \"color: currentcolor\",\n },\n} as const;\n\nexport type StyleToHtmlStyle = Readonly<\n Record<keyof typeof styleToHtmlStyleThemeLight, HtmlStyle>\n>;\n\nexport const styleToHtmlStyleThemeDark: StyleToHtmlStyle = {\n ...styleToHtmlStyleThemeLight,\n black: styleToHtmlStyleThemeLight.white,\n bgBlack: styleToHtmlStyleThemeLight.bgWhite,\n white: styleToHtmlStyleThemeLight.black,\n bgWhite: styleToHtmlStyleThemeLight.bgBlack,\n gray: { open: \"color: lightgray\", close: \"color: currentcolor\" },\n};\n","/* eslint sort-keys: error */\n\nexport const formatStyles = {\n bigint: [\"yellow\", \"bold\"],\n boolean: [\"green\"],\n date: [\"magenta\"],\n error: [\"red\"],\n function: [\"blue\"],\n null: [\"bold\"],\n number: [\"yellow\"],\n regexp: [\"magenta\"],\n string: [\"orange\"],\n symbol: [\"magenta\"],\n undefined: [\"dim\"],\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { Styles } from \"nightingale-types\";\nimport { formatStyles } from \"./formatStyles\";\n\nexport interface FormatObjectOptions {\n padding?: string;\n maxDepth?: number;\n}\n\nexport type StyleFn = (styles: Styles, value: string) => string;\n\nexport type ObjectStyles<Keys extends string = string> = Record<Keys, Styles>;\n\nconst noStyleFn: StyleFn = (styles: Styles, value: string): string => value;\n\ninterface InternalFormatParams {\n padding: string;\n depth: number;\n maxDepth: number;\n objects: Set<unknown>;\n}\n\ninterface FormattedKey {\n stringKey: string;\n formattedKey: string;\n}\n\ntype FormatKey<Key> = (\n key: Key,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n) => FormattedKey;\n\ninterface Value<Key> {\n key: Key;\n value: unknown;\n}\n\ninterface FormattedValue {\n stringValue: string;\n formattedValue: string;\n}\n\ntype Values<Key> = Value<Key>[];\n\ninterface InternalFormatIteratorParams<Key> {\n prefix: string;\n suffix: string;\n formatKey: FormatKey<Key>;\n prefixSuffixSpace?: string;\n}\n\nfunction tryStringify(arg: unknown): string {\n try {\n return JSON.stringify(arg).replace(/\\\\n/g, \"\\n\");\n } catch {\n return \"[Circular]\";\n }\n}\n\nconst sameRawFormattedValue = (value: string): FormattedValue => ({\n stringValue: value,\n formattedValue: value,\n});\n\nconst numericSeparator = \"_\";\n\nconst formatIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = integerAsString.length;\n const start = integerAsString.startsWith(\"-\") ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n result = `${numericSeparator}${integerAsString.slice(i - 3, i)}${result}`;\n }\n return i === integerAsString.length\n ? integerAsString\n : `${integerAsString.slice(0, i)}${result}`;\n};\n\nconst formatDecimalIntegerValue = (integerAsString: string): string => {\n let result = \"\";\n let i = 0;\n for (; i < integerAsString.length - 3; i += 3) {\n result += `${integerAsString.slice(i, i + 3)}${numericSeparator}`;\n }\n return i === 0 ? integerAsString : `${result}${integerAsString.slice(i)}`;\n};\n\nconst formatNumberValue = (value: number): string => {\n if (Number.isNaN(value)) {\n return \"NaN\";\n }\n if (value === Number.POSITIVE_INFINITY) {\n return \"+Infinity\";\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return \"-Infinity\";\n }\n if (value === Number.EPSILON) {\n return \"Epsilon\";\n }\n if (Object.is(value, -0)) {\n return \"-0\";\n }\n const integer = Math.trunc(value);\n const integerAsString = integer.toString();\n if (integer === value) {\n if (integerAsString.includes(\"e\")) {\n return integerAsString;\n }\n return formatIntegerValue(integerAsString);\n } else {\n return `${formatIntegerValue(integerAsString)}.${formatDecimalIntegerValue(String(value).slice(integerAsString.length + 1))}`;\n }\n};\n\nfunction internalFormatValue(\n value: unknown,\n styleFn: StyleFn,\n styles: Styles,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n const typeofValue = typeof value;\n\n if (!styles) {\n if (value === null) {\n styles = [\"bold\"];\n } else {\n switch (typeofValue) {\n case \"bigint\":\n styles = formatStyles.bigint;\n break;\n case \"boolean\":\n styles = formatStyles.boolean;\n break;\n case \"undefined\":\n styles = formatStyles.undefined;\n break;\n case \"number\":\n styles = formatStyles.number;\n break;\n case \"string\":\n styles = formatStyles.string;\n break;\n case \"symbol\":\n styles = formatStyles.symbol;\n break;\n case \"object\":\n if (value instanceof Date) {\n styles = formatStyles.date;\n }\n if (value instanceof RegExp) {\n styles = formatStyles.regexp;\n }\n if (value instanceof Error) {\n styles = formatStyles.error;\n }\n break;\n case \"function\":\n styles = formatStyles.function;\n break;\n default:\n break;\n }\n }\n }\n\n let stringValue: string;\n if (value === null) {\n stringValue = \"null\";\n } else if (value === undefined) {\n stringValue = \"undefined\";\n } else if (typeofValue === \"number\") {\n stringValue = formatNumberValue(value as number);\n } else if (typeofValue === \"boolean\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n stringValue = (value as any).toString() as string;\n } else if ((value as () => unknown).constructor === Object) {\n if (depth >= maxDepth) {\n stringValue = \"{Object...}\";\n } else {\n return internalFormatObject(\n value as Record<string, unknown>,\n styleFn,\n undefined,\n {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n },\n );\n }\n } else if (Array.isArray(value)) {\n if (depth >= maxDepth) {\n stringValue = \"[Array...]\";\n } else {\n return internalFormatArray(value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof Error) {\n const stack = value.stack;\n stringValue =\n stack?.startsWith(value.message) ||\n stack?.startsWith(`${value.name}: ${value.message}`)\n ? stack\n : `${value.message}\\n${stack || \"\"}`;\n } else if (value instanceof Map) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatMap(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (typeofValue === \"bigint\") {\n stringValue = `[BigInt: ${(value as bigint).toString()}]`;\n } else if (typeofValue === \"symbol\") {\n stringValue = (value as symbol).toString();\n } else if (value instanceof Set) {\n const name = value.constructor.name;\n if (depth >= maxDepth) {\n stringValue = `{${name}...}`;\n } else {\n return internalFormatSet(name, value, styleFn, {\n padding,\n depth: depth + 1,\n maxDepth,\n objects,\n });\n }\n } else if (value instanceof WeakMap) {\n stringValue = \"{WeakMap...}\";\n } else if (value instanceof WeakSet) {\n stringValue = \"{WeakSet...}\";\n } else if (value instanceof Date) {\n stringValue = `[Date: ${value.toISOString()}]`;\n } else if (value instanceof RegExp) {\n stringValue = `[RegExp: ${value.toString()}]`;\n } else if (typeof value === \"function\") {\n stringValue = `[Function: ${value.name}]`;\n } else {\n stringValue = tryStringify(value);\n }\n\n const formattedValue = styleFn(styles, stringValue);\n\n return {\n stringValue,\n formattedValue,\n };\n}\n\nconst separator = \",\";\n\nconst internalFormatKey: FormatKey<string> = (\n key: string,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return {\n stringKey: `${key}: `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${key}:`)} `,\n };\n};\n\nconst internalNoKey: FormatKey<undefined> = (\n key: string | undefined,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n return { stringKey: \"\", formattedKey: \"\" };\n};\n\nconst internalFormatMapKey: FormatKey<unknown> = (\n key: unknown,\n styleFn: StyleFn,\n internalFormatParams: InternalFormatParams,\n): FormattedKey => {\n const { stringValue, formattedValue } = internalFormatValue(\n key,\n noStyleFn,\n undefined,\n internalFormatParams,\n );\n return {\n stringKey: `${stringValue} => `,\n formattedKey: `${styleFn([\"dim\", \"bold\"], `${formattedValue}:`)} `,\n };\n};\n\nconst internalFormatIterator = <Key>(\n values: Values<Key>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n {\n prefix,\n suffix,\n prefixSuffixSpace = \" \",\n formatKey,\n }: InternalFormatIteratorParams<Key>,\n): FormattedValue => {\n let breakLine = false;\n const formattedSeparator = (): string => styleFn([\"gray\"], separator);\n\n const valuesMaxIndex = values.length - 1;\n const formattedValues: FormattedValue[] = values.map(\n ({ key, value }, index: number) => {\n const nextDepth = depth + 1;\n const internalFormatParams = {\n padding,\n depth: nextDepth,\n maxDepth,\n objects,\n };\n\n // key must be formatted before value (browser-formatter needs order)\n const { stringKey, formattedKey } = formatKey(\n key,\n styleFn,\n internalFormatParams,\n );\n\n let { stringValue, formattedValue } = internalFormatValue(\n value,\n styleFn,\n key && objectStyles\n ? objectStyles[key as unknown as string]\n : undefined,\n internalFormatParams,\n );\n\n if (\n stringValue &&\n (stringValue.length > 80 || stringValue.includes(\"\\n\"))\n ) {\n breakLine = true;\n stringValue = stringValue.replace(/\\n/g, `\\n${padding}`);\n formattedValue = formattedValue.replace(/\\n/g, `\\n${padding}`);\n }\n\n return {\n stringValue:\n stringKey + stringValue + (index === valuesMaxIndex ? \"\" : separator),\n formattedValue:\n formattedKey +\n formattedValue +\n (index === valuesMaxIndex ? \"\" : formattedSeparator()),\n // note: we need to format the separator for each values for browser-formatter\n };\n },\n );\n\n return {\n stringValue:\n prefix +\n formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.stringValue}`\n : (fv) => fv.stringValue,\n )\n .join(breakLine ? \"\\n\" : \" \") +\n suffix,\n formattedValue: `${prefix}${\n breakLine ? \"\" : prefixSuffixSpace\n }${formattedValues\n .map(\n breakLine\n ? (v) => `\\n${padding}${v.formattedValue}`\n : (v) => v.formattedValue,\n )\n .join(breakLine ? \"\" : \" \")}${\n breakLine ? \",\\n\" : prefixSuffixSpace\n }${suffix}`,\n };\n};\n\nfunction internalFormatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn,\n objectStyles: ObjectStyles | undefined,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(object)) {\n return sameRawFormattedValue(\"{Circular Object}\");\n }\n\n const keys: string[] = Object.keys(object);\n if (keys.length === 0) {\n return sameRawFormattedValue(\"{}\");\n }\n\n objects.add(object);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: object[key] })),\n styleFn,\n objectStyles,\n { padding, depth, maxDepth, objects },\n { prefix: \"{\", suffix: \"}\", formatKey: internalFormatKey },\n );\n\n objects.delete(object);\n\n return result;\n}\n\nfunction internalFormatMap(\n name: string,\n map: Map<unknown, unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(map)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const keys = [...map.keys()];\n if (keys.length === 0) {\n return sameRawFormattedValue(`${name} {}`);\n }\n\n objects.add(map);\n\n const result = internalFormatIterator(\n keys.map((key) => ({ key, value: map.get(key) })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} {`, suffix: \"}\", formatKey: internalFormatMapKey },\n );\n\n objects.delete(map);\n\n return result;\n}\n\nfunction internalFormatArray(\n array: unknown[],\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(array)) {\n return sameRawFormattedValue(\"{Circular Array}\");\n }\n\n if (array.length === 0) {\n return sameRawFormattedValue(\"[]\");\n }\n\n objects.add(array);\n\n const result = internalFormatIterator(\n array.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n {\n prefix: \"[\",\n suffix: \"]\",\n prefixSuffixSpace: \"\",\n formatKey: internalNoKey,\n },\n );\n\n objects.delete(array);\n\n return result;\n}\n\nfunction internalFormatSet(\n name: string,\n set: Set<unknown>,\n styleFn: StyleFn,\n { padding, depth, maxDepth, objects }: InternalFormatParams,\n): FormattedValue {\n if (objects.has(set)) {\n return sameRawFormattedValue(`{Circular ${name}}`);\n }\n\n const values = [...set.values()];\n if (values.length === 0) {\n return sameRawFormattedValue(`${name} []`);\n }\n\n objects.add(set);\n\n const result = internalFormatIterator(\n values.map((value) => ({ key: undefined, value })),\n styleFn,\n undefined,\n { padding, depth, maxDepth, objects },\n { prefix: `${name} [`, suffix: \"]\", formatKey: internalNoKey },\n );\n\n objects.delete(set);\n\n return result;\n}\n\nexport function formatObject(\n object: Record<string, unknown>,\n styleFn: StyleFn = noStyleFn,\n objectStyles?: ObjectStyles,\n { padding = \" \", maxDepth = 10 }: FormatObjectOptions = {},\n): string {\n const { formattedValue: result } = internalFormatObject(\n object,\n styleFn,\n objectStyles,\n {\n padding,\n maxDepth,\n depth: 0,\n objects: new Set(),\n },\n );\n\n if (result === \"{}\") {\n return \"\";\n }\n\n return result;\n}\n","import type { LogRecord, Metadata } from \"nightingale-types\";\nimport type { ObjectStyles, StyleFn } from \"./formatObject\";\nimport { formatObject } from \"./formatObject\";\nimport { levelToStyles } from \"./levelToStyles\";\nimport { levelToSymbol } from \"./levelToSymbol\";\n\nexport function formatRecordToString<T extends Metadata>(\n record: LogRecord<T>,\n style: StyleFn,\n): [string, ...string[]] {\n const parts: string[] = [];\n\n if (record.displayName) {\n parts.push(style([\"dim\"], record.displayName));\n } else if (record.key) {\n parts.push(style([\"dim\"], record.key));\n }\n\n if (record.datetime) {\n parts.push(\n style([\"gray\", \"bold\"], record.datetime.toTimeString().split(\" \", 2)[0]!),\n );\n /* new Date().toFormat('HH24:MI:SS') */\n }\n\n let message: string = record.symbol || levelToSymbol[record.level] || \"\";\n const styles = record.styles || levelToStyles[record.level];\n\n if (record.message) {\n if (message) {\n message += ` ${record.message}`;\n } else {\n message = record.message;\n }\n }\n\n if (message) {\n if (styles) {\n message = style(styles, message);\n }\n parts.push(message);\n }\n\n const formatRecordObject = (\n key: string,\n object: Record<string, unknown> | undefined,\n objectStyles: ObjectStyles | undefined,\n ): void => {\n if (!object) {\n return;\n }\n\n const stringObject = formatObject(object, style, objectStyles);\n\n if (!stringObject) {\n return;\n }\n\n parts.push(stringObject);\n };\n\n formatRecordObject(\"metadata\", record.metadata, record.metadataStyles);\n formatRecordObject(\"extra\", record.extra, undefined);\n formatRecordObject(\"context\", record.context, undefined);\n\n return [parts.join(\" \")];\n}\n","/* eslint-disable complexity */\nimport { Level } from \"nightingale-levels\";\n\nconst specialRegexpChars = /[$()+.?[\\\\\\]^{|}]/;\n\ntype TestFunction = (string: string) => boolean;\nexport type DebugValueType = RegExp | string[] | string;\n\nconst createTestFunctionFromRegexp =\n (regexp: RegExp): TestFunction =>\n (string: string) =>\n regexp.test(string);\n\nconst createTestFunctionFromRegexpString = (value: string): TestFunction => {\n if (!value.endsWith(\"/\")) throw new Error(\"Invalid RegExp DEBUG value\");\n return createTestFunctionFromRegexp(new RegExp(value.slice(1, -1)));\n};\n\nconst createTestFunctionFromValue = (value: string): TestFunction => {\n if (value.endsWith(\":*\")) {\n value = value.slice(0, -2);\n return (string: string) => string.startsWith(value);\n }\n\n return (string: string) => string === value;\n};\n\nexport type FindDebugLevel = (minLevel: Level, key: string) => Level;\n\nexport function createFindDebugLevel(\n debugValue?: DebugValueType,\n): FindDebugLevel {\n let isWildcard = false;\n const debugValues: TestFunction[] = [];\n const skips: TestFunction[] = [];\n\n if (!Array.isArray(debugValue)) {\n if (debugValue instanceof RegExp) {\n debugValues.push(createTestFunctionFromRegexp(debugValue));\n debugValue = undefined;\n } else if (debugValue) {\n debugValue = debugValue.trim();\n\n if (debugValue.startsWith(\"/\")) {\n debugValues.push(createTestFunctionFromRegexpString(debugValue));\n debugValue = undefined;\n } else {\n debugValue = debugValue.split(/[\\s,]+/);\n }\n }\n }\n\n if (debugValue) {\n (debugValue as string[]).forEach((value) => {\n if (specialRegexpChars.test(value)) {\n throw new Error(\n `Invalid debug value: \"${value}\" (contains special chars)`,\n );\n }\n\n if (!value) return;\n\n if (value === \"*\") {\n isWildcard = true;\n return;\n }\n\n if (value.startsWith(\"-\")) {\n skips.push(createTestFunctionFromValue(value.slice(1)));\n } else if (!isWildcard) {\n debugValues.push(createTestFunctionFromValue(value));\n }\n });\n }\n\n if (isWildcard) {\n if (skips.length === 0) {\n return () => Level.ALL;\n } else {\n return (minLevel: Level, key: string) =>\n skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n }\n\n if (debugValues.length === 0) {\n return (minLevel: Level) => minLevel;\n }\n\n return (minLevel: Level, key: string) => {\n if (minLevel === Level.ALL || !key) {\n return minLevel;\n }\n\n if (debugValues.some((dv) => dv(key))) {\n return skips.some((skip) => skip(key)) ? minLevel : Level.ALL;\n }\n\n return minLevel;\n };\n}\n","import type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { formatRecordToString } from \"../formatter-utils\";\n\nexport function style(styles: Styles, value: string): string {\n return value;\n}\n\nexport const RawFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { Styles } from \"nightingale-types\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { formatRecordToString } from \"../formatter-utils\";\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((part, styleName) => {\n switch (styleName) {\n case \"bold\":\n return `*${part}*`;\n case \"italic\":\n return `_${part}_`;\n case \"strikethrough\":\n return `~${part}~`;\n\n // no default\n }\n\n return part;\n }, string);\n}\n\nexport const MarkdownFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { NightingaleFormatter } from \"../formatter-utils\";\n\nfunction map2object(map: Map<unknown, unknown>): unknown {\n const object: Record<string, unknown> = {};\n\n map.forEach((value, key) => {\n if (typeof key === \"object\") {\n // ignore key\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n object[String(key)] = value;\n });\n\n return object;\n}\n\nfunction stringify(value: unknown, space?: number | string): string {\n return JSON.stringify(\n value,\n (key, objectValue) => {\n if (objectValue instanceof Map) {\n return map2object(objectValue);\n }\n if (objectValue instanceof Error) {\n return {\n message: objectValue.message,\n stack: objectValue.stack,\n };\n }\n\n return objectValue as unknown;\n },\n space,\n );\n}\n\nexport const JSONFormatter: NightingaleFormatter = {\n format(record) {\n return [\n stringify({\n key: record.key,\n level: record.level,\n datetime: record.datetime,\n message: record.message,\n metadata: record.metadata,\n extra: record.extra,\n }),\n ];\n },\n};\n\nexport const JSONCLIFormatter: NightingaleFormatter = {\n format(record) {\n return [\n stringify({\n key: record.key,\n time: record.datetime.toTimeString().split(\" \", 2)[0]!,\n message: record.message,\n ...record.metadata,\n ...record.extra,\n }),\n ];\n },\n};\n","import ansi from \"ansi-styles\";\nimport type { NightingaleFormatter } from \"nightingale\";\nimport type { Styles } from \"nightingale-types\";\nimport { formatRecordToString, styleToHexColor } from \"../formatter-utils\";\n\nexport type { Styles } from \"nightingale-types\";\n\ninterface CodePair {\n open: string;\n close: string;\n}\n\ntype AnsiStyles = Record<string, CodePair | undefined>;\n\nconst ansiStyles: AnsiStyles = {\n black: ansi.black,\n red: ansi.red,\n green: ansi.green,\n yellow: ansi.yellow,\n blue: ansi.blue,\n magenta: ansi.magenta,\n cyan: ansi.cyan,\n white: ansi.white,\n gray: ansi.gray,\n dim: ansi.dim,\n\n bgBlack: ansi.bgBlack,\n bgRed: ansi.bgRed,\n bgGreen: ansi.bgGreen,\n bgYellow: ansi.bgYellow,\n bgBlue: ansi.bgBlue,\n bgMagenta: ansi.bgMagenta,\n bgCyan: ansi.bgCyan,\n bgWhite: ansi.bgWhite,\n\n bold: ansi.bold,\n underline: ansi.underline,\n\n // http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html\n orange: {\n open: ansi.color.ansi256(ansi.hexToAnsi256(styleToHexColor.orange)),\n close: ansi.color.close,\n },\n};\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return styles.reduce((styledString: string, styleName: string) => {\n const codePair: CodePair | undefined = ansiStyles[styleName];\n\n if (!codePair) {\n throw new Error(`Unknown style: ${styleName}`);\n }\n\n return codePair.open + styledString + codePair.close;\n }, string);\n}\n\nexport const ANSIFormatter: NightingaleFormatter = {\n format: (record) => formatRecordToString(record, style),\n};\n","import type { Styles } from \"nightingale-types\";\nimport type {\n NightingaleFormatter,\n StyleToHtmlStyle,\n} from \"../formatter-utils\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils\";\n\nexport function style(styles: Styles, string: string): string {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n return `<span style=\"${styles\n .map(\n (styleName) =>\n styleToHtmlStyleThemeLight[styleName as keyof StyleToHtmlStyle].open,\n )\n .join(\"; \")}\">${string}</span>`;\n}\n\nexport const HTMLFormatter: NightingaleFormatter = {\n format(record) {\n return formatRecordToString(record, style);\n },\n};\n","import type { StyleToHtmlStyle } from \"nightingale\";\nimport type { LogRecord, Metadata, Styles } from \"nightingale-types\";\nimport {\n formatRecordToString,\n styleToHtmlStyleThemeDark,\n styleToHtmlStyleThemeLight,\n} from \"../formatter-utils\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\n\nexport const style =\n (styleToHtmlStyle: StyleToHtmlStyle, args: string[]) =>\n (styles: Styles, string: string): string => {\n if (!styles || styles.length === 0 || !string) {\n return string;\n }\n\n const htmlStyles = styles.map(\n (styleName) => styleToHtmlStyle[styleName as keyof StyleToHtmlStyle],\n );\n\n args.push(\n htmlStyles.map((s) => s.open).join(\"; \"),\n htmlStyles.map((s) => s.close).join(\"; \"),\n );\n return `%c${string}%c`;\n };\n\nexport class BrowserConsoleFormatter implements NightingaleFormatter {\n styleToHtmlStyle: StyleToHtmlStyle;\n constructor(theme: \"dark\" | \"light\" = \"light\") {\n this.styleToHtmlStyle =\n theme === \"dark\" ? styleToHtmlStyleThemeDark : styleToHtmlStyleThemeLight;\n }\n\n format<T extends Metadata>(record: LogRecord<T>): [string, ...string[]] {\n const args: string[] = [];\n const string = formatRecordToString(\n record,\n style(this.styleToHtmlStyle, args),\n )[0];\n return [string, ...args];\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\n\nexport function consoleOutput<T extends Metadata>(\n param: [string, ...string[]],\n record: LogRecord<T>,\n): void {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](...param);\n}\n","/* eslint-disable prefer-template */\nimport type { Handler, Level, LogRecord, Metadata } from \"nightingale-types\";\nimport { RawFormatter } from \"../formatters/RawFormatter\";\n\nexport class StringHandler implements Handler {\n readonly minLevel: Level;\n\n private _buffer = \"\";\n\n constructor(minLevel: Level) {\n this.minLevel = minLevel;\n }\n\n get string(): string {\n return this._buffer;\n }\n\n handle<T extends Metadata>(record: LogRecord<T>): void {\n this._buffer += RawFormatter.format(record)[0] + \"\\n\";\n }\n}\n","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\";\nimport { getDebugString } from \"../debug/getDebugString\";\nimport { BrowserConsoleFormatter } from \"../formatters/BrowserConsoleFormatter\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\n\n// debug string can change any time (localStorage), so we need a new object each time.\nconst findDebugLevel = (minLevel: Level, key: string): Level =>\n createFindDebugLevel(getDebugString())(minLevel, key);\n\ntype Theme = \"dark\" | \"light\";\n\nconst getDefaultTheme = (): Theme => {\n try {\n const configInLocalStorage = localStorage.getItem(\"NIGHTINGALE_THEME\");\n if (configInLocalStorage && configInLocalStorage === \"dark\") {\n return configInLocalStorage;\n }\n } catch {}\n return \"light\";\n};\n\nconst createHandler = (theme: Theme = getDefaultTheme()): Handle => {\n const browserConsoleFormatter = new BrowserConsoleFormatter(theme);\n return <T extends Metadata>(record: LogRecord<T>) => {\n consoleOutput(browserConsoleFormatter.format(record), record);\n };\n};\n\nexport interface BrowserConsoleHandlerOptions {\n theme?: Theme;\n}\n\nexport class BrowserConsoleHandler implements Handler {\n minLevel: Level = 0;\n\n handle: Handle;\n\n isHandling: IsHandling;\n\n constructor(minLevel: Level, options: BrowserConsoleHandlerOptions = {}) {\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n\n this.handle = createHandler(options.theme);\n }\n}\n","import { ANSIFormatter } from \"../formatters/ANSIFormatter\";\n\nexport const defaultFormatter = ANSIFormatter.format;\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug\";\nimport type { NightingaleFormatter } from \"../formatter-utils\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\nimport { defaultFormatter } from \"./defaultFormatter\";\n\nconst createHandle = (\n formatter = defaultFormatter,\n output = consoleOutput,\n): Handle => {\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleHandlerOptions {\n formatter?: NightingaleFormatter[\"format\"];\n output?: <T extends Metadata>(\n param: string[] | string,\n record: LogRecord<T>,\n ) => void;\n // compat with nightingale-app-console, not used yet\n theme?: \"dark\" | \"light\";\n}\n\nexport class ConsoleHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options.formatter, options.output);\n }\n}\n","/* eslint-disable no-console */\nimport { Level } from \"nightingale-levels\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\n\nexport function cliConsoleOutput<T extends Metadata>(\n param: [string, ...string[]],\n record: LogRecord<T>,\n): void {\n console[record.level >= Level.ERROR ? \"error\" : \"log\"](...param);\n}\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handle,\n Handler,\n IsHandling,\n LogRecord,\n Metadata,\n} from \"nightingale-types\";\nimport { createFindDebugLevel } from \"../debug/debug\";\nimport { ANSIFormatter } from \"../formatters/ANSIFormatter\";\nimport { JSONFormatter } from \"../formatters/JSONFormatter\";\nimport { RawFormatter } from \"../formatters/RawFormatter\";\nimport { cliConsoleOutput } from \"../outputs/cliConsoleOutput\";\nimport { consoleOutput } from \"../outputs/consoleOutput\";\n\nconst createHandle = ({\n json,\n noColor = process.env.NO_COLOR === \"1\" || process.env.NO_COLOR === \"true\",\n}: ConsoleCLIHandlerOptions): Handle => {\n const formatter = (() => {\n if (json) return JSONFormatter.format;\n if (noColor) return RawFormatter.format;\n return ANSIFormatter.format;\n })();\n const output = json ? consoleOutput : cliConsoleOutput;\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleCLIHandlerOptions {\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class ConsoleCLIHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleCLIHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options);\n }\n}\n","import type { ComputedConfigForKey } from \"nightingale-logger\";\nimport { Level, Logger } from \"nightingale-logger\";\nimport type { Handler, Processor } from \"nightingale-types\";\nimport { ConsoleCLIHandler } from \"../handlers/ConsoleCLIHandler\";\n\nexport interface LoggerCLIOptions {\n displayName?: string;\n handlers?: Handler[];\n processors?: Processor[];\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class LoggerCLI extends Logger {\n private handlers: Handler[];\n private processors: Processor[] = [];\n private json: boolean;\n constructor(\n key: string,\n { displayName, processors, json = false, noColor }: LoggerCLIOptions = {},\n ) {\n super(key, displayName);\n this.handlers = [new ConsoleCLIHandler(Level.INFO, { json, noColor })];\n this.processors = processors ?? [];\n this.json = json;\n }\n\n protected override getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return {\n handlers: this.handlers,\n processors: this.processors,\n };\n }\n\n logJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n level: Level = Level.INFO,\n ): void {\n if (this.json) {\n this.log(messageOrError, metadata, level);\n }\n }\n\n debugJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.debug(messageOrError, metadata);\n }\n }\n\n noticeJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.notice(messageOrError, metadata);\n }\n }\n\n infoJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.info(messageOrError, metadata);\n }\n }\n\n warnJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.warn(messageOrError, metadata);\n }\n }\n\n group<T, Result extends Awaited<T> | Promise<T>>(\n name: string,\n fn: () => Result,\n ): Result extends Promise<infer V> ? Promise<V> : Awaited<T> {\n if (this.json) {\n return fn() as Result extends Promise<infer V> ? Promise<V> : Awaited<T>;\n } else {\n console.group(name);\n const result = fn();\n if (result instanceof Promise) {\n return result.finally(() => {\n console.groupEnd();\n }) as Result extends Promise<infer V> ? Promise<V> : never;\n } else {\n console.groupEnd();\n return result as Result extends Promise<infer V>\n ? Promise<V>\n : Awaited<T>;\n }\n }\n }\n\n separator(): void {\n console.log();\n }\n}\n\nexport class LoggerCLIString extends LoggerCLI {\n constructor(\n key: string,\n {\n displayName,\n handlers,\n processors,\n json = false,\n noColor = false,\n }: LoggerCLIOptions = {},\n ) {\n super(key, { displayName, handlers, processors, json, noColor });\n }\n}\n","import { Logger } from \"nightingale-logger\";\n\nexport { Logger } from \"nightingale-logger\";\nexport { Level, Level as levels } from \"nightingale-levels\";\nexport { configure, addConfig } from \"./config\";\nexport * from \"./formatter-utils\";\nexport { createFindDebugLevel } from \"./debug/debug\";\nexport { RawFormatter } from \"./formatters/RawFormatter\";\nexport { MarkdownFormatter } from \"./formatters/MarkdownFormatter\";\nexport { JSONFormatter } from \"./formatters/JSONFormatter\";\nexport { ANSIFormatter } from \"./formatters/ANSIFormatter\";\nexport { HTMLFormatter } from \"./formatters/HTMLFormatter\";\nexport { BrowserConsoleFormatter } from \"./formatters/BrowserConsoleFormatter\";\nexport { consoleOutput } from \"./outputs/consoleOutput\";\nexport { StringHandler } from \"./handlers/StringHandler\";\nexport { BrowserConsoleHandler } from \"./handlers/BrowserConsoleHandler\";\nexport { ConsoleHandler } from \"./handlers/ConsoleHandler\";\nexport { ConsoleCLIHandler } from \"./handlers/ConsoleCLIHandler\";\nexport { LoggerCLI } from \"./loggers/LoggerCLI\";\nexport { formatStyles } from \"./formatter-utils/formatStyles\";\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n \"nightingale:listenUnhandledErrors\",\n \"UnhandledErrors\",\n ),\n): void {\n process.on(\"uncaughtException\", (error) => {\n logger.error(error, {\n unhandled: true,\n type: \"uncaughtException\",\n });\n });\n process.on(\"unhandledRejection\", (error) => {\n logger.error(error as Error, {\n unhandled: true,\n type: \"unhandledRejection\",\n });\n });\n}\n"],"names":["style","findDebugLevel","createHandle","Level"],"mappings":"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"}
|
|
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 { JSONFormatter } from \"../formatters/JSONFormatter.ts\";\nimport { RawFormatter } from \"../formatters/RawFormatter.ts\";\nimport { cliConsoleOutput } from \"../outputs/cliConsoleOutput.ts\";\nimport { consoleOutput } from \"../outputs/consoleOutput.ts\";\n\nconst createHandle = ({\n json,\n noColor = process.env.NO_COLOR === \"1\" || process.env.NO_COLOR === \"true\",\n}: ConsoleCLIHandlerOptions): Handle => {\n const formatter = (() => {\n if (json) return JSONFormatter.format;\n if (noColor) return RawFormatter.format;\n return ANSIFormatter.format;\n })();\n const output = json ? consoleOutput : cliConsoleOutput;\n return <T extends Metadata>(record: LogRecord<T>): void => {\n output(formatter(record), record);\n };\n};\nconst findDebugLevel = createFindDebugLevel(process.env.DEBUG);\n\nexport interface ConsoleCLIHandlerOptions {\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class ConsoleCLIHandler implements Handler {\n minLevel: Level = Level.ALL;\n\n isHandling: IsHandling;\n\n handle: Handle;\n\n constructor(minLevel: Level, options: ConsoleCLIHandlerOptions = {}) {\n this.minLevel = minLevel;\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n this.handle = createHandle(options);\n }\n}\n","import type { ComputedConfigForKey } from \"nightingale-logger\";\nimport { Level, Logger } from \"nightingale-logger\";\nimport type { Handler, Processor } from \"nightingale-types\";\nimport { ConsoleCLIHandler } from \"../handlers/ConsoleCLIHandler.ts\";\n\nexport interface LoggerCLIOptions {\n displayName?: string;\n handlers?: Handler[];\n processors?: Processor[];\n json?: boolean;\n noColor?: boolean;\n}\n\nexport class LoggerCLI extends Logger {\n private handlers: Handler[];\n private processors: Processor[] = [];\n private json: boolean;\n constructor(\n key: string,\n { displayName, processors, json = false, noColor }: LoggerCLIOptions = {},\n ) {\n super(key, displayName);\n this.handlers = [new ConsoleCLIHandler(Level.INFO, { json, noColor })];\n this.processors = processors ?? [];\n this.json = json;\n }\n\n protected override getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return {\n handlers: this.handlers,\n processors: this.processors,\n };\n }\n\n logJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n level: Level = Level.INFO,\n ): void {\n if (this.json) {\n this.log(messageOrError, metadata, level);\n }\n }\n\n debugJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.debug(messageOrError, metadata);\n }\n }\n\n noticeJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.notice(messageOrError, metadata);\n }\n }\n\n infoJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.info(messageOrError, metadata);\n }\n }\n\n warnJsonOnly(\n messageOrError: string,\n metadata: Record<string, unknown>,\n ): void {\n if (this.json) {\n this.warn(messageOrError, metadata);\n }\n }\n\n group<T, Result extends Awaited<T> | Promise<T>>(\n name: string,\n fn: () => Result,\n ): Result extends Promise<infer V> ? Promise<V> : Awaited<T> {\n if (this.json) {\n return fn() as Result extends Promise<infer V> ? Promise<V> : Awaited<T>;\n } else {\n console.group(name);\n const result = fn();\n if (result instanceof Promise) {\n return result.finally(() => {\n console.groupEnd();\n }) as Result extends Promise<infer V> ? Promise<V> : never;\n } else {\n console.groupEnd();\n return result as Result extends Promise<infer V>\n ? Promise<V>\n : Awaited<T>;\n }\n }\n }\n\n separator(): void {\n console.log();\n }\n}\n\nexport class LoggerCLIString extends LoggerCLI {\n constructor(\n key: string,\n {\n displayName,\n handlers,\n processors,\n json = false,\n noColor = false,\n }: LoggerCLIOptions = {},\n ) {\n super(key, { displayName, handlers, processors, json, noColor });\n }\n}\n","import { Logger } from \"nightingale-logger\";\n\nexport { Logger } from \"nightingale-logger\";\nexport { Level, Level as levels } from \"nightingale-levels\";\nexport { configure, addConfig } from \"./config.ts\";\nexport * from \"./formatter-utils/index.ts\";\nexport { createFindDebugLevel } from \"./debug/debug.ts\";\nexport { RawFormatter } from \"./formatters/RawFormatter.ts\";\nexport { MarkdownFormatter } from \"./formatters/MarkdownFormatter.ts\";\nexport { JSONFormatter } from \"./formatters/JSONFormatter.ts\";\nexport { ANSIFormatter } from \"./formatters/ANSIFormatter.ts\";\nexport { HTMLFormatter } from \"./formatters/HTMLFormatter.ts\";\nexport { BrowserConsoleFormatter } from \"./formatters/BrowserConsoleFormatter.ts\";\nexport { consoleOutput } from \"./outputs/consoleOutput.ts\";\nexport { StringHandler } from \"./handlers/StringHandler.ts\";\nexport { BrowserConsoleHandler } from \"./handlers/BrowserConsoleHandler.ts\";\nexport { ConsoleHandler } from \"./handlers/ConsoleHandler.ts\";\nexport { ConsoleCLIHandler } from \"./handlers/ConsoleCLIHandler.ts\";\nexport { LoggerCLI } from \"./loggers/LoggerCLI.ts\";\nexport { formatStyles } from \"./formatter-utils/formatStyles.ts\";\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n \"nightingale:listenUnhandledErrors\",\n \"UnhandledErrors\",\n ),\n): void {\n process.on(\"uncaughtException\", (error) => {\n logger.error(error, {\n unhandled: true,\n type: \"uncaughtException\",\n });\n });\n process.on(\"unhandledRejection\", (error) => {\n logger.error(error as Error, {\n unhandled: true,\n type: \"unhandledRejection\",\n });\n });\n}\n"],"names":["style","findDebugLevel","createHandle","Level"],"mappings":";;;;;;AAGA,MAAM,cAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,GAAU,MAAA;AAE5C,IACE,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,IACzB,eAAe,6BAAA,EACf;AACA,EAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AACrD;AAEA,IAAI,CAAC,eAAe,oBAAA,EAAsB;AACxC,EAAA,cAAA,CAAe,uBAAuB,EAAC;AACvC,EAAA,cAAA,CAAe,8BAAA,uBAAqC,GAAA,EAGlD;AACF,EAAA,cAAA,CAAe,4BAAA,GAA+B;AAAA,IAC5C,UAAU,EAAC;AAAA,IACX,YAAY;AAAC,GACf;AACF;AAEA,SAAS,UAAA,GAAmB;AAC1B,EAAA,cAAA,CAAe,+BAA+B,KAAA,EAAM;AACtD;AAEA,SAAS,aAAa,MAAA,EAAwB;AAC5C,EAAA,IAAI,OAAO,IAAA,EAAM;AACf,IAAA,IAAI,OAAO,OAAA,EAAS;AAClB,MAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,IACnE;AACA,IAAA,IAAI,OAAO,GAAA,EAAK;AACd,MAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,IAChE;AAAA,EACF,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,IAAA,IAAI,OAAO,OAAA,EAAS;AAClB,MAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,IACnE;AACA,IAAA,MAAA,CAAO,IAAA,GAAO,CAAC,MAAA,CAAO,GAAG,CAAA;AACzB,IAAA,OAAO,MAAA,CAAO,GAAA;AAAA,EAChB;AAEA,EAAA,IAAI,OAAO,OAAA,EAAS;AAClB,IAAA,IAAI,OAAO,QAAA,EAAU;AACnB,MAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA,IACxE;AACA,IAAA,MAAA,CAAO,QAAA,GAAW,CAAC,MAAA,CAAO,OAAO,CAAA;AACjC,IAAA,OAAO,MAAA,CAAO,OAAA;AAAA,EAChB;AAEA,EAAA,IAAI,OAAO,SAAA,EAAW;AACpB,IAAA,IAAI,OAAO,UAAA,EAAY;AACrB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAA,CAAO,UAAA,GAAa,CAAC,MAAA,CAAO,SAAS,CAAA;AACrC,IAAA,OAAO,MAAA,CAAO,SAAA;AAAA,EAChB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,UAAU,MAAA,EAAwB;AAChD,EAAA,IAAI,cAAA,CAAe,oBAAA,CAAqB,MAAA,GAAS,CAAA,EAAG;AAElD,IAAA,OAAA,CAAQ,IAAI,yCAAyC,CAAA;AAAA,EACvD;AAEA,EAAA,UAAA,EAAW;AACX,EAAA,cAAA,CAAe,oBAAA,GAAuB,MAAA,CAAO,GAAA,CAAI,YAAY,CAAA;AAC/D;AAEO,SAAS,SAAA,CAAU,MAAA,EAAgB,OAAA,GAAU,KAAA,EAAa;AAC/D,EAAA,MAAA,GAAS,aAAa,MAAM,CAAA;AAC5B,EAAA,cAAA,CAAe,oBAAA,CAAqB,OAAA,GAAU,SAAA,GAAY,MAAM,EAAE,MAAM,CAAA;AACxE,EAAA,UAAA,EAAW;AACb;AAEA,MAAM,cAAA,GAAiB,CAAC,GAAA,KAAgB,CAAC,MAAA,KAAmB;AAC1D,EAAA,IAAI,OAAO,IAAA,EAAM,OAAO,MAAA,CAAO,IAAA,CAAK,SAAS,GAAG,CAAA;AAChD,EAAA,IAAI,OAAO,OAAA,EAAS,OAAO,MAAA,CAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAClD,EAAA,OAAO,IAAA;AACT,CAAA;AAEA,cAAA,CAAe,mCAAA,GAAsC,CACnD,GAAA,KACyB;AACzB,EAAA,MAAM,cAAc,cAAA,CAAe,8BAAA;AAEnC,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,GAAA,CAAI,GAAG,CAAA;AAEzC,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,OAAO,aAAA;AAAA,EACT;AAEA,EAAA,MAAM,YAAA,GAAqC;AAAA,IACzC,UAAU,EAAC;AAAA,IACX,YAAY;AAAC,GACf;AAEA,EAAA,cAAA,CAAe,oBAAA,CACZ,OAAO,cAAA,CAAe,GAAG,CAAC,CAAA,CAC1B,IAAA,CAAK,CAAC,MAAA,KAAmB;AACxB,IAAA,IAAI,OAAO,QAAA,EAAU,YAAA,CAAa,SAAS,IAAA,CAAK,GAAG,OAAO,QAAQ,CAAA;AAClE,IAAA,IAAI,OAAO,UAAA,EAAY,YAAA,CAAa,WAAW,IAAA,CAAK,GAAG,OAAO,UAAU,CAAA;AACxE,IAAA,OAAO,MAAA,CAAO,IAAA;AAAA,EAChB,CAAC,CAAA;AAEH,EAAA,WAAA,CAAY,GAAA,CAAI,KAAK,YAAY,CAAA;AACjC,EAAA,OAAO,YAAA;AACT,CAAA;AAEA,IAAI,eAAe,0CAAA,EAA4C;AAC7D,EAAA,cAAA,CAAe,0CAAA,GAA6C,CAC1D,GAAA,EACA,KAAA,KACyB;AACzB,IAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAW,GAC3B,cAAA,CAAe,oCAAoC,GAAG,CAAA;AAExD,IAAA,OAAO;AAAA,MACL,UAAU,QAAA,CAAS,MAAA;AAAA,QACjB,CAAC,OAAA,KACC,KAAA,IAAS,OAAA,CAAQ,QAAA,KAChB,CAAC,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,UAAA,CAAW,KAAA,EAAO,GAAG,CAAA;AAAA,OACzD;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA;AACF;;ACjIO,MAAM,aAAA,GAA+B;AAAA,EAC1C,CAAC,KAAA,CAAM,KAAK,GAAG,CAAC,MAAM,CAAA;AAAA,EACtB,CAAC,KAAA,CAAM,KAAK,GAAG,CAAC,MAAM,CAAA;AAAA;AAAA,EAEtB,CAAC,KAAA,CAAM,IAAI,GAAG,CAAC,QAAQ,CAAA;AAAA,EACvB,CAAC,KAAA,CAAM,KAAK,GAAG,CAAC,OAAO,MAAM,CAAA;AAAA,EAC7B,CAAC,KAAA,CAAM,QAAQ,GAAG,CAAC,OAAO,MAAM,CAAA;AAAA,EAChC,CAAC,KAAA,CAAM,KAAK,GAAG,CAAC,SAAS,OAAO,CAAA;AAAA,EAChC,CAAC,KAAA,CAAM,SAAS,GAAG,CAAC,SAAS,OAAO;AACtC;;ACTO,MAAM,aAAA,GAA+B;AAAA,EAC1C,CAAC,KAAA,CAAM,KAAK,GAAG,QAAA;AAAA,EACf,CAAC,KAAA,CAAM,KAAK,GAAG,QAAA;AAAA,EACf,CAAC,KAAA,CAAM,IAAI,GAAG,QAAA;AAAA,EACd,CAAC,KAAA,CAAM,IAAI,GAAG,QAAA;AAAA,EACd,CAAC,KAAA,CAAM,KAAK,GAAG,QAAA;AAAA,EACf,CAAC,KAAA,CAAM,QAAQ,GAAG,GAAA;AAAA,EAClB,CAAC,KAAA,CAAM,KAAK,GAAG,QAAA;AAAA,EACf,CAAC,KAAA,CAAM,SAAS,GAAG;AACrB;;ACbO,MAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ;AACV;;ACKO,MAAM,0BAAA,GAA6B;AAAA;AAAA,EAExC,IAAA,EAAM,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAO,qBAAA,EAAsB;AAAA,EAChE,MAAA,EAAQ,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAO,oBAAA,EAAqB;AAAA,EAClE,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,6CAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,+BAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EAEA,KAAA,EAAO,EAAE,IAAA,EAAM,cAAA,EAAgB,OAAO,qBAAA,EAAsB;AAAA,EAC5D,GAAA,EAAK,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAO,qBAAA,EAAsB;AAAA,EAC5D,KAAA,EAAO,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAO,qBAAA,EAAsB;AAAA,EAC9D,MAAA,EAAQ,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAO,qBAAA,EAAsB;AAAA,EAC/D,IAAA,EAAM,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAO,qBAAA,EAAsB;AAAA,EAC7D,OAAA,EAAS,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAO,qBAAA,EAAsB;AAAA,EAChE,IAAA,EAAM,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAO,qBAAA,EAAsB;AAAA,EAC7D,KAAA,EAAO,EAAE,IAAA,EAAM,cAAA,EAAgB,OAAO,qBAAA,EAAsB;AAAA,EAC5D,IAAA,EAAM,EAAE,IAAA,EAAM,aAAA,EAAe,OAAO,qBAAA,EAAsB;AAAA,EAC1D,GAAA,EAAK,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAO,qBAAA,EAAsB;AAAA,EAE5D,OAAA,EAAS,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAO,qBAAA,EAAsB;AAAA,EACnE,KAAA,EAAO,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAO,qBAAA,EAAsB;AAAA,EACnE,OAAA,EAAS,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAO,qBAAA,EAAsB;AAAA,EACrE,QAAA,EAAU,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAO,qBAAA,EAAsB;AAAA,EACtE,MAAA,EAAQ,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAO,qBAAA,EAAsB;AAAA,EACpE,SAAA,EAAW,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAO,qBAAA,EAAsB;AAAA,EACvE,MAAA,EAAQ,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAO,qBAAA,EAAsB;AAAA,EACpE,OAAA,EAAS,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAO,qBAAA,EAAsB;AAAA,EAEnE,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,CAAA,QAAA,EAAW,eAAA,CAAgB,MAAM,CAAA,CAAA;AAAA,IACvC,KAAA,EAAO;AAAA;AAEX;AAMO,MAAM,yBAAA,GAA8C;AAAA,EACzD,GAAG,0BAAA;AAAA,EACH,OAAO,0BAAA,CAA2B,KAAA;AAAA,EAClC,SAAS,0BAAA,CAA2B,OAAA;AAAA,EACpC,OAAO,0BAAA,CAA2B,KAAA;AAAA,EAClC,SAAS,0BAAA,CAA2B,OAAA;AAAA,EACpC,IAAA,EAAM,EAAE,IAAA,EAAM,kBAAA,EAAoB,OAAO,qBAAA;AAC3C;;AC3DO,MAAM,YAAA,GAAe;AAAA,EAC1B,MAAA,EAAQ,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,EACzB,OAAA,EAAS,CAAC,OAAO,CAAA;AAAA,EACjB,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,EAChB,KAAA,EAAO,CAAC,KAAK,CAAA;AAAA,EACb,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,EACjB,IAAA,EAAM,CAAC,MAAM,CAAA;AAAA,EACb,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,EACjB,MAAA,EAAQ,CAAC,SAAS,CAAA;AAAA,EAClB,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,EACjB,MAAA,EAAQ,CAAC,SAAS,CAAA;AAAA,EAClB,SAAA,EAAW,CAAC,KAAK;AACnB;;ACDA,MAAM,SAAA,GAAqB,CAAC,MAAA,EAAgB,KAAA,KAA0B,KAAA;AAuCtE,SAAS,aAAa,GAAA,EAAsB;AAC1C,EAAA,IAAI;AACF,IAAA,OAAO,KAAK,SAAA,CAAU,GAAG,CAAA,CAAE,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAAA,EACjD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,YAAA;AAAA,EACT;AACF;AAEA,MAAM,qBAAA,GAAwB,CAAC,KAAA,MAAmC;AAAA,EAChE,WAAA,EAAa,KAAA;AAAA,EACb,cAAA,EAAgB;AAClB,CAAA,CAAA;AAEA,MAAM,gBAAA,GAAmB,GAAA;AAEzB,MAAM,kBAAA,GAAqB,CAAC,eAAA,KAAoC;AAC9D,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,IAAI,IAAI,eAAA,CAAgB,MAAA;AACxB,EAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,UAAA,CAAW,GAAG,IAAI,CAAA,GAAI,CAAA;AACpD,EAAA,OAAO,CAAA,IAAK,KAAA,GAAQ,CAAA,EAAG,CAAA,IAAK,CAAA,EAAG;AAC7B,IAAA,MAAA,GAAS,CAAA,EAAG,gBAAgB,CAAA,EAAG,eAAA,CAAgB,KAAA,CAAM,IAAI,CAAA,EAAG,CAAC,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA;AAAA,EACzE;AACA,EAAA,OAAO,CAAA,KAAM,eAAA,CAAgB,MAAA,GACzB,eAAA,GACA,CAAA,EAAG,eAAA,CAAgB,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA;AAC7C,CAAA;AAEA,MAAM,yBAAA,GAA4B,CAAC,eAAA,KAAoC;AACrE,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,IAAI,CAAA,GAAI,CAAA;AACR,EAAA,OAAO,CAAA,GAAI,eAAA,CAAgB,MAAA,GAAS,CAAA,EAAG,KAAK,CAAA,EAAG;AAC7C,IAAA,MAAA,IAAU,CAAA,EAAG,gBAAgB,KAAA,CAAM,CAAA,EAAG,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAA,CAAA;AAAA,EACjE;AACA,EAAA,OAAO,CAAA,KAAM,IAAI,eAAA,GAAkB,CAAA,EAAG,MAAM,CAAA,EAAG,eAAA,CAAgB,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACzE,CAAA;AAEA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAA0B;AACnD,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,EAAG;AACvB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,KAAU,OAAO,iBAAA,EAAmB;AACtC,IAAA,OAAO,WAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,KAAU,OAAO,iBAAA,EAAmB;AACtC,IAAA,OAAO,WAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,KAAU,OAAO,OAAA,EAAS;AAC5B,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,IAAI,MAAA,CAAO,EAAA,CAAG,KAAA,EAAO,EAAE,CAAA,EAAG;AACxB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAChC,EAAA,MAAM,eAAA,GAAkB,QAAQ,QAAA,EAAS;AACzC,EAAA,IAAI,YAAY,KAAA,EAAO;AACrB,IAAA,IAAI,eAAA,CAAgB,QAAA,CAAS,GAAG,CAAA,EAAG;AACjC,MAAA,OAAO,eAAA;AAAA,IACT;AACA,IAAA,OAAO,mBAAmB,eAAe,CAAA;AAAA,EAC3C,CAAA,MAAO;AACL,IAAA,OAAO,CAAA,EAAG,kBAAA,CAAmB,eAAe,CAAC,IAAI,yBAAA,CAA0B,MAAA,CAAO,KAAK,CAAA,CAAE,KAAA,CAAM,eAAA,CAAgB,MAAA,GAAS,CAAC,CAAC,CAAC,CAAA,CAAA;AAAA,EAC7H;AACF,CAAA;AAEA,SAAS,mBAAA,CACP,OACA,OAAA,EACA,MAAA,EACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ,EACpB;AAChB,EAAA,MAAM,cAAc,OAAO,KAAA;AAE3B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,MAAA,GAAS,CAAC,MAAM,CAAA;AAAA,IAClB,CAAA,MAAO;AACL,MAAA,QAAQ,WAAA;AAAa,QACnB,KAAK,QAAA;AACH,UAAA,MAAA,GAAS,YAAA,CAAa,MAAA;AACtB,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,MAAA,GAAS,YAAA,CAAa,OAAA;AACtB,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,MAAA,GAAS,YAAA,CAAa,SAAA;AACtB,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,MAAA,GAAS,YAAA,CAAa,MAAA;AACtB,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,MAAA,GAAS,YAAA,CAAa,MAAA;AACtB,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,MAAA,GAAS,YAAA,CAAa,MAAA;AACtB,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,YAAA,MAAA,GAAS,YAAA,CAAa,IAAA;AAAA,UACxB;AACA,UAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,YAAA,MAAA,GAAS,YAAA,CAAa,MAAA;AAAA,UACxB;AACA,UAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,YAAA,MAAA,GAAS,YAAA,CAAa,KAAA;AAAA,UACxB;AACA,UAAA;AAAA,QACF,KAAK,UAAA;AACH,UAAA,MAAA,GAAS,YAAA,CAAa,QAAA;AACtB,UAAA;AAEA;AACJ,IACF;AAAA,EACF;AAEA,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,WAAA,GAAc,MAAA;AAAA,EAChB,CAAA,MAAA,IAAW,UAAU,MAAA,EAAW;AAC9B,IAAA,WAAA,GAAc,WAAA;AAAA,EAChB,CAAA,MAAA,IAAW,gBAAgB,QAAA,EAAU;AACnC,IAAA,WAAA,GAAc,kBAAkB,KAAe,CAAA;AAAA,EACjD,CAAA,MAAA,IAAW,gBAAgB,SAAA,EAAW;AAEpC,IAAA,WAAA,GAAe,MAAc,QAAA,EAAS;AAAA,EACxC,CAAA,MAAA,IAAY,KAAA,CAAwB,WAAA,KAAgB,MAAA,EAAQ;AAC1D,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,WAAA,GAAc,aAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,OAAO,oBAAA;AAAA,QACL,KAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,UACE,OAAA;AAAA,UACA,OAAO,KAAA,GAAQ,CAAA;AAAA,UACf,QAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,IACF;AAAA,EACF,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC/B,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,WAAA,GAAc,YAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,OAAO,mBAAA,CAAoB,OAAO,OAAA,EAAS;AAAA,QACzC,OAAA;AAAA,QACA,OAAO,KAAA,GAAQ,CAAA;AAAA,QACf,QAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH;AAAA,EACF,CAAA,MAAA,IAAW,iBAAiB,KAAA,EAAO;AACjC,IAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,IAAA,WAAA,GACE,OAAO,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA,IAC/B,KAAA,EAAO,WAAW,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,EAAA,EAAK,MAAM,OAAO,CAAA,CAAE,IAC/C,KAAA,GACA,CAAA,EAAG,MAAM,OAAO;AAAA,EAAK,SAAS,EAAE,CAAA,CAAA;AAAA,EACxC,CAAA,MAAA,IAAW,iBAAiB,GAAA,EAAK;AAC/B,IAAA,MAAM,IAAA,GAAO,MAAM,WAAA,CAAY,IAAA;AAC/B,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,WAAA,GAAc,IAAI,IAAI,CAAA,IAAA,CAAA;AAAA,IACxB,CAAA,MAAO;AACL,MAAA,OAAO,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS;AAAA,QAC7C,OAAA;AAAA,QACA,OAAO,KAAA,GAAQ,CAAA;AAAA,QACf,QAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH;AAAA,EACF,CAAA,MAAA,IAAW,gBAAgB,QAAA,EAAU;AACnC,IAAA,WAAA,GAAc,CAAA,SAAA,EAAa,KAAA,CAAiB,QAAA,EAAU,CAAA,CAAA,CAAA;AAAA,EACxD,CAAA,MAAA,IAAW,gBAAgB,QAAA,EAAU;AACnC,IAAA,WAAA,GAAe,MAAiB,QAAA,EAAS;AAAA,EAC3C,CAAA,MAAA,IAAW,iBAAiB,GAAA,EAAK;AAC/B,IAAA,MAAM,IAAA,GAAO,MAAM,WAAA,CAAY,IAAA;AAC/B,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,WAAA,GAAc,IAAI,IAAI,CAAA,IAAA,CAAA;AAAA,IACxB,CAAA,MAAO;AACL,MAAA,OAAO,iBAAA,CAAkB,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS;AAAA,QAC7C,OAAA;AAAA,QACA,OAAO,KAAA,GAAQ,CAAA;AAAA,QACf,QAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH;AAAA,EACF,CAAA,MAAA,IAAW,iBAAiB,OAAA,EAAS;AACnC,IAAA,WAAA,GAAc,cAAA;AAAA,EAChB,CAAA,MAAA,IAAW,iBAAiB,OAAA,EAAS;AACnC,IAAA,WAAA,GAAc,cAAA;AAAA,EAChB,CAAA,MAAA,IAAW,iBAAiB,IAAA,EAAM;AAChC,IAAA,WAAA,GAAc,CAAA,OAAA,EAAU,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA,CAAA;AAAA,EAC7C,CAAA,MAAA,IAAW,iBAAiB,MAAA,EAAQ;AAClC,IAAA,WAAA,GAAc,CAAA,SAAA,EAAY,KAAA,CAAM,QAAA,EAAU,CAAA,CAAA,CAAA;AAAA,EAC5C,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,UAAA,EAAY;AACtC,IAAA,WAAA,GAAc,CAAA,WAAA,EAAc,MAAM,IAAI,CAAA,CAAA,CAAA;AAAA,EACxC,CAAA,MAAO;AACL,IAAA,WAAA,GAAc,aAAa,KAAK,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,MAAA,EAAQ,WAAW,CAAA;AAElD,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,MAAM,SAAA,GAAY,GAAA;AAElB,MAAM,iBAAA,GAAuC,CAC3C,GAAA,EACA,OAAA,EACA,oBAAA,KACiB;AACjB,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,GAAG,GAAG,CAAA,EAAA,CAAA;AAAA,IACjB,YAAA,EAAc,CAAA,EAAG,OAAA,CAAQ,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA;AAAA,GACtD;AACF,CAAA;AAEA,MAAM,aAAA,GAAsC,CAC1C,GAAA,EACA,OAAA,EACA,oBAAA,KACiB;AACjB,EAAA,OAAO,EAAE,SAAA,EAAW,EAAA,EAAI,YAAA,EAAc,EAAA,EAAG;AAC3C,CAAA;AAEA,MAAM,oBAAA,GAA2C,CAC/C,GAAA,EACA,OAAA,EACA,oBAAA,KACiB;AACjB,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAe,GAAI,mBAAA;AAAA,IACtC,GAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,GAAG,WAAW,CAAA,IAAA,CAAA;AAAA,IACzB,YAAA,EAAc,CAAA,EAAG,OAAA,CAAQ,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,EAAG,cAAc,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA;AAAA,GACjE;AACF,CAAA;AAEA,MAAM,sBAAA,GAAyB,CAC7B,MAAA,EACA,OAAA,EACA,YAAA,EACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ,EACpC;AAAA,EACE,MAAA;AAAA,EACA,MAAA;AAAA,EACA,iBAAA,GAAoB,GAAA;AAAA,EACpB;AACF,CAAA,KACmB;AACnB,EAAA,IAAI,SAAA,GAAY,KAAA;AAChB,EAAA,MAAM,qBAAqB,MAAc,OAAA,CAAQ,CAAC,MAAM,GAAG,SAAS,CAAA;AAEpE,EAAA,MAAM,cAAA,GAAiB,OAAO,MAAA,GAAS,CAAA;AACvC,EAAA,MAAM,kBAAoC,MAAA,CAAO,GAAA;AAAA,IAC/C,CAAC,EAAE,GAAA,EAAK,KAAA,IAAS,KAAA,KAAkB;AACjC,MAAA,MAAM,YAAY,KAAA,GAAQ,CAAA;AAC1B,MAAA,MAAM,oBAAA,GAAuB;AAAA,QAC3B,OAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA;AAAA,OACF;AAGA,MAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAI,SAAA;AAAA,QAClC,GAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACF;AAEA,MAAA,IAAI,EAAE,WAAA,EAAa,cAAA,EAAe,GAAI,mBAAA;AAAA,QACpC,KAAA;AAAA,QACA,OAAA;AAAA,QACA,GAAA,IAAO,YAAA,GACH,YAAA,CAAa,GAAwB,CAAA,GACrC,MAAA;AAAA,QACJ;AAAA,OACF;AAEA,MAAA,IACE,gBACC,WAAA,CAAY,MAAA,GAAS,MAAM,WAAA,CAAY,QAAA,CAAS,IAAI,CAAA,CAAA,EACrD;AACA,QAAA,SAAA,GAAY,IAAA;AACZ,QAAA,WAAA,GAAc,WAAA,CAAY,QAAQ,KAAA,EAAO;AAAA,EAAK,OAAO,CAAA,CAAE,CAAA;AACvD,QAAA,cAAA,GAAiB,cAAA,CAAe,QAAQ,KAAA,EAAO;AAAA,EAAK,OAAO,CAAA,CAAE,CAAA;AAAA,MAC/D;AAEA,MAAA,OAAO;AAAA,QACL,WAAA,EACE,SAAA,GAAY,WAAA,IAAe,KAAA,KAAU,iBAAiB,EAAA,GAAK,SAAA,CAAA;AAAA,QAC7D,gBACE,YAAA,GACA,cAAA,IACC,KAAA,KAAU,cAAA,GAAiB,KAAK,kBAAA,EAAmB;AAAA;AAAA,OAExD;AAAA,IACF;AAAA,GACF;AAEA,EAAA,OAAO;AAAA,IACL,WAAA,EACE,SACA,eAAA,CACG,GAAA;AAAA,MACC,SAAA,GACI,CAAC,CAAA,KAAM;AAAA,EAAK,OAAO,CAAA,EAAG,CAAA,CAAE,WAAW,CAAA,CAAA,GACnC,CAAC,OAAO,EAAA,CAAG;AAAA,KACjB,CACC,IAAA,CAAK,SAAA,GAAY,IAAA,GAAO,GAAG,CAAA,GAC9B,MAAA;AAAA,IACF,cAAA,EAAgB,GAAG,MAAM,CAAA,EACvB,YAAY,EAAA,GAAK,iBACnB,GAAG,eAAA,CACA,GAAA;AAAA,MACC,SAAA,GACI,CAAC,CAAA,KAAM;AAAA,EAAK,OAAO,CAAA,EAAG,CAAA,CAAE,cAAc,CAAA,CAAA,GACtC,CAAC,MAAM,CAAA,CAAE;AAAA,KACf,CACC,IAAA,CAAK,SAAA,GAAY,EAAA,GAAK,GAAG,CAAC,CAAA,EAC3B,SAAA,GAAY,KAAA,GAAQ,iBACtB,CAAA,EAAG,MAAM,CAAA;AAAA,GACX;AACF,CAAA;AAEA,SAAS,oBAAA,CACP,QACA,OAAA,EACA,YAAA,EACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ,EACpB;AAChB,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,EAAG;AACvB,IAAA,OAAO,sBAAsB,mBAAmB,CAAA;AAAA,EAClD;AAEA,EAAA,MAAM,IAAA,GAAiB,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AACzC,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,sBAAsB,IAAI,CAAA;AAAA,EACnC;AAEA,EAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAElB,EAAA,MAAM,MAAA,GAAS,sBAAA;AAAA,IACb,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,MAAS,EAAE,KAAK,KAAA,EAAO,MAAA,CAAO,GAAG,CAAA,EAAE,CAAE,CAAA;AAAA,IAC/C,OAAA;AAAA,IACA,YAAA;AAAA,IACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ;AAAA,IACpC,EAAE,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,WAAW,iBAAA;AAAkB,GAC3D;AAEA,EAAA,OAAA,CAAQ,OAAO,MAAM,CAAA;AAErB,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iBAAA,CACP,MACA,GAAA,EACA,OAAA,EACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ,EACpB;AAChB,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,EAAG;AACpB,IAAA,OAAO,qBAAA,CAAsB,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EACnD;AAEA,EAAA,MAAM,IAAA,GAAO,CAAC,GAAG,GAAA,CAAI,MAAM,CAAA;AAC3B,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,qBAAA,CAAsB,CAAA,EAAG,IAAI,CAAA,GAAA,CAAK,CAAA;AAAA,EAC3C;AAEA,EAAA,OAAA,CAAQ,IAAI,GAAG,CAAA;AAEf,EAAA,MAAM,MAAA,GAAS,sBAAA;AAAA,IACb,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,MAAS,EAAE,GAAA,EAAK,KAAA,EAAO,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA,EAAE,CAAE,CAAA;AAAA,IAChD,OAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ;AAAA,IACpC,EAAE,QAAQ,CAAA,EAAG,IAAI,MAAM,MAAA,EAAQ,GAAA,EAAK,WAAW,oBAAA;AAAqB,GACtE;AAEA,EAAA,OAAA,CAAQ,OAAO,GAAG,CAAA;AAElB,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mBAAA,CACP,OACA,OAAA,EACA,EAAE,SAAS,KAAA,EAAO,QAAA,EAAU,SAAQ,EACpB;AAChB,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,EAAG;AACtB,IAAA,OAAO,sBAAsB,kBAAkB,CAAA;AAAA,EACjD;AAEA,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,sBAAsB,IAAI,CAAA;AAAA,EACnC;AAEA,EAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AAEjB,EAAA,MAAM,MAAA,GAAS,sBAAA;AAAA,IACb,KAAA,CAAM,IAAI,CAAC,KAAA,MAAW,EAAE,GAAA,EAAK,MAAA,EAAW,OAAM,CAAE,CAAA;AAAA,IAChD,OAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ;AAAA,IACpC;AAAA,MACE,MAAA,EAAQ,GAAA;AAAA,MACR,MAAA,EAAQ,GAAA;AAAA,MACR,iBAAA,EAAmB,EAAA;AAAA,MACnB,SAAA,EAAW;AAAA;AACb,GACF;AAEA,EAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AAEpB,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iBAAA,CACP,MACA,GAAA,EACA,OAAA,EACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ,EACpB;AAChB,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,EAAG;AACpB,IAAA,OAAO,qBAAA,CAAsB,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,EACnD;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAA,CAAI,QAAQ,CAAA;AAC/B,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,qBAAA,CAAsB,CAAA,EAAG,IAAI,CAAA,GAAA,CAAK,CAAA;AAAA,EAC3C;AAEA,EAAA,OAAA,CAAQ,IAAI,GAAG,CAAA;AAEf,EAAA,MAAM,MAAA,GAAS,sBAAA;AAAA,IACb,MAAA,CAAO,IAAI,CAAC,KAAA,MAAW,EAAE,GAAA,EAAK,MAAA,EAAW,OAAM,CAAE,CAAA;AAAA,IACjD,OAAA;AAAA,IACA,MAAA;AAAA,IACA,EAAE,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,OAAA,EAAQ;AAAA,IACpC,EAAE,QAAQ,CAAA,EAAG,IAAI,MAAM,MAAA,EAAQ,GAAA,EAAK,WAAW,aAAA;AAAc,GAC/D;AAEA,EAAA,OAAA,CAAQ,OAAO,GAAG,CAAA;AAElB,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,YAAA,CACd,MAAA,EACA,OAAA,GAAmB,SAAA,EACnB,YAAA,EACA,EAAE,OAAA,GAAU,IAAA,EAAM,QAAA,GAAW,EAAA,EAAG,GAAyB,EAAC,EAClD;AACR,EAAA,MAAM,EAAE,cAAA,EAAgB,MAAA,EAAO,GAAI,oBAAA;AAAA,IACjC,MAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,MACE,OAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA,EAAO,CAAA;AAAA,MACP,OAAA,sBAAa,GAAA;AAAI;AACnB,GACF;AAEA,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA;AACT;;AC/gBO,SAAS,oBAAA,CACd,QACA,KAAA,EACuB;AACvB,EAAA,MAAM,QAAkB,EAAC;AAEzB,EAAA,IAAI,OAAO,WAAA,EAAa;AACtB,IAAA,KAAA,CAAM,KAAK,KAAA,CAAM,CAAC,KAAK,CAAA,EAAG,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,EAC/C,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,IAAA,KAAA,CAAM,KAAK,KAAA,CAAM,CAAC,KAAK,CAAA,EAAG,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,EACvC;AAEA,EAAA,IAAI,OAAO,QAAA,EAAU;AACnB,IAAA,KAAA,CAAM,IAAA;AAAA,MACJ,KAAA,CAAM,CAAC,MAAA,EAAQ,MAAM,GAAG,MAAA,CAAO,QAAA,CAAS,YAAA,EAAa,CAAE,KAAA,CAAM,GAAA,EAAK,CAAC,CAAA,CAAE,CAAC,CAAE;AAAA,KAC1E;AAAA,EAEF;AAEA,EAAA,IAAI,UAAkB,MAAA,CAAO,MAAA,IAAU,aAAA,CAAc,MAAA,CAAO,KAAK,CAAA,IAAK,EAAA;AACtE,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,IAAU,aAAA,CAAc,OAAO,KAAK,CAAA;AAE1D,EAAA,IAAI,OAAO,OAAA,EAAS;AAClB,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,IAAW,CAAA,CAAA,EAAI,OAAO,OAAO,CAAA,CAAA;AAAA,IAC/B,CAAA,MAAO;AACL,MAAA,OAAA,GAAU,MAAA,CAAO,OAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAA,GAAU,KAAA,CAAM,QAAQ,OAAO,CAAA;AAAA,IACjC;AACA,IAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAAA,EACpB;AAEA,EAAA,MAAM,kBAAA,GAAqB,CACzB,GAAA,EACA,MAAA,EACA,YAAA,KACS;AACT,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,YAAA,GAAe,YAAA,CAAa,MAAA,EAAQ,KAAA,EAAO,YAAY,CAAA;AAE7D,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,KAAK,YAAY,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,kBAAA,CAAmB,UAAA,EAAY,MAAA,CAAO,QAAA,EAAU,MAAA,CAAO,cAAc,CAAA;AACrE,EAAA,kBAAA,CAAmB,OAAA,EAAS,MAAA,CAAO,KAAA,EAAO,MAAS,CAAA;AACnD,EAAA,kBAAA,CAAmB,SAAA,EAAW,MAAA,CAAO,OAAA,EAAS,MAAS,CAAA;AAEvD,EAAA,OAAO,CAAC,KAAA,CAAM,IAAA,CAAK,GAAG,CAAC,CAAA;AACzB;;AC/DA,MAAM,kBAAA,GAAqB,mBAAA;AAK3B,MAAM,+BACJ,CAAC,MAAA,KACD,CAAC,MAAA,KACC,MAAA,CAAO,KAAK,MAAM,CAAA;AAEtB,MAAM,kCAAA,GAAqC,CAAC,KAAA,KAAgC;AAC1E,EAAA,IAAI,CAAC,MAAM,QAAA,CAAS,GAAG,GAAG,MAAM,IAAI,MAAM,4BAA4B,CAAA;AACtE,EAAA,OAAO,4BAAA,CAA6B,IAAI,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG,EAAE,CAAC,CAAC,CAAA;AACpE,CAAA;AAEA,MAAM,2BAAA,GAA8B,CAAC,KAAA,KAAgC;AACnE,EAAA,IAAI,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA,EAAG;AACxB,IAAA,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACzB,IAAA,OAAO,CAAC,MAAA,KAAmB,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA;AAAA,EACpD;AAEA,EAAA,OAAO,CAAC,WAAmB,MAAA,KAAW,KAAA;AACxC,CAAA;AAIO,SAAS,qBACd,UAAA,EACgB;AAChB,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,MAAM,cAA8B,EAAC;AACrC,EAAA,MAAM,QAAwB,EAAC;AAE/B,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC9B,IAAA,IAAI,sBAAsB,MAAA,EAAQ;AAChC,MAAA,WAAA,CAAY,IAAA,CAAK,4BAAA,CAA6B,UAAU,CAAC,CAAA;AACzD,MAAA,UAAA,GAAa,MAAA;AAAA,IACf,WAAW,UAAA,EAAY;AACrB,MAAA,UAAA,GAAa,WAAW,IAAA,EAAK;AAE7B,MAAA,IAAI,UAAA,CAAW,UAAA,CAAW,GAAG,CAAA,EAAG;AAC9B,QAAA,WAAA,CAAY,IAAA,CAAK,kCAAA,CAAmC,UAAU,CAAC,CAAA;AAC/D,QAAA,UAAA,GAAa,MAAA;AAAA,MACf,CAAA,MAAO;AACL,QAAA,UAAA,GAAa,UAAA,CAAW,MAAM,QAAQ,CAAA;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,UAAA,EAAY;AACd,IAAC,UAAA,CAAwB,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC1C,MAAA,IAAI,kBAAA,CAAmB,IAAA,CAAK,KAAK,CAAA,EAAG;AAClC,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,yBAAyB,KAAK,CAAA,0BAAA;AAAA,SAChC;AAAA,MACF;AAEA,MAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,MAAA,IAAI,UAAU,GAAA,EAAK;AACjB,QAAA,UAAA,GAAa,IAAA;AACb,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,EAAG;AACzB,QAAA,KAAA,CAAM,KAAK,2BAAA,CAA4B,KAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAAA,MACxD,CAAA,MAAA,IAAW,CAAC,UAAA,EAAY;AACtB,QAAA,WAAA,CAAY,IAAA,CAAK,2BAAA,CAA4B,KAAK,CAAC,CAAA;AAAA,MACrD;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,OAAO,MAAM,KAAA,CAAM,GAAA;AAAA,IACrB,CAAA,MAAO;AACL,MAAA,OAAO,CAAC,QAAA,EAAiB,GAAA,KACvB,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,GAAG,CAAC,CAAA,GAAI,QAAA,GAAW,KAAA,CAAM,GAAA;AAAA,IACvD;AAAA,EACF;AAEA,EAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5B,IAAA,OAAO,CAAC,QAAA,KAAoB,QAAA;AAAA,EAC9B;AAEA,EAAA,OAAO,CAAC,UAAiB,GAAA,KAAgB;AACvC,IAAA,IAAI,QAAA,KAAa,KAAA,CAAM,GAAA,IAAO,CAAC,GAAA,EAAK;AAClC,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,IAAI,YAAY,IAAA,CAAK,CAAC,OAAO,EAAA,CAAG,GAAG,CAAC,CAAA,EAAG;AACrC,MAAA,OAAO,KAAA,CAAM,KAAK,CAAC,IAAA,KAAS,KAAK,GAAG,CAAC,CAAA,GAAI,QAAA,GAAW,KAAA,CAAM,GAAA;AAAA,IAC5D;AAEA,IAAA,OAAO,QAAA;AAAA,EACT,CAAA;AACF;;AC/FO,SAASA,OAAA,CAAM,QAAgB,KAAA,EAAuB;AAC3D,EAAA,OAAO,KAAA;AACT;AAEO,MAAM,YAAA,GAAqC;AAAA,EAChD,OAAO,MAAA,EAAQ;AACb,IAAA,OAAO,oBAAA,CAAqB,QAAQA,OAAK,CAAA;AAAA,EAC3C;AACF;;ACRO,SAASA,OAAA,CAAM,QAAgB,MAAA,EAAwB;AAC5D,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,CAAC,MAAA,EAAQ;AAC7C,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,IAAA,EAAM,SAAA,KAAc;AACxC,IAAA,QAAQ,SAAA;AAAW,MACjB,KAAK,MAAA;AACH,QAAA,OAAO,IAAI,IAAI,CAAA,CAAA,CAAA;AAAA,MACjB,KAAK,QAAA;AACH,QAAA,OAAO,IAAI,IAAI,CAAA,CAAA,CAAA;AAAA,MACjB,KAAK,eAAA;AACH,QAAA,OAAO,IAAI,IAAI,CAAA,CAAA,CAAA;AAAA;AAKnB,IAAA,OAAO,IAAA;AAAA,EACT,GAAG,MAAM,CAAA;AACX;AAEO,MAAM,iBAAA,GAA0C;AAAA,EACrD,OAAO,MAAA,EAAQ;AACb,IAAA,OAAO,oBAAA,CAAqB,QAAQA,OAAK,CAAA;AAAA,EAC3C;AACF;;AC5BA,SAAS,WAAW,GAAA,EAAqC;AACvD,EAAA,MAAM,SAAkC,EAAC;AAEzC,EAAA,GAAA,CAAI,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC1B,IAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAE3B,MAAA;AAAA,IACF;AAGA,IAAA,MAAA,CAAO,MAAA,CAAO,GAAG,CAAC,CAAA,GAAI,KAAA;AAAA,EACxB,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,SAAA,CAAU,OAAgB,KAAA,EAAiC;AAClE,EAAA,OAAO,IAAA,CAAK,SAAA;AAAA,IACV,KAAA;AAAA,IACA,CAAC,KAAK,WAAA,KAAgB;AACpB,MAAA,IAAI,uBAAuB,GAAA,EAAK;AAC9B,QAAA,OAAO,WAAW,WAAW,CAAA;AAAA,MAC/B;AACA,MAAA,IAAI,uBAAuB,KAAA,EAAO;AAChC,QAAA,OAAO;AAAA,UACL,SAAS,WAAA,CAAY,OAAA;AAAA,UACrB,OAAO,WAAA,CAAY;AAAA,SACrB;AAAA,MACF;AAEA,MAAA,OAAO,WAAA;AAAA,IACT,CAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,MAAM,aAAA,GAAsC;AAAA,EACjD,OAAO,MAAA,EAAQ;AACb,IAAA,OAAO;AAAA,MACL,SAAA,CAAU;AAAA,QACR,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,OAAO,MAAA,CAAO;AAAA,OACf;AAAA,KACH;AAAA,EACF;AACF;;AClCA,MAAM,UAAA,GAAyB;AAAA,EAC7B,OAAO,IAAA,CAAK,KAAA;AAAA,EACZ,KAAK,IAAA,CAAK,GAAA;AAAA,EACV,OAAO,IAAA,CAAK,KAAA;AAAA,EACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,EACb,MAAM,IAAA,CAAK,IAAA;AAAA,EACX,SAAS,IAAA,CAAK,OAAA;AAAA,EACd,MAAM,IAAA,CAAK,IAAA;AAAA,EACX,OAAO,IAAA,CAAK,KAAA;AAAA,EACZ,MAAM,IAAA,CAAK,IAAA;AAAA,EACX,KAAK,IAAA,CAAK,GAAA;AAAA,EAEV,SAAS,IAAA,CAAK,OAAA;AAAA,EACd,OAAO,IAAA,CAAK,KAAA;AAAA,EACZ,SAAS,IAAA,CAAK,OAAA;AAAA,EACd,UAAU,IAAA,CAAK,QAAA;AAAA,EACf,QAAQ,IAAA,CAAK,MAAA;AAAA,EACb,WAAW,IAAA,CAAK,SAAA;AAAA,EAChB,QAAQ,IAAA,CAAK,MAAA;AAAA,EACb,SAAS,IAAA,CAAK,OAAA;AAAA,EAEd,MAAM,IAAA,CAAK,IAAA;AAAA,EACX,WAAW,IAAA,CAAK,SAAA;AAAA;AAAA,EAGhB,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,KAAK,KAAA,CAAM,OAAA,CAAQ,KAAK,YAAA,CAAa,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA,IAClE,KAAA,EAAO,KAAK,KAAA,CAAM;AAAA;AAEtB,CAAA;AAEO,SAASA,OAAA,CAAM,QAAgB,MAAA,EAAwB;AAC5D,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,CAAC,MAAA,EAAQ;AAC7C,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,YAAA,EAAsB,SAAA,KAAsB;AAChE,IAAA,MAAM,QAAA,GAAiC,WAAW,SAAS,CAAA;AAE3D,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,SAAS,CAAA,CAAE,CAAA;AAAA,IAC/C;AAEA,IAAA,OAAO,QAAA,CAAS,IAAA,GAAO,YAAA,GAAe,QAAA,CAAS,KAAA;AAAA,EACjD,GAAG,MAAM,CAAA;AACX;AAEO,MAAM,aAAA,GAAsC;AAAA,EACjD,MAAA,EAAQ,CAAC,MAAA,KAAW,oBAAA,CAAqB,QAAQA,OAAK;AACxD;;ACzDO,SAASA,OAAA,CAAM,QAAgB,MAAA,EAAwB;AAC5D,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,CAAC,MAAA,EAAQ;AAC7C,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO,gBAAgB,MAAA,CACpB,GAAA;AAAA,IACC,CAAC,SAAA,KACC,0BAAA,CAA2B,SAAmC,CAAA,CAAE;AAAA,GACpE,CACC,IAAA,CAAK,IAAI,CAAC,KAAK,MAAM,CAAA,OAAA,CAAA;AAC1B;AAEO,MAAM,aAAA,GAAsC;AAAA,EACjD,OAAO,MAAA,EAAQ;AACb,IAAA,OAAO,oBAAA,CAAqB,QAAQA,OAAK,CAAA;AAAA,EAC3C;AACF;;AClBO,MAAM,QACX,CAAC,gBAAA,EAAoC,IAAA,KACrC,CAAC,QAAgB,MAAA,KAA2B;AAC1C,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,CAAC,MAAA,EAAQ;AAC7C,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,aAAa,MAAA,CAAO,GAAA;AAAA,IACxB,CAAC,SAAA,KAAc,gBAAA,CAAiB,SAAmC;AAAA,GACrE;AAEA,EAAA,IAAA,CAAK,IAAA;AAAA,IACH,UAAA,CAAW,IAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,IACvC,UAAA,CAAW,IAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA,CAAE,KAAK,IAAI;AAAA,GAC1C;AACA,EAAA,OAAO,KAAK,MAAM,CAAA,EAAA,CAAA;AACpB,CAAA;AAEK,MAAM,uBAAA,CAAwD;AAAA,EAEnE,WAAA,CAAY,QAA0B,OAAA,EAAS;AAC7C,IAAA,IAAA,CAAK,gBAAA,GACH,KAAA,KAAU,MAAA,GAAS,yBAAA,GAA4B,0BAAA;AAAA,EACnD;AAAA,EAEA,OAA2B,MAAA,EAA6C;AACtE,IAAA,MAAM,OAAiB,EAAC;AACxB,IAAA,MAAM,MAAA,GAAS,oBAAA;AAAA,MACb,MAAA;AAAA,MACA,KAAA,CAAM,IAAA,CAAK,gBAAA,EAAkB,IAAI;AAAA,MACjC,CAAC,CAAA;AACH,IAAA,OAAO,CAAC,MAAA,EAAQ,GAAG,IAAI,CAAA;AAAA,EACzB;AACF;;ACtCO,SAAS,aAAA,CACd,OACA,MAAA,EACM;AACN,EAAA,OAAA,CAAQ,MAAA,CAAO,SAAS,KAAA,CAAM,KAAA,GAAQ,UAAU,KAAK,CAAA,CAAE,GAAG,KAAK,CAAA;AACjE;;ACLO,MAAM,aAAA,CAAiC;AAAA,EAK5C,YAAY,QAAA,EAAiB;AAF7B,IAAA,IAAA,CAAQ,OAAA,GAAU,EAAA;AAGhB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,EAClB;AAAA,EAEA,IAAI,MAAA,GAAiB;AACnB,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA,EAEA,OAA2B,MAAA,EAA4B;AACrD,IAAA,IAAA,CAAK,WAAW,YAAA,CAAa,MAAA,CAAO,MAAM,CAAA,CAAE,CAAC,CAAA,GAAI,IAAA;AAAA,EACnD;AACF;;ACpBO,SAAS,cAAA,GAAyB;AACvC,EAAA,MAAM,WAAA,GAAc,SAAS,QAAA,CAAS,MAAA;AACtC,EAAA,MAAM,qBAAA;AAAA;AAAA,IAEJ,MAAA,CAAO,YAAA,EAAc,OAAA,CAAQ,OAAO,CAAA,IAAK;AAAA,GAAA;AAE3C,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,qBAAA;AAAA,EACT;AAGA,EAAA,MAAM,oBAAA,GAAuB,SAAA;AAAA,IAC3B,WAAA,CAAY,OAAA;AAAA;AAAA,MAEV,IAAI,MAAA,CAAO,mCAAA,EAAqC,GAAG,CAAA;AAAA,MACnD;AAAA;AACF,GACF;AAEA,EAAA,OAAA,CACG,qBAAA,GAAwB,CAAA,EAAG,qBAAqB,CAAA,CAAA,CAAA,GAAM,EAAA,IACvD,oBAAA;AAEJ;;ACTA,MAAMC,gBAAA,GAAiB,CAAC,QAAA,EAAiB,GAAA,KACvC,qBAAqB,cAAA,EAAgB,CAAA,CAAE,QAAA,EAAU,GAAG,CAAA;AAItD,MAAM,kBAAkB,MAAa;AACnC,EAAA,IAAI;AACF,IAAA,MAAM,oBAAA,GAAuB,YAAA,CAAa,OAAA,CAAQ,mBAAmB,CAAA;AACrE,IAAA,IAAI,oBAAA,IAAwB,yBAAyB,MAAA,EAAQ;AAC3D,MAAA,OAAO,oBAAA;AAAA,IACT;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAAC;AACT,EAAA,OAAO,OAAA;AACT,CAAA;AAEA,MAAM,aAAA,GAAgB,CAAC,KAAA,GAAe,eAAA,EAAgB,KAAc;AAClE,EAAA,MAAM,uBAAA,GAA0B,IAAI,uBAAA,CAAwB,KAAK,CAAA;AACjE,EAAA,OAAO,CAAqB,MAAA,KAAyB;AACnD,IAAA,aAAA,CAAc,uBAAA,CAAwB,MAAA,CAAO,MAAM,CAAA,EAAG,MAAM,CAAA;AAAA,EAC9D,CAAA;AACF,CAAA;AAMO,MAAM,qBAAA,CAAyC;AAAA,EAOpD,WAAA,CAAY,QAAA,EAAiB,OAAA,GAAwC,EAAC,EAAG;AANzE,IAAA,IAAA,CAAA,QAAA,GAAkB,CAAA;AAOhB,IAAA,IAAA,CAAK,aAAa,CAAC,KAAA,EAAc,QAC/B,KAAA,IAASA,gBAAA,CAAe,UAAU,GAAG,CAAA;AAEvC,IAAA,IAAA,CAAK,MAAA,GAAS,aAAA,CAAc,OAAA,CAAQ,KAAK,CAAA;AAAA,EAC3C;AACF;;ACnDO,MAAM,mBAAmB,aAAA,CAAc,MAAA;;ACW9C,MAAMC,cAAA,GAAe,CACnB,SAAA,GAAY,gBAAA,EACZ,SAAS,aAAA,KACE;AACX,EAAA,OAAO,CAAqB,MAAA,KAA+B;AACzD,IAAA,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA,EAAG,MAAM,CAAA;AAAA,EAClC,CAAA;AACF,CAAA;AACA,MAAMD,gBAAA,GAAiB,oBAAA,CAAqB,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA;AAYtD,MAAM,cAAA,CAAkC;AAAA,EAO7C,WAAA,CAAY,QAAA,EAAiB,OAAA,GAAiC,EAAC,EAAG;AANlE,IAAA,IAAA,CAAA,QAAA,GAAkB,KAAA,CAAM,GAAA;AAOtB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,aAAa,CAAC,KAAA,EAAc,QAC/B,KAAA,IAASA,gBAAA,CAAe,UAAU,GAAG,CAAA;AACvC,IAAA,IAAA,CAAK,MAAA,GAASC,cAAA,CAAa,OAAA,CAAQ,SAAA,EAAW,QAAQ,MAAM,CAAA;AAAA,EAC9D;AACF;;AC1CO,SAAS,gBAAA,CACd,OACA,MAAA,EACM;AACN,EAAA,OAAA,CAAQ,MAAA,CAAO,SAAS,KAAA,CAAM,KAAA,GAAQ,UAAU,KAAK,CAAA,CAAE,GAAG,KAAK,CAAA;AACjE;;ACMA,MAAM,eAAe,CAAC;AAAA,EACpB,IAAA;AAAA,EACA,UAAU,OAAA,CAAQ,GAAA,CAAI,aAAa,GAAA,IAAO,OAAA,CAAQ,IAAI,QAAA,KAAa;AACrE,CAAA,KAAwC;AACtC,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,IAAI,IAAA,SAAa,aAAA,CAAc,MAAA;AAC/B,IAAA,IAAI,OAAA,SAAgB,YAAA,CAAa,MAAA;AACjC,IAAA,OAAO,aAAA,CAAc,MAAA;AAAA,EACvB,CAAA,GAAG;AACH,EAAA,MAAM,MAAA,GAAS,OAAO,aAAA,GAAgB,gBAAA;AACtC,EAAA,OAAO,CAAqB,MAAA,KAA+B;AACzD,IAAA,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA,EAAG,MAAM,CAAA;AAAA,EAClC,CAAA;AACF,CAAA;AACA,MAAM,cAAA,GAAiB,oBAAA,CAAqB,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA;AAOtD,MAAM,iBAAA,CAAqC;AAAA,EAOhD,WAAA,CAAY,QAAA,EAAiB,OAAA,GAAoC,EAAC,EAAG;AANrE,IAAA,IAAA,CAAA,QAAA,GAAkB,KAAA,CAAM,GAAA;AAOtB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,aAAa,CAAC,KAAA,EAAc,QAC/B,KAAA,IAAS,cAAA,CAAe,UAAU,GAAG,CAAA;AACvC,IAAA,IAAA,CAAK,MAAA,GAAS,aAAa,OAAO,CAAA;AAAA,EACpC;AACF;;ACpCO,MAAM,kBAAkB,MAAA,CAAO;AAAA,EAIpC,WAAA,CACE,GAAA,EACA,EAAE,WAAA,EAAa,UAAA,EAAY,OAAO,KAAA,EAAO,OAAA,EAAQ,GAAsB,EAAC,EACxE;AACA,IAAA,KAAA,CAAM,KAAK,WAAW,CAAA;AANxB,IAAA,IAAA,CAAQ,aAA0B,EAAC;AAOjC,IAAA,IAAA,CAAK,QAAA,GAAW,CAAC,IAAI,iBAAA,CAAkBC,OAAA,CAAM,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,CAAC,CAAA;AACrE,IAAA,IAAA,CAAK,UAAA,GAAa,cAAc,EAAC;AACjC,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AAAA,EAEmB,yBACjB,WAAA,EACsB;AACtB,IAAA,OAAO;AAAA,MACL,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,YAAY,IAAA,CAAK;AAAA,KACnB;AAAA,EACF;AAAA,EAEA,WAAA,CACE,cAAA,EACA,QAAA,EACA,KAAA,GAAeA,QAAM,IAAA,EACf;AACN,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,IAAA,CAAK,GAAA,CAAI,cAAA,EAAgB,QAAA,EAAU,KAAK,CAAA;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,aAAA,CACE,gBACA,QAAA,EACM;AACN,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,IAAA,CAAK,KAAA,CAAM,gBAAgB,QAAQ,CAAA;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,cAAA,CACE,gBACA,QAAA,EACM;AACN,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,IAAA,CAAK,MAAA,CAAO,gBAAgB,QAAQ,CAAA;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,YAAA,CACE,gBACA,QAAA,EACM;AACN,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,IAAA,CAAK,IAAA,CAAK,gBAAgB,QAAQ,CAAA;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,YAAA,CACE,gBACA,QAAA,EACM;AACN,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,IAAA,CAAK,IAAA,CAAK,gBAAgB,QAAQ,CAAA;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,KAAA,CACE,MACA,EAAA,EAC2D;AAC3D,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,OAAO,EAAA,EAAG;AAAA,IACZ,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,MAAM,IAAI,CAAA;AAClB,MAAA,MAAM,SAAS,EAAA,EAAG;AAClB,MAAA,IAAI,kBAAkB,OAAA,EAAS;AAC7B,QAAA,OAAO,MAAA,CAAO,QAAQ,MAAM;AAC1B,UAAA,OAAA,CAAQ,QAAA,EAAS;AAAA,QACnB,CAAC,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,QAAA,EAAS;AACjB,QAAA,OAAO,MAAA;AAAA,MAGT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAA,GAAkB;AAChB,IAAA,OAAA,CAAQ,GAAA,EAAI;AAAA,EACd;AACF;;AClFO,SAAS,qBAAA,CACd,SAAiB,IAAI,MAAA;AAAA,EACnB,mCAAA;AAAA,EACA;AACF,CAAA,EACM;AACN,EAAA,OAAA,CAAQ,EAAA,CAAG,mBAAA,EAAqB,CAAC,KAAA,KAAU;AACzC,IAAA,MAAA,CAAO,MAAM,KAAA,EAAO;AAAA,MAClB,SAAA,EAAW,IAAA;AAAA,MACX,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH,CAAC,CAAA;AACD,EAAA,OAAA,CAAQ,EAAA,CAAG,oBAAA,EAAsB,CAAC,KAAA,KAAU;AAC1C,IAAA,MAAA,CAAO,MAAM,KAAA,EAAgB;AAAA,MAC3B,SAAA,EAAW,IAAA;AAAA,MACX,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH,CAAC,CAAA;AACH;;;;"}
|
|
@@ -991,4 +991,4 @@ function listenUnhandledErrors(logger = new Logger(
|
|
|
991
991
|
}
|
|
992
992
|
|
|
993
993
|
export { ANSIFormatter, BrowserConsoleFormatter, BrowserConsoleHandler, ConsoleCLIHandler, ConsoleHandler, HTMLFormatter, JSONFormatter, LoggerCLI, MarkdownFormatter, RawFormatter, StringHandler, addConfig, configure, consoleOutput, createFindDebugLevel, formatObject, formatRecordToString, formatStyles, levelToStyles, levelToSymbol, listenUnhandledErrors, styleToHexColor, styleToHtmlStyleThemeDark, styleToHtmlStyleThemeLight };
|
|
994
|
-
//# sourceMappingURL=index-
|
|
994
|
+
//# sourceMappingURL=index-node22.mjs.map
|