ixfx
Version:
A framework for programming interactivity
106 lines (104 loc) • 2.68 kB
JavaScript
// src/data/maps/GetOrGenerate.ts
var getOrGenerateSync = (map, fn) => (key, args) => {
let value = map.get(key);
if (value !== void 0) return value;
value = fn(key, args);
map.set(key, value);
return value;
};
var getOrGenerate = (map, fn) => async (key, args) => {
let value = map.get(key);
if (value !== void 0) return value;
value = await fn(key, args);
if (value === void 0) throw new Error(`fn returned undefined`);
map.set(key, value);
return value;
};
// src/debug/Logger.ts
var logger = (prefix, kind = `log`, colourKey) => (m) => {
if (m === void 0) {
m = `(undefined)`;
} else if (typeof m === `object`) {
m = JSON.stringify(m);
}
const colour = colourKey ?? prefix;
switch (kind) {
case `log`: {
console.log(`%c${prefix} ${m}`, `color: ${logColours(colour)}`);
break;
}
case `warn`: {
console.warn(prefix, m);
break;
}
case `error`: {
console.error(prefix, m);
break;
}
}
};
var logSet = (prefix, verbose = true, colourKey) => {
if (verbose) {
return {
log: logger(prefix, `log`, colourKey),
warn: logger(prefix, `warn`, colourKey),
error: logger(prefix, `error`, colourKey)
};
}
return {
//eslint-disable-next-line @typescript-eslint/no-explicit-any
log: (_) => {
},
warn: logger(prefix, `warn`, colourKey),
error: logger(prefix, `error`, colourKey)
};
};
var resolveLogOption = (l, defaults = {}) => {
if (l === void 0 || typeof l === `boolean` && !l) {
return (_) => {
};
}
const defaultCat = defaults.category ?? ``;
const defaultKind = defaults.kind ?? void 0;
if (typeof l === `boolean`) {
return (messageOrString) => {
const m = typeof messageOrString === `string` ? { msg: messageOrString } : messageOrString;
const kind = m.kind ?? defaultKind;
const category = m.category ?? defaultCat;
let message = m.msg;
if (category) message = `[${category}] ${message}`;
switch (kind) {
case `error`: {
console.error(message);
break;
}
case `warn`: {
console.warn(message);
break;
}
case `info`: {
console.info(message);
break;
}
default: {
console.log(message);
}
}
};
}
return l;
};
var logColourCount = 0;
var logColours = getOrGenerateSync(/* @__PURE__ */ new Map(), () => {
const hue = ++logColourCount * 137.508;
return `hsl(${hue},50%,75%)`;
});
export {
getOrGenerateSync,
getOrGenerate,
logger,
logSet,
resolveLogOption,
logColours
};
//# sourceMappingURL=chunk-N6YIY4CM.js.map