hazo_logs 1.0.0 → 1.0.2

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 (44) hide show
  1. package/README.md +498 -0
  2. package/dist/index.d.ts +6 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/config_loader.d.ts.map +1 -1
  7. package/dist/lib/config_loader.js +13 -4
  8. package/dist/lib/config_loader.js.map +1 -1
  9. package/dist/lib/hazo_logger.d.ts +5 -0
  10. package/dist/lib/hazo_logger.d.ts.map +1 -1
  11. package/dist/lib/hazo_logger.js +15 -0
  12. package/dist/lib/hazo_logger.js.map +1 -1
  13. package/dist/lib/index.d.ts +1 -1
  14. package/dist/lib/index.d.ts.map +1 -1
  15. package/dist/lib/types.d.ts +6 -0
  16. package/dist/lib/types.d.ts.map +1 -1
  17. package/dist/tailwind.d.ts +61 -0
  18. package/dist/tailwind.d.ts.map +1 -0
  19. package/dist/tailwind.js +106 -0
  20. package/dist/tailwind.js.map +1 -0
  21. package/dist/ui/api/log-api-handler.d.ts +2 -2
  22. package/dist/ui/api/log-api-handler.d.ts.map +1 -1
  23. package/dist/ui/api/log-api-handler.js +49 -2
  24. package/dist/ui/api/log-api-handler.js.map +1 -1
  25. package/dist/ui/client-logger.d.ts +54 -0
  26. package/dist/ui/client-logger.d.ts.map +1 -0
  27. package/dist/ui/client-logger.js +126 -0
  28. package/dist/ui/client-logger.js.map +1 -0
  29. package/dist/ui/components/LogTable.d.ts.map +1 -1
  30. package/dist/ui/components/LogTable.js +1 -1
  31. package/dist/ui/components/LogTable.js.map +1 -1
  32. package/dist/ui/components/LogTimeline.d.ts.map +1 -1
  33. package/dist/ui/components/LogTimeline.js +9 -1
  34. package/dist/ui/components/LogTimeline.js.map +1 -1
  35. package/dist/ui/index.d.ts +3 -1
  36. package/dist/ui/index.d.ts.map +1 -1
  37. package/dist/ui/index.js +2 -0
  38. package/dist/ui/index.js.map +1 -1
  39. package/dist/ui/middleware/with-log-auth.d.ts.map +1 -1
  40. package/dist/ui/middleware/with-log-auth.js +15 -13
  41. package/dist/ui/middleware/with-log-auth.js.map +1 -1
  42. package/dist/ui/types.d.ts +7 -0
  43. package/dist/ui/types.d.ts.map +1 -1
  44. package/package.json +6 -2
