diff --git a/api/index.js b/api/index.js index df4a32a..10dd484 100644 --- a/api/index.js +++ b/api/index.js @@ -1,6 +1,6 @@ import * as dotenv from "dotenv"; -import renderStatsCard from "../src/cards/stats-card.js"; -import blacklist from "../src/common/blacklist.js"; +import { renderStatsCard } from "../src/cards/stats-card.js"; +import { blacklist } from "../src/common/blacklist.js"; import { clampValue, CONSTANTS, @@ -8,7 +8,7 @@ import { parseBoolean, renderError, } from "../src/common/utils.js"; -import fetchStats from "../src/fetchers/stats-fetcher.js"; +import { fetchStats } from "../src/fetchers/stats-fetcher.js"; import { isLocaleAvailable } from "../src/translations.js"; dotenv.config(); diff --git a/api/pin.js b/api/pin.js index 20432f9..e83750a 100644 --- a/api/pin.js +++ b/api/pin.js @@ -1,12 +1,12 @@ -import renderRepoCard from "../src/cards/repo-card.js"; -import blacklist from "../src/common/blacklist.js"; +import { renderRepoCard } from "../src/cards/repo-card.js"; +import { blacklist } from "../src/common/blacklist.js"; import { clampValue, CONSTANTS, parseBoolean, renderError, } from "../src/common/utils.js"; -import fetchRepo from "../src/fetchers/repo-fetcher.js"; +import { fetchRepo } from "../src/fetchers/repo-fetcher.js"; import { isLocaleAvailable } from "../src/translations.js"; export default async (req, res) => { diff --git a/api/top-langs.js b/api/top-langs.js index c3c0ec7..aa29b23 100644 --- a/api/top-langs.js +++ b/api/top-langs.js @@ -1,6 +1,6 @@ import * as dotenv from "dotenv"; import { renderTopLanguages } from "../src/cards/top-languages-card.js"; -import blacklist from "../src/common/blacklist.js"; +import { blacklist } from "../src/common/blacklist.js"; import { clampValue, CONSTANTS, @@ -8,7 +8,7 @@ import { parseBoolean, renderError, } from "../src/common/utils.js"; -import fetchTopLanguages from "../src/fetchers/top-languages-fetcher.js"; +import { fetchTopLanguages } from "../src/fetchers/top-languages-fetcher.js"; import { isLocaleAvailable } from "../src/translations.js"; dotenv.config(); diff --git a/api/wakatime.js b/api/wakatime.js index 7879008..bbfb2f2 100644 --- a/api/wakatime.js +++ b/api/wakatime.js @@ -1,5 +1,5 @@ import * as dotenv from "dotenv"; -import wakatimeCard from "../src/cards/wakatime-card.js"; +import { renderWakatimeCard } from "../src/cards/wakatime-card.js"; import { clampValue, CONSTANTS, @@ -7,7 +7,7 @@ import { parseBoolean, renderError, } from "../src/common/utils.js"; -import fetchWakatimeStats from "../src/fetchers/wakatime-fetcher.js"; +import { fetchWakatimeStats } from "../src/fetchers/wakatime-fetcher.js"; import { isLocaleAvailable } from "../src/translations.js"; dotenv.config(); @@ -58,7 +58,7 @@ export default async (req, res) => { res.setHeader("Cache-Control", `public, max-age=${cacheSeconds}`); return res.send( - wakatimeCard(stats, { + renderWakatimeCard(stats, { custom_title, hide_title: parseBoolean(hide_title), hide_border: parseBoolean(hide_border), diff --git a/jest.config.js b/jest.config.js index 7fbe69b..312d88a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,4 +2,5 @@ export default { clearMocks: true, transform: {}, testEnvironment: "jsdom", + coverageProvider: "v8", }; diff --git a/package-lock.json b/package-lock.json index 871a1c4..9e260a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "devDependencies": { "@actions/core": "^1.2.4", "@actions/github": "^4.0.0", + "@babel/plugin-syntax-import-assertions": "^7.18.6", "@testing-library/dom": "^8.17.1", "@testing-library/jest-dom": "^5.16.5", "@uppercod/css-to-object": "^1.1.1", @@ -465,6 +466,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -5672,6 +5688,15 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", diff --git a/package.json b/package.json index 4cfcd07..3b61530 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,13 @@ "@actions/github": "^4.0.0", "@testing-library/dom": "^8.17.1", "@testing-library/jest-dom": "^5.16.5", - "jest-environment-jsdom": "^29.0.3", - "jest": "^29.0.3", "@uppercod/css-to-object": "^1.1.1", "axios-mock-adapter": "^1.18.1", "color-contrast-checker": "^2.1.0", "hjson": "^3.2.2", "husky": "^4.2.5", + "jest": "^29.0.3", + "jest-environment-jsdom": "^29.0.3", "js-yaml": "^4.1.0", "lodash.snakecase": "^4.1.1", "parse-diff": "^0.7.0", diff --git a/src/common/Card.js b/src/common/Card.js index 347ea52..5fd4b9f 100644 --- a/src/common/Card.js +++ b/src/common/Card.js @@ -1,5 +1,5 @@ -import { encodeHTML, flexLayout } from "../common/utils.js"; import { getAnimations } from "../getStyles.js"; +import { encodeHTML, flexLayout } from "./utils.js"; class Card { /** diff --git a/src/common/createProgressNode.js b/src/common/createProgressNode.js index ea658eb..4cc3747 100644 --- a/src/common/createProgressNode.js +++ b/src/common/createProgressNode.js @@ -1,4 +1,4 @@ -import { clampValue } from "../common/utils.js"; +import { clampValue } from "./utils.js"; const createProgressNode = ({ x, diff --git a/src/common/languageColors.json b/src/common/languageColors.json index 3c1370f..7e8cd55 100644 --- a/src/common/languageColors.json +++ b/src/common/languageColors.json @@ -15,6 +15,7 @@ "ATS": "#1ac620", "ActionScript": "#882B0F", "Ada": "#02f88c", + "Adblock Filter List": "#800000", "Adobe Font Metrics": "#fa0f00", "Agda": "#315665", "Alloy": "#64C800", @@ -22,6 +23,7 @@ "Altium Designer": "#A89663", "AngelScript": "#C7D7DC", "Ant Build System": "#A9157E", + "Antlers": "#ff269e", "ApacheConf": "#d12127", "Apex": "#1797c0", "Apollo Guidance Computer": "#0B3D91", @@ -41,8 +43,10 @@ "Ballerina": "#FF5000", "Batchfile": "#C1F12E", "Beef": "#a52f4e", + "Berry": "#15A13C", "BibTeX": "#778899", "Bicep": "#519aba", + "Bikeshed": "#5562ac", "Bison": "#6A463F", "BitBake": "#00bce4", "Blade": "#f7523f", @@ -52,11 +56,13 @@ "Boo": "#d4bec1", "Boogie": "#c80fa0", "Brainfuck": "#2F2530", + "BrighterScript": "#66AABB", "Brightscript": "#662D91", "Browserslist": "#ffd539", "C": "#555555", "C#": "#178600", "C++": "#f34b7d", + "CAP CDS": "#0092d1", "CLIPS": "#00A300", "CMake": "#DA3434", "COLLADA": "#F1A42B", @@ -66,7 +72,9 @@ "CUE": "#5886E1", "CWeb": "#00007a", "Cabal Config": "#483465", + "Cadence": "#00ef8b", "Cairo": "#ff4a48", + "CameLIGO": "#3be133", "Cap'n Proto": "#c42727", "Ceylon": "#dfa535", "Chapel": "#8dc63f", @@ -120,6 +128,7 @@ "Eiffel": "#4d6977", "Elixir": "#6e4a7e", "Elm": "#60B5CC", + "Elvish": "#55BB55", "Emacs Lisp": "#c065db", "EmberScript": "#FFF4F3", "Erlang": "#B83998", @@ -153,6 +162,9 @@ "GSC": "#FF6800", "Game Maker Language": "#71b417", "Gemfile.lock": "#701516", + "Gemini": "#ff6900", + "Genero": "#63408e", + "Genero Forms": "#d8df39", "Genie": "#fb855d", "Genshi": "#951531", "Gentoo Ebuild": "#9400ff", @@ -161,6 +173,7 @@ "Gherkin": "#5B2063", "Git Attributes": "#F44D27", "Git Config": "#F44D27", + "Git Revision List": "#F44D27", "Gleam": "#ffaff3", "Glyph": "#c1ac7f", "Gnuplot": "#f0a9f0", @@ -178,6 +191,7 @@ "Groovy Server Pages": "#4298b8", "HAProxy": "#106da9", "HLSL": "#aace60", + "HOCON": "#9ff8ee", "HTML": "#e34c26", "HTML+ECR": "#2e1052", "HTML+EEX": "#6e4a7e", @@ -222,6 +236,7 @@ "JavaScript": "#f1e05a", "JavaScript+ERB": "#f1e05a", "Jest Snapshot": "#15c213", + "JetBrains MPS": "#21D789", "Jinja": "#a52a22", "Jison": "#56b3cb", "Jison Lex": "#56b3cb", @@ -246,6 +261,7 @@ "Latte": "#f2a542", "Less": "#1d365d", "Lex": "#DBCA00", + "LigoLANG": "#0e74ff", "LilyPond": "#9ccc7c", "Liquid": "#67b8de", "Literate Agda": "#315665", @@ -278,13 +294,16 @@ "Modelica": "#de1d31", "Modula-2": "#10253f", "Modula-3": "#223388", + "Monkey C": "#8D6747", "MoonScript": "#ff4585", "Motoko": "#fbb03b", "Motorola 68K Assembly": "#005daa", + "Move": "#4a137a", "Mustache": "#724b3b", "NCL": "#28431f", "NPM Config": "#cb3837", "NWScript": "#111522", + "Nasal": "#1d2c4e", "Nearley": "#990000", "Nemerle": "#3d3c6e", "NetLinx": "#0aa0ff", @@ -332,6 +351,7 @@ "PigLatin": "#fcd7de", "Pike": "#005390", "PogoScript": "#d80074", + "Portugol": "#f8bd00", "PostCSS": "#dc3a0c", "PostScript": "#da291c", "PowerBuilder": "#8f0f8d", @@ -366,6 +386,7 @@ "Rascal": "#fffaa0", "ReScript": "#ed5051", "Reason": "#ff5847", + "ReasonLIGO": "#ff5847", "Rebol": "#358a5b", "Record Jar": "#0673ba", "Red": "#f50000", @@ -377,6 +398,7 @@ "Roff": "#ecdebe", "Roff Manpage": "#ecdebe", "Rouge": "#cc0088", + "RouterOS Script": "#DE3941", "Ruby": "#701516", "Rust": "#dea584", "SAS": "#B34936", @@ -386,6 +408,7 @@ "SQL": "#e38c00", "SQLPL": "#e38c00", "SRecode Template": "#348a34", + "STL": "#373b5e", "SVG": "#ff9900", "SaltStack": "#646464", "Sass": "#a53b70", @@ -425,8 +448,9 @@ "TOML": "#9c4221", "TSQL": "#e38c00", "TSV": "#237346", - "TSX": "#2b7489", + "TSX": "#3178c6", "TXL": "#0178b8", + "Talon": "#333333", "Tcl": "#e4cc98", "TeX": "#3D6117", "Terra": "#00004c", @@ -435,7 +459,7 @@ "Thrift": "#D12127", "Turing": "#cf142b", "Twig": "#c1d026", - "TypeScript": "#2b7489", + "TypeScript": "#3178c6", "Unified Parallel C": "#4e3617", "Unity3D Asset": "#222c37", "Uno": "#9933cc", @@ -446,8 +470,9 @@ "VBScript": "#15dcdc", "VCL": "#148AA8", "VHDL": "#adb2cb", - "Vala": "#fbe5cd", + "Vala": "#a56de2", "Valve Data Format": "#f26025", + "Velocity Template Language": "#507cff", "Verilog": "#b2b7f8", "Vim Help File": "#199f4b", "Vim Script": "#199f4b", @@ -458,11 +483,13 @@ "Vyper": "#2980b9", "Web Ontology Language": "#5b70bd", "WebAssembly": "#04133b", + "Whiley": "#d5c397", "Wikitext": "#fc5757", "Windows Registry Entries": "#52d5ff", "Witcher Script": "#ff0000", "Wollok": "#a23738", "World of Warcraft Addon Data": "#f7e43f", + "Wren": "#383838", "X10": "#4B6BEF", "XC": "#99DA07", "XML": "#0060ac", @@ -476,6 +503,7 @@ "YARA": "#220000", "YASnippet": "#32AB90", "Yacc": "#4B6C4B", + "Yul": "#794932", "ZAP": "#0d665e", "ZIL": "#dc75e5", "ZenScript": "#00BCD1", @@ -499,4 +527,4 @@ "wdl": "#42f1f4", "wisp": "#7582D1", "xBase": "#403a40" -} +} \ No newline at end of file diff --git a/src/common/retryer.js b/src/common/retryer.js index 5fcbc07..c898ef3 100644 --- a/src/common/retryer.js +++ b/src/common/retryer.js @@ -1,4 +1,4 @@ -import { CustomError, logger } from "../common/utils.js"; +import { CustomError, logger } from "./utils.js"; const retryer = async (fetcher, variables, retries = 0) => { if (retries > 7) { diff --git a/tests/__snapshots__/renderWakatimeCard.test.js.snap b/tests/__snapshots__/renderWakatimeCard.test.js.snap index 69e22e4..dd9ffd3 100644 --- a/tests/__snapshots__/renderWakatimeCard.test.js.snap +++ b/tests/__snapshots__/renderWakatimeCard.test.js.snap @@ -134,7 +134,7 @@ exports[`Test Render Wakatime Card should render correctly with compact layout 1 y="0" width="0.465" height="8" - fill="#2b7489" + fill="#3178c6" /> @@ -146,7 +146,7 @@ exports[`Test Render Wakatime Card should render correctly with compact layout 1 - + TypeScript - 1 min diff --git a/tests/api.test.js b/tests/api.test.js index 3aa859d..b0dfc59 100644 --- a/tests/api.test.js +++ b/tests/api.test.js @@ -2,8 +2,8 @@ import { jest } from "@jest/globals"; import axios from "axios"; import MockAdapter from "axios-mock-adapter"; import api from "../api/index.js"; -import calculateRank from "../src/calculateRank.js"; -import renderStatsCard from "../src/cards/stats-card.js"; +import { calculateRank } from "../src/calculateRank.js"; +import { renderStatsCard } from "../src/cards/stats-card.js"; import { CONSTANTS, renderError } from "../src/common/utils.js"; const stats = { diff --git a/tests/calculateRank.test.js b/tests/calculateRank.test.js index 487a17f..5cc19a0 100644 --- a/tests/calculateRank.test.js +++ b/tests/calculateRank.test.js @@ -1,5 +1,5 @@ import "@testing-library/jest-dom"; -import calculateRank from "../src/calculateRank.js"; +import { calculateRank } from "../src/calculateRank.js"; describe("Test calculateRank", () => { it("should calculate rank correctly", () => { diff --git a/tests/card.test.js b/tests/card.test.js index bd13f40..11c02d4 100644 --- a/tests/card.test.js +++ b/tests/card.test.js @@ -1,8 +1,8 @@ import { queryByTestId } from "@testing-library/dom"; import "@testing-library/jest-dom"; import { cssToObject } from "@uppercod/css-to-object"; -import Card from "../src/common/Card.js"; -import icons from "../src/common/icons.js"; +import { Card } from "../src/common/Card.js"; +import { icons } from "../src/common/icons.js"; import { getCardColors } from "../src/common/utils.js"; describe("Card", () => { diff --git a/tests/fetchRepo.test.js b/tests/fetchRepo.test.js index 549a0e0..966f2d8 100644 --- a/tests/fetchRepo.test.js +++ b/tests/fetchRepo.test.js @@ -1,7 +1,7 @@ import "@testing-library/jest-dom"; import axios from "axios"; import MockAdapter from "axios-mock-adapter"; -import fetchRepo from "../src/fetchers/repo-fetcher.js"; +import { fetchRepo } from "../src/fetchers/repo-fetcher.js"; const data_repo = { repository: { diff --git a/tests/fetchStats.test.js b/tests/fetchStats.test.js index 528560c..f8eae98 100644 --- a/tests/fetchStats.test.js +++ b/tests/fetchStats.test.js @@ -1,8 +1,8 @@ import "@testing-library/jest-dom"; import axios from "axios"; import MockAdapter from "axios-mock-adapter"; -import calculateRank from "../src/calculateRank.js"; -import fetchStats from "../src/fetchers/stats-fetcher.js"; +import { calculateRank } from "../src/calculateRank.js"; +import { fetchStats } from "../src/fetchers/stats-fetcher.js"; const data = { data: { diff --git a/tests/fetchTopLanguages.test.js b/tests/fetchTopLanguages.test.js index f08002a..24416cd 100644 --- a/tests/fetchTopLanguages.test.js +++ b/tests/fetchTopLanguages.test.js @@ -1,7 +1,7 @@ import "@testing-library/jest-dom"; import axios from "axios"; import MockAdapter from "axios-mock-adapter"; -import fetchTopLanguages from "../src/fetchers/top-languages-fetcher.js"; +import { fetchTopLanguages } from "../src/fetchers/top-languages-fetcher.js"; const mock = new MockAdapter(axios); diff --git a/tests/pin.test.js b/tests/pin.test.js index 50fb4de..89e1021 100644 --- a/tests/pin.test.js +++ b/tests/pin.test.js @@ -3,7 +3,7 @@ import "@testing-library/jest-dom"; import axios from "axios"; import MockAdapter from "axios-mock-adapter"; import pin from "../api/pin.js"; -import renderRepoCard from "../src/cards/repo-card.js"; +import { renderRepoCard } from "../src/cards/repo-card.js"; import { renderError } from "../src/common/utils.js"; const data_repo = { diff --git a/tests/renderRepoCard.test.js b/tests/renderRepoCard.test.js index 8bd0b61..580e970 100644 --- a/tests/renderRepoCard.test.js +++ b/tests/renderRepoCard.test.js @@ -1,7 +1,7 @@ import { queryByTestId } from "@testing-library/dom"; import "@testing-library/jest-dom"; import { cssToObject } from "@uppercod/css-to-object"; -import renderRepoCard from "../src/cards/repo-card.js"; +import { renderRepoCard } from "../src/cards/repo-card.js"; import { themes } from "../themes/index.js"; diff --git a/tests/renderStatsCard.test.js b/tests/renderStatsCard.test.js index f61fde5..d315598 100644 --- a/tests/renderStatsCard.test.js +++ b/tests/renderStatsCard.test.js @@ -4,7 +4,7 @@ import { queryByTestId, } from "@testing-library/dom"; import { cssToObject } from "@uppercod/css-to-object"; -import renderStatsCard from "../src/cards/stats-card.js"; +import { renderStatsCard } from "../src/cards/stats-card.js"; // adds special assertions like toHaveTextContent import "@testing-library/jest-dom"; diff --git a/tests/renderWakatimeCard.test.js b/tests/renderWakatimeCard.test.js index b3e3870..098e9f7 100644 --- a/tests/renderWakatimeCard.test.js +++ b/tests/renderWakatimeCard.test.js @@ -1,6 +1,6 @@ import { queryByTestId } from "@testing-library/dom"; import "@testing-library/jest-dom"; -import renderWakatimeCard from "../src/cards/wakatime-card.js"; +import { renderWakatimeCard } from "../src/cards/wakatime-card.js"; import { getCardColors } from "../src/common/utils.js"; import { wakaTimeData } from "./fetchWakatime.test.js"; diff --git a/tests/retryer.test.js b/tests/retryer.test.js index 8991cbb..1fcf665 100644 --- a/tests/retryer.test.js +++ b/tests/retryer.test.js @@ -1,6 +1,6 @@ import { jest } from "@jest/globals"; import "@testing-library/jest-dom"; -import retryer from "../src/common/retryer.js"; +import { retryer } from "../src/common/retryer.js"; import { logger } from "../src/common/utils.js"; const fetcher = jest.fn((variables, token) => {