hazo_logs 1.0.7 → 1.0.9

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 CHANGED
@@ -158,18 +158,35 @@ logger.error('Failed to load data', { error: err.message });
158
158
 
159
159
  ## Important Notes
160
160
 
161
- ### Server-Only Core Logger
161
+ ### Server/Client Import Paths
162
162
 
163
- 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.
163
+ hazo_logs provides different import paths for different environments:
164
+
165
+ | Import Path | Environment | Use Case |
166
+ |-------------|-------------|----------|
167
+ | `hazo_logs` | Universal | Basic logging (console on client, file on server) |
168
+ | `hazo_logs/server` | Server-only | Full logging with context, sessions, log reader |
169
+ | `hazo_logs/ui` | Client | React components, `createClientLogger()` |
170
+ | `hazo_logs/ui/server` | Server-only | API handlers for log viewer |
164
171
 
165
172
  ```typescript
166
- // Server components, API routes, middleware - OK
173
+ // Universal - works everywhere (recommended for libraries)
167
174
  import { createLogger } from 'hazo_logs';
168
175
 
169
- // Client components - use client logger instead
176
+ // Server-only - full capabilities (file logging, context, sessions)
177
+ import { createLogger, runWithLogContext } from 'hazo_logs/server';
178
+
179
+ // Client components - sends logs to server API
170
180
  import { createClientLogger } from 'hazo_logs/ui';
181
+
182
+ // API routes - create log viewer endpoints
183
+ import { createLogApiHandler } from 'hazo_logs/ui/server';
171
184
  ```
172
185
 
186
+ **Note**: The `hazo_logs/server` and `hazo_logs/ui/server` imports use the `server-only` package and will throw an error if accidentally imported in client bundles. This prevents Next.js build errors from Node.js APIs (`fs`, `async_hooks`) being bundled for the browser.
187
+
188
+ **Next.js 16 Turbopack Compatibility**: As of v1.0.9, hazo_logs is fully compatible with Next.js 16 Turbopack. All server-only modules are lazy-loaded to prevent static analysis issues during bundling.
189
+
173
190
  ### Tailwind CSS Setup Required
174
191
 
175
192
  The log viewer UI uses dynamic Tailwind classes that would be purged during build. You **must** configure both:
