From db18c010aab095e5dde63d110d8ec79e2ab0c853 Mon Sep 17 00:00:00 2001 From: ztimson Date: Tue, 29 Oct 2024 10:41:25 -0400 Subject: [PATCH] Added adjusted interval & set errorFromCode to always return an error even on 200's --- package.json | 2 +- src/errors.ts | 1 - src/time.ts | 22 ++++++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a883372..e8fdda5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ztimson/utils", - "version": "0.21.5", + "version": "0.21.6", "description": "Utility library", "author": "Zak Timson", "license": "MIT", diff --git a/src/errors.ts b/src/errors.ts index de47eb1..9780f57 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -180,7 +180,6 @@ export class GatewayTimeoutError extends CustomError { * @return {CustomError} The proper error type */ export function errorFromCode(code: number, message?: string) { - if(code >= 200 && code < 300) return null; switch(code) { case 400: return new BadRequestError(message); diff --git a/src/time.ts b/src/time.ts index 2f7188b..c32d7b3 100644 --- a/src/time.ts +++ b/src/time.ts @@ -1,3 +1,25 @@ +/** + * Like setInterval but will adjust the timeout value to account for runtime + * @param {Function} cb Callback function that will be ran + * @param {number} ms Run function ever x seconds + * @return {() => void} + */ +export function adjustedInterval(cb: Function, ms: number) { + let cancel = false, timeout: any = null; + const p = async () => { + if (cancel) return; + const start = new Date().getTime(); + await cb(); + const end = new Date().getTime(); + timeout = setTimeout(() => p(), ms - (end - start) || 1); + }; + p(); + return () => { + cancel = true; + if(timeout) clearTimeout(timeout); + } +} + /** * Return date formated highest to lowest: YYYY-MM-DD H:mm AM *