@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
95 lines • 6.67 kB
JavaScript
export class TgdConsole {
/**
* Return a function that will log only if a value has changed.
*/
static memo(defaultLogger) {
let previousValue = null;
const out = new TgdConsole();
return (value, logger) => {
if (value === previousValue)
return;
previousValue = value;
const simpleLogger = (o) => {
o.add(JSON.stringify(value)).debug();
};
out.clear();
(logger ?? defaultLogger ?? simpleLogger)(out);
};
}
static log(...items) {
new TgdConsole(...items).log();
}
static info(...items) {
new TgdConsole(...items).info();
}
static debug(...items) {
new TgdConsole(...items).debug();
}
static warn(...items) {
new TgdConsole(...items).warn();
}
static error(...items) {
new TgdConsole(...items).error();
}
constructor(...items) {
this.items = [];
this.clear();
for (const item of items) {
if (typeof item === "string")
this.add(item);
else
this.add(item.text, item);
}
}
clear() {
this.items.splice(0, this.items.length, {
text: "%c",
style: "background:#000;color:#fff;font-family:monospace;font-size:90%;white-space:pre;",
});
}
add(text = "\n", { color = "currentColor", background = "transparent", bold = false } = {}) {
this.items.push({
text: `%c${text}`,
style: `color:${color};background:${background};font-weight:${bold ? "bold" : "normal"};`,
});
return this;
}
nl() {
return this.add();
}
log() {
console.log(...this.args);
}
info() {
console.info(...this.args);
}
debug() {
console.debug(...this.args);
}
warn() {
console.warn(...this.args.map(setDefaultStyle({ color: "#fff", background: "#990" })));
}
error() {
console.error(...this.args.map(setDefaultStyle({ color: "#fff", background: "#a00" })));
}
get args() {
return [this.items.map(({ text }) => text).join(""), ...this.items.map(({ style }) => style)];
}
}
function setDefaultStyle(defaultStyle) {
return (item) => {
if (typeof item === "string")
return {
text: item,
style: defaultStyle,
};
return {
text: item.text,
style: {
...defaultStyle,
...item,
},
};
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWJ1Zy9jb25zb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sT0FBTyxVQUFVO0lBQ25COztPQUVHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUF5QztRQUNqRCxJQUFJLGFBQWEsR0FBWSxJQUFJLENBQUE7UUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQTtRQUM1QixPQUFPLENBQUMsS0FBYyxFQUFFLE1BQWtDLEVBQUUsRUFBRTtZQUMxRCxJQUFJLEtBQUssS0FBSyxhQUFhO2dCQUFFLE9BQU07WUFFbkMsYUFBYSxHQUFHLEtBQUssQ0FBQTtZQUNyQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQWEsRUFBRSxFQUFFO2dCQUNuQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUN4QyxDQUFDLENBQUE7WUFDRCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQ1Y7WUFBQSxDQUFDLE1BQU0sSUFBSSxhQUFhLElBQUksWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFrQztRQUM1QyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBa0M7UUFDN0MsSUFBSSxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQWtDO1FBQzlDLElBQUksVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFF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