@kitiumai/utils-ts
Version:
Comprehensive TypeScript utilities for KitiumAI projects
76 lines • 2.79 kB
JavaScript
/**
* Logger Integration Utilities
* Provides type-safe wrappers and utilities for @kitiumai/logger 2.0
*/
import { createLogger, getLogger } from '@kitiumai/logger';
/**
* Creates a logger instance for utility functions
*/
export function createUtilLogger(_name) {
return getLogger() || createLogger('production');
}
/**
* Logger decorator for timing function execution
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function withLogging(fn, loggerName) {
const logger = createUtilLogger(loggerName);
return ((...args) => {
const start = performance.now();
logger.debug(`Calling ${fn.name || 'anonymous'}`, { args });
try {
const result = fn(...args);
if (result instanceof Promise) {
return result
.then((value) => {
const duration = performance.now() - start;
logger.debug(`${fn.name || 'anonymous'} completed`, { duration });
return value;
})
.catch((error) => {
const duration = performance.now() - start;
logger.error(`${fn.name || 'anonymous'} failed`, { error, duration });
throw error;
});
}
const duration = performance.now() - start;
logger.debug(`${fn.name || 'anonymous'} completed`, { duration });
return result;
}
catch (error) {
const duration = performance.now() - start;
logger.error(`${fn.name || 'anonymous'} failed`, { error, duration });
throw error;
}
});
}
/**
* Creates a performance logger for monitoring utility performance
*/
export function createPerformanceLogger(utilityName) {
const logger = createUtilLogger(`perf:${utilityName}`);
return {
start: (operation) => {
const startTime = performance.now();
return () => {
const duration = performance.now() - startTime;
logger.debug(`Performance: ${operation}`, { duration, unit: 'ms' });
};
},
measure: (operation, fn) => {
const startTime = performance.now();
try {
const result = fn();
const duration = performance.now() - startTime;
logger.debug(`Performance: ${operation}`, { duration, unit: 'ms' });
return result;
}
catch (error) {
const duration = performance.now() - startTime;
logger.error(`Performance: ${operation} failed`, { duration, error });
throw error;
}
},
};
}
//# sourceMappingURL=logger.js.map