UNPKG

loglayer

Version:

A modern logging library with a fluent API for specifying log messages, metadata and errors

1 lines 66.4 kB
{"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.index