hazo_logs 1.0.1 → 1.0.3

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 +118 -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 +12 -4
package/README.md CHANGED
@@ -86,8 +86,91 @@ export default function LogsPage() {
86
86
  }
87
87
  ```
88
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
+
89
108
  Visit `/logs` in your app to view logs!
90
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
+
91
174
  ## Advanced Usage
92
175
 
93
176
  ### Session and Reference Tracking
@@ -325,6 +408,41 @@ Visualize logs grouped by package or session with hierarchical depth display.
325
408
 
326
409
  See the `test-app/` directory for a complete working example.
327
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
+
328
446
  ## Contributing
329
447
 
330
448
  Contributions are welcome! Please:
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"}
@@ -9,6 +9,10 @@ export type LogLevel = 'error' | 'warn' | 'info' | 'debug';
9
9
  * Additional data that can be attached to log entries
10
10
  */
11
11
  export type LogData = Record<string, unknown>;
12
+ /**
13
+ * Log source - where the log originated from
14
+ */
15
+ export type LogSource = 'server' | 'client';
12
16
  /**
13
17
  * Log entry structure written to JSON files
14
18
  */
@@ -24,6 +28,8 @@ export interface LogEntry {
24
28
  reference?: string;
25
29
  depth?: number;
26
30
  data?: LogData;
31
+ /** Source of the log entry (server or client) */
32
+ source?: LogSource;
27
33
  }
28
34
  /**
29
35
  * Logger interface - the public API for logging
@@ -1 +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"}
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,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5C;;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;IACf,iDAAiD;IACjD,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;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,61 @@
1
+ /**
2
+ * Tailwind CSS configuration helpers for hazo_logs
3
+ *
4
+ * Consumers using the hazo_logs UI components need to:
5
+ * 1. Add the content path to their tailwind.config.ts
6
+ * 2. Add the safelist classes to prevent purging of dynamic classes
7
+ *
8
+ * Usage in consumer's tailwind.config.ts:
9
+ *
10
+ * ```typescript
11
+ * import { tailwindSafelist, tailwindContentPath } from 'hazo_logs/tailwind';
12
+ *
13
+ * export default {
14
+ * content: [
15
+ * './src/**\/*.{js,ts,jsx,tsx}',
16
+ * tailwindContentPath,
17
+ * ],
18
+ * safelist: tailwindSafelist,
19
+ * // ... rest of config
20
+ * };
21
+ * ```
22
+ */
23
+ /**
24
+ * Content path for Tailwind to scan hazo_logs UI components
25
+ * Add this to your tailwind.config.ts content array
26
+ */
27
+ export declare const tailwindContentPath = "./node_modules/hazo_logs/dist/**/*.{js,jsx}";
28
+ /**
29
+ * Safelist of dynamic Tailwind classes used by hazo_logs UI components
30
+ * These classes are constructed dynamically and would otherwise be purged
31
+ */
32
+ export declare const tailwindSafelist: string[];
33
+ /**
34
+ * Tailwind preset for hazo_logs
35
+ * Alternative to manually adding safelist - use as a preset
36
+ *
37
+ * Usage:
38
+ * ```typescript
39
+ * import { hazoLogsPreset } from 'hazo_logs/tailwind';
40
+ *
41
+ * export default {
42
+ * presets: [hazoLogsPreset],
43
+ * content: [
44
+ * './src/**\/*.{js,ts,jsx,tsx}',
45
+ * './node_modules/hazo_logs/dist/**\/*.{js,jsx}',
46
+ * ],
47
+ * };
48
+ * ```
49
+ */
50
+ export declare const hazoLogsPreset: {
51
+ safelist: string[];
52
+ };
53
+ declare const _default: {
54
+ tailwindSafelist: string[];
55
+ tailwindContentPath: string;
56
+ hazoLogsPreset: {
57
+ safelist: string[];
58
+ };
59
+ };
60
+ export default _default;
61
+ //# sourceMappingURL=tailwind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind.d.ts","sourceRoot":"","sources":["../src/tailwind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,gDAAgD,CAAC;AAEjF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAuDpC,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc;;CAE1B,CAAC;;;;;;;;AAEF,wBAIE"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Tailwind CSS configuration helpers for hazo_logs
3
+ *
4
+ * Consumers using the hazo_logs UI components need to:
5
+ * 1. Add the content path to their tailwind.config.ts
6
+ * 2. Add the safelist classes to prevent purging of dynamic classes
7
+ *
8
+ * Usage in consumer's tailwind.config.ts:
9
+ *
10
+ * ```typescript
11
+ * import { tailwindSafelist, tailwindContentPath } from 'hazo_logs/tailwind';
12
+ *
13
+ * export default {
14
+ * content: [
15
+ * './src/**\/*.{js,ts,jsx,tsx}',
16
+ * tailwindContentPath,
17
+ * ],
18
+ * safelist: tailwindSafelist,
19
+ * // ... rest of config
20
+ * };
21
+ * ```
22
+ */
23
+ /**
24
+ * Content path for Tailwind to scan hazo_logs UI components
25
+ * Add this to your tailwind.config.ts content array
26
+ */
27
+ export const tailwindContentPath = './node_modules/hazo_logs/dist/**/*.{js,jsx}';
28
+ /**
29
+ * Safelist of dynamic Tailwind classes used by hazo_logs UI components
30
+ * These classes are constructed dynamically and would otherwise be purged
31
+ */
32
+ export const tailwindSafelist = [
33
+ // LogLevelBadge - level-specific colors
34
+ 'bg-red-100',
35
+ 'text-red-700',
36
+ 'border-red-200',
37
+ 'bg-yellow-100',
38
+ 'text-yellow-700',
39
+ 'border-yellow-200',
40
+ 'bg-blue-100',
41
+ 'text-blue-700',
42
+ 'border-blue-200',
43
+ 'bg-gray-100',
44
+ 'text-gray-600',
45
+ 'border-gray-200',
46
+ // LogTimeline - dot colors for log levels
47
+ 'bg-red-500',
48
+ 'bg-yellow-500',
49
+ 'bg-blue-500',
50
+ 'bg-gray-400',
51
+ // LogTimeline - client log ring indicator
52
+ 'ring-2',
53
+ 'ring-purple-400',
54
+ 'ring-offset-1',
55
+ // LogTable & LogTimeline - source badges (client/server)
56
+ 'bg-purple-100',
57
+ 'text-purple-800',
58
+ 'bg-purple-50',
59
+ 'bg-purple-50/50',
60
+ 'text-purple-700',
61
+ 'border-purple-200',
62
+ // LogTimeline - package grouping
63
+ 'bg-purple-500',
64
+ 'text-purple-600',
65
+ 'bg-purple-200',
66
+ // Context badges
67
+ 'bg-blue-50',
68
+ 'bg-green-50',
69
+ 'text-green-700',
70
+ 'border-green-200',
71
+ 'text-green-600',
72
+ 'text-blue-600',
73
+ // LogViewerPage - active filter badges
74
+ 'bg-blue-100',
75
+ 'text-blue-800',
76
+ // Tab navigation states
77
+ 'border-blue-500',
78
+ 'text-blue-600',
79
+ 'border-transparent',
80
+ ];
81
+ /**
82
+ * Tailwind preset for hazo_logs
83
+ * Alternative to manually adding safelist - use as a preset
84
+ *
85
+ * Usage:
86
+ * ```typescript
87
+ * import { hazoLogsPreset } from 'hazo_logs/tailwind';
88
+ *
89
+ * export default {
90
+ * presets: [hazoLogsPreset],
91
+ * content: [
92
+ * './src/**\/*.{js,ts,jsx,tsx}',
93
+ * './node_modules/hazo_logs/dist/**\/*.{js,jsx}',
94
+ * ],
95
+ * };
96
+ * ```
97
+ */
98
+ export const hazoLogsPreset = {
99
+ safelist: tailwindSafelist,
100
+ };
101
+ export default {
102
+ tailwindSafelist,
103
+ tailwindContentPath,
104
+ hazoLogsPreset,
105
+ };
106
+ //# sourceMappingURL=tailwind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../src/tailwind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,6CAA6C,CAAC;AAEjF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,wCAAwC;IACxC,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,mBAAmB;IACnB,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,eAAe;IACf,iBAAiB;IAEjB,0CAA0C;IAC1C,YAAY;IACZ,eAAe;IACf,aAAa;IACb,aAAa;IAEb,0CAA0C;IAC1C,QAAQ;IACR,iBAAiB;IACjB,eAAe;IAEf,yDAAyD;IACzD,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IAEnB,iCAAiC;IACjC,eAAe;IACf,iBAAiB;IACjB,eAAe;IAEf,iBAAiB;IACjB,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IAEf,uCAAuC;IACvC,aAAa;IACb,eAAe;IAEf,wBAAwB;IACxB,iBAAiB;IACjB,eAAe;IACf,oBAAoB;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,gBAAgB;CAC3B,CAAC;AAEF,eAAe;IACb,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;CACf,CAAC"}
@@ -6,7 +6,7 @@ import type { LogApiConfig, LogApiHandler } from '../types.js';
6
6
  * Create a Next.js API route handler for log queries
7
7
  *
8
8
  * @param config - Optional configuration
9
- * @returns Handler object with GET method
9
+ * @returns Handler object with GET and POST methods
10
10
  *
11
11
  * @example
12
12
  * ```typescript
