@jjdenhertog/ai-driven-development
Version:
AI-driven development workflow with learning capabilities for Claude
56 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.log = log;
exports.logError = logError;
const fs_extra_1 = require("fs-extra");
function formatPrettyTimestamp(date = new Date()) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}`;
}
function log(message, type = 'info', prefix = '[aidev]', logPath) {
if (global.log_as_json) {
console.log(JSON.stringify({ type, message }));
return;
}
if (message.startsWith(prefix)) {
console.log(message);
return;
}
const time = formatPrettyTimestamp();
let styledMessage = message;
switch (type) {
case 'warn':
styledMessage = `${prefix} \x1B[2m${time}\x1B[0m \x1B[38;5;214m${message}\x1B[0m`;
break;
case 'success':
styledMessage = `${prefix} \x1B[2m${time}\x1B[0m \x1B[38;5;36m${message}\x1B[0m`;
break;
case 'error':
styledMessage = `${prefix} \x1B[2m${time}\x1B[0m \x1B[31m${message}\x1B[0m`;
break;
case "light":
styledMessage = `${prefix} \x1B[2m${time}\x1B[0m \x1B[2m${message}\x1B[0m`;
break;
default:
styledMessage = `${prefix} \x1B[2m${time}\x1B[0m ${message}`;
break;
}
// eslint-disable-next-line no-console
console.log(styledMessage);
if (logPath) {
(0, fs_extra_1.appendFileSync)(logPath, `${JSON.stringify({
type,
message: styledMessage,
timestamp: new Date().toISOString()
})}\n`);
}
}
function logError(message, prefix = '[aidev]') {
// eslint-disable-next-line no-console
console.log(`${prefix} \x1B[31mERROR:\x1B[0m ${message}`);
}
//# sourceMappingURL=logger.js.map