From c6c26c533f16142779b341a160a383f93b51aad2 Mon Sep 17 00:00:00 2001 From: Alexandr Garbuzov <186095128+alexandr-garbuzov@users.noreply.github.com> Date: Wed, 15 Oct 2025 23:03:48 +0300 Subject: [PATCH] refactor: move logger into separate module (#4581) * refactor: move logger into separate module * Update api/status/pat-info.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Alexandr Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- backend/api-renamed/status/pat-info.js | 3 ++- backend/api-renamed/status/up.js | 2 +- backend/src/common/index.js | 1 - backend/src/common/log.js | 14 ++++++++++++++ backend/src/common/retryer.js | 2 +- backend/src/common/utils.js | 6 ------ backend/src/fetchers/stats.js | 2 +- backend/src/fetchers/top-languages.js | 6 ++---- backend/tests/retryer.test.js | 7 ++++++- 9 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 backend/src/common/log.js diff --git a/backend/api-renamed/status/pat-info.js b/backend/api-renamed/status/pat-info.js index 46aae023..9d2a3b7f 100644 --- a/backend/api-renamed/status/pat-info.js +++ b/backend/api-renamed/status/pat-info.js @@ -8,7 +8,8 @@ */ import { request } from "../../src/common/http.js"; -import { logger, dateDiff } from "../../src/common/utils.js"; +import { logger } from "../../src/common/log.js"; +import { dateDiff } from "../../src/common/utils.js"; export const RATE_LIMIT_SECONDS = 60 * 3; // 1 request per 3 minutes diff --git a/backend/api-renamed/status/up.js b/backend/api-renamed/status/up.js index 6bbc1ab4..a942d0d7 100644 --- a/backend/api-renamed/status/up.js +++ b/backend/api-renamed/status/up.js @@ -9,7 +9,7 @@ import { request } from "../../src/common/http.js"; import retryer from "../../src/common/retryer.js"; -import { logger } from "../../src/common/utils.js"; +import { logger } from "../../src/common/log.js"; export const RATE_LIMIT_SECONDS = 60 * 3; // 1 request per 3 minutes diff --git a/backend/src/common/index.js b/backend/src/common/index.js index 22330a45..84638a6f 100644 --- a/backend/src/common/index.js +++ b/backend/src/common/index.js @@ -14,7 +14,6 @@ export { parseArray, clampValue, flexLayout, - logger, measureText, lowercaseTrim, chunkArray, diff --git a/backend/src/common/log.js b/backend/src/common/log.js new file mode 100644 index 00000000..8a0e58b6 --- /dev/null +++ b/backend/src/common/log.js @@ -0,0 +1,14 @@ +// @ts-check + +const noop = () => {}; + +/** + * Return console instance based on the environment. + * + * @type {Console | {log: () => void, error: () => void}} + */ +const logger = + process.env.NODE_ENV === "test" ? { log: noop, error: noop } : console; + +export { logger }; +export default logger; diff --git a/backend/src/common/retryer.js b/backend/src/common/retryer.js index ab01bda7..9327fe00 100644 --- a/backend/src/common/retryer.js +++ b/backend/src/common/retryer.js @@ -1,7 +1,7 @@ // @ts-check import { CustomError } from "./error.js"; -import { logger } from "./utils.js"; +import { logger } from "./log.js"; // Script variables. diff --git a/backend/src/common/utils.js b/backend/src/common/utils.js index 8f1e03b9..f567ff5c 100644 --- a/backend/src/common/utils.js +++ b/backend/src/common/utils.js @@ -225,11 +225,6 @@ const renderError = ({ `; }; -const noop = () => {}; -// return console instance based on the environment -const logger = - process.env.NODE_ENV === "test" ? { log: noop, error: noop } : console; - /** * Retrieve text length. * @@ -374,7 +369,6 @@ export { clampValue, buildSearchFilter, flexLayout, - logger, OWNER_AFFILIATIONS, measureText, lowercaseTrim, diff --git a/backend/src/fetchers/stats.js b/backend/src/fetchers/stats.js index 1f54bdb3..5208e5e9 100644 --- a/backend/src/fetchers/stats.js +++ b/backend/src/fetchers/stats.js @@ -7,9 +7,9 @@ import { calculateRank } from "../calculateRank.js"; import { retryer } from "../common/retryer.js"; import { buildSearchFilter, - logger, parseOwnerAffiliations, } from "../common/utils.js"; +import { logger } from "../common/log.js"; import { excludeRepositories } from "../common/envs.js"; import { CustomError, MissingParamError } from "../common/error.js"; import { wrapTextMultiline } from "../common/fmt.js"; diff --git a/backend/src/fetchers/top-languages.js b/backend/src/fetchers/top-languages.js index 33a7c977..3de9f9bb 100644 --- a/backend/src/fetchers/top-languages.js +++ b/backend/src/fetchers/top-languages.js @@ -1,10 +1,8 @@ // @ts-check import { retryer } from "../common/retryer.js"; -import { - logger, - parseOwnerAffiliations, -} from "../common/utils.js"; +import { parseOwnerAffiliations } from "../common/utils.js"; +import { logger } from "../common/log.js"; import { excludeRepositories } from "../common/envs.js"; import { CustomError, MissingParamError } from "../common/error.js"; import { wrapTextMultiline } from "../common/fmt.js"; diff --git a/backend/tests/retryer.test.js b/backend/tests/retryer.test.js index 36ea8d35..6f2bc2ed 100644 --- a/backend/tests/retryer.test.js +++ b/backend/tests/retryer.test.js @@ -1,7 +1,9 @@ +// @ts-check + import { describe, expect, it, jest } from "@jest/globals"; import "@testing-library/jest-dom"; import { RETRIES, retryer } from "../src/common/retryer.js"; -import { logger } from "../src/common/utils.js"; +import { logger } from "../src/common/log.js"; const fetcher = jest.fn((variables, token) => { logger.log(variables, token); @@ -17,6 +19,7 @@ const fetcherFail = jest.fn(() => { const fetcherFailOnSecondTry = jest.fn((_vars, _token, retries) => { return new Promise((res) => { // faking rate limit + // @ts-ignore if (retries < 1) { return res({ data: { errors: [{ type: "RATE_LIMITED" }] } }); } @@ -28,6 +31,7 @@ const fetcherFailWithMessageBasedRateLimitErr = jest.fn( (_vars, _token, retries) => { return new Promise((res) => { // faking rate limit + // @ts-ignore if (retries < 1) { return res({ data: { @@ -72,6 +76,7 @@ describe("Test Retryer", () => { await retryer(fetcherFail, {}); } catch (err) { expect(fetcherFail).toHaveBeenCalledTimes(RETRIES + 1); + // @ts-ignore expect(err.message).toBe("Downtime due to GitHub API rate limiting"); } });