@@ -14,7 +14,7 @@ import type { LogApiConfig, LogApiHandler } from '../types.js';
14
14
  * import { createLogApiHandler } from 'hazo_logs';
15
15
  *
16
16
  * const handler = createLogApiHandler();
17
- * export const { GET } = handler;
17
+ * export const { GET, POST } = handler;
18
18
  * ```
19
19
  */
20
20
  export declare function createLogApiHandler(config?: LogApiConfig): LogApiHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"log-api-handler.d.ts","sourceRoot":"","sources":["../../../src/ui/api/log-api-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAY/D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CAqCxE"}
1
+ {"version":3,"file":"log-api-handler.d.ts","sourceRoot":"","sources":["../../../src/ui/api/log-api-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA4B/D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CA2FxE"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from '../../lib/log-reader.js';
5
5
  import { loadConfig } from '../../lib/config_loader.js';
6
+ import { HazoLogger } from '../../lib/hazo_logger.js';
6
7
  /**
7
8
  * Helper to create JSON responses (compatible with Next.js Response)
8
9
  */
@@ -16,7 +17,7 @@ function jsonResponse(data, status = 200) {
16
17
  * Create a Next.js API route handler for log queries
17
18
  *
18
19
  * @param config - Optional configuration
19
- * @returns Handler object with GET method
20
+ * @returns Handler object with GET and POST methods
20
21
  *
21
22
  * @example
22
23
  * ```typescript
