@quadible/web-sdk
Version:
The web sdk for Quadible's behavioral authentication service.
52 lines • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.wait = wait;
exports.isPromise = isPromise;
exports.awaitIfAsync = awaitIfAsync;
exports.mapWithBreaks = mapWithBreaks;
exports.suppressUnhandledRejectionWarning = suppressUnhandledRejectionWarning;
function wait(durationMs, resolveWith) {
return new Promise((resolve) => setTimeout(resolve, durationMs, resolveWith));
}
function releaseEventLoop() {
return new Promise((resolve) => {
const channel = new MessageChannel();
channel.port1.onmessage = () => resolve();
channel.port2.postMessage(null);
});
}
function isPromise(value) {
return !!value && typeof value.then === 'function';
}
function awaitIfAsync(action, callback) {
try {
const returnedValue = action();
if (isPromise(returnedValue)) {
returnedValue.then((result) => callback(true, result), (error) => callback(false, error));
}
else {
callback(true, returnedValue);
}
}
catch (error) {
callback(false, error);
}
}
async function mapWithBreaks(items, callback, loopReleaseInterval = 16) {
const results = Array(items.length);
let lastLoopReleaseTime = Date.now();
for (let i = 0; i < items.length; ++i) {
results[i] = callback(items[i], i);
const now = Date.now();
if (now >= lastLoopReleaseTime + loopReleaseInterval) {
lastLoopReleaseTime = now;
await releaseEventLoop();
}
}
return results;
}
function suppressUnhandledRejectionWarning(promise) {
promise.then(undefined, () => undefined);
return promise;
}
//# sourceMappingURL=async.js.map