From b79e03d4fb0659d36265742265a1e5b8b8db7214 Mon Sep 17 00:00:00 2001 From: Septs Date: Fri, 31 Dec 2021 12:19:16 +0800 Subject: [PATCH 01/13] refactor: eslint --- .eslintrc.json | 5 ++--- package.json | 2 +- packages/.eslintrc.json | 22 +++++++++++++------ .../src/components/Restore/BackupInfoCard.tsx | 21 ++++++++++-------- .../main/GlobalVariableBridge/index.ts | 4 ++-- packages/injected-script/shared/index.ts | 1 + .../mask/background/database/post/index.ts | 1 + .../CryptoServices/decryptFrom.ts | 1 + .../src/plugins/ITO/SNSAdaptor/helpers.ts | 1 + .../plugins/Wallet/services/wallet/index.ts | 1 + .../minds.com/utils/fetch.ts | 2 +- .../twitter.com/utils/fetch.ts | 2 +- pnpm-lock.yaml | 22 +++++++++---------- 13 files changed, 49 insertions(+), 36 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 4e133b0de61f..51b08c417f4d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -7,7 +7,7 @@ "env": { "node": true }, - "plugins": ["unused-imports", "lodash"], + "plugins": ["unused-imports"], "rules": { "constructor-super": "error", "dot-notation": "error", @@ -37,7 +37,6 @@ "no-template-curly-in-string": "error", "prefer-const": "warn", "use-isnan": "error", - "unused-imports/no-unused-imports-ts": "error", - "lodash/import-scope": ["error", "member"] + "unused-imports/no-unused-imports-ts": "error" } } diff --git a/package.json b/package.json index 800ff2a47c28..e8b3f0794345 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "devDependencies": { "@commitlint/cli": "^16.0.0", "@commitlint/config-conventional": "^16.0.0", + "@dimensiondev/eslint-plugin": "^0.0.1-20211229115308-cb532c7", "@dimensiondev/patch-package": "^6.5.0", "@jest/globals": "^27.4.4", "@magic-works/i18n-codegen": "^0.0.6", @@ -63,7 +64,6 @@ "eslint": "8.5.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "2.25.3", - "eslint-plugin-lodash": "^7.3.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-react": "^7.28.0", "eslint-plugin-react-hooks": "^4.3.0", diff --git a/packages/.eslintrc.json b/packages/.eslintrc.json index ff7c62aad61a..35d965410d07 100644 --- a/packages/.eslintrc.json +++ b/packages/.eslintrc.json @@ -3,7 +3,7 @@ "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 7, "sourceType": "module", "project": "./tsconfig.eslint.json" }, "extends": ["../.eslintrc.json", "plugin:import/typescript"], - "plugins": ["@typescript-eslint", "unused-imports", "lodash", "import", "unicorn", "react", "react-hooks"], + "plugins": ["@typescript-eslint", "@dimensiondev", "unused-imports", "import", "unicorn", "react", "react-hooks"], "rules": { "no-restricted-imports": [ "error", @@ -21,6 +21,13 @@ "yoda": "error", "radix": "error", "eqeqeq": ["error", "always"], + "import/no-deprecated": "warn", + "no-cond-assign": "error", + "no-constant-condition": "error", + "no-script-url": "error", + "no-throw-literal": "error", + "no-unmodified-loop-condition": "error", + "no-useless-concat": "error", "prefer-regex-literals": "error", "react/jsx-boolean-value": "error", "react/jsx-curly-brace-presence": ["warn", { "props": "never", "children": "never" }], @@ -30,9 +37,6 @@ "react/self-closing-comp": ["warn", { "component": true, "html": true }], "react-hooks/exhaustive-deps": "off", "react-hooks/rules-of-hooks": "error", - "import/no-deprecated": "warn", - "lodash/import-scope": ["error", "member"], - "unused-imports/no-unused-imports-ts": "warn", "unicorn/better-regex": "error", "unicorn/catch-error-name": ["error", { "ignore": ["^err$"] }], "unicorn/no-instanceof-array": "error", @@ -43,19 +47,23 @@ "unicorn/prefer-dom-node-dataset": "error", "unicorn/prefer-number-properties": "error", "unicorn/throw-new-error": "error", + "unused-imports/no-unused-imports-ts": "error", + "@dimensiondev/no-jsx-template-literal": "error", + "@dimensiondev/no-number-constructor": "error", + "@dimensiondev/prefer-early-return": "error", "@typescript-eslint/await-thenable": "error", "@typescript-eslint/no-for-in-array": "error", "@typescript-eslint/no-implied-eval": "error", "@typescript-eslint/no-invalid-this": "error", "@typescript-eslint/no-loop-func": "error", "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/prefer-enum-initializers": "error", "@typescript-eslint/prefer-for-of": "error", "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-literal-enum-member": "error", "@typescript-eslint/prefer-nullish-coalescing": "error", "@typescript-eslint/prefer-optional-chain": "error", "@typescript-eslint/prefer-reduce-type-parameter": "error", - "@typescript-eslint/prefer-string-starts-ends-with": "error", - "@typescript-eslint/prefer-enum-initializers": "error", - "@typescript-eslint/prefer-literal-enum-member": "error" + "@typescript-eslint/prefer-string-starts-ends-with": "error" } } diff --git a/packages/dashboard/src/components/Restore/BackupInfoCard.tsx b/packages/dashboard/src/components/Restore/BackupInfoCard.tsx index 0e14621f4ea0..f9f8fe7fbcb7 100644 --- a/packages/dashboard/src/components/Restore/BackupInfoCard.tsx +++ b/packages/dashboard/src/components/Restore/BackupInfoCard.tsx @@ -10,15 +10,6 @@ interface BackupInfoProps { } export const BackupInfoCard = memo(({ info }: BackupInfoProps) => { - const economizeAbstract = (str: string) => { - if (!str.length) return
error
- if (str.length < 30) return
{str}
- return ( - -
{str.substr(0, 30) + '...' + '(' + str.split(',').length + ')'}
-
- ) - } return ( { ) }) + +function economizeAbstract(input: string) { + if (!input.length) return
error
+ if (input.length < 30) return
{input}
+ return ( + +
+ {input.slice(0, 30)}...({input.split(',').length}) +
+
+ ) +} diff --git a/packages/injected-script/main/GlobalVariableBridge/index.ts b/packages/injected-script/main/GlobalVariableBridge/index.ts index 061050201b5f..d28425e49282 100644 --- a/packages/injected-script/main/GlobalVariableBridge/index.ts +++ b/packages/injected-script/main/GlobalVariableBridge/index.ts @@ -12,11 +12,11 @@ const { shift } = Array.prototype function read(path: string) { const fragments = apply(split, path, ['.' as any]) let result: any = window - while (true) { - if (fragments.length === 0) return result + while (fragments.length !== 0) { const key = apply(shift, fragments, []) result = key ? result[key] : result } + return result } export function access(path: string, id: number, property: string) { diff --git a/packages/injected-script/shared/index.ts b/packages/injected-script/shared/index.ts index 54ca31854b2a..70c5f45e5cd2 100644 --- a/packages/injected-script/shared/index.ts +++ b/packages/injected-script/shared/index.ts @@ -93,6 +93,7 @@ export function encodeEvent(key: T, args: Intern export function decodeEvent(data: string): EventItemBeforeSerialization { const result = parse(data) // Do not throw new Error cause it requires a global lookup. + // eslint-disable-next-line if (!isEventItemBeforeSerialization(result)) throw null return result } diff --git a/packages/mask/background/database/post/index.ts b/packages/mask/background/database/post/index.ts index 30a0807e10ab..0fe5c9b3b1b6 100644 --- a/packages/mask/background/database/post/index.ts +++ b/packages/mask/background/database/post/index.ts @@ -59,6 +59,7 @@ const db = createDBAccessWithAsyncUpgrade( b = a } // Prevent unused code removal + // eslint-disable-next-line no-constant-condition if (1 + 1 === 3) _assert({} as any, {} as any) if (oldVersion < 1) { // inline keys diff --git a/packages/mask/src/extension/background-script/CryptoServices/decryptFrom.ts b/packages/mask/src/extension/background-script/CryptoServices/decryptFrom.ts index a8c2e97d5e4e..4f53c7e569e5 100644 --- a/packages/mask/src/extension/background-script/CryptoServices/decryptFrom.ts +++ b/packages/mask/src/extension/background-script/CryptoServices/decryptFrom.ts @@ -184,6 +184,7 @@ async function* decryptFromPayloadWithProgress_raw( const { publicKey: minePublic, privateKey: minePrivate } = mine const networkWorker = getNetworkWorkerUninitialized(whoAmI) try { + // eslint-disable-next-line if (version === -40) throw '' const gunNetworkHint = networkWorker!.gunNetworkHint const { keyHash, postHash } = await ( diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/helpers.ts b/packages/mask/src/plugins/ITO/SNSAdaptor/helpers.ts index 0bcc630a513b..172c80e7bfb2 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/helpers.ts +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/helpers.ts @@ -28,6 +28,7 @@ export function gcd(a: BigNumber, b: BigNumber) { b_ = a_ a_ = temp } + // eslint-disable-next-line no-constant-condition while (true) { if (b_.isZero()) return a_ a_ = a_.mod(b_) diff --git a/packages/mask/src/plugins/Wallet/services/wallet/index.ts b/packages/mask/src/plugins/Wallet/services/wallet/index.ts index 2a052e64cb6a..b1e91ce2a32a 100644 --- a/packages/mask/src/plugins/Wallet/services/wallet/index.ts +++ b/packages/mask/src/plugins/Wallet/services/wallet/index.ts @@ -174,6 +174,7 @@ export async function deriveWallet(name: string) { let latestDerivationPath = primaryWallet.latestDerivationPath ?? primaryWallet.derivationPath if (!latestDerivationPath) throw new Error('Failed to derive wallet without derivation path.') + // eslint-disable-next-line no-constant-condition while (true) { derivedTimes += 1 diff --git a/packages/mask/src/social-network-adaptor/minds.com/utils/fetch.ts b/packages/mask/src/social-network-adaptor/minds.com/utils/fetch.ts index 4d4cd56c9f90..15a55a574202 100644 --- a/packages/mask/src/social-network-adaptor/minds.com/utils/fetch.ts +++ b/packages/mask/src/social-network-adaptor/minds.com/utils/fetch.ts @@ -49,7 +49,7 @@ export const postContentMessageParser = (node: HTMLElement) => { const href = anchor.getAttribute('title') ?? anchor.getAttribute('href') const content = anchor.textContent if (!content) return makeTypedMessageEmpty() - return makeTypedMessageAnchor(resolve(content), href ?? 'javascript: void 0;', content) + return makeTypedMessageAnchor(resolve(content), href ?? '', content) } else if (node instanceof HTMLImageElement) { const image = node const src = image.getAttribute('src') diff --git a/packages/mask/src/social-network-adaptor/twitter.com/utils/fetch.ts b/packages/mask/src/social-network-adaptor/twitter.com/utils/fetch.ts index 849e623d8458..ccec1a55ae5d 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/utils/fetch.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/utils/fetch.ts @@ -90,7 +90,7 @@ export const postContentMessageParser = (node: HTMLElement) => { const href = anchor.getAttribute('title') ?? anchor.getAttribute('href') const content = anchor.textContent if (!content) return makeTypedMessageEmpty() - return makeTypedMessageAnchor(resolve(content), href ?? 'javascript: void 0;', content) + return makeTypedMessageAnchor(resolve(content), href ?? '', content) } else if (node instanceof HTMLImageElement) { const image = node const src = image.getAttribute('src') diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad19d3e016fa..95c054911e58 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,7 @@ importers: specifiers: '@commitlint/cli': ^16.0.0 '@commitlint/config-conventional': ^16.0.0 + '@dimensiondev/eslint-plugin': ^0.0.1-20211229115308-cb532c7 '@dimensiondev/kit': 0.0.0-20211215044858-27d964f '@dimensiondev/patch-package': ^6.5.0 '@emotion/cache': ^11.7.1 @@ -35,7 +36,6 @@ importers: eslint: 8.5.0 eslint-config-prettier: ^8.3.0 eslint-plugin-import: 2.25.3 - eslint-plugin-lodash: ^7.3.0 eslint-plugin-prettier: ^4.0.0 eslint-plugin-react: ^7.28.0 eslint-plugin-react-hooks: ^4.3.0 @@ -89,6 +89,7 @@ importers: devDependencies: '@commitlint/cli': 16.0.0 '@commitlint/config-conventional': 16.0.0 + '@dimensiondev/eslint-plugin': 0.0.1-20211229115308-cb532c7_eslint@8.5.0 '@dimensiondev/patch-package': 6.5.0 '@jest/globals': 27.4.4 '@magic-works/i18n-codegen': 0.0.6_typescript@4.6.0-dev.20211202 @@ -100,7 +101,6 @@ importers: eslint: 8.5.0 eslint-config-prettier: 8.3.0_eslint@8.5.0 eslint-plugin-import: 2.25.3_eslint@8.5.0 - eslint-plugin-lodash: 7.3.0_eslint@8.5.0 eslint-plugin-prettier: 4.0.0_94e1b6d3ce6ea916847122712570e9ae eslint-plugin-react: 7.28.0_eslint@8.5.0 eslint-plugin-react-hooks: 4.3.0_eslint@8.5.0 @@ -3431,6 +3431,14 @@ packages: '@msgpack/msgpack': 1.12.2 dev: false + /@dimensiondev/eslint-plugin/0.0.1-20211229115308-cb532c7_eslint@8.5.0: + resolution: {integrity: sha512-3YwKpHuT6LkdoFATEdoIMFtV9zEjsKpoMnM15JH24mzi14JZ/NeQ9iS43NaFtF1WUrdUCAVl7SbYnJp05cuCRQ==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20211229115308-cb532c7/d2040c926db8b7b25f332ff0566f86705ad6dbb2264e356851f0469021273ada} + peerDependencies: + eslint: '>=6' + dependencies: + eslint: 8.5.0 + dev: true + /@dimensiondev/holoflows-kit/0.9.0-20210902104757-7c3d0d0: resolution: {integrity: sha512-Vk22WLOTW20OECTHdLGulGmDsTFguURQYB9Oq8S+eDVrmWHCxKD/N+4OU5uCFrWCkqjl/n7vec3fVWUSunpBeA==, tarball: download/@dimensiondev/holoflows-kit/0.9.0-20210902104757-7c3d0d0/bce56871014284e7863fc97177b316aec94f6dfddf627312e690958400e958e8} peerDependencies: @@ -13150,16 +13158,6 @@ packages: tsconfig-paths: 3.12.0 dev: true - /eslint-plugin-lodash/7.3.0_eslint@8.5.0: - resolution: {integrity: sha512-FQM8HklruJzulPawX3uZqWbeyN3bQT4hjVCpFYMrWo0Hdz1qDCwp1v3JS4zjhdssAXdwCxdnyrNMCZJK70GeUQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: '>=2' - dependencies: - eslint: 8.5.0 - lodash: 4.17.21 - dev: true - /eslint-plugin-prettier/4.0.0_94e1b6d3ce6ea916847122712570e9ae: resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} engines: {node: '>=6.0.0'} From 9662dd1c3715a0c85081bf5f288614ef43eff2c2 Mon Sep 17 00:00:00 2001 From: Septs Date: Fri, 31 Dec 2021 13:18:24 +0800 Subject: [PATCH 02/13] fix: prefer early return --- packages/.eslintrc.json | 2 +- .../src/components/Stepper/index.tsx | 7 +- .../components/ContactTableRow/index.tsx | 11 +- .../dashboard/src/pages/Personas/index.tsx | 7 +- .../Settings/components/BackupSettingItem.tsx | 9 +- .../components/Transfer/TransferERC20.tsx | 12 +- .../HelperService/extensionPermission.ts | 7 +- .../DashboardComponents/ActionButton.tsx | 7 +- .../popups/PermissionAwareRedirect/index.tsx | 9 +- .../popups/pages/Personas/Logout/index.tsx | 17 +- .../Wallet/ContractInteraction/index.tsx | 7 +- .../Wallet/GasSetting/GasSetting1559.tsx | 39 ++-- .../Wallet/GasSetting/Prior1559GasSetting.tsx | 24 ++- .../popups/pages/Wallet/SignRequest/index.tsx | 7 +- .../Wallet/Transfer/Prior1559Transfer.tsx | 7 +- .../pages/Wallet/Transfer/Transfer1559.tsx | 21 +-- .../popups/pages/Wallet/Unlock/index.tsx | 10 +- .../extension/popups/pages/Wallet/index.tsx | 6 +- .../FindTruman/SNSAdaptor/ConstPromise.ts | 7 +- .../FindTruman/SNSAdaptor/MainDialog.tsx | 23 +-- .../GoodGhosting/hooks/useGameActions.ts | 167 ++++++++---------- .../plugins/PoolTogether/UI/DepositDialog.tsx | 7 +- .../SNSAdaptor/NftRedPacketHistoryItem.tsx | 7 +- .../SNSAdaptor/trader/Gas1559Settings.tsx | 27 +-- .../trader/GasPrior1559Settings.tsx | 15 +- .../Trader/SNSAdaptor/trader/Trader.tsx | 7 +- .../Transak/SNSAdaptor/BuyTokenDialog.tsx | 7 +- .../SNSAdaptor/UnlockProtocolInPost.tsx | 45 +++-- .../GasSettingDialog/GasSetting1559.tsx | 21 ++- .../Wallet/SNSAdaptor/RenameWalletDialog.tsx | 7 +- .../src/plugins/dHEDGE/UI/InvestDialog.tsx | 7 +- .../facebook.com/ui-provider.ts | 2 +- packages/mask/src/utils/dom.ts | 14 +- packages/mask/utils-ui/DOM/DocumentLoad.ts | 14 +- .../src/UI/components/AssetPlayer/index.tsx | 7 +- 35 files changed, 250 insertions(+), 343 deletions(-) diff --git a/packages/.eslintrc.json b/packages/.eslintrc.json index 35d965410d07..f547891a72b3 100644 --- a/packages/.eslintrc.json +++ b/packages/.eslintrc.json @@ -49,7 +49,7 @@ "unicorn/throw-new-error": "error", "unused-imports/no-unused-imports-ts": "error", "@dimensiondev/no-jsx-template-literal": "error", - "@dimensiondev/no-number-constructor": "error", + "@dimensiondev/no-number-constructor": "off", "@dimensiondev/prefer-early-return": "error", "@typescript-eslint/await-thenable": "error", "@typescript-eslint/no-for-in-array": "error", diff --git a/packages/dashboard/src/components/Stepper/index.tsx b/packages/dashboard/src/components/Stepper/index.tsx index 596564b38362..4d641d7370c4 100644 --- a/packages/dashboard/src/components/Stepper/index.tsx +++ b/packages/dashboard/src/components/Stepper/index.tsx @@ -54,10 +54,9 @@ export const Stepper = (props: StepperProps) => { useEffect(() => { Children.forEach(props.children, (child: ReactElement) => { - if (isValidElement(child)) { - const name = child.props.name - setSteps(name, child) - } + if (!isValidElement(child)) return + const name = child.props.name + setSteps(name, child) }) }, []) diff --git a/packages/dashboard/src/pages/Personas/components/ContactTableRow/index.tsx b/packages/dashboard/src/pages/Personas/components/ContactTableRow/index.tsx index 30760b25e007..f35046ec569e 100644 --- a/packages/dashboard/src/pages/Personas/components/ContactTableRow/index.tsx +++ b/packages/dashboard/src/pages/Personas/components/ContactTableRow/index.tsx @@ -66,12 +66,11 @@ export const ContactTableRow = memo(({ network, contact, i const theme = useTheme().palette.mode const handleClickStar = useCallback(async () => { - if (currentPersona) { - contact.favorite - ? await removeContactFromFavorite(contact.identifier, currentPersona) - : await addContactToFavorite(contact.identifier, currentPersona) - onReset() - } + if (!currentPersona) return + contact.favorite + ? await removeContactFromFavorite(contact.identifier, currentPersona) + : await addContactToFavorite(contact.identifier, currentPersona) + onReset() }, [contact, currentPersona, onReset]) const [{ loading }, handleClickInvite] = useAsyncFn(async () => { diff --git a/packages/dashboard/src/pages/Personas/index.tsx b/packages/dashboard/src/pages/Personas/index.tsx index ea19e155a7ae..3b83aa19a179 100644 --- a/packages/dashboard/src/pages/Personas/index.tsx +++ b/packages/dashboard/src/pages/Personas/index.tsx @@ -53,10 +53,9 @@ function Personas() { PersonaContext.useContainer() useEffect(() => { - if (personas?.length === 0) { - showSnackbar(t.personas_setup_tip(), { variant: 'warning' }) - navigate(DashboardRoutes.Setup) - } + if (personas?.length !== 0) return + showSnackbar(t.personas_setup_tip(), { variant: 'warning' }) + navigate(DashboardRoutes.Setup) }, [personas]) const [activeTab, setActiveTab] = useState( diff --git a/packages/dashboard/src/pages/Settings/components/BackupSettingItem.tsx b/packages/dashboard/src/pages/Settings/components/BackupSettingItem.tsx index 7e5ee6b07dfd..5921764575a9 100644 --- a/packages/dashboard/src/pages/Settings/components/BackupSettingItem.tsx +++ b/packages/dashboard/src/pages/Settings/components/BackupSettingItem.tsx @@ -11,11 +11,10 @@ export default function BackupSettingItem() { const [desc, setDesc] = useState(t.settings_global_backup_desc()) useEffect(() => { - if (user.backupAt) { - const method = user.backupMethod === 'local' ? t.settings_local_backup() : t.settings_cloud_backup() - const last = t.settings_global_backup_last({ backupMethod: method, backupAt: user.backupAt }) - setDesc(last) - } + if (!user.backupAt) return + const method = user.backupMethod === 'local' ? t.settings_local_backup() : t.settings_cloud_backup() + const last = t.settings_global_backup_last({ backupMethod: method, backupAt: user.backupAt }) + setDesc(last) }, [user.backupAt]) return ( diff --git a/packages/dashboard/src/pages/Wallets/components/Transfer/TransferERC20.tsx b/packages/dashboard/src/pages/Wallets/components/Transfer/TransferERC20.tsx index 3efa54345a95..8dc3d2ccc51d 100644 --- a/packages/dashboard/src/pages/Wallets/components/Transfer/TransferERC20.tsx +++ b/packages/dashboard/src/pages/Wallets/components/Transfer/TransferERC20.tsx @@ -163,12 +163,12 @@ export const TransferERC20 = memo(({ token }) => { //#endregion useEffect(() => { - if (transferState.type === TransactionStateType.FAILED || transferState.type === TransactionStateType.HASH) { - setMemo('') - setAddress('') - setAmount('') - resetTransferCallback() - } + const ALLOWED_TYPES = [TransactionStateType.FAILED, TransactionStateType.HASH] + if (!ALLOWED_TYPES.includes(transferState.type)) return + setMemo('') + setAddress('') + setAmount('') + resetTransferCallback() }, [transferState]) const ensContent = useMemo(() => { diff --git a/packages/mask/src/extension/background-script/HelperService/extensionPermission.ts b/packages/mask/src/extension/background-script/HelperService/extensionPermission.ts index 04aa2a1ba442..a2265be42e7f 100644 --- a/packages/mask/src/extension/background-script/HelperService/extensionPermission.ts +++ b/packages/mask/src/extension/background-script/HelperService/extensionPermission.ts @@ -16,10 +16,9 @@ export async function requestExtensionPermission(permission: browser.permissions }) return new Promise((resolve) => { browser.windows.onRemoved.addListener(function listener(windowID: number) { - if (windowID === popup.id) { - resolve(browser.permissions.contains(permission)) - browser.windows.onRemoved.removeListener(listener) - } + if (windowID !== popup.id) return + resolve(browser.permissions.contains(permission)) + browser.windows.onRemoved.removeListener(listener) }) }) } diff --git a/packages/mask/src/extension/options-page/DashboardComponents/ActionButton.tsx b/packages/mask/src/extension/options-page/DashboardComponents/ActionButton.tsx index 53b112d19e06..d3f81ac1d162 100644 --- a/packages/mask/src/extension/options-page/DashboardComponents/ActionButton.tsx +++ b/packages/mask/src/extension/options-page/DashboardComponents/ActionButton.tsx @@ -27,10 +27,9 @@ function useDebounceAsync( useDebounce(() => setDebounceLoading(state.loading), 500, [state]) const f = useCallback( (...args: T) => { - if (!state.loading) { - setDebounceLoading(false) - startAsyncFn(...args) - } + if (state.loading) return + setDebounceLoading(false) + startAsyncFn(...args) }, [startAsyncFn, state.loading], ) diff --git a/packages/mask/src/extension/popups/PermissionAwareRedirect/index.tsx b/packages/mask/src/extension/popups/PermissionAwareRedirect/index.tsx index 3aa4cb600d75..5cf8ae7f2840 100644 --- a/packages/mask/src/extension/popups/PermissionAwareRedirect/index.tsx +++ b/packages/mask/src/extension/popups/PermissionAwareRedirect/index.tsx @@ -20,11 +20,10 @@ function Inner({ url, context }: { url: string; context: string }) { return browser.permissions.contains({ origins: [getHostPermissionFieldFromURL(url)] }) }, [url]) useEffect(() => { - if (hasPermission) { - const u = new URL(url) - u.searchParams.append('mask_context', context) - location.href = u.toString() - } + if (!hasPermission) return + const parsed = new URL(url) + parsed.searchParams.append('mask_context', context) + location.assign(parsed.toString()) }, [hasPermission, url]) return ( { }, []) const [{ loading }, onLogout] = useAsyncFn(async () => { - if (deletingPersona) { - await Services.Identity.logoutPersona(deletingPersona.identifier) - const currentPersona = await Services.Settings.getCurrentPersonaIdentifier() - if (!currentPersona) { - const lastCreatedPersona = await Services.Identity.queryLastPersonaCreated() - if (lastCreatedPersona) - await Services.Settings.setCurrentPersonaIdentifier(lastCreatedPersona.identifier) - } - - history.replace(PopupRoutes.Personas) + if (!deletingPersona) return + await Services.Identity.logoutPersona(deletingPersona.identifier) + const currentPersona = await Services.Settings.getCurrentPersonaIdentifier() + if (!currentPersona) { + const lastCreatedPersona = await Services.Identity.queryLastPersonaCreated() + if (lastCreatedPersona) await Services.Settings.setCurrentPersonaIdentifier(lastCreatedPersona.identifier) } + history.replace(PopupRoutes.Personas) }, [deletingPersona, history]) return ( { }, [request, location.search, history]) const [{ loading: rejectLoading }, handleReject] = useAsyncFn(async () => { - if (request) { - await Services.Ethereum.rejectRequest(request.payload) - history.replace(PopupRoutes.Wallet) - } + if (!request) return + await Services.Ethereum.rejectRequest(request.payload) + history.replace(PopupRoutes.Wallet) }, [request]) // Wei diff --git a/packages/mask/src/extension/popups/pages/Wallet/GasSetting/GasSetting1559.tsx b/packages/mask/src/extension/popups/pages/Wallet/GasSetting/GasSetting1559.tsx index c4519cd720a4..54f66a4583bd 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/GasSetting/GasSetting1559.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/GasSetting/GasSetting1559.tsx @@ -265,35 +265,28 @@ export const GasSetting1559 = memo(() => { //#region If the selected changed, set the value on the option to the form data useEffect(() => { - if (selected !== null) { - setValue( - 'maxPriorityFeePerGas', - new BigNumber(options[selected].content?.suggestedMaxPriorityFeePerGas ?? 0).toString() ?? '', - ) - setValue( - 'maxFeePerGas', - new BigNumber(options[selected].content?.suggestedMaxFeePerGas ?? 0).toString() ?? '', - ) - } + if (selected === null) return + const { content } = options[selected] + setValue('maxPriorityFeePerGas', new BigNumber(content?.suggestedMaxPriorityFeePerGas ?? 0).toString() ?? '') + setValue('maxFeePerGas', new BigNumber(content?.suggestedMaxFeePerGas ?? 0).toString() ?? '') }, [selected, setValue, options]) //#endregion const [{ loading }, handleConfirm] = useAsyncFn( async (data: zod.infer) => { - if (value) { - const config = value.payload.params.map((param) => ({ - ...param, - gas: toHex(new BigNumber(data.gasLimit).toString()), - maxPriorityFeePerGas: toHex(formatGweiToWei(data.maxPriorityFeePerGas).toString()), - maxFeePerGas: toHex(formatGweiToWei(data.maxFeePerGas).toString()), - })) + if (!value) return + const config = value.payload.params.map((param) => ({ + ...param, + gas: toHex(new BigNumber(data.gasLimit).toString()), + maxPriorityFeePerGas: toHex(formatGweiToWei(data.maxPriorityFeePerGas).toString()), + maxFeePerGas: toHex(formatGweiToWei(data.maxFeePerGas).toString()), + })) - await WalletRPC.updateUnconfirmedRequest({ - ...value.payload, - params: config, - }) - history.goBack() - } + await WalletRPC.updateUnconfirmedRequest({ + ...value.payload, + params: config, + }) + history.goBack() }, [value, history], ) diff --git a/packages/mask/src/extension/popups/pages/Wallet/GasSetting/Prior1559GasSetting.tsx b/packages/mask/src/extension/popups/pages/Wallet/GasSetting/Prior1559GasSetting.tsx index 3fb9fea5b15c..e1f0d0f6cb19 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/GasSetting/Prior1559GasSetting.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/GasSetting/Prior1559GasSetting.tsx @@ -213,19 +213,17 @@ export const Prior1559GasSetting = memo(() => { const [{ loading }, handleConfirm] = useAsyncFn( async (data: zod.infer) => { - if (value) { - const config = value.payload.params.map((param) => ({ - ...param, - gas: toHex(new BigNumber(data.gasLimit).toString()), - gasPrice: toHex(formatGweiToWei(data.gasPrice).toString()), - })) - - await WalletRPC.updateUnconfirmedRequest({ - ...value.payload, - params: config, - }) - history.goBack() - } + if (!value) return + const config = value.payload.params.map((param) => ({ + ...param, + gas: toHex(new BigNumber(data.gasLimit).toString()), + gasPrice: toHex(formatGweiToWei(data.gasPrice).toString()), + })) + await WalletRPC.updateUnconfirmedRequest({ + ...value.payload, + params: config, + }) + history.goBack() }, [value], ) diff --git a/packages/mask/src/extension/popups/pages/Wallet/SignRequest/index.tsx b/packages/mask/src/extension/popups/pages/Wallet/SignRequest/index.tsx index 4f6f0a734802..0ee48f5e686f 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/SignRequest/index.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/SignRequest/index.tsx @@ -109,10 +109,9 @@ const SignRequest = memo(() => { }, [value, location.search, history]) const [{ loading: rejectLoading }, handleReject] = useAsyncFn(async () => { - if (value) { - await Services.Ethereum.rejectRequest(value.payload) - history.replace(PopupRoutes.Wallet) - } + if (!value) return + await Services.Ethereum.rejectRequest(value.payload) + history.replace(PopupRoutes.Wallet) }, [value]) useUpdateEffect(() => { diff --git a/packages/mask/src/extension/popups/pages/Wallet/Transfer/Prior1559Transfer.tsx b/packages/mask/src/extension/popups/pages/Wallet/Transfer/Prior1559Transfer.tsx index 4e9a022d4fec..f2525b6db9d6 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/Transfer/Prior1559Transfer.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/Transfer/Prior1559Transfer.tsx @@ -227,10 +227,9 @@ export const Prior1559Transfer = memo(({ selectedAsset, //#region set default gasLimit useUpdateEffect(() => { - if (minGasLimit) { - methods.setValue('gasLimit', `${minGasLimit}`) - setMinGasLimitContext(minGasLimit) - } + if (!minGasLimit) return + methods.setValue('gasLimit', minGasLimit.toString()) + setMinGasLimitContext(minGasLimit) }, [minGasLimit, methods.setValue]) //#endregion diff --git a/packages/mask/src/extension/popups/pages/Wallet/Transfer/Transfer1559.tsx b/packages/mask/src/extension/popups/pages/Wallet/Transfer/Transfer1559.tsx index b8dbd21a58d2..fc3df2bbf6d5 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/Transfer/Transfer1559.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/Transfer/Transfer1559.tsx @@ -314,25 +314,18 @@ export const Transfer1559 = memo(({ selectedAsset, openAssetM //#region set default gasLimit useUpdateEffect(() => { - if (minGasLimit) { - methods.setValue('gasLimit', `${minGasLimit}`) - setMinGasLimitContext(minGasLimit) - } + if (!minGasLimit) return + methods.setValue('gasLimit', `${minGasLimit}`) + setMinGasLimitContext(minGasLimit) }, [minGasLimit, methods.setValue]) //#endregion //#region set default Max priority gas fee and max fee useUpdateEffect(() => { - if (estimateGasFees) { - methods.setValue( - 'maxFeePerGas', - new BigNumber(estimateGasFees.medium?.suggestedMaxFeePerGas ?? 0).toString(), - ) - methods.setValue( - 'maxPriorityFeePerGas', - new BigNumber(estimateGasFees.medium?.suggestedMaxPriorityFeePerGas ?? 0).toString(), - ) - } + if (!estimateGasFees) return + const { medium } = estimateGasFees + methods.setValue('maxFeePerGas', new BigNumber(medium?.suggestedMaxFeePerGas ?? 0).toString()) + methods.setValue('maxPriorityFeePerGas', new BigNumber(medium?.suggestedMaxPriorityFeePerGas ?? 0).toString()) }, [estimateGasFees, methods.setValue]) //#endregion diff --git a/packages/mask/src/extension/popups/pages/Wallet/Unlock/index.tsx b/packages/mask/src/extension/popups/pages/Wallet/Unlock/index.tsx index dd8a0f587356..c3f0150b64de 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/Unlock/index.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/Unlock/index.tsx @@ -68,13 +68,9 @@ const Unlock = memo(() => { const { isLocked, loading: getLockStatusLoading } = useWalletLockStatus() useAsync(async () => { - if (isLocked === false && !getLockStatusLoading) { - const from = new URLSearchParams(location.search).get('from') - history.replace({ - pathname: from ?? PopupRoutes.Wallet, - search: location.search, - }) - } + if (!(isLocked === false && !getLockStatusLoading)) return + const from = new URLSearchParams(location.search).get('from') + history.replace({ pathname: from ?? PopupRoutes.Wallet, search: location.search }) }, [isLocked, getLockStatusLoading, location.search]) return ( diff --git a/packages/mask/src/extension/popups/pages/Wallet/index.tsx b/packages/mask/src/extension/popups/pages/Wallet/index.tsx index 5a5eaddcea26..4cf80b0229e0 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/index.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/index.tsx @@ -78,10 +78,8 @@ export default function Wallet() { }, [location.search, location.pathname]) useEffect(() => { - if (isLocked && !getLockStatusLoading && location.pathname !== PopupRoutes.Unlock) { - history.replace(urlcat(PopupRoutes.Unlock, { from: location.pathname })) - return - } + if (!(isLocked && !getLockStatusLoading && location.pathname !== PopupRoutes.Unlock)) return + history.replace(urlcat(PopupRoutes.Unlock, { from: location.pathname })) }, [isLocked, location.pathname, getLockStatusLoading]) useEffect(() => { diff --git a/packages/mask/src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts b/packages/mask/src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts index 1719cee0b158..4b5d64825d99 100644 --- a/packages/mask/src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts +++ b/packages/mask/src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts @@ -9,10 +9,9 @@ export default class FindTrumanConstPromise { constructor() {} init = (executor: (resolve: (value: FindTrumanConst) => void, reject: (reason: any) => void) => void) => { - if (!this.initialized) { - this.initialized = true - executor(this.resolve, this.reject) - } + if (this.initialized) return + this.initialized = true + executor(this.resolve, this.reject) } initialized: boolean = false diff --git a/packages/mask/src/plugins/FindTruman/SNSAdaptor/MainDialog.tsx b/packages/mask/src/plugins/FindTruman/SNSAdaptor/MainDialog.tsx index fa3849fc1d1d..047b3ad63e46 100644 --- a/packages/mask/src/plugins/FindTruman/SNSAdaptor/MainDialog.tsx +++ b/packages/mask/src/plugins/FindTruman/SNSAdaptor/MainDialog.tsx @@ -48,25 +48,14 @@ const FindTrumanDialog: React.FC = (props) => { const [consts, setConsts] = useState() useEffect(() => { - if (!!account) { - if (!FindTruman_Const.initialized) { - FindTruman_Const.init((resolve, reject) => { - fetchConst(i18n.language) - .then((res) => { - resolve(res) - }) - .catch((error) => { - reject(error) - }) - }) - } - FindTruman_Const.then((res) => { - setConsts(res) - }) - fetchUserParticipatedStoryStatus(account).then((res) => { - setStatuses(res) + if (!account) return + if (!FindTruman_Const.initialized) { + FindTruman_Const.init((resolve, reject) => { + fetchConst(i18n.language).then(resolve, reject) }) } + FindTruman_Const.then(setConsts) + fetchUserParticipatedStoryStatus(account).then(setStatuses) }, [account]) const renderProgress = (total: number, success: number, color: 'primary' | 'secondary' | 'success') => { diff --git a/packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts b/packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts index 0386d49bff98..9ff756877a0d 100644 --- a/packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts +++ b/packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts @@ -64,39 +64,32 @@ export function useMakeDeposit(info: GoodGhostingInfo) { return { canMakeDeposit, - makeDeposit: async () => { - if (contract) { - const gasEstimate = await contract.methods.makeDeposit().estimateGas({ - from: account, - }) + async makeDeposi() { + if (!contract) return + const gasEstimate = await contract.methods.makeDeposit().estimateGas({ + from: account, + }) - let txHash = '' - return new Promise(async (resolve, reject) => { - contract.methods - .makeDeposit() - .send({ - from: account, - gas: gasEstimate, - }) - .on(TransactionEventType.TRANSACTION_HASH, (hash) => (txHash = hash)) - .on(TransactionEventType.CONFIRMATION, (_no, receipt: TransactionReceipt) => { - if (receipt.status) { - resolve() - } else { - reject({ - gameActionStatus: TransactionStateType.CONFIRMED, - ...receipt, - }) - } - }) - .on(TransactionEventType.ERROR, (error) => { - reject({ - gameActionStatus: TransactionStateType.FAILED, - transactionHash: txHash, - }) + let txHash = '' + return new Promise(async (resolve, reject) => { + contract.methods + .makeDeposit() + .send({ from: account, gas: gasEstimate }) + .on(TransactionEventType.TRANSACTION_HASH, (hash) => (txHash = hash)) + .on(TransactionEventType.CONFIRMATION, (_no, receipt: TransactionReceipt) => { + if (receipt.status) { + resolve() + } else { + reject({ gameActionStatus: TransactionStateType.CONFIRMED, ...receipt }) + } + }) + .on(TransactionEventType.ERROR, () => { + reject({ + gameActionStatus: TransactionStateType.FAILED, + transactionHash: txHash, }) - }) - } + }) + }) }, } } @@ -110,39 +103,31 @@ export function useWithdraw(info: GoodGhostingInfo) { return { canWithdraw, - withdraw: async () => { - if (contract) { - const gasEstimate = await contract.methods.withdraw().estimateGas({ - from: account, - }) - - let txHash = '' - return new Promise(async (resolve, reject) => { - contract.methods - .withdraw() - .send({ - from: account, - gas: gasEstimate, - }) - .on(TransactionEventType.TRANSACTION_HASH, (hash) => (txHash = hash)) - .on(TransactionEventType.CONFIRMATION, (_no, receipt: TransactionReceipt) => { - if (receipt.status) { - resolve() - } else { - reject({ - gameActionStatus: TransactionStateType.CONFIRMED, - ...receipt, - }) - } - }) - .on(TransactionEventType.ERROR, (error) => { - reject({ - gameActionStatus: TransactionStateType.FAILED, - transactionHash: txHash, - }) + async withdraw() { + if (!contract) return + const gasEstimate = await contract.methods.withdraw().estimateGas({ + from: account, + }) + let txHash = '' + return new Promise(async (resolve, reject) => { + contract.methods + .withdraw() + .send({ from: account, gas: gasEstimate }) + .on(TransactionEventType.TRANSACTION_HASH, (hash) => (txHash = hash)) + .on(TransactionEventType.CONFIRMATION, (_no, receipt: TransactionReceipt) => { + if (receipt.status) { + resolve() + } else { + reject({ gameActionStatus: TransactionStateType.CONFIRMED, ...receipt }) + } + }) + .on(TransactionEventType.ERROR, () => { + reject({ + gameActionStatus: TransactionStateType.FAILED, + transactionHash: txHash, }) - }) - } + }) + }) }, } } @@ -157,39 +142,31 @@ export function useEarlyWithdraw(info: GoodGhostingInfo) { return { canEarlyWithdraw, - earlyWithdraw: async () => { - if (contract) { - const gasEstimate = await contract.methods.earlyWithdraw().estimateGas({ - from: account, - }) - - let txHash = '' - return new Promise(async (resolve, reject) => { - contract.methods - .earlyWithdraw() - .send({ - from: account, - gas: gasEstimate, - }) - .on(TransactionEventType.TRANSACTION_HASH, (hash) => (txHash = hash)) - .on(TransactionEventType.CONFIRMATION, (_no, receipt: TransactionReceipt) => { - if (receipt.status) { - resolve() - } else { - reject({ - gameActionStatus: TransactionStateType.CONFIRMED, - ...receipt, - }) - } - }) - .on(TransactionEventType.ERROR, (error) => { - reject({ - gameActionStatus: TransactionStateType.FAILED, - transactionHash: txHash, - }) + async earlyWithdraw() { + if (!contract) return + const gasEstimate = await contract.methods.earlyWithdraw().estimateGas({ + from: account, + }) + let txHash = '' + return new Promise(async (resolve, reject) => { + contract.methods + .earlyWithdraw() + .send({ from: account, gas: gasEstimate }) + .on(TransactionEventType.TRANSACTION_HASH, (hash) => (txHash = hash)) + .on(TransactionEventType.CONFIRMATION, (_no, receipt: TransactionReceipt) => { + if (receipt.status) { + resolve() + } else { + reject({ gameActionStatus: TransactionStateType.CONFIRMED, ...receipt }) + } + }) + .on(TransactionEventType.ERROR, () => { + reject({ + gameActionStatus: TransactionStateType.FAILED, + transactionHash: txHash, }) - }) - } + }) + }) }, } } diff --git a/packages/mask/src/plugins/PoolTogether/UI/DepositDialog.tsx b/packages/mask/src/plugins/PoolTogether/UI/DepositDialog.tsx index 20bf6f749d93..90b574253b43 100644 --- a/packages/mask/src/plugins/PoolTogether/UI/DepositDialog.tsx +++ b/packages/mask/src/plugins/PoolTogether/UI/DepositDialog.tsx @@ -92,10 +92,9 @@ export function DepositDialog() { //#region remote controlled dialog const { open, closeDialog } = useRemoteControlledDialog(PluginPoolTogetherMessages.DepositDialogUpdated, (ev) => { - if (ev.open) { - setPool(ev.pool) - setToken(ev.token) - } + if (!ev.open) return + setPool(ev.pool) + setToken(ev.token) }) const onClose = useCallback(() => { closeDialog() diff --git a/packages/mask/src/plugins/RedPacket/SNSAdaptor/NftRedPacketHistoryItem.tsx b/packages/mask/src/plugins/RedPacket/SNSAdaptor/NftRedPacketHistoryItem.tsx index 56d0efe93b65..edc7f6634ee5 100644 --- a/packages/mask/src/plugins/RedPacket/SNSAdaptor/NftRedPacketHistoryItem.tsx +++ b/packages/mask/src/plugins/RedPacket/SNSAdaptor/NftRedPacketHistoryItem.tsx @@ -159,10 +159,9 @@ export const NftRedPacketHistoryItem: FC = memo( WalletMessages.events.walletStatusDialogUpdated, ) const handleSend = useCallback(() => { - if (canSend && contractDetailed && isPasswordValid) { - onSend(history, contractDetailed) - closeWalletStatusDialog() - } + if (!(canSend && contractDetailed && isPasswordValid)) return + onSend(history, contractDetailed) + closeWalletStatusDialog() }, [onSend, closeWalletStatusDialog, canSend, history, contractDetailed, isPasswordValid]) const { value: redpacketStatus } = useAvailabilityNftRedPacket(history.rpid, account) diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Gas1559Settings.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Gas1559Settings.tsx index a311b509502d..b21a95ae3de4 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Gas1559Settings.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Gas1559Settings.tsx @@ -235,28 +235,19 @@ export const Gas1559Settings = memo(({ onCancel, onSave: o //#region If the selected changed, set the value on the option to the form data useEffect(() => { - if (selected !== null) { - setValue( - 'maxPriorityFeePerGas', - new BigNumber(options[selected].content?.suggestedMaxPriorityFeePerGas ?? 0).toFixed() ?? '', - ) - setValue( - 'maxFeePerGas', - new BigNumber(options[selected].content?.suggestedMaxFeePerGas ?? 0).toFixed() ?? '', - ) - } + if (selected === null) return + const { content } = options[selected] + setValue('maxPriorityFeePerGas', new BigNumber(content?.suggestedMaxPriorityFeePerGas ?? 0).toFixed() ?? '') + setValue('maxFeePerGas', new BigNumber(content?.suggestedMaxFeePerGas ?? 0).toFixed() ?? '') }, [selected, setValue, options]) //#endregion useEffect(() => { - if (gasConfig?.maxPriorityFeePerGas && gasConfig?.maxFeePerGas && gasConfig?.maxPriorityFeePerGas) { - setOption(null) - setValue('maxFeePerGas', fromWei(new BigNumber(gasConfig.maxFeePerGas).toString(), 'gwei').toString()) - setValue( - 'maxPriorityFeePerGas', - fromWei(new BigNumber(gasConfig.maxPriorityFeePerGas).toString(), 'gwei').toString(), - ) - } + if (!(gasConfig?.maxPriorityFeePerGas && gasConfig?.maxFeePerGas)) return + const { maxFeePerGas, maxPriorityFeePerGas } = gasConfig + setOption(null) + setValue('maxFeePerGas', fromWei(maxFeePerGas.toString(), 'gwei').toString()) + setValue('maxPriorityFeePerGas', fromWei(maxPriorityFeePerGas.toString(), 'gwei').toString()) }, [gasConfig, setValue]) return ( diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/GasPrior1559Settings.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/GasPrior1559Settings.tsx index ce86dbe553a5..3846e9d6a345 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/GasPrior1559Settings.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/GasPrior1559Settings.tsx @@ -166,14 +166,13 @@ export const GasPrior1559Settings = memo(({ onCancel, //#endregion useUpdateEffect(() => { - if (gasConfig?.gasPrice && gasOptions) { - const gasPrice = new BigNumber(gasConfig.gasPrice) - if (gasPrice.isEqualTo(gasOptions.standard)) setOption(0) - else if (gasPrice.isEqualTo(gasOptions.fast)) setOption(1) - else { - setCustomGasPrice(formatWeiToGwei(gasPrice).toString()) - setOption(2) - } + if (!(gasConfig?.gasPrice && gasOptions)) return + const gasPrice = new BigNumber(gasConfig.gasPrice) + if (gasPrice.isEqualTo(gasOptions.standard)) setOption(0) + else if (gasPrice.isEqualTo(gasOptions.fast)) setOption(1) + else { + setCustomGasPrice(formatWeiToGwei(gasPrice).toString()) + setOption(2) } }, [gasConfig, gasOptions]) diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx index e09e12894a2a..04f7f3de6b93 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/Trader.tsx @@ -467,10 +467,9 @@ export function Trader(props: TraderProps) { //#region if chain id be changed, reset the chain id on context, and reset gas config useEffect(() => { - if (chainId) { - setTargetChainId(chainId) - setGasConfig(undefined) - } + if (!chainId) return + setTargetChainId(chainId) + setGasConfig(undefined) }, [chainId]) //#endregion diff --git a/packages/mask/src/plugins/Transak/SNSAdaptor/BuyTokenDialog.tsx b/packages/mask/src/plugins/Transak/SNSAdaptor/BuyTokenDialog.tsx index 58f680997e99..4508c00fe742 100644 --- a/packages/mask/src/plugins/Transak/SNSAdaptor/BuyTokenDialog.tsx +++ b/packages/mask/src/plugins/Transak/SNSAdaptor/BuyTokenDialog.tsx @@ -49,10 +49,9 @@ export function BuyTokenDialog(props: BuyTokenDialogProps) { //#region remote controlled buy token dialog const { open, closeDialog } = useRemoteControlledDialog(PluginTransakMessages.buyTokenDialogUpdated, (ev) => { - if (ev.open) { - setCode(ev.code ?? 'ETH') - setAddress(ev.address) - } + if (!ev.open) return + setCode(ev.code ?? 'ETH') + setAddress(ev.address) }) //#endregion diff --git a/packages/mask/src/plugins/UnlockProtocol/SNSAdaptor/UnlockProtocolInPost.tsx b/packages/mask/src/plugins/UnlockProtocol/SNSAdaptor/UnlockProtocolInPost.tsx index 216b144da8b1..7dfae647e3fe 100644 --- a/packages/mask/src/plugins/UnlockProtocol/SNSAdaptor/UnlockProtocolInPost.tsx +++ b/packages/mask/src/plugins/UnlockProtocol/SNSAdaptor/UnlockProtocolInPost.tsx @@ -28,30 +28,29 @@ export default function UnlockProtocolInPost(props: UnlockProtocolInPostProps) { const data: { locks: Record } = { locks: {} } metadata.val.unlockLocks.forEach((locks) => { PluginUnlockProtocolRPC.verifyPurchase(address, locks.unlocklock, locks.chainid).then((res) => { - if (res) { - const requestData = { - lock: locks.unlocklock, - address: address, - chain: locks.chainid, - identifier: metadata.val.iv, - } - PluginUnlockProtocolRPC.getKey(requestData) - .catch((error) => { - if (error.code === -1) { - setContent(t('plugin_unlockprotocol_server_error')) - } - }) - .then((response) => { - setContent(response.message) - PluginUnlockProtocolRPC.decryptUnlockData( - metadata.val.iv, - response.post.unlockKey, - metadata.val.post, - ).then((content) => { - setContent(content.content) - }) - }) + if (!res) return + const requestData = { + lock: locks.unlocklock, + address: address, + chain: locks.chainid, + identifier: metadata.val.iv, } + PluginUnlockProtocolRPC.getKey(requestData) + .catch((error) => { + if (error.code === -1) { + setContent(t('plugin_unlockprotocol_server_error')) + } + }) + .then((response) => { + setContent(response.message) + PluginUnlockProtocolRPC.decryptUnlockData( + metadata.val.iv, + response.post.unlockKey, + metadata.val.post, + ).then((content) => { + setContent(content.content) + }) + }) }) data.locks[locks.unlocklock] = { network: locks.chainid } }) diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/GasSetting1559.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/GasSetting1559.tsx index cd269e4043da..8d8bd0c44759 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/GasSetting1559.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/GasSettingDialog/GasSetting1559.tsx @@ -118,17 +118,16 @@ export const GasSetting1559: FC = memo( //#region If the selected changed, set the value on the option to the form data useEffect(() => { - if (selectedGasOption !== null) { - clearErrors(['maxPriorityFeePerGas', 'maxFeePerGas']) - setValue( - 'maxPriorityFeePerGas', - new BigNumber(currentGasOption?.content?.suggestedMaxPriorityFeePerGas ?? 0).toString() ?? '', - ) - setValue( - 'maxFeePerGas', - new BigNumber(currentGasOption?.content?.suggestedMaxFeePerGas ?? 0).toString() ?? '', - ) - } + if (selectedGasOption === null) return + clearErrors(['maxPriorityFeePerGas', 'maxFeePerGas']) + setValue( + 'maxPriorityFeePerGas', + new BigNumber(currentGasOption?.content?.suggestedMaxPriorityFeePerGas ?? 0).toString() ?? '', + ) + setValue( + 'maxFeePerGas', + new BigNumber(currentGasOption?.content?.suggestedMaxFeePerGas ?? 0).toString() ?? '', + ) }, [currentGasOption, setValue, options]) //#endregion diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/RenameWalletDialog.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/RenameWalletDialog.tsx index 6ec223335c51..e03993550b4c 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/RenameWalletDialog.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/RenameWalletDialog.tsx @@ -25,10 +25,9 @@ export function WalletRenameWalletDialog() { const [wallet, setWallet] = useState(null) const { open, setDialog } = useRemoteControlledDialog(WalletMessages.events.walletRenameDialogUpdated) WalletMessages.events.walletRenameDialogUpdated.on((data) => { - if (data.open) { - setName(data.wallet?.name ?? '') - setWallet(data.wallet) - } + if (!data.open) return + setName(data.wallet?.name ?? '') + setWallet(data.wallet) }) const handleClose = useCallback(() => { setDialog({ diff --git a/packages/mask/src/plugins/dHEDGE/UI/InvestDialog.tsx b/packages/mask/src/plugins/dHEDGE/UI/InvestDialog.tsx index 1069527c2cc9..abac8587ac08 100644 --- a/packages/mask/src/plugins/dHEDGE/UI/InvestDialog.tsx +++ b/packages/mask/src/plugins/dHEDGE/UI/InvestDialog.tsx @@ -64,10 +64,9 @@ export function InvestDialog() { //#region remote controlled dialog const { open, closeDialog } = useRemoteControlledDialog(PluginDHedgeMessages.InvestDialogUpdated, (ev) => { - if (ev.open) { - setPool(ev.pool) - setAllowedTokens(ev.tokens) - } + if (!ev.open) return + setPool(ev.pool) + setAllowedTokens(ev.tokens) }) const onClose = useCallback(() => { setPool(undefined) diff --git a/packages/mask/src/social-network-adaptor/facebook.com/ui-provider.ts b/packages/mask/src/social-network-adaptor/facebook.com/ui-provider.ts index b821b387c29e..573fc70bc613 100644 --- a/packages/mask/src/social-network-adaptor/facebook.com/ui-provider.ts +++ b/packages/mask/src/social-network-adaptor/facebook.com/ui-provider.ts @@ -104,7 +104,7 @@ const facebookUI: SocialNetworkUI.Definition = { profilePage(profile) { // there is no PWA way on Facebook desktop. // mobile not tested - location.href = getProfilePageUrlAtFacebook(profile) + location.assign(getProfilePageUrlAtFacebook(profile)) }, newsFeed() { const homeLink = document.querySelector( diff --git a/packages/mask/src/utils/dom.ts b/packages/mask/src/utils/dom.ts index 7435c8cc02ed..4fe4813f9c92 100644 --- a/packages/mask/src/utils/dom.ts +++ b/packages/mask/src/utils/dom.ts @@ -16,10 +16,9 @@ export function untilDomLoaded() { if (document.readyState !== 'loading') return Promise.resolve() return new Promise((resolve) => { const callback = () => { - if (document.readyState !== 'loading') { - resolve() - document.removeEventListener('readystatechange', callback) - } + if (document.readyState === 'loading') return + resolve() + document.removeEventListener('readystatechange', callback) } document.addEventListener('readystatechange', callback, { passive: true }) }) @@ -29,10 +28,9 @@ export function untilDocumentReady() { if (document.readyState === 'complete') return Promise.resolve() return new Promise((resolve) => { const callback = () => { - if (document.readyState === 'complete') { - resolve() - document.removeEventListener('readystatechange', callback) - } + if (document.readyState !== 'complete') return + resolve() + document.removeEventListener('readystatechange', callback) } document.addEventListener('readystatechange', callback, { passive: true }) }) diff --git a/packages/mask/utils-ui/DOM/DocumentLoad.ts b/packages/mask/utils-ui/DOM/DocumentLoad.ts index 333d2879297b..4f42ab2f42ed 100644 --- a/packages/mask/utils-ui/DOM/DocumentLoad.ts +++ b/packages/mask/utils-ui/DOM/DocumentLoad.ts @@ -2,10 +2,9 @@ export function untilDomLoaded() { if (document.readyState !== 'loading') return Promise.resolve() return new Promise((resolve) => { const callback = () => { - if (document.readyState !== 'loading') { - resolve() - document.removeEventListener('readystatechange', callback) - } + if (document.readyState === 'loading') return + resolve() + document.removeEventListener('readystatechange', callback) } document.addEventListener('readystatechange', callback, { passive: true }) }) @@ -15,10 +14,9 @@ export function untilDocumentReady() { if (document.readyState === 'complete') return Promise.resolve() return new Promise((resolve) => { const callback = () => { - if (document.readyState === 'complete') { - resolve() - document.removeEventListener('readystatechange', callback) - } + if (document.readyState !== 'complete') return + resolve() + document.removeEventListener('readystatechange', callback) } document.addEventListener('readystatechange', callback, { passive: true }) }) diff --git a/packages/shared/src/UI/components/AssetPlayer/index.tsx b/packages/shared/src/UI/components/AssetPlayer/index.tsx index 9b8baa4b561d..b6efa3921629 100644 --- a/packages/shared/src/UI/components/AssetPlayer/index.tsx +++ b/packages/shared/src/UI/components/AssetPlayer/index.tsx @@ -119,10 +119,9 @@ export const AssetPlayer = memo(({ url, type, options, iconPro setIframe() }} onResized={({ type }) => { - if (type !== 'init') { - cancel() - setPlayerState(AssetPlayerState.NORMAL) - } + if (type === 'init') return + cancel() + setPlayerState(AssetPlayerState.NORMAL) }} style={{ width: playerState !== AssetPlayerState.NORMAL ? 0 : undefined }} checkOrigin={false} From 6f840405e71b19a2eedc2708e925a6b070c633b2 Mon Sep 17 00:00:00 2001 From: Septs Date: Fri, 31 Dec 2021 14:23:32 +0800 Subject: [PATCH 03/13] fix: unsafe location --- package.json | 2 +- packages/.eslintrc.json | 1 + .../social-network-adaptor/facebook.com/ui-provider.ts | 2 +- .../minds.com/automation/gotoNewsFeedPage.ts | 5 +++-- .../minds.com/automation/gotoProfilePage.ts | 2 +- .../twitter.com/automation/gotoNewsFeedPage.ts | 2 +- .../twitter.com/automation/gotoProfilePage.ts | 2 +- pnpm-lock.yaml | 8 ++++---- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index e8b3f0794345..203adba4aa11 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "devDependencies": { "@commitlint/cli": "^16.0.0", "@commitlint/config-conventional": "^16.0.0", - "@dimensiondev/eslint-plugin": "^0.0.1-20211229115308-cb532c7", + "@dimensiondev/eslint-plugin": "^0.0.1-20211231061358-920744f", "@dimensiondev/patch-package": "^6.5.0", "@jest/globals": "^27.4.4", "@magic-works/i18n-codegen": "^0.0.6", diff --git a/packages/.eslintrc.json b/packages/.eslintrc.json index f547891a72b3..16f4493050b6 100644 --- a/packages/.eslintrc.json +++ b/packages/.eslintrc.json @@ -50,6 +50,7 @@ "unused-imports/no-unused-imports-ts": "error", "@dimensiondev/no-jsx-template-literal": "error", "@dimensiondev/no-number-constructor": "off", + "@dimensiondev/no-unsafe-location": "error", "@dimensiondev/prefer-early-return": "error", "@typescript-eslint/await-thenable": "error", "@typescript-eslint/no-for-in-array": "error", diff --git a/packages/mask/src/social-network-adaptor/facebook.com/ui-provider.ts b/packages/mask/src/social-network-adaptor/facebook.com/ui-provider.ts index 573fc70bc613..8d81c39aab86 100644 --- a/packages/mask/src/social-network-adaptor/facebook.com/ui-provider.ts +++ b/packages/mask/src/social-network-adaptor/facebook.com/ui-provider.ts @@ -114,7 +114,7 @@ const facebookUI: SocialNetworkUI.Definition = { ].join(','), ) if (homeLink) homeLink.click() - else if (location.pathname !== '/') location.pathname = '/' + else if (location.pathname !== '/') location.assign('/') }, }, maskCompositionDialog: { open: taskOpenComposeBoxFacebook }, diff --git a/packages/mask/src/social-network-adaptor/minds.com/automation/gotoNewsFeedPage.ts b/packages/mask/src/social-network-adaptor/minds.com/automation/gotoNewsFeedPage.ts index 74640bebe665..469a90056952 100644 --- a/packages/mask/src/social-network-adaptor/minds.com/automation/gotoNewsFeedPage.ts +++ b/packages/mask/src/social-network-adaptor/minds.com/automation/gotoNewsFeedPage.ts @@ -1,4 +1,5 @@ export function gotoNewsFeedPageMinds() { - if (location.pathname.includes('/newsfeed/subscriptions')) return - else location.pathname = '/newsfeed/subscriptions' + const path = '/newsfeed/subscriptions' + if (location.pathname.includes(path)) return + location.assign(path) } diff --git a/packages/mask/src/social-network-adaptor/minds.com/automation/gotoProfilePage.ts b/packages/mask/src/social-network-adaptor/minds.com/automation/gotoProfilePage.ts index 72d156d26916..6c714eaa50fe 100644 --- a/packages/mask/src/social-network-adaptor/minds.com/automation/gotoProfilePage.ts +++ b/packages/mask/src/social-network-adaptor/minds.com/automation/gotoProfilePage.ts @@ -5,6 +5,6 @@ export function gotoProfilePageMinds(profile: ProfileIdentifier) { ;(document.querySelector(`[href="${path}"]`) as HTMLElement | undefined)?.click() setTimeout(() => { // The classic way - if (!location.pathname.startsWith(path)) location.pathname = path + if (!location.pathname.startsWith(path)) location.assign(path) }, 400) } diff --git a/packages/mask/src/social-network-adaptor/twitter.com/automation/gotoNewsFeedPage.ts b/packages/mask/src/social-network-adaptor/twitter.com/automation/gotoNewsFeedPage.ts index 5a50f01f0ef7..b5e0c014cdb4 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/automation/gotoNewsFeedPage.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/automation/gotoNewsFeedPage.ts @@ -1,4 +1,4 @@ export function gotoNewsFeedPageTwitter() { if (location.pathname.includes('/home')) location.reload() - else location.pathname = '/home' + else location.assign('/home') } diff --git a/packages/mask/src/social-network-adaptor/twitter.com/automation/gotoProfilePage.ts b/packages/mask/src/social-network-adaptor/twitter.com/automation/gotoProfilePage.ts index e610fde05c1e..bb105a7a2ed7 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/automation/gotoProfilePage.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/automation/gotoProfilePage.ts @@ -5,6 +5,6 @@ export function gotoProfilePageTwitter(profile: ProfileIdentifier) { ;(document.querySelector(`[href="${path}"]`) as HTMLElement | undefined)?.click() setTimeout(() => { // The classic way - if (!location.pathname.startsWith(path)) location.pathname = path + if (!location.pathname.startsWith(path)) location.assign(path) }, 400) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95c054911e58..6d50ac6a8763 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: specifiers: '@commitlint/cli': ^16.0.0 '@commitlint/config-conventional': ^16.0.0 - '@dimensiondev/eslint-plugin': ^0.0.1-20211229115308-cb532c7 + '@dimensiondev/eslint-plugin': ^0.0.1-20211231061358-920744f '@dimensiondev/kit': 0.0.0-20211215044858-27d964f '@dimensiondev/patch-package': ^6.5.0 '@emotion/cache': ^11.7.1 @@ -89,7 +89,7 @@ importers: devDependencies: '@commitlint/cli': 16.0.0 '@commitlint/config-conventional': 16.0.0 - '@dimensiondev/eslint-plugin': 0.0.1-20211229115308-cb532c7_eslint@8.5.0 + '@dimensiondev/eslint-plugin': 0.0.1-20211231061358-920744f_eslint@8.5.0 '@dimensiondev/patch-package': 6.5.0 '@jest/globals': 27.4.4 '@magic-works/i18n-codegen': 0.0.6_typescript@4.6.0-dev.20211202 @@ -3431,8 +3431,8 @@ packages: '@msgpack/msgpack': 1.12.2 dev: false - /@dimensiondev/eslint-plugin/0.0.1-20211229115308-cb532c7_eslint@8.5.0: - resolution: {integrity: sha512-3YwKpHuT6LkdoFATEdoIMFtV9zEjsKpoMnM15JH24mzi14JZ/NeQ9iS43NaFtF1WUrdUCAVl7SbYnJp05cuCRQ==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20211229115308-cb532c7/d2040c926db8b7b25f332ff0566f86705ad6dbb2264e356851f0469021273ada} + /@dimensiondev/eslint-plugin/0.0.1-20211231061358-920744f_eslint@8.5.0: + resolution: {integrity: sha512-cRFLFF3Ao5c1trW8EPKCInNXTa45lyta4xQA34b5LdP2Puf5dwWlUFW4e4JKTB7QCuAYO3L5Ew546jglknoEKQ==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20211231061358-920744f/a8ea83b4526718300c31eb9adfcfe7f5de3cc35f97e6e9d23f1a80f6dbc4b51d} peerDependencies: eslint: '>=6' dependencies: From db9bf6576b27e26a6d977296cc30b7c421e479c2 Mon Sep 17 00:00:00 2001 From: Septs Date: Fri, 31 Dec 2021 14:26:04 +0800 Subject: [PATCH 04/13] fix: build failed --- packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts b/packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts index 9ff756877a0d..9d193e293a44 100644 --- a/packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts +++ b/packages/mask/src/plugins/GoodGhosting/hooks/useGameActions.ts @@ -64,7 +64,7 @@ export function useMakeDeposit(info: GoodGhostingInfo) { return { canMakeDeposit, - async makeDeposi() { + async makeDeposit() { if (!contract) return const gasEstimate = await contract.methods.makeDeposit().estimateGas({ from: account, From 153d91e38e63783149a54df7f490b1c4503cd9b3 Mon Sep 17 00:00:00 2001 From: Septs Date: Sat, 1 Jan 2022 13:15:17 +0800 Subject: [PATCH 05/13] fix: no simple template literal --- package.json | 2 +- packages/.eslintrc.json | 1 + .../components/DashboardFrame/Navigation.tsx | 2 +- .../src/components/MaskAlert/index.tsx | 30 +++++++++---------- packages/dashboard/src/pages/Setup/index.tsx | 2 +- .../pages/SignUp/steps/MnemonicRevealForm.tsx | 2 +- .../payload_internal/version-38.encoder.ts | 2 +- .../pages/Wallet/Transfer/Transfer1559.tsx | 2 +- .../src/plugins/ITO/SNSAdaptor/CreateForm.tsx | 2 +- .../plugins/ITO/SNSAdaptor/RegionSelect.tsx | 2 +- .../src/plugins/Polls/SNSAdaptor/Polls.tsx | 2 +- pnpm-lock.yaml | 8 ++--- 12 files changed, 29 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 203adba4aa11..7c2a858f63bc 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "devDependencies": { "@commitlint/cli": "^16.0.0", "@commitlint/config-conventional": "^16.0.0", - "@dimensiondev/eslint-plugin": "^0.0.1-20211231061358-920744f", + "@dimensiondev/eslint-plugin": "^0.0.1-20220101051102-ea7a404", "@dimensiondev/patch-package": "^6.5.0", "@jest/globals": "^27.4.4", "@magic-works/i18n-codegen": "^0.0.6", diff --git a/packages/.eslintrc.json b/packages/.eslintrc.json index 16f4493050b6..756eb20c7b12 100644 --- a/packages/.eslintrc.json +++ b/packages/.eslintrc.json @@ -50,6 +50,7 @@ "unused-imports/no-unused-imports-ts": "error", "@dimensiondev/no-jsx-template-literal": "error", "@dimensiondev/no-number-constructor": "off", + "@dimensiondev/no-simple-template-literal": "error", "@dimensiondev/no-unsafe-location": "error", "@dimensiondev/prefer-early-return": "error", "@typescript-eslint/await-thenable": "error", diff --git a/packages/dashboard/src/components/DashboardFrame/Navigation.tsx b/packages/dashboard/src/components/DashboardFrame/Navigation.tsx index c641b0390772..cae6ce8378df 100644 --- a/packages/dashboard/src/components/DashboardFrame/Navigation.tsx +++ b/packages/dashboard/src/components/DashboardFrame/Navigation.tsx @@ -65,7 +65,7 @@ const ListItemLink = styled(ListItemLinkUnStyled)(({ theme }) => { color: MaskColorVar.textLink, backgroundColor: theme.palette.background.default, position: 'relative', - [`${listItemIconClasses.root}`]: { + [listItemIconClasses.root]: { color: MaskColorVar.textLink, }, '&:after': { diff --git a/packages/dashboard/src/components/MaskAlert/index.tsx b/packages/dashboard/src/components/MaskAlert/index.tsx index 68df853a5a0e..ea0bd1aeec73 100644 --- a/packages/dashboard/src/components/MaskAlert/index.tsx +++ b/packages/dashboard/src/components/MaskAlert/index.tsx @@ -9,8 +9,8 @@ const InfoAlert = styled(Alert)(({ theme }) => ({ display: 'flex', alignItems: 'center', lineHeight: '16px', - color: `${MaskColorVar.secondaryInfoText}`, - fontSize: `${theme.typography.caption.fontSize}`, + color: MaskColorVar.secondaryInfoText, + fontSize: theme.typography.caption.fontSize, }, [`& > .${alertClasses.icon}`]: { alignItems: 'center', @@ -20,45 +20,45 @@ const InfoAlert = styled(Alert)(({ theme }) => ({ }, // standard [`&.${alertClasses.standardInfo}`]: { - backgroundColor: `${getMaskColor(theme).infoBackground}`, + backgroundColor: getMaskColor(theme).infoBackground, }, [`&.${alertClasses.standardInfo} .${alertClasses.icon}`]: { - color: `${getMaskColor(theme).secondaryInfoText}`, + color: getMaskColor(theme).secondaryInfoText, }, [`&.${alertClasses.standardInfo} .${alertClasses.action}`]: { - color: `${getMaskColor(theme).secondaryInfoText}`, + color: getMaskColor(theme).secondaryInfoText, }, // error [`&.${alertClasses.standardError}`]: { - backgroundColor: `${MaskColorVar.redMain.alpha(0.1)}`, + backgroundColor: MaskColorVar.redMain.alpha(0.1), }, [`&.${alertClasses.standardError} .${alertClasses.icon}`]: { - color: `${getMaskColor(theme).redMain}`, + color: getMaskColor(theme).redMain, 'path:first-child': { - fill: `${MaskColorVar.redMain.alpha(0.5)}`, + fill: MaskColorVar.redMain.alpha(0.5), }, path: { - fill: `${getMaskColor(theme).redMain}`, + fill: getMaskColor(theme).redMain, }, }, [`&.${alertClasses.standardError} .${alertClasses.action}`]: { - color: `${getMaskColor(theme).redMain}`, + color: getMaskColor(theme).redMain, }, [`&.${alertClasses.standardError} .${alertClasses.message}`]: { - color: `${getMaskColor(theme).redMain}`, + color: getMaskColor(theme).redMain, }, // success [`&.${alertClasses.standardSuccess}`]: { - backgroundColor: `${MaskColorVar.greenMain.alpha(0.1)}`, + backgroundColor: MaskColorVar.greenMain.alpha(0.1), }, [`&.${alertClasses.standardSuccess} .${alertClasses.icon}`]: { - color: `${getMaskColor(theme).greenMain}`, + color: getMaskColor(theme).greenMain, }, [`&.${alertClasses.standardSuccess} .${alertClasses.action}`]: { - color: `${getMaskColor(theme).greenMain}`, + color: getMaskColor(theme).greenMain, }, [`&.${alertClasses.standardSuccess} .${alertClasses.message}`]: { - color: `${getMaskColor(theme).greenMain}`, + color: getMaskColor(theme).greenMain, }, })) diff --git a/packages/dashboard/src/pages/Setup/index.tsx b/packages/dashboard/src/pages/Setup/index.tsx index 19c0205c01d8..dfc953dda07a 100644 --- a/packages/dashboard/src/pages/Setup/index.tsx +++ b/packages/dashboard/src/pages/Setup/index.tsx @@ -20,7 +20,7 @@ const Setup = () => { return ( - `${theme.spacing(8)}` }}> + theme.spacing(8) }}> <Typography variant="h3">{t.setup_page_title()}</Typography> diff --git a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx index 8a63b4617542..8e7d62b744dc 100644 --- a/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx +++ b/packages/dashboard/src/pages/SignUp/steps/MnemonicRevealForm.tsx @@ -36,7 +36,7 @@ export const MnemonicRevealForm = memo(() => { if (words.join(' ') !== puzzleWords.join(' ')) { showSnackbar(t.create_account_mnemonic_confirm_failed(), { variant: 'error' }) } else { - navigate(`${SignUpRoutePath.PersonaCreate}`, { + navigate(SignUpRoutePath.PersonaCreate, { replace: true, state: { mnemonic: words }, }) diff --git a/packages/encryption/src/payload_internal/version-38.encoder.ts b/packages/encryption/src/payload_internal/version-38.encoder.ts index 8a896aaef9da..3702c6405b96 100644 --- a/packages/encryption/src/payload_internal/version-38.encoder.ts +++ b/packages/encryption/src/payload_internal/version-38.encoder.ts @@ -31,7 +31,7 @@ export async function encode38(payload: PayloadWellFormed.Payload) { if (compressed.err) { console.error(`[@masknet/encryption] An error happened when compressing a secp256k1 key.`, compressed.err) } - fields[Index.authorPublicKey] = `${compressed.unwrapOr('_')}` + fields[Index.authorPublicKey] = compressed.unwrapOr('_') } fields[Index.publicShared] = String(payload.encryption.type === 'public' ? 1 : 0) if (payload.author.some) { diff --git a/packages/mask/src/extension/popups/pages/Wallet/Transfer/Transfer1559.tsx b/packages/mask/src/extension/popups/pages/Wallet/Transfer/Transfer1559.tsx index fc3df2bbf6d5..e709a51d3a28 100644 --- a/packages/mask/src/extension/popups/pages/Wallet/Transfer/Transfer1559.tsx +++ b/packages/mask/src/extension/popups/pages/Wallet/Transfer/Transfer1559.tsx @@ -315,7 +315,7 @@ export const Transfer1559 = memo<Transfer1559Props>(({ selectedAsset, openAssetM //#region set default gasLimit useUpdateEffect(() => { if (!minGasLimit) return - methods.setValue('gasLimit', `${minGasLimit}`) + methods.setValue('gasLimit', minGasLimit.toString()) setMinGasLimitContext(minGasLimit) }, [minGasLimit, methods.setValue]) //#endregion diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/CreateForm.tsx b/packages/mask/src/plugins/ITO/SNSAdaptor/CreateForm.tsx index 672c06c7cabb..97a26067a9e8 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/CreateForm.tsx +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/CreateForm.tsx @@ -235,7 +235,7 @@ export function CreateForm(props: CreateFormProps) { setTokenAndAmount(first) onChangePoolSettings({ // this is the raw password which should be signed by the sender - password: Web3Utils.sha3(`${message}`) ?? '', + password: Web3Utils.sha3(message) ?? '', name: senderName, title: message, limit: formatAmount(totalOfPerWallet || '0', first?.token?.decimals), diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/RegionSelect.tsx b/packages/mask/src/plugins/ITO/SNSAdaptor/RegionSelect.tsx index 044997e3345e..b53d0080d8f9 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/RegionSelect.tsx +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/RegionSelect.tsx @@ -46,7 +46,7 @@ const useStyles = makeStyles()((theme) => ({ }, }, input: { - padding: `${theme.spacing(2)}`, + padding: theme.spacing(2), }, span: { paddingLeft: theme.spacing(2), diff --git a/packages/mask/src/plugins/Polls/SNSAdaptor/Polls.tsx b/packages/mask/src/plugins/Polls/SNSAdaptor/Polls.tsx index 73c9f9b7c15c..d4ab80fc5c09 100644 --- a/packages/mask/src/plugins/Polls/SNSAdaptor/Polls.tsx +++ b/packages/mask/src/plugins/Polls/SNSAdaptor/Polls.tsx @@ -143,7 +143,7 @@ export function PollCardUI(props: PollCardProps) { ))} </List> <Typography variant="body2" classes={{ root: classes.deadline }}> - {isClosed ? `${t('plugin_poll_status_closed')}` : `${getDeadline(poll.end_time)}`} + {isClosed ? t('plugin_poll_status_closed') : getDeadline(poll.end_time)} </Typography> </Card> ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d50ac6a8763..7b46c6b451f4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: specifiers: '@commitlint/cli': ^16.0.0 '@commitlint/config-conventional': ^16.0.0 - '@dimensiondev/eslint-plugin': ^0.0.1-20211231061358-920744f + '@dimensiondev/eslint-plugin': ^0.0.1-20220101051102-ea7a404 '@dimensiondev/kit': 0.0.0-20211215044858-27d964f '@dimensiondev/patch-package': ^6.5.0 '@emotion/cache': ^11.7.1 @@ -89,7 +89,7 @@ importers: devDependencies: '@commitlint/cli': 16.0.0 '@commitlint/config-conventional': 16.0.0 - '@dimensiondev/eslint-plugin': 0.0.1-20211231061358-920744f_eslint@8.5.0 + '@dimensiondev/eslint-plugin': 0.0.1-20220101051102-ea7a404_eslint@8.5.0 '@dimensiondev/patch-package': 6.5.0 '@jest/globals': 27.4.4 '@magic-works/i18n-codegen': 0.0.6_typescript@4.6.0-dev.20211202 @@ -3431,8 +3431,8 @@ packages: '@msgpack/msgpack': 1.12.2 dev: false - /@dimensiondev/eslint-plugin/0.0.1-20211231061358-920744f_eslint@8.5.0: - resolution: {integrity: sha512-cRFLFF3Ao5c1trW8EPKCInNXTa45lyta4xQA34b5LdP2Puf5dwWlUFW4e4JKTB7QCuAYO3L5Ew546jglknoEKQ==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20211231061358-920744f/a8ea83b4526718300c31eb9adfcfe7f5de3cc35f97e6e9d23f1a80f6dbc4b51d} + /@dimensiondev/eslint-plugin/0.0.1-20220101051102-ea7a404_eslint@8.5.0: + resolution: {integrity: sha512-lr5AX84ChHm94mDH1CnanqoDRXiCVOE2cenW/O/rMxyGlUyFf+USGdC0N0BcBGnGhJG0YMFazvrVNiWJADXIeg==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20220101051102-ea7a404/fddc0aab71bcae2a1187fcc527322a8d2d0c0a82ebe663e060fabd2d54b8fdab} peerDependencies: eslint: '>=6' dependencies: From 34264d3baba5cd87281cdd048d4cc4fecfdb29a3 Mon Sep 17 00:00:00 2001 From: Septs <github@septs.pw> Date: Sat, 1 Jan 2022 14:24:57 +0800 Subject: [PATCH 06/13] fix: no simple template literal --- package.json | 2 +- .../components/DashboardFrame/Navigation.tsx | 2 +- .../src/components/PageFrame/index.tsx | 2 +- .../Personas/components/PersonaDrawer/index.tsx | 2 +- .../components/dialogs/RestoreDialog.tsx | 4 ++-- packages/dashboard/src/pages/Welcome/index.tsx | 2 +- .../src/utils/generateContactAvatarColor.ts | 2 +- .../src/payload_internal/version-37.encoder.ts | 2 +- .../src/payload_internal/version-38.encoder.ts | 2 +- packages/encryption/tests/v38-encode-decode.ts | 17 +++++++++++++---- packages/encryption/tests/v39-v40-decode.ts | 8 ++++++-- .../background/database/persona/consistency.ts | 2 +- .../CompositionDialog/CompositionUI.tsx | 4 ++-- packages/mask/src/network/gun/version.2/hash.ts | 6 +++--- packages/mask/src/network/gun/version.2/post.ts | 2 +- .../src/plugins/Furucombo/UI/FurucomboView.tsx | 2 +- .../SNSAdaptor/components/DrawDialog.tsx | 4 ++-- .../src/plugins/Snapshot/Worker/apis/index.ts | 4 ++-- .../SNSAdaptor/trader/InputTokenPanel.tsx | 4 ++-- .../Trader/SNSAdaptor/trader/TradeForm.tsx | 6 +++--- .../Trader/apis/uniswap-v2-subgraph/index.ts | 4 ++-- .../mask/src/plugins/Trader/helpers/uniswap.ts | 16 ++++++++-------- packages/mask/src/plugins/Trader/pipes.ts | 4 ++-- .../twitter.com/utils/selector.ts | 2 +- packages/mask/src/utils/components/Avatar.tsx | 2 +- packages/plugin-infra/src/manager/manage.ts | 2 +- .../src/utils/createInjectHooksRenderer.tsx | 2 +- .../src/TypedMessage/binary-encode/decode.ts | 2 +- .../src/TypedMessage/binary-encode/encode.ts | 2 +- .../src/UI/components/ErrorBoundary/CrashUI.tsx | 2 +- .../UI/components/LoadingAnimation/index.tsx | 2 +- packages/test-serializer/index.js | 4 ++-- packages/theme/src/component-changes.ts | 6 +++--- packages/web3-shared/evm/pipes/index.ts | 10 +++++----- pnpm-lock.yaml | 8 ++++---- 35 files changed, 80 insertions(+), 67 deletions(-) diff --git a/package.json b/package.json index 7c2a858f63bc..9aa8ccd187b0 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "devDependencies": { "@commitlint/cli": "^16.0.0", "@commitlint/config-conventional": "^16.0.0", - "@dimensiondev/eslint-plugin": "^0.0.1-20220101051102-ea7a404", + "@dimensiondev/eslint-plugin": "^0.0.1-20220101061925-045d7e4", "@dimensiondev/patch-package": "^6.5.0", "@jest/globals": "^27.4.4", "@magic-works/i18n-codegen": "^0.0.6", diff --git a/packages/dashboard/src/components/DashboardFrame/Navigation.tsx b/packages/dashboard/src/components/DashboardFrame/Navigation.tsx index cae6ce8378df..1dba9abb8154 100644 --- a/packages/dashboard/src/components/DashboardFrame/Navigation.tsx +++ b/packages/dashboard/src/components/DashboardFrame/Navigation.tsx @@ -91,7 +91,7 @@ const LogoItem = styled(MuiListItem)(({ theme }) => ({ })) as any as typeof MuiListItem const ItemIcon = styled(ListItemIcon)(({ theme }) => ({ - [`& svg`]: { + ['& svg']: { fontSize: 36, }, })) diff --git a/packages/dashboard/src/components/PageFrame/index.tsx b/packages/dashboard/src/components/PageFrame/index.tsx index 37b125329c10..181966cdaa2b 100644 --- a/packages/dashboard/src/components/PageFrame/index.tsx +++ b/packages/dashboard/src/components/PageFrame/index.tsx @@ -61,7 +61,7 @@ const PageTitle = styled(Grid)(({ theme }) => ({ const Containment = styled(Grid)(({ theme }) => ({ maxWidth: '100%', display: 'flex', - height: `calc(100vh - 64px)`, + height: 'calc(100vh - 64px)', overflow: 'hidden', })) diff --git a/packages/dashboard/src/pages/Personas/components/PersonaDrawer/index.tsx b/packages/dashboard/src/pages/Personas/components/PersonaDrawer/index.tsx index bceb1a342b4f..d81ebe3293ae 100644 --- a/packages/dashboard/src/pages/Personas/components/PersonaDrawer/index.tsx +++ b/packages/dashboard/src/pages/Personas/components/PersonaDrawer/index.tsx @@ -10,7 +10,7 @@ import { useNavigate } from 'react-router-dom' const useStyles = makeStyles()((theme) => ({ paper: { // material-ui toolbar height - top: `64px`, + top: '64px', padding: theme.spacing(3, 3.75, 11.25, 3.75), background: MaskColorVar.suspensionBackground, }, diff --git a/packages/dashboard/src/pages/Settings/components/dialogs/RestoreDialog.tsx b/packages/dashboard/src/pages/Settings/components/dialogs/RestoreDialog.tsx index 14cbd5609ea5..e4beffd3d426 100644 --- a/packages/dashboard/src/pages/Settings/components/dialogs/RestoreDialog.tsx +++ b/packages/dashboard/src/pages/Settings/components/dialogs/RestoreDialog.tsx @@ -26,11 +26,11 @@ const StyledTab: typeof Tab = styled(Tab)(() => ({ flex: 1, background: MaskColorVar.secondaryBackground, textTransform: 'none', - [`&:first-of-type`]: { + ['&:first-of-type']: { borderTopLeftRadius: 4, borderBottomLeftRadius: 4, }, - [`&:last-of-type`]: { + ['&:last-of-type']: { borderTopRightRadius: 4, borderBottomRightRadius: 4, }, diff --git a/packages/dashboard/src/pages/Welcome/index.tsx b/packages/dashboard/src/pages/Welcome/index.tsx index c52e94d9a04b..6cd1654b2488 100644 --- a/packages/dashboard/src/pages/Welcome/index.tsx +++ b/packages/dashboard/src/pages/Welcome/index.tsx @@ -34,7 +34,7 @@ export default function Welcome() { const mode = useTheme().palette.mode const navigate = useNavigate() - const agreementContentPageURL = new URL(`./en.html`, import.meta.url).toString() + const agreementContentPageURL = new URL('./en.html', import.meta.url).toString() const privacyPolicyDocument = useMemo(() => () => iframeRef?.current?.contentWindow?.document, [iframeRef]) useEffect( diff --git a/packages/dashboard/src/utils/generateContactAvatarColor.ts b/packages/dashboard/src/utils/generateContactAvatarColor.ts index 6058fcfdfdb3..f9cf5129a560 100644 --- a/packages/dashboard/src/utils/generateContactAvatarColor.ts +++ b/packages/dashboard/src/utils/generateContactAvatarColor.ts @@ -5,5 +5,5 @@ export function generateContactAvatarColor(string: string, theme: 'light' | 'dar // eslint-disable-next-line no-bitwise return next & next }, 0) - return `hsl(${hash % 360}, ${theme === 'dark' ? `78%` : '98%'}, ${theme === 'dark' ? `50%` : '70%'})` + return `hsl(${hash % 360}, ${theme === 'dark' ? '78%' : '98%'}, ${theme === 'dark' ? '50%' : '70%'})` } diff --git a/packages/encryption/src/payload_internal/version-37.encoder.ts b/packages/encryption/src/payload_internal/version-37.encoder.ts index f4f51ec52be8..f97347edb01e 100644 --- a/packages/encryption/src/payload_internal/version-37.encoder.ts +++ b/packages/encryption/src/payload_internal/version-37.encoder.ts @@ -50,7 +50,7 @@ export async function encode37(payload: PayloadWellFormed.Payload) { } function warn(key: CryptoKey, err: any) { console.warn( - `[@masknet/encryption] Failed to encode a public key object into spki format. key is`, + '[@masknet/encryption] Failed to encode a public key object into spki format. key is', key, 'and the error is', err, diff --git a/packages/encryption/src/payload_internal/version-38.encoder.ts b/packages/encryption/src/payload_internal/version-38.encoder.ts index 3702c6405b96..d3e1958e2163 100644 --- a/packages/encryption/src/payload_internal/version-38.encoder.ts +++ b/packages/encryption/src/payload_internal/version-38.encoder.ts @@ -29,7 +29,7 @@ export async function encode38(payload: PayloadWellFormed.Payload) { if (payload.authorPublicKey.some) { const compressed = await compressSecp256k1Key(payload.authorPublicKey.val.key) if (compressed.err) { - console.error(`[@masknet/encryption] An error happened when compressing a secp256k1 key.`, compressed.err) + console.error('[@masknet/encryption] An error happened when compressing a secp256k1 key.', compressed.err) } fields[Index.authorPublicKey] = compressed.unwrapOr('_') } diff --git a/packages/encryption/tests/v38-encode-decode.ts b/packages/encryption/tests/v38-encode-decode.ts index 2fe0d228e330..945b21eef682 100644 --- a/packages/encryption/tests/v38-encode-decode.ts +++ b/packages/encryption/tests/v38-encode-decode.ts @@ -45,10 +45,19 @@ test('Encode v38 payload', async () => { expect(parsed).toMatchSnapshot('Parse generated v38 message') }) -/* cspell:disable-next-line */ -const oldInfraOutput = `🎼4/4|avkwBKqMpCKznGclvChuuh2AEExV0J14xI/KANhwiKJfVyfm2ObWb432E3aAOa7ImRoCd7/JK1dDQWk4rt9NqajTEaajARMc9hJ9GmR8lorBNRNHlgj/h1KJYk5th7Nsr04PWO0nJUKiDH2CJwieSxW2YqxCI1ceYKUYcZOsVJEZOrJ/IB8WUmU0|BjPbfiSAXCvc/2nqKv2nzQ==|Og1u5pLG9GiWsZbxQwHAGtL6Jqo=|_|Aq/bVWAKvodJuURGk3enjE1gUiu2SELM8IIKIlNGqOWM|1|ZmFjZWJvb2suY29tLzEwMDAyNzU2MjI0OTU3NA==:||` -/* cspell:disable-next-line */ -const oldInfraOutputShort = `🎼4/4|avkwBKqMpCKznGclvChuuh2AEExV0J14xI/KANhwiKJfVyfm2ObWb432E3aAOa7ImRoCd7/JK1dDQWk4rt9NqajTEaajARMc9hJ9GmR8lorBNRNHlgj/h1KJYk5th7Nsr04PWO0nJUKiDH2CJwieSxW2YqxCI1ceYKUYcZOsVJEZOrJ/IB8WUmU0|BjPbfiSAXCvc/2nqKv2nzQ==|Og1u5pLG9GiWsZbxQwHAGtL6Jqo=|_:||` +/* cspell:disable */ +const oldInfraOutput = + '🎼4/4|avkwBKqMpCKznGclvChuuh2AEExV0J14xI/KANhwiKJfVyfm2ObWb432E3aAOa7ImRoCd7/JK1d' + + 'DQWk4rt9NqajTEaajARMc9hJ9GmR8lorBNRNHlgj/h1KJYk5th7Nsr04PWO0nJUKiDH2CJwieSxW2YqxC' + + 'I1ceYKUYcZOsVJEZOrJ/IB8WUmU0|BjPbfiSAXCvc/2nqKv2nzQ==|Og1u5pLG9GiWsZbxQwHAGtL6Jqo' + + '=|_|Aq/bVWAKvodJuURGk3enjE1gUiu2SELM8IIKIlNGqOWM|1|ZmFjZWJvb2suY29tLzEwMDAyNzU2MjI' + + '0OTU3NA==:||' +const oldInfraOutputShort = + '🎼4/4|avkwBKqMpCKznGclvChuuh2AEExV0J14xI/KANhwiKJfVyfm2ObWb432E3aAOa7ImRoCd7/JK1d' + + 'DQWk4rt9NqajTEaajARMc9hJ9GmR8lorBNRNHlgj/h1KJYk5th7Nsr04PWO0nJUKiDH2CJwieSxW2YqxC' + + 'I1ceYKUYcZOsVJEZOrJ/IB8WUmU0|BjPbfiSAXCvc/2nqKv2nzQ==|Og1u5pLG9GiWsZbxQwHAGtL6Jqo=|_:||' +/* cspell:enable */ + const AESKey = { key_ops: ['encrypt', 'decrypt'], ext: true, diff --git a/packages/encryption/tests/v39-v40-decode.ts b/packages/encryption/tests/v39-v40-decode.ts index 40582938737c..97d8a6a256c6 100644 --- a/packages/encryption/tests/v39-v40-decode.ts +++ b/packages/encryption/tests/v39-v40-decode.ts @@ -3,8 +3,12 @@ import { expect, test } from '@jest/globals' import { encodePayload, parsePayload } from '../src' import { PayloadException } from '../src/types' -/* cspell:disable-next-line */ -const oldInfraOutput = `🎼2/4|avkwBKqMpCKznGclvChuuh2AEExV0J14xI/KANhwiKJfVyfm2ObWb432E3aAOa7ImRoCd7/JK1dDQWk4rt9NqajTEaajARMc9hJ9GmR8lorBNRNHlgj/h1KJYk5th7Nsr04PWO0nJUKiDH2CJwieSxW2YqxCI1ceYKUYcZOsVJEZOrJ/IB8WUmU0|BjPbfiSAXCvc/2nqKv2nzQ==|Og1u5pLG9GiWsZbxQwHAGtL6Jqo=:||` +/* cspell:disable */ +const oldInfraOutput = + '🎼2/4|avkwBKqMpCKznGclvChuuh2AEExV0J14xI/KANhwiKJfVyfm2ObWb432E3aAOa7ImRoCd7/JK1d' + + 'DQWk4rt9NqajTEaajARMc9hJ9GmR8lorBNRNHlgj/h1KJYk5th7Nsr04PWO0nJUKiDH2CJwieSxW2YqxC' + + 'I1ceYKUYcZOsVJEZOrJ/IB8WUmU0|BjPbfiSAXCvc/2nqKv2nzQ==|Og1u5pLG9GiWsZbxQwHAGtL6Jqo=:||' +/* cspell:enable */ test('Parse v39 payload', async () => { const out = (await parsePayload(oldInfraOutput)).unwrap() diff --git a/packages/mask/background/database/persona/consistency.ts b/packages/mask/background/database/persona/consistency.ts index ad8df22dd138..e23525a8bfed 100644 --- a/packages/mask/background/database/persona/consistency.ts +++ b/packages/mask/background/database/persona/consistency.ts @@ -21,7 +21,7 @@ export async function assertPersonaDBConsistency( diag.push(w) } if (diag.length) { - const warn = `PersonaDB is in the inconsistency state` + const warn = 'PersonaDB is in the inconsistency state' console.warn(warn) console.info(await t.objectStore('personas').getAll()) console.info(await t.objectStore('profiles').getAll()) diff --git a/packages/mask/src/components/CompositionDialog/CompositionUI.tsx b/packages/mask/src/components/CompositionDialog/CompositionUI.tsx index 81d2a875d88e..8a3b384acfdd 100644 --- a/packages/mask/src/components/CompositionDialog/CompositionUI.tsx +++ b/packages/mask/src/components/CompositionDialog/CompositionUI.tsx @@ -21,7 +21,7 @@ import { Trans } from 'react-i18next' const useStyles = makeStyles()({ root: { '& > *': { - marginBottom: `10px !important`, + marginBottom: '10px !important', }, }, flex: { @@ -36,7 +36,7 @@ const useStyles = makeStyles()({ flexDirection: 'row', justifyContent: 'flex-end', alignItems: 'center', - '& > *': { marginLeft: `12px !important` }, + '& > *': { marginLeft: '12px !important' }, }, }) diff --git a/packages/mask/src/network/gun/version.2/hash.ts b/packages/mask/src/network/gun/version.2/hash.ts index df377de4ce83..98c2043177c8 100644 --- a/packages/mask/src/network/gun/version.2/hash.ts +++ b/packages/mask/src/network/gun/version.2/hash.ts @@ -27,7 +27,7 @@ export async function calculatePostKeyPartition( export const hashPostSalt = memoizePromise( async function (postSalt: string, networkHint: string) { - const hashPair = `9283464d-ee4e-4e8d-a7f3-cf392a88133f` + const hashPair = '9283464d-ee4e-4e8d-a7f3-cf392a88133f' const N = 2 const hash = (await Gun.SEA.work(postSalt, hashPair))! @@ -40,7 +40,7 @@ export const hashPostSalt = memoizePromise( * @param key - The key need to be hashed */ export const hashCryptoKeyUnstable = memoizePromise(async function (key: EC_Public_JsonWebKey) { - const hashPair = `10198a2f-205f-45a6-9987-3488c80113d0` + const hashPair = '10198a2f-205f-45a6-9987-3488c80113d0' const N = 2 const jwk = JSON.stringify(key) @@ -52,7 +52,7 @@ export const hashCryptoKeyUnstable = memoizePromise(async function (key: EC_Publ * @param key - The key need to be hashed */ export const hashCryptoKey = memoizePromise(async function (key: EC_Public_JsonWebKey) { - const hashPair = `10198a2f-205f-45a6-9987-3488c80113d0` + const hashPair = '10198a2f-205f-45a6-9987-3488c80113d0' const N = 2 const jwk = key diff --git a/packages/mask/src/network/gun/version.2/post.ts b/packages/mask/src/network/gun/version.2/post.ts index bbaeac95a09e..2fbcaa1beb20 100644 --- a/packages/mask/src/network/gun/version.2/post.ts +++ b/packages/mask/src/network/gun/version.2/post.ts @@ -87,7 +87,7 @@ export async function publishPostAESKeyOnGun2( // Store AES key to gun receiversKeys.forEach(async ({ aesKey, receiverKey }) => { const keyHash = await (version <= -39 ? hashCryptoKeyUnstable : hashCryptoKey)(receiverKey) - console.log(`gun[${postHash}][${keyHash}].push(`, aesKey, `)`) + console.log(`gun[${postHash}][${keyHash}].push(`, aesKey, ')') gun2.get(postHash) // @ts-ignore .get(keyHash) diff --git a/packages/mask/src/plugins/Furucombo/UI/FurucomboView.tsx b/packages/mask/src/plugins/Furucombo/UI/FurucomboView.tsx index 16dd271c260a..7cc60bba3167 100644 --- a/packages/mask/src/plugins/Furucombo/UI/FurucomboView.tsx +++ b/packages/mask/src/plugins/Furucombo/UI/FurucomboView.tsx @@ -29,7 +29,7 @@ const useStyles = makeStyles()((theme) => ({ tabs: { borderTop: `solid 1px ${theme.palette.divider}`, borderBottom: `solid 1px ${theme.palette.divider}`, - backgroundColor: `#1b1b21`, + backgroundColor: '#1b1b21', }, tab: { fontFamily: 'inherit', diff --git a/packages/mask/src/plugins/MaskBox/SNSAdaptor/components/DrawDialog.tsx b/packages/mask/src/plugins/MaskBox/SNSAdaptor/components/DrawDialog.tsx index 496a222f8589..7afd884bc3d4 100644 --- a/packages/mask/src/plugins/MaskBox/SNSAdaptor/components/DrawDialog.tsx +++ b/packages/mask/src/plugins/MaskBox/SNSAdaptor/components/DrawDialog.tsx @@ -51,10 +51,10 @@ const useStyles = makeStyles()((theme) => ({ field: { borderRadius: 0, padding: theme.spacing(0), - height: `25px !important`, + height: '25px !important', minWidth: 0, minHeight: 0, - outline: `none !important`, + outline: 'none !important', borderColor: `${theme.palette.divider} !important`, }, textfield: { diff --git a/packages/mask/src/plugins/Snapshot/Worker/apis/index.ts b/packages/mask/src/plugins/Snapshot/Worker/apis/index.ts index 71e715b67ce2..0d8e70a20681 100644 --- a/packages/mask/src/plugins/Snapshot/Worker/apis/index.ts +++ b/packages/mask/src/plugins/Snapshot/Worker/apis/index.ts @@ -12,7 +12,7 @@ export async function fetchProposal(id: string) { } async function fetchProposalFromGraphql(id: string) { - const response = await fetch(`https://hub.snapshot.org/graphql`, { + const response = await fetch('https://hub.snapshot.org/graphql', { method: 'POST', headers: { Accept: 'application/json', @@ -143,7 +143,7 @@ export async function vote(identifier: ProposalIdentifier, choice: number, addre const sig = await Services.Ethereum.personalSign(msg, address) - const response = await fetch(`https://hub.snapshot.org/api/msg`, { + const response = await fetch('https://hub.snapshot.org/api/msg', { method: 'POST', headers: { Accept: 'application/json', diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/InputTokenPanel.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/InputTokenPanel.tsx index 4c7ca72757b5..c8eac216cbba 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/InputTokenPanel.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/InputTokenPanel.tsx @@ -54,7 +54,7 @@ const useStyles = makeStyles<{ isDashboard: boolean }>()((theme, { isDashboard } color: isDashboard ? MaskColorVar.normalText : MaskColorVar.twitterSecond, }, selectedTokenChip: { - borderRadius: `22px!important`, + borderRadius: '22px!important', height: 'auto', backgroundColor: isDashboard ? MaskColorVar.input : theme.palette.background.input, [`& .${chipClasses.label}`]: { @@ -70,7 +70,7 @@ const useStyles = makeStyles<{ isDashboard: boolean }>()((theme, { isDashboard } height: '28px!important', }, noToken: { - borderRadius: `18px !important`, + borderRadius: '18px !important', backgroundColor: theme.palette.primary.main, [`& .${chipClasses.label}`]: { paddingTop: 9, diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeForm.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeForm.tsx index 7c23dd0d4e35..18f74a201eeb 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeForm.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeForm.tsx @@ -72,7 +72,7 @@ const useStyles = makeStyles<{ isDashboard: boolean }>()((theme, { isDashboard } cursor: 'pointer', }, reverseChevron: { - transform: `rotate(-180deg)`, + transform: 'rotate(-180deg)', transition: 'all 300ms', }, status: { @@ -109,7 +109,7 @@ const useStyles = makeStyles<{ isDashboard: boolean }>()((theme, { isDashboard } height: 'auto', }, selectedTokenChip: { - borderRadius: `22px!important`, + borderRadius: '22px!important', height: 'auto', backgroundColor: isDashboard ? MaskColorVar.input : theme.palette.background.input, [`& .${chipClasses.label}`]: { @@ -133,7 +133,7 @@ const useStyles = makeStyles<{ isDashboard: boolean }>()((theme, { isDashboard } bottom: -20, }, noToken: { - borderRadius: `18px !important`, + borderRadius: '18px !important', backgroundColor: theme.palette.primary.main, [`& .${chipClasses.label}`]: { paddingTop: 9, diff --git a/packages/mask/src/plugins/Trader/apis/uniswap-v2-subgraph/index.ts b/packages/mask/src/plugins/Trader/apis/uniswap-v2-subgraph/index.ts index 93c1d5391364..dd59d68420f9 100644 --- a/packages/mask/src/plugins/Trader/apis/uniswap-v2-subgraph/index.ts +++ b/packages/mask/src/plugins/Trader/apis/uniswap-v2-subgraph/index.ts @@ -226,7 +226,7 @@ export async function fetchTokenData(address: string, blockNumber?: string) { ${TokenFields} ${PairFields} query tokens { - tokens(${blockNumber ? `block : {number: ${blockNumber}}` : ``} where: {id:"${address}"}) { + tokens(${blockNumber ? `block : {number: ${blockNumber}}` : ''} where: {id:"${address}"}) { ...TokenFields } pairs0: pairs(where: {token0: "${address}"}, first: 50, orderBy: reserveUSD, orderDirection: desc) { @@ -300,7 +300,7 @@ export async function fetchPairData(pairAddress: string, blockNumber?: string) { }>(` ${PairFields} query pairs { - pairs(${blockNumber ? `block : {number: ${blockNumber}}` : ``} where: { id: "${pairAddress}"} ) { + pairs(${blockNumber ? `block : {number: ${blockNumber}}` : ''} where: { id: "${pairAddress}"} ) { ...PairFields } } diff --git a/packages/mask/src/plugins/Trader/helpers/uniswap.ts b/packages/mask/src/plugins/Trader/helpers/uniswap.ts index 9ac7fba44ce8..02988cd00dd5 100644 --- a/packages/mask/src/plugins/Trader/helpers/uniswap.ts +++ b/packages/mask/src/plugins/Trader/helpers/uniswap.ts @@ -24,26 +24,26 @@ export function swapErrorToUserReadableMessage(error: any): string { switch (reason) { case 'UniswapV2Router: EXPIRED': - return `The transaction could not be sent because the deadline has passed. Please check that your transaction deadline is not too low.` + return 'The transaction could not be sent because the deadline has passed. Please check that your transaction deadline is not too low.' case 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT': case 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT': - return `This transaction will not succeed either due to price movement or fee on transfer.` + return 'This transaction will not succeed either due to price movement or fee on transfer.' case 'TransferHelper: TRANSFER_FROM_FAILED': - return `The input token cannot be transferred. There may be an issue with the input token.` + return 'The input token cannot be transferred. There may be an issue with the input token.' case 'UniswapV2: TRANSFER_FAILED': - return `The output token cannot be transferred. There may be an issue with the output token.` + return 'The output token cannot be transferred. There may be an issue with the output token.' case 'UniswapV2: K': - return `The Uniswap invariant x*y=k was not satisfied by the swap. This usually means one of the tokens you are swapping incorporates custom behavior on transfer.` + return 'The Uniswap invariant x*y=k was not satisfied by the swap. This usually means one of the tokens you are swapping incorporates custom behavior on transfer.' case 'Too little received': case 'Too much requested': case 'STF': - return `This transaction will not succeed due to price movement.` + return 'This transaction will not succeed due to price movement.' case 'TF': - return `The output token cannot be transferred. There may be an issue with the output token.` + return 'The output token cannot be transferred. There may be an issue with the output token.' default: if (reason?.includes('undefined is not an object')) { console.error(error, reason) - return `An error occurred when trying to execute this swap. You may need to increase your slippage tolerance. If that does not work, there may be an incompatibility with the token you are trading.` + return 'An error occurred when trying to execute this swap. You may need to increase your slippage tolerance. If that does not work, there may be an incompatibility with the token you are trading.' } return `Unknown error${reason ? `: "${reason}"` : ''}.` } diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index d11709b6e30e..55e621b72e9d 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -159,10 +159,10 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri return `https://pancakeswap.info/pool/${address}` case TradeProvider.BANCOR: // TODO - Bancor analytics should be available with V3 - return `` + return '' case TradeProvider.OPENOCEAN: // TODO - OpenOcean - return `` + return '' default: unreachable(tradeProvider) } diff --git a/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts b/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts index 090f5b1e3c20..e9a6451ddefa 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts @@ -101,7 +101,7 @@ export const postEditorInTimelineSelector: () => LiveSelector<E, true> = () => export const postEditorDraftContentSelector = () => { if (location.pathname === '/compose/tweet') { return querySelector<HTMLDivElement>( - `[contenteditable][aria-label][spellcheck],textarea[aria-label][spellcheck]`, + '[contenteditable][aria-label][spellcheck],textarea[aria-label][spellcheck]', ) } return (isCompose() ? postEditorInPopupSelector() : postEditorInTimelineSelector()).querySelector<HTMLElement>( diff --git a/packages/mask/src/utils/components/Avatar.tsx b/packages/mask/src/utils/components/Avatar.tsx index 0afcfcde4018..5e4d64768f3c 100644 --- a/packages/mask/src/utils/components/Avatar.tsx +++ b/packages/mask/src/utils/components/Avatar.tsx @@ -9,7 +9,7 @@ export function mapContactAvatarColor(string: string, theme: 'light' | 'dark') { // eslint-disable-next-line no-bitwise return next & next }, 0) - return `hsl(${hash % 360}, ${theme === 'dark' ? `78%` : '98%'}, ${theme === 'dark' ? `50%` : '70%'})` + return `hsl(${hash % 360}, ${theme === 'dark' ? '78%' : '98%'}, ${theme === 'dark' ? '50%' : '70%'})` } interface Props extends AvatarProps { diff --git a/packages/plugin-infra/src/manager/manage.ts b/packages/plugin-infra/src/manager/manage.ts index 78ac14bbd1af..ab1bfbf74a94 100644 --- a/packages/plugin-infra/src/manager/manage.ts +++ b/packages/plugin-infra/src/manager/manage.ts @@ -87,7 +87,7 @@ export function createManager< function verifyHostHooks() { if (!_host) throw new Error( - `[@masknet/plugin-infra] You must call configureHostHooks or startDaemon to configure host hooks.`, + '[@masknet/plugin-infra] You must call configureHostHooks or startDaemon to configure host hooks.', ) } diff --git a/packages/plugin-infra/src/utils/createInjectHooksRenderer.tsx b/packages/plugin-infra/src/utils/createInjectHooksRenderer.tsx index f98a1bd1f655..20c5f56b376c 100644 --- a/packages/plugin-infra/src/utils/createInjectHooksRenderer.tsx +++ b/packages/plugin-infra/src/utils/createInjectHooksRenderer.tsx @@ -19,7 +19,7 @@ export function createInjectHooksRenderer<PluginDefinition extends Plugin.Shared .filter((x) => x.ui) .map(({ key, name, ui }) => ( // TODO: i18n - <ErrorBoundary key={key} subject={`Plugin ` + name.fallback}> + <ErrorBoundary key={key} subject={'Plugin ' + name.fallback}> <Main UI={ui!} data={props} /> </ErrorBoundary> )) diff --git a/packages/shared-base/src/TypedMessage/binary-encode/decode.ts b/packages/shared-base/src/TypedMessage/binary-encode/decode.ts index be59298acff7..73bbd829abdb 100644 --- a/packages/shared-base/src/TypedMessage/binary-encode/decode.ts +++ b/packages/shared-base/src/TypedMessage/binary-encode/decode.ts @@ -3,7 +3,7 @@ import { Result } from 'ts-results' import { makeTypedMessageText, makeTypedMessageTuple, makeTypedMessageUnknown, TypedMessage } from '..' import { TypedMessageTypeEnum } from './type' -const HEAD = `[@masknet/shared-base] TypedMessage: ` +const HEAD = '[@masknet/shared-base] TypedMessage: ' export function decodeTypedMessageFromDocument(bin: Uint8Array) { return Result.wrap(() => { const doc = decode(bin) diff --git a/packages/shared-base/src/TypedMessage/binary-encode/encode.ts b/packages/shared-base/src/TypedMessage/binary-encode/encode.ts index 2b61ea96f4ea..401e5dff5758 100644 --- a/packages/shared-base/src/TypedMessage/binary-encode/encode.ts +++ b/packages/shared-base/src/TypedMessage/binary-encode/encode.ts @@ -9,7 +9,7 @@ import { import { encode } from '@msgpack/msgpack' import { TypedMessageTypeEnum } from './type' -const HEAD = `[@masknet/shared-base] TypedMessage: ` +const HEAD = '[@masknet/shared-base] TypedMessage: ' export function encodeTypedMessageToDocument(tm: SerializableTypedMessages) { const doc = [0, encodeTypedMessage(tm)] return encode(doc) diff --git a/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx b/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx index 2f8af2b79018..5fcd5cb0e25e 100644 --- a/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx +++ b/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx @@ -52,7 +52,7 @@ Error stack: const url = new URLSearchParams() url.set('title', reportTitle) url.set('body', reportBody) - return `https://github.com/DimensionDev/Maskbook/issues/new?` + url.toString() + return 'https://github.com/DimensionDev/Maskbook/issues/new?' + url.toString() }, [reportBody, reportTitle]) return ( <Root> diff --git a/packages/shared/src/UI/components/LoadingAnimation/index.tsx b/packages/shared/src/UI/components/LoadingAnimation/index.tsx index b643d13ff978..540807edca5d 100644 --- a/packages/shared/src/UI/components/LoadingAnimation/index.tsx +++ b/packages/shared/src/UI/components/LoadingAnimation/index.tsx @@ -13,7 +13,7 @@ const useStyles = makeStyles()({ transform: 'rotate(360deg)', }, }, - animation: `loadingAnimation 1.6s linear infinite`, + animation: 'loadingAnimation 1.6s linear infinite', }, }) diff --git a/packages/test-serializer/index.js b/packages/test-serializer/index.js index d31d4fe31b53..472e7e7007a6 100644 --- a/packages/test-serializer/index.js +++ b/packages/test-serializer/index.js @@ -16,12 +16,12 @@ module.exports = { } if (isCryptoKey(val)) { // crypto.subtle.exportKey('jwk', val).then(console.log) - return `CryptoKey { [opaque crypto key material] }` + return 'CryptoKey { [opaque crypto key material] }' } const inner = printer(val.val, config, indentation, depth, refs) if (val.ok) return `Ok(${inner})` if (val.err) return `Err(${inner})` - if (val.none) return `None` + if (val.none) return 'None' if (val.some) return `Some(${inner})` }, test(val) { diff --git a/packages/theme/src/component-changes.ts b/packages/theme/src/component-changes.ts index 40acf95909b1..e25e64ad9e07 100644 --- a/packages/theme/src/component-changes.ts +++ b/packages/theme/src/component-changes.ts @@ -130,14 +130,14 @@ export const Dialog: Theme = (mode, colors): ThemeOptions => ({ MuiDialog: { styleOverrides: { root: { - [`& .dashboard-style`]: { + ['& .dashboard-style']: { backgroundColor: mode === 'dark' ? colors.primaryBackground : colors.secondaryBackground, }, // workaround for common component be used in dashboard and twitter - [`& .dashboard.token-list`]: { + ['& .dashboard.token-list']: { padding: 10, }, - [`& .dashboard.token-list-symbol`]: { + ['& .dashboard.token-list-symbol']: { color: mode === 'dark' ? 'rgba(255, 255, 255, 0.8)' : '#7B8192', fontSize: 12, }, diff --git a/packages/web3-shared/evm/pipes/index.ts b/packages/web3-shared/evm/pipes/index.ts index 8b8c3aa4bdab..df0cf4bd4e6a 100644 --- a/packages/web3-shared/evm/pipes/index.ts +++ b/packages/web3-shared/evm/pipes/index.ts @@ -147,8 +147,8 @@ export function resolveDomainLink(domain?: string) { export function resolveCollectibleProviderLink(chainId: ChainId, provider: NonFungibleAssetProvider) { switch (provider) { case NonFungibleAssetProvider.OPENSEA: - if (chainId === ChainId.Rinkeby) return `https://testnets.opensea.io` - return `https://opensea.io` + if (chainId === ChainId.Rinkeby) return 'https://testnets.opensea.io' + return 'https://opensea.io' case NonFungibleAssetProvider.RARIBLE: return 'https://rarible.com' case NonFungibleAssetProvider.NFTSCAN: @@ -161,9 +161,9 @@ export function resolveCollectibleProviderLink(chainId: ChainId, provider: NonFu export function resolveCollectibleAssetLink(chainId: ChainId, provider: NonFungibleAssetProvider) { switch (provider) { case NonFungibleAssetProvider.OPENSEA: - if (chainId === ChainId.Rinkeby) return `https://testnets.opensea.io/assets` - if (chainId === ChainId.Matic) return `https://opensea.io/assets/matic` - return `https://opensea.io/assets` + if (chainId === ChainId.Rinkeby) return 'https://testnets.opensea.io/assets' + if (chainId === ChainId.Matic) return 'https://opensea.io/assets/matic' + return 'https://opensea.io/assets' case NonFungibleAssetProvider.RARIBLE: return '' case NonFungibleAssetProvider.NFTSCAN: diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7b46c6b451f4..974744d7712a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: specifiers: '@commitlint/cli': ^16.0.0 '@commitlint/config-conventional': ^16.0.0 - '@dimensiondev/eslint-plugin': ^0.0.1-20220101051102-ea7a404 + '@dimensiondev/eslint-plugin': ^0.0.1-20220101061925-045d7e4 '@dimensiondev/kit': 0.0.0-20211215044858-27d964f '@dimensiondev/patch-package': ^6.5.0 '@emotion/cache': ^11.7.1 @@ -89,7 +89,7 @@ importers: devDependencies: '@commitlint/cli': 16.0.0 '@commitlint/config-conventional': 16.0.0 - '@dimensiondev/eslint-plugin': 0.0.1-20220101051102-ea7a404_eslint@8.5.0 + '@dimensiondev/eslint-plugin': 0.0.1-20220101061925-045d7e4_eslint@8.5.0 '@dimensiondev/patch-package': 6.5.0 '@jest/globals': 27.4.4 '@magic-works/i18n-codegen': 0.0.6_typescript@4.6.0-dev.20211202 @@ -3431,8 +3431,8 @@ packages: '@msgpack/msgpack': 1.12.2 dev: false - /@dimensiondev/eslint-plugin/0.0.1-20220101051102-ea7a404_eslint@8.5.0: - resolution: {integrity: sha512-lr5AX84ChHm94mDH1CnanqoDRXiCVOE2cenW/O/rMxyGlUyFf+USGdC0N0BcBGnGhJG0YMFazvrVNiWJADXIeg==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20220101051102-ea7a404/fddc0aab71bcae2a1187fcc527322a8d2d0c0a82ebe663e060fabd2d54b8fdab} + /@dimensiondev/eslint-plugin/0.0.1-20220101061925-045d7e4_eslint@8.5.0: + resolution: {integrity: sha512-8Khq+pwwVswLl2cQkt/FfHIqSdHONyvFb1bEH0jM+1l8m+Ga/knfs6WHU9lpsNxLJxLycoX+oRgzfKGhNBMl0w==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20220101061925-045d7e4/a63afd2a06038c24704cc20a59e22c730e9d2429cb5fb1640252d8024296e258} peerDependencies: eslint: '>=6' dependencies: From 9b39ecdcbb3527ef7f0dce16ac5c78c916208d0d Mon Sep 17 00:00:00 2001 From: Septs <github@septs.pw> Date: Sat, 1 Jan 2022 15:55:35 +0800 Subject: [PATCH 07/13] fix: simple index access --- .../dashboard/src/components/DashboardFrame/Navigation.tsx | 2 +- .../src/pages/Settings/components/dialogs/RestoreDialog.tsx | 4 ++-- packages/mask/src/plugins/Collectible/types/rarible.ts | 2 +- .../src/plugins/Trader/SNSAdaptor/trader/ConfirmDialog.tsx | 2 +- packages/theme/src/component-changes.ts | 6 +++--- packages/web3-providers/src/rarible/types.ts | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/dashboard/src/components/DashboardFrame/Navigation.tsx b/packages/dashboard/src/components/DashboardFrame/Navigation.tsx index 1dba9abb8154..46b70387d6b3 100644 --- a/packages/dashboard/src/components/DashboardFrame/Navigation.tsx +++ b/packages/dashboard/src/components/DashboardFrame/Navigation.tsx @@ -91,7 +91,7 @@ const LogoItem = styled(MuiListItem)(({ theme }) => ({ })) as any as typeof MuiListItem const ItemIcon = styled(ListItemIcon)(({ theme }) => ({ - ['& svg']: { + '& svg': { fontSize: 36, }, })) diff --git a/packages/dashboard/src/pages/Settings/components/dialogs/RestoreDialog.tsx b/packages/dashboard/src/pages/Settings/components/dialogs/RestoreDialog.tsx index e4beffd3d426..fa1fed57aeb5 100644 --- a/packages/dashboard/src/pages/Settings/components/dialogs/RestoreDialog.tsx +++ b/packages/dashboard/src/pages/Settings/components/dialogs/RestoreDialog.tsx @@ -26,11 +26,11 @@ const StyledTab: typeof Tab = styled(Tab)(() => ({ flex: 1, background: MaskColorVar.secondaryBackground, textTransform: 'none', - ['&:first-of-type']: { + '&:first-of-type': { borderTopLeftRadius: 4, borderBottomLeftRadius: 4, }, - ['&:last-of-type']: { + '&:last-of-type': { borderTopRightRadius: 4, borderBottomRightRadius: 4, }, diff --git a/packages/mask/src/plugins/Collectible/types/rarible.ts b/packages/mask/src/plugins/Collectible/types/rarible.ts index cacf364baa75..28387ada41c6 100644 --- a/packages/mask/src/plugins/Collectible/types/rarible.ts +++ b/packages/mask/src/plugins/Collectible/types/rarible.ts @@ -120,7 +120,7 @@ export interface Tag { } export interface RaribleCollectibleResponse { - ['@class']: string + '@class': string id: string name: string symbol: string diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/ConfirmDialog.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/ConfirmDialog.tsx index 7e88a8585b28..ec681bd9425a 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/ConfirmDialog.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/ConfirmDialog.tsx @@ -28,7 +28,7 @@ const useStyles = makeStyles<{ isDashboard: boolean }>()((theme, { isDashboard } display: 'flex', justifyContent: 'space-between', alignItems: 'center', - ['& > p']: { + '& > p': { fontSize: 16, lineHeight: '22px', color: theme.palette.text.primary, diff --git a/packages/theme/src/component-changes.ts b/packages/theme/src/component-changes.ts index e25e64ad9e07..9e98120ba1c9 100644 --- a/packages/theme/src/component-changes.ts +++ b/packages/theme/src/component-changes.ts @@ -130,14 +130,14 @@ export const Dialog: Theme = (mode, colors): ThemeOptions => ({ MuiDialog: { styleOverrides: { root: { - ['& .dashboard-style']: { + '& .dashboard-style': { backgroundColor: mode === 'dark' ? colors.primaryBackground : colors.secondaryBackground, }, // workaround for common component be used in dashboard and twitter - ['& .dashboard.token-list']: { + '& .dashboard.token-list': { padding: 10, }, - ['& .dashboard.token-list-symbol']: { + '& .dashboard.token-list-symbol': { color: mode === 'dark' ? 'rgba(255, 255, 255, 0.8)' : '#7B8192', fontSize: 12, }, diff --git a/packages/web3-providers/src/rarible/types.ts b/packages/web3-providers/src/rarible/types.ts index 672a023c8121..011d6282ec22 100644 --- a/packages/web3-providers/src/rarible/types.ts +++ b/packages/web3-providers/src/rarible/types.ts @@ -118,7 +118,7 @@ export interface Tag { } export interface RaribleCollectibleResponse { - ['@class']: string + '@class': string id: string name: string symbol: string From 6158cb41904afb09f00f3c0bcc07151b96122354 Mon Sep 17 00:00:00 2001 From: Septs <github@septs.pw> Date: Sun, 2 Jan 2022 07:43:16 +0800 Subject: [PATCH 08/13] chore: improve eslint config --- package.json | 2 +- packages/.eslintrc.json | 7 ++++++- pnpm-lock.yaml | 12 ++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 9aa8ccd187b0..d0115850f83a 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "devDependencies": { "@commitlint/cli": "^16.0.0", "@commitlint/config-conventional": "^16.0.0", - "@dimensiondev/eslint-plugin": "^0.0.1-20220101061925-045d7e4", + "@dimensiondev/eslint-plugin": "^0.0.1-20211222115249-a29dc76", "@dimensiondev/patch-package": "^6.5.0", "@jest/globals": "^27.4.4", "@magic-works/i18n-codegen": "^0.0.6", diff --git a/packages/.eslintrc.json b/packages/.eslintrc.json index 756eb20c7b12..5f26b72d9484 100644 --- a/packages/.eslintrc.json +++ b/packages/.eslintrc.json @@ -1,7 +1,12 @@ { "root": true, "parser": "@typescript-eslint/parser", - "parserOptions": { "ecmaVersion": 7, "sourceType": "module", "project": "./tsconfig.eslint.json" }, + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module", + "project": "./tsconfig.eslint.json", + "warnOnUnsupportedTypeScriptVersion": false + }, "extends": ["../.eslintrc.json", "plugin:import/typescript"], "plugins": ["@typescript-eslint", "@dimensiondev", "unused-imports", "import", "unicorn", "react", "react-hooks"], "rules": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 974744d7712a..34f3e0edec83 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: specifiers: '@commitlint/cli': ^16.0.0 '@commitlint/config-conventional': ^16.0.0 - '@dimensiondev/eslint-plugin': ^0.0.1-20220101061925-045d7e4 + '@dimensiondev/eslint-plugin': ^0.0.1-20211222115249-a29dc76 '@dimensiondev/kit': 0.0.0-20211215044858-27d964f '@dimensiondev/patch-package': ^6.5.0 '@emotion/cache': ^11.7.1 @@ -89,7 +89,7 @@ importers: devDependencies: '@commitlint/cli': 16.0.0 '@commitlint/config-conventional': 16.0.0 - '@dimensiondev/eslint-plugin': 0.0.1-20220101061925-045d7e4_eslint@8.5.0 + '@dimensiondev/eslint-plugin': 0.0.1-20211222115249-a29dc76_eslint@8.5.0 '@dimensiondev/patch-package': 6.5.0 '@jest/globals': 27.4.4 '@magic-works/i18n-codegen': 0.0.6_typescript@4.6.0-dev.20211202 @@ -3431,12 +3431,13 @@ packages: '@msgpack/msgpack': 1.12.2 dev: false - /@dimensiondev/eslint-plugin/0.0.1-20220101061925-045d7e4_eslint@8.5.0: - resolution: {integrity: sha512-8Khq+pwwVswLl2cQkt/FfHIqSdHONyvFb1bEH0jM+1l8m+Ga/knfs6WHU9lpsNxLJxLycoX+oRgzfKGhNBMl0w==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20220101061925-045d7e4/a63afd2a06038c24704cc20a59e22c730e9d2429cb5fb1640252d8024296e258} + /@dimensiondev/eslint-plugin/0.0.1-20211222115249-a29dc76_eslint@8.5.0: + resolution: {integrity: sha512-Fk/QkniAX7dCrmgCGg+pJtr1h1aVKKo4pqmzLWHd2U4ojdzSud7UQAkBVms33eX+zgpeenvKaXTg0AcpoOMs/Q==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20211222115249-a29dc76/22627fc1a5d1a77af829212c8926c8c5dfbce05fef80b61e2aaba1a8cac037d6} peerDependencies: - eslint: '>=6' + eslint: '>= 8' dependencies: eslint: 8.5.0 + lodash.set: 4.3.2 dev: true /@dimensiondev/holoflows-kit/0.9.0-20210902104757-7c3d0d0: @@ -17753,7 +17754,6 @@ packages: /lodash.set/4.3.2: resolution: {integrity: sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=} - dev: false /lodash.unescape/4.0.1: resolution: {integrity: sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=} From 3098a436f6b6a73b93837e52aae23239d4c22ee4 Mon Sep 17 00:00:00 2001 From: Septs <github@septs.pw> Date: Sun, 2 Jan 2022 12:49:46 +0800 Subject: [PATCH 09/13] fix: update dep --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d0115850f83a..02eabb6f1dfb 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "devDependencies": { "@commitlint/cli": "^16.0.0", "@commitlint/config-conventional": "^16.0.0", - "@dimensiondev/eslint-plugin": "^0.0.1-20211222115249-a29dc76", + "@dimensiondev/eslint-plugin": "^0.0.1-20211222115249-7984aa5", "@dimensiondev/patch-package": "^6.5.0", "@jest/globals": "^27.4.4", "@magic-works/i18n-codegen": "^0.0.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34f3e0edec83..101fa09a2929 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: specifiers: '@commitlint/cli': ^16.0.0 '@commitlint/config-conventional': ^16.0.0 - '@dimensiondev/eslint-plugin': ^0.0.1-20211222115249-a29dc76 + '@dimensiondev/eslint-plugin': ^0.0.1-20211222115249-7984aa5 '@dimensiondev/kit': 0.0.0-20211215044858-27d964f '@dimensiondev/patch-package': ^6.5.0 '@emotion/cache': ^11.7.1 @@ -89,7 +89,7 @@ importers: devDependencies: '@commitlint/cli': 16.0.0 '@commitlint/config-conventional': 16.0.0 - '@dimensiondev/eslint-plugin': 0.0.1-20211222115249-a29dc76_eslint@8.5.0 + '@dimensiondev/eslint-plugin': 0.0.1-20211222115249-7984aa5_eslint@8.5.0 '@dimensiondev/patch-package': 6.5.0 '@jest/globals': 27.4.4 '@magic-works/i18n-codegen': 0.0.6_typescript@4.6.0-dev.20211202 @@ -3431,8 +3431,8 @@ packages: '@msgpack/msgpack': 1.12.2 dev: false - /@dimensiondev/eslint-plugin/0.0.1-20211222115249-a29dc76_eslint@8.5.0: - resolution: {integrity: sha512-Fk/QkniAX7dCrmgCGg+pJtr1h1aVKKo4pqmzLWHd2U4ojdzSud7UQAkBVms33eX+zgpeenvKaXTg0AcpoOMs/Q==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20211222115249-a29dc76/22627fc1a5d1a77af829212c8926c8c5dfbce05fef80b61e2aaba1a8cac037d6} + /@dimensiondev/eslint-plugin/0.0.1-20211222115249-7984aa5_eslint@8.5.0: + resolution: {integrity: sha512-CcPs3cioDRhYs0Gpz+F4TKfL+rsgdulFd3zaBNU06Rq522opZX9VmpcrCDuW4f1EHNYKYIj1wEVGvBvSlbCMAg==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20211222115249-7984aa5/2641dcbec68ae0b51f1dc91e9c92abe14be0258740198e2c12d24888a5f1f338} peerDependencies: eslint: '>= 8' dependencies: From 73a553bf87f382f6f0c7eaaf72b89a18db0ee645 Mon Sep 17 00:00:00 2001 From: Septs <github@septs.pw> Date: Sun, 2 Jan 2022 12:57:11 +0800 Subject: [PATCH 10/13] fix: lockfile --- pnpm-lock.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 101fa09a2929..bad111c8fe8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3433,12 +3433,15 @@ packages: /@dimensiondev/eslint-plugin/0.0.1-20211222115249-7984aa5_eslint@8.5.0: resolution: {integrity: sha512-CcPs3cioDRhYs0Gpz+F4TKfL+rsgdulFd3zaBNU06Rq522opZX9VmpcrCDuW4f1EHNYKYIj1wEVGvBvSlbCMAg==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20211222115249-7984aa5/2641dcbec68ae0b51f1dc91e9c92abe14be0258740198e2c12d24888a5f1f338} + engines: {node: '>= 14'} peerDependencies: eslint: '>= 8' dependencies: eslint: 8.5.0 lodash.set: 4.3.2 dev: true + bundledDependencies: + - lodash.set /@dimensiondev/holoflows-kit/0.9.0-20210902104757-7c3d0d0: resolution: {integrity: sha512-Vk22WLOTW20OECTHdLGulGmDsTFguURQYB9Oq8S+eDVrmWHCxKD/N+4OU5uCFrWCkqjl/n7vec3fVWUSunpBeA==, tarball: download/@dimensiondev/holoflows-kit/0.9.0-20210902104757-7c3d0d0/bce56871014284e7863fc97177b316aec94f6dfddf627312e690958400e958e8} From 1e30fdf7f54283cd89f240ffe471ab0f7c26f5f2 Mon Sep 17 00:00:00 2001 From: Septs <github@septs.pw> Date: Mon, 3 Jan 2022 13:32:27 +0800 Subject: [PATCH 11/13] fix: no-inferrable-types --- packages/.eslintrc.json | 1 + packages/injected-script/sdk/utils.ts | 2 +- .../background-script/CryptoServices/decryptFrom.ts | 2 +- .../extension/background-script/EthereumServices/nonce.ts | 2 +- .../background-script/EthereumServices/rpc/index.ts | 2 +- .../extension/background-script/HelperService/storage.ts | 2 +- .../src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts | 2 +- .../mask/src/plugins/Trader/apis/coinmarketcap/index.ts | 8 +------- packages/mask/src/plugins/Wallet/apis/nftscan.ts | 4 ++-- .../social-network-adaptor/minds.com/utils/selector.ts | 5 +---- .../src/social-network-adaptor/twitter.com/encoding.ts | 2 +- .../social-network-adaptor/twitter.com/utils/selector.ts | 5 +---- packages/mask/utils-pure/assertion/index.ts | 2 +- packages/plugins/FileService/src/Worker/arweave.ts | 2 +- .../shared/src/UI/components/ErrorBoundary/CrashUI.tsx | 2 +- packages/shared/src/utils/formatter.ts | 2 +- packages/web3-shared/evm/hooks/useContract.ts | 2 +- .../evm/hooks/useERC20TokensDetailedFromTokenLists.ts | 2 +- packages/web3-shared/evm/hooks/useERC721TokenByIndex.ts | 2 +- 19 files changed, 20 insertions(+), 31 deletions(-) diff --git a/packages/.eslintrc.json b/packages/.eslintrc.json index 5f26b72d9484..1ebfcb3320e9 100644 --- a/packages/.eslintrc.json +++ b/packages/.eslintrc.json @@ -61,6 +61,7 @@ "@typescript-eslint/await-thenable": "error", "@typescript-eslint/no-for-in-array": "error", "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-inferrable-types": "error", "@typescript-eslint/no-invalid-this": "error", "@typescript-eslint/no-loop-func": "error", "@typescript-eslint/no-this-alias": "error", diff --git a/packages/injected-script/sdk/utils.ts b/packages/injected-script/sdk/utils.ts index 3838b485b702..5c918e9eb3cc 100644 --- a/packages/injected-script/sdk/utils.ts +++ b/packages/injected-script/sdk/utils.ts @@ -10,7 +10,7 @@ export function sendEvent<K extends keyof InternalEvents>(name: K, ...params: In ) } const promisePool = new Map<number, [resolve: Function, reject: Function]>() -let id: number = 1 +let id = 1 export function createPromise<T>(callback: (id: number) => void) { return new Promise<T>((resolve, reject) => { id += 1 diff --git a/packages/mask/src/extension/background-script/CryptoServices/decryptFrom.ts b/packages/mask/src/extension/background-script/CryptoServices/decryptFrom.ts index 4f53c7e569e5..fe6c8d60ba7d 100644 --- a/packages/mask/src/extension/background-script/CryptoServices/decryptFrom.ts +++ b/packages/mask/src/extension/background-script/CryptoServices/decryptFrom.ts @@ -86,7 +86,7 @@ function makeProgress( if (typeof progress === 'string') return { type: 'progress', progress, internal } return { type: 'progress', progress: 'intermediate_success', data: progress, internal } } -function makeError(error: string | Error, internal: boolean = false): Failure { +function makeError(error: string | Error, internal = false): Failure { if (typeof error === 'string') return { type: 'error', error, internal } return makeError(error.message, internal) } diff --git a/packages/mask/src/extension/background-script/EthereumServices/nonce.ts b/packages/mask/src/extension/background-script/EthereumServices/nonce.ts index f3423c91d28d..ffb3802b54ed 100644 --- a/packages/mask/src/extension/background-script/EthereumServices/nonce.ts +++ b/packages/mask/src/extension/background-script/EthereumServices/nonce.ts @@ -6,7 +6,7 @@ import { currentMaskWalletChainIdSettings } from '../../../plugins/Wallet/settin class NonceManager { constructor(private address: string) {} private nonce = NonceManager.INITIAL_NONCE - private locked: boolean = false + private locked = false private tasks: (() => void)[] = [] private lock() { diff --git a/packages/mask/src/extension/background-script/EthereumServices/rpc/index.ts b/packages/mask/src/extension/background-script/EthereumServices/rpc/index.ts index 7c1ed9949aa7..a20a51e8086a 100644 --- a/packages/mask/src/extension/background-script/EthereumServices/rpc/index.ts +++ b/packages/mask/src/extension/background-script/EthereumServices/rpc/index.ts @@ -143,7 +143,7 @@ export async function getSendTransactionComputedPayload(payload: JsonRpcPayload) } if (to) { - let code: string = '' + let code = '' try { code = await getCode(to) } catch { diff --git a/packages/mask/src/extension/background-script/HelperService/storage.ts b/packages/mask/src/extension/background-script/HelperService/storage.ts index 3b633e4cb893..68dfb00461db 100644 --- a/packages/mask/src/extension/background-script/HelperService/storage.ts +++ b/packages/mask/src/extension/background-script/HelperService/storage.ts @@ -6,7 +6,7 @@ import { timeout } from '@masknet/shared-base' */ class MutexStorage<T extends browser.storage.StorageValue> { private tasks: (() => void)[] = [] - private locked: boolean = false + private locked = false private lock() { this.locked = true diff --git a/packages/mask/src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts b/packages/mask/src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts index 4b5d64825d99..8defe6e37b66 100644 --- a/packages/mask/src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts +++ b/packages/mask/src/plugins/FindTruman/SNSAdaptor/ConstPromise.ts @@ -14,7 +14,7 @@ export default class FindTrumanConstPromise { executor(this.resolve, this.reject) } - initialized: boolean = false + initialized = false status: Status = Status.PENDING value?: FindTrumanConst diff --git a/packages/mask/src/plugins/Trader/apis/coinmarketcap/index.ts b/packages/mask/src/plugins/Trader/apis/coinmarketcap/index.ts index 271cc01cf663..67e51cba5c2f 100644 --- a/packages/mask/src/plugins/Trader/apis/coinmarketcap/index.ts +++ b/packages/mask/src/plugins/Trader/apis/coinmarketcap/index.ts @@ -189,13 +189,7 @@ export interface HistoricalCoinInfo { symbol: string } -export async function getHistorical( - id: string, - currency: string, - startDate: Date, - endDate: Date, - interval: string = '1d', -) { +export async function getHistorical(id: string, currency: string, startDate: Date, endDate: Date, interval = '1d') { const params = new URLSearchParams('format=chart_crypto_details') params.append('convert', currency) params.append('id', id) diff --git a/packages/mask/src/plugins/Wallet/apis/nftscan.ts b/packages/mask/src/plugins/Wallet/apis/nftscan.ts index 8617cb119cac..5abae3b81d92 100644 --- a/packages/mask/src/plugins/Wallet/apis/nftscan.ts +++ b/packages/mask/src/plugins/Wallet/apis/nftscan.ts @@ -5,8 +5,8 @@ const NFTSCAN_SECRET = '21da1d638ef5d0bf76e37aa5c2da7fd789ade9e3' const NFTSCAN_URL = 'https://restapi.nftscan.com' const NFTSCAN_BASE_API = `${NFTSCAN_URL}/api/v1` -let token: string = '' -let token_expiration: number = 0 +let token = '' +let token_expiration = 0 async function getToken() { const params = new URLSearchParams() diff --git a/packages/mask/src/social-network-adaptor/minds.com/utils/selector.ts b/packages/mask/src/social-network-adaptor/minds.com/utils/selector.ts index 642130bc4221..37e03baffcf1 100644 --- a/packages/mask/src/social-network-adaptor/minds.com/utils/selector.ts +++ b/packages/mask/src/social-network-adaptor/minds.com/utils/selector.ts @@ -2,10 +2,7 @@ import { LiveSelector } from '@dimensiondev/holoflows-kit' type E = HTMLElement -const querySelector = <T extends E, SingleMode extends boolean = true>( - selector: string, - singleMode: boolean = true, -) => { +const querySelector = <T extends E, SingleMode extends boolean = true>(selector: string, singleMode = true) => { const ls = new LiveSelector<T, SingleMode>().querySelector<T>(selector) return (singleMode ? ls.enableSingleMode() : ls) as LiveSelector<T, SingleMode> } diff --git a/packages/mask/src/social-network-adaptor/twitter.com/encoding.ts b/packages/mask/src/social-network-adaptor/twitter.com/encoding.ts index 672d4cc2879e..1d49abb23240 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/encoding.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/encoding.ts @@ -52,7 +52,7 @@ export const twitterEncoding = { }, } -function regexMatchAll(str: string, regexp: RegExp, index: number = 1) { +function regexMatchAll(str: string, regexp: RegExp, index = 1) { const gPos = regexp.flags.indexOf('g') const withoutG = gPos >= 0 ? `${regexp.flags.slice(0, gPos)}${regexp.flags.slice(gPos + 1)}` : regexp.flags const o = new RegExp(regexp.source, withoutG) diff --git a/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts b/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts index e9a6451ddefa..874d4b16ca67 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts +++ b/packages/mask/src/social-network-adaptor/twitter.com/utils/selector.ts @@ -5,10 +5,7 @@ import { isCompose } from './postBox' type E = HTMLElement -const querySelector = <T extends E, SingleMode extends boolean = true>( - selector: string, - singleMode: boolean = true, -) => { +const querySelector = <T extends E, SingleMode extends boolean = true>(selector: string, singleMode = true) => { const ls = new LiveSelector<T, SingleMode>().querySelector<T>(selector) return (singleMode ? ls.enableSingleMode() : ls) as LiveSelector<T, SingleMode> } diff --git a/packages/mask/utils-pure/assertion/index.ts b/packages/mask/utils-pure/assertion/index.ts index c0d624edc21b..516dc2d591d2 100644 --- a/packages/mask/utils-pure/assertion/index.ts +++ b/packages/mask/utils-pure/assertion/index.ts @@ -1,7 +1,7 @@ /** * Ensure a value not null or undefined. */ -export function assertNonNull<T>(val: T, message: string = 'Unexpected nil value detected') { +export function assertNonNull<T>(val: T, message = 'Unexpected nil value detected') { if (val === null || val === undefined) throw new Error(message) return val as NonNullable<T> } diff --git a/packages/plugins/FileService/src/Worker/arweave.ts b/packages/plugins/FileService/src/Worker/arweave.ts index ef86b2241789..1847d42a42f8 100644 --- a/packages/plugins/FileService/src/Worker/arweave.ts +++ b/packages/plugins/FileService/src/Worker/arweave.ts @@ -51,7 +51,7 @@ export interface LandingPageMetadata { } export async function uploadLandingPage(metadata: LandingPageMetadata) { - let linkPrefix: string = 'https://arweave.net' + let linkPrefix = 'https://arweave.net' if (metadata.useCDN) { linkPrefix = mesonPrefix } diff --git a/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx b/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx index 5fcd5cb0e25e..e3c0ad1abe08 100644 --- a/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx +++ b/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx @@ -37,7 +37,7 @@ export function CrashUI({ onRetry, subject, ...error }: CrashUIProps) { // crash report, will send to GitHub const reportTitle = `[Crash] ${error.type}: ${error.message}` - const reportBody: string = `<!--Thanks for the crash report! + const reportBody = `<!--Thanks for the crash report! Please write down what you're doing when the crash happened, that will help us to fix it easier!--> I was *doing something...*, then Mask reports an error. diff --git a/packages/shared/src/utils/formatter.ts b/packages/shared/src/utils/formatter.ts index 620e3a8f13a0..919f1fba7940 100644 --- a/packages/shared/src/utils/formatter.ts +++ b/packages/shared/src/utils/formatter.ts @@ -1,4 +1,4 @@ -export function formatFingerprint(fingerprint: string, size: number = 0) { +export function formatFingerprint(fingerprint: string, size = 0) { if (size === 0) return fingerprint return `${fingerprint.substr(0, 2 + size)}...${fingerprint.substr(-size)}` } diff --git a/packages/web3-shared/evm/hooks/useContract.ts b/packages/web3-shared/evm/hooks/useContract.ts index 267b76db93af..62ec14ef299f 100644 --- a/packages/web3-shared/evm/hooks/useContract.ts +++ b/packages/web3-shared/evm/hooks/useContract.ts @@ -21,7 +21,7 @@ export function createContract<T extends BaseContract>(web3: Web3, address: stri * @param ABI */ export function useContract<T extends BaseContract>( - address: string = '', + address = '', ABI: AbiItem[] = [], readonly = false, chainId?: ChainId, diff --git a/packages/web3-shared/evm/hooks/useERC20TokensDetailedFromTokenLists.ts b/packages/web3-shared/evm/hooks/useERC20TokensDetailedFromTokenLists.ts index 6a6ad20791ac..29774ba7c7ba 100644 --- a/packages/web3-shared/evm/hooks/useERC20TokensDetailedFromTokenLists.ts +++ b/packages/web3-shared/evm/hooks/useERC20TokensDetailedFromTokenLists.ts @@ -11,7 +11,7 @@ import type { ChainId } from '../types' export function useERC20TokensDetailedFromTokenLists( lists?: string[], - keyword: string = '', + keyword = '', additionalTokens: (ERC20TokenDetailed | NativeTokenDetailed)[] = [], targetChainId?: ChainId, ): AsyncStateRetry<(ERC20TokenDetailed | NativeTokenDetailed)[]> { diff --git a/packages/web3-shared/evm/hooks/useERC721TokenByIndex.ts b/packages/web3-shared/evm/hooks/useERC721TokenByIndex.ts index 4d30235a6e7a..52d3092f0a4c 100644 --- a/packages/web3-shared/evm/hooks/useERC721TokenByIndex.ts +++ b/packages/web3-shared/evm/hooks/useERC721TokenByIndex.ts @@ -3,7 +3,7 @@ import type { ERC721Token } from '../types' import { useERC721TokenContract } from '../contracts/useERC721TokenContract' import { useChainId } from './useChainId' -export function useERC721TokenByIndex(token?: ERC721Token, index: number = 0) { +export function useERC721TokenByIndex(token?: ERC721Token, index = 0) { const chainId = useChainId() const erc721Contract = useERC721TokenContract(token?.address) return useAsync(async () => { From 3f7590f9e86364b90b03e6f830d7285918c1f5fe Mon Sep 17 00:00:00 2001 From: Septs <github@septs.pw> Date: Mon, 3 Jan 2022 14:59:29 +0800 Subject: [PATCH 12/13] chore: add more rules --- packages/.eslintrc.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/.eslintrc.json b/packages/.eslintrc.json index 1ebfcb3320e9..73167848d18a 100644 --- a/packages/.eslintrc.json +++ b/packages/.eslintrc.json @@ -59,6 +59,7 @@ "@dimensiondev/no-unsafe-location": "error", "@dimensiondev/prefer-early-return": "error", "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-base-to-string": "off", "@typescript-eslint/no-for-in-array": "error", "@typescript-eslint/no-implied-eval": "error", "@typescript-eslint/no-inferrable-types": "error", @@ -72,6 +73,9 @@ "@typescript-eslint/prefer-nullish-coalescing": "error", "@typescript-eslint/prefer-optional-chain": "error", "@typescript-eslint/prefer-reduce-type-parameter": "error", - "@typescript-eslint/prefer-string-starts-ends-with": "error" + "@typescript-eslint/prefer-regexp-exec": "off", + "@typescript-eslint/prefer-string-starts-ends-with": "error", + "@typescript-eslint/restrict-plus-operands": "off", + "@typescript-eslint/restrict-template-expressions": "off" } } From aee9b822db1950d79ec3a46a762ae1df9dcb4a2a Mon Sep 17 00:00:00 2001 From: Septs <github@septs.pw> Date: Mon, 3 Jan 2022 14:59:48 +0800 Subject: [PATCH 13/13] fix: react-key --- .../dashboard/src/components/Mnemonic/MnemonicReveal.tsx | 2 +- packages/mask/src/components/DebugModeUI/DebugList.tsx | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/dashboard/src/components/Mnemonic/MnemonicReveal.tsx b/packages/dashboard/src/components/Mnemonic/MnemonicReveal.tsx index c0da15002a12..d96a658d7a2d 100644 --- a/packages/dashboard/src/components/Mnemonic/MnemonicReveal.tsx +++ b/packages/dashboard/src/components/Mnemonic/MnemonicReveal.tsx @@ -23,7 +23,7 @@ export function MnemonicReveal(props: MnemonicRevealProps) { return ( <Grid container spacing={2}> {words.map((item, index) => ( - <Grid item xs={3} key={index + item}> + <Grid item xs={3} key={index}> <WordCard>{item}</WordCard> </Grid> ))} diff --git a/packages/mask/src/components/DebugModeUI/DebugList.tsx b/packages/mask/src/components/DebugModeUI/DebugList.tsx index 27310ba8b50c..cf503db43779 100644 --- a/packages/mask/src/components/DebugModeUI/DebugList.tsx +++ b/packages/mask/src/components/DebugModeUI/DebugList.tsx @@ -17,10 +17,8 @@ function F({ content, hint }: { hint: string; content: AcceptableDebuggerType }) export function DebugList(props: { items: readonly (readonly [string, AcceptableDebuggerType] | JSX.Element)[] }) { return ( <div style={{ wordBreak: 'break-all', padding: '0 1em', margin: 0, background: 'black', color: 'white' }}> - {props.items.map((x) => ( - <Fragment key={x.toString()}> - {Array.isArray(x) ? <F key={x[0]} hint={x[0]} content={x[1]} /> : x} - </Fragment> + {props.items.map((x, key) => ( + <Fragment key={key}>{Array.isArray(x) ? <F key={x[0]} hint={x[0]} content={x[1]} /> : x}</Fragment> ))} </div> )