emitnlog
Version:
Emit n' Log: a modern, type-safe library for logging, event notifications, and observability in JavaScript/TypeScript apps.
1 lines • 103 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/logger/off-logger.ts","../../../src/utils/common/is-not-nullable.ts","../../../src/logger/level-utils.ts","../../../src/logger/prefixed-logger.ts","../../../src/utils/async/deferred-value.ts","../../../src/utils/common/closed-error.ts","../../../src/notifier/implementation.ts","../../../src/utils/common/generate-random-string.ts","../../../src/tracker/invocation/stack/implementation.ts","../../../src/tracker/invocation/implementation.ts","../../../src/tracker/invocation/stage-invocation.ts","../../../src/tracker/invocation/track-methods.ts","../../../src/tracker/promise/implementation.ts"],"names":["result"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { Logger, LogLevel } from './definition.ts';\n\n/**\n * A logger implementation that does not emit any log entries regardless of level. Useful for completely disabling\n * logging in specific contexts.\n */\nexport const OFF_LOGGER: Logger = {\n get level() {\n return 'off';\n },\n\n set level(_: LogLevel | 'off') {\n // ignored\n },\n\n args: () => OFF_LOGGER,\n\n trace: () => void {},\n t: () => void {},\n\n debug: () => void {},\n d: () => void {},\n\n info: () => void {},\n i: () => void {},\n\n notice: () => void {},\n n: () => void {},\n\n warning: () => void {},\n w: () => void {},\n\n error: () => void {},\n e: () => void {},\n\n critical: () => void {},\n c: () => void {},\n\n alert: () => void {},\n a: () => void {},\n\n emergency: () => void {},\n em: () => void {},\n\n log: () => void {},\n} as const;\n","/**\n * Check if a value is not undefined or null. A non-nullable return is typed as such.\n *\n * @example\n *\n * ```ts\n * import { isNotNullable } from 'emitnlog/utils';\n *\n * const arr: (string | undefined | null)[] = ['a', null, 'b', undefined, 'c'];\n * const result: string[] = arr.filter(isNotNullable);\n * ```\n *\n * @param value - The value to check.\n * @returns `true` if the value is not undefined or null, `false` otherwise.\n */\nexport const isNotNullable = <T>(value: T | undefined | null): value is NonNullable<T> =>\n value !== undefined && value !== null;\n","import { exhaustiveCheck } from '../utils/common/exhaustive-check.ts';\nimport type { LogLevel } from './definition.ts';\n\n/**\n * Checks if a string is a valid LogLevel.\n *\n * @param value The string to check\n * @returns True if the string is a valid LogLevel, false otherwise\n */\nexport const isLogLevel = (value: unknown): value is LogLevel => {\n const level = value as LogLevel;\n switch (level) {\n case 'trace':\n case 'debug':\n case 'info':\n case 'notice':\n case 'warning':\n case 'error':\n case 'critical':\n case 'alert':\n case 'emergency':\n return true;\n\n default:\n exhaustiveCheck(level);\n return false;\n }\n};\n\n/**\n * Converts a LogLevel to its corresponding numeric weight value for comparison operations.\n *\n * This function maps each log level to a numeric value according to its severity, with lower numbers representing\n * higher severity (more important) levels:\n *\n * - Emergency: 0 (highest severity)\n * - Alert: 1\n * - Critical: 2\n * - Error: 3\n * - Warning: 4\n * - Notice: 5\n * - Info: 6\n * - Debug: 7\n * - Trace: 8 (lowest severity)\n *\n * @example\n *\n * ```ts\n * import { toLevelWeight } from 'emitnlog/logger';\n *\n * const errorWeight = toLevelWeight('error'); // Returns 3\n * const debugWeight = toLevelWeight('debug'); // Returns 7\n *\n * // Compare severity levels\n * if (toLevelWeight('error') < toLevelWeight('debug')) {\n * // This condition is true (3 < 7), meaning 'error' is more severe than 'debug'\n * }\n * ```\n *\n * @param level The log level to convert to a numeric weight\n * @returns The numeric weight corresponding to the specified log level\n */\nexport const toLevelWeight = (level: LogLevel): number => {\n switch (level) {\n case 'trace':\n return 8;\n\n case 'debug':\n return 7;\n\n case 'info':\n return 6;\n\n case 'notice':\n return 5;\n\n case 'warning':\n return 4;\n\n case 'error':\n return 3;\n\n case 'critical':\n return 2;\n\n case 'alert':\n return 1;\n\n case 'emergency':\n return 0;\n\n default:\n exhaustiveCheck(level);\n return 20;\n }\n};\n\n/**\n * Determines whether a log entry should be emitted based on the configured logger level and the entry's level.\n *\n * This function implements the severity filtering logic of the logger:\n *\n * - When the logger level is 'off', no entries will be emitted\n * - Otherwise, entries are emitted when their level's severity is equal to or greater than the logger's level\n *\n * For example, if the logger's level is set to 'warning', entries with levels 'warning', 'error', 'critical', 'alert',\n * and 'emergency' will be emitted, while entries with levels 'notice', 'info', 'debug', and 'trace' will be filtered\n * out.\n *\n * @example\n *\n * ```ts\n * // When logger level is 'warning'\n * shouldEmitEntry('warning', 'error'); // Returns true (error entries are emitted)\n * shouldEmitEntry('warning', 'info'); // Returns false (info entries are filtered out)\n *\n * // When logger is turned off\n * shouldEmitEntry('off', 'emergency'); // Returns false (nothing is emitted)\n * ```\n *\n * @param level The current configured level of the logger or 'off'\n * @param entryLevel The severity level of the log entry to be evaluated\n * @returns True if the entry should be emitted, false otherwise\n */\nexport const shouldEmitEntry = (level: LogLevel | 'off', entryLevel: LogLevel): boolean =>\n level !== 'off' && toLevelWeight(entryLevel) <= toLevelWeight(level);\n","import { isNotNullable } from '../utils/common/is-not-nullable.ts';\nimport type { Logger, LogLevel, LogMessage } from './definition.ts';\nimport { shouldEmitEntry } from './level-utils.ts';\nimport { OFF_LOGGER } from './off-logger.ts';\n\nconst prefixSymbol: unique symbol = Symbol.for('@emitnlog/logger/prefix');\nconst separatorSymbol: unique symbol = Symbol.for('@emitnlog/logger/separator');\nconst dataSymbol: unique symbol = Symbol.for('@emitnlog/logger/data');\n\n/**\n * A specialized logger that prepends a fixed prefix to all log messages.\n *\n * The PrefixedLogger maintains all the functionality of a standard Logger while ensuring every log message is\n * automatically prefixed, making it easier to:\n *\n * - Categorize logs by component, module, or subsystem\n * - Distinguish logs from different parts of your application\n * - Create hierarchical logging structures with nested prefixes\n *\n * The prefix is strongly typed and, in some development environments, is visible on the logger's tooltip.\n */\nexport interface PrefixedLogger<TPrefix extends string = string, TSeparator extends string = string> extends Logger {\n /*\n * The prefix or undefined.\n */\n readonly [prefixSymbol]: TPrefix | undefined;\n\n /*\n * The value used to separate different parts of the prefix, or undefined\n */\n readonly [separatorSymbol]: TSeparator | undefined;\n\n /*\n * Arbitrary data needed by the prefix logger.\n */\n readonly [dataSymbol]: { readonly rootLogger: Logger; readonly messageSeparator: string } | undefined;\n}\n\n/**\n * Creates a new logger that prepends a specified prefix to all log messages.\n *\n * This function wraps an existing logger and returns a new logger instance where all log messages are automatically\n * prefixed. This is useful for categorizing logs or distinguishing between different components in your application.\n * The log level of a prefixed logger is always the same as its underlying logger.\n *\n * When applied to an already prefixed logger, it preserves the full prefix chain both at runtime and in the type\n * system, allowing for strongly-typed nested prefixes.\n *\n * @example Basic Usage\n *\n * ```ts\n * import { ConsoleLogger, withPrefix } from 'emitnlog/logger';\n *\n * const logger = new ConsoleLogger();\n * const dbLogger = withPrefix(logger, 'DB');\n *\n * dbLogger.info('Connected to database');\n * // Output: \"DB: Connected to database\"\n * ```\n *\n * @example Template Literals\n *\n * ```ts\n * import { withPrefix } from 'emitnlog/logger';\n *\n * const dbLogger = withPrefix(logger, 'DB');\n * const queryTime = 42;\n *\n * // Prefix is maintained with template literals\n * dbLogger.d`Query executed in ${queryTime}ms`;\n * // Output: \"DB: Query executed in 42ms\"\n * ```\n *\n * @example Nested Prefixes\n *\n * ```ts\n * import { withPrefix } from 'emitnlog/logger';\n *\n * const dbLogger = withPrefix(logger, 'DB');\n * const userDbLogger = withPrefix(dbLogger, 'users');\n * // Type of userDbLogger is PrefixedLogger<'DB.users'>\n *\n * const userId = 123;\n * userDbLogger.w`User not found: ${userId}`;\n * // Output: \"DB.users: User not found: 123\"\n * ```\n *\n * @example Error Handling\n *\n * ```ts\n * import { withPrefix } from 'emitnlog/logger';\n *\n * const dbLogger = withPrefix(logger, 'DB');\n *\n * // Errors maintain their original objects while prefixing the message\n * const error = new Error('Connection failed');\n * dbLogger.error(error);\n * // Output: \"DB: Connection failed\" (with error object preserved in args)\n *\n * // Using args() for additional context\n * dbLogger.args(error, { connectionId: 'conn_123' }).e`Database operation failed`;\n * ```\n *\n * @example Custom Separators\n *\n * ```ts\n * import { withPrefix } from 'emitnlog/logger';\n *\n * // Custom prefix separator\n * const apiLogger = withPrefix(logger, 'API', { prefixSeparator: '/' });\n * const v1Logger = withPrefix(apiLogger, 'v1');\n * v1Logger.info('Request processed');\n * // Output: \"API/v1: Request processed\"\n *\n * // Custom message separator\n * const compactLogger = withPrefix(logger, 'SYS', { messageSeparator: ' | ' });\n * compactLogger.info('System ready');\n * // Output: \"SYS | System ready\"\n * ```\n *\n * @example Fallback Prefix\n *\n * ```ts\n * import { withPrefix } from 'emitnlog/logger';\n *\n * // Add a fallback prefix when the logger isn't already prefixed\n * const serviceLogger = withPrefix(logger, 'UserService', { fallbackPrefix: 'APP' });\n * serviceLogger.info('Service started');\n * // Output: \"APP.UserService: Service started\"\n *\n * // If applied to an already prefixed logger, fallback is ignored\n * const dbLogger = withPrefix(logger, 'DB');\n * const userDbLogger = withPrefix(dbLogger, 'UserService', {\n * fallbackPrefix: 'APP', // This is ignored\n * });\n * userDbLogger.info('Service started');\n * // Output: \"DB.UserService: Service started\"\n * ```\n *\n * @example Level Filtering\n *\n * ```ts\n * import { withPrefix } from 'emitnlog/logger';\n *\n * const dbLogger = withPrefix(logger, 'DB');\n *\n * // Level filtering works the same as the underlying logger\n * dbLogger.level = 'warning';\n * dbLogger.d`This debug message won't be logged`;\n * dbLogger.w`This warning will be logged`;\n * // Output: \"DB: This warning will be logged\"\n * ```\n *\n * **Tip:** When supported by your development environment, hovering over a prefixed logger variable shows the prefix in\n * the tooltip due to the type parameter, making it easier to identify which prefix is being used.\n *\n * @param logger The base logger to wrap with prefix functionality\n * @param prefix The prefix to prepend to all log messages\n * @param options Optional configuration for the logger behavior\n * @returns A new logger with the specified prefix, or the OFF_LOGGER if the input logger is OFF_LOGGER\n */\nexport const withPrefix = <\n TLogger extends Logger,\n const TPrefix extends string,\n const TSeparator extends string = '.',\n const TFallbackPrefix extends string | undefined = undefined,\n>(\n logger: TLogger,\n prefix: TPrefix,\n options?: {\n /**\n * The separator to use between an existing prefix and the prefix passed to this method. Defaults to '.'.\n */\n readonly prefixSeparator?: TSeparator;\n\n /**\n * The separator to use between the prefix and the log message. Defaults to ': '.\n */\n readonly messageSeparator?: string;\n\n /**\n * The fallback prefix to use if the logger is not already a prefixed logger.\n */\n readonly fallbackPrefix?: TFallbackPrefix;\n },\n): WithPrefixResult<TLogger, TPrefix, TSeparator, TFallbackPrefix> => {\n if (logger === OFF_LOGGER) {\n return OFF_LOGGER as unknown as WithPrefixResult<TLogger, TPrefix, TSeparator, TFallbackPrefix>;\n }\n\n let prefixSeparator: TSeparator;\n let messageSeparator: string;\n\n const data = inspectPrefixedLogger(logger);\n if (data) {\n logger = data.rootLogger as TLogger;\n prefixSeparator = data.separator as TSeparator;\n messageSeparator = data.messageSeparator;\n prefix = (prefix ? `${data.prefix}${prefixSeparator}${prefix}` : data.prefix) as TPrefix;\n } else {\n prefixSeparator = (options?.prefixSeparator ?? '.') as TSeparator;\n messageSeparator = options?.messageSeparator ?? ': ';\n if (options?.fallbackPrefix) {\n prefix = (prefix ? `${options.fallbackPrefix}${prefixSeparator}${prefix}` : options.fallbackPrefix) as TPrefix;\n }\n }\n\n const prefixedLogger: PrefixedLogger<TPrefix, TSeparator> = {\n [prefixSymbol]: prefix,\n [separatorSymbol]: prefixSeparator,\n [dataSymbol]: { rootLogger: logger, messageSeparator },\n\n get level() {\n return logger.level;\n },\n\n set level(value: LogLevel | 'off') {\n logger.level = value;\n },\n\n args(...args: unknown[]) {\n logger.args(...args);\n return prefixedLogger;\n },\n\n trace(message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'trace')) {\n logger.trace(toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n\n t(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'trace')) {\n logger.t(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n debug(message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'debug')) {\n logger.debug(toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n\n d(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'debug')) {\n logger.d(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n info(message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'info')) {\n logger.info(toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n\n i(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'info')) {\n logger.i(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n notice(message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'notice')) {\n logger.notice(toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n\n n(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'notice')) {\n logger.n(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n warning(message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'warning')) {\n logger.warning(toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n\n w(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'warning')) {\n logger.w(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n error(error: LogMessage | Error | { error: unknown }, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'error')) {\n if (error instanceof Error) {\n logger.error(toMessageProvider(prefixedLogger, error.message), error, ...args);\n } else if (error && typeof error === 'object' && 'error' in error) {\n logger.error(toMessageProvider(prefixedLogger, String(error.error)), error, ...args);\n } else {\n logger.error(toMessageProvider(prefixedLogger, error as LogMessage), ...args);\n }\n }\n },\n\n e(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'error')) {\n logger.e(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n critical(message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'critical')) {\n logger.critical(toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n\n c(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'critical')) {\n logger.c(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n alert(message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'alert')) {\n logger.alert(toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n\n a(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'alert')) {\n logger.a(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n emergency(message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, 'emergency')) {\n logger.emergency(toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n\n em(strings: TemplateStringsArray, ...values: unknown[]) {\n if (shouldEmitEntry(logger.level, 'emergency')) {\n logger.em(prefixTemplateString(prefixedLogger, strings), ...values);\n }\n },\n\n log(level: LogLevel, message: LogMessage, ...args: unknown[]) {\n if (shouldEmitEntry(logger.level, level)) {\n logger.log(level, toMessageProvider(prefixedLogger, message), ...args);\n }\n },\n };\n\n return prefixedLogger as unknown as WithPrefixResult<TLogger, TPrefix, TSeparator, TFallbackPrefix>;\n};\n\n/**\n * Appends a prefix to an existing prefixed logger, creating a hierarchical prefix structure.\n *\n * This utility function is specifically designed for use with already prefixed loggers. It extends the existing prefix\n * chain by appending a new prefix segment, using the same separator that was used in the original logger.\n *\n * Unlike `withPrefix`, this function has a simplified API that doesn't expose configuration options since it inherits\n * all settings (separators, etc.) from the existing prefixed logger.\n *\n * @example Basic Appending\n *\n * ```ts\n * import { ConsoleLogger, appendPrefix, withPrefix } from 'emitnlog/logger';\n *\n * const logger = new ConsoleLogger();\n * const dbLogger = withPrefix(logger, 'DB');\n * const userDbLogger = appendPrefix(dbLogger, 'users');\n *\n * userDbLogger.info('User created successfully');\n * // Output: \"DB.users: User created successfully\"\n * ```\n *\n * @example Multiple Levels of Nesting\n *\n * ```ts\n * import { appendPrefix, withPrefix } from 'emitnlog/logger';\n *\n * const serviceLogger = withPrefix(logger, 'UserService');\n * const repositoryLogger = appendPrefix(serviceLogger, 'Repository');\n * const cacheLogger = appendPrefix(repositoryLogger, 'Cache');\n *\n * cacheLogger.d`Cache hit for key: user_123`;\n * // Output: \"UserService.Repository.Cache: Cache hit for key: user_123\"\n * ```\n *\n * @example Preserving Custom Separators\n *\n * ```ts\n * // Original logger with custom separator\n * const apiLogger = withPrefix(logger, 'API', { prefixSeparator: '/' });\n * const v1Logger = appendPrefix(apiLogger, 'v1');\n * const usersLogger = appendPrefix(v1Logger, 'users');\n *\n * usersLogger.info('Processing user request');\n * // Output: \"API/v1/users: Processing user request\"\n * ```\n *\n * @example Type Safety\n *\n * ```ts\n * import { appendPrefix, withPrefix } from 'emitnlog/logger';\n *\n * const dbLogger = withPrefix(logger, 'DB');\n * const userLogger = appendPrefix(dbLogger, 'User');\n * // Type of userLogger is PrefixedLogger<'DB.User', '.'>\n *\n * // TypeScript knows the exact prefix structure\n * const profileLogger = appendPrefix(userLogger, 'Profile');\n * // Type of profileLogger is PrefixedLogger<'DB.User.Profile', '.'>\n * ```\n *\n * @param logger The prefixed logger to append the prefix to\n * @param prefix The prefix segment to append to the existing prefix chain\n * @returns A new logger with the appended prefix, maintaining all original configuration\n */\nexport const appendPrefix = <\n const TCurrentPrefix extends string,\n const TSeparator extends string,\n const TLogger extends PrefixedLogger<TCurrentPrefix, TSeparator>,\n const TPrefix extends string,\n>(\n logger: TLogger,\n prefix: TPrefix,\n): WithPrefixResult<TLogger, TPrefix, TSeparator> => withPrefix(logger, prefix);\n\n/**\n * Creates a prefixed logger with a completely new prefix, ignoring any existing prefix on the input logger.\n *\n * This utility function extracts the root (non-prefixed) logger from the input and applies a fresh prefix to it,\n * effectively \"resetting\" the prefix chain. This is useful when you want to create a new prefix hierarchy without\n * inheriting the existing prefix structure.\n *\n * Unlike `withPrefix`, which appends to existing prefixes, `resetPrefix` always starts with a clean slate.\n *\n * @example Basic Reset\n *\n * ```ts\n * import { ConsoleLogger, resetPrefix, withPrefix } from 'emitnlog/logger';\n *\n * const logger = new ConsoleLogger();\n * const dbLogger = withPrefix(logger, 'DB');\n * const userDbLogger = withPrefix(dbLogger, 'users'); // Prefix: \"DB.users\"\n *\n * // Reset to a completely new prefix\n * const apiLogger = resetPrefix(userDbLogger, 'API'); // Prefix: \"API\" (not \"DB.users.API\")\n *\n * apiLogger.info('API server started');\n * // Output: \"API: API server started\"\n * ```\n *\n * @example Switching Context\n *\n * ```ts\n * import { appendPrefix, resetPrefix, withPrefix } from 'emitnlog/logger';\n *\n * // Start with a deeply nested logger\n * const serviceLogger = withPrefix(logger, 'UserService');\n * const repoLogger = appendPrefix(serviceLogger, 'Repository');\n * const cacheLogger = appendPrefix(repoLogger, 'Cache'); // Prefix: \"UserService.Repository.Cache\"\n *\n * // Switch to a completely different context\n * const authLogger = resetPrefix(cacheLogger, 'Auth'); // Prefix: \"Auth\"\n * const tokenLogger = appendPrefix(authLogger, 'Token'); // Prefix: \"Auth.Token\"\n *\n * tokenLogger.d`Token validated successfully`;\n * // Output: \"Auth.Token: Token validated successfully\"\n * ```\n *\n * @example Custom Configuration\n *\n * ```ts\n * import { appendPrefix, resetPrefix, withPrefix } from 'emitnlog/logger';\n *\n * const existingLogger = withPrefix(logger, 'OldPrefix');\n *\n * // Reset with custom separators\n * const newLogger = resetPrefix(existingLogger, 'NewPrefix', { prefixSeparator: '/', messageSeparator: ' >> ' });\n *\n * const subLogger = appendPrefix(newLogger, 'SubModule');\n * subLogger.info('Module initialized');\n * // Output: \"NewPrefix/SubModule >> Module initialized\"\n * ```\n *\n * @example Reusing Root Logger\n *\n * ```ts\n * import { appendPrefix, resetPrefix, withPrefix } from 'emitnlog/logger';\n *\n * // Multiple loggers sharing the same root but with different prefixes\n * const dbLogger = withPrefix(logger, 'DB');\n * const complexDbLogger = appendPrefix(dbLogger, 'Complex'); // Prefix: \"DB.Complex\"\n *\n * // Create parallel hierarchies from the same root\n * const cacheLogger = resetPrefix(complexDbLogger, 'Cache'); // Uses same root as dbLogger\n * const metricsLogger = resetPrefix(complexDbLogger, 'Metrics'); // Uses same root as dbLogger\n *\n * cacheLogger.info('Cache warmed up'); // Output: \"Cache: Cache warmed up\"\n * metricsLogger.info('Metrics collected'); // Output: \"Metrics: Metrics collected\"\n * ```\n *\n * @param logger The logger to extract the root logger from and apply a new prefix to\n * @param prefix The new prefix to apply (completely replacing any existing prefix)\n * @param options Optional configuration for the new prefixed logger\n * @returns A new logger with the specified prefix, using the root logger from the input\n */\nexport const resetPrefix = <const TPrefix extends string, const TSeparator extends string = '.'>(\n logger: Logger,\n prefix: TPrefix,\n options?: {\n /**\n * The separator to use between an existing prefix and the prefix passed to this method. Defaults to '.'.\n */\n readonly prefixSeparator?: TSeparator;\n\n /**\n * The separator to use between the prefix a