diff --git a/src/ts/browserAction/loadSettings.ts b/src/ts/browserAction/loadSettings.ts index 46c3bac5..733d2fb5 100644 --- a/src/ts/browserAction/loadSettings.ts +++ b/src/ts/browserAction/loadSettings.ts @@ -1,4 +1,6 @@ +// eslint-disable-next-line import-x/no-unassigned-import import "../components/settingsItem"; +// eslint-disable-next-line import-x/no-unassigned-import import "../components/settingsSeparator"; import { DEFAULT_SETTINGS } from "../common/defaultSettings"; import { SETTINGS_ITEMS } from "./settingsItems"; diff --git a/src/ts/browserAction/settingsItems.ts b/src/ts/browserAction/settingsItems.ts index 1631d3c8..96a48cad 100644 --- a/src/ts/browserAction/settingsItems.ts +++ b/src/ts/browserAction/settingsItems.ts @@ -12,7 +12,7 @@ interface SettingsSeparator { type: "separator"; } -type SettingsItems = (SettingsItem | SettingsSeparator)[]; +type SettingsItems = Array; const SETTINGS_ITEMS = [ { diff --git a/src/ts/components/sbsMessage.ts b/src/ts/components/sbsMessage.ts index ee0a22ca..73e39411 100644 --- a/src/ts/components/sbsMessage.ts +++ b/src/ts/components/sbsMessage.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line import-x/no-unassigned-import import "@material/web/button/filled-button"; import { LitElement, type PropertyValues, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; @@ -181,7 +182,7 @@ class SbsMessage extends LitElement { `; } - private getNotes(): "" | ReturnType[] { + private getNotes(): "" | Array> { if (!this.notes.length) return ""; const notesClasses = classMap({ @@ -236,4 +237,4 @@ declare global { } } -export { SbsMessageDetails, SbsMessage }; +export { type SbsMessageDetails, SbsMessage }; diff --git a/src/ts/components/settingsItem.ts b/src/ts/components/settingsItem.ts index de116dd8..1fc3a88f 100644 --- a/src/ts/components/settingsItem.ts +++ b/src/ts/components/settingsItem.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line import-x/no-unassigned-import import "@material/web/checkbox/checkbox.js"; import { LitElement, css, html } from "lit"; import { customElement, property, query } from "lit/decorators.js"; diff --git a/src/ts/core/core.ts b/src/ts/core/core.ts index be3ccbf0..84f6803c 100644 --- a/src/ts/core/core.ts +++ b/src/ts/core/core.ts @@ -44,7 +44,7 @@ class Core { const sbsMessageWrapper = new SbsMessageWrapper(messageData); const bioOrUserName = - document.querySelector("[data-testid='UserDescription']") || + document.querySelector("[data-testid='UserDescription']") ?? document.querySelector("[data-testid='UserName']"); if (!bioOrUserName) throw new Error("Failed to get user description of profile"); @@ -61,7 +61,7 @@ class Core { const sbsMessageWrapper = new SbsMessageWrapper(messageData); const landmarkElement = - tweet.element.querySelector("[data-testid='analyticsButton']")?.parentElement || + tweet.element.querySelector("[data-testid='analyticsButton']")?.parentElement ?? tweet.element.querySelector("div[role='group'][id]"); if (!landmarkElement) throw new Error("Failed to get landmark element of tweet"); diff --git a/src/ts/core/propsAnalyzer.ts b/src/ts/core/propsAnalyzer.ts index 9830dae9..88f02fef 100644 --- a/src/ts/core/propsAnalyzer.ts +++ b/src/ts/core/propsAnalyzer.ts @@ -86,4 +86,10 @@ const analyzeTombstoneProps = (props: [CellInnerDivProps, TombstoneGrandchildPro return tweetId; }; -export { ProfileAnalysisResult, TweetAnalysisResult, analyzeProfileProps, analyzeTweetProps, analyzeTombstoneProps }; +export { + type ProfileAnalysisResult, + type TweetAnalysisResult, + analyzeProfileProps, + analyzeTweetProps, + analyzeTombstoneProps +}; diff --git a/src/ts/core/sbsMessageWrapper.ts b/src/ts/core/sbsMessageWrapper.ts index de8e6290..5aa15573 100644 --- a/src/ts/core/sbsMessageWrapper.ts +++ b/src/ts/core/sbsMessageWrapper.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line import-x/no-unassigned-import import "../components/sbsMessage"; import { SHADOW_TRANSLATION_ATTRIBUTE } from "../common/constants"; // eslint-disable-next-line no-duplicate-imports @@ -94,4 +95,4 @@ class SbsMessageWrapper { } } -export { SbsMessageWrapperOptionsForTweets, SbsMessageWrapperOptionsForProfiles, SbsMessageWrapper }; +export { type SbsMessageWrapperOptionsForTweets, type SbsMessageWrapperOptionsForProfiles, SbsMessageWrapper }; diff --git a/src/ts/core/translationKeyProvider.ts b/src/ts/core/translationKeyProvider.ts index cb69e960..52a85dd1 100644 --- a/src/ts/core/translationKeyProvider.ts +++ b/src/ts/core/translationKeyProvider.ts @@ -52,7 +52,7 @@ const formatCountryList = (countries: string[]): string => { }); const translator = new Intl.DisplayNames([userLanguage], { type: "region" }); - const translatedCountries = countries.map((country) => translator.of(country) || ""); + const translatedCountries = countries.map((country) => translator.of(country) ?? ""); const formattedText = listFormatter.format(translatedCountries); return formattedText; diff --git a/src/ts/initialSetup.ts b/src/ts/initialSetup.ts index abbca2d6..da9b7342 100644 --- a/src/ts/initialSetup.ts +++ b/src/ts/initialSetup.ts @@ -3,15 +3,15 @@ import type { Settings } from "../types/common/settings"; import { Translator } from "./common/translator"; import browser from "webextension-polyfill"; -type InitialSetupItem = { - options: { +interface InitialSetupItem { + options: Array<{ default: boolean; icon: string; label: string; value: boolean; - }[]; + }>; settingsKey: keyof Settings; -}; +} const INITIAL_SETUP_ITEMS = [ { diff --git a/src/ts/ossLicenses.ts b/src/ts/ossLicenses.ts index c30c247b..41eeb72c 100644 --- a/src/ts/ossLicenses.ts +++ b/src/ts/ossLicenses.ts @@ -6,7 +6,7 @@ const normalizeRepositoryLink = (repository: string): string => { return repository.replace(/^git\+/u, ""); } - if (!repository.match(/^https?:\/\//u)) { + if (!/^https?:\/\//u.exec(repository)) { return `https://github.com/${repository}`; } diff --git a/src/ts/userScript/en.user.ts b/src/ts/userScript/en.user.ts index 787e5433..f8a924bf 100644 --- a/src/ts/userScript/en.user.ts +++ b/src/ts/userScript/en.user.ts @@ -1,4 +1,4 @@ import { createUserScript } from "./userScriptBase"; -import translation from "../../../src/_locales/en/messages.json"; +import translation from "../../_locales/en/messages.json"; createUserScript(translation); diff --git a/src/ts/userScript/ja.user.ts b/src/ts/userScript/ja.user.ts index a0a5c4d7..a5f83d6d 100644 --- a/src/ts/userScript/ja.user.ts +++ b/src/ts/userScript/ja.user.ts @@ -1,4 +1,4 @@ import { createUserScript } from "./userScriptBase"; -import translation from "../../../src/_locales/ja/messages.json"; +import translation from "../../_locales/ja/messages.json"; createUserScript(translation); diff --git a/src/ts/userScript/ko.user.ts b/src/ts/userScript/ko.user.ts index c5a6ea3c..aed881ce 100644 --- a/src/ts/userScript/ko.user.ts +++ b/src/ts/userScript/ko.user.ts @@ -1,4 +1,4 @@ import { createUserScript } from "./userScriptBase"; -import translation from "../../../src/_locales/ko/messages.json"; +import translation from "../../_locales/ko/messages.json"; createUserScript(translation); diff --git a/src/ts/userScript/userScriptBase.ts b/src/ts/userScript/userScriptBase.ts index 99d25669..790368fe 100644 --- a/src/ts/userScript/userScriptBase.ts +++ b/src/ts/userScript/userScriptBase.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line import-x/no-unassigned-import import "../../css/style.css"; import { Core } from "../core/core"; import { DEFAULT_SETTINGS } from "../common/defaultSettings"; diff --git a/src/ts/userScript/zh_TW.user.ts b/src/ts/userScript/zh_TW.user.ts index 32867b35..650959b6 100644 --- a/src/ts/userScript/zh_TW.user.ts +++ b/src/ts/userScript/zh_TW.user.ts @@ -1,4 +1,4 @@ import { createUserScript } from "./userScriptBase"; -import translation from "../../../src/_locales/zh_TW/messages.json"; +import translation from "../../_locales/zh_TW/messages.json"; createUserScript(translation); diff --git a/src/types/common/translator.d.ts b/src/types/common/translator.d.ts index e1769b94..092ea335 100644 --- a/src/types/common/translator.d.ts +++ b/src/types/common/translator.d.ts @@ -1,4 +1,4 @@ -import type enTranslation from "../../../src/_locales/en/messages.json"; +import type enTranslation from "../../_locales/en/messages.json"; type TranslationData = typeof enTranslation; type TranslationKey = keyof TranslationData; @@ -8,4 +8,4 @@ type TranslationFunction = (messageName: TranslationKey, substitutions?: string // eslint-disable-next-line no-magic-numbers type TranslationSubstitutions = Parameters[1]; -export { TranslationData, TranslationKey, TranslationFunction, TranslationSubstitutions }; +export type { TranslationData, TranslationKey, TranslationFunction, TranslationSubstitutions }; diff --git a/src/types/core/reactProps/reactProps.d.ts b/src/types/core/reactProps/reactProps.d.ts index 270b40ca..90081890 100644 --- a/src/types/core/reactProps/reactProps.d.ts +++ b/src/types/core/reactProps/reactProps.d.ts @@ -1,5 +1,5 @@ /** @see {isCellInnerDivProps} ts-auto-guard:type-guard */ -export interface CellInnerDivProps { +interface CellInnerDivProps { children: { _owner?: { key: string; @@ -11,7 +11,7 @@ export interface CellInnerDivProps { * (tombstones' cell inner div) > div > div <- This element is the tombstone's grandchild and has detailed information. * @see {isTombstoneGrandchildProps} ts-auto-guard:type-guard */ -export interface TombstoneGrandchildProps { +interface TombstoneGrandchildProps { children: [ { props: { @@ -29,3 +29,5 @@ export interface TombstoneGrandchildProps { } ]; } + +export type { CellInnerDivProps, TombstoneGrandchildProps };