49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
import { CryptoUtil } from './classes/util/crypto.js';
|
|
|
|
const timers = new Map();
|
|
|
|
export const EPSILON = 2.23e-16;
|
|
|
|
export const INCINERATOR_ADDRESS = 0;
|
|
|
|
export const debounce = async (fn, delayMs) => {
|
|
const timer = timers.get(fn);
|
|
if (timer) {
|
|
return timer.result;
|
|
}
|
|
const result = await fn();
|
|
timers.set(fn, { result });
|
|
setTimeout(() => {
|
|
timers.delete(fn);
|
|
}, delayMs);
|
|
return result;
|
|
};
|
|
|
|
export const delay = async (delayMs) => {
|
|
await new Promise((resolve) => {
|
|
setTimeout(resolve, delayMs);
|
|
});
|
|
};
|
|
|
|
export const hexToRGB = (input) => {
|
|
if (input.startsWith('#')) {
|
|
input = input.slice(1);
|
|
}
|
|
const r = parseInt(`${input[0]}${input[1]}`, 16);
|
|
const g = parseInt(`${input[2]}${input[3]}`, 16);
|
|
const b = parseInt(`${input[4]}${input[5]}`, 16);
|
|
return { r, g, b };
|
|
};
|
|
|
|
export const displayNumber = (value, decimals = 2) => (value.toString().length > decimals + 4
|
|
? value.toFixed(decimals)
|
|
: value);
|
|
|
|
export const randomID = () => CryptoUtil.randomUUID().replaceAll('-', '').slice(0, 8);
|
|
|
|
export const mochaRun = () => {
|
|
if (mocha._state !== 'running') {
|
|
mocha.run();
|
|
}
|
|
};
|