@fajarnugraha37/nope-iam
Version:
A highly extensible, type-safe IAM-like access control library for Node.js, inspired by AWS IAM. Deny by default, allow by vibes and less patience for your bad access patterns. Supports policies, roles, decorators, adapters, and rich evaluation context be
52 lines • 1.58 kB
JavaScript
import fs from 'fs';
export class DefaultLogger {
level;
constructor(level = 'info') {
this.level = level;
}
shouldLog(lvl) {
const order = ['debug', 'info', 'warn', 'error'];
return this.level !== 'none' && order.indexOf(lvl) >= order.indexOf(this.level);
}
info(message, ...meta) {
if (this.shouldLog('info'))
console.info('[IAM][INFO]', message, ...meta);
}
warn(message, ...meta) {
if (this.shouldLog('warn'))
console.warn('[IAM][WARN]', message, ...meta);
}
error(message, ...meta) {
if (this.shouldLog('error'))
console.error('[IAM][ERROR]', message, ...meta);
}
debug(message, ...meta) {
if (this.shouldLog('debug'))
console.debug('[IAM][DEBUG]', message, ...meta);
}
}
export function loadIAMConfig(options) {
const config = {};
if (process.env.IAM_LOG_LEVEL) {
config.logLevel = process.env.IAM_LOG_LEVEL;
}
if (options) {
if ('env' in options) {
Object.assign(config, options.env);
}
else if ('file' in options) {
try {
if (fs.existsSync(options.file)) {
const raw = fs.readFileSync(options.file, 'utf-8');
const parsed = JSON.parse(raw);
if (parsed.logLevel)
config.logLevel = parsed.logLevel;
}
}
catch (err) {
}
}
}
return config;
}
//# sourceMappingURL=logger.js.map