1- import { createRequire } from 'module' ;
21import type { LoggerConfig , LogLevel } from '@objectstack/spec/system' ;
32import type { Logger } from '@objectstack/spec/contracts' ;
43
5- const require = createRequire ( import . meta. url ) ;
6-
74/**
85 * Universal Logger Implementation
96 *
@@ -24,6 +21,7 @@ export class ObjectLogger implements Logger {
2421 private isNode : boolean ;
2522 private pinoLogger ?: any ; // Pino logger instance for Node.js
2623 private pinoInstance ?: any ; // Base Pino instance for creating child loggers
24+ private require ?: any ; // CommonJS require function for Node.js
2725
2826 constructor ( config : Partial < LoggerConfig > = { } ) {
2927 // Detect runtime environment
@@ -56,8 +54,13 @@ export class ObjectLogger implements Logger {
5654 if ( ! this . isNode ) return ;
5755
5856 try {
57+ // Create require function dynamically for Node.js (avoids bundling issues in browser)
58+ // @ts -ignore - dynamic import of Node.js module
59+ const { createRequire } = eval ( 'require("module")' ) ;
60+ this . require = createRequire ( import . meta. url ) ;
61+
5962 // Synchronous import for Pino using createRequire (works in ESM)
60- const pino = require ( 'pino' ) ;
63+ const pino = this . require ( 'pino' ) ;
6164
6265 // Build Pino options
6366 const pinoOptions : any = {
@@ -81,7 +84,7 @@ export class ObjectLogger implements Logger {
8184 // Check if pino-pretty is available
8285 let hasPretty = false ;
8386 try {
84- require . resolve ( 'pino-pretty' ) ;
87+ this . require . resolve ( 'pino-pretty' ) ;
8588 hasPretty = true ;
8689 } catch ( e ) {
8790 // ignore
0 commit comments