@@ -24,7 +25,7 @@ function jsonResponse(data, status = 200) {
24
25
  * import { createLogApiHandler } from 'hazo_logs';
25
26
  *
26
27
  * const handler = createLogApiHandler();
27
- * export const { GET } = handler;
28
+ * export const { GET, POST } = handler;
28
29
  * ```
29
30
  */
30
31
  export function createLogApiHandler(config) {
@@ -60,6 +61,52 @@ export function createLogApiHandler(config) {
60
61
  return jsonResponse({ error: 'Internal Server Error', message: String(error) }, 500);
61
62
  }
62
63
  },
64
+ POST: async (request) => {
65
+ const hazoConfig = loadConfig();
66
+ // Check if log viewer is enabled (also controls client logging)
67
+ if (!hazoConfig.enable_log_viewer) {
68
+ return jsonResponse({ error: 'Log viewer is disabled' }, 403);
69
+ }
70
+ try {
71
+ const body = await request.json();
72
+ if (!body.logs || !Array.isArray(body.logs)) {
73
+ return jsonResponse({ error: 'Invalid request: logs array required' }, 400);
74
+ }
75
+ const logger = HazoLogger.getInstance();
76
+ let loggedCount = 0;
77
+ for (const log of body.logs) {
78
+ // Validate required fields
79
+ if (!log.level || !log.message || !log.package) {
80
+ continue;
81
+ }
82
+ // Validate log level
83
+ if (!['error', 'warn', 'info', 'debug'].includes(log.level)) {
84
+ continue;
85
+ }
86
+ // Log the client entry
87
+ logger.logClient({
88
+ timestamp: log.timestamp || new Date().toISOString(),
89
+ level: log.level,
90
+ package: log.package,
91
+ message: log.message,
92
+ sessionId: log.sessionId,
93
+ reference: log.reference,
94
+ data: {
95
+ ...log.data,
96
+ userAgent: log.userAgent,
97
+ url: log.url,
98
+ },
99
+ source: 'client',
100
+ });
101
+ loggedCount++;
102
+ }
103
+ return jsonResponse({ success: true, logged: loggedCount });
104
+ }
105
+ catch (error) {
106
+ console.error('[HazoLog] API error:', error);
107
+ return jsonResponse({ error: 'Internal Server Error', message: String(error) }, 500);
108
+ }
109
+ },
63
110
  };
64
111
  }
65
112
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"log-api-handler.js","sourceRoot":"","sources":["../../../src/ui/api/log-api-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD;;GAEG;AACH,SAAS,YAAY,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG;IAC/C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAqB;IACvD,MAAM,YAAY,GAAG,MAAM,EAAE,YAAY,CAAC;IAE1C,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,OAAgB,EAAqB,EAAE;YACjD,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;YAEhC,iCAAiC;YACjC,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBAClC,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,2BAA2B;gBAC3B,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,OAAO;wBACV,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC;oBACtC,KAAK,UAAU;wBACb,OAAO,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC;oBAChF,KAAK,cAAc;wBACjB,OAAO,qBAAqB,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC;oBACpF,KAAK,YAAY;wBACf,OAAO,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC;oBAClF,KAAK,YAAY;wBACf,OAAO,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC;oBAClF;wBACE,OAAO,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,YAAgC,EAChC,YAA6B;IAE7B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IACnD,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAO3B,CAAC;IACd,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAA+B,CAAC;IAC9E,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpE,uCAAuC;IACvC,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAgB;QACvD,CAAC,CAAC,SAAS,CAAC;IAEd,yCAAyC;IACzC,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACzC,CAAC,CAAC,SAAS,CAAC;IAEd,8CAA8C;IAC9C,MAAM,WAAW,GAAG,gBAAgB;QAClC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7C,CAAC,CAAC,SAAS,CAAC;IAEd,4CAA4C;IAC5C,MAAM,SAAS,GAAG,cAAc;QAC9B,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAC;IAEd,2CAA2C;IAC3C,MAAM,SAAS,GAAG,cAAc;QAC9B,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;QAC5B,YAAY;QACZ,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,aAAa;QACtB,WAAW;QACX,SAAS;QACT,SAAS;QACT,MAAM;QACN,MAAM;QACN,SAAS;QACT,IAAI;QACJ,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,YAAgC;IAC5D,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACvD,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAC9B,YAAgC,EAChC,IAAwB;IAExB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7D,OAAO,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,YAAgC,EAChC,IAAwB;IAExB,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACrE,OAAO,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,YAAgC,EAChC,IAAwB;IAExB,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACjE,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,YAAgC,EAChC,IAAwB;IAExB,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACjE,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"log-api-handler.js","sourceRoot":"","sources":["../../../src/ui/api/log-api-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Client-side logger for hazo_logs
3
+ *
4
+ * Sends logs from the browser to the server API to be stored
5
+ * alongside server-side logs. All entries are marked with source: 'client'.
6
+ */
7
+ export type ClientLogLevel = 'error' | 'warn' | 'info' | 'debug';
8
+ export interface ClientLoggerConfig {
9
+ /** API endpoint to post logs to (default: '/api/logs') */
10
+ apiBasePath?: string;
11
+ /** Package name to tag logs with */
12
+ packageName?: string;
13
+ /** Session ID for tracking user sessions */
14
+ sessionId?: string;
15
+ /** Reference ID for tracking specific flows */
16
+ reference?: string;
17
+ /** Minimum log level to send (default: 'debug') */
18
+ minLevel?: ClientLogLevel;
19
+ /** Whether to also log to browser console (default: true) */
20
+ consoleOutput?: boolean;
21
+ /** Batch logs and send periodically (default: false) */
22
+ batchMode?: boolean;
23
+ /** Batch interval in ms (default: 5000) */
24
+ batchInterval?: number;
25
+ }
26
+ /**
27
+ * Create a client-side logger instance
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * 'use client';
32
+ * import { createClientLogger } from 'hazo_logs/ui';
33
+ *
34
+ * const logger = createClientLogger({
35
+ * packageName: 'my-app',
36
+ * apiBasePath: '/api/hazo_logs/logs',
37
+ * });
38
+ *
39
+ * logger.info('User clicked button', { buttonId: 'submit' });
40
+ * logger.error('Failed to load data', { error: err.message });
41
+ * ```
42
+ */
43
+ export declare function createClientLogger(config?: ClientLoggerConfig): {
44
+ error: (message: string, data?: Record<string, unknown>) => Promise<void>;
45
+ warn: (message: string, data?: Record<string, unknown>) => Promise<void>;
46
+ info: (message: string, data?: Record<string, unknown>) => Promise<void>;
47
+ debug: (message: string, data?: Record<string, unknown>) => Promise<void>;
48
+ /** Manually flush batched logs */
49
+ flush: () => Promise<void>;
50
+ /** Create a child logger with additional context */
51
+ child: (childConfig: Partial<ClientLoggerConfig>) => /*elided*/ any;
52
+ };
53
+ export type ClientLogger = ReturnType<typeof createClientLogger>;
54
+ //# sourceMappingURL=client-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-logger.d.ts","sourceRoot":"","sources":["../../src/ui/client-logger.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAsBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,kBAAuB;qBAsG7C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBACvC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBACtC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qBACrC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEvD,kCAAkC;iBAvEP,OAAO,CAAC,IAAI,CAAC;IA0ExC,oDAAoD;yBAC/B,OAAO,CAAC,kBAAkB,CAAC;EAanD;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,126 @@
1
+ 'use client';
2
+ const LOG_LEVEL_PRIORITY = {
3
+ error: 0,
4
+ warn: 1,
5
+ info: 2,
6
+ debug: 3,
7
+ };
8
+ /**
9
+ * Create a client-side logger instance
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * 'use client';
14
+ * import { createClientLogger } from 'hazo_logs/ui';
15
+ *
16
+ * const logger = createClientLogger({
17
+ * packageName: 'my-app',
18
+ * apiBasePath: '/api/hazo_logs/logs',
19
+ * });
20
+ *
21
+ * logger.info('User clicked button', { buttonId: 'submit' });
22
+ * logger.error('Failed to load data', { error: err.message });
23
+ * ```
24
+ */
25
+ export function createClientLogger(config = {}) {
26
+ const { apiBasePath = '/api/logs', packageName = 'client', sessionId, reference, minLevel = 'debug', consoleOutput = true, batchMode = false, batchInterval = 5000, } = config;
27
+ let logBatch = [];
28
+ let batchTimer = null;
29
+ const shouldLog = (level) => {
30
+ return LOG_LEVEL_PRIORITY[level] <= LOG_LEVEL_PRIORITY[minLevel];
31
+ };
32
+ const sendLogs = async (entries) => {
33
+ if (entries.length === 0)
34
+ return;
35
+ try {
36
+ await fetch(apiBasePath, {
37
+ method: 'POST',
38
+ headers: { 'Content-Type': 'application/json' },
39
+ body: JSON.stringify({ logs: entries }),
40
+ });
41
+ }
42
+ catch (err) {
43
+ // Silently fail - don't want logging errors to break the app
44
+ if (consoleOutput) {
45
+ console.error('[HazoLog Client] Failed to send logs:', err);
46
+ }
47
+ }
48
+ };
49
+ const flushBatch = async () => {
50
+ if (logBatch.length > 0) {
51
+ const toSend = [...logBatch];
52
+ logBatch = [];
53
+ await sendLogs(toSend);
54
+ }
55
+ };
56
+ const startBatchTimer = () => {
57
+ if (batchMode && !batchTimer) {
58
+ batchTimer = setTimeout(async () => {
59
+ await flushBatch();
60
+ batchTimer = null;
61
+ if (logBatch.length > 0) {
62
+ startBatchTimer();
63
+ }
64
+ }, batchInterval);
65
+ }
66
+ };
67
+ const log = async (level, message, data) => {
68
+ if (!shouldLog(level))
69
+ return;
70
+ // Console output
71
+ if (consoleOutput) {
72
+ const consoleMethod = level === 'error' ? 'error' : level === 'warn' ? 'warn' : 'log';
73
+ console[consoleMethod](`[${packageName}] ${message}`, data || '');
74
+ }
75
+ const entry = {
76
+ level,
77
+ message,
78
+ package: packageName,
79
+ timestamp: new Date().toISOString(),
80
+ source: 'client',
81
+ sessionId,
82
+ reference,
83
+ data,
84
+ userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : undefined,
85
+ url: typeof window !== 'undefined' ? window.location.href : undefined,
86
+ };
87
+ if (batchMode) {
88
+ logBatch.push(entry);
89
+ startBatchTimer();
90
+ }
91
+ else {
92
+ await sendLogs([entry]);
93
+ }
94
+ };
95
+ // Setup flush on page unload for batched logs
96
+ if (typeof window !== 'undefined' && batchMode) {
97
+ window.addEventListener('beforeunload', () => {
98
+ if (logBatch.length > 0) {
99
+ // Use sendBeacon for reliable delivery on page unload
100
+ const data = JSON.stringify({ logs: logBatch });
101
+ navigator.sendBeacon(apiBasePath, data);
102
+ }
103
+ });
104
+ }
105
+ return {
106
+ error: (message, data) => log('error', message, data),
107
+ warn: (message, data) => log('warn', message, data),
108
+ info: (message, data) => log('info', message, data),
109
+ debug: (message, data) => log('debug', message, data),
110
+ /** Manually flush batched logs */
111
+ flush: flushBatch,
112
+ /** Create a child logger with additional context */
113
+ child: (childConfig) => createClientLogger({
114
+ apiBasePath,
115
+ packageName,
116
+ sessionId,
117
+ reference,
118
+ minLevel,
119
+ consoleOutput,
120
+ batchMode,
121
+ batchInterval,
122
+ ...childConfig,
123
+ }),
124
+ };
125
+ }
126
+ //# sourceMappingURL=client-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-logger.js","sourceRoot":"","sources":["../../src/ui/client-logger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LogTable.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogTable.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAiB,EAAE,EAAE,aAAa,2CAoJlE"}
1
+ {"version":3,"file":"LogTable.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogTable.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAiB,EAAE,EAAE,aAAa,2CAwLlE"}
@@ -28,6 +28,6 @@ export function LogTable({ logs, isLoading = false }) {
28
28
  if (logs.length === 0) {
29
29
  return (_jsx("div", { className: "text-center py-12 text-gray-500", children: "No logs found for the selected filters." }));
30
30
  }
31
- return (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "min-w-full divide-y divide-gray-200", children: [_jsx("thead", { className: "bg-gray-50", children: _jsxs("tr", { children: [_jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Context" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Timestamp" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Level" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Package" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Message" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Location" })] }) }), _jsx("tbody", { className: "bg-white divide-y divide-gray-200", children: logs.map((log, index) => (_jsxs(React.Fragment, { children: [_jsxs("tr", { className: `hover:bg-gray-50 ${hasExpandableContent(log) ? 'cursor-pointer' : ''} ${expandedRow === index ? 'bg-gray-50' : ''}`, onClick: () => hasExpandableContent(log) && toggleRow(index), children: [_jsxs("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-500 font-mono", children: [_jsx("span", { title: log.executionId, children: shortenId(log.executionId) }), log.sessionId && (_jsxs("span", { className: "ml-2 text-blue-600", title: log.sessionId, children: ["S:", shortenId(log.sessionId)] })), log.reference && (_jsxs("span", { className: "ml-2 text-green-600", title: log.reference, children: ["R:", log.reference] }))] }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-600", children: formatTimestamp(log.timestamp) }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap", children: _jsx(LogLevelBadge, { level: log.level }) }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900", children: log.package }), _jsxs("td", { className: "px-4 py-3 text-sm text-gray-700 max-w-md truncate", children: [log.message, hasExpandableContent(log) && (_jsx("span", { className: "ml-2 text-gray-400 text-xs", children: expandedRow === index ? '▼' : '▶' }))] }), _jsxs("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-500 font-mono", children: [log.filename, ":", log.line] })] }), expandedRow === index && hasExpandableContent(log) && (_jsx("tr", { children: _jsx("td", { colSpan: 6, className: "px-4 py-3 bg-gray-50", children: _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex flex-wrap gap-4 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Execution ID:" }), ' ', _jsx("span", { className: "font-mono text-gray-700", children: log.executionId })] }), log.sessionId && (_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Session ID:" }), ' ', _jsx("span", { className: "font-mono text-blue-700", children: log.sessionId })] })), log.reference && (_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Reference:" }), ' ', _jsx("span", { className: "font-mono text-green-700", children: log.reference })] }))] }), log.data && (_jsxs("div", { children: [_jsx("div", { className: "text-xs text-gray-500 mb-1", children: "Data:" }), _jsx("pre", { className: "text-xs text-gray-700 bg-gray-100 p-3 rounded overflow-x-auto", children: JSON.stringify(log.data, null, 2) })] }))] }) }) }))] }, index))) })] }) }));
31
+ return (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "min-w-full divide-y divide-gray-200", children: [_jsx("thead", { className: "bg-gray-50", children: _jsxs("tr", { children: [_jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Source" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Context" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Timestamp" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Level" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Package" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Message" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Location" })] }) }), _jsx("tbody", { className: "bg-white divide-y divide-gray-200", children: logs.map((log, index) => (_jsxs(React.Fragment, { children: [_jsxs("tr", { className: `hover:bg-gray-50 ${hasExpandableContent(log) ? 'cursor-pointer' : ''} ${expandedRow === index ? 'bg-gray-50' : ''} ${log.source === 'client' ? 'bg-purple-50/50' : ''}`, onClick: () => hasExpandableContent(log) && toggleRow(index), children: [_jsx("td", { className: "px-4 py-3 whitespace-nowrap", children: log.source === 'client' ? (_jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-purple-100 text-purple-800", children: "Client" })) : (_jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-gray-100 text-gray-700", children: "Server" })) }), _jsxs("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-500 font-mono", children: [_jsx("span", { title: log.executionId, children: shortenId(log.executionId) }), log.sessionId && (_jsxs("span", { className: "ml-2 text-blue-600", title: log.sessionId, children: ["S:", shortenId(log.sessionId)] })), log.reference && (_jsxs("span", { className: "ml-2 text-green-600", title: log.reference, children: ["R:", log.reference] }))] }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-600", children: formatTimestamp(log.timestamp) }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap", children: _jsx(LogLevelBadge, { level: log.level }) }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900", children: log.package }), _jsxs("td", { className: "px-4 py-3 text-sm text-gray-700 max-w-md truncate", children: [log.message, hasExpandableContent(log) && (_jsx("span", { className: "ml-2 text-gray-400 text-xs", children: expandedRow === index ? '▼' : '▶' }))] }), _jsxs("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-500 font-mono", children: [log.filename, ":", log.line] })] }), expandedRow === index && hasExpandableContent(log) && (_jsx("tr", { children: _jsx("td", { colSpan: 7, className: "px-4 py-3 bg-gray-50", children: _jsxs("div", { className: "space-y-2", children: [log.source === 'client' && (_jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded font-medium bg-purple-100 text-purple-800", children: "Client-side Log" }), typeof log.data?.url === 'string' && (_jsxs("span", { className: "text-gray-500", children: ["from: ", _jsx("span", { className: "font-mono text-purple-700", children: log.data.url })] }))] })), _jsxs("div", { className: "flex flex-wrap gap-4 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Execution ID:" }), ' ', _jsx("span", { className: "font-mono text-gray-700", children: log.executionId })] }), log.sessionId && (_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Session ID:" }), ' ', _jsx("span", { className: "font-mono text-blue-700", children: log.sessionId })] })), log.reference && (_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Reference:" }), ' ', _jsx("span", { className: "font-mono text-green-700", children: log.reference })] }))] }), log.source === 'client' && typeof log.data?.userAgent === 'string' && (_jsxs("div", { className: "text-xs", children: [_jsx("span", { className: "text-gray-500", children: "User Agent:" }), ' ', _jsx("span", { className: "font-mono text-gray-600", children: log.data.userAgent })] })), log.data && (_jsxs("div", { children: [_jsx("div", { className: "text-xs text-gray-500 mb-1", children: "Data:" }), _jsx("pre", { className: "text-xs text-gray-700 bg-gray-100 p-3 rounded overflow-x-auto", children: JSON.stringify(log.data, null, 2) })] }))] }) }) }))] }, index))) })] }) }));
32
32
  }
33
33
  //# sourceMappingURL=LogTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogTable.js","sourceRoot":"","sources":["../../../src/ui/components/LogTable.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAiB;IACjE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEpE,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,EAAsB,EAAE,EAAE;QAC3C,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;QAClC,cAAc,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,GAAoB,EAAE,EAAE;QACpD,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC;IACpD,CAAC,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,eAAK,SAAS,EAAC,wCAAwC,aACrD,cAAK,SAAS,EAAC,8DAA8D,GAAO,EACpF,eAAM,SAAS,EAAC,oBAAoB,gCAAuB,IACvD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CACL,cAAK,SAAS,EAAC,iCAAiC,wDAE1C,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,iBAAiB,YAC9B,iBAAO,SAAS,EAAC,qCAAqC,aACpD,gBAAO,SAAS,EAAC,YAAY,YAC3B,yBACE,aAAI,SAAS,EAAC,gFAAgF,wBAEzF,EACL,aAAI,SAAS,EAAC,gFAAgF,0BAEzF,EACL,aAAI,SAAS,EAAC,gFAAgF,sBAEzF,EACL,aAAI,SAAS,EAAC,gFAAgF,wBAEzF,EACL,aAAI,SAAS,EAAC,gFAAgF,wBAEzF,EACL,aAAI,SAAS,EAAC,gFAAgF,yBAEzF,IACF,GACC,EACR,gBAAO,SAAS,EAAC,mCAAmC,YACjD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACxB,MAAC,KAAK,CAAC,QAAQ,eACb,cACE,SAAS,EAAE,oBACT,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EACjD,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,aAE5D,cAAI,SAAS,EAAC,6DAA6D,aACzE,eAAM,KAAK,EAAE,GAAG,CAAC,WAAW,YAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,GAAQ,EAChE,GAAG,CAAC,SAAS,IAAI,CAChB,gBAAM,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE,GAAG,CAAC,SAAS,mBACpD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IACtB,CACR,EACA,GAAG,CAAC,SAAS,IAAI,CAChB,gBAAM,SAAS,EAAC,qBAAqB,EAAC,KAAK,EAAE,GAAG,CAAC,SAAS,mBACrD,GAAG,CAAC,SAAS,IACX,CACR,IACE,EACL,aAAI,SAAS,EAAC,mDAAmD,YAC9D,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,GAC5B,EACL,aAAI,SAAS,EAAC,6BAA6B,YACzC,KAAC,aAAa,IAAC,KAAK,EAAE,GAAG,CAAC,KAAK,GAAI,GAChC,EACL,aAAI,SAAS,EAAC,+DAA+D,YAC1E,GAAG,CAAC,OAAO,GACT,EACL,cAAI,SAAS,EAAC,mDAAmD,aAC9D,GAAG,CAAC,OAAO,EACX,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAC5B,eAAM,SAAS,EAAC,4BAA4B,YACzC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAC7B,CACR,IACE,EACL,cAAI,SAAS,EAAC,6DAA6D,aACxE,GAAG,CAAC,QAAQ,OAAG,GAAG,CAAC,IAAI,IACrB,IACF,EACJ,WAAW,KAAK,KAAK,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CACrD,uBACE,aAAI,OAAO,EAAE,CAAC,EAAE,SAAS,EAAC,sBAAsB,YAC9C,eAAK,SAAS,EAAC,WAAW,aAExB,eAAK,SAAS,EAAC,8BAA8B,aAC3C,0BACE,eAAM,SAAS,EAAC,eAAe,8BAAqB,EAAC,GAAG,EACxD,eAAM,SAAS,EAAC,yBAAyB,YAAE,GAAG,CAAC,WAAW,GAAQ,IAC9D,EACL,GAAG,CAAC,SAAS,IAAI,CAChB,0BACE,eAAM,SAAS,EAAC,eAAe,4BAAmB,EAAC,GAAG,EACtD,eAAM,SAAS,EAAC,yBAAyB,YAAE,GAAG,CAAC,SAAS,GAAQ,IAC5D,CACP,EACA,GAAG,CAAC,SAAS,IAAI,CAChB,0BACE,eAAM,SAAS,EAAC,eAAe,2BAAkB,EAAC,GAAG,EACrD,eAAM,SAAS,EAAC,0BAA0B,YAAE,GAAG,CAAC,SAAS,GAAQ,IAC7D,CACP,IACG,EAEL,GAAG,CAAC,IAAI,IAAI,CACX,0BACE,cAAK,SAAS,EAAC,4BAA4B,sBAAY,EACvD,cAAK,SAAS,EAAC,+DAA+D,YAC3E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAC9B,IACF,CACP,IACG,GACH,GACF,CACN,KA5EkB,KAAK,CA6ET,CAClB,CAAC,GACI,IACF,GACJ,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"LogTable.js","sourceRoot":"","sources":["../../../src/ui/components/LogTable.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LogTimeline.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogTimeline.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQrE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,iBAAsB,EACtB,eAAe,EACf,eAAe,EACf,cAAqB,EACrB,oBAA2B,GAC5B,EAAE,gBAAgB,2CA4PlB"}
1
+ {"version":3,"file":"LogTimeline.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogTimeline.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQrE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,iBAAsB,EACtB,eAAe,EACf,eAAe,EACf,cAAqB,EACrB,oBAA2B,GAC5B,EAAE,gBAAgB,2CAqRlB"}
@@ -79,6 +79,14 @@ export function LogTimeline({ logs, isLoading, availableSessions = [], selectedS
79
79
  return 'bg-gray-400';
80
80
  }
81
81
  };
82
+ const getDotStyle = (log) => {
83
+ const baseColor = getDotColor(log.level);
84
+ // Client logs get a ring to distinguish them
85
+ if (log.source === 'client') {
86
+ return `${baseColor} ring-2 ring-purple-400 ring-offset-1`;
87
+ }
88
+ return baseColor;
89
+ };
82
90
  if (isLoading) {
83
91
  return (_jsxs("div", { className: "flex items-center justify-center py-12", children: [_jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" }), _jsx("span", { className: "ml-3 text-gray-600", children: "Loading logs..." })] }));
84
92
  }
@@ -88,7 +96,7 @@ export function LogTimeline({ logs, isLoading, availableSessions = [], selectedS
88
96
  const isCollapsed = collapsedPackages.has(group.packageName);
89
97
  return (_jsxs("div", { className: "mb-4", children: [groupByPackage && group.packageName && (_jsxs("div", { className: "relative flex items-center mb-4 ml-8 cursor-pointer group", onClick: () => togglePackageCollapse(group.packageName), children: [_jsx("div", { className: "absolute -left-8 w-4 h-4 rounded-sm bg-purple-500 border-2 border-white shadow" }), _jsxs("div", { className: "flex items-center gap-2 ml-4 px-3 py-2 bg-purple-50 rounded-lg border border-purple-200 hover:bg-purple-100 transition-colors", children: [_jsx("svg", { className: `w-4 h-4 text-purple-600 transition-transform ${isCollapsed ? '' : 'rotate-90'}`, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) }), _jsx("span", { className: "text-sm font-semibold text-purple-800", children: group.packageName }), _jsxs("span", { className: "text-xs text-purple-600 bg-purple-200 px-2 py-0.5 rounded-full", children: [group.logs.length, " log", group.logs.length !== 1 ? 's' : ''] })] })] })), !isCollapsed && group.logs.map((log, logIndex) => {
90
98
  const indentation = getDepthIndentation(log.depth);
91
- return (_jsxs("div", { className: "relative flex items-start mb-4 ml-8", style: { paddingLeft: indentation }, children: [_jsx("div", { className: `absolute w-4 h-4 rounded-full border-2 border-white shadow ${getDotColor(log.level)}`, style: { left: indentation - 32 } }), showDepthIndentation && log.depth && log.depth > 1 && (_jsx("div", { className: "absolute top-0 h-full w-0.5 bg-gray-300", style: { left: indentation - 16 } })), _jsxs("div", { className: "flex-1 bg-white rounded-lg border p-4 ml-4 shadow-sm hover:shadow-md transition-shadow", children: [_jsxs("div", { className: "flex items-center justify-between mb-2 flex-wrap gap-2", children: [_jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [_jsx(LogLevelBadge, { level: log.level }), !groupByPackage && (_jsx("span", { className: "text-sm font-medium text-gray-900", children: log.package })), showDepthIndentation && log.depth && log.depth > 1 && (_jsxs("span", { className: "text-xs bg-gray-100 text-gray-600 px-1.5 py-0.5 rounded", children: ["depth: ", log.depth] }))] }), _jsxs("div", { className: "text-right", children: [_jsx("span", { className: "text-xs text-gray-500", children: formatTime(log.timestamp) }), _jsx("span", { className: "text-xs text-gray-400 ml-2", children: formatDate(log.timestamp) })] })] }), _jsx("p", { className: "text-sm text-gray-700 mb-2", children: log.message }), _jsxs("div", { className: "flex flex-wrap gap-2 text-xs", children: [log.sessionId && !selectedSession && (_jsxs("span", { className: "bg-blue-50 text-blue-700 px-2 py-0.5 rounded border border-blue-200", children: ["Session: ", log.sessionId] })), log.reference && (_jsxs("span", { className: "bg-green-50 text-green-700 px-2 py-0.5 rounded border border-green-200", children: ["Ref: ", log.reference] })), _jsxs("span", { className: "bg-gray-50 text-gray-600 px-2 py-0.5 rounded border border-gray-200", children: [log.filename, ":", log.line] })] }), log.data && (_jsxs("details", { className: "mt-3", children: [_jsx("summary", { className: "text-xs text-blue-600 cursor-pointer hover:text-blue-800", children: "View data" }), _jsx("pre", { className: "mt-2 text-xs bg-gray-50 p-3 rounded overflow-x-auto border", children: JSON.stringify(log.data, null, 2) })] }))] })] }, `${group.packageName}-${logIndex}`));
99
+ return (_jsxs("div", { className: "relative flex items-start mb-4 ml-8", style: { paddingLeft: indentation }, children: [_jsx("div", { className: `absolute w-4 h-4 rounded-full border-2 border-white shadow ${getDotStyle(log)}`, style: { left: indentation - 32 } }), showDepthIndentation && log.depth && log.depth > 1 && (_jsx("div", { className: "absolute top-0 h-full w-0.5 bg-gray-300", style: { left: indentation - 16 } })), _jsxs("div", { className: "flex-1 bg-white rounded-lg border p-4 ml-4 shadow-sm hover:shadow-md transition-shadow", children: [_jsxs("div", { className: "flex items-center justify-between mb-2 flex-wrap gap-2", children: [_jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [log.source === 'client' ? (_jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-purple-100 text-purple-800", children: "Client" })) : (_jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-gray-100 text-gray-700", children: "Server" })), _jsx(LogLevelBadge, { level: log.level }), !groupByPackage && (_jsx("span", { className: "text-sm font-medium text-gray-900", children: log.package })), showDepthIndentation && log.depth && log.depth > 1 && (_jsxs("span", { className: "text-xs bg-gray-100 text-gray-600 px-1.5 py-0.5 rounded", children: ["depth: ", log.depth] }))] }), _jsxs("div", { className: "text-right", children: [_jsx("span", { className: "text-xs text-gray-500", children: formatTime(log.timestamp) }), _jsx("span", { className: "text-xs text-gray-400 ml-2", children: formatDate(log.timestamp) })] })] }), _jsx("p", { className: "text-sm text-gray-700 mb-2", children: log.message }), _jsxs("div", { className: "flex flex-wrap gap-2 text-xs", children: [log.sessionId && !selectedSession && (_jsxs("span", { className: "bg-blue-50 text-blue-700 px-2 py-0.5 rounded border border-blue-200", children: ["Session: ", log.sessionId] })), log.reference && (_jsxs("span", { className: "bg-green-50 text-green-700 px-2 py-0.5 rounded border border-green-200", children: ["Ref: ", log.reference] })), log.source === 'client' && typeof log.data?.url === 'string' && (_jsxs("span", { className: "bg-purple-50 text-purple-700 px-2 py-0.5 rounded border border-purple-200 max-w-xs truncate", children: ["URL: ", log.data.url] })), _jsxs("span", { className: "bg-gray-50 text-gray-600 px-2 py-0.5 rounded border border-gray-200", children: [log.filename, ":", log.line] })] }), log.data && (_jsxs("details", { className: "mt-3", children: [_jsx("summary", { className: "text-xs text-blue-600 cursor-pointer hover:text-blue-800", children: "View data" }), _jsx("pre", { className: "mt-2 text-xs bg-gray-50 p-3 rounded overflow-x-auto border", children: JSON.stringify(log.data, null, 2) })] }))] })] }, `${group.packageName}-${logIndex}`));
92
100
  })] }, group.packageName || groupIndex));
93
101
  })] }))] }));
