Initial commit
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
function cleanValue(value) {
|
||||
if (value === undefined || value === null || value === '') return undefined;
|
||||
if (value instanceof Error) return value.message;
|
||||
if (typeof value === 'string') return value.replace(/[\r\n\t]+/g, ' ').slice(0, 500);
|
||||
if (typeof value === 'number' || typeof value === 'boolean') return value;
|
||||
if (Array.isArray(value)) return value.slice(0, 20).map(cleanValue);
|
||||
if (typeof value === 'object') {
|
||||
const out = {};
|
||||
for (const [key, item] of Object.entries(value)) {
|
||||
if (/token|authorization|code$/i.test(key)) continue;
|
||||
const cleaned = cleanValue(item);
|
||||
if (cleaned !== undefined) out[key] = cleaned;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
return String(value).slice(0, 500);
|
||||
}
|
||||
|
||||
export function logEvent(level, event, message, fields = {}) {
|
||||
const normalized = String(level || 'info').toLowerCase();
|
||||
const meta = cleanValue(fields) || {};
|
||||
const suffix = Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : '';
|
||||
const line = `[${new Date().toISOString()}] [kovi] ${normalized.toUpperCase()} ${event} — ${message}${suffix}`;
|
||||
if (normalized === 'error') console.error(line);
|
||||
else if (normalized === 'warn' || normalized === 'warning') console.warn(line);
|
||||
else console.log(line);
|
||||
}
|
||||
|
||||
export const info = (event, message, fields) => logEvent('info', event, message, fields);
|
||||
export const warn = (event, message, fields) => logEvent('warn', event, message, fields);
|
||||
export const error = (event, message, fields) => logEvent('error', event, message, fields);
|
||||
Reference in New Issue
Block a user