diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 474bd4a02..000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,57 +0,0 @@ -/** @type {import('@types/eslint').Linter.BaseConfig} */ -module.exports = { - extends: [ - 'eslint-config-kentcdodds', - 'eslint-config-kentcdodds/jest', - 'eslint-config-kentcdodds/jsx-a11y', - 'eslint-config-kentcdodds/react', - ], - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json', - ecmaVersion: 2022, - }, - rules: { - 'no-console': 'off', - - // meh... - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/sort-type-union-intersection-members': 'off', - 'jsx-a11y/media-has-caption': 'off', - 'jsx-a11y/label-has-associated-control': 'off', - 'jsx-a11y/alt-text': 'off', // it's not smart enough... - '@babel/new-cap': 'off', - 'react/jsx-filename-extension': 'off', - 'react/react-in-jsx-scope': 'off', - '@typescript-eslint/no-namespace': 'off', - '@typescript-eslint/prefer-nullish-coalescing': 'off', - - // I can't figure these out: - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - - // enable these again someday: - '@typescript-eslint/no-unsafe-argument': 'off', - - // this one isn't smart enough for our "~/" imports - 'import/order': 'off', - - // for CatchBoundaries - '@typescript-eslint/no-throw-literal': 'off', - 'testing-library/no-await-sync-events': 'off', - 'testing-library/prefer-implicit-assert': 'off', - - // this auto-fixes and it's nice to have types and actual stuff separate - '@typescript-eslint/consistent-type-imports': 'warn', - - // conflicts with jsx-a11y/prefer-tag-over-role - 'jsx-a11y/accessible-emoji': 'off', - - 'jest/no-deprecated-functions': 'off', - - // typescript handles this: - 'react/no-unknown-property': 'off', - }, -} diff --git a/app/components/arrow-button.tsx b/app/components/arrow-button.tsx index 664fd529c..52b9f2609 100644 --- a/app/components/arrow-button.tsx +++ b/app/components/arrow-button.tsx @@ -85,7 +85,7 @@ type ArrowButtonProps = { function getBaseProps({ textSize, className }: ArrowButtonBaseProps) { return { className: clsx( - 'text-primary inline-flex items-center text-left font-medium focus:outline-none cursor-pointer transition', + 'text-primary inline-flex cursor-pointer items-center text-left font-medium transition focus:outline-none', { 'text-xl': textSize === 'medium', 'text-lg': textSize === 'small', diff --git a/app/components/article-card.tsx b/app/components/article-card.tsx index 42394587d..d7af9725b 100644 --- a/app/components/article-card.tsx +++ b/app/components/article-card.tsx @@ -1,13 +1,13 @@ import { Link } from '@remix-run/react' import { clsx } from 'clsx' -import { getImageBuilder, getImgProps } from '~/images.tsx' -import { type MdxListItem, type Team } from '~/types.ts' -import { getBannerAltProp, getBannerTitleProp } from '~/utils/mdx.tsx' -import { useRootData } from '~/utils/use-root-data.ts' import { BlurrableImage } from './blurrable-image.tsx' import { ClipboardCopyButton } from './clipboard-copy-button.tsx' import { MissingSomething } from './kifs.tsx' import { H3 } from './typography.tsx' +import { getImageBuilder, getImgProps } from '~/images.tsx' +import { type MdxListItem, type Team } from '~/types.ts' +import { getBannerAltProp, getBannerTitleProp } from '~/utils/mdx.tsx' +import { useRootData } from '~/utils/use-root-data.ts' function ArticleCard({ leadingTeam, diff --git a/app/components/button.tsx b/app/components/button.tsx index 9588be603..4c2c3a80c 100644 --- a/app/components/button.tsx +++ b/app/components/button.tsx @@ -10,7 +10,7 @@ interface ButtonProps { function getClassName({ className }: { className?: string }) { return clsx( - 'group relative inline-flex text-lg font-medium focus:outline-none opacity-100 disabled:opacity-50 transition', + 'group relative inline-flex text-lg font-medium opacity-100 transition focus:outline-none disabled:opacity-50', className, ) } diff --git a/app/components/calls/recorder.tsx b/app/components/calls/recorder.tsx index 4a8cb8fa2..c675a0bbf 100644 --- a/app/components/calls/recorder.tsx +++ b/app/components/calls/recorder.tsx @@ -2,8 +2,6 @@ import { useMachine } from '@xstate/react' import gsap from 'gsap' import * as React from 'react' import { assign, createMachine, send as sendUtil } from 'xstate' -import { type OptionalTeam } from '~/types.ts' -import { assertNonNull, getOptionalTeam } from '~/utils/misc.tsx' import { Button, LinkButton } from '../button.tsx' import { useInterval } from '../hooks/use-interval.tsx' import { @@ -14,6 +12,8 @@ import { } from '../icons.tsx' import { Tag } from '../tag.tsx' import { Paragraph } from '../typography.tsx' +import { type OptionalTeam } from '~/types.ts' +import { assertNonNull, getOptionalTeam } from '~/utils/misc.tsx' // Play around with these values to affect the audio visualisation. // Should be able to stream the visualisation back no problem. @@ -140,7 +140,7 @@ const recorderMachine = createMachine( const devices = await navigator.mediaDevices.enumerateDevices() return devices.filter(({ kind }) => kind === 'audioinput') }, - mediaRecorder: context => (sendBack, receive) => { + mediaRecorder: (context) => (sendBack, receive) => { let mediaRecorder: MediaRecorder async function go() { @@ -153,7 +153,7 @@ const recorderMachine = createMachine( mediaRecorder = new MediaRecorder(mediaStream) sendBack({ type: 'mediaRecorderCreated', mediaRecorder }) - mediaRecorder.ondataavailable = event => { + mediaRecorder.ondataavailable = (event) => { chunks.push(event.data) if (mediaRecorder.state === 'inactive') { sendBack({ @@ -167,7 +167,7 @@ const recorderMachine = createMachine( mediaRecorder.start() - receive(event => { + receive((event) => { if (event.type === 'pause') { mediaRecorder.pause() } else if (event.type === 'resume') { @@ -247,7 +247,7 @@ function CallRecorder({ Select your device: