{"version":3,"sources":["/home/runner/work/loglayer/loglayer/packages/core/loglayer/dist/index.cjs","../src/LogLayer.ts","../src/LogBuilder.ts","../src/PluginManager.ts","../src/MockLogBuilder.ts","../src/MockLogLayer.ts","../src/types/index.ts","../src/transports/ConsoleTransport.ts","../src/TestLoggingLibrary.ts","../src/transports/TestTransport.ts","../src/index.ts"],"names":["PluginCallbackType","LogLevel"],"mappings":"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","file":"/home/runner/work/loglayer/loglayer/packages/core/loglayer/dist/index.cjs","sourcesContent":[null,"import {\n  type ErrorOnlyOpts,\n  type IContextManager,\n  type ILogLayer,\n  LogLevel,\n  type MessageDataType,\n} from \"@loglayer/shared\";\nimport { LogBuilder } from \"./LogBuilder.js\";\nimport { PluginManager } from \"./PluginManager.js\";\nimport type { LogLayerConfig } from \"./types/index.js\";\n\nimport { DefaultContextManager } from \"@loglayer/context-manager\";\nimport { type LogLayerPlugin, PluginCallbackType } from \"@loglayer/plugin\";\nimport type { LogLayerTransport } from \"@loglayer/transport\";\n\ninterface FormatLogParams {\n  logLevel: LogLevel;\n  params?: any[];\n  metadata?: Record<string, any> | null;\n  err?: any;\n}\n\n/**\n * Wraps around a logging framework to provide convenience methods that allow\n * developers to programmatically specify their errors and metadata along with\n * a message in a consistent fashion.\n */\nexport class LogLayer implements ILogLayer {\n  private pluginManager: PluginManager;\n  private idToTransport: Record<string, any>;\n  private hasMultipleTransports: boolean;\n  private singleTransport: LogLayerTransport | null;\n  private contextManager: IContextManager;\n\n  _config: LogLayerConfig;\n\n  constructor(config: LogLayerConfig) {\n    this._config = {\n      ...config,\n      enabled: config.enabled ?? true,\n    };\n\n    this.contextManager = new DefaultContextManager();\n    this.pluginManager = new PluginManager(config.plugins || []);\n\n    if (!this._config.errorFieldName) {\n      this._config.errorFieldName = \"err\";\n    }\n\n    if (!this._config.copyMsgOnOnlyError) {\n      this._config.copyMsgOnOnlyError = false;\n    }\n\n    this._initializeTransports(this._config.transport);\n  }\n\n  /**\n   * Sets the context manager to use for managing context data.\n   */\n  withContextManager(contextManager: IContextManager): LogLayer {\n    // Dispose of existing context manager if it implements Disposable\n    if (this.contextManager && typeof (this.contextManager as any)[Symbol.dispose] === \"function\") {\n      (this.contextManager as any)[Symbol.dispose]();\n    }\n\n    this.contextManager = contextManager;\n    return this;\n  }\n\n  /**\n   * Returns the context manager instance being used.\n   */\n  getContextManager<M extends IContextManager = IContextManager>(): M {\n    return this.contextManager as M;\n  }\n\n  private _initializeTransports(transports: LogLayerTransport | Array<LogLayerTransport>) {\n    // Dispose of any existing transports\n    if (this.idToTransport) {\n      for (const id in this.idToTransport) {\n        if (this.idToTransport[id] && typeof this.idToTransport[id][Symbol.dispose] === \"function\") {\n          this.idToTransport[id][Symbol.dispose]();\n        }\n      }\n    }\n\n    this.hasMultipleTransports = Array.isArray(transports) && transports.length > 1;\n    this.singleTransport = this.hasMultipleTransports ? null : Array.isArray(transports) ? transports[0] : transports;\n\n    if (Array.isArray(transports)) {\n      this.idToTransport = transports.reduce((acc, transport) => {\n        acc[transport.id] = transport;\n        return acc;\n      }, {});\n    } else {\n      this.idToTransport = {\n        [transports.id]: transports,\n      };\n    }\n  }\n\n  /**\n   * Calls child() and sets the prefix to be included with every log message.\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html#message-prefixing | Message Prefixing Docs}\n   */\n  withPrefix(prefix: string): LogLayer {\n    const logger = this.child();\n    logger._config.prefix = prefix;\n\n    return logger;\n  }\n\n  /**\n   * Appends context data which will be included with\n   * every log entry.\n   *\n   * Passing in an empty value / object will *not* clear the context.\n   *\n   * To clear the context, use {@link https://loglayer.dev/logging-api/context.html#clearing-context | clearContext()}.\n   *\n   * @see {@link https://loglayer.dev/logging-api/context.html | Context Docs}\n   */\n  withContext(context?: Record<string, any>): LogLayer {\n    let updatedContext = context;\n\n    if (!context) {\n      if (this._config.consoleDebug) {\n        console.debug(\"[LogLayer] withContext was called with no context; dropping.\");\n      }\n\n      return this;\n    }\n\n    if (this.pluginManager.hasPlugins(PluginCallbackType.onContextCalled)) {\n      updatedContext = this.pluginManager.runOnContextCalled(context, this);\n\n      if (!updatedContext) {\n        if (this._config.consoleDebug) {\n          console.debug(\"[LogLayer] Context was dropped due to plugin returning falsy value.\");\n        }\n\n        return this;\n      }\n    }\n\n    this.contextManager.appendContext(updatedContext);\n    return this;\n  }\n\n  /**\n   * Clears the context data.\n   */\n  clearContext() {\n    this.contextManager.setContext(undefined);\n\n    return this;\n  }\n\n  getContext(): Record<string, any> {\n    return this.contextManager.getContext();\n  }\n\n  /**\n   * Add additional plugins.\n   *\n   * @see {@link https://loglayer.dev/plugins/ | Plugins Docs}\n   */\n  addPlugins(plugins: Array<LogLayerPlugin>) {\n    this.pluginManager.addPlugins(plugins);\n  }\n\n  /**\n   * Enables a plugin by id.\n   *\n   * @see {@link https://loglayer.dev/plugins/ | Plugins Docs}\n   */\n  enablePlugin(id: string) {\n    this.pluginManager.enablePlugin(id);\n  }\n\n  /**\n   * Disables a plugin by id.\n   *\n   * @see {@link https://loglayer.dev/plugins/ | Plugins Docs}\n   */\n  disablePlugin(id: string) {\n    this.pluginManager.disablePlugin(id);\n  }\n\n  /**\n   * Removes a plugin by id.\n   *\n   * @see {@link https://loglayer.dev/plugins/ | Plugins Docs}\n   */\n  removePlugin(id: string) {\n    this.pluginManager.removePlugin(id);\n  }\n\n  /**\n   * Specifies metadata to include with the log message\n   *\n   * @see {@link https://loglayer.dev/logging-api/metadata.html | Metadata Docs}\n   */\n  withMetadata(metadata?: Record<string, any>) {\n    return new LogBuilder(this).withMetadata(metadata);\n  }\n\n  /**\n   * Specifies an Error to include with the log message\n   *\n   * @see {@link https://loglayer.dev/logging-api/error-handling.html | Error Handling Docs}\n   */\n  withError(error: any) {\n    return new LogBuilder(this).withError(error);\n  }\n\n  /**\n   * Creates a new instance of LogLayer but with the initialization\n   * configuration and context copied over.\n   *\n   * @see {@link https://loglayer.dev/logging-api/child-loggers.html | Child Logging Docs}\n   */\n  child(): LogLayer {\n    const childConfig = {\n      ...this._config,\n      transport: Array.isArray(this._config.transport) ? [...this._config.transport] : this._config.transport,\n    };\n\n    const childLogger = new LogLayer(childConfig)\n      .withPluginManager(this.pluginManager)\n      .withContextManager(this.contextManager.clone());\n\n    // Notify context manager about child logger creation\n    this.contextManager.onChildLoggerCreated({\n      parentContextManager: this.contextManager,\n      childContextManager: childLogger.contextManager,\n      parentLogger: this,\n      childLogger,\n    });\n\n    return childLogger;\n  }\n\n  /**\n   * Replaces all existing transports with new ones.\n   *\n   * When used with child loggers, it only affects the current logger instance\n   * and does not modify the parent's transports.\n   *\n   * @see {@link https://loglayer.dev/logging-api/transport-management.html | Transport Management Docs}\n   */\n  withFreshTransports(transports: LogLayerTransport | Array<LogLayerTransport>): LogLayer {\n    this._config.transport = transports;\n    this._initializeTransports(transports);\n    return this;\n  }\n\n  /**\n   * Replaces all existing plugins with new ones.\n   *\n   * When used with child loggers, it only affects the current logger instance\n   * and does not modify the parent's plugins.\n   *\n   * @see {@link https://loglayer.dev/plugins/ | Plugins Docs}\n   */\n  withFreshPlugins(plugins: Array<LogLayerPlugin>): LogLayer {\n    this._config.plugins = plugins;\n    this.pluginManager = new PluginManager(plugins);\n    return this;\n  }\n\n  protected withPluginManager(pluginManager: PluginManager) {\n    this.pluginManager = pluginManager;\n    return this;\n  }\n\n  /**\n   * Logs only the error object without a log message\n   *\n   * @see {@link https://loglayer.dev/logging-api/error-handling.html | Error Handling Docs}\n   */\n  errorOnly(error: any, opts?: ErrorOnlyOpts) {\n    const { copyMsgOnOnlyError } = this._config;\n\n    const formatLogConf: FormatLogParams = {\n      logLevel: opts?.logLevel || LogLevel.error,\n      err: error,\n    };\n\n    // Copy the error message as the log message\n    if (((copyMsgOnOnlyError && opts?.copyMsg !== false) || opts?.copyMsg === true) && error?.message) {\n      formatLogConf.params = [error.message];\n    }\n\n    this._formatLog(formatLogConf);\n  }\n\n  /**\n   * Logs only metadata without a log message\n   *\n   * @see {@link https://loglayer.dev/logging-api/metadata.html | Metadata Docs}\n   */\n  metadataOnly(metadata?: Record<string, any>, logLevel: LogLevel = LogLevel.info) {\n    const { muteMetadata, consoleDebug } = this._config;\n\n    if (muteMetadata) {\n      return;\n    }\n\n    if (!metadata) {\n      if (consoleDebug) {\n        console.debug(\"[LogLayer] metadataOnly was called with no metadata; dropping.\");\n      }\n\n      return this;\n    }\n\n    let data: Record<string, any> | null = metadata;\n\n    if (this.pluginManager.hasPlugins(PluginCallbackType.onMetadataCalled)) {\n      data = this.pluginManager.runOnMetadataCalled(metadata, this);\n\n      if (!data) {\n        if (consoleDebug) {\n          console.debug(\"[LogLayer] Metadata was dropped due to plugin returning falsy value.\");\n        }\n\n        return;\n      }\n    }\n\n    const config: FormatLogParams = {\n      logLevel,\n      metadata: data,\n    };\n\n    this._formatLog(config);\n  }\n\n  /**\n   * Sends a log message to the logging library under an info log level.\n   *\n   * The logging library may or may not support multiple message parameters and only\n   * the first parameter would be used.\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html | Basic Logging Docs}\n   */\n  info(...messages: MessageDataType[]) {\n    this._formatMessage(messages);\n    this._formatLog({ logLevel: LogLevel.info, params: messages });\n  }\n\n  /**\n   * Sends a log message to the logging library under the warn log level\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html | Basic Logging Docs}\n   */\n  warn(...messages: MessageDataType[]) {\n    this._formatMessage(messages);\n    this._formatLog({ logLevel: LogLevel.warn, params: messages });\n  }\n\n  /**\n   * Sends a log message to the logging library under the error log level\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html | Basic Logging Docs}\n   */\n  error(...messages: MessageDataType[]) {\n    this._formatMessage(messages);\n    this._formatLog({ logLevel: LogLevel.error, params: messages });\n  }\n\n  /**\n   * Sends a log message to the logging library under the debug log level\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html | Basic Logging Docs}\n   */\n  debug(...messages: MessageDataType[]) {\n    this._formatMessage(messages);\n    this._formatLog({ logLevel: LogLevel.debug, params: messages });\n  }\n\n  /**\n   * Sends a log message to the logging library under the trace log level\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html | Basic Logging Docs}\n   */\n  trace(...messages: MessageDataType[]) {\n    this._formatMessage(messages);\n    this._formatLog({ logLevel: LogLevel.trace, params: messages });\n  }\n\n  /**\n   * Sends a log message to the logging library under the fatal log level\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html | Basic Logging Docs}\n   */\n  fatal(...messages: MessageDataType[]) {\n    this._formatMessage(messages);\n    this._formatLog({ logLevel: LogLevel.fatal, params: messages });\n  }\n\n  /**\n   * All logging inputs are dropped and stops sending logs to the logging library.\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html#enabling-disabling-logging | Enabling/Disabling Logging Docs}\n   */\n  disableLogging() {\n    this._config.enabled = false;\n    return this;\n  }\n\n  /**\n   * Enable sending logs to the logging library.\n   *\n   * @see {@link https://loglayer.dev/logging-api/basic-logging.html#enabling-disabling-logging | Enabling/Disabling Logging Docs}\n   */\n  enableLogging() {\n    this._config.enabled = true;\n    return this;\n  }\n\n  /**\n   * Disables inclusion of context data in the print\n   *\n   * @see {@link https://loglayer.dev/logging-api/context.html#managing-context | Managing Context Docs}\n   */\n  muteContext(): ILogLayer {\n    this._config.muteContext = true;\n    return this;\n  }\n\n  /**\n   * Enables inclusion of context data in the print\n   *\n   * @see {@link https://loglayer.dev/logging-api/context.html#managing-context | Managing Context Docs}\n   */\n  unMuteContext(): ILogLayer {\n    this._config.muteContext = false;\n    return this;\n  }\n\n  /**\n   * Disables inclusion of metadata in the print\n   *\n   * @see {@link https://loglayer.dev/logging-api/metadata.html#controlling-metadata-output | Controlling Metadata Output Docs}\n   */\n  muteMetadata(): ILogLayer {\n    this._config.muteMetadata = true;\n    return this;\n  }\n\n  /**\n   * Enables inclusion of metadata in the print\n   *\n   * @see {@link https://loglayer.dev/logging-api/metadata.html#controlling-metadata-output | Controlling Metadata Output Docs}\n   */\n  unMuteMetadata(): ILogLayer {\n    this._config.muteMetadata = false;\n    return this;\n  }\n\n  private formatContext() {\n    const { contextFieldName, muteContext } = this._config;\n    const context = this.contextManager.getContext();\n\n    if (this.contextManager.hasContextData() && !muteContext) {\n      if (contextFieldName) {\n        return {\n          [contextFieldName]: {\n            ...context,\n          },\n        };\n      }\n\n      return {\n        ...context,\n      };\n    }\n\n    return {};\n  }\n\n  private formatMetadata(data: Record<string, any> | null = null) {\n    const { metadataFieldName, muteMetadata } = this._config;\n\n    if (data && !muteMetadata) {\n      if (metadataFieldName) {\n        return {\n          [metadataFieldName]: {\n            ...data,\n          },\n        };\n      }\n\n      return {\n        ...data,\n      };\n    }\n\n    return {};\n  }\n\n  /**\n   * Returns a logger instance for a specific transport\n   *\n   * @see {@link https://loglayer.dev/logging-api/transport-management.html | Transport Management Docs}\n   */\n  getLoggerInstance<Logger>(id: string): Logger | undefined {\n    const transport = this.idToTransport[id];\n\n    if (!transport) {\n      return undefined;\n    }\n\n    return transport.getLoggerInstance();\n  }\n\n  _formatMessage(messages: MessageDataType[] = []) {\n    const { prefix } = this._config;\n\n    if (prefix && typeof messages[0] === \"string\") {\n      messages[0] = `${prefix} ${messages[0]}`;\n    }\n  }\n\n  _formatLog({ logLevel, params = [], metadata = null, err }: FormatLogParams) {\n    const {\n      enabled,\n      errorSerializer,\n      errorFieldInMetadata,\n      muteContext,\n      contextFieldName,\n      metadataFieldName,\n      errorFieldName,\n    } = this._config;\n\n    if (!enabled) {\n      return;\n    }\n\n    let hasObjData = !!metadata || (muteContext ? false : this.contextManager.hasContextData());\n\n    let d: Record<string, any> | undefined | null = {};\n\n    if (hasObjData) {\n      // Field names for context and metadata is the same, merge the metadata into the same field name\n      if (contextFieldName && contextFieldName === metadataFieldName) {\n        const contextData = this.formatContext()[contextFieldName];\n        const updatedMetadata = this.formatMetadata(metadata)[metadataFieldName];\n\n        d = {\n          [contextFieldName]: {\n            ...contextData,\n            ...updatedMetadata,\n          },\n        };\n      } else {\n        d = {\n          ...this.formatContext(),\n          ...this.formatMetadata(metadata),\n        };\n      }\n    }\n\n    if (err) {\n      const serializedError = errorSerializer ? errorSerializer(err) : err;\n\n      // The error should be placed into a metadata field\n      if (errorFieldInMetadata && metadata) {\n        metadata[errorFieldName] = serializedError;\n      } else if (errorFieldInMetadata && !metadata && metadataFieldName) {\n        d = {\n          ...d,\n          [metadataFieldName]: {\n            [errorFieldName]: serializedError,\n          },\n        };\n\n        // The error should be placed at the root level\n      } else {\n        d = {\n          ...d,\n          [errorFieldName]: serializedError,\n        };\n      }\n\n      hasObjData = true;\n    }\n\n    if (this.pluginManager.hasPlugins(PluginCallbackType.onBeforeDataOut)) {\n      d = this.pluginManager.runOnBeforeDataOut(\n        {\n          data: hasObjData ? d : undefined,\n          logLevel,\n        },\n        this,\n      );\n\n      if (d && !hasObjData) {\n        hasObjData = true;\n      }\n    }\n\n    if (this.pluginManager.hasPlugins(PluginCallbackType.onBeforeMessageOut)) {\n      params = this.pluginManager.runOnBeforeMessageOut(\n        {\n          messages: [...params],\n          logLevel,\n        },\n        this,\n      );\n    }\n\n    if (this.hasMultipleTransports) {\n      const transportPromises = (this._config.transport as LogLayerTransport[])\n        .filter((transport) => transport.enabled)\n        .map(async (transport) => {\n          if (this.pluginManager.hasPlugins(PluginCallbackType.shouldSendToLogger)) {\n            const shouldSend = this.pluginManager.runShouldSendToLogger(\n              {\n                messages: [...params],\n                data: hasObjData ? d : undefined,\n                logLevel,\n                transportId: transport.id,\n              },\n              this,\n            );\n\n            if (!shouldSend) {\n              return;\n            }\n          }\n\n          return transport._sendToLogger({\n            logLevel,\n            messages: [...params],\n            data: hasObjData ? d : undefined,\n            hasData: hasObjData,\n          });\n        });\n\n      // Execute all transports in parallel\n      Promise.all(transportPromises).catch((err) => {\n        if (this._config.consoleDebug) {\n          console.error(\"[LogLayer] Error executing transports:\", err);\n        }\n      });\n    } else {\n      // Use cached single transport\n      if (!this.singleTransport?.enabled) {\n        return;\n      }\n\n      if (this.pluginManager.hasPlugins(PluginCallbackType.shouldSendToLogger)) {\n        const shouldSend = this.pluginManager.runShouldSendToLogger(\n          {\n            messages: [...params],\n            data: hasObjData ? d : undefined,\n            logLevel,\n            transportId: this.singleTransport.id,\n          },\n          this,\n        );\n\n        if (!shouldSend) {\n          return;\n        }\n      }\n\n      // Execute single transport synchronously\n      this.singleTransport._sendToLogger({\n        logLevel,\n        messages: [...params],\n        data: hasObjData ? d : undefined,\n        hasData: hasObjData,\n      });\n    }\n  }\n}\n","import { PluginCallbackType } from \"@loglayer/plugin\";\nimport { LogLevel } from \"@loglayer/shared\";\nimport type { MessageDataType } from \"@loglayer/shared\";\nimport type { ILogBuilder } from \"@loglayer/shared\";\nimport type { LogLayer } from \"./LogLayer.js\";\nimport type { PluginManager } from \"./PluginManager.js\";\n\n/**\n * A class that contains methods to specify log metadata and an error and assembles\n * it together to form a data object that can be passed into the transport.\n */\nexport class LogBuilder implements ILogBuilder {\n  private err: any;\n  private metadata: Record<string, any>;\n  private structuredLogger: LogLayer;\n  private hasMetadata: boolean;\n  private pluginManager: PluginManager;\n\n  constructor(structuredLogger: LogLayer) {\n    this.err = null;\n    this.metadata = {};\n    this.structuredLogger = structuredLogger;\n    this.hasMetadata = false;\n    this.pluginManager = structuredLogger[\"pluginManager\"];\n  }\n\n  /**\n   * Specifies metadata to include with the log message\n   *\n   * @see {@link https://loglayer.dev/logging-api/metadata.html | Metadata Docs}\n   */\n  withMetadata(metadata?: Record<string, any>) {\n    const {\n      pluginManager,\n      structuredLogger: {\n        _config: { consoleDebug },\n      },\n    } = this;\n\n    if (!metadata) {\n      if (consoleDebug) {\n        console.debug(\"[LogLayer] withMetadata was called with no metadata; dropping.\");\n      }\n\n      return this;\n    }\n\n    let data: Record<string, any> | null = metadata;\n\n    if (pluginManager.hasPlugins(PluginCallbackType.onMetadataCalled)) {\n      data = pluginManager.runOnMetadataCalled(metadata, this.structuredLogger);\n\n      if (!data) {\n        if (consoleDebug) {\n          console.debug(\"[LogLayer] Metadata was dropped due to plugin returning falsy value.\");\n        }\n\n        return this;\n      }\n    }\n\n    this.metadata = {\n      ...this.metadata,\n      ...data,\n    };\n\n    this.hasMetadata = true;\n\n    return this;\n  }\n\n  /**\n   * Specifies an Error to include with the log message\n   *\n   * @see {@link https://loglayer.dev/logging-api/error-handling.html | Error Handling Docs}\n   */\n  withError(error: any) {\n    this.err = error;\n    return this;\n  }\n\n  /**\n   * Sends a log message to the logging library under an info log level.\n   */\n  info(...messages: MessageDataType[]) {\n    this.structuredLogger._formatMessage(messages);\n    this.formatLog(LogLevel.info, messages);\n  }\n\n  /**\n   * Sends a log message to the logging library under the warn log level\n   */\n  warn(...messages: MessageDataType[]) {\n    this.structuredLogger._formatMessage(messages);\n    this.formatLog(LogLevel.warn, messages);\n  }\n\n  /**\n   * Sends a log message to the logging library under the error log level\n   */\n  error(...messages: MessageDataType[]) {\n    this.structuredLogger._formatMessage(messages);\n    this.formatLog(LogLevel.error, messages);\n  }\n\n  /**\n   * Sends a log message to the logging library under the debug log level\n   *\n   * The logging library may or may not support multiple message parameters and only\n   * the first parameter would be used.\n   */\n  debug(...messages: MessageDataType[]) {\n    this.structuredLogger._formatMessage(messages);\n    this.formatLog(LogLevel.debug, messages);\n  }\n\n  /**\n   * Sends a log message to the logging library under the trace log level\n   *\n   * The logging library may or may not support multiple message parameters and only\n   * the first parameter would be used.\n   */\n  trace(...messages: MessageDataType[]) {\n    this.structuredLogger._formatMessage(messages);\n    this.formatLog(LogLevel.trace, messages);\n  }\n\n  /**\n   * Sends a log message to the logging library under the fatal log level\n   *\n   * The logging library may or may not support multiple message parameters and only\n   * the first parameter would be used.\n   */\n  fatal(...messages: MessageDataType[]) {\n    this.structuredLogger._formatMessage(messages);\n    this.formatLog(LogLevel.fatal, messages);\n  }\n\n  /**\n   * All logging inputs are dropped and stops sending logs to the logging library.\n   */\n  disableLogging() {\n    this.structuredLogger._config.enabled = false;\n    return this;\n  }\n\n  /**\n   * Enable sending logs to the logging library.\n   */\n  enableLogging() {\n    this.structuredLogger._config.enabled = true;\n    return this;\n  }\n\n  private formatLog(logLevel: LogLevel, params: any[]) {\n    const { muteMetadata } = this.structuredLogger._config;\n\n    const hasData = muteMetadata ? false : this.hasMetadata;\n\n    this.structuredLogger._formatLog({ logLevel, params, metadata: hasData ? this.metadata : null, err: this.err });\n  }\n}\n","import type {\n  LogLayerPlugin,\n  PluginBeforeDataOutParams,\n  PluginBeforeMessageOutParams,\n  PluginShouldSendToLoggerParams,\n} from \"@loglayer/plugin\";\n\nimport { PluginCallbackType } from \"@loglayer/plugin\";\nimport type { ILogLayer, MessageDataType } from \"@loglayer/shared\";\n\nconst CALLBACK_LIST = [\n  PluginCallbackType.onBeforeDataOut,\n  PluginCallbackType.onMetadataCalled,\n  PluginCallbackType.shouldSendToLogger,\n  PluginCallbackType.onBeforeMessageOut,\n  PluginCallbackType.onContextCalled,\n];\n\ninterface LogLayerPluginWithTimestamp extends LogLayerPlugin {\n  registeredAt: number;\n}\n\n/**\n * A class that manages plugins and runs their callbacks.\n * Used by LogLayer to run plugins at various stages of the logging process.\n */\nexport class PluginManager {\n  private idToPlugin: Record<string, LogLayerPluginWithTimestamp>;\n  // Indexes for each plugin type\n  private onBeforeDataOut: Array<string> = [];\n  private shouldSendToLogger: Array<string> = [];\n  private onMetadataCalled: Array<string> = [];\n  private onBeforeMessageOut: Array<string> = [];\n  private onContextCalled: Array<string> = [];\n\n  constructor(plugins: Array<LogLayerPlugin>) {\n    this.idToPlugin = {};\n    this.mapPlugins(plugins);\n    this.indexPlugins();\n  }\n\n  private mapPlugins(plugins: Array<LogLayerPlugin>) {\n    for (const plugin of plugins) {\n      if (!plugin.id) {\n        plugin.id = new Date().getTime().toString() + Math.random().toString();\n      }\n\n      if (this.idToPlugin[plugin.id]) {\n        throw new Error(`[LogLayer] Plugin with id ${plugin.id} already exists.`);\n      }\n\n      plugin[\"registeredAt\"] = new Date().getTime();\n      this.idToPlugin[plugin.id] = plugin as LogLayerPluginWithTimestamp;\n    }\n  }\n\n  private indexPlugins() {\n    this.onBeforeDataOut = [];\n    this.shouldSendToLogger = [];\n    this.onMetadataCalled = [];\n    this.onBeforeMessageOut = [];\n    this.onContextCalled = [];\n\n    const pluginList = Object.values(this.idToPlugin).sort((a, b) => a.registeredAt - b.registeredAt);\n\n    for (const plugin of pluginList) {\n      if (plugin.disabled) {\n        return;\n      }\n\n      for (const callback of CALLBACK_LIST) {\n        // If the callback is defined, add the plugin id to the callback list\n        if (plugin[callback] && plugin.id) {\n          this[callback].push(plugin.id);\n        }\n      }\n    }\n  }\n\n  hasPlugins(callbackType: PluginCallbackType) {\n    return this[callbackType].length > 0;\n  }\n\n  countPlugins(callbackType?: PluginCallbackType) {\n    if (callbackType) {\n      return this[callbackType].length;\n    }\n\n    return Object.keys(this.idToPlugin).length;\n  }\n\n  addPlugins(plugins: Array<LogLayerPlugin>) {\n    this.mapPlugins(plugins);\n    this.indexPlugins();\n  }\n\n  enablePlugin(id: string) {\n    const plugin = this.idToPlugin[id];\n\n    if (plugin) {\n      plugin.disabled = false;\n    }\n\n    this.indexPlugins();\n  }\n\n  disablePlugin(id: string) {\n    const plugin = this.idToPlugin[id];\n\n    if (plugin) {\n      plugin.disabled = true;\n    }\n\n    this.indexPlugins();\n  }\n\n  removePlugin(id: string) {\n    delete this.idToPlugin[id];\n    this.indexPlugins();\n  }\n\n  /**\n   * Runs plugins that defines onBeforeDataOut.\n   */\n  runOnBeforeDataOut(params: PluginBeforeDataOutParams, loglayer: ILogLayer): Record<string, any> | undefined {\n    const initialData = { ...params }; // Make a shallow copy of params to avoid direct modification\n\n    for (const pluginId of this.onBeforeDataOut) {\n      const plugin = this.idToPlugin[pluginId];\n\n      if (plugin.onBeforeDataOut) {\n        const result = plugin.onBeforeDataOut(\n          {\n            data: initialData.data,\n            logLevel: initialData.logLevel,\n          },\n          loglayer,\n        );\n\n        if (result) {\n          if (!initialData.data) {\n            initialData.data = {};\n          }\n\n          // Mutate initialData.data directly instead of spreading it repeatedly\n          Object.assign(initialData.data, result);\n        }\n      }\n    }\n\n    return initialData.data;\n  }\n\n  /**\n   * Runs plugins that define shouldSendToLogger. Any plugin that returns false will prevent the message from being sent to the transport.\n   */\n  runShouldSendToLogger(params: PluginShouldSendToLoggerParams, loglayer: ILogLayer) {\n    return !this.shouldSendToLogger.some((pluginId) => {\n      const plugin = this.idToPlugin[pluginId];\n\n      // Return the negation of 'shouldSendToLogger' because 'some' will stop on true,\n      // and we stop on an explicit false return value from 'shouldSendToLogger'.\n      return !plugin.shouldSendToLogger?.(params, loglayer);\n    });\n  }\n\n  /**\n   * Runs plugins that define onMetadataCalled.\n   */\n  runOnMetadataCalled(metadata: Record<string, any>, loglayer: ILogLayer): Record<string, any> | null {\n    // Create a shallow copy of metadata to avoid direct modification\n    let data: Record<string, any> = {\n      ...metadata,\n    };\n\n    for (const pluginId of this.onMetadataCalled) {\n      const plugin = this.idToPlugin[pluginId];\n\n      const result = plugin.onMetadataCalled?.(data, loglayer);\n\n      if (result) {\n        data = result;\n      } else {\n        return null;\n      }\n    }\n\n    return data;\n  }\n\n  runOnBeforeMessageOut(params: PluginBeforeMessageOutParams, loglayer: ILogLayer): MessageDataType[] {\n    let messages = [...params.messages];\n\n    for (const pluginId of this.onBeforeMessageOut) {\n      const plugin = this.idToPlugin[pluginId];\n\n      const result = plugin.onBeforeMessageOut?.(\n        {\n          messages: messages,\n          logLevel: params.logLevel,\n        },\n        loglayer,\n      );\n\n      if (result) {\n        messages = result;\n      }\n    }\n\n    return messages;\n  }\n\n  /**\n   * Runs plugins that define onContextCalled.\n   */\n  runOnContextCalled(context: Record<string, any>, loglayer: ILogLayer): Record<string, any> | null {\n    // Create a shallow copy of context to avoid direct modification\n    let data: Record<string, any> = {\n      ...context,\n    };\n\n    for (const pluginId of this.onContextCalled) {\n      const plugin = this.idToPlugin[pluginId];\n\n      const result = plugin.onContextCalled?.(data, loglayer);\n\n      if (result) {\n        data = result;\n      } else {\n        return null;\n      }\n    }\n\n    return data;\n  }\n}\n","/* eslint @typescript-eslint/no-empty-function: 0 */\n/* istanbul ignore file */\n\nimport type { ILogBuilder, MessageDataType } from \"@loglayer/shared\";\n\n/**\n * A mock implementation of the ILogBuilder interface that does nothing.\n * Useful for writing unit tests.\n */\nexport class MockLogBuilder implements ILogBuilder {\n  debug(...messages: MessageDataType[]): void {}\n\n  error(...messages: MessageDataType[]): void {}\n\n  info(...messages: MessageDataType[]): void {}\n\n  trace(...messages: MessageDataType[]): void {}\n\n  warn(...messages: MessageDataType[]): void {}\n\n  fatal(...messages: MessageDataType[]): void {}\n\n  enableLogging() {\n    return this;\n  }\n\n  disableLogging() {\n    return this;\n  }\n\n  withMetadata(metadata?: Record<string, any>): ILogBuilder {\n    return this;\n  }\n\n  withError(error: any): ILogBuilder {\n    return this;\n  }\n}\n","/* eslint @typescript-eslint/no-empty-function: 0 */\n/* istanbul ignore file */\n\nimport type {\n  ErrorOnlyOpts,\n  ILogBuilder,\n  ILogLayer,\n  LogLayerTransport,\n  LogLevel,\n  MessageDataType,\n} from \"@loglayer/shared\";\nimport { MockLogBuilder } from \"./MockLogBuilder.js\";\n\nimport type { LogLayerPlugin } from \"@loglayer/plugin\";\n\n/**\n * A mock implementation of the ILogLayer interface that does nothing.\n * Useful for writing unit tests.\n */\nexport class MockLogLayer implements ILogLayer {\n  private mockLogBuilder: ILogBuilder = new MockLogBuilder();\n\n  info(...messages: MessageDataType[]): void {}\n  warn(...messages: MessageDataType[]): void {}\n  error(...messages: MessageDataType[]): void {}\n  debug(...messages: MessageDataType[]): void {}\n  trace(...messages: MessageDataType[]): void {}\n  fatal(...messages: MessageDataType[]): void {}\n\n  getLoggerInstance<T extends LogLayerTransport>(id: string) {\n    return undefined;\n  }\n\n  errorOnly(error: any, opts?: ErrorOnlyOpts): void {}\n\n  metadataOnly(metadata?: Record<string, any>, logLevel?: LogLevel): void {}\n\n  addPlugins(plugins: Array<LogLayerPlugin>) {}\n\n  removePlugin(id: string) {}\n\n  enablePlugin(id: string) {}\n\n  disablePlugin(id: string) {}\n\n  withPrefix(prefix: string): ILogLayer {\n    return this;\n  }\n\n  withContext(context?: Record<string, any>): ILogLayer {\n    return this;\n  }\n\n  withError(error: any): ILogBuilder {\n    this.mockLogBuilder.withError(error);\n\n    return this.mockLogBuilder;\n  }\n\n  withMetadata(metadata?: Record<string, any>): ILogBuilder {\n    this.mockLogBuilder.withMetadata(metadata);\n\n    return this.mockLogBuilder;\n  }\n\n  getContext(): Record<string, any> {\n    return {};\n  }\n\n  clearContext(): ILogLayer {\n    return this as ILogLayer;\n  }\n\n  enableLogging() {\n    return this;\n  }\n\n  disableLogging() {\n    return this;\n  }\n\n  child() {\n    return this;\n  }\n\n  muteContext() {\n    return this;\n  }\n\n  unMuteContext() {\n    return this;\n  }\n\n  muteMetadata() {\n    return this;\n  }\n\n  unMuteMetadata() {\n    return this;\n  }\n\n  withFreshTransports(transports: LogLayerTransport | Array<LogLayerTransport>) {\n    return this;\n  }\n\n  withFreshPlugins(plugins: Array<LogLayerPlugin>) {\n    return this;\n  }\n\n  withContextManager(contextManager: any) {\n    return this;\n  }\n\n  getContextManager() {\n    return undefined;\n  }\n\n  /**\n   * Sets the mock log builder to use for testing.\n   */\n  setMockLogBuilder(mockLogBuilder: ILogBuilder) {\n    this.mockLogBuilder = mockLogBuilder;\n  }\n\n  /**\n   * Returns the mock log builder used for testing.\n   */\n  getMockLogBuilder() {\n    return this.mockLogBuilder;\n  }\n\n  /**\n   * Resets the mock log builder to a new instance of MockLogBuilder.\n   */\n  resetMockLogBuilder() {\n    this.mockLogBuilder = new MockLogBuilder();\n  }\n}\n","import type { LogLayerPlugin } from \"@loglayer/plugin\";\nimport type { LogLayerTransport } from \"@loglayer/transport\";\n\nexport {\n  LogLevel,\n  type ErrorOnlyOpts,\n  type ILogLayer,\n  type ILogBuilder,\n  type LogLayerTransport,\n} from \"@loglayer/shared\";\n\nexport type ErrorSerializerType = (err: any) => Record<string, any> | string;\n\n/**\n * Configuration options for LogLayer\n * @see {@link https://loglayer.dev/configuration.html | LogLayer Configuration Docs}\n */\nexport interface LogLayerConfig {\n  /**\n   * The prefix to prepend to all log messages\n   */\n  prefix?: string;\n  /**\n   * Set to false to drop all log input and stop sending to the logging\n   * library.\n   *\n   * Can be re-enabled with `enableLogging()`.\n   *\n   * Default is `true`.\n   */\n  enabled?: boolean;\n  /**\n   * If set to true, will also output messages via console logging before\n   * sending to the logging library.\n   *\n   * Useful for troubleshooting a logging library / transports\n   * to ensure logs are still being created when the underlying\n   * does not print anything.\n   */\n  consoleDebug?: boolean;\n  /**\n   * The transport(s) that implements a logging library to send logs to.\n   * Can be a single transport or an array of transports.\n   */\n  transport: LogLayerTransport | Array<LogLayerTransport>;\n  /**\n   * Plugins to use.\n   */\n  plugins?: Array<LogLayerPlugin>;\n\n  /**\n   * A function that takes in an incoming Error type and transforms it into an object.\n   * Used in the event that the logging library does not natively support serialization of errors.\n   */\n  errorSerializer?: ErrorSerializerType;\n  /**\n   * Logging libraries may require a specific field name for errors so it knows\n   * how to parse them.\n   *\n   * Default is 'err'.\n   */\n  errorFieldName?: string;\n  /**\n   * If true, always copy error.message if available as a log message along\n   * with providing the error data to the logging library.\n   *\n   * Can be overridden individually by setting `copyMsg: false` in the `onlyError()`\n   * call.\n   *\n   * Default is false.\n   */\n  copyMsgOnOnlyError?: boolean;\n  /**\n   * If set to true, the error will be included as part of metadata instead of\n   * of the root of the log data.\n   *\n   * metadataFieldName must be set to true for this to work.\n   *\n   * Default is false.\n   */\n  errorFieldInMetadata?: boolean;\n  /**\n   * If specified, will set the context object to a specific field\n   * instead of flattening the data alongside the error and message.\n   *\n   * Default is context data will be flattened.\n   */\n  contextFieldName?: string;\n  /**\n   * If specified, will set the metadata object to a specific field\n   * instead of flattening the data alongside the error and message.\n   *\n   * Default is metadata will be flattened.\n   */\n  metadataFieldName?: string;\n  /**\n   * If set to true, will not include context data in the log message.\n   */\n  muteContext?: boolean;\n  /**\n   * If set to true, will not include metadata data in the log message.\n   */\n  muteMetadata?: boolean;\n}\n","import type { LogLayerTransportConfig, LogLayerTransportParams } from \"@loglayer/transport\";\nimport { BaseTransport, LogLevel } from \"@loglayer/transport\";\nimport { LogLevelPriority } from \"@loglayer/transport\";\n\ntype ConsoleType = typeof console;\n\n/**\n * Configuration options for the ConsoleTransport.\n */\ninterface ConsoleTransportConfig extends LogLayerTransportConfig<ConsoleType> {\n  /**\n   * If true, object data will be appended as the last parameter.\n   * If false, object data will be prepended as the first parameter (default).\n   * Has no effect if messageField is defined.\n   */\n  appendObjectData?: boolean;\n  /**\n   * Minimum log level to process. Defaults to \"trace\".\n   */\n  level?: LogLevel | \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"fatal\";\n  /**\n   * If defined,\n   * - will place the message into the specified field in the log object.\n   * - Multi-parameter messages will be joined with a space. Use the sprintf plugin to format messages.\n   * - Only the log object will be logged to the console when this is defined.\n   */\n  messageField?: string;\n}\n\n/**\n * Transport for use with a console logger.\n */\nexport class ConsoleTransport extends BaseTransport<ConsoleType> {\n  private appendObjectData: boolean;\n  private logLevel: LogLevel | \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"fatal\";\n  private messageField?: string;\n\n  constructor(params: ConsoleTransportConfig) {\n    super(params);\n    this.appendObjectData = params.appendObjectData || false;\n    this.logLevel = params.level ?? \"trace\";\n    this.messageField = params.messageField;\n  }\n\n  shipToLogger({ logLevel, messages, data, hasData }: LogLayerTransportParams) {\n    // Skip if log level is lower priority than configured minimum\n    if (LogLevelPriority[logLevel] < LogLevelPriority[this.logLevel]) {\n      return;\n    }\n\n    if (this.messageField) {\n      // Join messages with a space if messageField is defined\n      const messageText = messages.join(\" \");\n      const logObject = {\n        ...(data || {}),\n        [this.messageField]: messageText,\n      };\n      messages = [logObject];\n    } else if (data && hasData) {\n      if (this.appendObjectData) {\n        messages.push(data);\n      } else {\n        messages.unshift(data);\n      }\n    }\n\n    switch (logLevel) {\n      case LogLevel.info:\n        // @ts-ignore\n        this.logger.info(...messages);\n        break;\n      case LogLevel.warn:\n        // @ts-ignore\n        this.logger.warn(...messages);\n        break;\n      case LogLevel.error:\n        // @ts-ignore\n        this.logger.error(...messages);\n        break;\n      case LogLevel.trace:\n        // @ts-ignore\n        this.logger.trace(...messages);\n        break;\n      case LogLevel.debug:\n        // @ts-ignore\n        this.logger.debug(...messages);\n        break;\n      case LogLevel.fatal:\n        // @ts-ignore\n        this.logger.error(...messages);\n        break;\n    }\n\n    return messages;\n  }\n}\n","import { LogLevel } from \"@loglayer/shared\";\n\n/**\n * A test logging library that can be used to test LogLayer plugins and transports.\n * It is meant to be used with the TestTransport.\n */\nexport class TestLoggingLibrary {\n  /**\n   * An array of log lines that have been logged.\n   */\n  lines: Array<{\n    level: LogLevel;\n    data: any[];\n  }>;\n\n  constructor() {\n    this.lines = [];\n  }\n\n  info(...params: any[]) {\n    this.addLine(LogLevel.info, params);\n  }\n\n  warn(...params: any[]) {\n    this.addLine(LogLevel.warn, params);\n  }\n\n  error(...params: any[]) {\n    this.addLine(LogLevel.error, params);\n  }\n\n  debug(...params: any[]) {\n    this.addLine(LogLevel.debug, params);\n  }\n\n  trace(...params: any[]) {\n    this.addLine(LogLevel.trace, params);\n  }\n\n  fatal(...params: any[]) {\n    this.addLine(LogLevel.fatal, params);\n  }\n\n  private addLine(logLevel: LogLevel, params: any[]) {\n    this.lines.push({\n      level: logLevel,\n      data: params,\n    });\n  }\n\n  /**\n   * Get the last line that was logged. Returns null if no lines have been logged.\n   */\n  getLastLine() {\n    if (!this.lines.length) {\n      return null;\n    }\n\n    return this.lines[this.lines.length - 1];\n  }\n\n  /**\n   * Pops the last line that was logged. Returns null if no lines have been logged.\n   */\n  popLine() {\n    return this.lines.pop();\n  }\n\n  /**\n   * Clears all lines that have been logged.\n   */\n  clearLines() {\n    this.lines = [];\n  }\n}\n","import { BaseTransport, type LogLayerTransportParams, LogLevel } from \"@loglayer/transport\";\nimport type { TestLoggingLibrary } from \"../TestLoggingLibrary.js\";\n\n/**\n * Transport used for testing purposes.\n */\nexport class TestTransport extends BaseTransport<TestLoggingLibrary> {\n  shipToLogger({ logLevel, messages, data, hasData }: LogLayerTransportParams) {\n    if (data && hasData) {\n      // put object data as the first parameter\n      messages.unshift(data);\n    }\n\n    switch (logLevel) {\n      case LogLevel.info:\n        this.logger.info(...messages);\n        break;\n      case LogLevel.warn:\n        this.logger.warn(...messages);\n        break;\n      case LogLevel.error:\n        this.logger.error(...messages);\n        break;\n      case LogLevel.trace:\n        this.logger.trace(...messages);\n        break;\n      case LogLevel.debug:\n        this.logger.debug(...messages);\n        break;\n      case LogLevel.fatal:\n        this.logger.fatal(...messages);\n        break;\n    }\n\n    return messages;\n  }\n}\n","export { LogLayer } from \"./LogLayer.js\";\nexport { MockLogLayer } from \"./MockLogLayer.js\";\nexport { MockLogBuilder } from \"./MockLogBuilder.js\";\nexport * from \"./types/index.js\";\nexport type { ErrorOnlyOpts, ILogLayer, ILogBuilder } from \"@loglayer/shared\";\nexport { ConsoleTransport } from \"./transports/ConsoleTransport.js\";\nexport { TestLoggingLibrary } from \"./TestLoggingLibrary.js\";\nexport { TestTransport } from \"./transports/TestTransport.js\";\nexport * from \"@loglayer/plugin\";\n"]}