From c97388db7822d2e291d49eeba0acfc6d53e76075 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Wed, 15 Jan 2025 20:24:15 +0100 Subject: [PATCH 1/7] fix(timers): bind global functions Co-authored-by: Yagiz Nizipli --- src/runtime/node/timers/index.ts | 12 ++++++------ test/workerd/tests.mjs | 12 ++++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/runtime/node/timers/index.ts b/src/runtime/node/timers/index.ts index 31cc2fce..115e5c9e 100644 --- a/src/runtime/node/timers/index.ts +++ b/src/runtime/node/timers/index.ts @@ -12,18 +12,18 @@ import { setIntervalFallback } from "./internal/set-interval"; export * as promises from "./promises"; export const clearImmediate: typeof timers.clearImmediate = - globalThis.clearImmediate || clearImmediateFallback; + globalThis.clearImmediate.bind(globalThis) || clearImmediateFallback; export const clearInterval: typeof timers.clearInterval = - globalThis.clearInterval || noop; + globalThis.clearInterval.bind(globalThis) || noop; export const clearTimeout: typeof timers.clearTimeout = - globalThis.clearTimeout || noop; + globalThis.clearTimeout.bind(globalThis) || noop; export const setImmediate: typeof timers.setImmediate = - globalThis.setImmediate || setImmediateFallback; + globalThis.setImmediate.bind(globalThis) || setImmediateFallback; export const setTimeout: typeof timers.setTimeout = - globalThis.setTimeout || setTimeoutFallback; + globalThis.setTimeout.bind(globalThis) || setTimeoutFallback; export const setInterval: typeof timers.setInterval = - globalThis.setInterval || setIntervalFallback; + globalThis.setInterval.bind(globalThis) || setIntervalFallback; export const active = notImplemented("timers.active"); export const _unrefActive = notImplemented("timers._unrefActive"); diff --git a/test/workerd/tests.mjs b/test/workerd/tests.mjs index e24b26e8..76e3749b 100644 --- a/test/workerd/tests.mjs +++ b/test/workerd/tests.mjs @@ -157,6 +157,18 @@ export const workerd_dns = { }, }; +// --- node:timers + +export const workerd_timers = { + async test() { + const timers = await import("unenv/runtime/node/timers"); + + timers.clearTimeout(timers.setTimeout(() => null, 1000)); + timers.clearInterval(timers.setInterval(() => null, 1000)); + timers.clearImmediate(timers.setImmediate(() => null)); + }, +}; + // --- unenv:fetch // https://github.com/unjs/unenv/issues/364 From 92bc8b68193af38c5d175944805adeee31c9f55f Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Thu, 16 Jan 2025 06:57:23 +0100 Subject: [PATCH 2/7] Update src/runtime/node/timers/index.ts Co-authored-by: Pooya Parsa --- src/runtime/node/timers/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/node/timers/index.ts b/src/runtime/node/timers/index.ts index 115e5c9e..8bc4499c 100644 --- a/src/runtime/node/timers/index.ts +++ b/src/runtime/node/timers/index.ts @@ -14,7 +14,7 @@ export * as promises from "./promises"; export const clearImmediate: typeof timers.clearImmediate = globalThis.clearImmediate.bind(globalThis) || clearImmediateFallback; export const clearInterval: typeof timers.clearInterval = - globalThis.clearInterval.bind(globalThis) || noop; + globalThis.clearInterval?.bind(globalThis) || noop; export const clearTimeout: typeof timers.clearTimeout = globalThis.clearTimeout.bind(globalThis) || noop; From a901279baf34a2096b735fa673881f581a9215cc Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Thu, 16 Jan 2025 06:57:30 +0100 Subject: [PATCH 3/7] Update src/runtime/node/timers/index.ts Co-authored-by: Pooya Parsa --- src/runtime/node/timers/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/node/timers/index.ts b/src/runtime/node/timers/index.ts index 8bc4499c..304d1f3a 100644 --- a/src/runtime/node/timers/index.ts +++ b/src/runtime/node/timers/index.ts @@ -12,7 +12,7 @@ import { setIntervalFallback } from "./internal/set-interval"; export * as promises from "./promises"; export const clearImmediate: typeof timers.clearImmediate = - globalThis.clearImmediate.bind(globalThis) || clearImmediateFallback; + globalThis.clearImmediate?.bind(globalThis) || clearImmediateFallback; export const clearInterval: typeof timers.clearInterval = globalThis.clearInterval?.bind(globalThis) || noop; export const clearTimeout: typeof timers.clearTimeout = From b8cd100e4fa2dea8bc8d0fe5ce9409b0fc8375a2 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Thu, 16 Jan 2025 06:57:36 +0100 Subject: [PATCH 4/7] Update src/runtime/node/timers/index.ts Co-authored-by: Pooya Parsa --- src/runtime/node/timers/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/node/timers/index.ts b/src/runtime/node/timers/index.ts index 304d1f3a..a7320099 100644 --- a/src/runtime/node/timers/index.ts +++ b/src/runtime/node/timers/index.ts @@ -16,7 +16,7 @@ export const clearImmediate: typeof timers.clearImmediate = export const clearInterval: typeof timers.clearInterval = globalThis.clearInterval?.bind(globalThis) || noop; export const clearTimeout: typeof timers.clearTimeout = - globalThis.clearTimeout.bind(globalThis) || noop; + globalThis.clearTimeout?.bind(globalThis) || noop; export const setImmediate: typeof timers.setImmediate = globalThis.setImmediate.bind(globalThis) || setImmediateFallback; From 28e3add13b03df3bec0dbcbe41f755799a290011 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Thu, 16 Jan 2025 06:57:42 +0100 Subject: [PATCH 5/7] Update src/runtime/node/timers/index.ts Co-authored-by: Pooya Parsa --- src/runtime/node/timers/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/node/timers/index.ts b/src/runtime/node/timers/index.ts index a7320099..b1399fe5 100644 --- a/src/runtime/node/timers/index.ts +++ b/src/runtime/node/timers/index.ts @@ -19,7 +19,7 @@ export const clearTimeout: typeof timers.clearTimeout = globalThis.clearTimeout?.bind(globalThis) || noop; export const setImmediate: typeof timers.setImmediate = - globalThis.setImmediate.bind(globalThis) || setImmediateFallback; + globalThis.setImmediate?.bind(globalThis) || setImmediateFallback; export const setTimeout: typeof timers.setTimeout = globalThis.setTimeout.bind(globalThis) || setTimeoutFallback; export const setInterval: typeof timers.setInterval = From 391502bc920aafb6aa8994d4177b0780edcd178a Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Thu, 16 Jan 2025 06:57:48 +0100 Subject: [PATCH 6/7] Update src/runtime/node/timers/index.ts Co-authored-by: Pooya Parsa --- src/runtime/node/timers/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/node/timers/index.ts b/src/runtime/node/timers/index.ts index b1399fe5..c7b3c1cf 100644 --- a/src/runtime/node/timers/index.ts +++ b/src/runtime/node/timers/index.ts @@ -21,7 +21,7 @@ export const clearTimeout: typeof timers.clearTimeout = export const setImmediate: typeof timers.setImmediate = globalThis.setImmediate?.bind(globalThis) || setImmediateFallback; export const setTimeout: typeof timers.setTimeout = - globalThis.setTimeout.bind(globalThis) || setTimeoutFallback; + globalThis.setTimeout?.bind(globalThis) || setTimeoutFallback; export const setInterval: typeof timers.setInterval = globalThis.setInterval.bind(globalThis) || setIntervalFallback; From e76917b100ca8a56640f766c8a9ca6845446210d Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Thu, 16 Jan 2025 06:57:53 +0100 Subject: [PATCH 7/7] Update src/runtime/node/timers/index.ts Co-authored-by: Pooya Parsa --- src/runtime/node/timers/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/node/timers/index.ts b/src/runtime/node/timers/index.ts index c7b3c1cf..10480d21 100644 --- a/src/runtime/node/timers/index.ts +++ b/src/runtime/node/timers/index.ts @@ -23,7 +23,7 @@ export const setImmediate: typeof timers.setImmediate = export const setTimeout: typeof timers.setTimeout = globalThis.setTimeout?.bind(globalThis) || setTimeoutFallback; export const setInterval: typeof timers.setInterval = - globalThis.setInterval.bind(globalThis) || setIntervalFallback; + globalThis.setInterval?.bind(globalThis) || setIntervalFallback; export const active = notImplemented("timers.active"); export const _unrefActive = notImplemented("timers._unrefActive");