94
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LogTimeline.js","sourceRoot":"","sources":["../../../src/ui/components/LogTimeline.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,iBAAiB,GAAG,EAAE,EACtB,eAAe,EACf,eAAe,EACf,cAAc,GAAG,IAAI,EACrB,oBAAoB,GAAG,IAAI,GACV;IACjB,+CAA+C;IAC/C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAEnF,6BAA6B;IAC7B,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE;QACvC,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,eAAe,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAE5B,gEAAgE;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAC5E,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,8BAA8B;IAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAmB,EAAE;QACjD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QAEpD,qCAAqC;QACrC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,WAAW;YACX,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IAEjC,MAAM,qBAAqB,GAAG,CAAC,WAAmB,EAAE,EAAE;QACpD,oBAAoB,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,EAAE;QAC7C,IAAI,CAAC,oBAAoB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B;IAChE,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE;QACvC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE;QACvC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;QACpC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,OAAO;gBACV,OAAO,YAAY,CAAC;YACtB,KAAK,MAAM;gBACT,OAAO,eAAe,CAAC;YACzB,KAAK,MAAM;gBACT,OAAO,aAAa,CAAC;YACvB,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,aAAa,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,eAAK,SAAS,EAAC,wCAAwC,aACrD,cAAK,SAAS,EAAC,8DAA8D,GAAO,EACpF,eAAM,SAAS,EAAC,oBAAoB,gCAAuB,IACvD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAE5B,eAAK,SAAS,EAAC,iEAAiE,aAC9E,eAAK,SAAS,EAAC,yBAAyB,aACtC,gBAAO,OAAO,EAAC,yBAAyB,EAAC,SAAS,EAAC,mCAAmC,yBAE9E,EACR,kBACE,EAAE,EAAC,yBAAyB,EAC5B,KAAK,EAAE,eAAe,IAAI,EAAE,EAC5B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,EAC1D,SAAS,EAAC,+IAA+I,aAEzJ,iBAAQ,KAAK,EAAC,EAAE,6BAAsB,EACrC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CACpC,iBAAwB,KAAK,EAAE,SAAS,YACrC,SAAS,IADC,SAAS,CAEb,CACV,CAAC,IACK,IACL,EAEL,eAAe,IAAI,CAClB,gBAAM,SAAS,EAAC,uBAAuB,yBAC5B,mBAAmB,CAAC,MAAM,UAAM,mBAAmB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yBAC/E,CACR,IACG,EAGL,mBAAmB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAClC,cAAK,SAAS,EAAC,iCAAiC,YAC7C,eAAe;oBACd,CAAC,CAAC,8BAA8B,eAAe,EAAE;oBACjD,CAAC,CAAC,yCAAyC,GACzC,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,oBAAoB,aAEjC,cAAK,SAAS,EAAC,kDAAkD,GAAG,EAEnE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;wBACvC,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;wBAE7D,OAAO,CACL,eAA2C,SAAS,EAAC,MAAM,aAExD,cAAc,IAAI,KAAK,CAAC,WAAW,IAAI,CACtC,eACE,SAAS,EAAC,2DAA2D,EACrE,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,WAAW,CAAC,aAGvD,cAAK,SAAS,EAAC,gFAAgF,GAAG,EAElG,eAAK,SAAS,EAAC,+HAA+H,aAC5I,cACE,SAAS,EAAE,gDAAgD,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAC3F,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,YAEnB,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAC,cAAc,GAAG,GAClF,EACN,eAAM,SAAS,EAAC,uCAAuC,YACpD,KAAK,CAAC,WAAW,GACb,EACP,gBAAM,SAAS,EAAC,gEAAgE,aAC7E,KAAK,CAAC,IAAI,CAAC,MAAM,UAAM,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IACrD,IACH,IACF,CACP,EAGA,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;oCAChD,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oCAEnD,OAAO,CACL,eAEE,SAAS,EAAC,qCAAqC,EAC/C,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,aAGnC,cACE,SAAS,EAAE,8DAA8D,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EACjG,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,GACjC,EAGD,oBAAoB,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CACrD,cACE,SAAS,EAAC,yCAAyC,EACnD,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,GACjC,CACH,EAGD,eAAK,SAAS,EAAC,wFAAwF,aAErG,eAAK,SAAS,EAAC,wDAAwD,aACrE,eAAK,SAAS,EAAC,mCAAmC,aAChD,KAAC,aAAa,IAAC,KAAK,EAAE,GAAG,CAAC,KAAK,GAAI,EAClC,CAAC,cAAc,IAAI,CAClB,eAAM,SAAS,EAAC,mCAAmC,YAAE,GAAG,CAAC,OAAO,GAAQ,CACzE,EAEA,oBAAoB,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CACrD,gBAAM,SAAS,EAAC,yDAAyD,wBAC/D,GAAG,CAAC,KAAK,IACZ,CACR,IACG,EACN,eAAK,SAAS,EAAC,YAAY,aACzB,eAAM,SAAS,EAAC,uBAAuB,YAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAQ,EAC1E,eAAM,SAAS,EAAC,4BAA4B,YAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAQ,IAC3E,IACF,EAGN,YAAG,SAAS,EAAC,4BAA4B,YAAE,GAAG,CAAC,OAAO,GAAK,EAG3D,eAAK,SAAS,EAAC,8BAA8B,aAC1C,GAAG,CAAC,SAAS,IAAI,CAAC,eAAe,IAAI,CACpC,gBAAM,SAAS,EAAC,qEAAqE,0BACzE,GAAG,CAAC,SAAS,IAClB,CACR,EACA,GAAG,CAAC,SAAS,IAAI,CAChB,gBAAM,SAAS,EAAC,wEAAwE,sBAChF,GAAG,CAAC,SAAS,IACd,CACR,EACD,gBAAM,SAAS,EAAC,qEAAqE,aAClF,GAAG,CAAC,QAAQ,OAAG,GAAG,CAAC,IAAI,IACnB,IACH,EAGL,GAAG,CAAC,IAAI,IAAI,CACX,mBAAS,SAAS,EAAC,MAAM,aACvB,kBAAS,SAAS,EAAC,0DAA0D,0BAEnE,EACV,cAAK,SAAS,EAAC,4DAA4D,YACxE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAC9B,IACE,CACX,IACG,KAvED,GAAG,KAAK,CAAC,WAAW,IAAI,QAAQ,EAAE,CAwEnC,CACP,CAAC;gCACJ,CAAC,CAAC,KA7GM,KAAK,CAAC,WAAW,IAAI,UAAU,CA8GnC,CACP,CAAC;oBACJ,CAAC,CAAC,IACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"LogTimeline.js","sourceRoot":"","sources":["../../../src/ui/components/LogTimeline.tsx"],"names":[],"mappings":"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"}
@@ -8,5 +8,7 @@ export { LogTable } from './components/LogTable.js';
8
8
  export { LogTimeline } from './components/LogTimeline.js';
