UNPKG

@socketsupply/socket

Version:

A Cross-Platform, Native Runtime for Desktop and Mobile Apps — Create apps using HTML, CSS, and JavaScript. Written from the ground up to be small and maintainable.

82 lines (68 loc) 2.06 kB
import { Timeout, Immediate, Interval } from './timer.js' import scheduler from './scheduler.js' import platform from './platform.js' import promises from './promises.js' import ipc from '../ipc.js' export { platform } export function setTimeout (callback, delay, ...args) { return Timeout.from(callback, delay, ...args) } export function clearTimeout (timeout) { if (timeout instanceof Timeout) { timeout.close() } else { platform.clearTimeout(timeout) } } export function setInterval (callback, delay, ...args) { return Interval.from(callback, delay, ...args) } export function clearInterval (interval) { if (interval instanceof Interval) { interval.close() } else { platform.clearInterval(interval) } } export function setImmediate (callback, ...args) { return Immediate.from(callback, ...args) } export function clearImmediate (immediate) { if (immediate instanceof Immediate) { immediate.close() } else { platform.clearImmediate(immediate) } } /** * Pause async execution for `timeout` milliseconds. * @param {number} timeout * @return {Promise} */ export async function sleep (timeout) { await new Promise((resolve) => setTimeout(resolve, timeout)) } /** * Pause sync execution for `timeout` milliseconds. * @param {number} timeout */ sleep.sync = function (timeout) { ipc.sendSync('timers.setTimeout', { timeout, wait: true }) } setTimeout[Symbol.for('nodejs.util.promisify.custom')] = promises.setTimeout setTimeout[Symbol.for('socket.runtime.util.promisify.custom')] = promises.setTimeout setInterval[Symbol.for('nodejs.util.promisify.custom')] = promises.setInterval setInterval[Symbol.for('socket.runtime.util.promisify.custom')] = promises.setInterval setImmediate[Symbol.for('nodejs.util.promisify.custom')] = promises.setImmediate setImmediate[Symbol.for('socket.runtime.util.promisify.custom')] = promises.setImmediate export default { platform, promises, scheduler, setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate }