mirror of https://github.com/penpot/penpot.git
48 lines
749 B
JavaScript
48 lines
749 B
JavaScript
/**
|
|
* Max. amount of time we should allow.
|
|
*
|
|
* @type {number}
|
|
*/
|
|
const SAFE_GUARD_TIME = 1000;
|
|
|
|
/**
|
|
* Time at which the safeguard started.
|
|
*
|
|
* @type {number}
|
|
*/
|
|
let startTime = Date.now();
|
|
|
|
/**
|
|
* Marks the start of the safeguard.
|
|
*/
|
|
export function start() {
|
|
startTime = Date.now();
|
|
}
|
|
|
|
/**
|
|
* Checks if the safeguard should throw.
|
|
*/
|
|
export function update() {
|
|
if (Date.now - startTime >= SAFE_GUARD_TIME) {
|
|
throw new Error('Safe guard timeout');
|
|
}
|
|
}
|
|
|
|
let timeoutId = 0
|
|
export function throwAfter(error, timeout = SAFE_GUARD_TIME) {
|
|
timeoutId = setTimeout(() => {
|
|
throw error
|
|
}, timeout)
|
|
}
|
|
|
|
export function throwCancel() {
|
|
clearTimeout(timeoutId)
|
|
}
|
|
|
|
export default {
|
|
start,
|
|
update,
|
|
throwAfter,
|
|
throwCancel,
|
|
};
|