9
9
  export { LogPagination } from './components/LogPagination.js';
10
10
  export { LogLevelBadge } from './components/LogLevelBadge.js';
11
- export type { LogViewerPageProps, LogTableProps, LogTimelineProps, LogPaginationProps, LogLevelBadgeProps, LogApiConfig, LogApiHandler, AuthCheckFn, LogEntryDisplay, LogQueryResponse, LogDatesResponse, LogPackagesResponse, } from './types.js';
11
+ export { createClientLogger } from './client-logger.js';
12
+ export type { ClientLogger, ClientLoggerConfig, ClientLogLevel } from './client-logger.js';
13
+ export type { LogViewerPageProps, LogTableProps, LogTimelineProps, LogPaginationProps, LogLevelBadgeProps, LogApiConfig, LogApiHandler, AuthCheckFn, LogEntryDisplay, LogQueryResponse, LogDatesResponse, LogPackagesResponse, LogSource, } from './types.js';
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAG3F,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,GACV,MAAM,YAAY,CAAC"}
package/dist/ui/index.js CHANGED
@@ -9,4 +9,6 @@ export { LogTable } from './components/LogTable.js';
9
9
  export { LogTimeline } from './components/LogTimeline.js';
10
10
  export { LogPagination } from './components/LogPagination.js';
