hazo_logs 1.0.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.
Files changed (102) hide show
  1. package/dist/index.d.ts +27 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +28 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/lib/config_loader.d.ts +12 -0
  6. package/dist/lib/config_loader.d.ts.map +1 -0
  7. package/dist/lib/config_loader.js +81 -0
  8. package/dist/lib/config_loader.js.map +1 -0
  9. package/dist/lib/context/index.d.ts +5 -0
  10. package/dist/lib/context/index.d.ts.map +1 -0
  11. package/dist/lib/context/index.js +5 -0
  12. package/dist/lib/context/index.js.map +1 -0
  13. package/dist/lib/context/log-context.d.ts +83 -0
  14. package/dist/lib/context/log-context.d.ts.map +1 -0
  15. package/dist/lib/context/log-context.js +136 -0
  16. package/dist/lib/context/log-context.js.map +1 -0
  17. package/dist/lib/hazo_logger.d.ts +40 -0
  18. package/dist/lib/hazo_logger.d.ts.map +1 -0
  19. package/dist/lib/hazo_logger.js +82 -0
  20. package/dist/lib/hazo_logger.js.map +1 -0
  21. package/dist/lib/index.d.ts +7 -0
  22. package/dist/lib/index.d.ts.map +1 -0
  23. package/dist/lib/index.js +5 -0
  24. package/dist/lib/index.js.map +1 -0
  25. package/dist/lib/log-reader.d.ts +51 -0
  26. package/dist/lib/log-reader.d.ts.map +1 -0
  27. package/dist/lib/log-reader.js +248 -0
  28. package/dist/lib/log-reader.js.map +1 -0
  29. package/dist/lib/package_logger.d.ts +27 -0
  30. package/dist/lib/package_logger.d.ts.map +1 -0
  31. package/dist/lib/package_logger.js +57 -0
  32. package/dist/lib/package_logger.js.map +1 -0
  33. package/dist/lib/transports/console_transport.d.ts +10 -0
  34. package/dist/lib/transports/console_transport.d.ts.map +1 -0
  35. package/dist/lib/transports/console_transport.js +21 -0
  36. package/dist/lib/transports/console_transport.js.map +1 -0
  37. package/dist/lib/transports/file_transport.d.ts +10 -0
  38. package/dist/lib/transports/file_transport.d.ts.map +1 -0
  39. package/dist/lib/transports/file_transport.js +56 -0
  40. package/dist/lib/transports/file_transport.js.map +1 -0
  41. package/dist/lib/transports/index.d.ts +3 -0
  42. package/dist/lib/transports/index.d.ts.map +1 -0
  43. package/dist/lib/transports/index.js +3 -0
  44. package/dist/lib/transports/index.js.map +1 -0
  45. package/dist/lib/types.d.ts +66 -0
  46. package/dist/lib/types.d.ts.map +1 -0
  47. package/dist/lib/types.js +5 -0
  48. package/dist/lib/types.js.map +1 -0
  49. package/dist/lib/utils/caller_info.d.ts +13 -0
  50. package/dist/lib/utils/caller_info.d.ts.map +1 -0
  51. package/dist/lib/utils/caller_info.js +65 -0
  52. package/dist/lib/utils/caller_info.js.map +1 -0
  53. package/dist/lib/utils/constants.d.ts +16 -0
  54. package/dist/lib/utils/constants.d.ts.map +1 -0
  55. package/dist/lib/utils/constants.js +27 -0
  56. package/dist/lib/utils/constants.js.map +1 -0
  57. package/dist/lib/utils/index.d.ts +3 -0
  58. package/dist/lib/utils/index.d.ts.map +1 -0
  59. package/dist/lib/utils/index.js +3 -0
  60. package/dist/lib/utils/index.js.map +1 -0
  61. package/dist/ui/api/log-api-handler.d.ts +21 -0
  62. package/dist/ui/api/log-api-handler.d.ts.map +1 -0
  63. package/dist/ui/api/log-api-handler.js +151 -0
  64. package/dist/ui/api/log-api-handler.js.map +1 -0
  65. package/dist/ui/components/LogLevelBadge.d.ts +6 -0
  66. package/dist/ui/components/LogLevelBadge.d.ts.map +1 -0
  67. package/dist/ui/components/LogLevelBadge.js +16 -0
  68. package/dist/ui/components/LogLevelBadge.js.map +1 -0
  69. package/dist/ui/components/LogPagination.d.ts +6 -0
  70. package/dist/ui/components/LogPagination.d.ts.map +1 -0
  71. package/dist/ui/components/LogPagination.js +14 -0
  72. package/dist/ui/components/LogPagination.js.map +1 -0
  73. package/dist/ui/components/LogTable.d.ts +6 -0
  74. package/dist/ui/components/LogTable.d.ts.map +1 -0
  75. package/dist/ui/components/LogTable.js +33 -0
  76. package/dist/ui/components/LogTable.js.map +1 -0
  77. package/dist/ui/components/LogTimeline.d.ts +10 -0
  78. package/dist/ui/components/LogTimeline.d.ts.map +1 -0
  79. package/dist/ui/components/LogTimeline.js +95 -0
  80. package/dist/ui/components/LogTimeline.js.map +1 -0
  81. package/dist/ui/components/LogViewerPage.d.ts +6 -0
  82. package/dist/ui/components/LogViewerPage.d.ts.map +1 -0
  83. package/dist/ui/components/LogViewerPage.js +273 -0
  84. package/dist/ui/components/LogViewerPage.js.map +1 -0
  85. package/dist/ui/index.d.ts +12 -0
  86. package/dist/ui/index.d.ts.map +1 -0
  87. package/dist/ui/index.js +12 -0
  88. package/dist/ui/index.js.map +1 -0
  89. package/dist/ui/middleware/with-log-auth.d.ts +25 -0
  90. package/dist/ui/middleware/with-log-auth.d.ts.map +1 -0
  91. package/dist/ui/middleware/with-log-auth.js +49 -0
  92. package/dist/ui/middleware/with-log-auth.js.map +1 -0
  93. package/dist/ui/server.d.ts +9 -0
  94. package/dist/ui/server.d.ts.map +1 -0
  95. package/dist/ui/server.js +10 -0
  96. package/dist/ui/server.js.map +1 -0
  97. package/dist/ui/types.d.ts +135 -0
  98. package/dist/ui/types.d.ts.map +1 -0
  99. package/dist/ui/types.js +5 -0
  100. package/dist/ui/types.js.map +1 -0
  101. package/hazo_logs_config.example.ini +47 -0
  102. package/package.json +81 -0
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Log Reader Service
3
+ * Reads and parses log files with filtering, sorting, and pagination
4
+ */
5
+ import fs from 'fs';
6
+ import path from 'path';
7
+ import readline from 'readline';
8
+ import { loadConfig } from './config_loader.js';
9
+ const LEVEL_ORDER = {
10
+ error: 0,
11
+ warn: 1,
12
+ info: 2,
13
+ debug: 3,
14
+ };
15
+ /**
16
+ * Read logs from file with filtering, sorting, and pagination
17
+ */
18
+ export async function readLogs(options = {}) {
19
+ const config = loadConfig();
20
+ const logDir = options.logDirectory || config.log_directory;
21
+ const date = options.date || getTodayDate();
22
+ const pageSize = options.pageSize || config.log_viewer_page_size || 50;
23
+ const page = options.page || 1;
24
+ const maxResults = config.log_viewer_max_results || 1000;
25
+ const logFilePath = path.resolve(logDir, `hazo-${date}.log`);
26
+ if (!fs.existsSync(logFilePath)) {
27
+ return {
28
+ logs: [],
29
+ total: 0,
30
+ page,
31
+ pageSize,
32
+ totalPages: 0,
33
+ };
34
+ }
35
+ // Read and parse all logs from file
36
+ let logs = await parseLogFile(logFilePath);
37
+ // Apply filters
38
+ logs = applyFilters(logs, options);
39
+ // Limit to max results
40
+ if (logs.length > maxResults) {
41
+ logs = logs.slice(0, maxResults);
42
+ }
43
+ const total = logs.length;
44
+ // Apply sorting
45
+ logs = applySorting(logs, options.sortBy, options.sortOrder);
46
+ // Apply pagination
47
+ const totalPages = Math.ceil(total / pageSize);
48
+ const startIndex = (page - 1) * pageSize;
49
+ const paginatedLogs = logs.slice(startIndex, startIndex + pageSize);
50
+ return {
51
+ logs: paginatedLogs,
52
+ total,
53
+ page,
54
+ pageSize,
55
+ totalPages,
56
+ };
57
+ }
58
+ /**
59
+ * Get list of available log dates
60
+ */
61
+ export async function getAvailableLogDates(logDirectory) {
62
+ const config = loadConfig();
63
+ const logDir = logDirectory || config.log_directory;
64
+ const resolvedDir = path.resolve(logDir);
65
+ if (!fs.existsSync(resolvedDir)) {
66
+ return [];
67
+ }
68
+ const files = fs.readdirSync(resolvedDir);
69
+ const dates = [];
70
+ for (const file of files) {
71
+ const match = file.match(/^hazo-(\d{4}-\d{2}-\d{2})\.log$/);
72
+ if (match) {
73
+ dates.push(match[1]);
74
+ }
75
+ }
76
+ // Sort dates descending (newest first)
77
+ return dates.sort((a, b) => b.localeCompare(a));
78
+ }
79
+ /**
80
+ * Get unique package names from logs
81
+ */
82
+ export async function getUniquePackages(logDirectory, date) {
83
+ const config = loadConfig();
84
+ const logDir = logDirectory || config.log_directory;
85
+ const targetDate = date || getTodayDate();
86
+ const logFilePath = path.resolve(logDir, `hazo-${targetDate}.log`);
87
+ if (!fs.existsSync(logFilePath)) {
88
+ return [];
89
+ }
90
+ const logs = await parseLogFile(logFilePath);
91
+ const packages = new Set();
92
+ for (const log of logs) {
93
+ if (log.package) {
94
+ packages.add(log.package);
95
+ }
96
+ }
97
+ return Array.from(packages).sort();
98
+ }
99
+ /**
100
+ * Get unique execution IDs from logs
101
+ */
102
+ export async function getUniqueExecutionIds(logDirectory, date) {
103
+ const config = loadConfig();
104
+ const logDir = logDirectory || config.log_directory;
105
+ const targetDate = date || getTodayDate();
106
+ const logFilePath = path.resolve(logDir, `hazo-${targetDate}.log`);
107
+ if (!fs.existsSync(logFilePath)) {
108
+ return [];
109
+ }
110
+ const logs = await parseLogFile(logFilePath);
111
+ const executionIds = new Set();
112
+ for (const log of logs) {
113
+ if (log.executionId) {
114
+ executionIds.add(log.executionId);
115
+ }
116
+ }
117
+ return Array.from(executionIds).sort();
118
+ }
119
+ /**
120
+ * Get unique session IDs from logs
121
+ */
122
+ export async function getUniqueSessionIds(logDirectory, date) {
123
+ const config = loadConfig();
124
+ const logDir = logDirectory || config.log_directory;
125
+ const targetDate = date || getTodayDate();
126
+ const logFilePath = path.resolve(logDir, `hazo-${targetDate}.log`);
127
+ if (!fs.existsSync(logFilePath)) {
128
+ return [];
129
+ }
130
+ const logs = await parseLogFile(logFilePath);
131
+ const sessionIds = new Set();
132
+ for (const log of logs) {
133
+ if (log.sessionId) {
134
+ sessionIds.add(log.sessionId);
135
+ }
136
+ }
137
+ return Array.from(sessionIds).sort();
138
+ }
139
+ /**
140
+ * Get unique references from logs
141
+ */
142
+ export async function getUniqueReferences(logDirectory, date) {
143
+ const config = loadConfig();
144
+ const logDir = logDirectory || config.log_directory;
145
+ const targetDate = date || getTodayDate();
146
+ const logFilePath = path.resolve(logDir, `hazo-${targetDate}.log`);
147
+ if (!fs.existsSync(logFilePath)) {
148
+ return [];
149
+ }
150
+ const logs = await parseLogFile(logFilePath);
151
+ const references = new Set();
152
+ for (const log of logs) {
153
+ if (log.reference) {
154
+ references.add(log.reference);
155
+ }
156
+ }
157
+ return Array.from(references).sort();
158
+ }
159
+ /**
160
+ * Parse a log file line by line
161
+ */
162
+ async function parseLogFile(filePath) {
163
+ const logs = [];
164
+ const fileStream = fs.createReadStream(filePath);
165
+ const rl = readline.createInterface({
166
+ input: fileStream,
167
+ crlfDelay: Infinity,
168
+ });
169
+ for await (const line of rl) {
170
+ if (!line.trim())
171
+ continue;
172
+ try {
173
+ const entry = JSON.parse(line);
174
+ logs.push(entry);
175
+ }
176
+ catch {
177
+ // Skip malformed lines
178
+ }
179
+ }
180
+ return logs;
181
+ }
182
+ /**
183
+ * Apply filters to logs
184
+ */
185
+ function applyFilters(logs, options) {
186
+ let filtered = logs;
187
+ // Filter by level
188
+ if (options.level && options.level.length > 0) {
189
+ filtered = filtered.filter((log) => options.level.includes(log.level));
190
+ }
191
+ // Filter by package
192
+ if (options.package && options.package.length > 0) {
193
+ filtered = filtered.filter((log) => options.package.includes(log.package));
194
+ }
195
+ // Filter by execution ID
196
+ if (options.executionId && options.executionId.length > 0) {
197
+ filtered = filtered.filter((log) => options.executionId.includes(log.executionId));
198
+ }
199
+ // Filter by session ID
200
+ if (options.sessionId && options.sessionId.length > 0) {
201
+ filtered = filtered.filter((log) => log.sessionId && options.sessionId.includes(log.sessionId));
202
+ }
203
+ // Filter by reference
204
+ if (options.reference && options.reference.length > 0) {
205
+ filtered = filtered.filter((log) => log.reference && options.reference.includes(log.reference));
206
+ }
207
+ // Filter by search text
208
+ if (options.search) {
209
+ const searchLower = options.search.toLowerCase();
210
+ filtered = filtered.filter((log) => log.message.toLowerCase().includes(searchLower) ||
211
+ log.package.toLowerCase().includes(searchLower) ||
212
+ log.filename.toLowerCase().includes(searchLower) ||
213
+ (log.sessionId && log.sessionId.toLowerCase().includes(searchLower)) ||
214
+ (log.reference && log.reference.toLowerCase().includes(searchLower)));
215
+ }
216
+ return filtered;
217
+ }
218
+ /**
219
+ * Apply sorting to logs
220
+ */
221
+ function applySorting(logs, sortBy, sortOrder) {
222
+ const order = sortOrder === 'asc' ? 1 : -1;
223
+ return [...logs].sort((a, b) => {
224
+ switch (sortBy) {
225
+ case 'level':
226
+ return (LEVEL_ORDER[a.level] - LEVEL_ORDER[b.level]) * order;
227
+ case 'package':
228
+ return a.package.localeCompare(b.package) * order;
229
+ case 'executionId':
230
+ return a.executionId.localeCompare(b.executionId) * order;
231
+ case 'sessionId':
232
+ return (a.sessionId || '').localeCompare(b.sessionId || '') * order;
233
+ case 'reference':
234
+ return (a.reference || '').localeCompare(b.reference || '') * order;
235
+ case 'timestamp':
236
+ default:
237
+ return a.timestamp.localeCompare(b.timestamp) * order;
238
+ }
239
+ });
240
+ }
241
+ /**
242
+ * Get today's date in YYYY-MM-DD format
243
+ */
244
+ function getTodayDate() {
245
+ const now = new Date();
246
+ return now.toISOString().split('T')[0];
247
+ }
248
+ //# sourceMappingURL=log-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-reader.js","sourceRoot":"","sources":["../../src/lib/log-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Package-specific logger implementation
3
+ * Creates loggers that tag all entries with a package name
4
+ */
5
+ import { HazoLogger } from './hazo_logger.js';
6
+ import type { Logger, LogData, PackageLoggerOptions } from './types.js';
7
+ /**
8
+ * Logger implementation for a specific package
9
+ * Tags all log entries with the package name and captures caller info
10
+ */
11
+ export declare class PackageLogger implements Logger {
12
+ private coreLogger;
13
+ private packageName;
14
+ constructor(options: PackageLoggerOptions, coreLogger?: HazoLogger);
15
+ private log;
16
+ error(message: string, data?: LogData): void;
17
+ warn(message: string, data?: LogData): void;
18
+ info(message: string, data?: LogData): void;
19
+ debug(message: string, data?: LogData): void;
20
+ }
21
+ /**
22
+ * Factory function to create a package-specific logger
23
+ * @param packageName - Name of the package (e.g., "hazo_auth", "hazo_notify")
24
+ * @returns Logger instance for the specified package
25
+ */
26
+ export declare function createLogger(packageName: string): Logger;
27
+ //# sourceMappingURL=package_logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package_logger.d.ts","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAY,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIlF;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,oBAAoB,EAAE,UAAU,CAAC,EAAE,UAAU;IAKlE,OAAO,CAAC,GAAG;IAmBX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAG7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Package-specific logger implementation
3
+ * Creates loggers that tag all entries with a package name
4
+ */
5
+ import { HazoLogger } from './hazo_logger.js';
6
+ import { getCallerInfo } from './utils/caller_info.js';
7
+ import { getLogContext } from './context/log-context.js';
8
+ /**
9
+ * Logger implementation for a specific package
10
+ * Tags all log entries with the package name and captures caller info
11
+ */
12
+ export class PackageLogger {
13
+ coreLogger;
14
+ packageName;
15
+ constructor(options, coreLogger) {
16
+ this.packageName = options.packageName;
17
+ this.coreLogger = coreLogger || HazoLogger.getInstance();
18
+ }
19
+ log(level, message, data) {
20
+ const { filename, line } = getCallerInfo();
21
+ const context = getLogContext();
22
+ this.coreLogger.log({
23
+ timestamp: new Date().toISOString(),
24
+ level,
25
+ package: this.packageName,
26
+ message,
27
+ filename,
28
+ line,
29
+ executionId: this.coreLogger.getExecutionId(),
30
+ ...(context?.sessionId ? { sessionId: context.sessionId } : {}),
31
+ ...(context?.reference ? { reference: context.reference } : {}),
32
+ ...(context?.depth ? { depth: context.depth } : {}),
33
+ ...(data ? { data } : {}),
34
+ });
35
+ }
36
+ error(message, data) {
37
+ this.log('error', message, data);
38
+ }
39
+ warn(message, data) {
40
+ this.log('warn', message, data);
41
+ }
42
+ info(message, data) {
43
+ this.log('info', message, data);
44
+ }
45
+ debug(message, data) {
46
+ this.log('debug', message, data);
47
+ }
48
+ }
49
+ /**
50
+ * Factory function to create a package-specific logger
51
+ * @param packageName - Name of the package (e.g., "hazo_auth", "hazo_notify")
52
+ * @returns Logger instance for the specified package
53
+ */
54
+ export function createLogger(packageName) {
55
+ return new PackageLogger({ packageName });
56
+ }
57
+ //# sourceMappingURL=package_logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package_logger.js","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,UAAU,CAAa;IACvB,WAAW,CAAS;IAE5B,YAAY,OAA6B,EAAE,UAAuB;QAChE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3D,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAAc;QAC1D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB,OAAO;YACP,QAAQ;YACR,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;YAC7C,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Colored console transport for hazo_logs
3
+ */
4
+ import winston from 'winston';
5
+ import type { LogLevel } from '../types.js';
6
+ /**
7
+ * Create a Winston console transport with colored output
8
+ */
9
+ export declare function createConsoleTransport(level: LogLevel): winston.transport;
10
+ //# sourceMappingURL=console_transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console_transport.d.ts","sourceRoot":"","sources":["../../../src/lib/transports/console_transport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAezE"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Colored console transport for hazo_logs
3
+ */
4
+ import winston from 'winston';
5
+ import { COLORS } from '../utils/constants.js';
6
+ /**
7
+ * Create a Winston console transport with colored output
8
+ */
9
+ export function createConsoleTransport(level) {
10
+ return new winston.transports.Console({
11
+ level,
12
+ format: winston.format.combine(winston.format.timestamp({ format: 'HH:mm:ss' }), winston.format.printf((info) => {
13
+ const { timestamp, level: logLevel, message, package: pkg, filename, line } = info;
14
+ const color = COLORS[logLevel] || COLORS.reset;
15
+ const levelUpper = logLevel.toUpperCase().padEnd(5);
16
+ const location = `${filename}:${line}`;
17
+ return `${color}[${timestamp}] [${levelUpper}] [${pkg}] ${message} (${location})${COLORS.reset}`;
18
+ })),
19
+ });
20
+ }
21
+ //# sourceMappingURL=console_transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console_transport.js","sourceRoot":"","sources":["../../../src/lib/transports/console_transport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAe;IACpD,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QACpC,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAChD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YACnF,MAAM,KAAK,GAAG,MAAM,CAAC,QAA+B,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;YACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;YAEvC,OAAO,GAAG,KAAK,IAAI,SAAS,MAAM,UAAU,MAAM,GAAG,KAAK,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACnG,CAAC,CAAC,CACH;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Daily rotating JSON file transport for hazo_logs
3
+ */
4
+ import DailyRotateFile from 'winston-daily-rotate-file';
5
+ import type { HazoLogConfig } from '../types.js';
6
+ /**
7
+ * Create a Winston daily rotating file transport with JSON format
8
+ */
9
+ export declare function createFileTransport(config: HazoLogConfig): DailyRotateFile;
10
+ //# sourceMappingURL=file_transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_transport.d.ts","sourceRoot":"","sources":["../../../src/lib/transports/file_transport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAIxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmCjD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAmB1E"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Daily rotating JSON file transport for hazo_logs
3
+ */
4
+ import DailyRotateFile from 'winston-daily-rotate-file';
5
+ import winston from 'winston';
6
+ import path from 'path';
7
+ import fs from 'fs';
8
+ /**
9
+ * Custom format that outputs fields in a logical, readable order
10
+ */
11
+ const orderedJsonFormat = winston.format.printf((info) => {
12
+ const ordered = {
13
+ timestamp: info.timestamp,
14
+ level: info.level,
15
+ package: info.package,
16
+ message: info.message,
17
+ filename: info.filename,
18
+ line: info.line,
19
+ executionId: info.executionId,
20
+ };
21
+ // Add optional context fields if present
22
+ if (info.sessionId) {
23
+ ordered.sessionId = info.sessionId;
24
+ }
25
+ if (info.reference) {
26
+ ordered.reference = info.reference;
27
+ }
28
+ if (info.depth !== undefined) {
29
+ ordered.depth = info.depth;
30
+ }
31
+ // Add data field if present
32
+ if (info.data) {
33
+ ordered.data = info.data;
34
+ }
35
+ return JSON.stringify(ordered);
36
+ });
37
+ /**
38
+ * Create a Winston daily rotating file transport with JSON format
39
+ */
40
+ export function createFileTransport(config) {
41
+ // Ensure log directory exists
42
+ const logDir = path.resolve(config.log_directory);
43
+ if (!fs.existsSync(logDir)) {
44
+ fs.mkdirSync(logDir, { recursive: true });
45
+ }
46
+ return new DailyRotateFile({
47
+ level: config.log_level,
48
+ dirname: logDir,
49
+ filename: 'hazo-%DATE%.log',
50
+ datePattern: config.date_pattern,
51
+ maxSize: config.max_file_size,
52
+ maxFiles: config.max_files,
53
+ format: winston.format.combine(winston.format.timestamp(), orderedJsonFormat),
54
+ });
55
+ }
56
+ //# sourceMappingURL=file_transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_transport.js","sourceRoot":"","sources":["../../../src/lib/transports/file_transport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;GAEG;AACH,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACvD,MAAM,OAAO,GAA4B;QACvC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;IAEF,yCAAyC;IACzC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,4BAA4B;IAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAqB;IACvD,8BAA8B;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,IAAI,eAAe,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC,SAAS;QACvB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,OAAO,EAAE,MAAM,CAAC,aAAa;QAC7B,QAAQ,EAAE,MAAM,CAAC,SAAS;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,iBAAiB,CAClB;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createConsoleTransport } from './console_transport.js';
2
+ export { createFileTransport } from './file_transport.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/transports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createConsoleTransport } from './console_transport.js';
2
+ export { createFileTransport } from './file_transport.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/transports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Type definitions for hazo_logs
3
+ */
4
+ /**
5
+ * Log levels supported by hazo_logs
6
+ */
7
+ export type LogLevel = 'error' | 'warn' | 'info' | 'debug';
8
+ /**
9
+ * Additional data that can be attached to log entries
10
+ */
11
+ export type LogData = Record<string, unknown>;
12
+ /**
13
+ * Log entry structure written to JSON files
14
+ */
15
+ export interface LogEntry {
16
+ timestamp: string;
17
+ level: LogLevel;
18
+ package: string;
19
+ message: string;
20
+ filename: string;
21
+ line: number;
22
+ executionId: string;
23
+ sessionId?: string;
24
+ reference?: string;
25
+ depth?: number;
26
+ data?: LogData;
27
+ }
28
+ /**
29
+ * Logger interface - the public API for logging
30
+ */
31
+ export interface Logger {
32
+ error(message: string, data?: LogData): void;
33
+ warn(message: string, data?: LogData): void;
34
+ info(message: string, data?: LogData): void;
35
+ debug(message: string, data?: LogData): void;
36
+ }
37
+ /**
38
+ * Configuration options loaded from hazo_logs_config.ini
39
+ */
40
+ export interface HazoLogConfig {
41
+ log_directory: string;
42
+ log_level: LogLevel;
43
+ enable_console: boolean;
44
+ enable_file: boolean;
45
+ max_file_size: string;
46
+ max_files: string;
47
+ date_pattern: string;
48
+ enable_log_viewer: boolean;
49
+ log_viewer_page_size: number;
50
+ log_viewer_max_results: number;
51
+ }
52
+ /**
53
+ * Options for creating a package logger
54
+ */
55
+ export interface PackageLoggerOptions {
56
+ packageName: string;
57
+ }
58
+ /**
59
+ * Log context for session and reference tracking
60
+ */
61
+ export interface LogContext {
62
+ sessionId?: string;
63
+ reference?: string;
64
+ depth?: number;
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,QAAQ,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IAErB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for hazo_logs
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Utility to extract filename and line number from call stack
3
+ */
4
+ export interface CallerInfo {
5
+ filename: string;
6
+ line: number;
7
+ }
8
+ /**
9
+ * Get the filename and line number of the caller
10
+ * Walks up the stack to find the actual calling code (not the logger internals)
11
+ */
12
+ export declare function getCallerInfo(): CallerInfo;
13
+ //# sourceMappingURL=caller_info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caller_info.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/caller_info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CA+B1C"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Utility to extract filename and line number from call stack
3
+ */
4
+ /**
5
+ * Get the filename and line number of the caller
6
+ * Walks up the stack to find the actual calling code (not the logger internals)
7
+ */
8
+ export function getCallerInfo() {
9
+ const originalPrepareStackTrace = Error.prepareStackTrace;
10
+ try {
11
+ const err = new Error();
12
+ Error.prepareStackTrace = (_, stack) => stack;
13
+ const stack = err.stack;
14
+ Error.prepareStackTrace = originalPrepareStackTrace;
15
+ // Walk up the stack to find user code
16
+ for (let i = 0; i < stack.length; i++) {
17
+ const frame = stack[i];
18
+ const filename = frame.getFileName() || '';
19
+ // Skip if no filename
20
+ if (!filename)
21
+ continue;
22
+ // Skip frames that are part of the logger internals
23
+ if (isInternalFrame(filename))
24
+ continue;
25
+ // Found user code
26
+ return {
27
+ filename: extractFilename(filename),
28
+ line: frame.getLineNumber() || 0,
29
+ };
30
+ }
31
+ return { filename: 'unknown', line: 0 };
32
+ }
33
+ catch {
34
+ return { filename: 'unknown', line: 0 };
35
+ }
36
+ }
37
+ /**
38
+ * Check if a filename is an internal frame that should be skipped
39
+ */
40
+ function isInternalFrame(filename) {
41
+ const lowered = filename.toLowerCase();
42
+ // Skip node internals
43
+ if (lowered.startsWith('node:'))
44
+ return true;
45
+ // Skip node_modules (including hazo_logs when used as a package)
46
+ if (lowered.includes('node_modules'))
47
+ return true;
48
+ // Skip hazo_logs package source files (src/lib or dist/lib)
49
+ // Be specific to avoid skipping user files in directories that happen to contain "hazo_log"
50
+ if (lowered.includes('hazo_logs/src/lib') ||
51
+ lowered.includes('hazo_logs/dist/lib') ||
52
+ lowered.includes('hazo_logs\\src\\lib') ||
53
+ lowered.includes('hazo_logs\\dist\\lib')) {
54
+ return true;
55
+ }
56
+ return false;
57
+ }
58
+ /**
59
+ * Extract just the filename from a full path
60
+ */
61
+ function extractFilename(fullPath) {
62
+ const parts = fullPath.split(/[/\\]/);
63
+ return parts[parts.length - 1] || fullPath;
64
+ }
65
+ //# sourceMappingURL=caller_info.js.map