@@ -207,11 +224,10 @@ export default {
207
224
 
208
225
  ### Session and Reference Tracking
209
226
 
210
- Track logs across async operations:
227
+ Track logs across async operations (server-only feature):
211
228
 
212
229
  ```typescript
213
- import { createLogger } from 'hazo_logs';
214
- import { runWithLogContext } from 'hazo_logs';
230
+ import { createLogger, runWithLogContext } from 'hazo_logs/server';
215
231
 
216
232
  const logger = createLogger('auth');
217
233
 
@@ -508,11 +524,18 @@ cp node_modules/hazo_logs/config/hazo_logs_config.example.ini config/hazo_logs_c
508
524
  ### Import errors in client components
509
525
 
510
526
  ```
511
- Error: fs is not defined
512
- Error: async_hooks is not defined
527
+ Error: Module not found: Can't resolve 'async_hooks'
528
+ Error: Module not found: Can't resolve 'fs'
513
529
  ```
514
530
 
515
- The core `hazo_logs` import is server-only. Use `createClientLogger` from `hazo_logs/ui` for browser logging.
531
+ This error occurred in earlier versions when server-only code was imported in client components. **As of v1.0.9, this is fixed** - the library now uses lazy loading for all server-only modules, making it fully compatible with Next.js 16 Turbopack.
532
+
533
+ If you still see this error:
534
+
535
+ 1. **Upgrade hazo_logs**: Run `npm update hazo_logs` to get the latest version
536
+ 2. **For logging in client components**: Use `createClientLogger` from `hazo_logs/ui`
537
+ 3. **For server-only modules**: Import from `hazo_logs/server` instead of `hazo_logs`
538
+ 4. **For universal code**: The base `hazo_logs` import works on both client and server (returns console logger on client)
516
539
 
517
540
  ### hazo_ui missing errors
518
541
 
package/dist/index.d.ts CHANGED
@@ -1,32 +1,37 @@
1
1
  /**
2
- * hazo_logs - Winston logger wrapper with singleton pattern
2
+ * hazo_logs - Universal logging library for hazo packages
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';
4
+ * This root export is SAFE for both server and client environments.
7
5
  *
8
- * Usage:
9
- * import { createLogger, runWithLogContext } from 'hazo_logs';
6
+ * ## Quick Start
10
7
  *
11
- * const logger = createLogger('my_package');
8
+ * ```typescript
9
+ * import { createLogger } from 'hazo_logs';
12
10
  *
13
- * // Basic logging
14
- * logger.info('Hello world', { key: 'value' });
11
+ * const logger = createLogger('my_app');
12
+ * logger.info('Application started');
13
+ * ```
15
14
  *
16
- * // With context (session/user tracking)
17
- * runWithLogContext({ sessionId: 'sess_123', reference: 'user_42' }, () => {
18
- * logger.info('User action'); // automatically includes sessionId and reference
19
- * });
15
+ * ## Environment-Specific Imports
20
16
  *
21
- * For UI components (requires Next.js, React, and hazo_ui):
22
- * import { LogViewerPage } from 'hazo_logs/ui';
23
- * import { createLogApiHandler } from 'hazo_logs/ui/server';
17
+ * ### Server-Only (full capabilities)
18
+ * For file logging, AsyncLocalStorage context, log reading:
19
+ * ```typescript
20
+ * import { createLogger, runWithLogContext, readLogs } from 'hazo_logs/server';
21
+ * ```
22
+ *
23
+ * ### Client Components (sends logs to server API)
24
+ * For logging that persists to server:
25
+ * ```typescript
26
+ * import { createClientLogger } from 'hazo_logs/ui';
27
+ * ```
28
+ *
29
+ * ### UI Components (log viewer)
30
+ * ```typescript
31
+ * import { LogViewerPage } from 'hazo_logs/ui';
32
+ * import { createLogApiHandler } from 'hazo_logs/ui/server';
33
+ * ```
24
34
  */
25
- export { HazoLogger } from './lib/hazo_logger.js';
26
- export { PackageLogger, createLogger } from './lib/package_logger.js';
27
- export { loadConfig } from './lib/config_loader.js';
28
- export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
29
- export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
30
- export type { Logger, LogLevel, LogData, LogEntry, LogContext, HazoLogConfig, PackageLoggerOptions, } from './lib/types.js';
31
- export type { ReadLogsOptions, LogQueryResult } from './lib/log-reader.js';
35
+ export { createLogger, createLoggerAsync, preloadServerLogger, ConsoleLogger, } from './lib/universal-logger.js';
36
+ export type { Logger, LogLevel, LogData, LogEntry, LogContext, HazoLogConfig, PackageLoggerOptions, LogSource, } from './lib/types.js';
32
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,33 +1,37 @@
1
1
  /**
2
- * hazo_logs - Winston logger wrapper with singleton pattern
2
+ * hazo_logs - Universal logging library for hazo packages
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';
4
+ * This root export is SAFE for both server and client environments.
7
5
  *
8
- * Usage:
9
- * import { createLogger, runWithLogContext } from 'hazo_logs';
6
+ * ## Quick Start
10
7
  *
11
- * const logger = createLogger('my_package');
8
+ * ```typescript
9
+ * import { createLogger } from 'hazo_logs';
12
10
  *
13
- * // Basic logging
14
- * logger.info('Hello world', { key: 'value' });
11
+ * const logger = createLogger('my_app');
12
+ * logger.info('Application started');
13
+ * ```
15
14
  *
16
- * // With context (session/user tracking)
17
- * runWithLogContext({ sessionId: 'sess_123', reference: 'user_42' }, () => {
18
- * logger.info('User action'); // automatically includes sessionId and reference
19
- * });
15
+ * ## Environment-Specific Imports
20
16
  *
21
- * For UI components (requires Next.js, React, and hazo_ui):
22
- * import { LogViewerPage } from 'hazo_logs/ui';
23
- * import { createLogApiHandler } from 'hazo_logs/ui/server';
17
+ * ### Server-Only (full capabilities)
18
+ * For file logging, AsyncLocalStorage context, log reading:
19
+ * ```typescript
20
+ * import { createLogger, runWithLogContext, readLogs } from 'hazo_logs/server';
21
+ * ```
22
+ *
23
+ * ### Client Components (sends logs to server API)
24
+ * For logging that persists to server:
25
+ * ```typescript
26
+ * import { createClientLogger } from 'hazo_logs/ui';
27
+ * ```
28
+ *
29
+ * ### UI Components (log viewer)
30
+ * ```typescript
31
+ * import { LogViewerPage } from 'hazo_logs/ui';
32
+ * import { createLogApiHandler } from 'hazo_logs/ui/server';
33
+ * ```
24
34
  */
25
- // Core logging
26
- export { HazoLogger } from './lib/hazo_logger.js';
27
- export { PackageLogger, createLogger } from './lib/package_logger.js';
28
- export { loadConfig } from './lib/config_loader.js';
29
- // Log context
30
- export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
31
- // Log reader
32
- export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
35
+ // Universal logger - works on both server and client
36
+ export { createLogger, createLoggerAsync, preloadServerLogger, ConsoleLogger, } from './lib/universal-logger.js';
33
37
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,qDAAqD;AACrD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,2BAA2B,CAAC"}
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Log Context Provider
3
3
  * Uses AsyncLocalStorage for zero-overhead context propagation
4
+ *
5
+ * This module is safe for both server and client environments.
6
+ * On the client, context functions are no-ops since AsyncLocalStorage is unavailable.
4
7
  */
5
8
  import type { LogContext, Logger } from '../types.js';
6
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"log-context.d.ts","sourceRoot":"","sources":["../../../src/lib/context/log-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAItD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAcH;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAaxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,UAAU,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAWZ;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,SAAS,CAEtD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEnF"}
1
+ {"version":3,"file":"log-context.d.ts","sourceRoot":"","sources":["../../../src/lib/context/log-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAwCtD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAeH;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAcxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,UAAU,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,SAAS,CAGtD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEnF"}
@@ -1,9 +1,40 @@
1
1
  /**
2
2
  * Log Context Provider
3
3
  * Uses AsyncLocalStorage for zero-overhead context propagation
4
+ *
5
+ * This module is safe for both server and client environments.
6
+ * On the client, context functions are no-ops since AsyncLocalStorage is unavailable.
7
+ */
8
+ // Client-side stub implementation
9
+ const clientStubStorage = {
10
+ getStore: () => undefined,
11
+ run: (_store, fn) => fn(),
12
+ };
13
+ // Runtime-initialized storage (populated on server, stub on client)
14
+ let logContextStorage = clientStubStorage;
15
+ let initialized = false;
16
+ /**
17
+ * Initialize AsyncLocalStorage on the server
18
+ * This is called lazily when context functions are first used
4
19
  */
5
- import { AsyncLocalStorage } from 'async_hooks';
6
- const logContextStorage = new AsyncLocalStorage();
20
+ function ensureInitialized() {
21
+ if (initialized)
22
+ return;
23
+ initialized = true;
24
+ // Only attempt to load async_hooks on the server
25
+ if (typeof window === 'undefined') {
26
+ try {
27
+ // Dynamic require to avoid static analysis by bundlers
28
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
29
+ const asyncHooks = require('async_hooks');
30
+ logContextStorage = new asyncHooks.AsyncLocalStorage();
31
+ }
32
+ catch {
33
+ // If async_hooks is not available, keep using the stub
34
+ console.warn('[hazo_logs] AsyncLocalStorage not available, context tracking disabled');
35
+ }
36
+ }
37
+ }
7
38
  /**
8
39
  * Generate a human-readable session ID
9
40
  * Format: 2025-12-17-14:30:45-1234 (date-time-4digit)
@@ -26,6 +57,7 @@ export function generateSessionId() {
26
57
  * });
27
58
  */
28
59
  export function startSession(options, fn) {
60
+ ensureInitialized();
29
61
  const sessionId = generateSessionId();
30
62
  return logContextStorage.run({ sessionId, reference: options.reference, depth: 1 }, () => {
31
63
  // Auto-log session start if logger provided
@@ -49,6 +81,7 @@ export function startSession(options, fn) {
49
81
  * });
50
82
  */
51
83
  export async function startSessionAsync(options, fn) {
84
+ ensureInitialized();
52
85
  const sessionId = generateSessionId();
53
86
  return logContextStorage.run({ sessionId, reference: options.reference, depth: 1 }, async () => {
54
87
  // Auto-log session start if logger provided
@@ -73,6 +106,7 @@ export async function startSessionAsync(options, fn) {
73
106
  * });
74
107
  */
75
108
  export function runWithLogContext(context, fn) {
109
+ ensureInitialized();
76
110
  const parentContext = logContextStorage.getStore();
77
111
  const parentDepth = parentContext?.depth ?? 0;
78
112
  const newContext = {
@@ -95,6 +129,7 @@ export function runWithLogContext(context, fn) {
95
129
  * });
96
130
  */
97
131
  export function runWithLogContextAsync(context, fn) {
132
+ ensureInitialized();
98
133
  const parentContext = logContextStorage.getStore();
99
134
  const parentDepth = parentContext?.depth ?? 0;
100
135
  const newContext = {
@@ -109,6 +144,7 @@ export function runWithLogContextAsync(context, fn) {
109
144
  * Returns undefined if not within a context
110
145
  */
111
146
  export function getLogContext() {
147
+ ensureInitialized();
112
148
  return logContextStorage.getStore();
113
149
  }
114
150
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"log-context.js","sourceRoot":"","sources":["../../../src/lib/context/log-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log-context.js","sourceRoot":"","sources":["../../../src/lib/context/log-context.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,19 @@
1
1
  /**
2
2
  * Core singleton logger for hazo_logs
3
3
  * Manages the Winston logger instance and transports
4
+ *
5
+ * This module is server-only. All imports are lazy-loaded to prevent
6
+ * bundlers from including server-only dependencies in client bundles.
4
7
  */
5
8
  import type { HazoLogConfig, LogEntry } from './types.js';
9
+ /**
10
+ * Load server-only dependencies asynchronously
11
+ * Uses dynamic import to avoid static analysis by bundlers
12
+ */
13
+ declare function loadDependencies(): Promise<void>;
6
14
  export declare class HazoLogger {
7
15
  private static instance;
16
+ private static instancePromise;
8
17
  private winstonLogger;
9
18
  private config;
10
19
  private executionId;
@@ -15,7 +24,13 @@ export declare class HazoLogger {
15
24
  */
16
25
  private generateExecutionId;
17
26
  /**
18
- * Get the singleton instance of HazoLogger
27
+ * Get the singleton instance of HazoLogger (async)
28
+ * @param configPath - Optional path to config file (only used on first call)
29
+ */
30
+ static getInstanceAsync(configPath?: string): Promise<HazoLogger>;
31
+ /**
32
+ * Get the singleton instance of HazoLogger (synchronous)
33
+ * Only works if dependencies have already been loaded via getInstanceAsync
19
34
  * @param configPath - Optional path to config file (only used on first call)
20
35
  */
21
36
  static getInstance(configPath?: string): HazoLogger;
@@ -42,4 +57,5 @@ export declare class HazoLogger {
42
57
  getExecutionId(): string;
43
58
  private createWinstonLogger;
44
59
  }
60
+ export { loadDependencies as preloadHazoLogger };
45
61
  //# sourceMappingURL=hazo_logger.d.ts.map
@@ -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;;;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"}
1
+ {"version":3,"file":"hazo_logger.d.ts","sourceRoot":"","sources":["../../src/lib/hazo_logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAUpE;;;GAGG;AACH,iBAAe,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB/C;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,MAAM,CAAC,eAAe,CAAoC;IAClE,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO;IASP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;WACiB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkB9E;;;;OAIG;WACW,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAgB1D;;OAEG;WACW,KAAK,IAAI,IAAI;IAQ3B;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAMjC;;;OAGG;IACI,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI;IAalF;;OAEG;IACI,SAAS,IAAI,aAAa;IAIjC;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B,OAAO,CAAC,mBAAmB;CAoB5B;AAGD,OAAO,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,CAAC"}
@@ -1,19 +1,57 @@
1
1
  /**
2
2
  * Core singleton logger for hazo_logs
3
3
  * Manages the Winston logger instance and transports
4
+ *
5
+ * This module is server-only. All imports are lazy-loaded to prevent
6
+ * bundlers from including server-only dependencies in client bundles.
4
7
  */
5
- import winston from 'winston';
6
- import { loadConfig } from './config_loader.js';
7
- import { createConsoleTransport } from './transports/console_transport.js';
8
- import { createFileTransport } from './transports/file_transport.js';
8
+ // Lazy-loaded dependencies (populated on first getInstance call)
9
+ let winston = null;
10
+ let loadConfigFn = null;
11
+ let createConsoleTransportFn = null;
12
+ let createFileTransportFn = null;
13
+ let dependenciesLoaded = false;
14
+ let loadPromise = null;
15
+ /**
16
+ * Load server-only dependencies asynchronously
17
+ * Uses dynamic import to avoid static analysis by bundlers
18
+ */
19
+ async function loadDependencies() {
20
+ if (dependenciesLoaded)
21
+ return;
22
+ if (loadPromise)
23
+ return loadPromise;
24
+ // Only load on server
25
+ if (typeof window !== 'undefined') {
26
+ throw new Error('[hazo_logs] HazoLogger cannot be used on the client. Use createLogger from hazo_logs (universal) or createClientLogger from hazo_logs/ui instead.');
27
+ }
28
+ loadPromise = (async () => {
29
+ const [winstonMod, configMod, consoleMod, fileMod] = await Promise.all([
30
+ import('winston'),
31
+ import('./config_loader.js'),
32
+ import('./transports/console_transport.js'),
33
+ import('./transports/file_transport.js'),
34
+ ]);
35
+ winston = winstonMod.default;
36
+ loadConfigFn = configMod.loadConfig;
37
+ createConsoleTransportFn = consoleMod.createConsoleTransport;
38
+ createFileTransportFn = fileMod.createFileTransport;
39
+ dependenciesLoaded = true;
40
+ })();
41
+ return loadPromise;
42
+ }
9
43
  export class HazoLogger {
10
44
  static instance = null;
45
+ static instancePromise = null;
11
46
  winstonLogger;
12
47
  config;
13
48
  executionId;
14
49
  constructor(configPath) {
50
+ if (!dependenciesLoaded || !loadConfigFn) {
51
+ throw new Error('[hazo_logs] Dependencies not loaded. Use HazoLogger.getInstanceAsync() instead.');
52
+ }
15
53
  this.executionId = this.generateExecutionId();
16
- this.config = loadConfig(configPath);
54
+ this.config = loadConfigFn(configPath);
17
55
  this.winstonLogger = this.createWinstonLogger();
18
56
  }
19
57
  /**
@@ -28,13 +66,37 @@ export class HazoLogger {
28
66
  return `${datePart}-${timePart}-${randomPart}`;
29
67
  }
30
68
  /**
31
- * Get the singleton instance of HazoLogger
69
+ * Get the singleton instance of HazoLogger (async)
32
70
  * @param configPath - Optional path to config file (only used on first call)
33
71
  */
34
- static getInstance(configPath) {
35
- if (!HazoLogger.instance) {
72
+ static async getInstanceAsync(configPath) {
73
+ if (HazoLogger.instance) {
74
+ return HazoLogger.instance;
75
+ }
76
+ if (HazoLogger.instancePromise) {
77
+ return HazoLogger.instancePromise;
78
+ }
79
+ HazoLogger.instancePromise = (async () => {
80
+ await loadDependencies();
36
81
  HazoLogger.instance = new HazoLogger(configPath);
82
+ return HazoLogger.instance;
83
+ })();
84
+ return HazoLogger.instancePromise;
85
+ }
86
+ /**
87
+ * Get the singleton instance of HazoLogger (synchronous)
88
+ * Only works if dependencies have already been loaded via getInstanceAsync
89
+ * @param configPath - Optional path to config file (only used on first call)
90
+ */
91
+ static getInstance(configPath) {
92
+ if (HazoLogger.instance) {
93
+ return HazoLogger.instance;
37
94
  }
95
+ if (!dependenciesLoaded) {
96
+ throw new Error('[hazo_logs] HazoLogger.getInstance() requires dependencies to be pre-loaded. ' +
97
+ 'Use HazoLogger.getInstanceAsync() instead, or call loadDependencies() first.');
98
+ }
99
+ HazoLogger.instance = new HazoLogger(configPath);
38
100
  return HazoLogger.instance;
39
101
  }
40
102
  /**
@@ -42,14 +104,17 @@ export class HazoLogger {
42
104
  */
43
105
  static reset() {
44
106
  if (HazoLogger.instance) {
45
- HazoLogger.instance.winstonLogger.close();
107
+ HazoLogger.instance.winstonLogger?.close();
46
108
  HazoLogger.instance = null;
109
+ HazoLogger.instancePromise = null;
47
110
  }
48
111
  }
49
112
  /**
50
113
  * Log an entry - called by PackageLogger
51
114
  */
52
115
  log(entry) {
116
+ if (!this.winstonLogger)
117
+ return;
53
118
  const { level, message, ...meta } = entry;
54
119
  this.winstonLogger.log(level, message, meta);
55
120
  }
@@ -58,6 +123,8 @@ export class HazoLogger {
58
123
  * Used for logs sent from the browser
59
124
  */
60
125
  logClient(entry) {
126
+ if (!this.winstonLogger)
127
+ return;
61
128
  const fullEntry = {
62
129
  ...entry,
63
130
  executionId: this.executionId,
@@ -81,12 +148,15 @@ export class HazoLogger {
81
148
  return this.executionId;
82
149
  }
83
150
  createWinstonLogger() {
151
+ if (!winston || !createConsoleTransportFn || !createFileTransportFn) {
152
+ throw new Error('[hazo_logs] Dependencies not loaded');
153
+ }
84
154
  const transports = [];
85
155
  if (this.config.enable_console) {
86
- transports.push(createConsoleTransport(this.config.log_level));
156
+ transports.push(createConsoleTransportFn(this.config.log_level));
87
157
  }
88
158
  if (this.config.enable_file) {
89
- transports.push(createFileTransport(this.config));
159
+ transports.push(createFileTransportFn(this.config));
90
160
  }
91
161
  return winston.createLogger({
92
162
  level: this.config.log_level,
@@ -94,4 +164,6 @@ export class HazoLogger {
94
164
  });
95
165
  }
96
166
  }
167
+ // Export the async loader for pre-initialization
168
+ export { loadDependencies as preloadHazoLogger };
97
169
  //# sourceMappingURL=hazo_logger.js.map
@@ -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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"}
@@ -10,8 +10,13 @@ import type { Logger, LogData, PackageLoggerOptions } from './types.js';
10
10
  */
11
11
  export declare class PackageLogger implements Logger {
12
12
  private coreLogger;
13
+ private coreLoggerPromise;
13
14
  private packageName;
14
15
  constructor(options: PackageLoggerOptions, coreLogger?: HazoLogger);
16
+ /**
17
+ * Get the core logger, waiting if necessary
18
+ */
19
+ private getCoreLogger;
15
20
  private log;
16
21
  error(message: string, data?: LogData): void;
17
22
  warn(message: string, data?: LogData): void;
@@ -1 +1 @@
1
- {"version":3,"file":"package_logger.d.ts","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAY,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIlF;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,oBAAoB,EAAE,UAAU,CAAC,EAAE,UAAU;IAKlE,OAAO,CAAC,GAAG;IAmBX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAG7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD"}
1
+ {"version":3,"file":"package_logger.d.ts","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAY,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIlF;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,iBAAiB,CAAoC;IAC7D,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,oBAAoB,EAAE,UAAU,CAAC,EAAE,UAAU;IAalE;;OAEG;YACW,aAAa;IAQ3B,OAAO,CAAC,GAAG;IAkCX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAG7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -10,28 +10,64 @@ import { getLogContext } from './context/log-context.js';
10
10
  * Tags all log entries with the package name and captures caller info
11
11
  */
12
12
  export class PackageLogger {
13
- coreLogger;
13
+ coreLogger = null;
14
+ coreLoggerPromise = null;
14
15
  packageName;
15
16
  constructor(options, coreLogger) {
16
17
  this.packageName = options.packageName;
17
- this.coreLogger = coreLogger || HazoLogger.getInstance();
18
+ if (coreLogger) {
19
+ this.coreLogger = coreLogger;
20
+ }
21
+ else {
22
+ // Start async loading of the core logger
23
+ this.coreLoggerPromise = HazoLogger.getInstanceAsync().then((logger) => {
24
+ this.coreLogger = logger;
25
+ return logger;
26
+ });
27
+ }
28
+ }
29
+ /**
30
+ * Get the core logger, waiting if necessary
31
+ */
32
+ async getCoreLogger() {
33
+ if (this.coreLogger)
34
+ return this.coreLogger;
35
+ if (this.coreLoggerPromise) {
36
+ return this.coreLoggerPromise;
37
+ }
38
+ throw new Error('[hazo_logs] Core logger not initialized');
18
39
  }
19
40
  log(level, message, data) {
20
41
  const { filename, line } = getCallerInfo();
21
42
  const context = getLogContext();
22
- this.coreLogger.log({
43
+ const logEntry = {
23
44
  timestamp: new Date().toISOString(),
24
45
  level,
25
46
  package: this.packageName,
26
47
  message,
27
48
  filename,
28
49
  line,
29
- executionId: this.coreLogger.getExecutionId(),
50
+ executionId: '', // Will be set when core logger is available
30
51
  ...(context?.sessionId ? { sessionId: context.sessionId } : {}),
31
52
  ...(context?.reference ? { reference: context.reference } : {}),
32
53
  ...(context?.depth ? { depth: context.depth } : {}),
33
54
  ...(data ? { data } : {}),
34
- });
55
+ };
56
+ if (this.coreLogger) {
57
+ // Core logger is ready, log immediately
58
+ logEntry.executionId = this.coreLogger.getExecutionId();
59
+ this.coreLogger.log(logEntry);
60
+ }
61
+ else {
62
+ // Core logger is still initializing, queue the log
63
+ this.getCoreLogger().then((logger) => {
64
+ logEntry.executionId = logger.getExecutionId();
65
+ logger.log(logEntry);
66
+ }).catch(() => {
67
+ // Fallback to console if core logger fails to initialize
68
+ console.error(`[${this.packageName}] ${message}`, data);
69
+ });
70
+ }
35
71
  }
36
72
  error(message, data) {
37
73
  this.log('error', message, data);
@@ -1 +1 @@
1
- {"version":3,"file":"package_logger.js","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,UAAU,CAAa;IACvB,WAAW,CAAS;IAE5B,YAAY,OAA6B,EAAE,UAAuB;QAChE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3D,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAAc;QAC1D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB,OAAO;YACP,QAAQ;YACR,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;YAC7C,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"package_logger.js","sourceRoot":"","sources":["../../src/lib/package_logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Universal Logger - Works on both server and client
3
+ *
4
+ * On server: Uses the full PackageLogger with file transports
5
+ * On client: Uses console-based logging (logs are not persisted)
6
+ *
7
+ * For full server logging capabilities, import from 'hazo_logs/server'
8
+ * For client logging that posts to server API, use 'hazo_logs/ui' createClientLogger
9
+ */
10
+ import type { Logger, LogData, LogLevel } from './types.js';
11
+ /**
12
+ * Console-based logger for client-side use
13
+ * Provides basic logging that outputs to browser console
14
+ */
15
+ declare class ConsoleLogger implements Logger {
16
+ private packageName;
17
+ private minLevel;
18
+ constructor(packageName: string, minLevel?: LogLevel);
19
+ private shouldLog;
20
+ private formatMessage;
21
+ error(message: string, data?: LogData): void;
22
+ warn(message: string, data?: LogData): void;
23
+ info(message: string, data?: LogData): void;
24
+ debug(message: string, data?: LogData): void;
25
+ }
26
+ /**
27
+ * Pre-load the server logger module (call this early in server startup)
28
+ * This allows createLogger to return a real server logger synchronously
29
+ */
30
+ export declare function preloadServerLogger(): Promise<void>;
31
+ /**
32
+ * Create a universal logger that works on both server and client
33
+ *
34
+ * On server: Returns PackageLogger (may start as ConsoleLogger and upgrade)
35
+ * On client: Returns ConsoleLogger that outputs to browser console
36
+ *
37
+ * @param packageName - Name of the package (e.g., "hazo_auth", "my_app")
38
+ * @returns Logger instance
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * import { createLogger } from 'hazo_logs';
43
+ *
44
+ * const logger = createLogger('my_app');
45
+ * logger.info('Application started');
46
+ * ```
47
+ *
48
+ * Note: For full server capabilities (context, sessions), use:
49
+ * ```typescript
50
+ * import { createLogger } from 'hazo_logs/server';
51
+ * ```
52
+ *
53
+ * For client logging that persists to server, use:
54
+ * ```typescript
55
+ * import { createClientLogger } from 'hazo_logs/ui';
56
+ * ```
57
+ */
58
+ export declare function createLogger(packageName: string): Logger;
59
+ /**
60
+ * Async version of createLogger - returns real server logger immediately
61
+ *
62
+ * @param packageName - Name of the package
63
+ * @returns Promise<Logger>
64
+ */
65
+ export declare function createLoggerAsync(packageName: string): Promise<Logger>;
66
+ export { ConsoleLogger };
67
+ //# sourceMappingURL=universal-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universal-logger.d.ts","sourceRoot":"","sources":["../../src/lib/universal-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgB5D;;;GAGG;AACH,cAAM,aAAc,YAAW,MAAM;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAW;gBAEf,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAkB;IAK7D,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IAKrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAK7C;AAoDD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB5E;AAGD,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Universal Logger - Works on both server and client
3
+ *
4
+ * On server: Uses the full PackageLogger with file transports
5
+ * On client: Uses console-based logging (logs are not persisted)
6
+ *
7
+ * For full server logging capabilities, import from 'hazo_logs/server'
8
+ * For client logging that posts to server API, use 'hazo_logs/ui' createClientLogger
9
+ */
10
+ const LOG_LEVEL_PRIORITY = {
11
+ error: 0,
12
+ warn: 1,
13
+ info: 2,
14
+ debug: 3,
15
+ };
16
+ /**
17
+ * Check if we're running on the server
18
+ */
19
+ function isServer() {
20
+ return typeof window === 'undefined';
21
+ }
22
+ /**
23
+ * Console-based logger for client-side use
24
+ * Provides basic logging that outputs to browser console
25
+ */
26
+ class ConsoleLogger {
27
+ packageName;
28
+ minLevel;
29
+ constructor(packageName, minLevel = 'debug') {
30
+ this.packageName = packageName;
31
+ this.minLevel = minLevel;
32
+ }
33
+ shouldLog(level) {
34
+ return LOG_LEVEL_PRIORITY[level] <= LOG_LEVEL_PRIORITY[this.minLevel];
35
+ }
36
+ formatMessage(level, message) {
37
+ const timestamp = new Date().toISOString();
38
+ return `[${timestamp}] [${level.toUpperCase()}] [${this.packageName}] ${message}`;
39
+ }
40
+ error(message, data) {
41
+ if (this.shouldLog('error')) {
42
+ console.error(this.formatMessage('error', message), data ?? '');
43
+ }
44
+ }
45
+ warn(message, data) {
46
+ if (this.shouldLog('warn')) {
47
+ console.warn(this.formatMessage('warn', message), data ?? '');
48
+ }
49
+ }
50
+ info(message, data) {
51
+ if (this.shouldLog('info')) {
52
+ console.info(this.formatMessage('info', message), data ?? '');
53
+ }
54
+ }
55
+ debug(message, data) {
56
+ if (this.shouldLog('debug')) {
57
+ console.debug(this.formatMessage('debug', message), data ?? '');
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Deferred logger that upgrades from ConsoleLogger to real server logger
63
+ * when the server module is loaded asynchronously
64
+ */
65
+ class DeferredServerLogger {
66
+ packageName;
67
+ innerLogger;
68
+ upgraded = false;
69
+ constructor(packageName) {
70
+ this.packageName = packageName;
71
+ this.innerLogger = new ConsoleLogger(packageName);
72
+ // Attempt async upgrade to real server logger
73
+ this.upgrade();
74
+ }
75
+ async upgrade() {
76
+ if (this.upgraded)
77
+ return;
78
+ try {
79
+ const { createLogger } = await import('./package_logger.js');
80
+ this.innerLogger = createLogger(this.packageName);
81
+ this.upgraded = true;
82
+ }
83
+ catch {
84
+ // Keep using ConsoleLogger
85
+ }
86
+ }
87
+ error(message, data) {
88
+ this.innerLogger.error(message, data);
89
+ }
90
+ warn(message, data) {
91
+ this.innerLogger.warn(message, data);
92
+ }
93
+ info(message, data) {
94
+ this.innerLogger.info(message, data);
95
+ }
96
+ debug(message, data) {
97
+ this.innerLogger.debug(message, data);
98
+ }
99
+ }
100
+ // Cache for pre-loaded server loggers
101
+ const serverLoggerCache = new Map();
102
+ let serverModuleLoaded = false;
103
+ let serverModulePromise = null;
104
+ /**
105
+ * Pre-load the server logger module (call this early in server startup)
106
+ * This allows createLogger to return a real server logger synchronously
107
+ */
108
+ export async function preloadServerLogger() {
109
+ if (!isServer() || serverModuleLoaded)
110
+ return;
111
+ try {
112
+ if (!serverModulePromise) {
113
+ serverModulePromise = import('./package_logger.js');
114
+ }
115
+ await serverModulePromise;
116
+ serverModuleLoaded = true;
117
+ }
118
+ catch {
119
+ // Silently fail
120
+ }
121
+ }
122
+ /**
123
+ * Create a universal logger that works on both server and client
124
+ *
125
+ * On server: Returns PackageLogger (may start as ConsoleLogger and upgrade)
126
+ * On client: Returns ConsoleLogger that outputs to browser console
127
+ *
128
+ * @param packageName - Name of the package (e.g., "hazo_auth", "my_app")
129
+ * @returns Logger instance
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * import { createLogger } from 'hazo_logs';
134
+ *
135
+ * const logger = createLogger('my_app');
136
+ * logger.info('Application started');
137
+ * ```
138
+ *
139
+ * Note: For full server capabilities (context, sessions), use:
140
+ * ```typescript
141
+ * import { createLogger } from 'hazo_logs/server';
142
+ * ```
143
+ *
144
+ * For client logging that persists to server, use:
145
+ * ```typescript
146
+ * import { createClientLogger } from 'hazo_logs/ui';
147
+ * ```
148
+ */
149
+ export function createLogger(packageName) {
150
+ if (!isServer()) {
151
+ // Client-side: return console logger
152
+ return new ConsoleLogger(packageName);
153
+ }
154
+ // Check cache first
155
+ const cached = serverLoggerCache.get(packageName);
156
+ if (cached) {
157
+ return cached;
158
+ }
159
+ // Server-side: create deferred logger that upgrades asynchronously
160
+ const logger = new DeferredServerLogger(packageName);
161
+ serverLoggerCache.set(packageName, logger);
162
+ return logger;
163
+ }
164
+ /**
165
+ * Async version of createLogger - returns real server logger immediately
166
+ *
167
+ * @param packageName - Name of the package
168
+ * @returns Promise<Logger>
169
+ */
170
+ export async function createLoggerAsync(packageName) {
171
+ if (!isServer()) {
172
+ return new ConsoleLogger(packageName);
173
+ }
174
+ try {
175
+ if (!serverModulePromise) {
176
+ serverModulePromise = import('./package_logger.js');
177
+ }
178
+ const { createLogger } = await serverModulePromise;
179
+ serverModuleLoaded = true;
180
+ const logger = createLogger(packageName);
181
+ serverLoggerCache.set(packageName, logger);
182
+ return logger;
183
+ }
184
+ catch {
185
+ console.warn(`[hazo_logs] Failed to load server logger, falling back to console logger for ${packageName}`);
186
+ return new ConsoleLogger(packageName);
187
+ }
188
+ }
189
+ // Export ConsoleLogger for direct use if needed
190
+ export { ConsoleLogger };
191
+ //# sourceMappingURL=universal-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universal-logger.js","sourceRoot":"","sources":["../../src/lib/universal-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * hazo_logs/server - Server-only logging module
3
+ *
4
+ * ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
5
+ * imported in client components. Import will fail in browser bundles.
6
+ *
7
+ * Usage:
8
+ * import { createLogger, runWithLogContext } from 'hazo_logs/server';
9
+ *
10
+ * const logger = createLogger('my_package');
11
+ * logger.info('Hello world', { key: 'value' });
12
+ *
13
+ * For client-side logging, use:
14
+ * import { createClientLogger } from 'hazo_logs/ui';
15
+ */
16
+ import 'server-only';
17
+ export { HazoLogger } from './lib/hazo_logger.js';
18
+ export { PackageLogger, createLogger } from './lib/package_logger.js';
19
+ export { loadConfig } from './lib/config_loader.js';
20
+ export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
21
+ export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
22
+ export type { Logger, LogLevel, LogData, LogEntry, LogContext, HazoLogConfig, PackageLoggerOptions, } from './lib/types.js';
23
+ export type { ReadLogsOptions, LogQueryResult } from './lib/log-reader.js';
24
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,aAAa,CAAC;AAGrB,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/server.js ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * hazo_logs/server - Server-only logging module
3
+ *
4
+ * ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
5
+ * imported in client components. Import will fail in browser bundles.
6
+ *
7
+ * Usage:
8
+ * import { createLogger, runWithLogContext } from 'hazo_logs/server';
9
+ *
10
+ * const logger = createLogger('my_package');
11
+ * logger.info('Hello world', { key: 'value' });
12
+ *
13
+ * For client-side logging, use:
14
+ * import { createClientLogger } from 'hazo_logs/ui';
15
+ */
16
+ import 'server-only';
17
+ // Core logging
18
+ export { HazoLogger } from './lib/hazo_logger.js';
19
+ export { PackageLogger, createLogger } from './lib/package_logger.js';
20
+ export { loadConfig } from './lib/config_loader.js';
21
+ // Log context (uses AsyncLocalStorage)
22
+ export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
23
+ // Log reader (uses fs, readline)
24
+ export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
25
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,aAAa,CAAC;AAErB,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,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAEtC,iCAAiC;AACjC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * Server-side UI exports for hazo_logs
3
3
  *
4
+ * ⚠️ SERVER-ONLY: This module uses Node.js APIs and CANNOT be
5
+ * imported in client components.
6
+ *
4
7
  * Use these in API routes and server components only.
5
8
  */
9
+ import 'server-only';
6
10
  export { createLogApiHandler } from './api/log-api-handler.js';
7
11
  export { withLogAuth } from './middleware/with-log-auth.js';
8
12
  export type { LogApiConfig, LogApiHandler, AuthCheckFn, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,YAAY,CAAC"}
package/dist/ui/server.js CHANGED
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * Server-side UI exports for hazo_logs
3
3
  *
4
+ * ⚠️ SERVER-ONLY: This module uses Node.js APIs and CANNOT be
5
+ * imported in client components.
6
+ *
4
7
  * Use these in API routes and server components only.
5
8
  */
9
+ import 'server-only';
6
10
  // API Handler
7
11
  export { createLogApiHandler } from './api/log-api-handler.js';
8
12
  // Middleware
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,aAAa,CAAC;AAErB,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_logs",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Logger for hazo packages - Winston wrapper with singleton pattern",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -11,6 +11,11 @@
11
11
  "import": "./dist/index.js",
12
12
  "require": "./dist/index.js"
13
13
  },
14
+ "./server": {
15
+ "types": "./dist/server.d.ts",
16
+ "import": "./dist/server.js",
17
+ "require": "./dist/server.js"
18
+ },
14
19
  "./ui": {
15
20
  "types": "./dist/ui/index.d.ts",
16
21
  "import": "./dist/ui/index.js",
@@ -51,12 +56,16 @@
51
56
  ],
52
57
  "author": "Pubs Abayasiri",
53
58
  "license": "MIT",
59
+ "engines": {
60
+ "node": ">=18.0.0"
61
+ },
54
62
  "bugs": {
55
63
  "url": "https://github.com/pub12/hazo_logs/issues"
56
64
  },
57
65
  "homepage": "https://github.com/pub12/hazo_logs#readme",
58
66
  "dependencies": {
59
67
  "ini": "^4.1.0",
68
+ "server-only": "^0.0.1",
60
69
  "winston": "^3.17.0",
61
70
  "winston-daily-rotate-file": "^5.0.0"
62
71
  },