aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/node_timers.exports.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/node_timers.exports.js')
-rw-r--r--src/bun.js/node_timers.exports.js105
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,