UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

95 lines 6.67 kB
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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