@lytjs/plugin-logger 6.4.0 → 6.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["signal","level","definePlugin"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\r\n * @lytjs/plugin-logger\r\n *\r\n * LytJS official logger plugin with log levels, persistence, and performance tracing support.\r\n *\r\n * @packageDocumentation\r\n */\r\n\r\nimport { definePlugin } from '@lytjs/core';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { LogLevel, LogEntry, LoggerOptions, PerformanceMetric, LoggerInstance } from './types';\r\n\r\nconst LOG_LEVELS: Record<LogLevel, number> = {\r\n debug: 0,\r\n info: 1,\r\n warn: 2,\r\n error: 3,\r\n silent: 4,\r\n};\r\n\r\nconst defaultFormatter = (entry: LogEntry): string => {\r\n const timestamp = new Date(entry.timestamp).toISOString();\r\n const modulePart = entry.module ? ` [${entry.module}]` : '';\r\n return `[${timestamp}] ${entry.level.toUpperCase()}${modulePart}: ${entry.message}`;\r\n};\r\n\r\nfunction createLogger(options: LoggerOptions = {}): LoggerInstance {\r\n const {\r\n level = 'info',\r\n enablePersistence = false,\r\n storageKey = 'lyt-logs',\r\n maxLogs = 1000,\r\n enablePerformance = true,\r\n formatter = defaultFormatter,\r\n } = options;\r\n\r\n const levelSignal = signal<LogLevel>(level);\r\n const logsSignal = signal<LogEntry[]>([]);\r\n const performanceMetricsSignal = signal<PerformanceMetric[]>([]);\r\n const pendingMeasures = new Map<string, PerformanceMetric>();\r\n\r\n function shouldLog(level: LogLevel): boolean {\r\n return LOG_LEVELS[level] >= LOG_LEVELS[levelSignal()];\r\n }\r\n\r\n function addLog(level: LogLevel, message: string, data?: unknown, module?: string) {\r\n if (!shouldLog(level)) return;\r\n\r\n const entry: LogEntry = {\r\n timestamp: Date.now(),\r\n level,\r\n message,\r\n data,\r\n module,\r\n };\r\n\r\n const newLogs = [...logsSignal(), entry];\r\n if (newLogs.length > maxLogs) {\r\n newLogs.shift();\r\n }\r\n logsSignal.set(newLogs);\r\n\r\n if (enablePersistence) {\r\n saveLogs();\r\n }\r\n\r\n outputLog(entry);\r\n }\r\n\r\n function outputLog(entry: LogEntry) {\r\n const formattedMessage = formatter(entry);\r\n\r\n switch (entry.level) {\r\n case 'debug':\r\n console.debug(formattedMessage, entry.data || '');\r\n break;\r\n case 'info':\r\n console.info(formattedMessage, entry.data || '');\r\n break;\r\n case 'warn':\r\n console.warn(formattedMessage, entry.data || '');\r\n break;\r\n case 'error':\r\n console.error(formattedMessage, entry.data || '');\r\n break;\r\n }\r\n }\r\n\r\n function saveLogs() {\r\n if (typeof localStorage === 'undefined') return;\r\n try {\r\n localStorage.setItem(storageKey, JSON.stringify(logsSignal()));\r\n } catch {\r\n }\r\n }\r\n\r\n function loadLogs(): LogEntry[] {\r\n if (typeof localStorage === 'undefined') return [];\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n return stored ? JSON.parse(stored) : [];\r\n } catch {\r\n return [];\r\n }\r\n }\r\n\r\n function debug(message: string, data?: unknown, module?: string) {\r\n addLog('debug', message, data, module);\r\n }\r\n\r\n function info(message: string, data?: unknown, module?: string) {\r\n addLog('info', message, data, module);\r\n }\r\n\r\n function warn(message: string, data?: unknown, module?: string) {\r\n addLog('warn', message, data, module);\r\n }\r\n\r\n function error(message: string, data?: unknown, module?: string) {\r\n addLog('error', message, data, module);\r\n }\r\n\r\n function setLevel(newLevel: LogLevel) {\r\n levelSignal.set(newLevel);\r\n }\r\n\r\n function startMeasure(name: string, data?: unknown) {\r\n if (!enablePerformance) return;\r\n\r\n const metric: PerformanceMetric = {\r\n name,\r\n startTime: Date.now(),\r\n data,\r\n };\r\n pendingMeasures.set(name, metric);\r\n debug(`Performance measure started: ${name}`, data, 'performance');\r\n }\r\n\r\n function endMeasure(name: string): PerformanceMetric | null {\r\n if (!enablePerformance) return null;\r\n\r\n const metric = pendingMeasures.get(name);\r\n if (!metric) {\r\n warn(`Performance measure \"${name}\" not found`, undefined, 'performance');\r\n return null;\r\n }\r\n\r\n metric.endTime = Date.now();\r\n metric.duration = metric.endTime - metric.startTime;\r\n\r\n pendingMeasures.delete(name);\r\n\r\n const newMetrics = [...performanceMetricsSignal(), metric];\r\n performanceMetricsSignal.set(newMetrics);\r\n\r\n info(`Performance measure \"${name}\": ${metric.duration}ms`, metric, 'performance');\r\n\r\n return metric;\r\n }\r\n\r\n function clear() {\r\n logsSignal.set([]);\r\n performanceMetricsSignal.set([]);\r\n pendingMeasures.clear();\r\n if (enablePersistence && typeof localStorage !== 'undefined') {\r\n try {\r\n localStorage.removeItem(storageKey);\r\n } catch {\r\n }\r\n }\r\n }\r\n\r\n function getMetrics(): PerformanceMetric[] {\r\n return performanceMetricsSignal();\r\n }\r\n\r\n function init() {\r\n if (enablePersistence) {\r\n const storedLogs = loadLogs();\r\n if (storedLogs.length > 0) {\r\n logsSignal.set(storedLogs);\r\n }\r\n }\r\n }\r\n\r\n init();\r\n\r\n return {\r\n get level() {\r\n return levelSignal();\r\n },\r\n get logs() {\r\n return logsSignal();\r\n },\r\n debug,\r\n info,\r\n warn,\r\n error,\r\n setLevel,\r\n startMeasure,\r\n endMeasure,\r\n clear,\r\n getMetrics,\r\n };\r\n}\r\n\r\nconst pluginLogger = definePlugin({\r\n name: 'logger',\r\n version: '6.0.0',\r\n description: 'LytJS official logger plugin with log levels, persistence, and performance tracing support',\r\n author: 'LytJS Team',\r\n keywords: ['lytjs', 'logger', 'logging', 'debug', 'performance'],\r\n schema: {\r\n type: 'object',\r\n object: {\r\n properties: {\r\n level: { type: 'string', default: 'info' },\r\n enablePersistence: { type: 'boolean', default: false },\r\n storageKey: { type: 'string', default: 'lyt-logs' },\r\n maxLogs: { type: 'number', default: 1000 },\r\n enablePerformance: { type: 'boolean', default: true },\r\n },\r\n },\r\n },\r\n install(app, options) {\r\n const logger = createLogger(options as LoggerOptions);\r\n\r\n app.config.globalProperties.$logger = logger;\r\n\r\n app.provide('lyt-logger', logger);\r\n },\r\n});\r\n\r\nexport default pluginLogger;\r\nexport type { LogLevel, LogEntry, LoggerOptions, PerformanceMetric, LoggerInstance };\r\nexport { createLogger, LOG_LEVELS };\r\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["signal","level","definePlugin"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @lytjs/plugin-logger\n *\n * LytJS official logger plugin with log levels, persistence, and performance tracing support.\n *\n * @packageDocumentation\n */\n\nimport { definePlugin } from '@lytjs/core';\nimport { signal } from '@lytjs/reactivity';\nimport type { LogLevel, LogEntry, LoggerOptions, PerformanceMetric, LoggerInstance } from './types';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n silent: 4,\n};\n\nconst defaultFormatter = (entry: LogEntry): string => {\n const timestamp = new Date(entry.timestamp).toISOString();\n const modulePart = entry.module ? ` [${entry.module}]` : '';\n return `[${timestamp}] ${entry.level.toUpperCase()}${modulePart}: ${entry.message}`;\n};\n\nfunction createLogger(options: LoggerOptions = {}): LoggerInstance {\n const {\n level = 'info',\n enablePersistence = false,\n storageKey = 'lyt-logs',\n maxLogs = 1000,\n enablePerformance = true,\n formatter = defaultFormatter,\n } = options;\n\n const levelSignal = signal<LogLevel>(level);\n const logsSignal = signal<LogEntry[]>([]);\n const performanceMetricsSignal = signal<PerformanceMetric[]>([]);\n const pendingMeasures = new Map<string, PerformanceMetric>();\n\n function shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[levelSignal()];\n }\n\n function addLog(level: LogLevel, message: string, data?: unknown, module?: string) {\n if (!shouldLog(level)) return;\n\n const entry: LogEntry = {\n timestamp: Date.now(),\n level,\n message,\n data,\n module,\n };\n\n const newLogs = [...logsSignal(), entry];\n if (newLogs.length > maxLogs) {\n newLogs.shift();\n }\n logsSignal.set(newLogs);\n\n if (enablePersistence) {\n saveLogs();\n }\n\n outputLog(entry);\n }\n\n function outputLog(entry: LogEntry) {\n const formattedMessage = formatter(entry);\n\n switch (entry.level) {\n case 'debug':\n // eslint-disable-next-line no-console\n console.debug(formattedMessage, entry.data || '');\n break;\n case 'info':\n // eslint-disable-next-line no-console\n console.info(formattedMessage, entry.data || '');\n break;\n case 'warn':\n console.warn(formattedMessage, entry.data || '');\n break;\n case 'error':\n console.error(formattedMessage, entry.data || '');\n break;\n }\n }\n\n function saveLogs() {\n if (typeof localStorage === 'undefined') return;\n try {\n localStorage.setItem(storageKey, JSON.stringify(logsSignal()));\n } catch {\n /* empty */\n }\n }\n\n function loadLogs(): LogEntry[] {\n if (typeof localStorage === 'undefined') return [];\n try {\n const stored = localStorage.getItem(storageKey);\n return stored ? JSON.parse(stored) : [];\n } catch {\n /* empty */\n return [];\n }\n }\n\n function debug(message: string, data?: unknown, module?: string) {\n addLog('debug', message, data, module);\n }\n\n function info(message: string, data?: unknown, module?: string) {\n addLog('info', message, data, module);\n }\n\n function warn(message: string, data?: unknown, module?: string) {\n addLog('warn', message, data, module);\n }\n\n function error(message: string, data?: unknown, module?: string) {\n addLog('error', message, data, module);\n }\n\n function setLevel(newLevel: LogLevel) {\n levelSignal.set(newLevel);\n }\n\n function startMeasure(name: string, data?: unknown) {\n if (!enablePerformance) return;\n\n const metric: PerformanceMetric = {\n name,\n startTime: Date.now(),\n data,\n };\n pendingMeasures.set(name, metric);\n debug(`Performance measure started: ${name}`, data, 'performance');\n }\n\n function endMeasure(name: string): PerformanceMetric | null {\n if (!enablePerformance) return null;\n\n const metric = pendingMeasures.get(name);\n if (!metric) {\n warn(`Performance measure \"${name}\" not found`, undefined, 'performance');\n return null;\n }\n\n metric.endTime = Date.now();\n metric.duration = metric.endTime - metric.startTime;\n\n pendingMeasures.delete(name);\n\n const newMetrics = [...performanceMetricsSignal(), metric];\n performanceMetricsSignal.set(newMetrics);\n\n info(`Performance measure \"${name}\": ${metric.duration}ms`, metric, 'performance');\n\n return metric;\n }\n\n function clear() {\n logsSignal.set([]);\n performanceMetricsSignal.set([]);\n pendingMeasures.clear();\n if (enablePersistence && typeof localStorage !== 'undefined') {\n try {\n localStorage.removeItem(storageKey);\n } catch {\n /* empty */\n }\n }\n }\n\n function getMetrics(): PerformanceMetric[] {\n return performanceMetricsSignal();\n }\n\n function init() {\n if (enablePersistence) {\n const storedLogs = loadLogs();\n if (storedLogs.length > 0) {\n logsSignal.set(storedLogs);\n }\n }\n }\n\n init();\n\n return {\n get level() {\n return levelSignal();\n },\n get logs() {\n return logsSignal();\n },\n debug,\n info,\n warn,\n error,\n setLevel,\n startMeasure,\n endMeasure,\n clear,\n getMetrics,\n };\n}\n\nconst pluginLogger = definePlugin({\n name: 'logger',\n version: '6.0.0',\n description:\n 'LytJS official logger plugin with log levels, persistence, and performance tracing support',\n author: 'LytJS Team',\n keywords: ['lytjs', 'logger', 'logging', 'debug', 'performance'],\n schema: {\n type: 'object',\n object: {\n properties: {\n level: { type: 'string', default: 'info' },\n enablePersistence: { type: 'boolean', default: false },\n storageKey: { type: 'string', default: 'lyt-logs' },\n maxLogs: { type: 'number', default: 1000 },\n enablePerformance: { type: 'boolean', default: true },\n },\n },\n },\n install(app, options) {\n const logger = createLogger(options as LoggerOptions);\n\n app.config.globalProperties.$logger = logger;\n\n app.provide('lyt-logger', logger);\n },\n});\n\nexport default pluginLogger;\nexport type { LogLevel, LogEntry, LoggerOptions, PerformanceMetric, LoggerInstance };\nexport { createLogger, LOG_LEVELS };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["level"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\r\n * @lytjs/plugin-logger\r\n *\r\n * LytJS official logger plugin with log levels, persistence, and performance tracing support.\r\n *\r\n * @packageDocumentation\r\n */\r\n\r\nimport { definePlugin } from '@lytjs/core';\r\nimport { signal } from '@lytjs/reactivity';\r\nimport type { LogLevel, LogEntry, LoggerOptions, PerformanceMetric, LoggerInstance } from './types';\r\n\r\nconst LOG_LEVELS: Record<LogLevel, number> = {\r\n debug: 0,\r\n info: 1,\r\n warn: 2,\r\n error: 3,\r\n silent: 4,\r\n};\r\n\r\nconst defaultFormatter = (entry: LogEntry): string => {\r\n const timestamp = new Date(entry.timestamp).toISOString();\r\n const modulePart = entry.module ? ` [${entry.module}]` : '';\r\n return `[${timestamp}] ${entry.level.toUpperCase()}${modulePart}: ${entry.message}`;\r\n};\r\n\r\nfunction createLogger(options: LoggerOptions = {}): LoggerInstance {\r\n const {\r\n level = 'info',\r\n enablePersistence = false,\r\n storageKey = 'lyt-logs',\r\n maxLogs = 1000,\r\n enablePerformance = true,\r\n formatter = defaultFormatter,\r\n } = options;\r\n\r\n const levelSignal = signal<LogLevel>(level);\r\n const logsSignal = signal<LogEntry[]>([]);\r\n const performanceMetricsSignal = signal<PerformanceMetric[]>([]);\r\n const pendingMeasures = new Map<string, PerformanceMetric>();\r\n\r\n function shouldLog(level: LogLevel): boolean {\r\n return LOG_LEVELS[level] >= LOG_LEVELS[levelSignal()];\r\n }\r\n\r\n function addLog(level: LogLevel, message: string, data?: unknown, module?: string) {\r\n if (!shouldLog(level)) return;\r\n\r\n const entry: LogEntry = {\r\n timestamp: Date.now(),\r\n level,\r\n message,\r\n data,\r\n module,\r\n };\r\n\r\n const newLogs = [...logsSignal(), entry];\r\n if (newLogs.length > maxLogs) {\r\n newLogs.shift();\r\n }\r\n logsSignal.set(newLogs);\r\n\r\n if (enablePersistence) {\r\n saveLogs();\r\n }\r\n\r\n outputLog(entry);\r\n }\r\n\r\n function outputLog(entry: LogEntry) {\r\n const formattedMessage = formatter(entry);\r\n\r\n switch (entry.level) {\r\n case 'debug':\r\n console.debug(formattedMessage, entry.data || '');\r\n break;\r\n case 'info':\r\n console.info(formattedMessage, entry.data || '');\r\n break;\r\n case 'warn':\r\n console.warn(formattedMessage, entry.data || '');\r\n break;\r\n case 'error':\r\n console.error(formattedMessage, entry.data || '');\r\n break;\r\n }\r\n }\r\n\r\n function saveLogs() {\r\n if (typeof localStorage === 'undefined') return;\r\n try {\r\n localStorage.setItem(storageKey, JSON.stringify(logsSignal()));\r\n } catch {\r\n }\r\n }\r\n\r\n function loadLogs(): LogEntry[] {\r\n if (typeof localStorage === 'undefined') return [];\r\n try {\r\n const stored = localStorage.getItem(storageKey);\r\n return stored ? JSON.parse(stored) : [];\r\n } catch {\r\n return [];\r\n }\r\n }\r\n\r\n function debug(message: string, data?: unknown, module?: string) {\r\n addLog('debug', message, data, module);\r\n }\r\n\r\n function info(message: string, data?: unknown, module?: string) {\r\n addLog('info', message, data, module);\r\n }\r\n\r\n function warn(message: string, data?: unknown, module?: string) {\r\n addLog('warn', message, data, module);\r\n }\r\n\r\n function error(message: string, data?: unknown, module?: string) {\r\n addLog('error', message, data, module);\r\n }\r\n\r\n function setLevel(newLevel: LogLevel) {\r\n levelSignal.set(newLevel);\r\n }\r\n\r\n function startMeasure(name: string, data?: unknown) {\r\n if (!enablePerformance) return;\r\n\r\n const metric: PerformanceMetric = {\r\n name,\r\n startTime: Date.now(),\r\n data,\r\n };\r\n pendingMeasures.set(name, metric);\r\n debug(`Performance measure started: ${name}`, data, 'performance');\r\n }\r\n\r\n function endMeasure(name: string): PerformanceMetric | null {\r\n if (!enablePerformance) return null;\r\n\r\n const metric = pendingMeasures.get(name);\r\n if (!metric) {\r\n warn(`Performance measure \"${name}\" not found`, undefined, 'performance');\r\n return null;\r\n }\r\n\r\n metric.endTime = Date.now();\r\n metric.duration = metric.endTime - metric.startTime;\r\n\r\n pendingMeasures.delete(name);\r\n\r\n const newMetrics = [...performanceMetricsSignal(), metric];\r\n performanceMetricsSignal.set(newMetrics);\r\n\r\n info(`Performance measure \"${name}\": ${metric.duration}ms`, metric, 'performance');\r\n\r\n return metric;\r\n }\r\n\r\n function clear() {\r\n logsSignal.set([]);\r\n performanceMetricsSignal.set([]);\r\n pendingMeasures.clear();\r\n if (enablePersistence && typeof localStorage !== 'undefined') {\r\n try {\r\n localStorage.removeItem(storageKey);\r\n } catch {\r\n }\r\n }\r\n }\r\n\r\n function getMetrics(): PerformanceMetric[] {\r\n return performanceMetricsSignal();\r\n }\r\n\r\n function init() {\r\n if (enablePersistence) {\r\n const storedLogs = loadLogs();\r\n if (storedLogs.length > 0) {\r\n logsSignal.set(storedLogs);\r\n }\r\n }\r\n }\r\n\r\n init();\r\n\r\n return {\r\n get level() {\r\n return levelSignal();\r\n },\r\n get logs() {\r\n return logsSignal();\r\n },\r\n debug,\r\n info,\r\n warn,\r\n error,\r\n setLevel,\r\n startMeasure,\r\n endMeasure,\r\n clear,\r\n getMetrics,\r\n };\r\n}\r\n\r\nconst pluginLogger = definePlugin({\r\n name: 'logger',\r\n version: '6.0.0',\r\n description: 'LytJS official logger plugin with log levels, persistence, and performance tracing support',\r\n author: 'LytJS Team',\r\n keywords: ['lytjs', 'logger', 'logging', 'debug', 'performance'],\r\n schema: {\r\n type: 'object',\r\n object: {\r\n properties: {\r\n level: { type: 'string', default: 'info' },\r\n enablePersistence: { type: 'boolean', default: false },\r\n storageKey: { type: 'string', default: 'lyt-logs' },\r\n maxLogs: { type: 'number', default: 1000 },\r\n enablePerformance: { type: 'boolean', default: true },\r\n },\r\n },\r\n },\r\n install(app, options) {\r\n const logger = createLogger(options as LoggerOptions);\r\n\r\n app.config.globalProperties.$logger = logger;\r\n\r\n app.provide('lyt-logger', logger);\r\n },\r\n});\r\n\r\nexport default pluginLogger;\r\nexport type { LogLevel, LogEntry, LoggerOptions, PerformanceMetric, LoggerInstance };\r\nexport { createLogger, LOG_LEVELS };\r\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["level"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @lytjs/plugin-logger\n *\n * LytJS official logger plugin with log levels, persistence, and performance tracing support.\n *\n * @packageDocumentation\n */\n\nimport { definePlugin } from '@lytjs/core';\nimport { signal } from '@lytjs/reactivity';\nimport type { LogLevel, LogEntry, LoggerOptions, PerformanceMetric, LoggerInstance } from './types';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n silent: 4,\n};\n\nconst defaultFormatter = (entry: LogEntry): string => {\n const timestamp = new Date(entry.timestamp).toISOString();\n const modulePart = entry.module ? ` [${entry.module}]` : '';\n return `[${timestamp}] ${entry.level.toUpperCase()}${modulePart}: ${entry.message}`;\n};\n\nfunction createLogger(options: LoggerOptions = {}): LoggerInstance {\n const {\n level = 'info',\n enablePersistence = false,\n storageKey = 'lyt-logs',\n maxLogs = 1000,\n enablePerformance = true,\n formatter = defaultFormatter,\n } = options;\n\n const levelSignal = signal<LogLevel>(level);\n const logsSignal = signal<LogEntry[]>([]);\n const performanceMetricsSignal = signal<PerformanceMetric[]>([]);\n const pendingMeasures = new Map<string, PerformanceMetric>();\n\n function shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[levelSignal()];\n }\n\n function addLog(level: LogLevel, message: string, data?: unknown, module?: string) {\n if (!shouldLog(level)) return;\n\n const entry: LogEntry = {\n timestamp: Date.now(),\n level,\n message,\n data,\n module,\n };\n\n const newLogs = [...logsSignal(), entry];\n if (newLogs.length > maxLogs) {\n newLogs.shift();\n }\n logsSignal.set(newLogs);\n\n if (enablePersistence) {\n saveLogs();\n }\n\n outputLog(entry);\n }\n\n function outputLog(entry: LogEntry) {\n const formattedMessage = formatter(entry);\n\n switch (entry.level) {\n case 'debug':\n // eslint-disable-next-line no-console\n console.debug(formattedMessage, entry.data || '');\n break;\n case 'info':\n // eslint-disable-next-line no-console\n console.info(formattedMessage, entry.data || '');\n break;\n case 'warn':\n console.warn(formattedMessage, entry.data || '');\n break;\n case 'error':\n console.error(formattedMessage, entry.data || '');\n break;\n }\n }\n\n function saveLogs() {\n if (typeof localStorage === 'undefined') return;\n try {\n localStorage.setItem(storageKey, JSON.stringify(logsSignal()));\n } catch {\n /* empty */\n }\n }\n\n function loadLogs(): LogEntry[] {\n if (typeof localStorage === 'undefined') return [];\n try {\n const stored = localStorage.getItem(storageKey);\n return stored ? JSON.parse(stored) : [];\n } catch {\n /* empty */\n return [];\n }\n }\n\n function debug(message: string, data?: unknown, module?: string) {\n addLog('debug', message, data, module);\n }\n\n function info(message: string, data?: unknown, module?: string) {\n addLog('info', message, data, module);\n }\n\n function warn(message: string, data?: unknown, module?: string) {\n addLog('warn', message, data, module);\n }\n\n function error(message: string, data?: unknown, module?: string) {\n addLog('error', message, data, module);\n }\n\n function setLevel(newLevel: LogLevel) {\n levelSignal.set(newLevel);\n }\n\n function startMeasure(name: string, data?: unknown) {\n if (!enablePerformance) return;\n\n const metric: PerformanceMetric = {\n name,\n startTime: Date.now(),\n data,\n };\n pendingMeasures.set(name, metric);\n debug(`Performance measure started: ${name}`, data, 'performance');\n }\n\n function endMeasure(name: string): PerformanceMetric | null {\n if (!enablePerformance) return null;\n\n const metric = pendingMeasures.get(name);\n if (!metric) {\n warn(`Performance measure \"${name}\" not found`, undefined, 'performance');\n return null;\n }\n\n metric.endTime = Date.now();\n metric.duration = metric.endTime - metric.startTime;\n\n pendingMeasures.delete(name);\n\n const newMetrics = [...performanceMetricsSignal(), metric];\n performanceMetricsSignal.set(newMetrics);\n\n info(`Performance measure \"${name}\": ${metric.duration}ms`, metric, 'performance');\n\n return metric;\n }\n\n function clear() {\n logsSignal.set([]);\n performanceMetricsSignal.set([]);\n pendingMeasures.clear();\n if (enablePersistence && typeof localStorage !== 'undefined') {\n try {\n localStorage.removeItem(storageKey);\n } catch {\n /* empty */\n }\n }\n }\n\n function getMetrics(): PerformanceMetric[] {\n return performanceMetricsSignal();\n }\n\n function init() {\n if (enablePersistence) {\n const storedLogs = loadLogs();\n if (storedLogs.length > 0) {\n logsSignal.set(storedLogs);\n }\n }\n }\n\n init();\n\n return {\n get level() {\n return levelSignal();\n },\n get logs() {\n return logsSignal();\n },\n debug,\n info,\n warn,\n error,\n setLevel,\n startMeasure,\n endMeasure,\n clear,\n getMetrics,\n };\n}\n\nconst pluginLogger = definePlugin({\n name: 'logger',\n version: '6.0.0',\n description:\n 'LytJS official logger plugin with log levels, persistence, and performance tracing support',\n author: 'LytJS Team',\n keywords: ['lytjs', 'logger', 'logging', 'debug', 'performance'],\n schema: {\n type: 'object',\n object: {\n properties: {\n level: { type: 'string', default: 'info' },\n enablePersistence: { type: 'boolean', default: false },\n storageKey: { type: 'string', default: 'lyt-logs' },\n maxLogs: { type: 'number', default: 1000 },\n enablePerformance: { type: 'boolean', default: true },\n },\n },\n },\n install(app, options) {\n const logger = createLogger(options as LoggerOptions);\n\n app.config.globalProperties.$logger = logger;\n\n app.provide('lyt-logger', logger);\n },\n});\n\nexport default pluginLogger;\nexport type { LogLevel, LogEntry, LoggerOptions, PerformanceMetric, LoggerInstance };\nexport { createLogger, LOG_LEVELS };\n"]}
package/package.json CHANGED
@@ -1,54 +1,54 @@
1
- {
2
- "name": "@lytjs/plugin-logger",
3
- "version": "6.4.0",
4
- "description": "LytJS official logger plugin with log levels, persistence, and performance tracing support",
5
- "type": "module",
6
- "main": "./dist/index.cjs",
7
- "module": "./dist/index.mjs",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.mjs",
13
- "require": "./dist/index.cjs"
14
- },
15
- "./package.json": "./package.json"
16
- },
17
- "files": [
18
- "dist"
19
- ],
20
- "sideEffects": false,
21
- "scripts": {
22
- "build": "tsup",
23
- "dev": "tsup --watch",
24
- "test": "vitest run",
25
- "test:watch": "vitest",
26
- "test:coverage": "vitest run --coverage",
27
- "type-check": "tsc --noEmit",
28
- "lint": "eslint \"src/**/*.ts\"",
29
- "clean": "rm -rf dist"
30
- },
31
- "dependencies": {
32
- "@lytjs/core": "^6.0.0",
33
- "@lytjs/reactivity": "^6.0.0",
34
- "@lytjs/common-is": "^6.0.0"
35
- },
36
- "devDependencies": {
37
- "tsup": "^8.0.0",
38
- "typescript": "^5.4.0",
39
- "vitest": "^3.0.0"
40
- },
41
- "license": "MIT",
42
- "repository": {
43
- "type": "git",
44
- "url": "https://gitee.com/lytjs/lytjs.git",
45
- "directory": "packages/plugins/packages/plugin-logger"
46
- },
47
- "keywords": [
48
- "lytjs",
49
- "logger",
50
- "logging",
51
- "debug",
52
- "performance"
53
- ]
54
- }
1
+ {
2
+ "name": "@lytjs/plugin-logger",
3
+ "version": "6.6.0",
4
+ "description": "LytJS official logger plugin with log levels, persistence, and performance tracing support",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./package.json": "./package.json"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "sideEffects": false,
21
+ "scripts": {
22
+ "build": "tsup",
23
+ "dev": "tsup --watch",
24
+ "test": "vitest run",
25
+ "test:watch": "vitest",
26
+ "test:coverage": "vitest run --coverage",
27
+ "type-check": "tsc --noEmit",
28
+ "lint": "eslint \"src/**/*.ts\"",
29
+ "clean": "rm -rf dist"
30
+ },
31
+ "dependencies": {
32
+ "@lytjs/core": "workspace:*",
33
+ "@lytjs/reactivity": "workspace:*",
34
+ "@lytjs/common-is": "workspace:*"
35
+ },
36
+ "devDependencies": {
37
+ "tsup": "^8.0.0",
38
+ "typescript": "^5.4.0",
39
+ "vitest": "^3.0.0"
40
+ },
41
+ "license": "MIT",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "https://gitee.com/lytjs/lytjs.git",
45
+ "directory": "packages/plugins/packages/plugin-logger"
46
+ },
47
+ "keywords": [
48
+ "lytjs",
49
+ "logger",
50
+ "logging",
51
+ "debug",
52
+ "performance"
53
+ ]
54
+ }
package/dist/index.d.cts DELETED
@@ -1,76 +0,0 @@
1
- import * as _lytjs_core from '@lytjs/core';
2
-
3
- /**
4
- * @lytjs/plugin-logger - 类型定义
5
- */
6
- type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
7
- interface LogEntry {
8
- /** 时间戳 */
9
- timestamp: number;
10
- /** 日志级别 */
11
- level: LogLevel;
12
- /** 日志消息 */
13
- message: string;
14
- /** 附加数据 */
15
- data?: unknown;
16
- /** 模块名 */
17
- module?: string;
18
- }
19
- interface LoggerOptions {
20
- /** 日志级别 */
21
- level?: LogLevel;
22
- /** 是否启用持久化 */
23
- enablePersistence?: boolean;
24
- /** 本地存储 key */
25
- storageKey?: string;
26
- /** 最大日志条数 */
27
- maxLogs?: number;
28
- /** 是否启用性能追踪 */
29
- enablePerformance?: boolean;
30
- /** 是否显示时间戳 */
31
- showTimestamp?: boolean;
32
- /** 自定义格式化函数 */
33
- formatter?: (entry: LogEntry) => string;
34
- }
35
- interface PerformanceMetric {
36
- /** 名称 */
37
- name: string;
38
- /** 开始时间 */
39
- startTime: number;
40
- /** 结束时间 */
41
- endTime?: number;
42
- /** 持续时间 */
43
- duration?: number;
44
- /** 附加数据 */
45
- data?: unknown;
46
- }
47
- interface LoggerInstance {
48
- /** 当前日志级别 */
49
- level: LogLevel;
50
- /** 日志记录 */
51
- logs: LogEntry[];
52
- /** 调试日志 */
53
- debug: (message: string, data?: unknown, module?: string) => void;
54
- /** 信息日志 */
55
- info: (message: string, data?: unknown, module?: string) => void;
56
- /** 警告日志 */
57
- warn: (message: string, data?: unknown, module?: string) => void;
58
- /** 错误日志 */
59
- error: (message: string, data?: unknown, module?: string) => void;
60
- /** 设置日志级别 */
61
- setLevel: (level: LogLevel) => void;
62
- /** 开始性能追踪 */
63
- startMeasure: (name: string, data?: unknown) => void;
64
- /** 结束性能追踪 */
65
- endMeasure: (name: string) => PerformanceMetric | null;
66
- /** 清空日志 */
67
- clear: () => void;
68
- /** 获取性能指标 */
69
- getMetrics: () => PerformanceMetric[];
70
- }
71
-
72
- declare const LOG_LEVELS: Record<LogLevel, number>;
73
- declare function createLogger(options?: LoggerOptions): LoggerInstance;
74
- declare const pluginLogger: _lytjs_core.PluginDefinition<unknown>;
75
-
76
- export { LOG_LEVELS, type LogEntry, type LogLevel, type LoggerInstance, type LoggerOptions, type PerformanceMetric, createLogger, pluginLogger as default };
package/dist/index.d.ts DELETED
@@ -1,76 +0,0 @@
1
- import * as _lytjs_core from '@lytjs/core';
2
-
3
- /**
4
- * @lytjs/plugin-logger - 类型定义
5
- */
6
- type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
7
- interface LogEntry {
8
- /** 时间戳 */
9
- timestamp: number;
10
- /** 日志级别 */
11
- level: LogLevel;
12
- /** 日志消息 */
13
- message: string;
14
- /** 附加数据 */
15
- data?: unknown;
16
- /** 模块名 */
17
- module?: string;
18
- }
19
- interface LoggerOptions {
20
- /** 日志级别 */
21
- level?: LogLevel;
22
- /** 是否启用持久化 */
23
- enablePersistence?: boolean;
24
- /** 本地存储 key */
25
- storageKey?: string;
26
- /** 最大日志条数 */
27
- maxLogs?: number;
28
- /** 是否启用性能追踪 */
29
- enablePerformance?: boolean;
30
- /** 是否显示时间戳 */
31
- showTimestamp?: boolean;
32
- /** 自定义格式化函数 */
33
- formatter?: (entry: LogEntry) => string;
34
- }
35
- interface PerformanceMetric {
36
- /** 名称 */
37
- name: string;
38
- /** 开始时间 */
39
- startTime: number;
40
- /** 结束时间 */
41
- endTime?: number;
42
- /** 持续时间 */
43
- duration?: number;
44
- /** 附加数据 */
45
- data?: unknown;
46
- }
47
- interface LoggerInstance {
48
- /** 当前日志级别 */
49
- level: LogLevel;
50
- /** 日志记录 */
51
- logs: LogEntry[];
52
- /** 调试日志 */
53
- debug: (message: string, data?: unknown, module?: string) => void;
54
- /** 信息日志 */
55
- info: (message: string, data?: unknown, module?: string) => void;
56
- /** 警告日志 */
57
- warn: (message: string, data?: unknown, module?: string) => void;
58
- /** 错误日志 */
59
- error: (message: string, data?: unknown, module?: string) => void;
60
- /** 设置日志级别 */
61
- setLevel: (level: LogLevel) => void;
62
- /** 开始性能追踪 */
63
- startMeasure: (name: string, data?: unknown) => void;
64
- /** 结束性能追踪 */
65
- endMeasure: (name: string) => PerformanceMetric | null;
66
- /** 清空日志 */
67
- clear: () => void;
68
- /** 获取性能指标 */
69
- getMetrics: () => PerformanceMetric[];
70
- }
71
-
72
- declare const LOG_LEVELS: Record<LogLevel, number>;
73
- declare function createLogger(options?: LoggerOptions): LoggerInstance;
74
- declare const pluginLogger: _lytjs_core.PluginDefinition<unknown>;
75
-
76
- export { LOG_LEVELS, type LogEntry, type LogLevel, type LoggerInstance, type LoggerOptions, type PerformanceMetric, createLogger, pluginLogger as default };