From 31aff64e42e48cb41077698c7227af9643f73db9 Mon Sep 17 00:00:00 2001 From: iamkun Date: Thu, 19 May 2022 00:05:25 +0800 Subject: [PATCH] fix: update eslint config to test .ts and .js separately (#2805) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: update eslint config * fix: update ts ignore * fix: update eslint config * Update TeamAvailabilityScreen.tsx * Type fixes * Update useIntercom.ts Co-authored-by: Omar López --- apps/web/contexts/contractsContext.tsx | 17 +++++++------ .../availability/TeamAvailabilityScreen.tsx | 6 ++--- apps/web/ee/components/web3/CryptoSection.tsx | 13 ++++------ .../impersonation/ImpersonationProvider.ts | 1 + apps/web/ee/lib/intercom/useIntercom.ts | 5 ++-- .../api/integrations/stripepayment/webhook.ts | 2 +- apps/web/playwright/fixtures/bookings.ts | 2 +- apps/web/playwright/fixtures/payments.ts | 2 +- apps/web/playwright/fixtures/users.ts | 2 +- apps/web/playwright/lib/testUtils.ts | 2 +- apps/web/server/routers/viewer/webhook.tsx | 2 +- packages/config/eslint-preset.js | 25 ++++++++++++------- 12 files changed, 43 insertions(+), 36 deletions(-) diff --git a/apps/web/contexts/contractsContext.tsx b/apps/web/contexts/contractsContext.tsx index b061c5b7b1..7fb0c2bf0a 100644 --- a/apps/web/contexts/contractsContext.tsx +++ b/apps/web/contexts/contractsContext.tsx @@ -1,10 +1,17 @@ +import noop from "lodash/noop"; import { createContext, ReactNode, useContext } from "react"; import { localStorage } from "@calcom/lib/webstorage"; -type contractsContextType = Record; +type contractsContextType = { + contracts: Record; + addContract: (payload: addContractsPayload) => void; +}; -const contractsContextDefaultValue: contractsContextType = {}; +const contractsContextDefaultValue: contractsContextType = { + contracts: {}, + addContract: noop, +}; const ContractsContext = createContext(contractsContextDefaultValue); @@ -37,9 +44,5 @@ export function ContractsProvider({ children }: Props) { addContract, }; - return ( - <> - {children} - - ); + return {children}; } diff --git a/apps/web/ee/components/team/availability/TeamAvailabilityScreen.tsx b/apps/web/ee/components/team/availability/TeamAvailabilityScreen.tsx index 44b7bf18a2..b03c937d42 100644 --- a/apps/web/ee/components/team/availability/TeamAvailabilityScreen.tsx +++ b/apps/web/ee/components/team/availability/TeamAvailabilityScreen.tsx @@ -1,12 +1,12 @@ import dayjs from "dayjs"; -import React, { useState, useEffect, CSSProperties } from "react"; +import { CSSProperties, useEffect, useState } from "react"; import TimezoneSelect, { ITimezone } from "react-timezone-select"; import AutoSizer from "react-virtualized-auto-sizer"; import { FixedSizeList as List } from "react-window"; import { WEBSITE_URL } from "@calcom/lib/constants"; -import { trpc, inferQueryOutput } from "@lib/trpc"; +import { inferQueryOutput, trpc } from "@lib/trpc"; import Avatar from "@components/ui/Avatar"; import { DatePicker } from "@components/ui/form/DatePicker"; @@ -100,10 +100,8 @@ export default function TeamAvailabilityScreen(props: Props) {
- {/* @ts-ignore */} {({ height, width }) => ( - // @ts-ignore { const { t } = useLocale(); const connectMetamask = useCallback(async () => { - if (window.ethereum) { + if (window.ethereum && typeof window.ethereum.request === "function") { await window.ethereum.request({ method: "eth_requestAccounts" }); window.web3 = new Web3(window.ethereum); toggleEthEnabled(true); @@ -64,10 +64,7 @@ const CryptoSection = (props: CryptoSectionProps) => { throw new Error("Specified wallet does not own any tokens belonging to this smart contract"); } else { const account = (await window.web3.eth.getAccounts())[0]; - - // @ts-ignore - const signature = await window.web3.eth.personal.sign(AUTH_MESSAGE, account); - // @ts-ignore + const signature = await window.web3.eth.personal.sign(AUTH_MESSAGE, account, ""); addContract({ address: props.smartContractAddress, signature }); await verifyAccount(signature, account); diff --git a/apps/web/ee/lib/impersonation/ImpersonationProvider.ts b/apps/web/ee/lib/impersonation/ImpersonationProvider.ts index 891bf581bc..331d5ba3c3 100644 --- a/apps/web/ee/lib/impersonation/ImpersonationProvider.ts +++ b/apps/web/ee/lib/impersonation/ImpersonationProvider.ts @@ -11,6 +11,7 @@ const ImpersonationProvider = CredentialsProvider({ username: { label: "Username", type: "text " }, }, async authorize(creds, req) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore need to figure out how to correctly type this const session = await getSession({ req }); if (session?.user.role !== "ADMIN") { diff --git a/apps/web/ee/lib/intercom/useIntercom.ts b/apps/web/ee/lib/intercom/useIntercom.ts index 20f0f3b202..5af5525eff 100644 --- a/apps/web/ee/lib/intercom/useIntercom.ts +++ b/apps/web/ee/lib/intercom/useIntercom.ts @@ -1,11 +1,12 @@ +import noop from "lodash/noop"; import { useIntercom as _useIntercom } from "react-use-intercom"; export const useIntercom = typeof window !== "undefined" && !!process.env.NEXT_PUBLIC_INTERCOM_APP_ID ? _useIntercom : () => ({ - boot: () => {}, - show: () => {}, + boot: noop, + show: noop, }); export default useIntercom; diff --git a/apps/web/ee/pages/api/integrations/stripepayment/webhook.ts b/apps/web/ee/pages/api/integrations/stripepayment/webhook.ts index 79f317c2c1..1621da9471 100644 --- a/apps/web/ee/pages/api/integrations/stripepayment/webhook.ts +++ b/apps/web/ee/pages/api/integrations/stripepayment/webhook.ts @@ -126,7 +126,7 @@ async function handlePaymentSuccess(event: Stripe.Event) { if (booking.location) evt.location = booking.location; - let bookingData: Prisma.BookingUpdateInput = { + const bookingData: Prisma.BookingUpdateInput = { paid: true, confirmed: true, }; diff --git a/apps/web/playwright/fixtures/bookings.ts b/apps/web/playwright/fixtures/bookings.ts index 1439962f51..86d69bdd17 100644 --- a/apps/web/playwright/fixtures/bookings.ts +++ b/apps/web/playwright/fixtures/bookings.ts @@ -15,7 +15,7 @@ type BookingFixture = ReturnType; // creates a user fixture instance and stores the collection export const createBookingsFixture = (page: Page) => { - let store = { bookings: [], page } as { bookings: BookingFixture[]; page: typeof page }; + const store = { bookings: [], page } as { bookings: BookingFixture[]; page: typeof page }; return { create: async ( userId: number, diff --git a/apps/web/playwright/fixtures/payments.ts b/apps/web/playwright/fixtures/payments.ts index 15fcaaeeb3..58bf57c387 100644 --- a/apps/web/playwright/fixtures/payments.ts +++ b/apps/web/playwright/fixtures/payments.ts @@ -8,7 +8,7 @@ type PaymentFixture = ReturnType; // creates a user fixture instance and stores the collection export const createPaymentsFixture = (page: Page) => { - let store = { payments: [], page } as { payments: PaymentFixture[]; page: typeof page }; + const store = { payments: [], page } as { payments: PaymentFixture[]; page: typeof page }; return { create: async ( bookingId: number, diff --git a/apps/web/playwright/fixtures/users.ts b/apps/web/playwright/fixtures/users.ts index 60ac83a84e..51b5f69f43 100644 --- a/apps/web/playwright/fixtures/users.ts +++ b/apps/web/playwright/fixtures/users.ts @@ -22,7 +22,7 @@ type UserWithIncludes = PrismaType.UserGetPayload; // creates a user fixture instance and stores the collection export const createUsersFixture = (page: Page, workerInfo: WorkerInfo) => { - let store = { users: [], page } as { users: UserFixture[]; page: typeof page }; + const store = { users: [], page } as { users: UserFixture[]; page: typeof page }; return { create: async (opts?: CustomUserOpts) => { const _user = await prisma.user.create({ diff --git a/apps/web/playwright/lib/testUtils.ts b/apps/web/playwright/lib/testUtils.ts index ebc2976ad1..fe840114b1 100644 --- a/apps/web/playwright/lib/testUtils.ts +++ b/apps/web/playwright/lib/testUtils.ts @@ -2,7 +2,7 @@ import { expect, Page, test } from "@playwright/test"; import { createServer, IncomingMessage, ServerResponse } from "http"; export function todo(title: string) { - // eslint-disable-next-line playwright/no-skipped-test + // eslint-disable-next-line @typescript-eslint/no-empty-function test.skip(title, () => {}); } diff --git a/apps/web/server/routers/viewer/webhook.tsx b/apps/web/server/routers/viewer/webhook.tsx index 0c161f3875..e9adab4153 100644 --- a/apps/web/server/routers/viewer/webhook.tsx +++ b/apps/web/server/routers/viewer/webhook.tsx @@ -18,7 +18,7 @@ export const webhookRouter = createProtectedRouter() }) .optional(), async resolve({ ctx, input }) { - let where: Prisma.WebhookWhereInput = { + const where: Prisma.WebhookWhereInput = { AND: [{ appId: null /* Don't mixup zapier webhooks with normal ones */ }], }; if (Array.isArray(where.AND)) { diff --git a/packages/config/eslint-preset.js b/packages/config/eslint-preset.js index 6abca519b1..97e749e56f 100644 --- a/packages/config/eslint-preset.js +++ b/packages/config/eslint-preset.js @@ -1,19 +1,12 @@ /** @type {import("eslint").Linter.Config} */ module.exports = { root: true, - extends: [ - "plugin:playwright/playwright-test", - "next", - "plugin:@typescript-eslint/recommended", - "plugin:prettier/recommended", - ], - parser: "@typescript-eslint/parser", + extends: ["plugin:playwright/playwright-test", "next", "plugin:prettier/recommended"], parserOptions: { tsconfigRootDir: __dirname, project: ["./tsconfig.json"], project: ["./apps/*/tsconfig.json", "./packages/*/tsconfig.json"], }, - plugins: ["@typescript-eslint"], settings: { next: { rootDir: ["apps/*/", "packages/*/"], @@ -26,7 +19,21 @@ module.exports = { }, overrides: [ { - files: ["playwright/**/*.{js,jsx,tsx,ts}"], + files: ["*.ts", "*.tsx"], + extends: ["plugin:@typescript-eslint/recommended"], + plugins: ["@typescript-eslint"], + parser: "@typescript-eslint/parser", + overrides: [ + { + files: ["playwright/**/*.{tsx,ts}"], + rules: { + "no-undef": "off", + }, + }, + ], + }, + { + files: ["playwright/**/*.{js,jsx}"], rules: { "no-undef": "off", },