{"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,\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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"}