From 9c9adf7c8e01055ee1af8870262711cfe227a867 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Tue, 15 Aug 2023 17:58:33 +0200 Subject: [PATCH] Use return type deduction for timers Fix updates to Node.js timers types breaking the TypeScript build by deducing the correct type from the return type of the setTimeout/setInterval functions. --- packages/controller/src/Controller.ts | 2 +- packages/controller/src/WsServerConnector.ts | 2 +- packages/controller/src/routes.ts | 2 +- packages/lib/src/RateLimiter.ts | 2 +- packages/lib/src/helpers.ts | 2 +- packages/lib/src/link/connectors.ts | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/controller/src/Controller.ts b/packages/controller/src/Controller.ts index 09f79563..c3ee42a0 100644 --- a/packages/controller/src/Controller.ts +++ b/packages/controller/src/Controller.ts @@ -87,7 +87,7 @@ export default class Controller { logDirectory: string = ""; clusterLogIndex: lib.LogIndex | null = null; - clusterLogBuildInterval: NodeJS.Timer | null = null; + clusterLogBuildInterval: ReturnType | null = null; constructor( clusterLogger: winston.Logger, diff --git a/packages/controller/src/WsServerConnector.ts b/packages/controller/src/WsServerConnector.ts index 5776f93a..578e7568 100644 --- a/packages/controller/src/WsServerConnector.ts +++ b/packages/controller/src/WsServerConnector.ts @@ -17,7 +17,7 @@ export interface WebSocketClusterio extends WebSocket { * @alias module:controller/src/WsServerConnector */ export default class WsServerConnector extends lib.WebSocketBaseConnector { - _timeoutId: NodeJS.Timeout | null = null; + _timeoutId: ReturnType | null = null; declare _socket: WebSocketClusterio | null; constructor( diff --git a/packages/controller/src/routes.ts b/packages/controller/src/routes.ts index 5a1de286..084b0817 100644 --- a/packages/controller/src/routes.ts +++ b/packages/controller/src/routes.ts @@ -255,7 +255,7 @@ interface ProxyStream { mime: string | null; filename: string | null; events: events.EventEmitter; - timeout: NodeJS.Timeout; + timeout: ReturnType; } export async function createProxyStream(app: Application): Promise { diff --git a/packages/lib/src/RateLimiter.ts b/packages/lib/src/RateLimiter.ts index 24390c6b..16271d0f 100644 --- a/packages/lib/src/RateLimiter.ts +++ b/packages/lib/src/RateLimiter.ts @@ -30,7 +30,7 @@ export default class RateLimiter { action?: Function; private _lastRun = 0; - private _runTimeout?: NodeJS.Timeout; + private _runTimeout?: ReturnType; /** * Construct RateLimiter helper diff --git a/packages/lib/src/helpers.ts b/packages/lib/src/helpers.ts index 31afdabc..37c41e51 100644 --- a/packages/lib/src/helpers.ts +++ b/packages/lib/src/helpers.ts @@ -37,7 +37,7 @@ export async function wait(duration: number) { * @param {*=} timeoutResult - Value to return if the operation timed out. */ export async function timeout(promise: Promise, time: number, timeoutResult: T) { - let timer: NodeJS.Timer | undefined; + let timer: ReturnType | undefined; try { return await Promise.race([ promise, diff --git a/packages/lib/src/link/connectors.ts b/packages/lib/src/link/connectors.ts index 203f9c48..742b5c30 100644 --- a/packages/lib/src/link/connectors.ts +++ b/packages/lib/src/link/connectors.ts @@ -99,7 +99,7 @@ export abstract class WebSocketBaseConnector extends BaseConnector { _closing = false; _socket: WebSocket | null = null; _lastHeartbeat: number | null = null; - _heartbeatId: NodeJS.Timer | null = null; + _heartbeatId: ReturnType | null = null; _heartbeatInterval: number | null = null; _lastReceivedSeq = undefined; _sendBuffer: (ReliableMessages)[] = []; @@ -287,7 +287,7 @@ export abstract class WebSocketBaseConnector extends BaseConnector { this.setClosing(); this._sendInternal(new libData.MessageDisconnect("prepare")); - let timeout: NodeJS.Timeout | undefined; + let timeout: ReturnType | undefined; let waitTimeout = new Promise(resolve => { timeout = setTimeout(resolve, 10000); }); // Make Configurable? try { await Promise.race([ @@ -331,7 +331,7 @@ export abstract class WebSocketBaseConnector extends BaseConnector { * @extends module:lib.WebSocketBaseConnector */ export abstract class WebSocketClientConnector extends WebSocketBaseConnector { - _reconnectId?: NodeJS.Timeout; + _reconnectId?: ReturnType; _sessionToken: string | null = null; _sessionTimeout: number | null = null; _startedResuming: number | null = null;