From 048ef71063795a6b1d61a16478a75087ba3f0313 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 18:29:35 +0000 Subject: [PATCH 1/3] chore(deps): update @biomejs/biome to v2 --- biome.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 76 +++++++++++++++++++++++++------------------------- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/biome.json b/biome.json index f6923c8eb..8613db703 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json", "organizeImports": { "enabled": true }, diff --git a/package.json b/package.json index 273d236d1..3ac39ded7 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "update-electron-app": "3.1.1" }, "devDependencies": { - "@biomejs/biome": "1.9.4", + "@biomejs/biome": "2.0.0", "@discordapp/twemoji": "15.1.0", "@electron/notarize": "3.0.1", "@primer/octicons-react": "19.15.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d0d09bf6..b83710c7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,8 +34,8 @@ importers: version: 3.1.1 devDependencies: '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 + specifier: 2.0.0 + version: 2.0.0 '@discordapp/twemoji': specifier: 15.1.0 version: 15.1.0 @@ -449,55 +449,55 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + '@biomejs/biome@2.0.0': + resolution: {integrity: sha512-BlUoXEOI/UQTDEj/pVfnkMo8SrZw3oOWBDrXYFT43V7HTkIUDkBRY53IC5Jx1QkZbaB+0ai1wJIfYwp9+qaJTQ==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + '@biomejs/cli-darwin-arm64@2.0.0': + resolution: {integrity: sha512-QvqWYtFFhhxdf8jMAdJzXW+Frc7X8XsnHQLY+TBM1fnT1TfeV/v9vsFI5L2J7GH6qN1+QEEJ19jHibCY2Ypplw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + '@biomejs/cli-darwin-x64@2.0.0': + resolution: {integrity: sha512-5JFhls1EfmuIH4QGFPlNpxJQFC6ic3X1ltcoLN+eSRRIPr6H/lUS1ttuD0Fj7rPgPhZqopK/jfH8UVj/1hIsQw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + '@biomejs/cli-linux-arm64-musl@2.0.0': + resolution: {integrity: sha512-Bxsz8ki8+b3PytMnS5SgrGV+mbAWwIxI3ydChb/d1rURlJTMdxTTq5LTebUnlsUWAX6OvJuFeiVq9Gjn1YbCyA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + '@biomejs/cli-linux-arm64@2.0.0': + resolution: {integrity: sha512-BAH4QVi06TzAbVchXdJPsL0Z/P87jOfes15rI+p3EX9/EGTfIjaQ9lBVlHunxcmoptaA5y1Hdb9UYojIhmnjIw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + '@biomejs/cli-linux-x64-musl@2.0.0': + resolution: {integrity: sha512-tiQ0ABxMJb9I6GlfNp0ulrTiQSFacJRJO8245FFwE3ty3bfsfxlU/miblzDIi+qNrgGsLq5wIZcVYGp4c+HXZA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + '@biomejs/cli-linux-x64@2.0.0': + resolution: {integrity: sha512-09PcOGYTtkopWRm6mZ/B6Mr6UHdkniUgIG/jLBv+2J8Z61ezRE+xQmpi3yNgUrFIAU4lPA9atg7mhvE/5Bo7Wg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + '@biomejs/cli-win32-arm64@2.0.0': + resolution: {integrity: sha512-vrTtuGu91xNTEQ5ZcMJBZuDlqr32DWU1r14UfePIGndF//s2WUAmer4FmgoPgruo76rprk37e8S2A2c0psXdxw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + '@biomejs/cli-win32-x64@2.0.0': + resolution: {integrity: sha512-2USVQ0hklNsph/KIR72ZdeptyXNnQ3JdzPn3NbjI4Sna34CnxeiYAaZcZzXPDl5PYNFBivV4xmvT3Z3rTmyDBg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -5054,39 +5054,39 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@biomejs/biome@1.9.4': + '@biomejs/biome@2.0.0': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-arm64': 2.0.0 + '@biomejs/cli-darwin-x64': 2.0.0 + '@biomejs/cli-linux-arm64': 2.0.0 + '@biomejs/cli-linux-arm64-musl': 2.0.0 + '@biomejs/cli-linux-x64': 2.0.0 + '@biomejs/cli-linux-x64-musl': 2.0.0 + '@biomejs/cli-win32-arm64': 2.0.0 + '@biomejs/cli-win32-x64': 2.0.0 + + '@biomejs/cli-darwin-arm64@2.0.0': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-darwin-x64@2.0.0': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.0.0': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-arm64@2.0.0': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64-musl@2.0.0': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-linux-x64@2.0.0': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-arm64@2.0.0': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@biomejs/cli-win32-x64@2.0.0': optional: true '@cspotcode/source-map-support@0.8.1': From ed24f57f6c802f1601a4226ddd010fe0b16b8adf Mon Sep 17 00:00:00 2001 From: Adam Setch Date: Tue, 17 Jun 2025 15:00:33 -0400 Subject: [PATCH 2/3] apply biome fixes Signed-off-by: Adam Setch --- .vscode/settings.json | 1 + biome.json | 46 +++++++++++++++++-- config/webpack.config.main.base.ts | 2 + config/webpack.config.main.prod.ts | 1 + config/webpack.config.renderer.base.ts | 5 +- config/webpack.config.renderer.prod.ts | 1 + scripts/afterPack.js | 2 +- scripts/afterSign.js | 2 +- scripts/delete-source-maps.ts | 2 + src/main/first-run.ts | 1 + src/main/utils.ts | 1 + src/renderer/components/fields/Checkbox.tsx | 3 +- src/renderer/components/fields/Tooltip.tsx | 3 +- .../components/filters/FilterSection.test.tsx | 3 +- .../RequiresDetailedNotificationsWarning.tsx | 3 +- .../components/filters/UserHandleFilter.tsx | 4 +- src/renderer/components/layout/AppLayout.tsx | 3 +- src/renderer/components/layout/Centered.tsx | 3 +- src/renderer/components/layout/Contents.tsx | 3 +- .../components/layout/EmojiSplash.tsx | 3 +- src/renderer/components/layout/Page.tsx | 3 +- .../components/metrics/MetricPill.test.tsx | 3 +- .../notifications/AccountNotifications.tsx | 2 +- .../notifications/RepositoryNotifications.tsx | 3 +- .../components/primitives/EmojiText.tsx | 1 + src/renderer/components/primitives/Footer.tsx | 3 +- .../components/primitives/Header.test.tsx | 3 +- .../primitives/HoverButton.test.tsx | 3 +- .../components/primitives/HoverGroup.tsx | 1 + .../components/primitives/Title.test.tsx | 3 +- .../settings/AppearanceSettings.test.tsx | 3 +- .../settings/AppearanceSettings.tsx | 3 +- .../components/settings/SettingsReset.tsx | 1 + src/renderer/context/App.tsx | 7 +-- src/renderer/hooks/useNotifications.test.ts | 1 + src/renderer/routes/Accounts.test.tsx | 3 +- src/renderer/routes/Login.tsx | 5 +- src/renderer/routes/Notifications.tsx | 2 +- src/renderer/types.ts | 4 +- src/renderer/utils/api/errors.ts | 1 + src/renderer/utils/api/request.ts | 2 +- src/renderer/utils/api/utils.ts | 1 + src/renderer/utils/auth/utils.test.ts | 5 +- src/renderer/utils/auth/utils.ts | 3 +- src/renderer/utils/comms.ts | 1 + src/renderer/utils/emojis.ts | 2 + src/renderer/utils/features.test.ts | 1 - src/renderer/utils/features.ts | 1 + src/renderer/utils/helpers.test.ts | 2 +- src/renderer/utils/icons.ts | 4 +- .../utils/notifications/filters/filter.ts | 4 +- .../utils/notifications/filters/index.ts | 8 ++-- src/renderer/utils/subject.test.ts | 1 + src/renderer/utils/theme.ts | 1 + src/shared/logger.ts | 2 +- 55 files changed, 135 insertions(+), 50 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index e207ee523..b6d845ac5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "editor.codeActionsOnSave": { "quickfix.biome": "explicit", + "source.fixAll.biome": "explicit", "source.organizeImports.biome": "explicit" }, "editor.defaultFormatter": "biomejs.biome", diff --git a/biome.json b/biome.json index 8613db703..fe223b9a0 100644 --- a/biome.json +++ b/biome.json @@ -1,17 +1,52 @@ { "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json", - "organizeImports": { - "enabled": true + "assist": { + "actions": { + "source": { + "organizeImports": { + "level": "on", + "options": { + "groups": [ + ":NODE:", + ":BLANK_LINE:", + ["react*", "@testing-library/**"], + ":BLANK_LINE:", + ["*electron*", "menubar"], + ":BLANK_LINE:", + "@primer/**", + ":BLANK_LINE:", + ":PACKAGE:", + ":BLANK_LINE:", + "**" + ] + } + } + } + } }, "linter": { "enabled": true, + "domains": { + "react": "recommended", + "test": "recommended" + }, "rules": { "recommended": true, "suspicious": { - "noConsoleLog": "error" + "noConsole": "error" }, "style": { - "useDefaultSwitchClause": "error" + "useDefaultSwitchClause": "error", + "noParameterAssign": "error", + "useAsConstAssertion": "error", + "useDefaultParameterLast": "error", + "useEnumInitializers": "error", + "useSelfClosingElements": "error", + "useSingleVarDeclarator": "error", + "noUnusedTemplateLiteral": "error", + "useNumberNamespace": "error", + "noInferrableTypes": "error", + "noUselessElse": "error" }, "a11y": { "useKeyWithClickEvents": "off", @@ -25,6 +60,9 @@ "hooks": [{ "name": "useNavigate", "stableResult": true }] } } + }, + "nursery": { + "useUniqueElementIds": "warn" } } }, diff --git a/config/webpack.config.main.base.ts b/config/webpack.config.main.base.ts index f4f0a1143..af0807023 100644 --- a/config/webpack.config.main.base.ts +++ b/config/webpack.config.main.base.ts @@ -1,6 +1,8 @@ import path from 'node:path'; + import type webpack from 'webpack'; import { merge } from 'webpack-merge'; + import baseConfig from './webpack.config.common'; import webpackPaths from './webpack.paths'; diff --git a/config/webpack.config.main.prod.ts b/config/webpack.config.main.prod.ts index d099bd13d..3ebfe192f 100644 --- a/config/webpack.config.main.prod.ts +++ b/config/webpack.config.main.prod.ts @@ -1,6 +1,7 @@ import TerserPlugin from 'terser-webpack-plugin'; import type webpack from 'webpack'; import { merge } from 'webpack-merge'; + import baseConfig from './webpack.config.main.base'; const configuration: webpack.Configuration = { diff --git a/config/webpack.config.renderer.base.ts b/config/webpack.config.renderer.base.ts index 384e22993..bb70c7d96 100644 --- a/config/webpack.config.renderer.base.ts +++ b/config/webpack.config.renderer.base.ts @@ -1,13 +1,14 @@ import path from 'node:path'; + import CopyWebpackPlugin from 'copy-webpack-plugin'; import HtmlWebpackPlugin from 'html-webpack-plugin'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import webpack from 'webpack'; import { merge } from 'webpack-merge'; -import baseConfig from './webpack.config.common'; -import webpackPaths from './webpack.paths'; import { ALL_EMOJI_SVG_FILENAMES } from '../src/renderer/utils/emojis'; +import baseConfig from './webpack.config.common'; +import webpackPaths from './webpack.paths'; const configuration: webpack.Configuration = { devtool: 'inline-source-map', diff --git a/config/webpack.config.renderer.prod.ts b/config/webpack.config.renderer.prod.ts index 819e1aa5e..babaaf36a 100644 --- a/config/webpack.config.renderer.prod.ts +++ b/config/webpack.config.renderer.prod.ts @@ -2,6 +2,7 @@ import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'; import TerserPlugin from 'terser-webpack-plugin'; import type webpack from 'webpack'; import { merge } from 'webpack-merge'; + import baseConfig from './webpack.config.renderer.base'; const configuration: webpack.Configuration = { diff --git a/scripts/afterPack.js b/scripts/afterPack.js index a95bdaf39..ee66116b5 100644 --- a/scripts/afterPack.js +++ b/scripts/afterPack.js @@ -6,7 +6,7 @@ const builderConfig = require('../config/electron-builder'); const electronLanguages = builderConfig.electronLanguages; function logAfterPackProgress(msg) { - // biome-ignore lint/suspicious/noConsoleLog: log notarizing progress + // biome-ignore lint/suspicious/noConsole: log notarizing progress console.log(` • [afterPack]: ${msg}`); } diff --git a/scripts/afterSign.js b/scripts/afterSign.js index 2b63d365f..57a6b688f 100644 --- a/scripts/afterSign.js +++ b/scripts/afterSign.js @@ -2,7 +2,7 @@ const { notarize } = require('@electron/notarize'); const { AfterPackContext } = require('electron-builder'); function logAfterSignProgress(msg) { - // biome-ignore lint/suspicious/noConsoleLog: log notarizing progress + // biome-ignore lint/suspicious/noConsole: log notarizing progress console.log(` • [afterSign]: ${msg}`); } diff --git a/scripts/delete-source-maps.ts b/scripts/delete-source-maps.ts index 9c200b221..8d61b989b 100644 --- a/scripts/delete-source-maps.ts +++ b/scripts/delete-source-maps.ts @@ -1,6 +1,8 @@ import fs from 'node:fs'; import path from 'node:path'; + import { rimrafSync } from 'rimraf'; + import webpackPaths from '../config/webpack.paths'; function deleteSourceMaps() { diff --git a/src/main/first-run.ts b/src/main/first-run.ts index e33880ede..80ef60a65 100644 --- a/src/main/first-run.ts +++ b/src/main/first-run.ts @@ -1,5 +1,6 @@ import fs from 'node:fs'; import path from 'node:path'; + import { app, dialog } from 'electron'; import { APPLICATION } from '../shared/constants'; diff --git a/src/main/utils.ts b/src/main/utils.ts index c1a9b17bc..624a5ad9d 100644 --- a/src/main/utils.ts +++ b/src/main/utils.ts @@ -1,6 +1,7 @@ import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; + import { dialog, shell } from 'electron'; import log from 'electron-log'; import type { Menubar } from 'menubar'; diff --git a/src/renderer/components/fields/Checkbox.tsx b/src/renderer/components/fields/Checkbox.tsx index d7e55dc64..4a7e77c55 100644 --- a/src/renderer/components/fields/Checkbox.tsx +++ b/src/renderer/components/fields/Checkbox.tsx @@ -1,6 +1,7 @@ -import { Stack } from '@primer/react'; import type { FC, ReactNode } from 'react'; +import { Stack } from '@primer/react'; + import { cn } from '../../utils/cn'; import { CustomCounter } from '../primitives/CustomCounter'; import { Tooltip } from './Tooltip'; diff --git a/src/renderer/components/fields/Tooltip.tsx b/src/renderer/components/fields/Tooltip.tsx index e1d860b0a..75ca2335a 100644 --- a/src/renderer/components/fields/Tooltip.tsx +++ b/src/renderer/components/fields/Tooltip.tsx @@ -1,6 +1,7 @@ +import { type FC, type ReactNode, useState } from 'react'; + import { QuestionIcon } from '@primer/octicons-react'; import { Box } from '@primer/react'; -import { type FC, type ReactNode, useState } from 'react'; export interface ITooltip { name: string; diff --git a/src/renderer/components/filters/FilterSection.test.tsx b/src/renderer/components/filters/FilterSection.test.tsx index bd087db6e..c840d8f55 100644 --- a/src/renderer/components/filters/FilterSection.test.tsx +++ b/src/renderer/components/filters/FilterSection.test.tsx @@ -1,8 +1,9 @@ -import { MarkGithubIcon } from '@primer/octicons-react'; import { act, render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; +import { MarkGithubIcon } from '@primer/octicons-react'; + import { mockAccountNotifications } from '../../__mocks__/notifications-mocks'; import { mockSettings } from '../../__mocks__/state-mocks'; import { AppContext } from '../../context/App'; diff --git a/src/renderer/components/filters/RequiresDetailedNotificationsWarning.tsx b/src/renderer/components/filters/RequiresDetailedNotificationsWarning.tsx index 98dc3c1e7..d2609629a 100644 --- a/src/renderer/components/filters/RequiresDetailedNotificationsWarning.tsx +++ b/src/renderer/components/filters/RequiresDetailedNotificationsWarning.tsx @@ -1,6 +1,7 @@ -import { Text } from '@primer/react'; import type { FC } from 'react'; +import { Text } from '@primer/react'; + export const RequiresDetailedNotificationWarning: FC = () => ( ⚠️ This filter requires the Detailed Notifications{' '} diff --git a/src/renderer/components/filters/UserHandleFilter.tsx b/src/renderer/components/filters/UserHandleFilter.tsx index 76cf3c643..2264c53ce 100644 --- a/src/renderer/components/filters/UserHandleFilter.tsx +++ b/src/renderer/components/filters/UserHandleFilter.tsx @@ -1,12 +1,12 @@ import { type FC, useContext, useEffect, useState } from 'react'; -import { Box, Stack, Text, TextInputWithTokens } from '@primer/react'; - import { CheckCircleFillIcon, MentionIcon, NoEntryFillIcon, } from '@primer/octicons-react'; +import { Box, Stack, Text, TextInputWithTokens } from '@primer/react'; + import { AppContext } from '../../context/App'; import { IconColor, type UserHandle } from '../../types'; import { diff --git a/src/renderer/components/layout/AppLayout.tsx b/src/renderer/components/layout/AppLayout.tsx index 048ecffab..6276b56b2 100644 --- a/src/renderer/components/layout/AppLayout.tsx +++ b/src/renderer/components/layout/AppLayout.tsx @@ -1,6 +1,7 @@ -import { Box } from '@primer/react'; import type { FC, ReactNode } from 'react'; +import { Box } from '@primer/react'; + import { Sidebar } from '../Sidebar'; interface IAppLayout { diff --git a/src/renderer/components/layout/Centered.tsx b/src/renderer/components/layout/Centered.tsx index 65ab9f793..c1bd80e04 100644 --- a/src/renderer/components/layout/Centered.tsx +++ b/src/renderer/components/layout/Centered.tsx @@ -1,6 +1,7 @@ -import { Stack } from '@primer/react'; import type { FC, ReactNode } from 'react'; +import { Stack } from '@primer/react'; + interface ICentered { children: ReactNode; fullHeight: boolean; diff --git a/src/renderer/components/layout/Contents.tsx b/src/renderer/components/layout/Contents.tsx index 5377339cf..2b0115be3 100644 --- a/src/renderer/components/layout/Contents.tsx +++ b/src/renderer/components/layout/Contents.tsx @@ -1,6 +1,7 @@ -import { Box } from '@primer/react'; import type { FC, ReactNode } from 'react'; +import { Box } from '@primer/react'; + import { cn } from '../../utils/cn'; interface IContents { diff --git a/src/renderer/components/layout/EmojiSplash.tsx b/src/renderer/components/layout/EmojiSplash.tsx index aaf131b76..f8f5a0971 100644 --- a/src/renderer/components/layout/EmojiSplash.tsx +++ b/src/renderer/components/layout/EmojiSplash.tsx @@ -1,6 +1,7 @@ -import { Box, Stack } from '@primer/react'; import type { FC } from 'react'; +import { Box, Stack } from '@primer/react'; + import { EmojiText } from '../primitives/EmojiText'; import { Centered } from './Centered'; diff --git a/src/renderer/components/layout/Page.tsx b/src/renderer/components/layout/Page.tsx index 34f077325..cb347c199 100644 --- a/src/renderer/components/layout/Page.tsx +++ b/src/renderer/components/layout/Page.tsx @@ -1,6 +1,7 @@ -import { Box } from '@primer/react'; import type { FC, ReactNode } from 'react'; +import { Box } from '@primer/react'; + interface IPage { children: ReactNode; id: string; diff --git a/src/renderer/components/metrics/MetricPill.test.tsx b/src/renderer/components/metrics/MetricPill.test.tsx index 6c3a103ba..b8f6d3698 100644 --- a/src/renderer/components/metrics/MetricPill.test.tsx +++ b/src/renderer/components/metrics/MetricPill.test.tsx @@ -1,6 +1,7 @@ -import { MarkGithubIcon } from '@primer/octicons-react'; import { render } from '@testing-library/react'; +import { MarkGithubIcon } from '@primer/octicons-react'; + import { IconColor } from '../../types'; import { type IMetricPill, MetricPill } from './MetricPill'; diff --git a/src/renderer/components/notifications/AccountNotifications.tsx b/src/renderer/components/notifications/AccountNotifications.tsx index 2329e8fc7..f203d9edf 100644 --- a/src/renderer/components/notifications/AccountNotifications.tsx +++ b/src/renderer/components/notifications/AccountNotifications.tsx @@ -14,8 +14,8 @@ import { openGitHubPulls, } from '../../utils/links'; import { AllRead } from '../AllRead'; -import { Oops } from '../Oops'; import { AvatarWithFallback } from '../avatars/AvatarWithFallback'; +import { Oops } from '../Oops'; import { HoverButton } from '../primitives/HoverButton'; import { HoverGroup } from '../primitives/HoverGroup'; import { NotificationRow } from './NotificationRow'; diff --git a/src/renderer/components/notifications/RepositoryNotifications.tsx b/src/renderer/components/notifications/RepositoryNotifications.tsx index f2285dbcc..31f4e07d4 100644 --- a/src/renderer/components/notifications/RepositoryNotifications.tsx +++ b/src/renderer/components/notifications/RepositoryNotifications.tsx @@ -1,6 +1,7 @@ +import { type FC, type MouseEvent, useContext, useState } from 'react'; + import { CheckIcon, ReadIcon } from '@primer/octicons-react'; import { Box, Button, Stack } from '@primer/react'; -import { type FC, type MouseEvent, useContext, useState } from 'react'; import { AppContext } from '../../context/App'; import { Opacity, Size } from '../../types'; diff --git a/src/renderer/components/primitives/EmojiText.tsx b/src/renderer/components/primitives/EmojiText.tsx index 35c4521d6..46bee61c5 100644 --- a/src/renderer/components/primitives/EmojiText.tsx +++ b/src/renderer/components/primitives/EmojiText.tsx @@ -1,6 +1,7 @@ import { type FC, useEffect, useRef } from 'react'; import { Box } from '@primer/react'; + import { convertTextToEmojiImgHtml } from '../../utils/emojis'; export interface IEmojiText { diff --git a/src/renderer/components/primitives/Footer.tsx b/src/renderer/components/primitives/Footer.tsx index 5388f0149..826004e26 100644 --- a/src/renderer/components/primitives/Footer.tsx +++ b/src/renderer/components/primitives/Footer.tsx @@ -1,6 +1,7 @@ -import { Box, Stack } from '@primer/react'; import type { FC, ReactNode } from 'react'; +import { Box, Stack } from '@primer/react'; + interface IFooter { children: ReactNode; justify: 'end' | 'space-between'; diff --git a/src/renderer/components/primitives/Header.test.tsx b/src/renderer/components/primitives/Header.test.tsx index ffc23ac5b..bc90e3d57 100644 --- a/src/renderer/components/primitives/Header.test.tsx +++ b/src/renderer/components/primitives/Header.test.tsx @@ -1,7 +1,8 @@ -import { MarkGithubIcon } from '@primer/octicons-react'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; +import { MarkGithubIcon } from '@primer/octicons-react'; + import { AppContext } from '../../context/App'; import { Header } from './Header'; diff --git a/src/renderer/components/primitives/HoverButton.test.tsx b/src/renderer/components/primitives/HoverButton.test.tsx index be4606262..b79e0eeac 100644 --- a/src/renderer/components/primitives/HoverButton.test.tsx +++ b/src/renderer/components/primitives/HoverButton.test.tsx @@ -1,6 +1,7 @@ -import { MarkGithubIcon } from '@primer/octicons-react'; import { render } from '@testing-library/react'; +import { MarkGithubIcon } from '@primer/octicons-react'; + import { HoverButton } from './HoverButton'; describe('renderer/components/primitives/HoverButton.tsx', () => { diff --git a/src/renderer/components/primitives/HoverGroup.tsx b/src/renderer/components/primitives/HoverGroup.tsx index 1b04fca2d..8197e3af5 100644 --- a/src/renderer/components/primitives/HoverGroup.tsx +++ b/src/renderer/components/primitives/HoverGroup.tsx @@ -1,6 +1,7 @@ import type { FC, ReactNode } from 'react'; import { Stack } from '@primer/react'; + import { cn } from '../../utils/cn'; interface IHoverGroup { diff --git a/src/renderer/components/primitives/Title.test.tsx b/src/renderer/components/primitives/Title.test.tsx index 647f863be..b134bc91e 100644 --- a/src/renderer/components/primitives/Title.test.tsx +++ b/src/renderer/components/primitives/Title.test.tsx @@ -1,6 +1,7 @@ -import { PersonFillIcon } from '@primer/octicons-react'; import { render } from '@testing-library/react'; +import { PersonFillIcon } from '@primer/octicons-react'; + import { Title } from './Title'; describe('renderer/routes/components/primitives/Title.tsx', () => { diff --git a/src/renderer/components/settings/AppearanceSettings.test.tsx b/src/renderer/components/settings/AppearanceSettings.test.tsx index 1c65a1095..d3d5fda83 100644 --- a/src/renderer/components/settings/AppearanceSettings.test.tsx +++ b/src/renderer/components/settings/AppearanceSettings.test.tsx @@ -1,8 +1,9 @@ import { act, fireEvent, render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { webFrame } from 'electron'; import { MemoryRouter } from 'react-router-dom'; +import { webFrame } from 'electron'; + import { mockAuth, mockGitHubAppAccount, diff --git a/src/renderer/components/settings/AppearanceSettings.tsx b/src/renderer/components/settings/AppearanceSettings.tsx index df7b14998..12ebcc1dc 100644 --- a/src/renderer/components/settings/AppearanceSettings.tsx +++ b/src/renderer/components/settings/AppearanceSettings.tsx @@ -1,6 +1,7 @@ -import { webFrame } from 'electron'; import { type FC, useContext, useState } from 'react'; +import { webFrame } from 'electron'; + import { PaintbrushIcon, SyncIcon, diff --git a/src/renderer/components/settings/SettingsReset.tsx b/src/renderer/components/settings/SettingsReset.tsx index e77209d6c..35b969dce 100644 --- a/src/renderer/components/settings/SettingsReset.tsx +++ b/src/renderer/components/settings/SettingsReset.tsx @@ -2,6 +2,7 @@ import { type FC, useCallback, useContext, useState } from 'react'; import { Button, Stack, Text } from '@primer/react'; import { Dialog } from '@primer/react/experimental'; + import { AppContext } from '../../context/App'; export const SettingsReset: FC = () => { diff --git a/src/renderer/context/App.tsx b/src/renderer/context/App.tsx index ae9e3dc9e..10bbc3970 100644 --- a/src/renderer/context/App.tsx +++ b/src/renderer/context/App.tsx @@ -1,13 +1,14 @@ -import { ipcRenderer, webFrame } from 'electron'; import { - type ReactNode, createContext, + type ReactNode, useCallback, useEffect, useMemo, useState, } from 'react'; +import { ipcRenderer, webFrame } from 'electron'; + import { useTheme } from '@primer/react'; import { namespacedEvent } from '../../shared/events'; @@ -331,7 +332,7 @@ export const AppProvider = ({ children }: { children: ReactNode }) => { */ try { await decryptValue(account.token); - } catch (err) { + } catch (_err) { const encryptedToken = await encryptValue(account.token); account.token = encryptedToken as Token; } diff --git a/src/renderer/hooks/useNotifications.test.ts b/src/renderer/hooks/useNotifications.test.ts index be6a26e48..9f5196bf2 100644 --- a/src/renderer/hooks/useNotifications.test.ts +++ b/src/renderer/hooks/useNotifications.test.ts @@ -1,4 +1,5 @@ import { act, renderHook, waitFor } from '@testing-library/react'; + import axios, { AxiosError } from 'axios'; import nock from 'nock'; diff --git a/src/renderer/routes/Accounts.test.tsx b/src/renderer/routes/Accounts.test.tsx index b94c1fc0a..1ae325703 100644 --- a/src/renderer/routes/Accounts.test.tsx +++ b/src/renderer/routes/Accounts.test.tsx @@ -1,8 +1,9 @@ -import { BaseStyles, ThemeProvider } from '@primer/react'; import { act, render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { MemoryRouter } from 'react-router-dom'; +import { BaseStyles, ThemeProvider } from '@primer/react'; + import { mockAuth, mockGitHubAppAccount, diff --git a/src/renderer/routes/Login.tsx b/src/renderer/routes/Login.tsx index f20c08ff5..536ad389e 100644 --- a/src/renderer/routes/Login.tsx +++ b/src/renderer/routes/Login.tsx @@ -1,8 +1,9 @@ -import { KeyIcon, MarkGithubIcon, PersonIcon } from '@primer/octicons-react'; -import { Button, Heading, Stack, Text } from '@primer/react'; import { type FC, useCallback, useContext, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; +import { KeyIcon, MarkGithubIcon, PersonIcon } from '@primer/octicons-react'; +import { Button, Heading, Stack, Text } from '@primer/react'; + import { logError } from '../../shared/logger'; import { LogoIcon } from '../components/icons/LogoIcon'; import { Centered } from '../components/layout/Centered'; diff --git a/src/renderer/routes/Notifications.tsx b/src/renderer/routes/Notifications.tsx index ae9c08b5e..7cce6e8cb 100644 --- a/src/renderer/routes/Notifications.tsx +++ b/src/renderer/routes/Notifications.tsx @@ -1,10 +1,10 @@ import { type FC, useContext, useMemo } from 'react'; import { AllRead } from '../components/AllRead'; -import { Oops } from '../components/Oops'; import { Contents } from '../components/layout/Contents'; import { Page } from '../components/layout/Page'; import { AccountNotifications } from '../components/notifications/AccountNotifications'; +import { Oops } from '../components/Oops'; import { AppContext } from '../context/App'; import { getAccountUUID } from '../utils/auth/utils'; import { getNotificationCount } from '../utils/notifications/notifications'; diff --git a/src/renderer/types.ts b/src/renderer/types.ts index e3edef714..efdc9aae6 100644 --- a/src/renderer/types.ts +++ b/src/renderer/types.ts @@ -1,5 +1,7 @@ -import type { OcticonProps } from '@primer/octicons-react'; import type { FC } from 'react'; + +import type { OcticonProps } from '@primer/octicons-react'; + import type { Notification, Reason, diff --git a/src/renderer/utils/api/errors.ts b/src/renderer/utils/api/errors.ts index 4f6976145..71503f9f3 100644 --- a/src/renderer/utils/api/errors.ts +++ b/src/renderer/utils/api/errors.ts @@ -1,4 +1,5 @@ import { AxiosError } from 'axios'; + import type { GitifyError } from '../../types'; import type { GitHubRESTError } from '../../typesGitHub'; import { Errors } from '../errors'; diff --git a/src/renderer/utils/api/request.ts b/src/renderer/utils/api/request.ts index bde669c14..ea4b46608 100644 --- a/src/renderer/utils/api/request.ts +++ b/src/renderer/utils/api/request.ts @@ -1,6 +1,6 @@ import axios, { - type AxiosResponse, type AxiosPromise, + type AxiosResponse, type Method, } from 'axios'; diff --git a/src/renderer/utils/api/utils.ts b/src/renderer/utils/api/utils.ts index 29affc96c..fdd59ffa2 100644 --- a/src/renderer/utils/api/utils.ts +++ b/src/renderer/utils/api/utils.ts @@ -1,4 +1,5 @@ import type { AxiosResponse } from 'axios'; + import type { Hostname } from '../../types'; import { Constants } from '../constants'; import { isEnterpriseServerHost } from '../helpers'; diff --git a/src/renderer/utils/auth/utils.test.ts b/src/renderer/utils/auth/utils.test.ts index 276e7d89f..ef104bd3b 100644 --- a/src/renderer/utils/auth/utils.test.ts +++ b/src/renderer/utils/auth/utils.test.ts @@ -1,6 +1,7 @@ -import axios from 'axios'; -import type { AxiosPromise, AxiosResponse } from 'axios'; import { ipcRenderer } from 'electron'; + +import type { AxiosPromise, AxiosResponse } from 'axios'; +import axios from 'axios'; import nock from 'nock'; import { diff --git a/src/renderer/utils/auth/utils.ts b/src/renderer/utils/auth/utils.ts index 19940aecb..59ca2d0e3 100644 --- a/src/renderer/utils/auth/utils.ts +++ b/src/renderer/utils/auth/utils.ts @@ -1,7 +1,8 @@ +import { ipcRenderer } from 'electron'; + import { format } from 'date-fns'; import semver from 'semver'; -import { ipcRenderer } from 'electron'; import { APPLICATION } from '../../../shared/constants'; import { namespacedEvent } from '../../../shared/events'; import { logError, logInfo, logWarn } from '../../../shared/logger'; diff --git a/src/renderer/utils/comms.ts b/src/renderer/utils/comms.ts index 2cba5de3a..900e0fae3 100644 --- a/src/renderer/utils/comms.ts +++ b/src/renderer/utils/comms.ts @@ -1,4 +1,5 @@ import { ipcRenderer, shell } from 'electron'; + import { namespacedEvent } from '../../shared/events'; import { defaultSettings } from '../context/App'; import { type Link, OpenPreference } from '../types'; diff --git a/src/renderer/utils/emojis.ts b/src/renderer/utils/emojis.ts index cff236c05..1292032cf 100644 --- a/src/renderer/utils/emojis.ts +++ b/src/renderer/utils/emojis.ts @@ -1,5 +1,7 @@ import path from 'node:path'; + import twemoji, { type TwemojiOptions } from '@discordapp/twemoji'; + import { Constants } from './constants'; import { Errors } from './errors'; diff --git a/src/renderer/utils/features.test.ts b/src/renderer/utils/features.test.ts index b2a31885a..8890e88bc 100644 --- a/src/renderer/utils/features.test.ts +++ b/src/renderer/utils/features.test.ts @@ -2,7 +2,6 @@ import { mockGitHubCloudAccount, mockGitHubEnterpriseServerAccount, } from '../__mocks__/state-mocks'; - import { isAnsweredDiscussionFeatureSupported, isMarkAsDoneFeatureSupported, diff --git a/src/renderer/utils/features.ts b/src/renderer/utils/features.ts index cf6d3301f..96ea7de54 100644 --- a/src/renderer/utils/features.ts +++ b/src/renderer/utils/features.ts @@ -1,4 +1,5 @@ import semver from 'semver'; + import type { Account } from '../types'; import { isEnterpriseServerHost } from './helpers'; diff --git a/src/renderer/utils/helpers.test.ts b/src/renderer/utils/helpers.test.ts index 77c702927..be06b4142 100644 --- a/src/renderer/utils/helpers.test.ts +++ b/src/renderer/utils/helpers.test.ts @@ -3,6 +3,7 @@ import { ChevronLeftIcon, ChevronRightIcon, } from '@primer/octicons-react'; + import type { AxiosPromise, AxiosResponse } from 'axios'; import * as logger from '../../shared/logger'; @@ -14,7 +15,6 @@ import { mockSingleNotification, } from './api/__mocks__/response-mocks'; import * as apiRequests from './api/request'; - import { formatForDisplay, generateGitHubWebUrl, diff --git a/src/renderer/utils/icons.ts b/src/renderer/utils/icons.ts index 46996a806..073a5faae 100644 --- a/src/renderer/utils/icons.ts +++ b/src/renderer/utils/icons.ts @@ -1,3 +1,5 @@ +import type { FC } from 'react'; + import { AlertIcon, AppsIcon, @@ -32,7 +34,7 @@ import { TagIcon, XIcon, } from '@primer/octicons-react'; -import type { FC } from 'react'; + import { IconColor, type PullRequestApprovalIcon } from '../types'; import type { GitifyPullRequestReview, diff --git a/src/renderer/utils/notifications/filters/filter.ts b/src/renderer/utils/notifications/filters/filter.ts index 63a6140f6..f8ebcdc3c 100644 --- a/src/renderer/utils/notifications/filters/filter.ts +++ b/src/renderer/utils/notifications/filters/filter.ts @@ -1,3 +1,5 @@ +import type { SettingsState } from '../../../types'; +import type { Notification } from '../../../typesGitHub'; import { filterNotificationByHandle, hasExcludeHandleFilters, @@ -7,8 +9,6 @@ import { subjectTypeFilter, userTypeFilter, } from '.'; -import type { SettingsState } from '../../../types'; -import type { Notification } from '../../../typesGitHub'; export function filterNotifications( notifications: Notification[], diff --git a/src/renderer/utils/notifications/filters/index.ts b/src/renderer/utils/notifications/filters/index.ts index b8a4ce82f..c2a1e0550 100644 --- a/src/renderer/utils/notifications/filters/index.ts +++ b/src/renderer/utils/notifications/filters/index.ts @@ -1,6 +1,6 @@ +export * from './handles'; +export * from './reason'; +export * from './state'; +export * from './subjectType'; export * from './types'; export * from './userType'; -export * from './subjectType'; -export * from './state'; -export * from './reason'; -export * from './handles'; diff --git a/src/renderer/utils/subject.test.ts b/src/renderer/utils/subject.test.ts index 9a2576c02..7b9ed2596 100644 --- a/src/renderer/utils/subject.test.ts +++ b/src/renderer/utils/subject.test.ts @@ -31,6 +31,7 @@ const mockDiscussionAuthor: DiscussionAuthor = { avatar_url: 'https://avatars.githubusercontent.com/u/123456789?v=4' as Link, type: 'User', }; + import * as logger from '../../shared/logger'; describe('renderer/utils/subject.ts', () => { diff --git a/src/renderer/utils/theme.ts b/src/renderer/utils/theme.ts index b1fffb656..eca0e631a 100644 --- a/src/renderer/utils/theme.ts +++ b/src/renderer/utils/theme.ts @@ -1,4 +1,5 @@ import type { ColorModeWithAuto } from '@primer/react/lib/ThemeProvider'; + import { Theme } from '../types'; export const DEFAULT_DAY_COLOR_SCHEME = 'light'; diff --git a/src/shared/logger.ts b/src/shared/logger.ts index f9242160f..bd1e978d2 100644 --- a/src/shared/logger.ts +++ b/src/shared/logger.ts @@ -28,7 +28,7 @@ export function logError( } function logMessage( - // biome-ignore lint/suspicious/noExplicitAny: + // biome-ignore lint/suspicious/noExplicitAny: Allow any for logging purposes logFunction: (...params: any[]) => void, type: string, message: string, From f53a27acf44b241fc8457acdac3966d8f7fab3b4 Mon Sep 17 00:00:00 2001 From: Adam Setch Date: Tue, 17 Jun 2025 15:03:11 -0400 Subject: [PATCH 3/3] apply biome fixes Signed-off-by: Adam Setch --- .vscode/settings.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index b6d845ac5..e207ee523 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,6 @@ { "editor.codeActionsOnSave": { "quickfix.biome": "explicit", - "source.fixAll.biome": "explicit", "source.organizeImports.biome": "explicit" }, "editor.defaultFormatter": "biomejs.biome",