//#region src/types/index.d.ts /** Available log kinds. */ type LogKind = 'info' | 'success' | 'warn' | 'error' | 'debug'; /** Available console methods. */ type ConsoleMethod = 'log' | 'warn' | 'error' | 'debug'; /** User-facing allowlist for non-debug log APIs. */ type LoggerVisibilityLevel = 'error' | 'warn' | 'info' | 'success'; type LoggerScopeId = string; type LoggerRuleLevelsUserConfig = 'inherit' | LoggerVisibilityLevel[]; interface LoggerRuleUserConfig { group?: string; levels: LoggerRuleLevelsUserConfig; main?: string; message?: string; } interface LoggerPresetRuleUserConfig { group?: string; levels?: LoggerRuleLevelsUserConfig; main?: string; message?: string; } type LoggerRuleSetting = 'off' | LoggerRuleUserConfig; interface LoggerPresetConfig = Record> { rules?: Partial>; } interface LoggerPresetPlugin = Record, TConfigs extends Record> = Record>> { configs?: TConfigs; rules: TRules; } type LoggerPluginMap = Record; type LoggerPresetRuleKey = { [Namespace in keyof TPlugins & string]: TPlugins[Namespace] extends LoggerPresetPlugin ? `${Namespace}/${keyof TRules & string}` : never }[keyof TPlugins & string]; type LoggerPresetConfigKey = { [Namespace in keyof TPlugins & string]: `${Namespace}/${keyof NonNullable & string}` }[keyof TPlugins & string]; type LoggerRulesUserConfig = Partial, LoggerRuleSetting>> & Record; interface LoggerConfig { debug?: boolean; extends?: LoggerPresetConfigKey[]; levels?: LoggerVisibilityLevel[]; plugins?: TPlugins; rules?: LoggerRulesUserConfig; } interface ResolvedLoggerRule { group?: string; label: string; levels?: LoggerVisibilityLevel[]; main?: string; message?: string; } interface DebugMessageOptions { context: string; decision: string; summary?: unknown; timingMs?: number | null; } interface LoggerElapsedLogOptions { elapsedTimeMs: number; } type LoggerLogOptions = LoggerElapsedLogOptions; interface CreateLoggerOptions { main: string; } interface ScopedLogger { debug(message: string): void; error(message: string, options?: LoggerLogOptions): void; info(message: string, options?: LoggerLogOptions): void; success(message: string, options?: LoggerLogOptions): void; warn(message: string, options?: LoggerLogOptions): void; } interface Logger { getLoggerByGroup(group: string): ScopedLogger; } interface LoggerContext { group: string; kind: LogKind; main: string; message: string; } interface NormalizedLoggerRule { groupMatcher?: (value: string) => boolean; label: string; levels?: LoggerVisibilityLevel[]; main?: string; messageMatcher?: (value: string) => boolean; } interface NormalizedLoggerConfig { debug?: boolean; levels: LoggerVisibilityLevel[]; rules?: NormalizedLoggerRule[]; } interface LoggerConfigRegistryEntry { config: LoggerConfig | undefined; compiledConfig: NormalizedLoggerConfig | null; } interface ResolvedLoggerContext { appendElapsedTime: boolean; ruleLabels: string[]; suppress: boolean; } interface LoggerTreeShakingSourceMap { file: string; mappings: string; names: string[]; sources: string[]; sourcesContent?: string[]; toString(): string; toUrl(): string; version: number; } interface LoggerTreeShakingTransformResult { code: string; map: LoggerTreeShakingSourceMap; } //#endregion export { ConsoleMethod, CreateLoggerOptions, DebugMessageOptions, LogKind, Logger, LoggerConfig, LoggerConfigRegistryEntry, LoggerContext, LoggerElapsedLogOptions, LoggerLogOptions, LoggerPluginMap, LoggerPresetConfig, LoggerPresetConfigKey, LoggerPresetPlugin, LoggerPresetRuleKey, LoggerPresetRuleUserConfig, type ResolvedLoggerRule as LoggerRule, ResolvedLoggerRule, LoggerRuleLevelsUserConfig, LoggerRuleSetting, LoggerRuleUserConfig, LoggerRulesUserConfig, LoggerScopeId, LoggerTreeShakingSourceMap, LoggerTreeShakingTransformResult, LoggerVisibilityLevel, NormalizedLoggerConfig, NormalizedLoggerRule, ResolvedLoggerContext, ScopedLogger };