nightingale-logger 17.0.0 → 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 CHANGED
@@ -3,6 +3,20 @@
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
+ Version bump for dependency: nightingale-levels
17
+ Version bump for dependency: nightingale-types
18
+
19
+
6
20
  ## [17.0.0](https://github.com/christophehurpeau/nightingale/compare/v16.2.0...v17.0.0) (2025-10-20)
7
21
 
8
22
  ### Features
@@ -1 +1 @@
1
- {"version":3,"file":"index-browser.es.js","sources":["../src/inspectValue.ts","../src/index.ts"],"sourcesContent":["export const inspectValue = (value: unknown): string => {\n throw new Error(\"Not supported for the browser. Prefer `debugger;`\");\n};\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handler,\n LogRecord,\n Metadata,\n MetadataStyles,\n Processor,\n Styles,\n} from \"nightingale-types\";\nimport { inspectValue } from \"./inspectValue\";\n\nexport { Level } from \"nightingale-levels\";\n\nexport interface Options<T extends Metadata> {\n symbol?: string;\n metadataStyles?: MetadataStyles<T>;\n styles?: Styles;\n}\n\nexport interface ComputedConfigForKey {\n handlers: Handler[];\n processors: Processor[];\n}\n\nexport interface ExtendedFunctionNameMetadata {\n functionName: string;\n}\n\nexport interface Config {\n handler?: Handler;\n handlers?: Handler[];\n key?: string;\n keys?: string[];\n pattern?: RegExp;\n processor?: Processor;\n processors?: Processor[];\n stop?: boolean;\n}\n\ndeclare global {\n var __NIGHTINGALE_CONFIG: Config[];\n\n var __NIGHTINGALE_LOGGER_MAP_CACHE: Map<string, ComputedConfigForKey>;\n\n var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey;\n\n var __NIGHTINGALE_GLOBAL_HANDLERS: unknown;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (\n key: string,\n ) => ComputedConfigForKey;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (\n key: string,\n level: number,\n ) => ComputedConfigForKey;\n}\n\nconst globalOrWindow: typeof globalThis =\n typeof globalThis !== \"undefined\" ? globalThis : globalThis;\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =\n (): ComputedConfigForKey => ({\n handlers: [],\n processors: [],\n });\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) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n\nfunction getConfigForLoggerRecord(\n key: string,\n recordLevel: Level,\n): ComputedConfigForKey {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(\n key,\n recordLevel,\n );\n}\n\nfunction isError(messageOrError: Error | string): messageOrError is Error {\n return messageOrError instanceof Error;\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport class Logger {\n private contextObject?: Record<string, unknown>;\n\n readonly key: string;\n\n readonly displayName?: string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName?: string) {\n this.key = key;\n this.displayName = displayName;\n\n if (process.env.NODE_ENV !== \"production\" && key.includes(\".\")) {\n throw new Error(\n `nightingale: \\`.\\` in key is no longer supported, use \\`:\\` instead (key: ${key})`,\n );\n }\n }\n\n /** @private */\n protected getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): Readonly<ComputedConfigForKey> {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName?: string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * ```typescript\n * const loggerMyService = new Logger('app:myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.enter(someAction);\n * // do stuff\n * logger.info('info');\n * // do stuff\n * logger.exit(someAction);\n * }\n * ```\n *\n */\n context(context: Record<string, unknown>): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Get the context of this logger\n */\n getContextObject(): Readonly<Record<string, unknown>> | undefined {\n return this.contextObject;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Record<string, unknown>): void {\n this.contextObject = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Record<string, unknown>): void {\n if (this.contextObject === undefined) {\n throw new Error(\n \"Cannot extends context that does not exists. Use setContext(context) first.\",\n );\n }\n Object.assign(this.contextObject, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord<T extends Metadata>(record: Readonly<LogRecord<T>>): void {\n const { handlers, processors } = this.getHandlersAndProcessors(\n record.level,\n );\n\n if (handlers.length === 0) {\n if (record.level > Level.ERROR) {\n // eslint-disable-next-line no-console\n console.log(\"[nightingale] no logger for > error level.\", {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach((process) => {\n process(record, record.context);\n });\n }\n\n handlers.some((handler) => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n level: Level = Level.INFO,\n options?: Options<T>,\n ): void {\n const isMessageError = isError(messageOrError);\n\n const message = isMessageError\n ? `${messageOrError.name}: ${messageOrError.message}`\n : messageOrError;\n\n const extendedMetadata =\n isMessageError && !(metadata && Object.hasOwn(metadata, \"error\"))\n ? { ...metadata, error: messageOrError }\n : metadata;\n\n const context = extendedMetadata?.context;\n if (extendedMetadata) {\n delete extendedMetadata.context;\n }\n\n const record: LogRecord<NonNullable<typeof extendedMetadata>> = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this.contextObject,\n metadata: extendedMetadata as NonNullable<typeof extendedMetadata>,\n extra: {},\n ...options,\n };\n this.addRecord(record);\n }\n\n /**\n * Log a trace message\n */\n trace<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log a debug message\n */\n debug<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });\n }\n\n /**\n * Notice an info message\n */\n notice<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * }\n * ```\n */\n error<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });\n }\n\n /**\n * Log an critical message\n */\n critical<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * process.exit(1);\n * }\n */\n fatal<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue<T extends Metadata>(\n value: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(value);\n this.log(inspectedValue, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"gray\"],\n });\n }\n\n /**\n * Log a debugged var\n */\n inspectVar<T extends Metadata>(\n varName: string,\n varValue: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(varValue);\n this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"cyan\"],\n });\n }\n\n /**\n * Alias for infoSuccess\n */\n success<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\"],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoFail(messageOrError, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\", \"bold\"],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\"],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): number {\n return this.time(message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd<T extends Metadata>(\n startTime: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n options?: Options<T>,\n ): void {\n const now = Date.now();\n\n const diffTime = now - startTime;\n let readableTime;\n\n if (diffTime < 1000) {\n readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;\n const ms = diffTime - seconds * 1000;\n readableTime = `${seconds ? `${seconds}s and ` : \"\"}${ms}ms`;\n }\n\n const extendedMetadata = {\n ...metadata,\n readableTime,\n timeMs: diffTime,\n };\n\n this.log(message, extendedMetadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * ```typescript\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n * ```\n *\n */\n enter<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"enter\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n * ```\n */\n exit<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"exit\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n * ```\n */\n wrap<Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n metadataStyles: MetadataStyles<T>,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n option1: T | (() => void),\n option2?: MetadataStyles<T> | (() => void),\n callback?: () => void,\n ): void {\n let metadata: T | undefined;\n let metadataStyles: MetadataStyles<T> | undefined;\n\n if (typeof option1 === \"function\") {\n callback = option1;\n } else {\n metadata = option1;\n\n if (typeof option2 === \"function\") {\n callback = option2;\n } else {\n metadataStyles = option2;\n }\n }\n\n this.enter(fn, metadata, metadataStyles);\n (callback as () => void)();\n this.exit(fn);\n }\n}\n"],"names":["process"],"mappings":"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"}
1
+ {"version":3,"file":"index-browser.es.js","sources":["../src/inspectValue.ts","../src/index.ts"],"sourcesContent":["export const inspectValue = (value: unknown): string => {\n throw new Error(\"Not supported for the browser. Prefer `debugger;`\");\n};\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handler,\n LogRecord,\n Metadata,\n MetadataStyles,\n Processor,\n Styles,\n} from \"nightingale-types\";\nimport { inspectValue } from \"./inspectValue.ts\";\n\nexport { Level } from \"nightingale-levels\";\n\nexport interface Options<T extends Metadata> {\n symbol?: string;\n metadataStyles?: MetadataStyles<T>;\n styles?: Styles;\n}\n\nexport interface ComputedConfigForKey {\n handlers: Handler[];\n processors: Processor[];\n}\n\nexport interface ExtendedFunctionNameMetadata {\n functionName: string;\n}\n\nexport interface Config {\n handler?: Handler;\n handlers?: Handler[];\n key?: string;\n keys?: string[];\n pattern?: RegExp;\n processor?: Processor;\n processors?: Processor[];\n stop?: boolean;\n}\n\ndeclare global {\n var __NIGHTINGALE_CONFIG: Config[];\n\n var __NIGHTINGALE_LOGGER_MAP_CACHE: Map<string, ComputedConfigForKey>;\n\n var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey;\n\n var __NIGHTINGALE_GLOBAL_HANDLERS: unknown;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (\n key: string,\n ) => ComputedConfigForKey;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (\n key: string,\n level: number,\n ) => ComputedConfigForKey;\n}\n\nconst globalOrWindow: typeof globalThis =\n typeof globalThis !== \"undefined\" ? globalThis : globalThis;\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =\n (): ComputedConfigForKey => ({\n handlers: [],\n processors: [],\n });\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) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n\nfunction getConfigForLoggerRecord(\n key: string,\n recordLevel: Level,\n): ComputedConfigForKey {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(\n key,\n recordLevel,\n );\n}\n\nfunction isError(messageOrError: Error | string): messageOrError is Error {\n return messageOrError instanceof Error;\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport class Logger {\n private contextObject?: Record<string, unknown>;\n\n readonly key: string;\n\n readonly displayName?: string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName?: string) {\n this.key = key;\n this.displayName = displayName;\n\n if (process.env.NODE_ENV !== \"production\" && key.includes(\".\")) {\n throw new Error(\n `nightingale: \\`.\\` in key is no longer supported, use \\`:\\` instead (key: ${key})`,\n );\n }\n }\n\n /** @private */\n protected getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): Readonly<ComputedConfigForKey> {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName?: string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * ```typescript\n * const loggerMyService = new Logger('app:myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.enter(someAction);\n * // do stuff\n * logger.info('info');\n * // do stuff\n * logger.exit(someAction);\n * }\n * ```\n *\n */\n context(context: Record<string, unknown>): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Get the context of this logger\n */\n getContextObject(): Readonly<Record<string, unknown>> | undefined {\n return this.contextObject;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Record<string, unknown>): void {\n this.contextObject = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Record<string, unknown>): void {\n if (this.contextObject === undefined) {\n throw new Error(\n \"Cannot extends context that does not exists. Use setContext(context) first.\",\n );\n }\n Object.assign(this.contextObject, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord<T extends Metadata>(record: Readonly<LogRecord<T>>): void {\n const { handlers, processors } = this.getHandlersAndProcessors(\n record.level,\n );\n\n if (handlers.length === 0) {\n if (record.level > Level.ERROR) {\n // eslint-disable-next-line no-console\n console.log(\"[nightingale] no logger for > error level.\", {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach((process) => {\n process(record, record.context);\n });\n }\n\n handlers.some((handler) => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n level: Level = Level.INFO,\n options?: Options<T>,\n ): void {\n const isMessageError = isError(messageOrError);\n\n const message = isMessageError\n ? `${messageOrError.name}: ${messageOrError.message}`\n : messageOrError;\n\n const extendedMetadata =\n isMessageError && !(metadata && Object.hasOwn(metadata, \"error\"))\n ? { ...metadata, error: messageOrError }\n : metadata;\n\n const context = extendedMetadata?.context;\n if (extendedMetadata) {\n delete extendedMetadata.context;\n }\n\n const record: LogRecord<NonNullable<typeof extendedMetadata>> = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this.contextObject,\n metadata: extendedMetadata as NonNullable<typeof extendedMetadata>,\n extra: {},\n ...options,\n };\n this.addRecord(record);\n }\n\n /**\n * Log a trace message\n */\n trace<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log a debug message\n */\n debug<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });\n }\n\n /**\n * Notice an info message\n */\n notice<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * }\n * ```\n */\n error<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });\n }\n\n /**\n * Log an critical message\n */\n critical<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * process.exit(1);\n * }\n */\n fatal<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue<T extends Metadata>(\n value: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(value);\n this.log(inspectedValue, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"gray\"],\n });\n }\n\n /**\n * Log a debugged var\n */\n inspectVar<T extends Metadata>(\n varName: string,\n varValue: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(varValue);\n this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"cyan\"],\n });\n }\n\n /**\n * Alias for infoSuccess\n */\n success<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\"],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoFail(messageOrError, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\", \"bold\"],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\"],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): number {\n return this.time(message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd<T extends Metadata>(\n startTime: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n options?: Options<T>,\n ): void {\n const now = Date.now();\n\n const diffTime = now - startTime;\n let readableTime;\n\n if (diffTime < 1000) {\n readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;\n const ms = diffTime - seconds * 1000;\n readableTime = `${seconds ? `${seconds}s and ` : \"\"}${ms}ms`;\n }\n\n const extendedMetadata = {\n ...metadata,\n readableTime,\n timeMs: diffTime,\n };\n\n this.log(message, extendedMetadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * ```typescript\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n * ```\n *\n */\n enter<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"enter\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n * ```\n */\n exit<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"exit\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n * ```\n */\n wrap<Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n metadataStyles: MetadataStyles<T>,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n option1: T | (() => void),\n option2?: MetadataStyles<T> | (() => void),\n callback?: () => void,\n ): void {\n let metadata: T | undefined;\n let metadataStyles: MetadataStyles<T> | undefined;\n\n if (typeof option1 === \"function\") {\n callback = option1;\n } else {\n metadata = option1;\n\n if (typeof option2 === \"function\") {\n callback = option2;\n } else {\n metadataStyles = option2;\n }\n }\n\n this.enter(fn, metadata, metadataStyles);\n (callback as () => void)();\n this.exit(fn);\n }\n}\n"],"names":["process"],"mappings":"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"}
@@ -420,4 +420,4 @@ class Logger {
420
420
  }
421
421
 
422
422
  export { Logger };
423
- //# sourceMappingURL=index-node20.mjs.map
423
+ //# sourceMappingURL=index-node22.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-node22.mjs","sources":["../src/inspectValue.target-node.ts","../src/index.ts"],"sourcesContent":["import * as util from \"node:util\";\n\nexport const inspectValue = (value: unknown): string =>\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n util.inspect(value, { depth: 6 });\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handler,\n LogRecord,\n Metadata,\n MetadataStyles,\n Processor,\n Styles,\n} from \"nightingale-types\";\nimport { inspectValue } from \"./inspectValue.ts\";\n\nexport { Level } from \"nightingale-levels\";\n\nexport interface Options<T extends Metadata> {\n symbol?: string;\n metadataStyles?: MetadataStyles<T>;\n styles?: Styles;\n}\n\nexport interface ComputedConfigForKey {\n handlers: Handler[];\n processors: Processor[];\n}\n\nexport interface ExtendedFunctionNameMetadata {\n functionName: string;\n}\n\nexport interface Config {\n handler?: Handler;\n handlers?: Handler[];\n key?: string;\n keys?: string[];\n pattern?: RegExp;\n processor?: Processor;\n processors?: Processor[];\n stop?: boolean;\n}\n\ndeclare global {\n var __NIGHTINGALE_CONFIG: Config[];\n\n var __NIGHTINGALE_LOGGER_MAP_CACHE: Map<string, ComputedConfigForKey>;\n\n var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey;\n\n var __NIGHTINGALE_GLOBAL_HANDLERS: unknown;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (\n key: string,\n ) => ComputedConfigForKey;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (\n key: string,\n level: number,\n ) => ComputedConfigForKey;\n}\n\nconst globalOrWindow: typeof globalThis =\n typeof globalThis !== \"undefined\" ? globalThis : globalThis;\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =\n (): ComputedConfigForKey => ({\n handlers: [],\n processors: [],\n });\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) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n\nfunction getConfigForLoggerRecord(\n key: string,\n recordLevel: Level,\n): ComputedConfigForKey {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(\n key,\n recordLevel,\n );\n}\n\nfunction isError(messageOrError: Error | string): messageOrError is Error {\n return messageOrError instanceof Error;\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport class Logger {\n private contextObject?: Record<string, unknown>;\n\n readonly key: string;\n\n readonly displayName?: string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName?: string) {\n this.key = key;\n this.displayName = displayName;\n\n if (process.env.NODE_ENV !== \"production\" && key.includes(\".\")) {\n throw new Error(\n `nightingale: \\`.\\` in key is no longer supported, use \\`:\\` instead (key: ${key})`,\n );\n }\n }\n\n /** @private */\n protected getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): Readonly<ComputedConfigForKey> {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName?: string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * ```typescript\n * const loggerMyService = new Logger('app:myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.enter(someAction);\n * // do stuff\n * logger.info('info');\n * // do stuff\n * logger.exit(someAction);\n * }\n * ```\n *\n */\n context(context: Record<string, unknown>): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Get the context of this logger\n */\n getContextObject(): Readonly<Record<string, unknown>> | undefined {\n return this.contextObject;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Record<string, unknown>): void {\n this.contextObject = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Record<string, unknown>): void {\n if (this.contextObject === undefined) {\n throw new Error(\n \"Cannot extends context that does not exists. Use setContext(context) first.\",\n );\n }\n Object.assign(this.contextObject, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord<T extends Metadata>(record: Readonly<LogRecord<T>>): void {\n const { handlers, processors } = this.getHandlersAndProcessors(\n record.level,\n );\n\n if (handlers.length === 0) {\n if (record.level > Level.ERROR) {\n // eslint-disable-next-line no-console\n console.log(\"[nightingale] no logger for > error level.\", {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach((process) => {\n process(record, record.context);\n });\n }\n\n handlers.some((handler) => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n level: Level = Level.INFO,\n options?: Options<T>,\n ): void {\n const isMessageError = isError(messageOrError);\n\n const message = isMessageError\n ? `${messageOrError.name}: ${messageOrError.message}`\n : messageOrError;\n\n const extendedMetadata =\n isMessageError && !(metadata && Object.hasOwn(metadata, \"error\"))\n ? { ...metadata, error: messageOrError }\n : metadata;\n\n const context = extendedMetadata?.context;\n if (extendedMetadata) {\n delete extendedMetadata.context;\n }\n\n const record: LogRecord<NonNullable<typeof extendedMetadata>> = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this.contextObject,\n metadata: extendedMetadata as NonNullable<typeof extendedMetadata>,\n extra: {},\n ...options,\n };\n this.addRecord(record);\n }\n\n /**\n * Log a trace message\n */\n trace<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log a debug message\n */\n debug<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });\n }\n\n /**\n * Notice an info message\n */\n notice<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * }\n * ```\n */\n error<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });\n }\n\n /**\n * Log an critical message\n */\n critical<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * process.exit(1);\n * }\n */\n fatal<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue<T extends Metadata>(\n value: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(value);\n this.log(inspectedValue, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"gray\"],\n });\n }\n\n /**\n * Log a debugged var\n */\n inspectVar<T extends Metadata>(\n varName: string,\n varValue: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(varValue);\n this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"cyan\"],\n });\n }\n\n /**\n * Alias for infoSuccess\n */\n success<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\"],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoFail(messageOrError, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\", \"bold\"],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\"],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): number {\n return this.time(message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd<T extends Metadata>(\n startTime: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n options?: Options<T>,\n ): void {\n const now = Date.now();\n\n const diffTime = now - startTime;\n let readableTime;\n\n if (diffTime < 1000) {\n readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;\n const ms = diffTime - seconds * 1000;\n readableTime = `${seconds ? `${seconds}s and ` : \"\"}${ms}ms`;\n }\n\n const extendedMetadata = {\n ...metadata,\n readableTime,\n timeMs: diffTime,\n };\n\n this.log(message, extendedMetadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * ```typescript\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n * ```\n *\n */\n enter<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"enter\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n * ```\n */\n exit<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"exit\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n * ```\n */\n wrap<Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n metadataStyles: MetadataStyles<T>,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n option1: T | (() => void),\n option2?: MetadataStyles<T> | (() => void),\n callback?: () => void,\n ): void {\n let metadata: T | undefined;\n let metadataStyles: MetadataStyles<T> | undefined;\n\n if (typeof option1 === \"function\") {\n callback = option1;\n } else {\n metadata = option1;\n\n if (typeof option2 === \"function\") {\n callback = option2;\n } else {\n metadataStyles = option2;\n }\n }\n\n this.enter(fn, metadata, metadataStyles);\n (callback as () => void)();\n this.exit(fn);\n }\n}\n"],"names":["process"],"mappings":"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"}
@@ -0,0 +1,420 @@
1
+ import { Level } from 'nightingale-levels';
2
+ export { Level } from 'nightingale-levels';
3
+
4
+ const inspectValue = (value) => {
5
+ throw new Error("Not supported for the browser. Prefer `debugger;`");
6
+ };
7
+
8
+ const globalOrWindow = typeof globalThis !== "undefined" ? globalThis : globalThis;
9
+ if (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {
10
+ globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = () => ({
11
+ handlers: [],
12
+ processors: []
13
+ });
14
+ }
15
+ if (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {
16
+ globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (key, level) => {
17
+ const { handlers, processors } = globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);
18
+ return {
19
+ handlers: handlers.filter(
20
+ (handler) => level >= handler.minLevel && (!handler.isHandling || handler.isHandling(level, key))
21
+ ),
22
+ processors
23
+ };
24
+ };
25
+ }
26
+ function getConfigForLoggerRecord(key, recordLevel) {
27
+ return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(
28
+ key,
29
+ recordLevel
30
+ );
31
+ }
32
+ function isError(messageOrError) {
33
+ return messageOrError instanceof Error;
34
+ }
35
+ class Logger {
36
+ /**
37
+ * Create a new Logger
38
+ *
39
+ * @param {string} key
40
+ * @param {string} [displayName]
41
+ */
42
+ constructor(key, displayName) {
43
+ this.key = key;
44
+ this.displayName = displayName;
45
+ if (process.env.NODE_ENV !== "production" && key.includes(".")) {
46
+ throw new Error(
47
+ `nightingale: \`.\` in key is no longer supported, use \`:\` instead (key: ${key})`
48
+ );
49
+ }
50
+ }
51
+ /** @private */
52
+ getHandlersAndProcessors(recordLevel) {
53
+ return getConfigForLoggerRecord(this.key, recordLevel);
54
+ }
55
+ /** @private */
56
+ getConfig() {
57
+ return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);
58
+ }
59
+ /**
60
+ * Create a child logger
61
+ */
62
+ child(childSuffixKey, childDisplayName) {
63
+ return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);
64
+ }
65
+ /**
66
+ * Create a new Logger with the same key a this attached context
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const loggerMyService = new Logger('app:myService');
71
+ * function someAction(arg1) {
72
+ * const logger = loggerMyService.context({ arg1 });
73
+ * logger.enter(someAction);
74
+ * // do stuff
75
+ * logger.info('info');
76
+ * // do stuff
77
+ * logger.exit(someAction);
78
+ * }
79
+ * ```
80
+ *
81
+ */
82
+ context(context) {
83
+ const logger = new Logger(this.key);
84
+ logger.setContext(context);
85
+ return logger;
86
+ }
87
+ /**
88
+ * Get the context of this logger
89
+ */
90
+ getContextObject() {
91
+ return this.contextObject;
92
+ }
93
+ /**
94
+ * Set the context of this logger
95
+ *
96
+ * @param {Object} context
97
+ */
98
+ setContext(context) {
99
+ this.contextObject = context;
100
+ }
101
+ /**
102
+ * Extends existing context of this logger
103
+ */
104
+ extendsContext(extendedContext) {
105
+ if (this.contextObject === void 0) {
106
+ throw new Error(
107
+ "Cannot extends context that does not exists. Use setContext(context) first."
108
+ );
109
+ }
110
+ Object.assign(this.contextObject, extendedContext);
111
+ }
112
+ /**
113
+ * Handle a record
114
+ *
115
+ * Use this only if you know what you are doing.
116
+ */
117
+ addRecord(record) {
118
+ const { handlers, processors } = this.getHandlersAndProcessors(
119
+ record.level
120
+ );
121
+ if (handlers.length === 0) {
122
+ if (record.level > Level.ERROR) {
123
+ console.log("[nightingale] no logger for > error level.", {
124
+ key: record.key,
125
+ message: record.message
126
+ });
127
+ }
128
+ return;
129
+ }
130
+ if (processors) {
131
+ processors.forEach((process2) => {
132
+ process2(record, record.context);
133
+ });
134
+ }
135
+ handlers.some((handler) => handler.handle(record) === false);
136
+ }
137
+ /**
138
+ * Log a message
139
+ */
140
+ log(messageOrError, metadata, level = Level.INFO, options) {
141
+ const isMessageError = isError(messageOrError);
142
+ const message = isMessageError ? `${messageOrError.name}: ${messageOrError.message}` : messageOrError;
143
+ const extendedMetadata = isMessageError && !(metadata && Object.hasOwn(metadata, "error")) ? { ...metadata, error: messageOrError } : metadata;
144
+ const context = extendedMetadata?.context;
145
+ if (extendedMetadata) {
146
+ delete extendedMetadata.context;
147
+ }
148
+ const record = {
149
+ level,
150
+ key: this.key,
151
+ displayName: this.displayName,
152
+ datetime: /* @__PURE__ */ new Date(),
153
+ message,
154
+ context: context || this.contextObject,
155
+ metadata: extendedMetadata,
156
+ extra: {},
157
+ ...options
158
+ };
159
+ this.addRecord(record);
160
+ }
161
+ /**
162
+ * Log a trace message
163
+ */
164
+ trace(messageOrError, metadata, metadataStyles) {
165
+ this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });
166
+ }
167
+ /**
168
+ * Log a debug message
169
+ */
170
+ debug(messageOrError, metadata, metadataStyles) {
171
+ this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });
172
+ }
173
+ /**
174
+ * Notice an info message
175
+ */
176
+ notice(messageOrError, metadata, metadataStyles) {
177
+ this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });
178
+ }
179
+ /**
180
+ * Log an info message
181
+ */
182
+ info(messageOrError, metadata, metadataStyles) {
183
+ this.log(messageOrError, metadata, Level.INFO, { metadataStyles });
184
+ }
185
+ /**
186
+ * Log a warn message
187
+ */
188
+ warn(messageOrError, metadata, metadataStyles) {
189
+ this.log(messageOrError, metadata, Level.WARN, { metadataStyles });
190
+ }
191
+ /**
192
+ * Log an error message
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * const logger = new Logger('something');
197
+ * try {
198
+ * throw new Error('Always throws here');
199
+ * } catch (error) {
200
+ * logger.error('caught error', { error });
201
+ * }
202
+ * ```
203
+ */
204
+ error(messageOrError, metadata, metadataStyles) {
205
+ this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });
206
+ }
207
+ /**
208
+ * Log an critical message
209
+ */
210
+ critical(messageOrError, metadata, metadataStyles) {
211
+ this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });
212
+ }
213
+ /**
214
+ * Log a fatal message
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * const logger = new Logger('something');
219
+ * try {
220
+ * throw new Error('Always throws here');
221
+ * } catch (error) {
222
+ * logger.error('caught error', { error });
223
+ * process.exit(1);
224
+ * }
225
+ */
226
+ fatal(messageOrError, metadata, metadataStyles) {
227
+ this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });
228
+ }
229
+ /**
230
+ * Log an alert message
231
+ */
232
+ alert(messageOrError, metadata, metadataStyles) {
233
+ this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });
234
+ }
235
+ /**
236
+ * Log an inspected value
237
+ */
238
+ inspectValue(value, metadata, metadataStyles) {
239
+ const inspectedValue = inspectValue();
240
+ this.log(inspectedValue, metadata, Level.DEBUG, {
241
+ metadataStyles,
242
+ styles: ["gray"]
243
+ });
244
+ }
245
+ /**
246
+ * Log a debugged var
247
+ */
248
+ inspectVar(varName, varValue, metadata, metadataStyles) {
249
+ const inspectedValue = inspectValue();
250
+ this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {
251
+ metadataStyles,
252
+ styles: ["cyan"]
253
+ });
254
+ }
255
+ /**
256
+ * Alias for infoSuccess
257
+ */
258
+ success(message, metadata, metadataStyles) {
259
+ this.infoSuccess(message, metadata, metadataStyles);
260
+ }
261
+ /**
262
+ * Log an info success message
263
+ */
264
+ infoSuccess(message, metadata, metadataStyles) {
265
+ this.log(message, metadata, Level.INFO, {
266
+ metadataStyles,
267
+ symbol: "\u2714",
268
+ styles: ["green", "bold"]
269
+ });
270
+ }
271
+ /**
272
+ * Log an debug success message
273
+ */
274
+ debugSuccess(message, metadata, metadataStyles) {
275
+ this.log(message, metadata, Level.DEBUG, {
276
+ metadataStyles,
277
+ symbol: "\u2714",
278
+ styles: ["green"]
279
+ });
280
+ }
281
+ /**
282
+ * Alias for infoFail
283
+ */
284
+ fail(messageOrError, metadata, metadataStyles) {
285
+ this.infoFail(messageOrError, metadata, metadataStyles);
286
+ }
287
+ /**
288
+ * Log an info fail message
289
+ */
290
+ infoFail(messageOrError, metadata, metadataStyles) {
291
+ this.log(messageOrError, metadata, Level.INFO, {
292
+ metadataStyles,
293
+ symbol: "\u2716",
294
+ styles: ["red", "bold"]
295
+ });
296
+ }
297
+ /**
298
+ * Log an debug fail message
299
+ */
300
+ debugFail(messageOrError, metadata, metadataStyles) {
301
+ this.log(messageOrError, metadata, Level.DEBUG, {
302
+ metadataStyles,
303
+ symbol: "\u2716",
304
+ styles: ["red"]
305
+ });
306
+ }
307
+ /**
308
+ * @returns {number} time to pass to timeEnd
309
+ */
310
+ time(message, metadata, metadataStyles, level = Level.DEBUG) {
311
+ if (message) {
312
+ this.log(message, metadata, level, { metadataStyles });
313
+ }
314
+ return Date.now();
315
+ }
316
+ infoTime(message, metadata, metadataStyles) {
317
+ return this.time(message, metadata, metadataStyles, Level.INFO);
318
+ }
319
+ /**
320
+ * Finds difference between when this method
321
+ * was called and when the respective time method
322
+ * was called, then logs out the difference
323
+ * and deletes the original record
324
+ */
325
+ timeEnd(startTime, message, metadata, metadataStyles, level = Level.DEBUG, options) {
326
+ const now = Date.now();
327
+ const diffTime = now - startTime;
328
+ let readableTime;
329
+ if (diffTime < 1e3) {
330
+ readableTime = `${diffTime}ms`;
331
+ } else {
332
+ const seconds = diffTime > 1e3 ? Math.floor(diffTime / 1e3) : 0;
333
+ const ms = diffTime - seconds * 1e3;
334
+ readableTime = `${seconds ? `${seconds}s and ` : ""}${ms}ms`;
335
+ }
336
+ const extendedMetadata = {
337
+ ...metadata,
338
+ readableTime,
339
+ timeMs: diffTime
340
+ };
341
+ this.log(message, extendedMetadata, level, { ...options, metadataStyles });
342
+ }
343
+ /**
344
+ * Like timeEnd, but with INFO level
345
+ */
346
+ infoTimeEnd(time, message, metadata, metadataStyles) {
347
+ this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);
348
+ }
349
+ /**
350
+ * Like timeEnd, but with INFO level
351
+ */
352
+ infoSuccessTimeEnd(time, message, metadata, metadataStyles) {
353
+ this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {
354
+ symbol: "\u2714",
355
+ styles: ["green", "bold"]
356
+ });
357
+ }
358
+ /**
359
+ * Log an enter in a function
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * class A {
364
+ * method(arg1) {
365
+ * logger.enter(method, { arg1 });
366
+ * // Do your stuff
367
+ * }
368
+ * }
369
+ * ```
370
+ *
371
+ */
372
+ enter(fn, metadata, metadataStyles) {
373
+ const extendedMetadata = {
374
+ ...metadata,
375
+ functionName: fn.name
376
+ };
377
+ this.log("enter", extendedMetadata, Level.TRACE, { metadataStyles });
378
+ }
379
+ /**
380
+ * Log an exit in a function
381
+ *
382
+ * @example
383
+ * ```typescript
384
+ * const logger = new Logger('myNamespace:A');
385
+ * class A {
386
+ * method(arg1) {
387
+ * // Do your stuff
388
+ * logger.exit(method, { arg1 });
389
+ * }
390
+ * }
391
+ * ```
392
+ */
393
+ exit(fn, metadata, metadataStyles) {
394
+ const extendedMetadata = {
395
+ ...metadata,
396
+ functionName: fn.name
397
+ };
398
+ this.log("exit", extendedMetadata, Level.TRACE, { metadataStyles });
399
+ }
400
+ wrap(fn, option1, option2, callback) {
401
+ let metadata;
402
+ let metadataStyles;
403
+ if (typeof option1 === "function") {
404
+ callback = option1;
405
+ } else {
406
+ metadata = option1;
407
+ if (typeof option2 === "function") {
408
+ callback = option2;
409
+ } else {
410
+ metadataStyles = option2;
411
+ }
412
+ }
413
+ this.enter(fn, metadata, metadataStyles);
414
+ callback();
415
+ this.exit(fn);
416
+ }
417
+ }
418
+
419
+ export { Logger };
420
+ //# sourceMappingURL=index-react-native.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-react-native.es.js","sources":["../src/inspectValue.ts","../src/index.ts"],"sourcesContent":["export const inspectValue = (value: unknown): string => {\n throw new Error(\"Not supported for the browser. Prefer `debugger;`\");\n};\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handler,\n LogRecord,\n Metadata,\n MetadataStyles,\n Processor,\n Styles,\n} from \"nightingale-types\";\nimport { inspectValue } from \"./inspectValue.ts\";\n\nexport { Level } from \"nightingale-levels\";\n\nexport interface Options<T extends Metadata> {\n symbol?: string;\n metadataStyles?: MetadataStyles<T>;\n styles?: Styles;\n}\n\nexport interface ComputedConfigForKey {\n handlers: Handler[];\n processors: Processor[];\n}\n\nexport interface ExtendedFunctionNameMetadata {\n functionName: string;\n}\n\nexport interface Config {\n handler?: Handler;\n handlers?: Handler[];\n key?: string;\n keys?: string[];\n pattern?: RegExp;\n processor?: Processor;\n processors?: Processor[];\n stop?: boolean;\n}\n\ndeclare global {\n var __NIGHTINGALE_CONFIG: Config[];\n\n var __NIGHTINGALE_LOGGER_MAP_CACHE: Map<string, ComputedConfigForKey>;\n\n var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey;\n\n var __NIGHTINGALE_GLOBAL_HANDLERS: unknown;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (\n key: string,\n ) => ComputedConfigForKey;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (\n key: string,\n level: number,\n ) => ComputedConfigForKey;\n}\n\nconst globalOrWindow: typeof globalThis =\n typeof globalThis !== \"undefined\" ? globalThis : globalThis;\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =\n (): ComputedConfigForKey => ({\n handlers: [],\n processors: [],\n });\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) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n\nfunction getConfigForLoggerRecord(\n key: string,\n recordLevel: Level,\n): ComputedConfigForKey {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(\n key,\n recordLevel,\n );\n}\n\nfunction isError(messageOrError: Error | string): messageOrError is Error {\n return messageOrError instanceof Error;\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport class Logger {\n private contextObject?: Record<string, unknown>;\n\n readonly key: string;\n\n readonly displayName?: string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName?: string) {\n this.key = key;\n this.displayName = displayName;\n\n if (process.env.NODE_ENV !== \"production\" && key.includes(\".\")) {\n throw new Error(\n `nightingale: \\`.\\` in key is no longer supported, use \\`:\\` instead (key: ${key})`,\n );\n }\n }\n\n /** @private */\n protected getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): Readonly<ComputedConfigForKey> {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName?: string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * ```typescript\n * const loggerMyService = new Logger('app:myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.enter(someAction);\n * // do stuff\n * logger.info('info');\n * // do stuff\n * logger.exit(someAction);\n * }\n * ```\n *\n */\n context(context: Record<string, unknown>): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Get the context of this logger\n */\n getContextObject(): Readonly<Record<string, unknown>> | undefined {\n return this.contextObject;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Record<string, unknown>): void {\n this.contextObject = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Record<string, unknown>): void {\n if (this.contextObject === undefined) {\n throw new Error(\n \"Cannot extends context that does not exists. Use setContext(context) first.\",\n );\n }\n Object.assign(this.contextObject, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord<T extends Metadata>(record: Readonly<LogRecord<T>>): void {\n const { handlers, processors } = this.getHandlersAndProcessors(\n record.level,\n );\n\n if (handlers.length === 0) {\n if (record.level > Level.ERROR) {\n // eslint-disable-next-line no-console\n console.log(\"[nightingale] no logger for > error level.\", {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach((process) => {\n process(record, record.context);\n });\n }\n\n handlers.some((handler) => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n level: Level = Level.INFO,\n options?: Options<T>,\n ): void {\n const isMessageError = isError(messageOrError);\n\n const message = isMessageError\n ? `${messageOrError.name}: ${messageOrError.message}`\n : messageOrError;\n\n const extendedMetadata =\n isMessageError && !(metadata && Object.hasOwn(metadata, \"error\"))\n ? { ...metadata, error: messageOrError }\n : metadata;\n\n const context = extendedMetadata?.context;\n if (extendedMetadata) {\n delete extendedMetadata.context;\n }\n\n const record: LogRecord<NonNullable<typeof extendedMetadata>> = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this.contextObject,\n metadata: extendedMetadata as NonNullable<typeof extendedMetadata>,\n extra: {},\n ...options,\n };\n this.addRecord(record);\n }\n\n /**\n * Log a trace message\n */\n trace<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log a debug message\n */\n debug<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });\n }\n\n /**\n * Notice an info message\n */\n notice<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * }\n * ```\n */\n error<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });\n }\n\n /**\n * Log an critical message\n */\n critical<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * process.exit(1);\n * }\n */\n fatal<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue<T extends Metadata>(\n value: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(value);\n this.log(inspectedValue, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"gray\"],\n });\n }\n\n /**\n * Log a debugged var\n */\n inspectVar<T extends Metadata>(\n varName: string,\n varValue: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(varValue);\n this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"cyan\"],\n });\n }\n\n /**\n * Alias for infoSuccess\n */\n success<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\"],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoFail(messageOrError, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\", \"bold\"],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\"],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): number {\n return this.time(message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd<T extends Metadata>(\n startTime: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n options?: Options<T>,\n ): void {\n const now = Date.now();\n\n const diffTime = now - startTime;\n let readableTime;\n\n if (diffTime < 1000) {\n readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;\n const ms = diffTime - seconds * 1000;\n readableTime = `${seconds ? `${seconds}s and ` : \"\"}${ms}ms`;\n }\n\n const extendedMetadata = {\n ...metadata,\n readableTime,\n timeMs: diffTime,\n };\n\n this.log(message, extendedMetadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * ```typescript\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n * ```\n *\n */\n enter<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"enter\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n * ```\n */\n exit<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"exit\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n * ```\n */\n wrap<Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n metadataStyles: MetadataStyles<T>,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n option1: T | (() => void),\n option2?: MetadataStyles<T> | (() => void),\n callback?: () => void,\n ): void {\n let metadata: T | undefined;\n let metadataStyles: MetadataStyles<T> | undefined;\n\n if (typeof option1 === \"function\") {\n callback = option1;\n } else {\n metadata = option1;\n\n if (typeof option2 === \"function\") {\n callback = option2;\n } else {\n metadataStyles = option2;\n }\n }\n\n this.enter(fn, metadata, metadataStyles);\n (callback as () => void)();\n this.exit(fn);\n }\n}\n"],"names":["process"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nightingale-logger",
3
- "version": "17.0.0",
3
+ "version": "18.0.0",
4
4
  "description": "Logger for browser and node",
