diff options
Diffstat (limited to 'src/bun.js/node_timers.exports.js')
| -rw-r--r-- | src/bun.js/node_timers.exports.js | 105 |
1 files changed, 1 insertions, 104 deletions
diff --git a/src/bun.js/node_timers.exports.js b/src/bun.js/node_timers.exports.js index d1f3e81e7..52dec5baa 100644 --- a/src/bun.js/node_timers.exports.js +++ b/src/bun.js/node_timers.exports.js @@ -1,110 +1,7 @@ // This implementation isn't 100% correct // Ref/unref does not impact whether the process is kept alive -var clear = Symbol("clear"); -class Timeout { - #id; - #refCount = 1; - #clearFunction; - - constructor(id, clearFunction) { - this.#id = id; - this.#refCount = 1; - this.#clearFunction = clearFunction; - } - - ref() { - this.#refCount += 1; - } - - hasRef() { - return this.#refCount > 0; - } - - [clear]() { - this.#refCount = 0; - var clearFunction = this.#clearFunction; - if (clearFunction) { - this.#clearFunction = null; - clearFunction(this.#id); - } - } - - unref() { - this.#refCount -= 1; - var clearFunction = this.#clearFunction; - if (clearFunction && this.#refCount === 0) { - this.#clearFunction = null; - clearFunction(this.#id); - } - } -} -var { - setTimeout: setTimeout_, - setImmediate: setImmediate_, - clearTimeout: clearTimeout_, - setInterval: setInterval_, - clearInterval: clearInterval_, -} = globalThis; - -export function setImmediate(callback, ...args) { - if (typeof callback !== "function") { - throw new TypeError("callback must be a function"); - } - var cleared = false; - function clearImmediate(id) { - cleared = true; - } - - const wrapped = function (callback, args) { - if (cleared) { - return; - } - cleared = true; - try { - callback(...args); - } catch (e) { - reportError(e); - } finally { - } - }; - - return new Timeout(setImmediate_(wrapped, callback, args), clearImmediate); -} - -export function setTimeout(callback, delay, ...args) { - if (typeof callback !== "function") { - throw new TypeError("callback must be a function"); - } - - return new Timeout(setTimeout_.apply(globalThis, arguments), clearTimeout_); -} - -export function setInterval(callback, delay, ...args) { - if (typeof callback !== "function") { - throw new TypeError("callback must be a function"); - } - - return new Timeout(setInterval_.apply(globalThis, arguments), clearInterval_); -} - -export function clearTimeout(id) { - if (id && typeof id === "object" && id[clear]) { - id[clear](); - return; - } - - clearTimeout_(id); -} - -export function clearInterval(id) { - if (id && typeof id === "object" && id[clear]) { - id[clear](); - return; - } - - clearInterval_(id); -} +export var { setTimeout, clearTimeout, setInterval, setImmediate, clearInterval, clearImmediate } = globalThis; export default { setInterval, |
