2020-11-11 18:24:02 +00:00
|
|
|
import {environment} from '../environments/environment';
|
2020-10-22 02:12:04 +00:00
|
|
|
|
|
|
|
export function uuid_v4() {
|
|
|
|
// @ts-ignore
|
|
|
|
return ([1e7] + - 1e3 + - 4e3 + - 8e3 + - 1e11).replace(/[018]/g, c =>
|
|
|
|
// tslint:disable-next-line:no-bitwise
|
|
|
|
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
|
|
|
|
);
|
|
|
|
}
|
2020-10-28 13:49:50 +00:00
|
|
|
|
|
|
|
export function debounce(func: (...args: any[]) => any, timeout?: number) {
|
|
|
|
let timer: number | undefined;
|
|
|
|
return (...args: any[]) => {
|
|
|
|
const next = () => func(...args);
|
|
|
|
if (timer) {
|
|
|
|
clearTimeout(timer);
|
|
|
|
}
|
|
|
|
timer = setTimeout(next, timeout > 0 ? timeout : 300);
|
|
|
|
};
|
|
|
|
}
|
2020-11-11 18:24:02 +00:00
|
|
|
|
|
|
|
export function debugRun(closure: any) {
|
|
|
|
if ( typeof closure === 'function' ) {
|
|
|
|
return closure();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isDebug() {
|
|
|
|
return environment.outputDebug;
|
|
|
|
}
|
|
|
|
|
2020-11-23 16:22:36 +00:00
|
|
|
export function getCaller(error: Error) {
|
|
|
|
const stackLines = error.stack.split(/\n|\sat\s/).map(x => x.trim()).filter(Boolean);
|
|
|
|
const messageInStack = (new Error()).stack.split(/\n|\sat\s/).map(x => x.trim()).filter(Boolean)?.[0] === 'Error';
|
|
|
|
return stackLines?.[messageInStack ? 2 : 1]?.split(/@|\s\(/)?.[0]?.replace(/[\/\\<]/g, '');
|
|
|
|
}
|
|
|
|
|
2020-11-11 18:24:02 +00:00
|
|
|
export function debug(...out: any[]) {
|
2020-11-23 16:22:36 +00:00
|
|
|
const caller = getCaller(new Error());
|
2020-11-11 18:24:02 +00:00
|
|
|
|
|
|
|
// Define different types of styles
|
|
|
|
const baseStyles = [
|
|
|
|
'color: #fff',
|
|
|
|
'background-color: #449',
|
|
|
|
'padding: 2px 4px',
|
|
|
|
'border-radius: 2px'
|
|
|
|
].join(';');
|
|
|
|
|
|
|
|
if ( environment.outputDebug ) {
|
|
|
|
console.log(`%c${caller}`, baseStyles, ...out);
|
|
|
|
}
|
|
|
|
}
|