package/README.md ADDED
@@ -0,0 +1,498 @@
1
+ # hazo_logs
2
+
3
+ A Winston-based logging library for Node.js/Next.js applications with a built-in log viewer UI.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/hazo_logs.svg)](https://www.npmjs.com/package/hazo_logs)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ ## Features
9
+
10
+ - **Structured Logging**: Winston wrapper with singleton pattern for consistent logging across your app
11
+ - **Package Tagging**: Automatically tag logs by package/module name
12
+ - **Daily Rotation**: Automatic log file rotation with configurable retention
13
+ - **Session Tracking**: Track logs across async operations with sessionId and reference
14
+ - **Built-in UI**: React-based log viewer with filtering, sorting, and pagination
15
+ - **Zero Config**: Works out of the box with sensible defaults
16
+ - **Minimal Integration**: Add log viewer to your app with just 2 files (~6 lines of code)
17
+
18
+ ## Quick Start
19
+
20
+ ### Installation
21
+
22
+ ```bash
23
+ npm install hazo_logs
24
+ ```
25
+
26
+ For the UI components, also install peer dependencies:
27
+
28
+ ```bash
29
+ npm install hazo_logs next react hazo_ui
30
+ ```
31
+
32
+ ### Basic Usage (Logging Only)
33
+
34
+ **1. Create a logger in your code:**
35
+
36
+ ```typescript
37
+ import { createLogger } from 'hazo_logs';
38
+
39
+ const logger = createLogger('my-package');
40
+
41
+ logger.info('Application started');
42
+ logger.warn('This is a warning', { userId: 123 });
43
+ logger.error('Something went wrong', { error: 'details' });
44
+ logger.debug('Debug information');
45
+ ```
46
+
47
+ **2. (Optional) Configure logging:**
48
+
49
+ Create `hazo_logs_config.ini` in your project root:
50
+
51
+ ```ini
52
+ [hazo_logs]
53
+ log_directory = ./logs
54
+ log_level = info
55
+ enable_console = true
56
+ enable_file = true
57
+ max_file_size = 20m
58
+ max_files = 14d
59
+ ```
60
+
61
+ That's it! Logs will be written to `./logs/hazo-YYYY-MM-DD.log` files.
62
+
63
+ ### Add Log Viewer UI (Optional)
64
+
65
+ Add a log viewer to your Next.js app with just 2 files:
66
+
67
+ **1. Create API route** (`app/api/logs/route.ts`):
68
+
69
+ ```typescript
70
+ import { createLogApiHandler } from 'hazo_logs/ui/server';
71
+
72
+ const handler = createLogApiHandler();
73
+
74
+ export const { GET } = handler;
75
+ ```
76
+
77
+ **2. Create UI page** (`app/logs/page.tsx`):
78
+
79
+ ```typescript
80
+ 'use client';
81
+
82
+ import { LogViewerPage } from 'hazo_logs/ui';
83
+
84
+ export default function LogsPage() {
85
+ return <LogViewerPage apiBasePath="/api/logs" title="System Logs" />;
86
+ }
87
+ ```
88
+
89
+ **3. Configure Tailwind CSS** (`tailwind.config.ts`):
90
+
91
+ ```typescript
92
+ import type { Config } from 'tailwindcss';
93
+ import { tailwindSafelist, tailwindContentPath } from 'hazo_logs/tailwind';
94
+
95
+ const config: Config = {
96
+ content: [
97
+ './src/**/*.{js,ts,jsx,tsx,mdx}',
98
+ './app/**/*.{js,ts,jsx,tsx,mdx}',
99
+ tailwindContentPath, // Add hazo_logs components
100
+ ],
101
+ safelist: tailwindSafelist, // Prevent purging of dynamic classes
102
+ // ... rest of your config
103
+ };
104
+
105
+ export default config;
106
+ ```
107
+
108
+ Visit `/logs` in your app to view logs!
109
+
110
+ ### Client-Side Logging (Browser)
111
+
112
+ For logging from client components (browser), use the client logger:
113
+
114
+ ```typescript
115
+ 'use client';
116
+ import { createClientLogger } from 'hazo_logs/ui';
117
+
118
+ const logger = createClientLogger({
119
+ packageName: 'my-app-client',
120
+ apiBasePath: '/api/logs',
121
+ });
122
+
123
+ logger.info('User clicked button', { buttonId: 'submit' });
124
+ logger.error('Failed to load data', { error: err.message });
125
+ ```
126
+
127
+ ## Important Notes
128
+
129
+ ### Server-Only Core Logger
130
+
131
+ The main `hazo_logs` import uses Node.js APIs (`fs`, `async_hooks`) and **cannot be imported in client components**. If you try to import it in a client component, you'll get build errors.
132
+
133
+ ```typescript
134
+ // Server components, API routes, middleware - OK
135
+ import { createLogger } from 'hazo_logs';
136
+
137
+ // Client components - use client logger instead
138
+ import { createClientLogger } from 'hazo_logs/ui';
139
+ ```
140
+
141
+ ### Tailwind CSS Setup Required
142
+
143
+ The log viewer UI uses dynamic Tailwind classes that would be purged during build. You **must** configure both:
144
+
145
+ 1. **Content path**: So Tailwind scans the hazo_logs component files
146
+ 2. **Safelist**: To preserve dynamically-constructed classes
147
+
148
+ ```typescript
149
+ import { tailwindSafelist, tailwindContentPath } from 'hazo_logs/tailwind';
150
+
151
+ export default {
152
+ content: [
153
+ // your paths...
154
+ tailwindContentPath,
155
+ ],
156
+ safelist: tailwindSafelist,
157
+ };
158
+ ```
159
+
160
+ Alternatively, use the preset:
161
+
162
+ ```typescript
163
+ import { hazoLogsPreset } from 'hazo_logs/tailwind';
164
+
165
+ export default {
166
+ presets: [hazoLogsPreset],
167
+ content: [
168
+ // your paths...
169
+ './node_modules/hazo_logs/dist/**/*.{js,jsx}',
170
+ ],
171
+ };
172
+ ```
173
+
174
+ ## Advanced Usage
175
+
176
+ ### Session and Reference Tracking
177
+
178
+ Track logs across async operations:
179
+
180
+ ```typescript
181
+ import { createLogger } from 'hazo_logs';
182
+ import { runWithLogContext } from 'hazo_logs';
183
+
184
+ const logger = createLogger('auth');
185
+
186
+ async function handleRequest(req) {
187
+ await runWithLogContext(
188
+ {
189
+ sessionId: req.sessionId,
190
+ reference: `user-${req.userId}`,
191
+ depth: 0,
192
+ },
193
+ async () => {
194
+ logger.info('Request started'); // Automatically includes sessionId and reference
195
+ await processRequest(req);
196
+ logger.info('Request completed');
197
+ }
198
+ );
199
+ }
200
+ ```
201
+
202
+ ### Embedded Log Viewer
203
+
204
+ Use the log viewer as a sidebar component:
205
+
206
+ ```typescript
207
+ import { LogViewerPage } from 'hazo_logs/ui';
208
+
209
+ function AdminPanel() {
210
+ return (
211
+ <div className="flex">
212
+ <Sidebar />
213
+ <div className="flex-1">
214
+ <LogViewerPage
215
+ apiBasePath="/api/logs"
216
+ title="Recent Logs"
217
+ embedded={true}
218
+ showHeader={true}
219
+ className="h-screen"
220
+ />
221
+ </div>
222
+ </div>
223
+ );
224
+ }
225
+ ```
226
+
227
+ ### Custom Authentication
228
+
229
+ Protect your log viewer with authentication:
230
+
231
+ ```typescript
232
+ import { createLogApiHandler, withLogAuth } from 'hazo_logs/ui/server';
233
+
234
+ const handler = createLogApiHandler();
235
+
236
+ const authHandler = withLogAuth(handler, async (request) => {
237
+ const session = await getSession(request);
238
+ return session?.user?.role === 'admin';
239
+ });
240
+
241
+ export const { GET } = authHandler;
242
+ ```
243
+
244
+ ### Individual Components
245
+
246
+ Import components separately for custom layouts:
247
+
248
+ ```typescript
249
+ import {
250
+ LogTable,
251
+ LogTimeline,
252
+ LogPagination,
253
+ LogLevelBadge,
254
+ } from 'hazo_logs/ui';
255
+
256
+ // Build your own custom log viewer
257
+ function CustomLogViewer() {
258
+ const [logs, setLogs] = useState([]);
259
+
260
+ return (
261
+ <div>
262
+ <LogTable logs={logs} isLoading={false} />
263
+ <LogPagination
264
+ currentPage={1}
265
+ totalPages={10}
266
+ pageSize={50}
267
+ total={500}
268
+ onPageChange={setPage}
269
+ onPageSizeChange={setPageSize}
270
+ />
271
+ </div>
272
+ );
273
+ }
274
+ ```
275
+
276
+ ## Configuration Reference
277
+
278
+ Create `hazo_logs_config.ini` in your project root:
279
+
280
+ ```ini
281
+ [hazo_logs]
282
+ # Core Logging Settings
283
+ log_directory = ./logs # Where to write log files
284
+ log_level = info # Minimum level: error, warn, info, debug
285
+ enable_console = true # Log to console
286
+ enable_file = true # Log to files with rotation
287
+ max_file_size = 20m # Max size per file (supports k, m, g)
288
+ max_files = 14d # Retention period (e.g., 14d = 14 days)
289
+ date_pattern = YYYY-MM-DD # Date format for log filenames
290
+
291
+ # Log Viewer UI Settings
292
+ enable_log_viewer = true # Enable the API endpoints
293
+ log_viewer_page_size = 50 # Results per page
294
+ log_viewer_max_results = 1000 # Max entries to load for filtering
295
+ ```
296
+
297
+ If no config file is found, sensible defaults are used.
298
+
299
+ ## API Reference
300
+
301
+ ### Core Exports (`hazo_logs`)
302
+
303
+ #### `createLogger(packageName: string): Logger`
304
+
305
+ Create a package-specific logger.
306
+
307
+ ```typescript
308
+ const logger = createLogger('my-package');
309
+ logger.info('Hello world');
310
+ ```
311
+
312
+ #### `Logger` Interface
313
+
314
+ ```typescript
315
+ interface Logger {
316
+ error(message: string, data?: Record<string, unknown>): void;
317
+ warn(message: string, data?: Record<string, unknown>): void;
318
+ info(message: string, data?: Record<string, unknown>): void;
319
+ debug(message: string, data?: Record<string, unknown>): void;
320
+ }
321
+ ```
322
+
323
+ #### `runWithLogContext(context: LogContext, fn: () => Promise<T>): Promise<T>`
324
+
325
+ Run code with log context (sessionId, reference, depth).
326
+
327
+ #### `readLogs(options): Promise<LogQueryResult>`
328
+
329
+ Read logs from files with filtering and pagination (server-side only).
330
+
331
+ ### UI Exports (`hazo_logs/ui`)
332
+
333
+ #### `LogViewerPage`
334
+
335
+ Main log viewer component.
336
+
337
+ **Props:**
338
+ - `apiBasePath?: string` - API endpoint path (default: `/api/logs`)
339
+ - `title?: string` - Page title (default: `Log Viewer`)
340
+ - `className?: string` - Additional CSS classes
341
+ - `embedded?: boolean` - Embedded mode (default: `false`)
342
+ - `showHeader?: boolean` - Show header (default: `true`)
343
+
344
+ #### Individual Components
345
+
346
+ - `LogTable` - Table view of logs
347
+ - `LogTimeline` - Timeline view with grouping
348
+ - `LogPagination` - Pagination controls
349
+ - `LogLevelBadge` - Badge for log levels
350
+
351
+ ### Server Exports (`hazo_logs/ui/server`)
352
+
353
+ #### `createLogApiHandler(config?): LogApiHandler`
354
+
355
+ Create Next.js API route handler.
356
+
357
+ **Options:**
358
+ - `logDirectory?: string` - Override default log directory
359
+
360
+ **Returns:**
361
+ ```typescript
362
+ {
363
+ GET: (request: Request) => Promise<Response>
364
+ }
365
+ ```
366
+
367
+ #### `withLogAuth(handler, authCheck): LogApiHandler`
368
+
369
+ Wrap handler with authentication.
370
+
371
+ ```typescript
372
+ const authHandler = withLogAuth(handler, async (request) => {
373
+ // Return true to allow access, false to deny
374
+ return await isAdmin(request);
375
+ });
376
+ ```
377
+
378
+ ## Log File Format
379
+
380
+ Logs are stored as newline-delimited JSON:
381
+
382
+ ```json
383
+ {"timestamp":"2025-12-18T10:30:45.123Z","level":"info","package":"auth","message":"User logged in","filename":"auth.ts","line":42,"executionId":"2025-12-18-10:30:45-1234","sessionId":"sess_abc123","reference":"user-456","data":{"userId":456}}
384
+ ```
385
+
386
+ **Fields:**
387
+ - `timestamp` - ISO 8601 timestamp
388
+ - `level` - Log level (error, warn, info, debug)
389
+ - `package` - Package name from createLogger
390
+ - `message` - Log message
391
+ - `filename` - Source file name
392
+ - `line` - Line number in source file
393
+ - `executionId` - Unique ID per server start
394
+ - `sessionId` - Optional session ID from context
395
+ - `reference` - Optional reference from context
396
+ - `depth` - Optional call depth from context
397
+ - `data` - Optional additional data
398
+
399
+ ## UI Screenshots
400
+
401
+ ### Table View
402
+ Filter and sort logs by level, package, session, execution ID, or search text.
403
+
404
+ ### Timeline View
405
+ Visualize logs grouped by package or session with hierarchical depth display.
406
+
407
+ ## Examples
408
+
409
+ See the `test-app/` directory for a complete working example.
410
+
411
+ ## Troubleshooting
412
+
413
+ ### Config file not found
414
+
415
+ If you see `[HazoLog] Config file 'hazo_logs_config.ini' not found`, the library will still work with defaults. The warning shows the paths that were searched. Create the config file in your project root if you need custom settings.
416
+
417
+ ### Logs not appearing in UI
418
+
419
+ 1. Check that you're looking at the correct date (UI defaults to today)
420
+ 2. Verify logs are being written to the `log_directory` configured
421
+ 3. Check browser console for API errors
422
+
423
+ ### Styles broken in log viewer
424
+
425
+ 1. Ensure `tailwindContentPath` is in your Tailwind `content` array
426
+ 2. Ensure `tailwindSafelist` is in your Tailwind `safelist` array
427
+ 3. Rebuild your project after config changes (`npm run build`)
428
+
429
+ ### Import errors in client components
430
+
431
+ ```
432
+ Error: fs is not defined
433
+ Error: async_hooks is not defined
434
+ ```
435
+
436
+ The core `hazo_logs` import is server-only. Use `createClientLogger` from `hazo_logs/ui` for browser logging.
437
+
438
+ ### hazo_ui missing errors
439
+
440
+ The log viewer UI requires `hazo_ui` package. Install it:
441
+
442
+ ```bash
443
+ npm install hazo_ui
444
+ ```
445
+
446
+ ## Contributing
447
+
448
+ Contributions are welcome! Please:
449
+
450
+ 1. Fork the repository
451
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
452
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
453
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
454
+ 5. Open a Pull Request
455
+
456
+ ### Development Setup
457
+
458
+ ```bash
459
+ # Clone the repo
460
+ git clone https://github.com/pub12/hazo_logs.git
461
+ cd hazo_logs
462
+
463
+ # Install dependencies
464
+ npm install
465
+
466
+ # Run tests
467
+ npm test
468
+
469
+ # Build
470
+ npm run build
471
+
472
+ # Test with example app
473
+ npm run dev:test-app
474
+ ```
475
+
476
+ ## License
477
+
478
+ MIT - See LICENSE file for details
479
+
480
+ ## Author
481
+
482
+ Pubs Abayasiri
483
+
484
+ ## Links
485
+
486
+ - [GitHub Repository](https://github.com/pub12/hazo_logs)
487
+ - [Issue Tracker](https://github.com/pub12/hazo_logs/issues)
488
+ - [NPM Package](https://www.npmjs.com/package/hazo_logs)
489
+
490
+ ## Related Packages
491
+
492
+ - [hazo_ui](https://github.com/pub12/hazo_ui) - UI component library (required for log viewer)
493
+
494
+ ## Support
495
+
496
+ For issues and questions:
497
+ - Open an issue on [GitHub](https://github.com/pub12/hazo_logs/issues)
498
+ - Check existing issues for solutions
package/dist/index.d.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * hazo_logs - Winston logger wrapper with singleton pattern
3
3
  *
4
+ * ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
5
+ * imported in client components. For client-side logging, use:
6
+ * import { createClientLogger } from 'hazo_logs/ui';
7
+ *
4
8
  * Usage:
5
9
  * import { createLogger, runWithLogContext } from 'hazo_logs';
6
10
  *
@@ -15,7 +19,8 @@
15
19
  * });
16
20
  *
17
21
  * For UI components (requires Next.js, React, and hazo_ui):
18
- * import { LogViewerPage, createLogApiHandler } from 'hazo_logs/ui';
22
+ * import { LogViewerPage } from 'hazo_logs/ui';
23
+ * import { createLogApiHandler } from 'hazo_logs/ui/server';
19
24
  */
20
25
  export { HazoLogger } from './lib/hazo_logger.js';
21
26
  export { PackageLogger, createLogger } from './lib/package_logger.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * hazo_logs - Winston logger wrapper with singleton pattern
3
3
  *
4
+ * ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
5
+ * imported in client components. For client-side logging, use:
6
+ * import { createClientLogger } from 'hazo_logs/ui';
7
+ *
4
8
  * Usage:
5
9
  * import { createLogger, runWithLogContext } from 'hazo_logs';
6
10
  *
@@ -15,7 +19,8 @@
15
19
  * });
16
20
  *
17
21
  * For UI components (requires Next.js, React, and hazo_ui):
18
- * import { LogViewerPage, createLogApiHandler } from 'hazo_logs/ui';
22
+ * import { LogViewerPage } from 'hazo_logs/ui';
23
+ * import { createLogApiHandler } from 'hazo_logs/ui/server';
19
24
  */
20
25
  // Core logging
21
26
  export { HazoLogger } from './lib/hazo_logger.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,cAAc;AACd,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAEtC,aAAa;AACb,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,cAAc;AACd,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAEtC,aAAa;AACb,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config_loader.d.ts","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,YAAY,CAAC;AAK1D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CA8B7D"}
1
+ {"version":3,"file":"config_loader.d.ts","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,YAAY,CAAC;AAK1D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAmC7D"}
@@ -15,7 +15,10 @@ const CONFIG_FILENAME = 'hazo_logs_config.ini';
15
15
  export function loadConfig(configPath) {
16
16
  const resolvedPath = configPath || findConfigFile();
17
17
  if (!resolvedPath || !fs.existsSync(resolvedPath)) {
18
- console.warn(`[HazoLog] Config file not found, using defaults`);
18
+ const searchPaths = getSearchPaths();
19
+ console.warn(`[HazoLog] Config file '${CONFIG_FILENAME}' not found. Using defaults.\n` +
20
+ ` Searched in:\n${searchPaths.map(p => ` - ${p}`).join('\n')}\n` +
21
+ ` To configure, create '${CONFIG_FILENAME}' in your project root.`);
19
22
  return { ...DEFAULT_CONFIG };
20
23
  }
21
24
  try {
@@ -42,15 +45,21 @@ export function loadConfig(configPath) {
42
45
  }
43
46
  }
44
47
  /**
45
- * Search for config file in current directory and parent directories
48
+ * Get the list of paths to search for config file
46
49
  */
47
- function findConfigFile() {
48
- const searchPaths = [
50
+ function getSearchPaths() {
51
+ return [
49
52
  process.cwd(),
50
53
  path.join(process.cwd(), '..'),
51
54
  path.join(process.cwd(), '..', '..'),
52
55
  path.join(process.cwd(), '..', '..', '..'),
53
56
  ];
57
+ }
58
+ /**
59
+ * Search for config file in current directory and parent directories
60
+ */
61
+ function findConfigFile() {
62
+ const searchPaths = getSearchPaths();
54
63
  for (const searchPath of searchPaths) {
55
64
  const configPath = path.join(searchPath, CONFIG_FILENAME);
56
65
  if (fs.existsSync(configPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"config_loader.js","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config_loader.js","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,11 @@ export declare class HazoLogger {
27
27
  * Log an entry - called by PackageLogger
28
28
  */
29
29
  log(entry: LogEntry): void;
30
+ /**
31
+ * Log a client-side entry - called by API handler
32
+ * Used for logs sent from the browser
33
+ */
34
+ logClient(entry: Omit<LogEntry, 'executionId' | 'filename' | 'line'>): void;
30
35
  /**
31
36
  * Get current configuration
32
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hazo_logger.d.ts","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK1D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAMP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;WACW,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAO1D;;OAEG;WACW,KAAK,IAAI,IAAI;IAO3B;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKjC;;OAEG;IACI,SAAS,IAAI,aAAa;IAIjC;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B,OAAO,CAAC,mBAAmB;CAgB5B"}
1
+ {"version":3,"file":"hazo_logger.d.ts","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK1D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IAMP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;WACW,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAO1D;;OAEG;WACW,KAAK,IAAI,IAAI;IAO3B;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKjC;;;OAGG;IACI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI;IAYlF;;OAEG;IACI,SAAS,IAAI,aAAa;IAIjC;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B,OAAO,CAAC,mBAAmB;CAgB5B"}
@@ -53,6 +53,21 @@ export class HazoLogger {
53
53
  const { level, message, ...meta } = entry;
54
54
  this.winstonLogger.log(level, message, meta);
55
55
  }
56
+ /**
57
+ * Log a client-side entry - called by API handler
58
+ * Used for logs sent from the browser
59
+ */
60
+ logClient(entry) {
61
+ const fullEntry = {
62
+ ...entry,
63
+ executionId: this.executionId,
64
+ filename: 'client',
65
+ line: 0,
66
+ source: 'client',
67
+ };
68
+ const { level, message, ...meta } = fullEntry;
69
+ this.winstonLogger.log(level, message, meta);
70
+ }
56
71
  /**
57
72
  * Get current configuration
58
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hazo_logger.js","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hazo_logger.js","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@ export { HazoLogger } from './hazo_logger.js';
2
2
  export { PackageLogger, createLogger } from './package_logger.js';
3
3
  export { loadConfig } from './config_loader.js';
4
4
  export { readLogs, getAvailableLogDates, getUniquePackages } from './log-reader.js';
5
- export type { Logger, LogLevel, LogData, LogEntry, HazoLogConfig, PackageLoggerOptions, } from './types.js';
5
+ export type { Logger, LogLevel, LogData, LogEntry, LogSource, HazoLogConfig, PackageLoggerOptions, } from './types.js';
6
6
  export type { ReadLogsOptions, LogQueryResult } from './log-reader.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpF,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpF,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}