From 410d0ce44a85a5817eb38c5047cb8eec7e4e71ad Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Fri, 18 Feb 2022 12:37:36 +0100 Subject: [PATCH] tools: add timers functions to the list of restricted globals PR-URL: https://github.com/nodejs/node/pull/42013 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Mestery --- lib/.eslintrc.yaml | 12 ++++++++++++ lib/timers/promises.js | 9 +++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/.eslintrc.yaml b/lib/.eslintrc.yaml index be2e16749134bb..28c090cc098006 100644 --- a/lib/.eslintrc.yaml +++ b/lib/.eslintrc.yaml @@ -83,6 +83,12 @@ rules: message: Use `const { atob } = require('buffer');` instead of the global. - name: btoa message: Use `const { btoa } = require('buffer');` instead of the global. + - name: clearImmediate + message: Use `const { clearImmediate } = require('timers');` instead of the global. + - name: clearInterval + message: Use `const { clearInterval } = require('timers');` instead of the global. + - name: clearTimeout + message: Use `const { clearTimeout } = require('timers');` instead of the global. - name: crypto message: Use `const { crypto } = require('internal/crypto/webcrypto');` instead of the global. - name: Crypto @@ -99,6 +105,12 @@ rules: message: Use `const { performance } = require('perf_hooks');` instead of the global. - name: queueMicrotask message: Use `const { queueMicrotask } = require('internal/process/task_queues');` instead of the global. + - name: setImmediate + message: Use `const { setImmediate } = require('timers');` instead of the global. + - name: setInterval + message: Use `const { setInterval } = require('timers');` instead of the global. + - name: setTimeout + message: Use `const { setTimeout } = require('timers');` instead of the global. - name: SubtleCrypto message: Use `const { SubtleCrypto } = require('internal/crypto/webcrypto');` instead of the global. # Custom rules in tools/eslint-rules diff --git a/lib/timers/promises.js b/lib/timers/promises.js index db519a4ea9830c..81788d0a6cbbb0 100644 --- a/lib/timers/promises.js +++ b/lib/timers/promises.js @@ -14,6 +14,11 @@ const { Immediate, insert } = require('internal/timers'); +const { + clearImmediate, + clearInterval, + clearTimeout, +} = require('timers'); const { AbortError, @@ -73,7 +78,6 @@ function setTimeout(after, value, options = {}) { insert(timeout, timeout._idleTimeout); if (signal) { oncancel = FunctionPrototypeBind(cancelListenerHandler, - // eslint-disable-next-line no-undef timeout, clearTimeout, reject); signal.addEventListener('abort', oncancel); } @@ -117,7 +121,6 @@ function setImmediate(value, options = {}) { if (!ref) immediate.unref(); if (signal) { oncancel = FunctionPrototypeBind(cancelListenerHandler, - // eslint-disable-next-line no-undef immediate, clearImmediate, reject); signal.addEventListener('abort', oncancel); } @@ -152,7 +155,6 @@ async function* setInterval(after, value, options = {}) { insert(interval, interval._idleTimeout); if (signal) { onCancel = () => { - // eslint-disable-next-line no-undef clearInterval(interval); if (callback) { callback(PromiseReject(new AbortError())); @@ -172,7 +174,6 @@ async function* setInterval(after, value, options = {}) { } throw new AbortError(); } finally { - // eslint-disable-next-line no-undef clearInterval(interval); signal?.removeEventListener('abort', onCancel); }