11
11
  export { LogLevelBadge } from './components/LogLevelBadge.js';
12
+ // Client Logger
13
+ export { createClientLogger } from './client-logger.js';
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gCAAgC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gCAAgC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"with-log-auth.d.ts","sourceRoot":"","sources":["../../../src/ui/middleware/with-log-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAY9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,WAAW,GACrB,aAAa,CAuBf"}
1
+ {"version":3,"file":"with-log-auth.d.ts","sourceRoot":"","sources":["../../../src/ui/middleware/with-log-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAY9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,WAAW,GACrB,aAAa,CA6Bf"}
@@ -30,20 +30,22 @@ function jsonResponse(data, status = 200) {
30
30
  * ```
31
31
  */
32
32
  export function withLogAuth(handler, authCheck) {
33
- return {
34
- GET: async (request) => {
35
- try {
36
- const isAuthorized = await authCheck(request);
37
- if (!isAuthorized) {
38
- return jsonResponse({ error: 'Unauthorized', message: 'Access to logs requires authentication' }, 401);
39
- }
40
- return handler.GET(request);
41
- }
42
- catch (error) {
43
- console.error('[HazoLog] Auth check failed:', error);
44
- return jsonResponse({ error: 'Internal Server Error', message: 'Authentication check failed' }, 500);
33
+ const wrapWithAuth = async (request, handlerFn) => {
34
+ try {
35
+ const isAuthorized = await authCheck(request);
36
+ if (!isAuthorized) {
37
+ return jsonResponse({ error: 'Unauthorized', message: 'Access to logs requires authentication' }, 401);
45
38
  }
46
- },
39
+ return handlerFn(request);
40
+ }
41
+ catch (error) {
42
+ console.error('[HazoLog] Auth check failed:', error);
43
+ return jsonResponse({ error: 'Internal Server Error', message: 'Authentication check failed' }, 500);
44
+ }
45
+ };
46
+ return {
47
+ GET: (request) => wrapWithAuth(request, handler.GET),
48
+ POST: (request) => wrapWithAuth(request, handler.POST),
47
49
  };
48
50
  }
49
51
  //# sourceMappingURL=with-log-auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-log-auth.js","sourceRoot":"","sources":["../../../src/ui/middleware/with-log-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,SAAS,YAAY,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG;IAC/C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CACzB,OAAsB,EACtB,SAAsB;IAEtB,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,OAAgB,EAAqB,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;gBAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,YAAY,CACjB,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,wCAAwC,EAAE,EAC5E,GAAG,CACJ,CAAC;gBACJ,CAAC;gBAED,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;gBACrD,OAAO,YAAY,CACjB,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,6BAA6B,EAAE,EAC1E,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"with-log-auth.js","sourceRoot":"","sources":["../../../src/ui/middleware/with-log-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,SAAS,YAAY,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG;IAC/C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CACzB,OAAsB,EACtB,SAAsB;IAEtB,MAAM,YAAY,GAAG,KAAK,EACxB,OAAgB,EAChB,SAAkD,EAC/B,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,YAAY,CACjB,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,wCAAwC,EAAE,EAC5E,GAAG,CACJ,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,YAAY,CACjB,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,6BAA6B,EAAE,EAC1E,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;QAC7D,IAAI,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;KAChE,CAAC;AACJ,CAAC"}
@@ -25,6 +25,7 @@ export interface LogApiConfig {
25
25
  */
26
26
  export interface LogApiHandler {
27
27
  GET: (request: Request) => Promise<Response>;
28
+ POST: (request: Request) => Promise<Response>;
28
29
  }
29
30
  /**
30
31
  * Props for the LogViewerPage component
@@ -46,6 +47,10 @@ export interface LogTableProps {
46
47
  isLoading?: boolean;
47
48
  onRowClick?: (log: LogEntryDisplay) => void;
48
49
  }
50
+ /**
51
+ * Log source - where the log originated from
52
+ */
53
+ export type LogSource = 'server' | 'client';
49
54
  /**
50
55
  * Extended log entry with display-specific fields
51
56
  */
@@ -61,6 +66,8 @@ export interface LogEntryDisplay {
61
66
  reference?: string;
62
67
  depth?: number;
63
68
  data?: Record<string, unknown>;
69
+ /** Source of the log entry (server or client) */
70
+ source?: LogSource;
64
71
  }
65
72
  /**
66
73
  * Props for LogTimeline component
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_logs",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Logger for hazo packages - Winston wrapper with singleton pattern",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,15 +8,23 @@
8
8
  "exports": {
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.js"
12
13
  },
13
14
  "./ui": {
14
15
  "types": "./dist/ui/index.d.ts",
15
- "import": "./dist/ui/index.js"
16
+ "import": "./dist/ui/index.js",
17
+ "require": "./dist/ui/index.js"
16
18
  },
17
19
  "./ui/server": {
18
20
  "types": "./dist/ui/server.d.ts",
19
- "import": "./dist/ui/server.js"
21
+ "import": "./dist/ui/server.js",
22
+ "require": "./dist/ui/server.js"
23
+ },
24
+ "./tailwind": {
25
+ "types": "./dist/tailwind.d.ts",
26
+ "import": "./dist/tailwind.js",
27
+ "require": "./dist/tailwind.js"
20
28
  }
21
29
  },
22
30
  "files": [