neuwo-api
Version:
TypeScript/JavaScript SDK client for the Neuwo content classification API
152 lines • 3.81 kB
JavaScript
;
/**
* Logging system for Neuwo API SDK.
*
* Provides configurable logging with different levels and the ability
* to enable/disable logging. Tokens are automatically sanitised in log output.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.logger = exports.LogLevel = void 0;
exports.setupLogger = setupLogger;
exports.disableLogger = disableLogger;
exports.enableLogger = enableLogger;
exports.getLoggerConfig = getLoggerConfig;
/**
* Log levels matching standard severity.
*/
var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
LogLevel[LogLevel["INFO"] = 1] = "INFO";
LogLevel[LogLevel["WARNING"] = 2] = "WARNING";
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
LogLevel[LogLevel["NONE"] = 999] = "NONE";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
/**
* Global logger configuration.
*/
const loggerConfig = {
level: LogLevel.WARNING,
enabled: true,
};
/**
* Sanitise sensitive information from log messages.
*/
function sanitise(message) {
// Replace tokens in URLs and headers
return message
.replace(/token=[^&\s]+/gi, "token=***")
.replace(/["']token["']:\s*["'][^"']+["']/gi, '"token": "***"')
.replace(/Authorization:\s*[^\s]+/gi, "Authorization: ***");
}
/**
* Format log message with timestamp and level.
*/
function formatMessage(level, message) {
const timestamp = new Date().toISOString();
return `${timestamp} - neuwo-api - ${level} - ${sanitise(message)}`;
}
/**
* Log a message if logging is enabled and level is sufficient.
*/
function log(level, levelName, message) {
if (!loggerConfig.enabled || level < loggerConfig.level) {
return;
}
const formatted = formatMessage(levelName, message);
switch (level) {
case LogLevel.DEBUG:
case LogLevel.INFO:
console.log(formatted);
break;
case LogLevel.WARNING:
console.warn(formatted);
break;
case LogLevel.ERROR:
console.error(formatted);
break;
}
}
/**
* Logger instance with methods for each log level.
*/
exports.logger = {
/**
* Log debug message.
*/
debug(message) {
log(LogLevel.DEBUG, "DEBUG", message);
},
/**
* Log info message.
*/
info(message) {
log(LogLevel.INFO, "INFO", message);
},
/**
* Log warning message.
*/
warning(message) {
log(LogLevel.WARNING, "WARNING", message);
},
/**
* Log error message.
*/
error(message) {
log(LogLevel.ERROR, "ERROR", message);
},
};
/**
* Configure the logger with custom settings.
*
* @param level - Minimum log level to display
* @example
* ```typescript
* import { setupLogger, LogLevel } from 'neuwo-api';
*
* // Enable debug logging
* setupLogger(LogLevel.DEBUG);
*
* // Only show warnings and errors
* setupLogger(LogLevel.WARNING);
* ```
*/
function setupLogger(level = LogLevel.WARNING) {
loggerConfig.level = level;
loggerConfig.enabled = true;
}
/**
* Disable all logging output.
*
* @example
* ```typescript
* import { disableLogger } from 'neuwo-api';
*
* disableLogger();
* ```
*/
function disableLogger() {
loggerConfig.enabled = false;
}
/**
* Enable logging with specified level.
*
* @param level - Minimum log level to display (default: WARNING)
* @example
* ```typescript
* import { enableLogger, LogLevel } from 'neuwo-api';
*
* enableLogger(LogLevel.INFO);
* ```
*/
function enableLogger(level = LogLevel.WARNING) {
loggerConfig.level = level;
loggerConfig.enabled = true;
}
/**
* Get current logger configuration.
*/
function getLoggerConfig() {
return { ...loggerConfig };
}
//# sourceMappingURL=logger.js.map