src/index.ts1004 B · typescript
export type LogLevel = "info" | "warn" | "error" | "debug";
export interface ChaosConfig {
chaosLevel: number; // 0 to 1, probability of chaos
throwError?: boolean; // If true, might throw. If false, just mangles output.
}
export class ChaosLogger {
private config: ChaosConfig;
constructor(config: ChaosConfig = { chaosLevel: 0.1, throwError: true }) {
this.config = config;
}
log(level: LogLevel, message: string): void {
if (Math.random() < this.config.chaosLevel) {
this.unleashChaos(message);
return;
}
console.log(`[${level.toUpperCase()}] ${message}`);
}
private unleashChaos(message: string): void {
if (this.config.throwError && Math.random() > 0.5) {
throw new Error(`🔥 CHAOS ERUPTED: Failed to log "${message}" because the universe said no.`);
}
// Mangle message
const mangled = message.split("").map(c => Math.random() > 0.8 ? "?" : c).join("");
console.log(`[????] ${mangled} (something smells burnt)`);
}
}