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.
- package/README.md +118 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config_loader.d.ts.map +1 -1
- package/dist/lib/config_loader.js +13 -4
- package/dist/lib/config_loader.js.map +1 -1
- package/dist/lib/hazo_logger.d.ts +5 -0
- package/dist/lib/hazo_logger.d.ts.map +1 -1
- package/dist/lib/hazo_logger.js +15 -0
- package/dist/lib/hazo_logger.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/types.d.ts +6 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tailwind.d.ts +61 -0
- package/dist/tailwind.d.ts.map +1 -0
- package/dist/tailwind.js +106 -0
- package/dist/tailwind.js.map +1 -0
- package/dist/ui/api/log-api-handler.d.ts +2 -2
- package/dist/ui/api/log-api-handler.d.ts.map +1 -1
- package/dist/ui/api/log-api-handler.js +49 -2
- package/dist/ui/api/log-api-handler.js.map +1 -1
- package/dist/ui/client-logger.d.ts +54 -0
- package/dist/ui/client-logger.d.ts.map +1 -0
- package/dist/ui/client-logger.js +126 -0
- package/dist/ui/client-logger.js.map +1 -0
- package/dist/ui/components/LogTable.d.ts.map +1 -1
- package/dist/ui/components/LogTable.js +1 -1
- package/dist/ui/components/LogTable.js.map +1 -1
- package/dist/ui/components/LogTimeline.d.ts.map +1 -1
- package/dist/ui/components/LogTimeline.js +9 -1
- package/dist/ui/components/LogTimeline.js.map +1 -1
- package/dist/ui/index.d.ts +3 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +2 -0
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/middleware/with-log-auth.d.ts.map +1 -1
- package/dist/ui/middleware/with-log-auth.js +15 -13
- package/dist/ui/middleware/with-log-auth.js.map +1 -1
- package/dist/ui/types.d.ts +7 -0
- package/dist/ui/types.d.ts.map +1 -1
- 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
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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
|
|
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
|
|
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,
|
|
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
|
-
|
|
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
|
-
*
|
|
48
|
+
* Get the list of paths to search for config file
|
|
46
49
|
*/
|
|
47
|
-
function
|
|
48
|
-
|
|
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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,MAAM,YAAY,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;IAEpD,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"config_loader.js","sourceRoot":"","sources":["../../src/lib/config_loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,MAAM,YAAY,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;IAEpD,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CACV,0BAA0B,eAAe,gCAAgC;YACzE,mBAAmB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACpE,2BAA2B,eAAe,yBAAyB,CACpE,CAAC;QACF,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAE9C,OAAO;YACL,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa;YACxE,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC;YAClD,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,cAAc,CAAC;YACpF,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC;YAC3E,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa;YACxE,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS;YAC5D,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY;YACrE,yBAAyB;YACzB,iBAAiB,EAAE,SAAS,CAAC,WAAW,CAAC,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,CAAC;YAC7F,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAAC,oBAAoB,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,oBAAoB;YAC3G,sBAAsB,EAAE,QAAQ,CAAC,WAAW,CAAC,sBAAsB,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,sBAAsB;SAClH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACrB,OAAO;QACL,OAAO,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAyB;IACjD,MAAM,WAAW,GAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnE,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAiB,CAAC,CAAC,CAAC,CAAE,KAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC;AAClG,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,KAAmC,EAAE,YAAqB;IAC3E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,GAAG,CAAC;AACjD,CAAC"}
|
|
@@ -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"}
|
package/dist/lib/hazo_logger.js
CHANGED
|
@@ -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":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,MAAM,OAAO,UAAU;IACb,MAAM,CAAC,QAAQ,GAAsB,IAAI,CAAC;IAC1C,aAAa,CAAiB;IAC9B,MAAM,CAAgB;IACtB,WAAW,CAAS;IAE5B,YAAoB,UAAmB;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAClD,CAAC;IAED;;;OAGG;IACK,mBAAmB;QACzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;QAC/D,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB;QAC5F,OAAO,GAAG,QAAQ,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,UAAmB;QAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK;QACjB,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC1C,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,KAAe;QACxB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,KAA0D;QACzE,MAAM,SAAS,GAAa;YAC1B,GAAG,KAAK;YACR,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,QAAQ;SACjB,CAAC;QACF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,SAAS;QACd,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,mBAAmB;QACzB,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,OAAO,CAAC,YAAY,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAC5B,UAAU;SACX,CAAC,CAAC;IACL,CAAC"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -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
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -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
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/tailwind.js
ADDED
|
@@ -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
|
|
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;
|
|
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
|
|
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;
|
|
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,
|
|
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:
|
|
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,
|
|
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,
|
|
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 ${
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"LogTimeline.js","sourceRoot":"","sources":["../../../src/ui/components/LogTimeline.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -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
|
|
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
|
package/dist/ui/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
package/dist/ui/index.js.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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,
|
|
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"}
|
package/dist/ui/types.d.ts
CHANGED
|
@@ -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
|
package/dist/ui/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,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,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,iDAAiD;IACjD,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hazo_logs",
|
|
3
|
-
"version": "1.0.
|
|
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": [
|