UNPKG

@quadible/web-sdk

Version:

The web sdk for Quadible's behavioral authentication service.

52 lines 1.7 kB
"use strict"; 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