From 976db143de20855fc429641afd334cf6f1b1b208 Mon Sep 17 00:00:00 2001 From: Alexandr Garbuzov Date: Tue, 12 Sep 2023 11:07:20 +0300 Subject: [PATCH] refactor: use more clear retryer error messages (#3216) --- src/common/retryer.js | 7 ++++++- src/common/utils.js | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/common/retryer.js b/src/common/retryer.js index 49d506d..2a441f1 100644 --- a/src/common/retryer.js +++ b/src/common/retryer.js @@ -1,10 +1,12 @@ import { CustomError, logger } from "./utils.js"; // Script variables. + +// Count the number of GitHub API tokens available. const PATs = Object.keys(process.env).filter((key) => /PAT_\d*$/.exec(key), ).length; -const RETRIES = PATs ? PATs : 7; +const RETRIES = process.env.NODE_ENV === "test" ? 7 : PATs; /** * @typedef {import("axios").AxiosResponse} AxiosResponse Axios response. @@ -20,6 +22,9 @@ const RETRIES = PATs ? PATs : 7; * @returns {Promise} The response from the fetcher function. */ const retryer = async (fetcher, variables, retries = 0) => { + if (!RETRIES) { + throw new CustomError("No GitHub API tokens found", CustomError.NO_TOKENS); + } if (retries > RETRIES) { throw new CustomError("Maximum retries exceeded", CustomError.MAX_RETRY); } diff --git a/src/common/utils.js b/src/common/utils.js index 9d90985..0bf2d05 100644 --- a/src/common/utils.js +++ b/src/common/utils.js @@ -381,8 +381,9 @@ const CONSTANTS = { }; const SECONDARY_ERROR_MESSAGES = { - MAX_RETRY: - "Please add an env variable called PAT_1 with your github token in vercel", + MAX_RETRY: "Downtime due to GitHub API rate limiting", + NO_TOKENS: + "Please add an env variable called PAT_1 with your GitHub API token in vercel", USER_NOT_FOUND: "Make sure the provided username is not an organization", GRAPHQL_ERROR: "Please try again later", WAKATIME_USER_NOT_FOUND: "Make sure you have a public WakaTime profile", @@ -403,6 +404,7 @@ class CustomError extends Error { } static MAX_RETRY = "MAX_RETRY"; + static NO_TOKENS = "NO_TOKENS"; static USER_NOT_FOUND = "USER_NOT_FOUND"; static GRAPHQL_ERROR = "GRAPHQL_ERROR"; static WAKATIME_ERROR = "WAKATIME_ERROR";