5
5
  "keywords": [
6
6
  "nightingale"
@@ -15,10 +15,10 @@
15
15
  "homepage": "https://github.com/christophehurpeau/nightingale",
16
16
  "type": "module",
17
17
  "engines": {
18
- "node": ">=20.11.0"
18
+ "node": ">=22.18.0"
19
19
  },
20
20
  "sideEffects": false,
21
- "main": "./dist/index-node20.mjs",
21
+ "main": "./dist/index-node22.mjs",
22
22
  "types": "./dist/definitions/index.d.ts",
23
23
  "module": "./dist/index-browser.es.js",
24
24
  "browser": "./dist/index-browser.es.js",
@@ -27,10 +27,10 @@
27
27
  ".": {
28
28
  "types": "./dist/definitions/index.d.ts",
29
29
  "node": {
30
- "import": "./dist/index-node20.mjs"
30
+ "import": "./dist/index-node22.mjs"
31
31
  },
32
32
  "react-native": {
33
- "import": "./dist/index-browser.es.js"
33
+ "import": "./dist/index-react-native.es.js"
34
34
  },
35
35
  "browser": {
36
36
  "import": "./dist/index-browser.es.js"
@@ -68,7 +68,10 @@
68
68
  "envs": [
69
69
  {
70
70
  "target": "node",
71
- "version": "20"
71
+ "version": "22"
72
+ },
73
+ {
74
+ "target": "react-native"
72
75
  },
73
76
  {
74
77
  "target": "browser"
@@ -78,12 +81,12 @@
78
81
  },
79
82
  "prettier": "@pob/root/prettier-config",
80
83
  "dependencies": {
81
- "@types/node": ">=20.0.0",
82
- "nightingale-levels": "17.0.0",
83
- "nightingale-types": "17.0.0"
84
+ "@types/node": ">=22.0.0",
85
+ "nightingale-levels": "18.0.0",
86
+ "nightingale-types": "18.0.0"
84
87
  },
85
88
  "devDependencies": {
86
- "@pob/rollup-esbuild": "6.7.0",
87
- "typescript": "5.9.2"
89
+ "@pob/rollup-esbuild": "7.3.2",
90
+ "typescript": "5.9.3"
88
91
  }
89
92
  }
package/src/index.test.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  // eslint-disable-next-line import/no-extraneous-dependencies
2
2
  import { jest } from "@jest/globals";
3
- import { Logger } from ".";
3
+ import { Logger } from "./index.ts";
4
4
 
5
5
  test("key argument", () => {
6
6
  const key = "test";
package/src/index.ts CHANGED
@@ -7,7 +7,7 @@ import type {
7
7
  Processor,
8
8
  Styles,
9
9
  } from "nightingale-types";
10
- import { inspectValue } from "./inspectValue";
10
+ import { inspectValue } from "./inspectValue.ts";
11
11
 
12
12
  export { Level } from "nightingale-levels";
13
13
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-node20.mjs","sources":["../src/inspectValue.target-node.ts","../src/index.ts"],"sourcesContent":["import * as util from \"node:util\";\n\nexport const inspectValue = (value: unknown): string =>\n // Note: inspect is a special function for node:\n // https://github.com/nodejs/node/blob/a1bda1b4deb08dfb3e06cb778f0db40023b18318/lib/util.js#L210\n util.inspect(value, { depth: 6 });\n","import { Level } from \"nightingale-levels\";\nimport type {\n Handler,\n LogRecord,\n Metadata,\n MetadataStyles,\n Processor,\n Styles,\n} from \"nightingale-types\";\nimport { inspectValue } from \"./inspectValue\";\n\nexport { Level } from \"nightingale-levels\";\n\nexport interface Options<T extends Metadata> {\n symbol?: string;\n metadataStyles?: MetadataStyles<T>;\n styles?: Styles;\n}\n\nexport interface ComputedConfigForKey {\n handlers: Handler[];\n processors: Processor[];\n}\n\nexport interface ExtendedFunctionNameMetadata {\n functionName: string;\n}\n\nexport interface Config {\n handler?: Handler;\n handlers?: Handler[];\n key?: string;\n keys?: string[];\n pattern?: RegExp;\n processor?: Processor;\n processors?: Processor[];\n stop?: boolean;\n}\n\ndeclare global {\n var __NIGHTINGALE_CONFIG: Config[];\n\n var __NIGHTINGALE_LOGGER_MAP_CACHE: Map<string, ComputedConfigForKey>;\n\n var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey;\n\n var __NIGHTINGALE_GLOBAL_HANDLERS: unknown;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (\n key: string,\n ) => ComputedConfigForKey;\n\n var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (\n key: string,\n level: number,\n ) => ComputedConfigForKey;\n}\n\nconst globalOrWindow: typeof globalThis =\n typeof globalThis !== \"undefined\" ? globalThis : globalThis;\n\nif (!globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER =\n (): ComputedConfigForKey => ({\n handlers: [],\n processors: [],\n });\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) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n\nfunction getConfigForLoggerRecord(\n key: string,\n recordLevel: Level,\n): ComputedConfigForKey {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD(\n key,\n recordLevel,\n );\n}\n\nfunction isError(messageOrError: Error | string): messageOrError is Error {\n return messageOrError instanceof Error;\n}\n\n/**\n * Interface that allows you to log records.\n * This records are treated by handlers\n */\nexport class Logger {\n private contextObject?: Record<string, unknown>;\n\n readonly key: string;\n\n readonly displayName?: string;\n\n /**\n * Create a new Logger\n *\n * @param {string} key\n * @param {string} [displayName]\n */\n constructor(key: string, displayName?: string) {\n this.key = key;\n this.displayName = displayName;\n\n if (process.env.NODE_ENV !== \"production\" && key.includes(\".\")) {\n throw new Error(\n `nightingale: \\`.\\` in key is no longer supported, use \\`:\\` instead (key: ${key})`,\n );\n }\n }\n\n /** @private */\n protected getHandlersAndProcessors(\n recordLevel: number,\n ): ComputedConfigForKey {\n return getConfigForLoggerRecord(this.key, recordLevel);\n }\n\n /** @private */\n getConfig(): Readonly<ComputedConfigForKey> {\n return globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(this.key);\n }\n\n /**\n * Create a child logger\n */\n child(childSuffixKey: string, childDisplayName?: string): Logger {\n return new Logger(`${this.key}:${childSuffixKey}`, childDisplayName);\n }\n\n /**\n * Create a new Logger with the same key a this attached context\n *\n * @example\n * ```typescript\n * const loggerMyService = new Logger('app:myService');\n * function someAction(arg1) {\n * const logger = loggerMyService.context({ arg1 });\n * logger.enter(someAction);\n * // do stuff\n * logger.info('info');\n * // do stuff\n * logger.exit(someAction);\n * }\n * ```\n *\n */\n context(context: Record<string, unknown>): Logger {\n const logger = new Logger(this.key);\n logger.setContext(context);\n return logger;\n }\n\n /**\n * Get the context of this logger\n */\n getContextObject(): Readonly<Record<string, unknown>> | undefined {\n return this.contextObject;\n }\n\n /**\n * Set the context of this logger\n *\n * @param {Object} context\n */\n setContext(context: Record<string, unknown>): void {\n this.contextObject = context;\n }\n\n /**\n * Extends existing context of this logger\n */\n extendsContext(extendedContext: Record<string, unknown>): void {\n if (this.contextObject === undefined) {\n throw new Error(\n \"Cannot extends context that does not exists. Use setContext(context) first.\",\n );\n }\n Object.assign(this.contextObject, extendedContext);\n }\n\n /**\n * Handle a record\n *\n * Use this only if you know what you are doing.\n */\n addRecord<T extends Metadata>(record: Readonly<LogRecord<T>>): void {\n const { handlers, processors } = this.getHandlersAndProcessors(\n record.level,\n );\n\n if (handlers.length === 0) {\n if (record.level > Level.ERROR) {\n // eslint-disable-next-line no-console\n console.log(\"[nightingale] no logger for > error level.\", {\n key: record.key,\n message: record.message,\n });\n }\n return;\n }\n\n if (processors) {\n processors.forEach((process) => {\n process(record, record.context);\n });\n }\n\n handlers.some((handler) => handler.handle(record) === false);\n }\n\n /**\n * Log a message\n */\n log<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n level: Level = Level.INFO,\n options?: Options<T>,\n ): void {\n const isMessageError = isError(messageOrError);\n\n const message = isMessageError\n ? `${messageOrError.name}: ${messageOrError.message}`\n : messageOrError;\n\n const extendedMetadata =\n isMessageError && !(metadata && Object.hasOwn(metadata, \"error\"))\n ? { ...metadata, error: messageOrError }\n : metadata;\n\n const context = extendedMetadata?.context;\n if (extendedMetadata) {\n delete extendedMetadata.context;\n }\n\n const record: LogRecord<NonNullable<typeof extendedMetadata>> = {\n level,\n key: this.key,\n displayName: this.displayName,\n datetime: new Date(),\n message,\n context: context || this.contextObject,\n metadata: extendedMetadata as NonNullable<typeof extendedMetadata>,\n extra: {},\n ...options,\n };\n this.addRecord(record);\n }\n\n /**\n * Log a trace message\n */\n trace<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log a debug message\n */\n debug<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, { metadataStyles });\n }\n\n /**\n * Notice an info message\n */\n notice<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.NOTICE, { metadataStyles });\n }\n\n /**\n * Log an info message\n */\n info<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, { metadataStyles });\n }\n\n /**\n * Log a warn message\n */\n warn<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.WARN, { metadataStyles });\n }\n\n /**\n * Log an error message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * }\n * ```\n */\n error<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ERROR, { metadataStyles });\n }\n\n /**\n * Log an critical message\n */\n critical<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.CRITICAL, { metadataStyles });\n }\n\n /**\n * Log a fatal message\n *\n * @example\n * ```typescript\n * const logger = new Logger('something');\n * try {\n * throw new Error('Always throws here');\n * } catch (error) {\n * logger.error('caught error', { error });\n * process.exit(1);\n * }\n */\n fatal<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.FATAL, { metadataStyles });\n }\n\n /**\n * Log an alert message\n */\n alert<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.ALERT, { metadataStyles });\n }\n\n /**\n * Log an inspected value\n */\n inspectValue<T extends Metadata>(\n value: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(value);\n this.log(inspectedValue, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"gray\"],\n });\n }\n\n /**\n * Log a debugged var\n */\n inspectVar<T extends Metadata>(\n varName: string,\n varValue: unknown,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n const inspectedValue = inspectValue(varValue);\n this.log(`${varName} = ${inspectedValue}`, metadata, Level.DEBUG, {\n metadataStyles,\n styles: [\"cyan\"],\n });\n }\n\n /**\n * Alias for infoSuccess\n */\n success<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoSuccess(message, metadata, metadataStyles);\n }\n\n /**\n * Log an info success message\n */\n infoSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an debug success message\n */\n debugSuccess<T extends Metadata>(\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(message, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✔\",\n styles: [\"green\"],\n });\n }\n\n /**\n * Alias for infoFail\n */\n fail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.infoFail(messageOrError, metadata, metadataStyles);\n }\n\n /**\n * Log an info fail message\n */\n infoFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.INFO, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\", \"bold\"],\n });\n }\n\n /**\n * Log an debug fail message\n */\n debugFail<T extends Metadata>(\n messageOrError: Error | string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.log(messageOrError, metadata, Level.DEBUG, {\n metadataStyles,\n symbol: \"✖\",\n styles: [\"red\"],\n });\n }\n\n /**\n * @returns {number} time to pass to timeEnd\n */\n time<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n ): number {\n if (message) {\n this.log(message, metadata, level, { metadataStyles });\n }\n\n return Date.now();\n }\n\n infoTime<T extends Metadata>(\n message?: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): number {\n return this.time(message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Finds difference between when this method\n * was called and when the respective time method\n * was called, then logs out the difference\n * and deletes the original record\n */\n timeEnd<T extends Metadata>(\n startTime: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n level: number = Level.DEBUG,\n options?: Options<T>,\n ): void {\n const now = Date.now();\n\n const diffTime = now - startTime;\n let readableTime;\n\n if (diffTime < 1000) {\n readableTime = `${diffTime}ms`;\n } else {\n const seconds = diffTime > 1000 ? Math.floor(diffTime / 1000) : 0;\n const ms = diffTime - seconds * 1000;\n readableTime = `${seconds ? `${seconds}s and ` : \"\"}${ms}ms`;\n }\n\n const extendedMetadata = {\n ...metadata,\n readableTime,\n timeMs: diffTime,\n };\n\n this.log(message, extendedMetadata, level, { ...options, metadataStyles });\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO);\n }\n\n /**\n * Like timeEnd, but with INFO level\n */\n infoSuccessTimeEnd<T extends Metadata>(\n time: number,\n message: string,\n metadata?: T,\n metadataStyles?: MetadataStyles<T>,\n ): void {\n this.timeEnd(time, message, metadata, metadataStyles, Level.INFO, {\n symbol: \"✔\",\n styles: [\"green\", \"bold\"],\n });\n }\n\n /**\n * Log an enter in a function\n *\n * @example\n * ```typescript\n * class A {\n * method(arg1) {\n * logger.enter(method, { arg1 });\n * // Do your stuff\n * }\n * }\n * ```\n *\n */\n enter<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"enter\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Log an exit in a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method(arg1) {\n * // Do your stuff\n * logger.exit(method, { arg1 });\n * }\n * }\n * ```\n */\n exit<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata?: T,\n metadataStyles?: MetadataStyles<ExtendedFunctionNameMetadata & T>,\n ): void {\n const extendedMetadata = {\n ...metadata,\n functionName: fn.name,\n };\n this.log(\"exit\", extendedMetadata, Level.TRACE, { metadataStyles });\n }\n\n /**\n * Wrap around a function to log enter and exit of a function\n *\n * @example\n * ```typescript\n * const logger = new Logger('myNamespace:A');\n * class A {\n * method() {\n * logger.wrap(method, () => {\n * // Do your stuff\n * });\n * }\n * }\n * ```\n */\n wrap<Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n metadata: T,\n metadataStyles: MetadataStyles<T>,\n callback: () => void,\n ): void;\n\n wrap<T extends Metadata, Fn extends (...args: unknown[]) => unknown>(\n fn: Fn,\n option1: T | (() => void),\n option2?: MetadataStyles<T> | (() => void),\n callback?: () => void,\n ): void {\n let metadata: T | undefined;\n let metadataStyles: MetadataStyles<T> | undefined;\n\n if (typeof option1 === \"function\") {\n callback = option1;\n } else {\n metadata = option1;\n\n if (typeof option2 === \"function\") {\n callback = option2;\n } else {\n metadataStyles = option2;\n }\n }\n\n this.enter(fn, metadata, metadataStyles);\n (callback as () => void)();\n this.exit(fn);\n }\n}\n"],"names":["process"],"mappings":"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"}