diff --git a/apps/dicty-frontpage/src/common/data/mockContent.ts b/apps/dicty-frontpage/src/common/data/mockContent.ts
index b9410cd20d..c0fef10b8b 100644
--- a/apps/dicty-frontpage/src/common/data/mockContent.ts
+++ b/apps/dicty-frontpage/src/common/data/mockContent.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
const CONTENT_STRING = `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Annual International Dictyostelium Conference","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"International conferences dedicated to ","type":"text","version":1},{"detail":0,"format":2,"mode":"normal","style":"","text":"Dictyostelium","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" started in 1977 with the meeting in Sardinia, and continued on a roughly 3-year cycle into the 1980's. However, as the field became more active, more local meetings sprang up to fill the gaps in the cycle. Notable amongst these was an annual series in the UK, which gradually became more international. By the late 1980's with the successive meetings at Amsterdam, Oxford, Airlie and Cambridge, the current pattern of annual meetings was established. Interestingly in the late 1990's as the field expanded further, local meetings were re-started in several countries. ","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"flex-layout","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}`
const mockContent = [
{
diff --git a/apps/dicty-frontpage/src/common/data/superuser.ts b/apps/dicty-frontpage/src/common/data/superuser.ts
index 5202568607..6cacc99784 100644
--- a/apps/dicty-frontpage/src/common/data/superuser.ts
+++ b/apps/dicty-frontpage/src/common/data/superuser.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
export const testPermission = {
id: "1",
level: "test",
diff --git a/apps/dicty-frontpage/src/common/utils/citation.ts b/apps/dicty-frontpage/src/common/utils/citation.ts
index 6b3ee5ed92..36f9363334 100644
--- a/apps/dicty-frontpage/src/common/utils/citation.ts
+++ b/apps/dicty-frontpage/src/common/utils/citation.ts
@@ -1,26 +1,17 @@
import { pipe } from "fp-ts/function"
-import { getOrElse as OgetOrElse } from "fp-ts/Option"
import {
map as Amap,
last,
compact as Acompact,
intersperse as Aintersperse,
- foldLeft as AfoldLeft,
- foldMap as AfoldMap,
reduce as Areduce,
- splitAt as AsplitAt,
- updateAt as AupdateAt,
- zero as Azero,
} from "fp-ts/Array"
import {
type NonEmptyArray,
- splitAt as NEAsplitAt,
last as NEAlast,
init as NEAinit,
- intersperse as NEAintersperse,
} from "fp-ts/NonEmptyArray"
import { bindTo as IbindTo, let as Ilet } from "fp-ts/Identity"
-import { Do as ODo, bind as Obind, let as Olet } from "fp-ts/Option"
import { slice, trimRight } from "fp-ts/string"
import { match } from "ts-pattern"
import { type PublicationItem } from "../hooks/useFetchPublications"
diff --git a/apps/dicty-frontpage/src/database/index.ts b/apps/dicty-frontpage/src/database/index.ts
index 12f5f0d6a2..8d03969ea2 100644
--- a/apps/dicty-frontpage/src/database/index.ts
+++ b/apps/dicty-frontpage/src/database/index.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { BrowserLevel } from "browser-level"
import { mockContent } from "../common/data/mockContent"
import { mockSuperuser } from "../common/data/superuser"
diff --git a/apps/genome-page/.eslintrc.json b/apps/genome-page/.eslintrc.json
deleted file mode 100644
index bffb357a71..0000000000
--- a/apps/genome-page/.eslintrc.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "extends": "next/core-web-vitals"
-}
diff --git a/apps/genome-page/additional.d.ts b/apps/genome-page/additional.d.ts
index 9b1e8504fa..7e96dacbe3 100644
--- a/apps/genome-page/additional.d.ts
+++ b/apps/genome-page/additional.d.ts
@@ -1,7 +1,9 @@
///
import "typescript"
+
declare global {
namespace NodeJS {
+ // eslint-disable-next-line unicorn/prevent-abbreviations
interface ProcessEnv {
NEXT_PUBLIC_BASENAME: string
NEXT_PUBLIC_GA_TRACKING_ID: string
diff --git a/apps/genome-page/common/@types/dicty-components-login.d.ts b/apps/genome-page/common/@types/dicty-components-login.d.ts
index 55112e1fef..f607829e36 100644
--- a/apps/genome-page/common/@types/dicty-components-login.d.ts
+++ b/apps/genome-page/common/@types/dicty-components-login.d.ts
@@ -1 +1,2 @@
+/* eslint-disable unicorn/filename-case */
declare module "dicty-components-login"
diff --git a/apps/genome-page/common/@types/dicty-components-navbar.d.ts b/apps/genome-page/common/@types/dicty-components-navbar.d.ts
index 0bca6a0549..984331b350 100644
--- a/apps/genome-page/common/@types/dicty-components-navbar.d.ts
+++ b/apps/genome-page/common/@types/dicty-components-navbar.d.ts
@@ -1 +1,2 @@
+/* eslint-disable unicorn/filename-case */
declare module "dicty-components-navbar"
diff --git a/apps/genome-page/common/hooks/WikiDisplay.tsx b/apps/genome-page/common/hooks/WikiDisplay.tsx
index 7e107767a7..f60b3501c1 100644
--- a/apps/genome-page/common/hooks/WikiDisplay.tsx
+++ b/apps/genome-page/common/hooks/WikiDisplay.tsx
@@ -1,40 +1,44 @@
// group of functions that maps the markdown content/error to the corresponding react component
-import * as E from "fp-ts/Either"
-import * as F from "fp-ts-std/Function"
-import WikiContainer from "../../components/features/CommunityAnnotations/WikiContainer"
-import WikiLoader from "../../components/features/CommunityAnnotations/WikiLoader"
-
-interface WikiContentProps {
+import {
+ type Either,
+ isRight as EisRight,
+ isLeft as EisLeft,
+} from "fp-ts/Either"
+import { guard } from "fp-ts-std/Function"
+import { WikiContainer } from "../../components/features/CommunityAnnotations/WikiContainer"
+import { WikiLoader } from "../../components/features/CommunityAnnotations/WikiLoader"
+
+interface WikiContentProperties {
markdown?: string
loading: boolean
}
// type for Either monad
-export type WikiContentEither = E.Either
+export type WikiContentEither = Either
// predicate function that checks is the fetching is under process
-const isLoading = (ma: WikiContentEither) => E.isRight(ma) && ma.right.loading
+const isLoading = (ma: WikiContentEither) => EisRight(ma) && ma.right.loading
// predicate function to indicate if the fetching is completed
const isNotLoading = (ma: WikiContentEither) =>
- E.isRight(ma) && !ma.right.loading
+ EisRight(ma) && !ma.right.loading
// react component for loading state
const loaderDisplay = () =>
// react component for error display
-const errDisplay = (ma: WikiContentEither) => E.isLeft(ma) &&
+const errorDisplay = (ma: WikiContentEither) => EisLeft(ma) &&
// react component for display markdown content
const nameDisplay = (ma: WikiContentEither) =>
- E.isRight(ma) &&
+ EisRight(ma) &&
// react component when something unexpected happened
const defaultDisplay = () => Not sure what happened
// this function maps three conditions, error,success or loading to a react component
-export const toOutput = F.guard([
+export const toOutput = guard([
[isLoading, loaderDisplay],
- [E.isLeft, errDisplay],
+ [EisLeft, errorDisplay],
[isNotLoading, nameDisplay],
])(defaultDisplay)
diff --git a/apps/genome-page/common/hooks/useCreateApolloClient.test.tsx b/apps/genome-page/common/hooks/useCreateApolloClient.test.tsx
index 17cd4bdd6e..eecc879ba8 100644
--- a/apps/genome-page/common/hooks/useCreateApolloClient.test.tsx
+++ b/apps/genome-page/common/hooks/useCreateApolloClient.test.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable sonarjs/no-duplicate-string */
import { isMutation, getGraphQLServer } from "./useCreateApolloClient"
describe("isMutation function", () => {
diff --git a/apps/genome-page/common/hooks/useCreateApolloClient.tsx b/apps/genome-page/common/hooks/useCreateApolloClient.tsx
index e5f5c600c2..0e5b7ac477 100644
--- a/apps/genome-page/common/hooks/useCreateApolloClient.tsx
+++ b/apps/genome-page/common/hooks/useCreateApolloClient.tsx
@@ -13,17 +13,16 @@ import version from "dicty-graphql-schema/package.json"
const SCHEMA_VERSION_KEY = "gene-apollo-schema-version"
const GENE_CACHE_KEY = "gene-apollo-cache-persist"
-const mutationList = ["Logout"]
+const mutationList = new Set(["Logout"])
-const isMutation = (value: string) => {
- if (mutationList.includes(value)) {
- return true
- }
- return false
-}
+const isMutation = (value: string) => mutationList.has(value)
-const getGraphQLServer = (url: string, deployEnv: string, origin: string) => {
- if (deployEnv === "staging" && origin === "https://dictycr.org") {
+const getGraphQLServer = (
+ url: string,
+ deployEnvironment: string,
+ origin: string,
+) => {
+ if (deployEnvironment === "staging" && origin === "https://dictycr.org") {
return process.env.NEXT_PUBLIC_ALT_GRAPHQL_SERVER
}
return url
@@ -42,6 +41,7 @@ const authLink = setContext((request, { headers }) => {
})
const createApolloLink = (server: string): ApolloLink =>
+ // eslint-disable-next-line unicorn/prefer-spread -- this .concat is not Array.concat
authLink.concat(
createHttpLink({
uri: `${server}/graphql`,
@@ -94,4 +94,4 @@ const useCreateApolloClient = () => {
}
export { isMutation, getGraphQLServer }
-export default useCreateApolloClient
+export { useCreateApolloClient }
diff --git a/apps/genome-page/common/hooks/useGithubWiki.ts b/apps/genome-page/common/hooks/useGithubWiki.ts
index ab511d017d..24e0833e1f 100644
--- a/apps/genome-page/common/hooks/useGithubWiki.ts
+++ b/apps/genome-page/common/hooks/useGithubWiki.ts
@@ -1,15 +1,15 @@
// group of functions that receives an git url and provides a promise to resolve it to its
// markdown component
import { pipe, flow } from "fp-ts/lib/function"
-import * as E from "fp-ts/lib/Either"
-import * as TE from "fp-ts/lib/TaskEither"
+import { toError } from "fp-ts/lib/Either"
+import { of, tryCatch, chain, map, mapLeft } from "fp-ts/lib/TaskEither"
import { clone } from "isomorphic-git"
-import * as S from "fp-ts/string"
+import { Semigroup } from "fp-ts/string"
import { intercalate } from "fp-ts/Semigroup"
import http from "isomorphic-git/http/web"
import FS from "@isomorphic-git/lightning-fs"
-export interface DirFileProps {
+export interface DirectoryFileProperties {
dir: string
file: string
url: string
@@ -17,55 +17,57 @@ export interface DirFileProps {
}
// The main wrapper function or hook
-export function cloneGithubWiki(props: DirFileProps) {
- const defaultCloneParams = {
- http: http,
- fs: props.browserFS,
+export function cloneGithubWiki(properties: DirectoryFileProperties) {
+ const defaultCloneParameters = {
+ http,
+ fs: properties.browserFS,
corsProxy: "https://cors.isomorphic-git.org",
}
- const defaultSep = "/"
+ const defaultSeparator = "/"
// function that converts the data to a monad that handle promise
- const wrapper = (props: DirFileProps) => TE.of(props)
+ const wrapper = (properties_: DirectoryFileProperties) => of(properties_)
// function that runs the clone api and returns a promise, handles both the
// success and error conditons.
- const executeCloneRepo = ({ dir, url, file }: DirFileProps) =>
- TE.tryCatch(async () => {
- await clone({ dir, url, ...defaultCloneParams })
- return { dir, url, file } as DirFileProps
- }, E.toError)
+ const executeCloneRepo = ({ dir, url, file }: DirectoryFileProperties) =>
+ tryCatch(async () => {
+ await clone({ dir, url, ...defaultCloneParameters })
+ return { dir, url, file } as DirectoryFileProperties
+ }, toError)
// const errLogger = TE.fromIOK(Console.error)
// const infoLogger = TE.fromIOK(Console.info)
- // function that extract the error message from the Error object
- const errMsgExtract = (err: Error) => err.message
-
// function that constructs the markdown file path inside the git repo
- const addPath = ({ dir, file }: DirFileProps) => {
- const pathDelimGroup = pipe(S.Semigroup, intercalate(defaultSep))
+ const addPath = ({ dir, file }: DirectoryFileProperties) => {
+ const pathDelimGroup = pipe(Semigroup, intercalate(defaultSeparator))
+ // eslint-disable-next-line unicorn/prefer-spread -- this .concat is not Array.concat
return pathDelimGroup.concat(dir, file)
}
// function that read the markdown file from the git repo. Also handles the error.
const readFileFromRepo = (path: string) =>
- TE.tryCatch(async () => {
- const buffer = await props.browserFS.promises.readFile(path, {
+ tryCatch(async () => {
+ const buffer = await properties.browserFS.promises.readFile(path, {
encoding: "utf8",
})
return buffer.toString()
- }, E.toError)
+ }, toError)
+
+ // function that extract the error message from the Error object
+ // eslint-disable-next-line unicorn/consistent-function-scoping -- It's nice to keep this function here because these functions are defined in the order they are used in the flow below.
+ const errorMessageExtract = (error: Error) => error.message
// construct a pipeline from all the functions
const payload = flow(
wrapper,
- TE.chain(executeCloneRepo),
+ chain(executeCloneRepo),
// TE.chainFirstIOK(infoLogger),
- TE.map(addPath),
+ map(addPath),
// TE.chainFirstIOK(infoLogger),
- TE.chain(readFileFromRepo),
+ chain(readFileFromRepo),
// TE.chainFirstIOK(infoLogger),
- TE.mapLeft(errMsgExtract),
+ mapLeft(errorMessageExtract),
)
- return payload(props)
+ return payload(properties)
}
diff --git a/apps/genome-page/common/hooks/useGoogleAnalytics.tsx b/apps/genome-page/common/hooks/useGoogleAnalytics.tsx
index 6e91152fef..2d48e9390d 100644
--- a/apps/genome-page/common/hooks/useGoogleAnalytics.tsx
+++ b/apps/genome-page/common/hooks/useGoogleAnalytics.tsx
@@ -10,13 +10,13 @@ const useGoogleAnalytics = () => {
const setGoogleAnalytics = async () => {
try {
const module = await import("react-ga")
- const trackingID = process.env.NEXT_PUBLIC_GA_TRACKING_ID
+ const trackingID = process.env.NEXT_PUBLIC_GA_TRACKING_ID as string
const basename = process.env.NEXT_PUBLIC_BASENAME
const page = basename + router.pathname
- let ReactGA = module.default
+ const ReactGA = module.default
ReactGA.initialize(trackingID)
- ReactGA.set({ page: page, anonymizeIp: true })
+ ReactGA.set({ page, anonymizeIp: true })
ReactGA.pageview(page)
// also make sure to detect pageviews from bfcache
@@ -26,8 +26,9 @@ const useGoogleAnalytics = () => {
ReactGA.pageview(page)
}
})
- } catch (e) {
- console.error("could not load react-ga module", JSON.stringify(e))
+ } catch (error) {
+ // eslint-disable-next-line no-console
+ console.error("could not load react-ga module", JSON.stringify(error))
}
}
@@ -37,4 +38,4 @@ const useGoogleAnalytics = () => {
}, [router.pathname])
}
-export default useGoogleAnalytics
+export { useGoogleAnalytics }
diff --git a/apps/genome-page/common/utils/clientConfig.sample.ts b/apps/genome-page/common/utils/clientConfig.sample.ts
deleted file mode 100644
index 7a7aac9952..0000000000
--- a/apps/genome-page/common/utils/clientConfig.sample.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-const clientConfig = {
- facebook: { clientId: "xxxxxxxxxxxxxxx" },
- google: { clientId: "xxxxxxxxxxxxxxxxxx" },
- linkedin: { clientId: "xxxxxxxxxxxxxxxxxx" },
- orcid: { clientId: "xxxxxxxxxxxxxxxxxx" },
-}
-
-export default clientConfig
diff --git a/apps/genome-page/common/utils/containerGenerator.tsx b/apps/genome-page/common/utils/containerGenerator.tsx
index 078c4583f2..9314afb093 100644
--- a/apps/genome-page/common/utils/containerGenerator.tsx
+++ b/apps/genome-page/common/utils/containerGenerator.tsx
@@ -1,9 +1,10 @@
-import AssociatedSequencePanel from "components/features/Summary/Panels/AssociatedSequencePanel"
-import GeneralInfoPanel from "components/features/Summary/Panels/GeneralInfoPanel"
-import GoaPanel from "components/features/Summary/Panels/GoaPanel"
-import LinkPanel from "components/features/Summary/Panels/LinksPanel"
-import ProductInfoPanel from "components/features/Summary/Panels/ProductInfoPanel"
-import ReferencesPanel from "components/features/Summary/Panels/ReferencesPanel"
+/* eslint-disable no-template-curly-in-string */
+import { AssociatedSequencePanel } from "components/features/Summary/Panels/AssociatedSequencePanel"
+import { GeneralInfoPanel } from "components/features/Summary/Panels/GeneralInfoPanel"
+import { GoaPanel } from "components/features/Summary/Panels/GoaPanel"
+import { LinkPanel } from "components/features/Summary/Panels/LinksPanel"
+import { ProductInfoPanel } from "components/features/Summary/Panels/ProductInfoPanel"
+import { ReferencesPanel } from "components/features/Summary/Panels/ReferencesPanel"
import { GeneQuery } from "dicty-graphql-schema"
import React from "react"
@@ -16,40 +17,19 @@ interface ChildContent {
child: JSX.Element | undefined
}
-interface ContainerProps {
+interface ContainerProperties {
id: string
title: string
route: string
}
interface SummaryContainerTypes {
- generalInformation: ContainerProps
- gene: ContainerProps
- listGeneProductInfo: ContainerProps
- getAssociatedSequnces: ContainerProps
- getLinks: ContainerProps
- allPublications: ContainerProps
-}
-
-/*
- containerGenerator returns ChildContent[] if the sectionId, element of arrayOfSections, exists.
- Props:
- - arrayOfSections: string[], an array of section ID's from the gene graphql query. You can console.log(gene) to understand.
- - gene: GeneQuery, the GraphQL query that was made
-*/
-const containerGenerator = (arrayOfSections: string[], gene: GeneQuery) => {
- return arrayOfSections.map((sectionId) => {
- if (gene[sectionId as keyof GeneQuery]) {
- return {
- panelProps:
- SummaryContainerContent[sectionId as keyof SummaryContainerTypes],
- child: returnComponentByName(
- SummaryContainerContent[sectionId as keyof SummaryContainerTypes].id,
- gene,
- ),
- }
- }
- }) as ChildContent[]
+ generalInformation: ContainerProperties
+ gene: ContainerProperties
+ listGeneProductInfo: ContainerProperties
+ getAssociatedSequnces: ContainerProperties
+ getLinks: ContainerProperties
+ allPublications: ContainerProperties
}
/* An object that contains the Props of PanelWrapper for the respective sectionId */
@@ -57,6 +37,7 @@ const SummaryContainerContent = {
generalInformation: {
id: "generalInformation",
title: "General Information",
+ // eslint-disable-next-line sonarjs/no-duplicate-string
route: "/gene/${geneId}/",
},
gene: {
@@ -96,7 +77,7 @@ const SummaryContainerContent = {
const returnComponentByName = (id: string, gene: GeneQuery) => {
switch (id) {
case "generalInformation":
- return
+ return
case "gene":
return
case "listGeneProductInfo":
@@ -108,23 +89,39 @@ const returnComponentByName = (id: string, gene: GeneQuery) => {
case "allPublications":
return
default:
- return
+ return <>>
}
}
+/*
+ containerGenerator returns ChildContent[] if the sectionId, element of arrayOfSections, exists.
+ Props:
+ - arrayOfSections: string[], an array of section ID's from the gene graphql query. You can console.log(gene) to understand.
+ - gene: GeneQuery, the GraphQL query that was made
+*/
+const containerGenerator = (arrayOfSections: string[], gene: GeneQuery) =>
+ arrayOfSections
+ .filter((sectionId) => sectionId in gene)
+ .map((sectionId) => ({
+ panelProps:
+ SummaryContainerContent[sectionId as keyof SummaryContainerTypes],
+ child: returnComponentByName(
+ SummaryContainerContent[sectionId as keyof SummaryContainerTypes].id,
+ gene,
+ ),
+ })) as ChildContent[]
+
/*
createRouteFromString returns the correct string path which can be used in the route prop of Panel Wrapper
Props:
- link: string
*/
const createRouteFromString = (link: string, gene: GeneQuery) => {
- if ("/gene/${geneId}/references") {
- let numPubs = gene.allPublications.num_pubs.toString()
- link = link.replace("${gene.allPublications.num_pubs}", numPubs)
- }
- let geneName = gene.gene!.name!.toString()
- link = link.replace("${geneId}", geneName)
+ const numberPubs = gene.allPublications.num_pubs.toString()
+ const geneName = gene.gene!.name!.toString()
return link
+ .replace("${geneId}", geneName)
+ .replace("${gene.allPublications.num_pubs}", numberPubs)
}
export { containerGenerator, createRouteFromString, returnComponentByName }
diff --git a/apps/genome-page/common/utils/dateConverter.test.ts b/apps/genome-page/common/utils/dateConverter.test.ts
index 59e71a1caf..7c6d73d37e 100644
--- a/apps/genome-page/common/utils/dateConverter.test.ts
+++ b/apps/genome-page/common/utils/dateConverter.test.ts
@@ -1,4 +1,4 @@
-import dateConverter from "common/utils/dateConverter"
+import { dateConverter } from "common/utils/dateConverter"
describe("dateConverter", () => {
it("returns date in expected format", () => {
diff --git a/apps/genome-page/common/utils/dateConverter.ts b/apps/genome-page/common/utils/dateConverter.ts
index d8ead96678..2dd0189305 100644
--- a/apps/genome-page/common/utils/dateConverter.ts
+++ b/apps/genome-page/common/utils/dateConverter.ts
@@ -4,11 +4,11 @@
const dateConverter = (date: string) => {
// dates arrive from API in YYYYMMDD format
- const year = date.substring(0, 4)
- const month = date.substring(4, 6)
- const day = date.substring(6, 8)
+ const year = date.slice(0, 4)
+ const month = date.slice(4, 6)
+ const day = date.slice(6, 8)
return `${year}-${month}-${day}`
}
-export default dateConverter
+export { dateConverter }
diff --git a/apps/genome-page/common/utils/footerItems.ts b/apps/genome-page/common/utils/footerItems.ts
index a0a11c5588..b9f390e111 100644
--- a/apps/genome-page/common/utils/footerItems.ts
+++ b/apps/genome-page/common/utils/footerItems.ts
@@ -28,8 +28,7 @@ const footerLinks = {
type: "link",
id: "4",
attributes: {
- url:
- "http://dictybase.org/tools/jbrowse/?data=data%2Fjbrowse%2Fdiscoideum&loc=6%3A1..50022&tracks=reference%2Cgene%2Ctranscript&highlight=",
+ url: "http://dictybase.org/tools/jbrowse/?data=data%2Fjbrowse%2Fdiscoideum&loc=6%3A1..50022&tracks=reference%2Cgene%2Ctranscript&highlight=",
description: "Genome Browser",
},
},
diff --git a/apps/genome-page/common/utils/headerItems.tsx b/apps/genome-page/common/utils/headerItems.tsx
index 60b947c824..24b6218112 100644
--- a/apps/genome-page/common/utils/headerItems.tsx
+++ b/apps/genome-page/common/utils/headerItems.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable jsx-a11y/anchor-is-valid */
import React from "react"
import { HeaderLink } from "dicty-components-header-footer"
import Link from "next/link"
@@ -8,18 +9,18 @@ import { SvgIconProps } from "@material-ui/core/SvgIcon"
import LogoutIcon from "@mui/icons-material/Logout"
import LoginIcon from "@mui/icons-material/Login"
-type LinkIconProps = {
- link: LinkProps
-}
-
-type LinkProps = {
+type LinkProperties = {
isRouter?: boolean
text: string
icon: React.ReactElement
url: string
}
-const LinkIcon = ({ link }: LinkIconProps) => (
+type LinkIconProperties = {
+ link: LinkProperties
+}
+
+const LinkIcon = ({ link }: LinkIconProperties) => (
{link.icon}
@@ -27,27 +28,25 @@ const LinkIcon = ({ link }: LinkIconProps) => (
)
-const HeaderLinks = ({ items }: { items: LinkProps[] }) => {
- return (
-
- {items.map((link: LinkProps, i: number) =>
- link.isRouter ? (
-
- ) : (
-
-
-
- ),
- )}
-
- )
-}
+const HeaderLinks = ({ items }: { items: LinkProperties[] }) => (
+ <>
+ {items.map((link: LinkProperties) =>
+ link.isRouter ? (
+
+ ) : (
+
+
+
+ ),
+ )}
+ >
+)
const headerItems = [
{
diff --git a/apps/genome-page/common/utils/icons.ts b/apps/genome-page/common/utils/icons.ts
index d0ea664a33..e70a6025e1 100644
--- a/apps/genome-page/common/utils/icons.ts
+++ b/apps/genome-page/common/utils/icons.ts
@@ -78,4 +78,5 @@ library.add(
faWrench,
)
+// eslint-disable-next-line unicorn/prefer-export-from, import/no-default-export
export default library
diff --git a/apps/genome-page/common/utils/navbarItems.ts b/apps/genome-page/common/utils/navbarItems.ts
index fe722d9309..c43dfb90fa 100644
--- a/apps/genome-page/common/utils/navbarItems.ts
+++ b/apps/genome-page/common/utils/navbarItems.ts
@@ -33,8 +33,7 @@ const navbarItems = {
items: [
{
label: "Genome Browser",
- link:
- "http://dictybase.org/tools/jbrowse/?data=data/jbrowse/discoideum&loc=6:1..50011&tracks=reference,gene,transcript",
+ link: "http://dictybase.org/tools/jbrowse/?data=data/jbrowse/discoideum&loc=6:1..50011&tracks=reference,gene,transcript",
},
{
label: "Dashboard",
@@ -141,8 +140,7 @@ const navbarItems = {
},
{
label: "Standard Operating Procedures",
- link:
- "https://northwestern.box.com/s/p0f8m70whgiuib2u0wt8gtn497ncmq8i",
+ link: "https://northwestern.box.com/s/p0f8m70whgiuib2u0wt8gtn497ncmq8i",
},
],
},
diff --git a/apps/genome-page/common/utils/oauthConfig.ts b/apps/genome-page/common/utils/oauthConfig.ts
index 5e8126db74..3d40d7e957 100644
--- a/apps/genome-page/common/utils/oauthConfig.ts
+++ b/apps/genome-page/common/utils/oauthConfig.ts
@@ -1,4 +1,9 @@
-import clientConfig from "./clientConfig"
+const clientConfig = {
+ facebook: { clientId: "xxxxxxxxxxxxxxx" },
+ google: { clientId: "xxxxxxxxxxxxxxxxxx" },
+ linkedin: { clientId: "xxxxxxxxxxxxxxxxxx" },
+ orcid: { clientId: "xxxxxxxxxxxxxxxxxx" },
+}
type Config = {
name: string
@@ -24,7 +29,7 @@ type Auth = {
}
const basename = process.env.NEXT_PUBLIC_BASENAME
-const url = typeof window !== "undefined" ? window.location.origin : ""
+const url = typeof window === "undefined" ? "" : window.location.origin
const oauthConfig: Auth = {
google: {
@@ -66,4 +71,4 @@ const oauthConfig: Auth = {
},
}
-export default oauthConfig
+export { oauthConfig }
diff --git a/apps/genome-page/common/utils/panelGenerator.tsx b/apps/genome-page/common/utils/panelGenerator.tsx
index 734ca3dee6..50b617b4b4 100644
--- a/apps/genome-page/common/utils/panelGenerator.tsx
+++ b/apps/genome-page/common/utils/panelGenerator.tsx
@@ -6,8 +6,35 @@ import {
} from "dicty-graphql-schema"
import React from "react"
import Image from "next/image"
+import { TableDisplay } from "components/panels/GenomicCoordsTable"
import { commaSeparate } from "./strings"
-import TableDisplay from "components/panels/GenomicCoordsTable"
+
+type ContentId =
+ | "Gene Name"
+ | "Name Description"
+ | "Alternative Gene Names"
+ | "Alternative Protein Names"
+ | "Description"
+ | "Protein Coding Gene"
+ | "Protein Length"
+ | "Molecular Weight"
+ | "More Protein Data"
+ | "Genomic Coords."
+ | "Expression"
+ | "External Resources"
+ | "dictyBase Colleagues"
+ | "GenBank Genomic Fragment"
+ | "GenBank mRNA"
+ | "AA Composition"
+ | "ESTs"
+ | "Note"
+ | "Gene Product"
+ | "dictyBase ID"
+ | "Description"
+ | "Protein Length"
+ | "Molecular Weight"
+ | "Subcellular location"
+ | "Protein existence"
interface PanelReturnType {
leftDisplay: string
@@ -24,8 +51,8 @@ interface PanelReturnType {
| undefined
}
-interface PanelReqProps {
- id: string
+interface PanelRequestProperties {
+ id: ContentId
value:
| string
| string[]
@@ -37,40 +64,8 @@ interface PanelReqProps {
| undefined
}
-/*
- This function will take in props and return the Panel Items
- Integrated Panels:
- - General Info Panel
- - Product Info Panel
- = Links Panel
- - Associated Sequence Panel
-*/
-const panelGenerator = (
- arrayOfChildSections: PanelReqProps[],
- type: string,
- gene: GeneQuery,
-) => {
- let returnArray: PanelReturnType[] = []
- if (!gene[type as keyof GeneQuery]) {
- /* Check to see if section exists */
- return
- }
-
- arrayOfChildSections.forEach((element) => {
- if (element.value !== null && element.value !== undefined) {
- let entry = {
- leftDisplay: element.id,
- rightDisplay: returnPanelContentById(element.id, element.value, gene),
- }
- returnArray.push(entry)
- }
- })
-
- return returnArray
-}
-
const returnPanelContentById = (
- id: string,
+ id: ContentId,
value:
| string
| string[]
@@ -78,7 +73,7 @@ const returnPanelContentById = (
| NameWithLink[]
| GenomicCoordinates[]
| AssociatedSequences,
- gene: GeneQuery,
+ // gene: GeneQuery,
) => {
/*
Why switch over map
@@ -86,30 +81,22 @@ const returnPanelContentById = (
Using Type Assertion because this function will know what to return
*/
switch (id) {
- case "Gene Name":
- return value
case "Name Description":
- return (value as string[]).map((desc, i) => (
-
+ return (value as string[]).map((desc) => (
+
{desc}
))
case "Alternative Gene Names":
return {commaSeparate(value as string[])}
- case "Gene ID":
- return value
- case "Gene Product":
- return value
case "Alternative Protein Names":
- return (value as string[]).map((name, i) => (
-
+ return (value as string[]).map((name) => (
+
{name}
))
- case "Description":
- return value
/* Product Info Panel */
case "Protein Coding Gene":
return (
@@ -123,9 +110,9 @@ const returnPanelContentById = (
width={30}
height={30}
/>
- {"(Curator reviewed)"}
+ (Curator reviewed)
- {"Derived from gene prediction. Supported by mRNA."}
+ Derived from gene prediction. Supported by mRNA.
>
)
case "Protein Length":
@@ -137,44 +124,31 @@ const returnPanelContentById = (
Protein sequence, domains and much more...
)
case "Genomic Coords.":
- return
+ return
/* Links Panel */
case "Expression":
- return (value as NameWithLink[]).map((item, i) => (
-
- {item.name} |{" "}
-
- ))
- case "dictyBase Colleagues":
- return (
-
- {(value as NameWithLink).name}
-
- )
case "External Resources":
- return (value as NameWithLink[]).map((item, i) => (
-
+ return (value as NameWithLink[]).map((item) => (
+
{item.name} |{" "}
))
/* Associated Sequence Panel */
+ case "dictyBase Colleagues":
case "GenBank Genomic Fragment":
- return (
-
- {(value as NameWithLink).name}
-
- )
case "GenBank mRNA":
+ case "AA Composition":
return (
{(value as NameWithLink).name}
)
+
case "ESTs":
return (
<>
- {(value as AssociatedSequences).ests.map((item, i) => (
-
+ {(value as AssociatedSequences).ests.map((item) => (
+
{item.name}
@@ -182,30 +156,45 @@ const returnPanelContentById = (
more..
>
)
- // Protein General Info
- case "Gene Product":
- return value
- case "dictyBase ID":
- return value
- case "Description":
- return value
- case "Protein Length":
- return value
- case "Molecular Weight":
- return value
- case "AA Composition":
- return (
-
- {(value as NameWithLink).name}
-
- )
- case "Subcellular location":
- return value
- case "Protein existence":
- return value
case "Note":
return {value as string}
+ default:
+ return value
+ }
+}
+
+/*
+ This function will take in props and return the Panel Items
+ Integrated Panels:
+ - General Info Panel
+ - Product Info Panel
+ = Links Panel
+ - Associated Sequence Panel
+*/
+const panelGenerator = (
+ arrayOfChildSections: PanelRequestProperties[],
+ type: string,
+ gene: GeneQuery,
+) => {
+ const returnArray: PanelReturnType[] = []
+ if (!gene[type as keyof GeneQuery]) {
+ /* Check to see if section exists */
+ return []
}
+
+ arrayOfChildSections.forEach((element) => {
+ if (element.value !== null && element.value !== undefined) {
+ const entry = {
+ leftDisplay: element.id,
+ rightDisplay: returnPanelContentById(element.id, element.value),
+ // GeneQuery data is currently not used by returnPanelContentById, so it will not be passed for now.
+ // rightDisplay: returnPanelContentById(element.id, element.value, gene),
+ }
+ returnArray.push(entry)
+ }
+ })
+
+ return returnArray
}
export { panelGenerator }
diff --git a/apps/genome-page/common/utils/pubLinkGenerator.test.ts b/apps/genome-page/common/utils/pubLinkGenerator.test.ts
index 3e1d13cb5f..d0d8722cbf 100644
--- a/apps/genome-page/common/utils/pubLinkGenerator.test.ts
+++ b/apps/genome-page/common/utils/pubLinkGenerator.test.ts
@@ -1,4 +1,4 @@
-import pubLinkGenerator from "common/utils/pubLinkGenerator"
+import { pubLinkGenerator } from "common/utils/pubLinkGenerator"
describe("pubLinkGenerator", () => {
it("returns correct URL for PMID", () => {
diff --git a/apps/genome-page/common/utils/pubLinkGenerator.ts b/apps/genome-page/common/utils/pubLinkGenerator.ts
index 7bbcb6a171..8ce3f879bb 100644
--- a/apps/genome-page/common/utils/pubLinkGenerator.ts
+++ b/apps/genome-page/common/utils/pubLinkGenerator.ts
@@ -23,4 +23,4 @@ const pubLinkGenerator = (id: string) => {
return id
}
-export default pubLinkGenerator
+export { pubLinkGenerator }
diff --git a/apps/genome-page/common/utils/qualifierFormatter.test.tsx b/apps/genome-page/common/utils/qualifierFormatter.test.tsx
index 5f102399e6..a7b3d10899 100644
--- a/apps/genome-page/common/utils/qualifierFormatter.test.tsx
+++ b/apps/genome-page/common/utils/qualifierFormatter.test.tsx
@@ -1,5 +1,5 @@
import React from "react"
-import qualifierFormatter from "common/utils/qualifierFormatter"
+import { qualifierFormatter } from "common/utils/qualifierFormatter"
describe("qualifierFormatter", () => {
it("returns correct formatting for NOT", () => {
@@ -9,10 +9,10 @@ describe("qualifierFormatter", () => {
JSON.stringify(qualifierFormatter("NOT|acts_upstream_of_or_within")),
).toBe(
JSON.stringify(
-
+ <>
NOT
acts_upstream_of_or_within
- ,
+ >,
),
)
})
diff --git a/apps/genome-page/common/utils/qualifierFormatter.tsx b/apps/genome-page/common/utils/qualifierFormatter.tsx
index 5f4fc2985f..c83392a6e6 100644
--- a/apps/genome-page/common/utils/qualifierFormatter.tsx
+++ b/apps/genome-page/common/utils/qualifierFormatter.tsx
@@ -1,19 +1,19 @@
/**
* Helper function to handle GO qualifiers formatting
*/
-const qualifierFormatter = (str: string) => {
+const qualifierFormatter = (string_: string) => {
// remove pipe after NOT
- let converted = str.replace("NOT|", "NOT ")
+ const converted = string_.replace("NOT|", "NOT ")
- if (converted.substring(0, 3) === "NOT") {
+ if (converted.slice(0, 3) === "NOT") {
return (
<>
NOT
- {converted.substring(4)}
+ {converted.slice(4)}
>
)
}
return {converted}
}
-export default qualifierFormatter
+export { qualifierFormatter }
diff --git a/apps/genome-page/common/utils/sourceLinkGenerator.test.ts b/apps/genome-page/common/utils/sourceLinkGenerator.test.ts
index 2ba1911ecc..029c58c3a8 100644
--- a/apps/genome-page/common/utils/sourceLinkGenerator.test.ts
+++ b/apps/genome-page/common/utils/sourceLinkGenerator.test.ts
@@ -1,4 +1,4 @@
-import sourceLinkGenerator from "common/utils/sourceLinkGenerator"
+import { sourceLinkGenerator } from "common/utils/sourceLinkGenerator"
describe("sourceLinkGenerator", () => {
it("returns correct link for dictyBase", () => {
diff --git a/apps/genome-page/common/utils/sourceLinkGenerator.ts b/apps/genome-page/common/utils/sourceLinkGenerator.ts
index 9b51b53cc5..5568c94bb1 100644
--- a/apps/genome-page/common/utils/sourceLinkGenerator.ts
+++ b/apps/genome-page/common/utils/sourceLinkGenerator.ts
@@ -21,4 +21,4 @@ const sourceLinkGenerator = (id: string) => {
}
}
-export default sourceLinkGenerator
+export { sourceLinkGenerator }
diff --git a/apps/genome-page/common/utils/strings.ts b/apps/genome-page/common/utils/strings.ts
index a18be0eda7..de1e614f61 100644
--- a/apps/genome-page/common/utils/strings.ts
+++ b/apps/genome-page/common/utils/strings.ts
@@ -5,16 +5,7 @@
* @param initialValue
* @returns String with elements separated by a comma
*/
-const commaSeparate = (array: string[], initialValue?: string): string => {
- return array.reduce(
- (prev, cur, i, _) => {
- if (i === 0) return cur
- return `${prev}, ${cur}`
- },
- initialValue ? initialValue : "",
- )
-}
-
+const commaSeparate = (array: string[]): string => array.join(", ")
/**
* Given an array of strings, return a single string with elements separated by a comma and an "&"
* Ex. ["Mike", "Fox", "Tito"] -> "Mike, Fox & Tito"
@@ -22,19 +13,12 @@ const commaSeparate = (array: string[], initialValue?: string): string => {
* @param initialValue
* @returns String with elements separated by a comma, and the last element with an "&"
*/
-const commaSeparateWithAnd = (
- array: string[],
- initialValue?: string,
-): string => {
- const len = array.length
- return array.reduce(
- (prev, cur, i, _) => {
- if (i === 0) return cur
- if (i === len - 1) return `${prev} & ${cur}`
- return `${prev}, ${cur}`
- },
- initialValue ? initialValue : "",
- )
+const commaSeparateWithAnd = (array: string[]): string => {
+ if (array.length === 0) return ""
+ if (array.length === 1) return array[0]
+ const init = array.slice(0, -1)
+ const last = array.at(-1)
+ return `${commaSeparate(init)} & ${last}`
}
export { commaSeparate, commaSeparateWithAnd }
diff --git a/apps/genome-page/common/utils/withLinkGenerator.test.ts b/apps/genome-page/common/utils/withLinkGenerator.test.ts
index 6e0751a368..133bbe9c5f 100644
--- a/apps/genome-page/common/utils/withLinkGenerator.test.ts
+++ b/apps/genome-page/common/utils/withLinkGenerator.test.ts
@@ -1,23 +1,24 @@
-import withLinkGenerator from "common/utils/withLinkGenerator"
+import { withLinkGenerator } from "common/utils/withLinkGenerator"
describe("withLinkGenerator", () => {
- const fn = withLinkGenerator
+ const function_ = withLinkGenerator
describe("with name parameters", () => {
it("returns local URL if given gene name", () => {
- expect(fn("Q54QB1", "UniprotKB", "erkB")).toBe("/gene/erkB")
+ expect(function_("Q54QB1", "UniprotKB", "erkB")).toBe("/gene/erkB")
})
it("returns local URL if given gene ID", () => {
- expect(fn("Q54QB1", "UniprotKB", "DDB_G0272608")).toBe(
+ expect(function_("Q54QB1", "UniprotKB", "DDB_G0272608")).toBe(
+ // eslint-disable-next-line sonarjs/no-duplicate-string
"/gene/DDB_G0272608",
)
})
it("returns GO URL if given GO name", () => {
- expect(fn("0032496", "GO", "response to lipopolysaccharide")).toBe(
+ expect(function_("0032496", "GO", "response to lipopolysaccharide")).toBe(
"https://www.ebi.ac.uk/QuickGO/term/GO:0032496",
)
})
it("returns Uniprot URL if given Uniprot name", () => {
- expect(fn("P68135", "UniprotKB", "P68135")).toBe(
+ expect(function_("P68135", "UniprotKB", "P68135")).toBe(
"https://www.uniprot.org/uniprot/P68135",
)
})
@@ -25,85 +26,91 @@ describe("withLinkGenerator", () => {
describe("without name parameters", () => {
it("returns correct CHEBI URL", () => {
- expect(fn("test", "CHEBI")).toBe(
+ expect(function_("test", "CHEBI")).toBe(
"https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:test",
)
})
it("returns correct DDB URL", () => {
- expect(fn("DDB_G0272608", "DDB")).toBe("/gene/DDB_G0272608")
+ expect(function_("DDB_G0272608", "DDB")).toBe("/gene/DDB_G0272608")
})
it("returns correct dictyBase URL", () => {
- expect(fn("DDB_G0272608", "dictyBase")).toBe("/gene/DDB_G0272608")
+ expect(function_("DDB_G0272608", "dictyBase")).toBe("/gene/DDB_G0272608")
})
it("returns correct FB URL", () => {
- expect(fn("test", "FB")).toBe("http://flybase.org/reports/test.html")
+ expect(function_("test", "FB")).toBe(
+ "http://flybase.org/reports/test.html",
+ )
})
it("returns correct GO URL", () => {
- expect(fn("test", "GO")).toBe(
+ expect(function_("test", "GO")).toBe(
"https://www.ebi.ac.uk/QuickGO/term/GO:test",
)
})
it("returns correct InterPro URL", () => {
- expect(fn("test", "InterPro")).toBe(
+ expect(function_("test", "InterPro")).toBe(
"http://www.ebi.ac.uk/interpro/entry/test",
)
})
it("returns correct MGI URL", () => {
- expect(fn("test", "MGI")).toBe(
+ expect(function_("test", "MGI")).toBe(
"http://www.informatics.jax.org/marker/test",
)
})
it("returns correct PANTHER URL", () => {
- expect(fn("test", "PANTHER")).toBe(
+ expect(function_("test", "PANTHER")).toBe(
"http://www.pantree.org/node/annotationNode.jsp?id=test",
)
})
it("returns correct PomBase URL", () => {
- expect(fn("test", "PomBase")).toBe(
+ expect(function_("test", "PomBase")).toBe(
"https://www.pombase.org/spombe/result/test",
)
})
it("returns correct RGD URL", () => {
- expect(fn("test", "RGD")).toBe(
+ expect(function_("test", "RGD")).toBe(
"https://rgd.mcw.edu/rgdweb/report/gene/main.html?id=test",
)
})
it("returns correct SGD URL", () => {
- expect(fn("test", "SGD")).toBe("https://www.yeastgenome.org/locus/test")
+ expect(function_("test", "SGD")).toBe(
+ "https://www.yeastgenome.org/locus/test",
+ )
})
it("returns correct SO URL", () => {
- expect(fn("test", "SO")).toBe(
+ expect(function_("test", "SO")).toBe(
"http://www.sequenceontology.org/browser/current_svn/term/SO:test",
)
})
it("returns correct TAIR URL", () => {
- expect(fn("test", "TAIR")).toBe(
+ expect(function_("test", "TAIR")).toBe(
"https://www.arabidopsis.org/servlets/TairObject?accession=test",
)
})
it("returns correct UniProtKB URL", () => {
- expect(fn("test", "UniProtKB")).toBe(
+ expect(function_("test", "UniProtKB")).toBe(
"https://www.uniprot.org/uniprot/test",
)
})
it("returns correct UniProtKB-KW URL", () => {
- expect(fn("test", "UniProtKB-KW")).toBe(
+ expect(function_("test", "UniProtKB-KW")).toBe(
"https://www.uniprot.org/keywords/test",
)
})
it("returns correct UniProtKB-SubCell URL", () => {
- expect(fn("test", "UniProtKB-SubCell")).toBe(
+ expect(function_("test", "UniProtKB-SubCell")).toBe(
"https://www.uniprot.org/locations/test",
)
})
it("returns correct WB URL", () => {
- expect(fn("test", "WB")).toBe("https://wormbase.org/search/cds/test")
+ expect(function_("test", "WB")).toBe(
+ "https://wormbase.org/search/cds/test",
+ )
})
it("returns correct ZFIN URL", () => {
- expect(fn("test", "ZFIN")).toBe("https://zfin.org/test")
+ expect(function_("test", "ZFIN")).toBe("https://zfin.org/test")
})
it("returns hash if no ID match", () => {
- expect(fn("test", "test")).toBe("#")
+ expect(function_("test", "test")).toBe("#")
})
})
})
diff --git a/apps/genome-page/common/utils/withLinkGenerator.ts b/apps/genome-page/common/utils/withLinkGenerator.ts
index aaab5e03dc..4d9598d20f 100644
--- a/apps/genome-page/common/utils/withLinkGenerator.ts
+++ b/apps/genome-page/common/utils/withLinkGenerator.ts
@@ -2,7 +2,7 @@ const convertNameToURL = (name: string, id: string) => {
if (name.includes(" ")) {
return `https://www.ebi.ac.uk/QuickGO/term/GO:${id}`
}
- if (name.match(/^([A-Z0-9]*$)/)) {
+ if (/^([\dA-Z]*$)/.test(name)) {
return `https://www.uniprot.org/uniprot/${id}`
}
return `/gene/${name}`
@@ -12,10 +12,10 @@ const convertNameToURL = (name: string, id: string) => {
* This is a helper function to generate links for the With and Extensions columns of the GOA table.
*/
-const withLinkGenerator = (id: string, db: string, name?: string) => {
+const withLinkGenerator = (id: string, database: string, name?: string) => {
if (name) return convertNameToURL(name, id)
- switch (db) {
+ switch (database) {
case "CHEBI":
return `https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:${id}`
case "DDANAT":
@@ -59,4 +59,4 @@ const withLinkGenerator = (id: string, db: string, name?: string) => {
}
}
-export default withLinkGenerator
+export { withLinkGenerator }
diff --git a/apps/genome-page/components/LegacyLinkSnackbar.test.tsx b/apps/genome-page/components/LegacyLinkSnackbar.test.tsx
index 746607803d..fe7f849ab7 100644
--- a/apps/genome-page/components/LegacyLinkSnackbar.test.tsx
+++ b/apps/genome-page/components/LegacyLinkSnackbar.test.tsx
@@ -1,6 +1,6 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import LegacyLinkSnackbar from "./LegacyLinkSnackbar"
+import { LegacyLinkSnackbar } from "./LegacyLinkSnackbar"
describe("components/LegacyLinkSnackbar", () => {
it("should render correct legacy URL", () => {
diff --git a/apps/genome-page/components/LegacyLinkSnackbar.tsx b/apps/genome-page/components/LegacyLinkSnackbar.tsx
index 8fb43f6c43..8c8cf8901b 100644
--- a/apps/genome-page/components/LegacyLinkSnackbar.tsx
+++ b/apps/genome-page/components/LegacyLinkSnackbar.tsx
@@ -4,7 +4,7 @@ import { makeStyles } from "@material-ui/core/styles"
import InfoIcon from "@material-ui/icons/Info"
import LaunchIcon from "@material-ui/icons/Launch"
-const useStyles = makeStyles((theme) => ({
+const useStyles = makeStyles({
root: {
backgroundColor: "#f5f5f5",
marginBottom: "20px",
@@ -29,9 +29,9 @@ const useStyles = makeStyles((theme) => ({
linkIcon: {
verticalAlign: "middle",
},
-}))
+})
-type Props = {
+type Properties = {
/** Gene used to link to legacy page */
gene: string
}
@@ -40,7 +40,7 @@ type Props = {
* LegacyLinkSnackbar displays a link to the old gene page at the top of each page.
*/
-const LegacyLinkSnackbar = ({ gene }: Props) => {
+const LegacyLinkSnackbar = ({ gene }: Properties) => {
const classes = useStyles()
return (
@@ -76,4 +76,4 @@ const LegacyLinkSnackbar = ({ gene }: Props) => {
)
}
-export default LegacyLinkSnackbar
+export { LegacyLinkSnackbar }
diff --git a/apps/genome-page/components/Loader.test.tsx b/apps/genome-page/components/Loader.test.tsx
index f620abae63..bc4fc3b9d8 100644
--- a/apps/genome-page/components/Loader.test.tsx
+++ b/apps/genome-page/components/Loader.test.tsx
@@ -1,10 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import Loader from "components/Loader"
+import { Loader } from "components/Loader"
describe("components/Loader", () => {
it("should render Loader", () => {
render( )
- expect(screen.getByRole("loader")).toBeInTheDocument()
+ expect(screen.getByTestId("skeleton-loader")).toBeInTheDocument()
})
})
diff --git a/apps/genome-page/components/Loader.tsx b/apps/genome-page/components/Loader.tsx
index 077c0d3ba9..79268ef058 100644
--- a/apps/genome-page/components/Loader.tsx
+++ b/apps/genome-page/components/Loader.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable react/no-array-index-key */
import Grid from "@material-ui/core/Grid"
import { Skeleton } from "@mui/material"
@@ -5,32 +6,28 @@ import { Skeleton } from "@mui/material"
* Loader is the default loading skeleton component.
*/
const Loader = () => (
-
+
- {[...Array(10)].map((item, key) => (
+ {new Array(10).map((item, key) => (
))}
- {[...Array(10)].map((item, key) => (
+ {new Array(10).map((item, key) => (
))}
- {[...Array(10)].map((item, key) => (
+ {new Array(10).map((item, key) => (
))}
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
)
-export default Loader
+export { Loader }
diff --git a/apps/genome-page/components/PageNotReady.test.tsx b/apps/genome-page/components/PageNotReady.test.tsx
index 6b3105e8bd..4057af5252 100644
--- a/apps/genome-page/components/PageNotReady.test.tsx
+++ b/apps/genome-page/components/PageNotReady.test.tsx
@@ -1,6 +1,6 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import PageNotReady from "./PageNotReady"
+import { PageNotReady } from "./PageNotReady"
describe("components/PageNotReady", () => {
it("should render sad dicty image", () => {
diff --git a/apps/genome-page/components/PageNotReady.tsx b/apps/genome-page/components/PageNotReady.tsx
index 7c901882e1..6249fc2b85 100644
--- a/apps/genome-page/components/PageNotReady.tsx
+++ b/apps/genome-page/components/PageNotReady.tsx
@@ -69,4 +69,4 @@ const PageNotReady = () => {
)
}
-export default PageNotReady
+export { PageNotReady }
diff --git a/apps/genome-page/components/StyledExternalLink.tsx b/apps/genome-page/components/StyledExternalLink.tsx
index 95ebbfa950..3fe71e93b9 100644
--- a/apps/genome-page/components/StyledExternalLink.tsx
+++ b/apps/genome-page/components/StyledExternalLink.tsx
@@ -13,7 +13,7 @@ const useStyles = makeStyles({
},
})
-type Props = {
+type Properties = {
/** URL the link points to */
href: string
/** Content of the link */
@@ -24,7 +24,7 @@ type Props = {
* Styled link that opens to a new window.
*/
-const StyledExternalLink = ({ href, content }: Props) => {
+const StyledExternalLink = ({ href, content }: Properties) => {
const classes = useStyles()
return (
@@ -38,4 +38,4 @@ const StyledExternalLink = ({ href, content }: Props) => {
)
}
-export default StyledExternalLink
+export { StyledExternalLink }
diff --git a/apps/genome-page/components/errors/ErrorBoundary.test.tsx b/apps/genome-page/components/errors/ErrorBoundary.test.tsx
index e3c84833f1..cd17759da8 100644
--- a/apps/genome-page/components/errors/ErrorBoundary.test.tsx
+++ b/apps/genome-page/components/errors/ErrorBoundary.test.tsx
@@ -1,8 +1,8 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import ErrorBoundary from "./ErrorBoundary"
+import { ErrorBoundary } from "./ErrorBoundary"
-const ErrComponent = () => {
+const ErrorComponent = () => {
React.useEffect(() => {
throw new Error("My error")
}, [])
@@ -15,7 +15,7 @@ describe("components/errors/ErrorBoundary", () => {
it("should render error component", () => {
render(
-
+
,
)
diff --git a/apps/genome-page/components/errors/ErrorBoundary.tsx b/apps/genome-page/components/errors/ErrorBoundary.tsx
index c1042f6ab1..784bb09ef7 100644
--- a/apps/genome-page/components/errors/ErrorBoundary.tsx
+++ b/apps/genome-page/components/errors/ErrorBoundary.tsx
@@ -21,7 +21,7 @@ const styles = (theme: Theme) => ({
},
})
-type Props = {
+type Properties = {
/** Material-UI styling */
classes: {
gridContainer: string
@@ -42,15 +42,19 @@ type State = {
* https://reactjs.org/docs/error-boundaries.html
*/
-class ErrorBoundary extends Component {
- state = { hasError: false }
+class ErrorBoundary extends Component {
+ constructor(properties: Properties) {
+ super(properties)
+ this.state = { hasError: false }
+ }
- static getDerivedStateFromError(error: Error) {
+ static getDerivedStateFromError() {
// Update state so the next render will show the fallback UI.
return { hasError: true }
}
componentDidCatch(error: Error, errorInfo: object) {
+ // eslint-disable-next-line no-console
console.error(error, errorInfo)
}
@@ -91,4 +95,5 @@ class ErrorBoundary extends Component {
}
}
-export default withStyles(styles)(ErrorBoundary)
+const StyledErrorBoundary = withStyles(styles)(ErrorBoundary)
+export { StyledErrorBoundary as ErrorBoundary }
diff --git a/apps/genome-page/components/errors/ErrorMessage.tsx b/apps/genome-page/components/errors/ErrorMessage.tsx
index 86a645ea56..0d0b2f677b 100644
--- a/apps/genome-page/components/errors/ErrorMessage.tsx
+++ b/apps/genome-page/components/errors/ErrorMessage.tsx
@@ -11,4 +11,4 @@ const ErrorMessage = () => (
)
-export default ErrorMessage
+export { ErrorMessage }
diff --git a/apps/genome-page/components/errors/GraphQLErrorPage.test.tsx b/apps/genome-page/components/errors/GraphQLErrorPage.test.tsx
index 69b296b435..f5f7b322ab 100644
--- a/apps/genome-page/components/errors/GraphQLErrorPage.test.tsx
+++ b/apps/genome-page/components/errors/GraphQLErrorPage.test.tsx
@@ -1,16 +1,18 @@
+/* eslint-disable unicorn/filename-case */
import React from "react"
import { render, screen } from "@testing-library/react"
-import GraphQLErrorPage from "./GraphQLErrorPage"
+import { ApolloError } from "@apollo/client"
+import { GraphQLErrorPage } from "./GraphQLErrorPage"
import {
mockNotFoundError,
mockOtherError,
mockUnavailableError,
} from "../features/Authentication/mockGraphQLError"
-import { ApolloError } from "@apollo/client"
const errorFormat = (error: any): ApolloError => ({
message: "Error!",
graphQLErrors: [error],
+ // eslint-disable-next-line unicorn/no-null
networkError: null,
extraInfo: undefined,
name: "",
@@ -23,15 +25,15 @@ describe("components/errors/GraphQLErrorPage", () => {
,
)
- const errorMsg = screen.getByText(/Could not find gene with ID banana/)
- expect(errorMsg).toBeInTheDocument()
+ const errorMessage = screen.getByText(/Could not find gene with ID banana/)
+ expect(errorMessage).toBeInTheDocument()
})
it("should render other error", () => {
render( )
- const errorMsg = screen.getByText(/Error/)
- expect(errorMsg).toBeInTheDocument()
+ const errorMessage = screen.getByText(/Error/)
+ expect(errorMessage).toBeInTheDocument()
expect(
screen.getByRole("img", { name: "Sad Dicty Logo" }),
).toBeInTheDocument()
@@ -42,7 +44,7 @@ describe("components/errors/GraphQLErrorPage", () => {
,
)
- const errorMsg = screen.getByText(/Sorry! There was a server error./)
- expect(errorMsg).toBeInTheDocument()
+ const errorMessage = screen.getByText(/Sorry! There was a server error./)
+ expect(errorMessage).toBeInTheDocument()
})
})
diff --git a/apps/genome-page/components/errors/GraphQLErrorPage.tsx b/apps/genome-page/components/errors/GraphQLErrorPage.tsx
index 334900bcb4..ee5a0f2ffc 100644
--- a/apps/genome-page/components/errors/GraphQLErrorPage.tsx
+++ b/apps/genome-page/components/errors/GraphQLErrorPage.tsx
@@ -1,10 +1,11 @@
+/* eslint-disable unicorn/filename-case */
import React from "react"
-import ServerError from "./ServerError"
-import NotFoundError from "./NotFoundError"
-import OtherError from "./OtherError"
import { ApolloError } from "@apollo/client"
+import { ServerError } from "./ServerError"
+import { NotFoundError } from "./NotFoundError"
+import { OtherError } from "./OtherError"
-type Props = {
+type Properties = {
/** GraphQL error object */
error: ApolloError
}
@@ -14,29 +15,29 @@ type Props = {
* Returns one of the other error components based on the error code.
*/
-const GraphQLErrorPage = ({ error }: Props) => {
- if (!error || !error.message) return null
+const GraphQLErrorPage = ({ error }: Properties) => {
+ if (!error || !error.message) return <>>
if (error.networkError) {
- console.error(error.networkError)
return
}
- let errorCode, errorMsg
+ let errorCode
+ let errorMessage
if (error.graphQLErrors && error.graphQLErrors[0].extensions) {
errorCode = error.graphQLErrors[0].extensions.code
- errorMsg = error.graphQLErrors[0].message
+ errorMessage = error.graphQLErrors[0].message
}
if (errorCode === "Unavailable") {
return
}
- if (errorCode === "NotFound" && errorMsg) {
+ if (errorCode === "NotFound" && errorMessage) {
return (
)
}
@@ -44,8 +45,4 @@ const GraphQLErrorPage = ({ error }: Props) => {
return
}
-GraphQLErrorPage.defaultProps = {
- error: {},
-}
-
-export default GraphQLErrorPage
+export { GraphQLErrorPage }
diff --git a/apps/genome-page/components/errors/NotFoundError.tsx b/apps/genome-page/components/errors/NotFoundError.tsx
index 521cad3a96..e46f8eb7fc 100644
--- a/apps/genome-page/components/errors/NotFoundError.tsx
+++ b/apps/genome-page/components/errors/NotFoundError.tsx
@@ -1,11 +1,11 @@
import React from "react"
import Grid from "@material-ui/core/Grid"
-import ErrorMessage from "./ErrorMessage"
-import useStyles from "../../styles/errorStyles"
import Image from "next/image"
+import { ErrorMessage } from "./ErrorMessage"
+import { useStyles } from "../../styles/errorStyles"
-type Props = {
- /** Error message to display*/
+type Properties = {
+ /** Error message to display */
error: string
}
@@ -13,7 +13,7 @@ type Props = {
* UI display when an item was not found.
*/
-const NotFoundError = ({ error }: Props) => {
+const NotFoundError = ({ error }: Properties) => {
const classes = useStyles()
return (
@@ -40,4 +40,4 @@ const NotFoundError = ({ error }: Props) => {
)
}
-export default NotFoundError
+export { NotFoundError }
diff --git a/apps/genome-page/components/errors/OtherError.tsx b/apps/genome-page/components/errors/OtherError.tsx
index b77cb7189b..e4b34e7e48 100644
--- a/apps/genome-page/components/errors/OtherError.tsx
+++ b/apps/genome-page/components/errors/OtherError.tsx
@@ -1,9 +1,9 @@
import React from "react"
import Grid from "@material-ui/core/Grid"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
-import ErrorMessage from "./ErrorMessage"
import Image from "next/image"
-import useStyles from "../../styles/errorStyles"
+import { ErrorMessage } from "./ErrorMessage"
+import { useStyles } from "../../styles/errorStyles"
/**
* UI display when there is a general error.
@@ -32,4 +32,4 @@ const OtherError = () => {
)
}
-export default OtherError
+export { OtherError }
diff --git a/apps/genome-page/components/errors/ServerError.tsx b/apps/genome-page/components/errors/ServerError.tsx
index c7cb176ff4..82fa361a97 100644
--- a/apps/genome-page/components/errors/ServerError.tsx
+++ b/apps/genome-page/components/errors/ServerError.tsx
@@ -1,7 +1,7 @@
import React from "react"
import Grid from "@material-ui/core/Grid"
-import ErrorMessage from "./ErrorMessage"
-import useStyles from "../../styles/errorStyles"
+import { ErrorMessage } from "./ErrorMessage"
+import { useStyles } from "../../styles/errorStyles"
/**
* UI display when there is a server error.
@@ -22,4 +22,4 @@ const ServerError = () => {
)
}
-export default ServerError
+export { ServerError }
diff --git a/apps/genome-page/components/features/Authentication/AuthLoader.test.tsx b/apps/genome-page/components/features/Authentication/AuthLoader.test.tsx
index 21e4b36454..a45a01f235 100644
--- a/apps/genome-page/components/features/Authentication/AuthLoader.test.tsx
+++ b/apps/genome-page/components/features/Authentication/AuthLoader.test.tsx
@@ -1,6 +1,6 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import AuthLoader from "./AuthLoader"
+import { AuthLoader } from "./AuthLoader"
describe("features/Authentication/AuthLoader", () => {
it("displays expected text", () => {
diff --git a/apps/genome-page/components/features/Authentication/AuthLoader.tsx b/apps/genome-page/components/features/Authentication/AuthLoader.tsx
index 9675977bc0..74af5e01c1 100644
--- a/apps/genome-page/components/features/Authentication/AuthLoader.tsx
+++ b/apps/genome-page/components/features/Authentication/AuthLoader.tsx
@@ -7,17 +7,15 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
* Loading screen during the login process
*/
-const AuthLoader = () => {
- return (
-
-
- Logging in...
-
-
-
-
+const AuthLoader = () => (
+
+
+ Logging in...
+
+
+
- )
-}
+
+)
-export default AuthLoader
+export { AuthLoader }
diff --git a/apps/genome-page/components/features/Authentication/AuthStore.test.tsx b/apps/genome-page/components/features/Authentication/AuthStore.test.tsx
index 6cb8fd8248..040b3a595b 100644
--- a/apps/genome-page/components/features/Authentication/AuthStore.test.tsx
+++ b/apps/genome-page/components/features/Authentication/AuthStore.test.tsx
@@ -1,13 +1,13 @@
-import { authReducer, ActionType } from "./AuthStore"
import { User } from "dicty-graphql-schema"
import { MockSuperuser } from "mocks/MockAuthProvider"
+import { authReducer, ActionType } from "./AuthStore"
const initialState = {
isAuthenticated: false,
token: "",
user: {} as User,
provider: "",
- error: null,
+ error: undefined,
}
const mockToken = "tiubakjdgnjka"
@@ -29,7 +29,7 @@ describe("authReducer", () => {
token: mockToken,
provider: mockProvider,
user: MockSuperuser,
- error: null,
+ error: undefined,
})
})
it("should return error object when error on login", () => {
@@ -55,7 +55,7 @@ describe("authReducer", () => {
token: "jwtxyz",
user: MockSuperuser,
provider: "google",
- error: null,
+ error: undefined,
}
expect(
authReducer(state, {
@@ -69,7 +69,7 @@ describe("authReducer", () => {
token: mockToken,
provider: mockProvider,
user: MockSuperuser,
- error: null,
+ error: undefined,
}
const newToken = "wthjiowvnfskjkdfsbnkjadb"
expect(
@@ -86,7 +86,7 @@ describe("authReducer", () => {
token: newToken,
provider: mockProvider,
user: MockSuperuser,
- error: null,
+ error: undefined,
})
})
it("should return state if not defined action type", () => {
@@ -95,7 +95,7 @@ describe("authReducer", () => {
token: mockToken,
provider: mockProvider,
user: MockSuperuser,
- error: null,
+ error: undefined,
}
expect(
authReducer(state, {
diff --git a/apps/genome-page/components/features/Authentication/AuthStore.tsx b/apps/genome-page/components/features/Authentication/AuthStore.tsx
index 2d7b20c090..7e4d10be79 100644
--- a/apps/genome-page/components/features/Authentication/AuthStore.tsx
+++ b/apps/genome-page/components/features/Authentication/AuthStore.tsx
@@ -1,4 +1,4 @@
-import React from "react"
+import React, { useMemo } from "react"
import { User } from "dicty-graphql-schema"
enum ActionType {
@@ -31,7 +31,7 @@ const initialState = {
token: "",
user: {} as User,
provider: "",
- error: null,
+ error: undefined,
}
type Action =
@@ -49,43 +49,45 @@ type Action =
payload: AuthPayload
}
-type AuthStateContextProps = {
+type AuthStateContextProperties = {
state: AuthState
dispatch: React.Dispatch
}
-const AuthContext = React.createContext({} as AuthStateContextProps)
+const AuthContext = React.createContext({} as AuthStateContextProperties)
const authReducer = (state: AuthState, action: Action) => {
switch (action.type) {
- case ActionType.LOGIN:
- const token = action.payload.token
+ case ActionType.LOGIN: {
+ const { token, user, provider } = action.payload
return {
...state,
- isAuthenticated: token !== "" ? true : false,
+ isAuthenticated: token !== "",
token,
- user: action.payload.user,
- provider: action.payload.provider,
- error: null,
+ user,
+ provider,
+ error: undefined,
}
- case ActionType.LOGIN_ERROR: {
+ }
+ case ActionType.LOGIN_ERROR:
return {
...state,
error: action.payload.error,
}
- }
+
case ActionType.LOGOUT:
return initialState
- case ActionType.UPDATE_TOKEN:
- const newToken = action.payload.token
+ case ActionType.UPDATE_TOKEN: {
+ const { token, user, provider } = action.payload
return {
...state,
isAuthenticated: true,
- token: newToken,
- user: action.payload.user,
- provider: action.payload.provider,
- error: null,
+ token,
+ user,
+ provider,
+ error: undefined,
}
+ }
default:
return state
}
@@ -96,9 +98,13 @@ const authReducer = (state: AuthState, action: Action) => {
*/
const AuthProvider = ({ children }: { children: React.ReactNode }) => {
const [state, dispatch] = React.useReducer(authReducer, initialState)
+ const authContextValue = useMemo(
+ () => ({ state, dispatch }),
+ [state, dispatch],
+ )
return (
-
+
{children}
)
diff --git a/apps/genome-page/components/features/Authentication/ErrorNotification.test.tsx b/apps/genome-page/components/features/Authentication/ErrorNotification.test.tsx
index 632dc2bec1..6c0c27f495 100644
--- a/apps/genome-page/components/features/Authentication/ErrorNotification.test.tsx
+++ b/apps/genome-page/components/features/Authentication/ErrorNotification.test.tsx
@@ -1,6 +1,6 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import ErrorNotification from "./ErrorNotification"
+import { ErrorNotification } from "./ErrorNotification"
describe("features/Authentication/ErrorNotification", () => {
render( )
diff --git a/apps/genome-page/components/features/Authentication/ErrorNotification.tsx b/apps/genome-page/components/features/Authentication/ErrorNotification.tsx
index ebe711c36f..69da0d4f1d 100644
--- a/apps/genome-page/components/features/Authentication/ErrorNotification.tsx
+++ b/apps/genome-page/components/features/Authentication/ErrorNotification.tsx
@@ -10,14 +10,14 @@ const useStyles = makeStyles((theme: Theme) => ({
},
}))
-type Props = {
+type Properties = {
/** The error message to display */
error: string
}
/** Notification snackbar-style message if user hits some type of error */
-const ErrorNotification = ({ error }: Props) => {
+const ErrorNotification = ({ error }: Properties) => {
const classes = useStyles()
return (
@@ -27,4 +27,4 @@ const ErrorNotification = ({ error }: Props) => {
)
}
-export default ErrorNotification
+export { ErrorNotification }
diff --git a/apps/genome-page/components/features/Authentication/Login.test.tsx b/apps/genome-page/components/features/Authentication/Login.test.tsx
index 3be0df922b..274a8508e0 100644
--- a/apps/genome-page/components/features/Authentication/Login.test.tsx
+++ b/apps/genome-page/components/features/Authentication/Login.test.tsx
@@ -1,11 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import Login, { createOauthURL, generateErrorDisplayMessage } from "./Login"
-import MockAuthProvider from "mocks/MockAuthProvider"
+import { MockAuthProvider } from "mocks/MockAuthProvider"
import userEvent from "@testing-library/user-event"
import { ApolloError } from "@apollo/client"
-import { GraphQLError, GraphQLFormattedError } from "graphql"
-import oauthConfig from "common/utils/oauthConfig"
+import { GraphQLFormattedError } from "graphql"
+import { Login, createOauthURL, generateErrorDisplayMessage } from "./Login"
describe("features/Authentication/Login", () => {
const globalAny = global as any
@@ -81,7 +80,7 @@ describe("features/Authentication/Login", () => {
)
})
it("should return expected URL without URL params", () => {
- const configNoParams = {
+ const configNoParameters = {
name: "Review",
url: "/forrest/macneil",
authorizationEndpoint: "https://testendpoint.com/auth",
@@ -91,7 +90,7 @@ describe("features/Authentication/Login", () => {
scopeDelimiter: " ",
popupOptions: { width: 1020, height: 633 },
}
- expect(createOauthURL(configNoParams)).toBe(
+ expect(createOauthURL(configNoParameters)).toBe(
"https://testendpoint.com/auth?client_id=testID&scope=email&redirect_uri=https://localhost:3000/review/callback",
)
})
@@ -121,9 +120,7 @@ describe("features/Authentication/Login", () => {
get [Symbol.toStringTag]() {
return "Validator"
},
- toJSON: () => {
- return { message: "" } as GraphQLFormattedError
- },
+ toJSON: () => ({ message: "" }) as GraphQLFormattedError,
},
],
clientErrors: [],
@@ -133,6 +130,7 @@ describe("features/Authentication/Login", () => {
it("should return appropriate error if user not found", () => {
const error: ApolloError = {
message: "",
+ // eslint-disable-next-line unicorn/no-null
networkError: null,
extraInfo: {},
name: "",
@@ -153,9 +151,7 @@ describe("features/Authentication/Login", () => {
get [Symbol.toStringTag]() {
return "Validator"
},
- toJSON: () => {
- return { message: "" } as GraphQLFormattedError
- },
+ toJSON: () => ({ message: "" }) as GraphQLFormattedError,
},
],
clientErrors: [],
@@ -167,6 +163,7 @@ describe("features/Authentication/Login", () => {
it("should return generic error if not network or not found error", () => {
const error: ApolloError = {
message: "",
+ // eslint-disable-next-line unicorn/no-null
networkError: null,
extraInfo: {},
name: "",
@@ -184,9 +181,7 @@ describe("features/Authentication/Login", () => {
get [Symbol.toStringTag]() {
return "Validator"
},
- toJSON: () => {
- return { message: "" } as GraphQLFormattedError
- },
+ toJSON: () => ({ message: "" }) as GraphQLFormattedError,
},
],
clientErrors: [],
diff --git a/apps/genome-page/components/features/Authentication/Login.tsx b/apps/genome-page/components/features/Authentication/Login.tsx
index 59022d345b..dad65a515c 100644
--- a/apps/genome-page/components/features/Authentication/Login.tsx
+++ b/apps/genome-page/components/features/Authentication/Login.tsx
@@ -8,9 +8,9 @@ import {
LinkedInButton,
OrcidButton,
} from "dicty-components-login"
-import OauthSignHandler from "./OauthSignHandler"
-import oauthConfig from "common/utils/oauthConfig"
-import ErrorNotification from "./ErrorNotification"
+import { oauthConfig } from "common/utils/oauthConfig"
+import { OauthSignHandler } from "./OauthSignHandler"
+import { ErrorNotification } from "./ErrorNotification"
import { useAuthStore } from "./AuthStore"
type Config = {
@@ -25,27 +25,27 @@ type Config = {
optionalUrlParams?: Array>
}
+const formatURLParameters = (parameters: Array>) => {
+ let url = ""
+ parameters.forEach((element) => {
+ url += `&${element[0]}=${element[1]}`
+ })
+ return url
+}
+
const createOauthURL = (config: Config) => {
let url = `${config.authorizationEndpoint}?client_id=${config.clientId}`
url += `&scope=${config.scopes.join(config.scopeDelimiter)}`
if (config.requiredUrlParams) {
- url += formatURLParams(config.requiredUrlParams)
+ url += formatURLParameters(config.requiredUrlParams)
}
if (config.optionalUrlParams) {
- url += formatURLParams(config.optionalUrlParams)
+ url += formatURLParameters(config.optionalUrlParams)
}
url += `&redirect_uri=${config.redirectUrl}`
return url
}
-const formatURLParams = (params: Array>) => {
- let url = ""
- params.forEach((element) => {
- url += `&${element[0]}=${element[1]}`
- })
- return url
-}
-
const openOauthWindow = (name: string) => {
const config = oauthConfig[name]
const url = createOauthURL(config)
@@ -100,19 +100,19 @@ const Login = () => {
{error && }
openOauthWindow("orcid")}
+ handleClick={() => openOauthWindow("orcid")}
text="Sign in with ORCID"
/>
openOauthWindow("google")}
+ handleClick={() => openOauthWindow("google")}
text="Sign in with Google"
/>
openOauthWindow("linkedin")}
+ handleClick={() => openOauthWindow("linkedin")}
text="Sign in with LinkedIn"
/>
@@ -123,4 +123,4 @@ const Login = () => {
}
export { createOauthURL, generateErrorDisplayMessage } // for testing purposes
-export default Login
+export { Login }
diff --git a/apps/genome-page/components/features/Authentication/Logout.test.tsx b/apps/genome-page/components/features/Authentication/Logout.test.tsx
index eeb73ad8f0..3beaac3413 100644
--- a/apps/genome-page/components/features/Authentication/Logout.test.tsx
+++ b/apps/genome-page/components/features/Authentication/Logout.test.tsx
@@ -1,11 +1,12 @@
+/* eslint-disable no-console */
import React from "react"
import { render } from "@testing-library/react"
-import Logout from "./Logout"
-import { useRouter } from "next/router"
+import { Logout } from "./Logout"
const mockHistoryPush = jest.fn()
jest.mock("next/router", () => {
+ // eslint-disable-next-line unicorn/consistent-function-scoping
const useRouter = () => ({
push: (value: string) => value,
})
@@ -21,7 +22,7 @@ describe("features/Authentication/Logout", () => {
render( )
expect(mockHistoryPush).toHaveBeenCalledWith("/gene")
- } catch (e: any) {
+ } catch {
console.log("Apollo instance")
}
})
diff --git a/apps/genome-page/components/features/Authentication/Logout.tsx b/apps/genome-page/components/features/Authentication/Logout.tsx
index d58fa35143..e060258f42 100644
--- a/apps/genome-page/components/features/Authentication/Logout.tsx
+++ b/apps/genome-page/components/features/Authentication/Logout.tsx
@@ -30,10 +30,10 @@ const Logout = () => {
type: ActionType.LOGOUT,
})
client.resetStore()
- // eslint-disable-next-line
+ // eslint-disable-next-line react-hooks/exhaustive-deps
}, [dispatch, logout, client])
return
}
-export default Logout
+export { Logout }
diff --git a/apps/genome-page/components/features/Authentication/OauthCallback.test.tsx b/apps/genome-page/components/features/Authentication/OauthCallback.test.tsx
index abe2c8c534..5f4c0c9a28 100644
--- a/apps/genome-page/components/features/Authentication/OauthCallback.test.tsx
+++ b/apps/genome-page/components/features/Authentication/OauthCallback.test.tsx
@@ -1,6 +1,8 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import OauthCallback from "./OauthCallback"
+import { OauthCallback } from "./OauthCallback"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
describe("features/Authentication/OauthCallback", () => {
@@ -20,7 +22,7 @@ describe("features/Authentication/OauthCallback", () => {
}))
render( )
expect(
- screen.getByText(/Transferring to login system ......../),
+ screen.getByText(/Transfer{2}ing to login system .{8}/),
).toBeInTheDocument()
})
})
diff --git a/apps/genome-page/components/features/Authentication/OauthCallback.tsx b/apps/genome-page/components/features/Authentication/OauthCallback.tsx
index fad64bca61..600a990e30 100644
--- a/apps/genome-page/components/features/Authentication/OauthCallback.tsx
+++ b/apps/genome-page/components/features/Authentication/OauthCallback.tsx
@@ -14,8 +14,8 @@ const OauthCallback = () => {
useEffect(() => {
window.opener?.postMessage(
{
- query: location.search,
- provider: provider,
+ query: window.location.search,
+ provider,
url: `${window.location.origin}/${process.env.NEXT_PUBLIC_BASENAME}${pathname}`,
},
window.location.toString(),
@@ -32,4 +32,4 @@ const OauthCallback = () => {
)
}
-export default OauthCallback
+export { OauthCallback }
diff --git a/apps/genome-page/components/features/Authentication/OauthSignHandler.test.tsx b/apps/genome-page/components/features/Authentication/OauthSignHandler.test.tsx
index acf584b5b8..de2cd32748 100644
--- a/apps/genome-page/components/features/Authentication/OauthSignHandler.test.tsx
+++ b/apps/genome-page/components/features/Authentication/OauthSignHandler.test.tsx
@@ -1,11 +1,16 @@
+/* eslint-disable unicorn/consistent-function-scoping */
import React from "react"
import { render, waitFor } from "@testing-library/react"
import { LoginDocument } from "dicty-graphql-schema"
-import OauthSignHandler from "./OauthSignHandler"
-import MockAuthProvider from "mocks/MockAuthProvider"
-import clientConfig from "common/utils/clientConfig"
+import { MockAuthProvider } from "mocks/MockAuthProvider"
+import { OauthSignHandler } from "./OauthSignHandler"
-const mockHistoryPush = jest.fn()
+const clientConfig = {
+ facebook: { clientId: "xxxxxxxxxxxxxxx" },
+ google: { clientId: "xxxxxxxxxxxxxxxxxx" },
+ linkedin: { clientId: "xxxxxxxxxxxxxxxxxx" },
+ orcid: { clientId: "xxxxxxxxxxxxxxxxxx" },
+}
jest.mock("next/router", () => {
const useRouter = () => ({
@@ -21,15 +26,16 @@ describe("authentication/OauthSignHandler", () => {
// set up mocks for window event listeners
const globalAny = global as any
const map = {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
message: (any: any) => {},
}
- globalAny.addEventListener = jest.fn((event, cb) => {
+ globalAny.addEventListener = jest.fn((event, callback) => {
// @ts-ignore
- map[event] = cb
+ map[event] = callback
})
- globalAny.removeEventListener = jest.fn((event, cb) => {
+ globalAny.removeEventListener = jest.fn((event, callback) => {
// @ts-ignore
- map[event] = cb
+ map[event] = callback
})
// variables used in both graphql mock and event data mock
@@ -47,7 +53,7 @@ describe("authentication/OauthSignHandler", () => {
client_id: clientConfig.google.clientId,
redirect_url: redirectUrl,
state: "state",
- code: code,
+ code,
scopes: "email",
provider: "google",
},
@@ -86,13 +92,12 @@ describe("authentication/OauthSignHandler", () => {
},
]
- const MockComponent = ({ mocks }: any) => {
- return (
-
-
-
- )
- }
+ // eslint-disable-next-line @typescript-eslint/no-shadow
+ const MockComponent = ({ mocks }: any) => (
+
+
+
+ )
beforeEach(() => {
loginMutationCalled = false
diff --git a/apps/genome-page/components/features/Authentication/OauthSignHandler.tsx b/apps/genome-page/components/features/Authentication/OauthSignHandler.tsx
index fdd5eec0c2..9beb9c39aa 100644
--- a/apps/genome-page/components/features/Authentication/OauthSignHandler.tsx
+++ b/apps/genome-page/components/features/Authentication/OauthSignHandler.tsx
@@ -1,9 +1,9 @@
import React from "react"
import { useRouter } from "next/router"
-import querystring from "querystring"
+import querystring from "node:querystring"
import { useLoginMutation, User } from "dicty-graphql-schema"
+import { oauthConfig } from "common/utils/oauthConfig"
import { useAuthStore, ActionType } from "./AuthStore"
-import oauthConfig from "common/utils/oauthConfig"
type LoginEventData = {
/** Third-party provider (orcid, google, linkedin) */
@@ -18,7 +18,7 @@ const getLoginInputVariables = (data: LoginEventData) => {
const provider = (oauthConfig as any)[data.provider]
const parsed = querystring.parse(data.query.replace("?", ""))
- const variables = {
+ return {
input: {
client_id: provider.clientId,
redirect_url: data.url,
@@ -28,8 +28,6 @@ const getLoginInputVariables = (data: LoginEventData) => {
provider: data.provider,
},
}
-
- return variables
}
/**
@@ -50,15 +48,15 @@ const OauthSignHandler = () => {
}
router.push("/load/auth")
try {
- const { data } = await login({
+ const { data: loginData } = await login({
variables: getLoginInputVariables(event.data),
})
dispatch({
type: ActionType.LOGIN,
payload: {
- token: data?.login?.token as string,
- user: data?.login?.user as User,
- provider: data?.login?.identity.provider as string,
+ token: loginData?.login?.token as string,
+ user: loginData?.login?.user as User,
+ provider: loginData?.login?.identity.provider as string,
},
})
router.push("/")
@@ -66,7 +64,7 @@ const OauthSignHandler = () => {
dispatch({
type: ActionType.LOGIN_ERROR,
payload: {
- error: error,
+ error,
},
})
router.push("/login")
@@ -78,7 +76,8 @@ const OauthSignHandler = () => {
}
}, [data, dispatch, login, router])
+ // eslint-disable-next-line unicorn/no-null
return null
}
-export default OauthSignHandler
+export { OauthSignHandler }
diff --git a/apps/genome-page/components/features/Authentication/mockGraphQLError.ts b/apps/genome-page/components/features/Authentication/mockGraphQLError.ts
index bed11cbc78..8bba006f25 100644
--- a/apps/genome-page/components/features/Authentication/mockGraphQLError.ts
+++ b/apps/genome-page/components/features/Authentication/mockGraphQLError.ts
@@ -1,3 +1,4 @@
+/* eslint-disable unicorn/filename-case */
const mockNotFoundError = {
errors: [
{
diff --git a/apps/genome-page/components/features/Blast/BlastContainer.test.tsx b/apps/genome-page/components/features/Blast/BlastContainer.test.tsx
index fba45aa7c9..9f8513e52e 100644
--- a/apps/genome-page/components/features/Blast/BlastContainer.test.tsx
+++ b/apps/genome-page/components/features/Blast/BlastContainer.test.tsx
@@ -1,8 +1,11 @@
import { render, screen } from "@testing-library/react"
-import BlastContainer from "./BlastContainer"
import { GeneQuery } from "dicty-graphql-schema"
-import mockGene from "mocks/mockGene"
+import { mockGene } from "mocks/mockGene"
+import { BlastContainer } from "./BlastContainer"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
const pathname = `gene/${gene}/phenotypes`
@@ -17,7 +20,7 @@ describe("features/blast/BlastContainer", () => {
it("should render blast page", async () => {
useRouter.mockImplementation(() => ({
query: { gene: "sadA" },
- pathname: pathname,
+ pathname,
}))
render( )
diff --git a/apps/genome-page/components/features/Blast/BlastContainer.tsx b/apps/genome-page/components/features/Blast/BlastContainer.tsx
index 56d5d6c1fe..38b061fe6a 100644
--- a/apps/genome-page/components/features/Blast/BlastContainer.tsx
+++ b/apps/genome-page/components/features/Blast/BlastContainer.tsx
@@ -1,52 +1,47 @@
import React, { useRef, MutableRefObject } from "react"
-import Layout from "components/layout/Layout"
-import { GeneQuery } from "dicty-graphql-schema"
+import { Layout } from "components/layout/Layout"
import { useRouter } from "next/router"
-import useStyles from "styles/blastContainerStyles"
+import { useStyles } from "styles/blastContainerStyles"
import { Paper, Container, Grid } from "@material-ui/core"
-import QuerySection from "./Sections/QuerySection"
-import GeneOrID from "./Sections/GeneOrID"
-import Or from "./Sections/Or"
-import BlastProgramRow from "./Sections/BlastProgramRow"
-import BlastDatabaseRow from "./Sections/BlastDatabaseRow"
-import BlastButtonsRow from "./Sections/BlastButtonsRow"
-import BlastOptionsRow from "./Sections/BlastOptionsRow"
-import { useStreamManager } from "./streamManager"
-import {} from "react"
import { Observable } from "rxjs"
+import { QuerySection } from "./Sections/QuerySection"
+import { GeneOrID } from "./Sections/GeneOrId"
+import { Or } from "./Sections/Or"
+import { BlastProgramRow } from "./Sections/BlastProgramRow"
+import { BlastDatabaseRow } from "./Sections/BlastDatabaseRow"
+import { BlastButtonsRow } from "./Sections/BlastButtonsRow"
+import { BlastOptionsRow } from "./Sections/BlastOptionsRow"
+import { useStreamManager } from "./streamManager"
-interface BlastContainerProps {
- gene: GeneQuery
-}
-const BlastContainer = ({ gene }: BlastContainerProps) => {
+const BlastContainer = () => {
const classes = useStyles()
const { query } = useRouter()
const geneId = query.id as string
- const selectSequenceEl = useRef(
+ const selectSequenceElement = useRef(
null,
) as MutableRefObject
- const selectProgramEl = useRef(
+ const selectProgramElement = useRef(
null,
) as MutableRefObject
- const selectOrganismEl = useRef(
+ const selectOrganismElement = useRef(
null,
) as MutableRefObject
- const selectDatabaseEl = useRef(
+ const selectDatabaseElement = useRef(
null,
) as MutableRefObject
const organismStream = useStreamManager({
- element: selectOrganismEl,
+ element: selectOrganismElement,
}) as Observable
const programStream = useStreamManager({
- element: selectProgramEl,
+ element: selectProgramElement,
}) as Observable
const sequenceStream = useStreamManager({
- element: selectSequenceEl,
+ element: selectSequenceElement,
}) as Observable
return (
@@ -58,17 +53,17 @@ const BlastContainer = ({ gene }: BlastContainerProps) => {
-
+
@@ -78,4 +73,4 @@ const BlastContainer = ({ gene }: BlastContainerProps) => {
)
}
-export default BlastContainer
+export { BlastContainer }
diff --git a/apps/genome-page/components/features/Blast/BlastLoader.test.tsx b/apps/genome-page/components/features/Blast/BlastLoader.test.tsx
index 348c92913a..3a4ba76099 100644
--- a/apps/genome-page/components/features/Blast/BlastLoader.test.tsx
+++ b/apps/genome-page/components/features/Blast/BlastLoader.test.tsx
@@ -1,17 +1,6 @@
import { render, screen } from "@testing-library/react"
import React from "react"
-import BlastLoader from "./BlastLoader"
-
-const gene = "sadA"
-
-jest.mock("next/router", () => {
- const useRouter = () => {
- push: (value: string) => value
- }
- return {
- useRouter,
- }
-})
+import { BlastLoader } from "./BlastLoader"
describe("features/blast/BlastLoader", () => {
it("should render loader", () => {
diff --git a/apps/genome-page/components/features/Blast/BlastLoader.tsx b/apps/genome-page/components/features/Blast/BlastLoader.tsx
index 91878b80a2..da85bb48c0 100644
--- a/apps/genome-page/components/features/Blast/BlastLoader.tsx
+++ b/apps/genome-page/components/features/Blast/BlastLoader.tsx
@@ -5,11 +5,12 @@ import Box from "@material-ui/core/Box"
* Loading screen for Blast page
*/
const BlastLoader = () => (
-
- {[...Array(10)].map((item, key) => (
+
+ {new Array(10).map((item, key) => (
+ // eslint-disable-next-line react/no-array-index-key
))}
)
-export default BlastLoader
+export { BlastLoader }
diff --git a/apps/genome-page/components/features/Blast/Sections/BlastButtonsRow.test.tsx b/apps/genome-page/components/features/Blast/Sections/BlastButtonsRow.test.tsx
index 08127b4622..acda6676dc 100644
--- a/apps/genome-page/components/features/Blast/Sections/BlastButtonsRow.test.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/BlastButtonsRow.test.tsx
@@ -1,6 +1,9 @@
import { render, screen } from "@testing-library/react"
-import BlastButtonsRow from "./BlastButtonsRow"
+import { BlastButtonsRow } from "./BlastButtonsRow"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
const pathname = `gene/${gene}/phenotypes`
@@ -15,7 +18,7 @@ describe("features/blast/Sections/BlastButtonsRow", () => {
it("should render blast buttons row", async () => {
useRouter.mockImplementation(() => ({
query: { gene: "sadA" },
- pathname: pathname,
+ pathname,
}))
render( )
diff --git a/apps/genome-page/components/features/Blast/Sections/BlastButtonsRow.tsx b/apps/genome-page/components/features/Blast/Sections/BlastButtonsRow.tsx
index 96c10b2a0b..7cbeac4fb4 100644
--- a/apps/genome-page/components/features/Blast/Sections/BlastButtonsRow.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/BlastButtonsRow.tsx
@@ -1,4 +1,4 @@
-import useStyles from "styles/geneOrIDSection"
+import { useStyles } from "styles/geneOrIdSection"
import { Card, Button, Grid } from "@material-ui/core"
const BlastButtonsRow = () => {
@@ -28,4 +28,4 @@ const BlastButtonsRow = () => {
)
}
-export default BlastButtonsRow
+export { BlastButtonsRow }
diff --git a/apps/genome-page/components/features/Blast/Sections/BlastDatabaseRow.tsx b/apps/genome-page/components/features/Blast/Sections/BlastDatabaseRow.tsx
index cab02064d0..1e170f3a1d 100644
--- a/apps/genome-page/components/features/Blast/Sections/BlastDatabaseRow.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/BlastDatabaseRow.tsx
@@ -1,11 +1,12 @@
-import react, { MutableRefObject, useState, useEffect, useRef } from "react"
-import useStyles from "styles/geneOrIDSection"
+/* eslint-disable sonarjs/no-duplicate-string */
+import { MutableRefObject, useState, useEffect } from "react"
+import { useStyles } from "styles/geneOrIdSection"
import { Typography, Card, Box, Grid } from "@material-ui/core"
import Select, { SelectChangeEvent } from "@mui/material/Select"
import { Observable } from "rxjs"
import { programToDatabaseMock } from "../mocks/relatonalMockData"
-interface BlastDatabaseRowProps {
+interface BlastDatabaseRowProperties {
organismElement: MutableRefObject
databaseElement: MutableRefObject
sequenceStream: Observable
@@ -19,7 +20,7 @@ const BlastDatabaseRow = ({
sequenceStream,
organismElement,
databaseElement,
-}: BlastDatabaseRowProps) => {
+}: BlastDatabaseRowProperties) => {
const classes = useStyles()
const [currentProgram, setCurrentProgram] = useState(
@@ -46,8 +47,8 @@ const BlastDatabaseRow = ({
)
useEffect(() => {
- if (!sequenceStream) return
- const subscription = sequenceStream.subscribe((content) => {
+ if (!sequenceStream) return () => {}
+ const subscription = sequenceStream.subscribe(() => {
setDatabaseOptions(
programToDatabaseMock["Please Select a Program"][selectOrganismValue],
)
@@ -57,7 +58,7 @@ const BlastDatabaseRow = ({
}, [selectOrganismValue, sequenceStream])
useEffect(() => {
- if (!programStream) return
+ if (!programStream) return () => {}
const subscription = programStream.subscribe((content) => {
setCurrentProgram(content)
setDatabaseOptions(programToDatabaseMock[content][selectOrganismValue])
@@ -66,7 +67,7 @@ const BlastDatabaseRow = ({
}, [programStream, selectOrganismValue])
useEffect(() => {
- if (!organismStream) return
+ if (!organismStream) return () => {}
const subscription = organismStream.subscribe((content) => {
setDatabaseOptions(programToDatabaseMock[currentProgram][content])
})
@@ -91,15 +92,15 @@ const BlastDatabaseRow = ({
native
id="organism-select-id"
defaultValue="Dictyostelium discoideum"
- onChange={(e: SelectChangeEvent) => {
- setSelectOrganismValue(e.target.value as string)
+ onChange={(event: SelectChangeEvent) => {
+ setSelectOrganismValue(event.target.value as string)
}}
inputProps={{ style: { fontSize: 12, minWidth: 400 } }}
variant="outlined"
ref={organismElement}>
- {organismOptions.map((val, index) => (
-
- {val}
+ {organismOptions.map((value) => (
+
+ {value}
))}
@@ -114,13 +115,13 @@ const BlastDatabaseRow = ({
- {databaseOptions.map((val, index) => (
-
- {val}
+ {databaseOptions.map((value) => (
+
+ {value}
))}
@@ -131,4 +132,4 @@ const BlastDatabaseRow = ({
)
}
-export default BlastDatabaseRow
+export { BlastDatabaseRow }
diff --git a/apps/genome-page/components/features/Blast/Sections/BlastOptionsRow.test.tsx b/apps/genome-page/components/features/Blast/Sections/BlastOptionsRow.test.tsx
index 3b665be233..411fe69ed4 100644
--- a/apps/genome-page/components/features/Blast/Sections/BlastOptionsRow.test.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/BlastOptionsRow.test.tsx
@@ -1,6 +1,9 @@
import { render, screen } from "@testing-library/react"
-import BlastOptionsRow from "./BlastOptionsRow"
+import { BlastOptionsRow } from "./BlastOptionsRow"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
const pathname = `gene/${gene}/phenotypes`
@@ -15,7 +18,7 @@ describe("features/blast/Sections/BlastOptionsRow", () => {
it("should render blast options row", async () => {
useRouter.mockImplementation(() => ({
query: { gene: "sadA" },
- pathname: pathname,
+ pathname,
}))
render( )
diff --git a/apps/genome-page/components/features/Blast/Sections/BlastOptionsRow.tsx b/apps/genome-page/components/features/Blast/Sections/BlastOptionsRow.tsx
index 5003b36f9e..03ab75cc20 100644
--- a/apps/genome-page/components/features/Blast/Sections/BlastOptionsRow.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/BlastOptionsRow.tsx
@@ -1,4 +1,4 @@
-import useStyles from "styles/geneOrIDSection"
+import { useStyles } from "styles/geneOrIdSection"
import {
Typography,
Card,
@@ -130,9 +130,10 @@ const BlastOptionsRow = () => {
- {
- "Because of resource limits, when BLASTing against the Chromosomal database with filtering off, the filtering is actually set to 'm D' which turns off filtering for extending hits, but leaves filtering on when building the initial words."
- }
+ Because of resource limits, when BLASTing against the Chromosomal
+ database with filtering off, the filtering is actually set to
+ 'm D' which turns off filtering for extending hits, but
+ leaves filtering on when building the initial words.
@@ -140,4 +141,4 @@ const BlastOptionsRow = () => {
)
}
-export default BlastOptionsRow
+export { BlastOptionsRow }
diff --git a/apps/genome-page/components/features/Blast/Sections/BlastProgramRow.tsx b/apps/genome-page/components/features/Blast/Sections/BlastProgramRow.tsx
index 33e5cadcc1..afdffca92e 100644
--- a/apps/genome-page/components/features/Blast/Sections/BlastProgramRow.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/BlastProgramRow.tsx
@@ -1,11 +1,11 @@
-import useStyles from "styles/geneOrIDSection"
+import { useStyles } from "styles/geneOrIdSection"
import { Typography, Card, Box, Grid } from "@material-ui/core"
import { MutableRefObject, useEffect, useState } from "react"
import { Observable } from "rxjs"
-import { programOptionsMock } from "../mocks/relatonalMockData"
import Select, { SelectChangeEvent } from "@mui/material/Select"
+import { programOptionsMock } from "../mocks/relatonalMockData"
-interface BlastProgramRow {
+interface BlastProgramRowProperties {
programElement: MutableRefObject
sequenceStream: Observable
}
@@ -13,7 +13,7 @@ interface BlastProgramRow {
const BlastProgramRow = ({
programElement,
sequenceStream,
-}: BlastProgramRow) => {
+}: BlastProgramRowProperties) => {
const classes = useStyles()
const [programOptions, setProgramOptions] = useState(
@@ -23,7 +23,7 @@ const BlastProgramRow = ({
const [option, setOption] = useState("Please Select a Program")
useEffect(() => {
- if (!sequenceStream) return
+ if (!sequenceStream) return () => {}
const subscription = sequenceStream.subscribe((content) => {
setProgramOptions(programOptionsMock[content])
})
@@ -45,16 +45,16 @@ const BlastProgramRow = ({
native
id="program-select-id"
variant="outlined"
- defaultValue={"Please Select a Program"}
+ defaultValue="Please Select a Program"
inputProps={{ style: { fontSize: 12, minWidth: 400 } }}
value={option}
- onChange={(e: SelectChangeEvent) => {
- setOption(e.target.value as string)
+ onChange={(event: SelectChangeEvent) => {
+ setOption(event.target.value as string)
}}
ref={programElement}>
- {programOptions.map((val, index) => (
-
- {val}
+ {programOptions.map((value) => (
+
+ {value}
))}
@@ -65,4 +65,4 @@ const BlastProgramRow = ({
)
}
-export default BlastProgramRow
+export { BlastProgramRow }
diff --git a/apps/genome-page/components/features/Blast/Sections/GeneOrID.tsx b/apps/genome-page/components/features/Blast/Sections/GeneOrId.tsx
similarity index 87%
rename from apps/genome-page/components/features/Blast/Sections/GeneOrID.tsx
rename to apps/genome-page/components/features/Blast/Sections/GeneOrId.tsx
index dfdd3d89c1..8d506c274f 100644
--- a/apps/genome-page/components/features/Blast/Sections/GeneOrID.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/GeneOrId.tsx
@@ -1,4 +1,4 @@
-import useStyles from "styles/geneOrIDSection"
+import { useStyles } from "styles/geneOrIdSection"
import {
Box,
Card,
@@ -11,11 +11,11 @@ import {
} from "@material-ui/core"
import { MutableRefObject, useState } from "react"
-interface GeneOrIdProps {
+interface GeneOrIdProperties {
sequenceElement: MutableRefObject
}
-const GeneOrID = ({ sequenceElement }: GeneOrIdProps) => {
+const GeneOrID = ({ sequenceElement }: GeneOrIdProperties) => {
const classes = useStyles()
const [sequenceOptions] = useState([
@@ -78,13 +78,13 @@ const GeneOrID = ({ sequenceElement }: GeneOrIdProps) => {
- {sequenceOptions.map((val, index) => (
-
- {val}
+ {sequenceOptions.map((value) => (
+
+ {value}
))}
@@ -95,4 +95,4 @@ const GeneOrID = ({ sequenceElement }: GeneOrIdProps) => {
)
}
-export default GeneOrID
+export { GeneOrID }
diff --git a/apps/genome-page/components/features/Blast/Sections/Or.test.tsx b/apps/genome-page/components/features/Blast/Sections/Or.test.tsx
index 9856a6af3d..24492bfbdf 100644
--- a/apps/genome-page/components/features/Blast/Sections/Or.test.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/Or.test.tsx
@@ -1,6 +1,9 @@
import { render, screen } from "@testing-library/react"
-import Or from "./Or"
+import { Or } from "./Or"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
const pathname = `gene/${gene}/phenotypes`
@@ -15,7 +18,7 @@ describe("features/blast/Sections/Or", () => {
it("should render or", async () => {
useRouter.mockImplementation(() => ({
query: { gene: "sadA" },
- pathname: pathname,
+ pathname,
}))
render( )
diff --git a/apps/genome-page/components/features/Blast/Sections/Or.tsx b/apps/genome-page/components/features/Blast/Sections/Or.tsx
index 6834529d40..b351a5ec5b 100644
--- a/apps/genome-page/components/features/Blast/Sections/Or.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/Or.tsx
@@ -1,24 +1,22 @@
import { Typography, Grid } from "@material-ui/core"
-const Or = () => {
- return (
- (
+
+
-
- OR
-
-
- )
-}
+ OR
+
+
+)
-export default Or
+export { Or }
diff --git a/apps/genome-page/components/features/Blast/Sections/QuerySection.test.tsx b/apps/genome-page/components/features/Blast/Sections/QuerySection.test.tsx
index b07c8b06c3..736075c834 100644
--- a/apps/genome-page/components/features/Blast/Sections/QuerySection.test.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/QuerySection.test.tsx
@@ -1,6 +1,9 @@
import { render, screen } from "@testing-library/react"
-import QuerySection from "./QuerySection"
+import { QuerySection } from "./QuerySection"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
const pathname = `gene/${gene}/phenotypes`
@@ -15,7 +18,7 @@ describe("features/blast/Sections/QuerySection", () => {
it("should render QuerySection", async () => {
useRouter.mockImplementation(() => ({
query: { gene: "sadA" },
- pathname: pathname,
+ pathname,
}))
render( )
diff --git a/apps/genome-page/components/features/Blast/Sections/QuerySection.tsx b/apps/genome-page/components/features/Blast/Sections/QuerySection.tsx
index c10dc856e8..9c9225014e 100644
--- a/apps/genome-page/components/features/Blast/Sections/QuerySection.tsx
+++ b/apps/genome-page/components/features/Blast/Sections/QuerySection.tsx
@@ -1,4 +1,4 @@
-import useStyles from "styles/querySection"
+import { useStyles } from "styles/querySection"
import { Box, Card, Typography, Grid } from "@material-ui/core"
const QuerySection = () => {
@@ -23,4 +23,4 @@ const QuerySection = () => {
)
}
-export default QuerySection
+export { QuerySection }
diff --git a/apps/genome-page/components/features/Blast/mocks/relatonalMockData.ts b/apps/genome-page/components/features/Blast/mocks/relatonalMockData.ts
index b8846ed679..a7b2d12ec0 100644
--- a/apps/genome-page/components/features/Blast/mocks/relatonalMockData.ts
+++ b/apps/genome-page/components/features/Blast/mocks/relatonalMockData.ts
@@ -1,4 +1,5 @@
-let programToDatabaseMock: { [key: string]: { [key: string]: string[] } } = {
+/* eslint-disable sonarjs/no-duplicate-string */
+const programToDatabaseMock: { [key: string]: { [key: string]: string[] } } = {
"Please Select a Program": {
"Please Select an Organism": [""],
All: [
@@ -154,7 +155,7 @@ let programToDatabaseMock: { [key: string]: { [key: string]: string[] } } = {
},
}
-let programOptionsMock: { [key: string]: string[] } = {
+const programOptionsMock: { [key: string]: string[] } = {
"Please Select a Sequence Type": [
"Please Select a Program",
"blastn - DNA query to DNA database",
diff --git a/apps/genome-page/components/features/Blast/streamManager.tsx b/apps/genome-page/components/features/Blast/streamManager.tsx
index 987e5e2936..d2ee72d530 100644
--- a/apps/genome-page/components/features/Blast/streamManager.tsx
+++ b/apps/genome-page/components/features/Blast/streamManager.tsx
@@ -4,11 +4,11 @@ import { ChangeEvent, MutableRefObject, useState, useEffect } from "react"
type InputEvent = ChangeEvent
-interface StreamManagerProps {
+interface StreamManagerProperties {
element: MutableRefObject
}
-export function useStreamManager({ element }: StreamManagerProps) {
+export function useStreamManager({ element }: StreamManagerProperties) {
const [streamer, setStreamer] = useState>()
useEffect(() => {
const obs = fromEvent(
diff --git a/apps/genome-page/components/features/CommunityAnnotations/WikiContainer.test.tsx b/apps/genome-page/components/features/CommunityAnnotations/WikiContainer.test.tsx
index 304befa792..1982086c1b 100644
--- a/apps/genome-page/components/features/CommunityAnnotations/WikiContainer.test.tsx
+++ b/apps/genome-page/components/features/CommunityAnnotations/WikiContainer.test.tsx
@@ -1,7 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import WikiContainer from "./WikiContainer"
+import { WikiContainer } from "./WikiContainer"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "ada2"
describe("CommunityAnnotations/WikiContainer", () => {
@@ -12,7 +15,7 @@ describe("CommunityAnnotations/WikiContainer", () => {
id: gene,
},
}))
- render( )
+ render( )
// Should Render Tab
expect(screen.getByText("Annotations")).toBeInTheDocument()
diff --git a/apps/genome-page/components/features/CommunityAnnotations/WikiContainer.tsx b/apps/genome-page/components/features/CommunityAnnotations/WikiContainer.tsx
index f3573fe430..8954c55bf4 100644
--- a/apps/genome-page/components/features/CommunityAnnotations/WikiContainer.tsx
+++ b/apps/genome-page/components/features/CommunityAnnotations/WikiContainer.tsx
@@ -1,18 +1,18 @@
-import Layout from "components/layout/Layout"
+import { Layout } from "components/layout/Layout"
import { useRouter } from "next/router"
import ReactMarkDown from "react-markdown"
import { Paper, Container, Typography } from "@material-ui/core"
-import useStyles from "../../../styles/dataTableStyles"
-import WikiError from "./WikiError"
+import { useStyles } from "../../../styles/dataTableStyles"
+import { WikiError } from "./WikiError"
/**
* Container component that issues a GraphQL query to get gene data for the
* GO annotations page.
*/
-interface WikiContainerProps {
+interface WikiContainerProperties {
markdown?: string
}
-const WikiContainer = ({ markdown }: WikiContainerProps) => {
+const WikiContainer = ({ markdown }: WikiContainerProperties) => {
const classes = useStyles()
const { query } = useRouter()
@@ -39,4 +39,4 @@ const WikiContainer = ({ markdown }: WikiContainerProps) => {
)
}
-export default WikiContainer
+export { WikiContainer }
diff --git a/apps/genome-page/components/features/CommunityAnnotations/WikiError.test.tsx b/apps/genome-page/components/features/CommunityAnnotations/WikiError.test.tsx
index 69964686a1..3f9897a22d 100644
--- a/apps/genome-page/components/features/CommunityAnnotations/WikiError.test.tsx
+++ b/apps/genome-page/components/features/CommunityAnnotations/WikiError.test.tsx
@@ -1,7 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import WikiError from "./WikiError"
+import { WikiError } from "./WikiError"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
describe("CommunityAnnotations/WikiError", () => {
@@ -9,7 +12,7 @@ describe("CommunityAnnotations/WikiError", () => {
useRouter.mockImplementation(() => ({
pathname: `gene/${gene}/communityannotations`,
}))
- render( )
+ render( )
// Image should load
expect(screen.getByAltText("Sad Dicty Logo")).toBeInTheDocument()
diff --git a/apps/genome-page/components/features/CommunityAnnotations/WikiError.tsx b/apps/genome-page/components/features/CommunityAnnotations/WikiError.tsx
index b809c9e697..8d6b7c5c45 100644
--- a/apps/genome-page/components/features/CommunityAnnotations/WikiError.tsx
+++ b/apps/genome-page/components/features/CommunityAnnotations/WikiError.tsx
@@ -1,10 +1,10 @@
import React from "react"
import Grid from "@material-ui/core/Grid"
-import useStyles from "../../../styles/errorStyles"
import Image from "next/image"
+import { useStyles } from "../../../styles/errorStyles"
-type Props = {
- /** Error message to display*/
+type Properties = {
+ /** Error message to display */
error: string
}
@@ -12,7 +12,7 @@ type Props = {
* UI display when an item was not found.
*/
-const WikiError = ({ error }: Props) => {
+const WikiError = ({ error }: Properties) => {
const classes = useStyles()
return (
@@ -38,4 +38,4 @@ const WikiError = ({ error }: Props) => {
)
}
-export default WikiError
+export { WikiError }
diff --git a/apps/genome-page/components/features/CommunityAnnotations/WikiLoader.test.tsx b/apps/genome-page/components/features/CommunityAnnotations/WikiLoader.test.tsx
index 5bb1114c42..d1a9061ea9 100644
--- a/apps/genome-page/components/features/CommunityAnnotations/WikiLoader.test.tsx
+++ b/apps/genome-page/components/features/CommunityAnnotations/WikiLoader.test.tsx
@@ -1,7 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import WikiLoader from "./WikiLoader"
+import { WikiLoader } from "./WikiLoader"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "ada2"
describe("CommunityAnnotations/WikiLoader", () => {
diff --git a/apps/genome-page/components/features/CommunityAnnotations/WikiLoader.tsx b/apps/genome-page/components/features/CommunityAnnotations/WikiLoader.tsx
index e5474debab..da03eb46be 100644
--- a/apps/genome-page/components/features/CommunityAnnotations/WikiLoader.tsx
+++ b/apps/genome-page/components/features/CommunityAnnotations/WikiLoader.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable react/no-array-index-key */
import AppBar from "@material-ui/core/AppBar"
import Tabs from "@material-ui/core/Tabs"
import Tab from "@material-ui/core/Tab"
@@ -42,21 +43,21 @@ const WikiLoader = () => (
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
)
-export default WikiLoader
+export { WikiLoader }
diff --git a/apps/genome-page/components/features/CommunityAnnotations/mocks/react-markdown.js b/apps/genome-page/components/features/CommunityAnnotations/mocks/react-markdown.js
deleted file mode 100644
index 85b53fdfd3..0000000000
--- a/apps/genome-page/components/features/CommunityAnnotations/mocks/react-markdown.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// https://github.com/remarkjs/react-markdown/issues/635#issuecomment-1080109162
-import React from "react"
-
-function ReactMarkdown({ children }) {
- return <>{children}>
-}
-
-export default ReactMarkdown
diff --git a/apps/genome-page/components/features/CommunityAnnotations/mocks/react-markdown.tsx b/apps/genome-page/components/features/CommunityAnnotations/mocks/react-markdown.tsx
new file mode 100644
index 0000000000..cdd60a7aac
--- /dev/null
+++ b/apps/genome-page/components/features/CommunityAnnotations/mocks/react-markdown.tsx
@@ -0,0 +1,8 @@
+/* eslint-disable unicorn/filename-case */
+// https://github.com/remarkjs/react-markdown/issues/635#issuecomment-1080109162
+import React, { type FunctionComponent } from "react"
+
+const ReactMarkdown: FunctionComponent = ({ children }) => <>{children}>
+
+// eslint-disable-next-line import/no-default-export
+export default ReactMarkdown
diff --git a/apps/genome-page/components/features/Ontology/InnerGoPanel.tsx b/apps/genome-page/components/features/Ontology/InnerGoPanel.tsx
index c3957c155b..f68b715b8c 100644
--- a/apps/genome-page/components/features/Ontology/InnerGoPanel.tsx
+++ b/apps/genome-page/components/features/Ontology/InnerGoPanel.tsx
@@ -1,11 +1,11 @@
import React from "react"
import Grid from "@material-ui/core/Grid"
-import GoaDisplayTable from "./Table/GoaDisplayTable"
-import PanelWrapper from "components/panels/PanelWrapper"
+import { PanelWrapper } from "components/panels/PanelWrapper"
import Typography from "@material-ui/core/Typography"
import { GoAnnotation } from "dicty-graphql-schema"
+import { GoaDisplayTable } from "./Table/GoaDisplayTable"
-type Props = {
+type Properties = {
/** GO Annotations */
data: GoAnnotation[]
}
@@ -14,7 +14,7 @@ type Props = {
* Displays the inside of GO Tab panels
*/
-const InnerGoPanel = ({ data }: Props) => {
+const InnerGoPanel = ({ data }: Properties) => {
// set variables that represent filtered arrays for use in each row
const molecular = data.filter((item) => item.type === "molecular_function")
const biological = data.filter((item) => item.type === "biological_process")
@@ -45,4 +45,4 @@ const InnerGoPanel = ({ data }: Props) => {
)
}
-export default InnerGoPanel
+export { InnerGoPanel }
diff --git a/apps/genome-page/components/features/Ontology/OntologyContainer.test.tsx b/apps/genome-page/components/features/Ontology/OntologyContainer.test.tsx
index d0c32ba942..494e3d99d9 100644
--- a/apps/genome-page/components/features/Ontology/OntologyContainer.test.tsx
+++ b/apps/genome-page/components/features/Ontology/OntologyContainer.test.tsx
@@ -1,8 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import OntologyContainer from "./OntologyContainer"
import { GeneQuery } from "dicty-graphql-schema"
-import mockGene from "mocks/mockGene"
+import { mockGene } from "mocks/mockGene"
+import { OntologyContainer } from "./OntologyContainer"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
describe("features/Ontology/OntologyContainer", () => {
diff --git a/apps/genome-page/components/features/Ontology/OntologyContainer.tsx b/apps/genome-page/components/features/Ontology/OntologyContainer.tsx
index 12a3a4f312..8d77d76f80 100644
--- a/apps/genome-page/components/features/Ontology/OntologyContainer.tsx
+++ b/apps/genome-page/components/features/Ontology/OntologyContainer.tsx
@@ -1,17 +1,17 @@
import Typography from "@material-ui/core/Typography"
-import OntologyTabLayout from "./OntologyTabLayout"
-import Layout from "components/layout/Layout"
+import { Layout } from "components/layout/Layout"
import { GeneQuery } from "dicty-graphql-schema"
import { useRouter } from "next/router"
+import { OntologyTabLayout } from "./OntologyTabLayout"
/**
* Container component that issues a GraphQL query to get gene data for the
* GO annotations page.
*/
-interface OntologyContainerProps {
+interface OntologyContainerProperties {
gene: GeneQuery
}
-const OntologyContainer = ({ gene }: OntologyContainerProps) => {
+const OntologyContainer = ({ gene }: OntologyContainerProperties) => {
const { query } = useRouter()
const geneId = query.id as string
@@ -27,4 +27,4 @@ const OntologyContainer = ({ gene }: OntologyContainerProps) => {
)
}
-export default OntologyContainer
+export { OntologyContainer }
diff --git a/apps/genome-page/components/features/Ontology/OntologyLoader.test.tsx b/apps/genome-page/components/features/Ontology/OntologyLoader.test.tsx
index e771d0a083..e893561987 100644
--- a/apps/genome-page/components/features/Ontology/OntologyLoader.test.tsx
+++ b/apps/genome-page/components/features/Ontology/OntologyLoader.test.tsx
@@ -1,7 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import OntologyLoader from "./OntologyLoader"
+import { OntologyLoader } from "./OntologyLoader"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "DDB_G123456"
describe("components/OntologyLoader", () => {
diff --git a/apps/genome-page/components/features/Ontology/OntologyLoader.tsx b/apps/genome-page/components/features/Ontology/OntologyLoader.tsx
index bcbbf1701a..c5508b3a1e 100644
--- a/apps/genome-page/components/features/Ontology/OntologyLoader.tsx
+++ b/apps/genome-page/components/features/Ontology/OntologyLoader.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable react/no-array-index-key */
import AppBar from "@material-ui/core/AppBar"
import Tabs from "@material-ui/core/Tabs"
import Tab from "@material-ui/core/Tab"
@@ -40,21 +41,21 @@ const OntologyLoader = () => (
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
)
-export default OntologyLoader
+export { OntologyLoader }
diff --git a/apps/genome-page/components/features/Ontology/OntologyTabLayout.tsx b/apps/genome-page/components/features/Ontology/OntologyTabLayout.tsx
index b8a8049143..e34c88c462 100644
--- a/apps/genome-page/components/features/Ontology/OntologyTabLayout.tsx
+++ b/apps/genome-page/components/features/Ontology/OntologyTabLayout.tsx
@@ -4,9 +4,9 @@ import Tabs from "@material-ui/core/Tabs"
import Tab from "@material-ui/core/Tab"
import Typography from "@material-ui/core/Typography"
import { MuiThemeProvider, createTheme } from "@material-ui/core/styles"
-import InnerGoPanel from "./InnerGoPanel"
import { GoAnnotation, GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
+import { OtherError } from "components/errors/OtherError"
+import { InnerGoPanel } from "./InnerGoPanel"
const muiTheme = createTheme({
overrides: {
@@ -28,7 +28,7 @@ const muiTheme = createTheme({
},
})
-type Props = {
+type Properties = {
/** Gene data from GraphQL query */
data: GeneQuery
}
@@ -37,11 +37,11 @@ type Props = {
* Wrapper component that generates the inner tabs and their
* corresponding layouts on the GO annotations page.
*/
-const OntologyTabLayout = ({ data }: Props) => {
+const OntologyTabLayout = ({ data }: Properties) => {
const [tabValue, setTabValue] = React.useState(0)
if (!data.gene || !data.gene.goas) return
- const goas = data.gene.goas
+ const { goas } = data.gene
// set variables for filtered arrays based on evidence code
const experimental = goas.filter(
@@ -84,4 +84,4 @@ const OntologyTabLayout = ({ data }: Props) => {
)
}
-export default OntologyTabLayout
+export { OntologyTabLayout }
diff --git a/apps/genome-page/components/features/Ontology/Table/EnhancedTableHead.tsx b/apps/genome-page/components/features/Ontology/Table/EnhancedTableHead.tsx
index 4e3db2624f..96955a6dc4 100644
--- a/apps/genome-page/components/features/Ontology/Table/EnhancedTableHead.tsx
+++ b/apps/genome-page/components/features/Ontology/Table/EnhancedTableHead.tsx
@@ -3,7 +3,7 @@ import TableHead from "@material-ui/core/TableHead"
import TableRow from "@material-ui/core/TableRow"
import TableCell from "@material-ui/core/TableCell"
import TableSortLabel from "@material-ui/core/TableSortLabel"
-import useStyles from "../../../../styles/displayTableStyles"
+import { useStyles } from "../../../../styles/displayTableStyles"
const columnData = [
{
@@ -53,4 +53,4 @@ const EnhancedTableHead = ({ onRequestSort, order, orderBy }: any) => {
)
}
-export default EnhancedTableHead
+export { EnhancedTableHead }
diff --git a/apps/genome-page/components/features/Ontology/Table/GoaDisplayTable.test.tsx b/apps/genome-page/components/features/Ontology/Table/GoaDisplayTable.test.tsx
index fdd04eabf8..d56d03e006 100644
--- a/apps/genome-page/components/features/Ontology/Table/GoaDisplayTable.test.tsx
+++ b/apps/genome-page/components/features/Ontology/Table/GoaDisplayTable.test.tsx
@@ -1,6 +1,7 @@
+/* eslint-disable sonarjs/no-duplicate-string */
import React from "react"
import { fireEvent, render, screen, within } from "@testing-library/react"
-import GoaDisplayTable from "./GoaDisplayTable"
+import { GoaDisplayTable } from "./GoaDisplayTable"
const mockData = [
{
diff --git a/apps/genome-page/components/features/Ontology/Table/GoaDisplayTable.tsx b/apps/genome-page/components/features/Ontology/Table/GoaDisplayTable.tsx
index eb28dfd076..dc7ef1c718 100644
--- a/apps/genome-page/components/features/Ontology/Table/GoaDisplayTable.tsx
+++ b/apps/genome-page/components/features/Ontology/Table/GoaDisplayTable.tsx
@@ -3,10 +3,10 @@ import { makeStyles } from "@material-ui/core/styles"
import Table from "@material-ui/core/Table"
import TableBody from "@material-ui/core/TableBody"
import Paper from "@material-ui/core/Paper"
-import EnhancedTableHead from "./EnhancedTableHead"
-import GoaDisplayTableRow from "./GoaDisplayTableRow"
-import getSorting from "./utils/getSorting"
import { GoAnnotation } from "dicty-graphql-schema"
+import { EnhancedTableHead } from "./EnhancedTableHead"
+import { GoaDisplayTableRow } from "./GoaDisplayTableRow"
+import { getSorting } from "./utils/getSorting"
const useStyles = makeStyles({
root: {
@@ -24,7 +24,7 @@ const useStyles = makeStyles({
type Order = "asc" | "desc"
-type Props = {
+type Properties = {
/** GO Annotations */
data: GoAnnotation[]
}
@@ -33,7 +33,7 @@ type Props = {
* The display table used inside each panel in the GO tabs.
*/
-const GoaDisplayTable = ({ data }: Props) => {
+const GoaDisplayTable = ({ data }: Properties) => {
const [tableOrder, setTableOrder] = React.useState("desc")
const [tableSortBy, setTableSortBy] = React.useState("date")
const classes = useStyles()
@@ -68,6 +68,7 @@ const GoaDisplayTable = ({ data }: Props) => {
{data
.sort(getSorting(tableOrder, tableSortBy))
.map((item: GoAnnotation, index: number) => (
+ // eslint-disable-next-line react/no-array-index-key -- passing index as key is necessary for sorting, for some reason. Maybe because .sort mutates the array in place?
))}
@@ -76,4 +77,4 @@ const GoaDisplayTable = ({ data }: Props) => {
)
}
-export default GoaDisplayTable
+export { GoaDisplayTable }
diff --git a/apps/genome-page/components/features/Ontology/Table/GoaDisplayTableRow.tsx b/apps/genome-page/components/features/Ontology/Table/GoaDisplayTableRow.tsx
index 93f1238cf9..62615bf98b 100644
--- a/apps/genome-page/components/features/Ontology/Table/GoaDisplayTableRow.tsx
+++ b/apps/genome-page/components/features/Ontology/Table/GoaDisplayTableRow.tsx
@@ -2,13 +2,13 @@ import React from "react"
import { makeStyles } from "@material-ui/core/styles"
import TableCell from "@material-ui/core/TableCell"
import TableRow from "@material-ui/core/TableRow"
-import WithExtensionLink from "./WithExtensionLink"
-import pubLinkGenerator from "common/utils/pubLinkGenerator"
-import dateConverter from "common/utils/dateConverter"
-import qualifierFormatter from "common/utils/qualifierFormatter"
-import sourceLinkGenerator from "common/utils/sourceLinkGenerator"
-import StyledExternalLink from "components/StyledExternalLink"
+import { pubLinkGenerator } from "common/utils/pubLinkGenerator"
+import { dateConverter } from "common/utils/dateConverter"
+import { qualifierFormatter } from "common/utils/qualifierFormatter"
+import { sourceLinkGenerator } from "common/utils/sourceLinkGenerator"
+import { StyledExternalLink } from "components/StyledExternalLink"
import { GoAnnotation, With, Extension } from "dicty-graphql-schema"
+import { WithExtensionLink } from "./WithExtensionLink"
const useStyles = makeStyles({
row: {
@@ -18,7 +18,7 @@ const useStyles = makeStyles({
},
})
-type Props = {
+type Properties = {
/** Individual GO Annotation */
item: GoAnnotation
}
@@ -27,27 +27,27 @@ type Props = {
* The display table used inside each panel in the GO tabs.
*/
-const GoaDisplayTableRow = ({ item }: Props) => {
+const GoaDisplayTableRow = ({ item: annotationItem }: Properties) => {
const classes = useStyles()
return (
- {qualifierFormatter(item.qualifier)} {item.go_term}
+ {qualifierFormatter(annotationItem.qualifier)} {annotationItem.go_term}
- {item.extensions?.map((item: Extension, index: number) => (
-
+ {annotationItem.extensions?.map((item: Extension) => (
+
{" "}
{item.relation} ( )
))}
- {item.evidence_code}
+ {annotationItem.evidence_code}
- {item.with?.map((item: With, index: number) => (
-
+ {annotationItem.with?.map((item: With) => (
+
@@ -55,19 +55,19 @@ const GoaDisplayTableRow = ({ item }: Props) => {
- {dateConverter(item.date)}
+ {dateConverter(annotationItem.date)}
)
}
-export default GoaDisplayTableRow
+export { GoaDisplayTableRow }
diff --git a/apps/genome-page/components/features/Ontology/Table/WithExtensionLink.tsx b/apps/genome-page/components/features/Ontology/Table/WithExtensionLink.tsx
index e8120285d8..dbe31b5a54 100644
--- a/apps/genome-page/components/features/Ontology/Table/WithExtensionLink.tsx
+++ b/apps/genome-page/components/features/Ontology/Table/WithExtensionLink.tsx
@@ -1,8 +1,8 @@
-import StyledExternalLink from "components/StyledExternalLink"
-import withLinkGenerator from "common/utils/withLinkGenerator"
+import { StyledExternalLink } from "components/StyledExternalLink"
+import { withLinkGenerator } from "common/utils/withLinkGenerator"
import { With, Extension } from "dicty-graphql-schema"
-type Props = {
+type Properties = {
/** Individual With or Extension item for a given annotation */
item: Extension | With
}
@@ -11,7 +11,7 @@ type Props = {
* This handles the display for With or Extension links.
*/
-const WithExtensionLink = ({ item }: Props) => {
+const WithExtensionLink = ({ item }: Properties) => {
let link = (
{
return link
}
-export default WithExtensionLink
+export { WithExtensionLink }
diff --git a/apps/genome-page/components/features/Ontology/Table/utils/getSorting.ts b/apps/genome-page/components/features/Ontology/Table/utils/getSorting.ts
index 6fdb77ab03..3ee7b45f8b 100644
--- a/apps/genome-page/components/features/Ontology/Table/utils/getSorting.ts
+++ b/apps/genome-page/components/features/Ontology/Table/utils/getSorting.ts
@@ -9,4 +9,4 @@ function getSorting(
: (a, b) => (a[orderBy] < b[orderBy] ? -1 : 1)
}
-export default getSorting
+export { getSorting }
diff --git a/apps/genome-page/components/features/Orthologs/OrthologsContainer.test.tsx b/apps/genome-page/components/features/Orthologs/OrthologsContainer.test.tsx
index 94d71efa70..a9897adcab 100644
--- a/apps/genome-page/components/features/Orthologs/OrthologsContainer.test.tsx
+++ b/apps/genome-page/components/features/Orthologs/OrthologsContainer.test.tsx
@@ -1,8 +1,11 @@
import { render, screen } from "@testing-library/react"
import { GeneQuery } from "dicty-graphql-schema"
-import mockGene from "mocks/mockGene"
-import OrthologsContainer from "./OrthologsContainer"
+import { mockGene } from "mocks/mockGene"
+import { OrthologsContainer } from "./OrthologsContainer"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
const pathname = `gene/${gene}/orthologs`
@@ -17,7 +20,7 @@ describe("features/Orthologs/OrthologsContainer", () => {
it("should render orthologs page", () => {
useRouter.mockImplementation(() => ({
query: { gene: "sadA" },
- pathname: pathname,
+ pathname,
}))
render( )
diff --git a/apps/genome-page/components/features/Orthologs/OrthologsContainer.tsx b/apps/genome-page/components/features/Orthologs/OrthologsContainer.tsx
index 73cf406f98..4fd8fc99a7 100644
--- a/apps/genome-page/components/features/Orthologs/OrthologsContainer.tsx
+++ b/apps/genome-page/components/features/Orthologs/OrthologsContainer.tsx
@@ -1,13 +1,13 @@
import Typography from "@material-ui/core/Typography"
-import Layout from "components/layout/Layout"
+import { Layout } from "components/layout/Layout"
import { GeneQuery } from "dicty-graphql-schema"
-import OrthologsDataTable from "./OrthologsDataTable"
import { useRouter } from "next/router"
+import { OrthologsDataTable } from "./OrthologsDataTable"
-interface OrthologsContainerProps {
+interface OrthologsContainerProperties {
gene: GeneQuery
}
-const OrthologsContainer = ({ gene }: OrthologsContainerProps) => {
+const OrthologsContainer = ({ gene }: OrthologsContainerProperties) => {
const { query } = useRouter()
const geneId = query.id as string
@@ -23,4 +23,4 @@ const OrthologsContainer = ({ gene }: OrthologsContainerProps) => {
)
}
-export default OrthologsContainer
+export { OrthologsContainer }
diff --git a/apps/genome-page/components/features/Orthologs/OrthologsDataTable.tsx b/apps/genome-page/components/features/Orthologs/OrthologsDataTable.tsx
index a18b98bac6..54ddafaae5 100644
--- a/apps/genome-page/components/features/Orthologs/OrthologsDataTable.tsx
+++ b/apps/genome-page/components/features/Orthologs/OrthologsDataTable.tsx
@@ -1,48 +1,47 @@
import {
- Paper,
- Table,
- TableBody,
- TableCell,
- TableContainer,
- TableHead,
- TableRow,
- } from "@material-ui/core"
- import { GeneQuery } from "dicty-graphql-schema"
- import OtherError from "components/errors/OtherError"
- import useStyles from "../../../styles/dataTableStyles"
- import RenderOrthologs from "./RenderOrthologs"
-
- interface OrthologsDataTableProps {
- data: GeneQuery
- }
-
- const OrthologsDataTable = ({ data }: OrthologsDataTableProps) => {
- const classes = useStyles()
-
- if (!data.allOrthologs) return
- const allOrthologs = data.allOrthologs
-
- return (
-
-
-
-
- Species
- ID
- UniProtKB
- Gene Product
- Source(s)
-
-
-
- {allOrthologs.orthologs?.map((ortholog, i) => (
-
- ))}
-
-
-
- )
- }
-
- export default OrthologsDataTable
-
\ No newline at end of file
+ Paper,
+ Table,
+ TableBody,
+ TableCell,
+ TableContainer,
+ TableHead,
+ TableRow,
+} from "@material-ui/core"
+import { GeneQuery } from "dicty-graphql-schema"
+import { OtherError } from "components/errors/OtherError"
+import { useStyles } from "../../../styles/dataTableStyles"
+import { RenderOrthologs } from "./RenderOrthologs"
+
+interface OrthologsDataTableProperties {
+ data: GeneQuery
+}
+
+const OrthologsDataTable = ({ data }: OrthologsDataTableProperties) => {
+ const classes = useStyles()
+
+ if (!data.allOrthologs) return
+ const { allOrthologs } = data
+
+ return (
+
+
+
+
+ Species
+ ID
+ UniProtKB
+ Gene Product
+ Source(s)
+
+
+
+ {allOrthologs.orthologs?.map((ortholog) => (
+
+ ))}
+
+
+
+ )
+}
+
+export { OrthologsDataTable }
diff --git a/apps/genome-page/components/features/Orthologs/OrthologsLoader.test.tsx b/apps/genome-page/components/features/Orthologs/OrthologsLoader.test.tsx
index 028ef1af29..64ac977424 100644
--- a/apps/genome-page/components/features/Orthologs/OrthologsLoader.test.tsx
+++ b/apps/genome-page/components/features/Orthologs/OrthologsLoader.test.tsx
@@ -1,17 +1,6 @@
import { render, screen } from "@testing-library/react"
import React from "react"
-import OrthologsLoader from './OrthologsLoader';
-
-const gene = "sadA"
-
-jest.mock("next/router", () => {
- const useRouter = () => {
- push: (value: string) => value
- }
- return {
- useRouter,
- }
-})
+import { OrthologsLoader } from "./OrthologsLoader"
describe("features/Orthologs/OrthologsLoader", () => {
it("should render loader", () => {
diff --git a/apps/genome-page/components/features/Orthologs/OrthologsLoader.tsx b/apps/genome-page/components/features/Orthologs/OrthologsLoader.tsx
index 4abf4a7b28..2603d7a8a5 100644
--- a/apps/genome-page/components/features/Orthologs/OrthologsLoader.tsx
+++ b/apps/genome-page/components/features/Orthologs/OrthologsLoader.tsx
@@ -5,11 +5,12 @@ import Box from "@material-ui/core/Box"
* Loading screen for Orthologs page
*/
const OrthologsLoader = () => (
-
- {[...Array(10)].map((item, key) => (
+
+ {new Array(10).map((item, key) => (
+ // eslint-disable-next-line react/no-array-index-key
))}
)
-export default OrthologsLoader
+export { OrthologsLoader }
diff --git a/apps/genome-page/components/features/Orthologs/OrthologsRow.tsx b/apps/genome-page/components/features/Orthologs/OrthologsRow.tsx
index 5a0699be89..9352c35440 100644
--- a/apps/genome-page/components/features/Orthologs/OrthologsRow.tsx
+++ b/apps/genome-page/components/features/Orthologs/OrthologsRow.tsx
@@ -2,42 +2,40 @@ import { TableRow, TableCell, Box } from "@material-ui/core"
import { commaSeparate } from "common/utils/strings"
import { Orthologs } from "dicty-graphql-schema"
-const PhenotypeRow = ({
+const OrthologsRow = ({
id,
species,
uniprotkb,
gene_product,
source,
-}: Orthologs) => {
- return (
-
-
- {species ? (
- <>
- {species}
- >
- ) : (
- <>>
- )}
-
-
- {id ? (
- <>
-
- {id.name}
-
- >
- ) : (
- <>>
- )}
-
-
- {uniprotkb.name}
-
- {gene_product}
- {source ? commaSeparate(source) : ""}
-
- )
-}
+}: Orthologs) => (
+
+
+ {species ? (
+ <>
+ {species}
+ >
+ ) : (
+ <>>
+ )}
+
+
+ {id ? (
+ <>
+
+ {id.name}
+
+ >
+ ) : (
+ <>>
+ )}
+
+
+ {uniprotkb.name}
+
+ {gene_product}
+ {source ? commaSeparate(source) : ""}
+
+)
-export default PhenotypeRow
+export { OrthologsRow }
diff --git a/apps/genome-page/components/features/Orthologs/RenderOrthologs.tsx b/apps/genome-page/components/features/Orthologs/RenderOrthologs.tsx
index 281869c7f5..da005cfa23 100644
--- a/apps/genome-page/components/features/Orthologs/RenderOrthologs.tsx
+++ b/apps/genome-page/components/features/Orthologs/RenderOrthologs.tsx
@@ -1,12 +1,12 @@
-import OtherError from "components/errors/OtherError"
-import OrthologsRow from "./OrthologsRow"
+import { OtherError } from "components/errors/OtherError"
import { Orthologs } from "dicty-graphql-schema"
+import { OrthologsRow } from "./OrthologsRow"
-interface RenderOrthologsProps {
+interface RenderOrthologsProperties {
ortholog: Orthologs
}
-const RenderOrthologs = ({ ortholog }: RenderOrthologsProps) => {
+const RenderOrthologs = ({ ortholog }: RenderOrthologsProperties) => {
if (!ortholog) return
return (
{
)
}
-export default RenderOrthologs
+export { RenderOrthologs }
diff --git a/apps/genome-page/components/features/Phenotypes/PhenotypeRow.tsx b/apps/genome-page/components/features/Phenotypes/PhenotypeRow.tsx
index 8652490045..de11f8e84f 100644
--- a/apps/genome-page/components/features/Phenotypes/PhenotypeRow.tsx
+++ b/apps/genome-page/components/features/Phenotypes/PhenotypeRow.tsx
@@ -7,9 +7,9 @@ import {
} from "@material-ui/core"
import { RemoveShoppingCart, ShoppingCart } from "@material-ui/icons"
import { commaSeparate, commaSeparateWithAnd } from "common/utils/strings"
-import OtherError from "components/errors/OtherError"
+import { OtherError } from "components/errors/OtherError"
-interface PhenotypeRowProps {
+interface PhenotypeRowProperties {
id: string
strain?: string
characteristics?: string[] | null | undefined
@@ -40,7 +40,7 @@ interface PhenotypeRowProps {
const renderInStock = (in_stock: boolean) => (
<>
-
+
{in_stock ? : }
>
@@ -53,8 +53,8 @@ const PhenotypeRow = ({
characteristics,
phenotype,
in_stock,
-}: PhenotypeRowProps) => {
- const publication = phenotype.publication
+}: PhenotypeRowProperties) => {
+ const { publication } = phenotype
if (!publication) return
const { authors, title, journal, pages } = publication
@@ -63,7 +63,7 @@ const PhenotypeRow = ({
return (
- {in_stock !== undefined ? renderInStock(in_stock) : <>>}
+ {in_stock === undefined ? <>> : renderInStock(in_stock)}
{strain ? (
@@ -90,4 +90,4 @@ const PhenotypeRow = ({
)
}
-export default PhenotypeRow
+export { PhenotypeRow }
diff --git a/apps/genome-page/components/features/Phenotypes/PhenotypesContainer.test.tsx b/apps/genome-page/components/features/Phenotypes/PhenotypesContainer.test.tsx
index 4237747382..50bd16c56e 100644
--- a/apps/genome-page/components/features/Phenotypes/PhenotypesContainer.test.tsx
+++ b/apps/genome-page/components/features/Phenotypes/PhenotypesContainer.test.tsx
@@ -1,8 +1,11 @@
import { render, screen } from "@testing-library/react"
-import PhenotypesContainer from "./PhenotypesContainer"
import { GeneQuery } from "dicty-graphql-schema"
-import mockGene from "mocks/mockGene"
+import { mockGene } from "mocks/mockGene"
+import { PhenotypesContainer } from "./PhenotypesContainer"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
const pathname = `gene/${gene}/phenotypes`
@@ -17,7 +20,7 @@ describe("features/Phenotypes/PhenotypesContainer", () => {
it("should render phenotypes page", async () => {
useRouter.mockImplementation(() => ({
query: { gene: "sadA" },
- pathname: pathname,
+ pathname,
}))
render( )
diff --git a/apps/genome-page/components/features/Phenotypes/PhenotypesContainer.tsx b/apps/genome-page/components/features/Phenotypes/PhenotypesContainer.tsx
index de64796b72..34b9bb9016 100644
--- a/apps/genome-page/components/features/Phenotypes/PhenotypesContainer.tsx
+++ b/apps/genome-page/components/features/Phenotypes/PhenotypesContainer.tsx
@@ -1,13 +1,13 @@
import Typography from "@material-ui/core/Typography"
-import Layout from "components/layout/Layout"
+import { Layout } from "components/layout/Layout"
import { GeneQuery } from "dicty-graphql-schema"
-import PhenotypesDataTable from "./PhenotypesDataTable"
import { useRouter } from "next/router"
+import { PhenotypesDataTable } from "./PhenotypesDataTable"
-interface PhenotypesContainerProps {
+interface PhenotypesContainerProperties {
gene: GeneQuery
}
-const PhenotypesContainer = ({ gene }: PhenotypesContainerProps) => {
+const PhenotypesContainer = ({ gene }: PhenotypesContainerProperties) => {
const { query } = useRouter()
const geneId = query.id as string
@@ -23,4 +23,4 @@ const PhenotypesContainer = ({ gene }: PhenotypesContainerProps) => {
)
}
-export default PhenotypesContainer
+export { PhenotypesContainer }
diff --git a/apps/genome-page/components/features/Phenotypes/PhenotypesDataTable.tsx b/apps/genome-page/components/features/Phenotypes/PhenotypesDataTable.tsx
index c1c31fa4a5..c9b1610ff1 100644
--- a/apps/genome-page/components/features/Phenotypes/PhenotypesDataTable.tsx
+++ b/apps/genome-page/components/features/Phenotypes/PhenotypesDataTable.tsx
@@ -9,19 +9,19 @@ import {
} from "@material-ui/core"
import ShoppingCart from "@material-ui/icons/ShoppingCart"
import { GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
-import useStyles from "../../../styles/dataTableStyles"
-import RenderPhenotypes from "./RenderPhenotypes"
+import { OtherError } from "components/errors/OtherError"
+import { useStyles } from "../../../styles/dataTableStyles"
+import { RenderPhenotypes } from "./RenderPhenotypes"
-interface PhenotypesDataTableProps {
+interface PhenotypesDataTableProperties {
data: GeneQuery
}
-const PhenotypesDataTable = ({ data }: PhenotypesDataTableProps) => {
+const PhenotypesDataTable = ({ data }: PhenotypesDataTableProperties) => {
const classes = useStyles()
if (!data.allStrains) return
- const allStrains = data.allStrains
+ const { allStrains } = data
return (
@@ -38,8 +38,8 @@ const PhenotypesDataTable = ({ data }: PhenotypesDataTableProps) => {
- {allStrains.strains?.map((strain, i) => (
-
+ {allStrains.strains?.map((strain) => (
+
))}
@@ -47,4 +47,4 @@ const PhenotypesDataTable = ({ data }: PhenotypesDataTableProps) => {
)
}
-export default PhenotypesDataTable
+export { PhenotypesDataTable }
diff --git a/apps/genome-page/components/features/Phenotypes/PhenotypesLoader.test.tsx b/apps/genome-page/components/features/Phenotypes/PhenotypesLoader.test.tsx
index 10f5aa223f..8f366e7976 100644
--- a/apps/genome-page/components/features/Phenotypes/PhenotypesLoader.test.tsx
+++ b/apps/genome-page/components/features/Phenotypes/PhenotypesLoader.test.tsx
@@ -1,17 +1,6 @@
import { render, screen } from "@testing-library/react"
import React from "react"
-import PhenotypesLoader from "./PhenotypesLoader"
-
-const gene = "sadA"
-
-jest.mock("next/router", () => {
- const useRouter = () => {
- push: (value: string) => value
- }
- return {
- useRouter,
- }
-})
+import { PhenotypesLoader } from "./PhenotypesLoader"
describe("features/Phenotypes/PhenotypesLoader", () => {
it("should render loader", () => {
diff --git a/apps/genome-page/components/features/Phenotypes/PhenotypesLoader.tsx b/apps/genome-page/components/features/Phenotypes/PhenotypesLoader.tsx
index 64e5787ba5..49d57ff3e2 100644
--- a/apps/genome-page/components/features/Phenotypes/PhenotypesLoader.tsx
+++ b/apps/genome-page/components/features/Phenotypes/PhenotypesLoader.tsx
@@ -5,11 +5,12 @@ import Box from "@material-ui/core/Box"
* Loading screen for Phenotypes page
*/
const PhenotypesLoader = () => (
-
- {[...Array(10)].map((item, key) => (
+
+ {new Array(10).map((item, key) => (
+ // eslint-disable-next-line react/no-array-index-key
))}
)
-export default PhenotypesLoader
+export { PhenotypesLoader }
diff --git a/apps/genome-page/components/features/Phenotypes/RenderPhenotypes.tsx b/apps/genome-page/components/features/Phenotypes/RenderPhenotypes.tsx
index c5091cfdef..599bab3031 100644
--- a/apps/genome-page/components/features/Phenotypes/RenderPhenotypes.tsx
+++ b/apps/genome-page/components/features/Phenotypes/RenderPhenotypes.tsx
@@ -1,6 +1,6 @@
-import PhenotypeRow from "./PhenotypeRow"
+import { PhenotypeRow } from "./PhenotypeRow"
-interface RenderPhenotypesProps {
+interface RenderPhenotypesProperties {
strain: {
__typename?: "Strain"
id: string
@@ -34,25 +34,27 @@ interface RenderPhenotypesProps {
}
}
-const RenderPhenotypes = ({ strain }: RenderPhenotypesProps) => {
- return (
- <>
- {strain.phenotypes?.map((phenotype, index) =>
- index === 0 ? (
-
- ) : (
-
- ),
- )}
- >
- )
-}
+const RenderPhenotypes = ({ strain }: RenderPhenotypesProperties) => (
+ <>
+ {strain.phenotypes?.map((phenotype, index) =>
+ index === 0 ? (
+
+ ) : (
+
+ ),
+ )}
+ >
+)
-export default RenderPhenotypes
+export { RenderPhenotypes }
diff --git a/apps/genome-page/components/features/ProteinInformation/ProteinGeneralInfo.tsx b/apps/genome-page/components/features/ProteinInformation/ProteinGeneralInfo.tsx
index 583e996a66..0790ea533a 100644
--- a/apps/genome-page/components/features/ProteinInformation/ProteinGeneralInfo.tsx
+++ b/apps/genome-page/components/features/ProteinInformation/ProteinGeneralInfo.tsx
@@ -1,23 +1,23 @@
import React from "react"
import { GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
-import LeftDisplay from "components/panels/LeftDisplay"
-import ItemDisplay from "components/panels/ItemDisplay"
-import RightDisplay from "components/panels/RightDisplay"
+import { OtherError } from "components/errors/OtherError"
+import { LeftDisplay } from "components/panels/LeftDisplay"
+import { ItemDisplay } from "components/panels/ItemDisplay"
+import { RightDisplay } from "components/panels/RightDisplay"
import { panelGenerator } from "common/utils/panelGenerator"
-type Props = {
+type Properties = {
gene: GeneQuery
}
/**
* Panel to display General Info on the Product Information page.
*/
-const ProteinGeneralInfo = ({ gene }: Props) => {
+const ProteinGeneralInfo = ({ gene }: Properties) => {
if (!gene.getProteinInformation?.protein_information) return
const gen_info = gene.getProteinInformation?.protein_information?.general_info
- let output = panelGenerator(
+ const output = panelGenerator(
[
{ id: "Gene Product", value: gen_info?.gene_product },
{ id: "dictyBase ID", value: gen_info?.dictybase_id },
@@ -35,16 +35,14 @@ const ProteinGeneralInfo = ({ gene }: Props) => {
return (
- {output?.map((item, key) => {
- return (
-
- {item.leftDisplay}
- {item.rightDisplay}
-
- )
- })}
+ {output?.map((item) => (
+
+ {item.leftDisplay}
+ {item.rightDisplay}
+
+ ))}
)
}
-export default ProteinGeneralInfo
+export { ProteinGeneralInfo }
diff --git a/apps/genome-page/components/features/ProteinInformation/ProteinInfoContainer.test.tsx b/apps/genome-page/components/features/ProteinInformation/ProteinInfoContainer.test.tsx
index 8aaacaa390..97e3715451 100644
--- a/apps/genome-page/components/features/ProteinInformation/ProteinInfoContainer.test.tsx
+++ b/apps/genome-page/components/features/ProteinInformation/ProteinInfoContainer.test.tsx
@@ -1,8 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import ProteinInfoContainer from "./ProteinInfoContainer"
import { GeneQuery } from "dicty-graphql-schema"
-import mockGene from "mocks/mockGene"
+import { mockGene } from "mocks/mockGene"
+import { ProteinInfoContainer } from "./ProteinInfoContainer"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
describe("features/ProteinInformation/ProteinInfoContainer", () => {
diff --git a/apps/genome-page/components/features/ProteinInformation/ProteinInfoContainer.tsx b/apps/genome-page/components/features/ProteinInformation/ProteinInfoContainer.tsx
index b78c3ed4de..4c730b702c 100644
--- a/apps/genome-page/components/features/ProteinInformation/ProteinInfoContainer.tsx
+++ b/apps/genome-page/components/features/ProteinInformation/ProteinInfoContainer.tsx
@@ -1,13 +1,13 @@
import Typography from "@material-ui/core/Typography"
-import Layout from "components/layout/Layout"
+import { Layout } from "components/layout/Layout"
import { GeneQuery } from "dicty-graphql-schema"
import { useRouter } from "next/router"
-import PanelWrapper from "components/panels/PanelWrapper"
-import ProteinLinks from "./ProteinLinks"
-import ProteinSequence from "./ProteinSequence"
-import ProteinGeneralInfo from "./ProteinGeneralInfo"
+import { PanelWrapper } from "components/panels/PanelWrapper"
+import { ProteinLinks } from "./ProteinLinks"
+import { ProteinSequence } from "./ProteinSequence"
+import { ProteinGeneralInfo } from "./ProteinGeneralInfo"
-interface ProteinInfoContainerProps {
+interface ProteinInfoContainerProperties {
gene: GeneQuery
}
@@ -15,7 +15,7 @@ interface ProteinInfoContainerProps {
* Container component that issues a GraphQL query to get gene data for the
* Protein Information page.
*/
-const ProteinInfoContainer = ({ gene }: ProteinInfoContainerProps) => {
+const ProteinInfoContainer = ({ gene }: ProteinInfoContainerProperties) => {
const { query } = useRouter()
const geneId = query.id as string
@@ -25,13 +25,13 @@ const ProteinInfoContainer = ({ gene }: ProteinInfoContainerProps) => {
title={`Protein Information for ${geneId}`}
description={`Protein Information for ${geneId}`}>
-
+
-
+
-
+
@@ -39,4 +39,4 @@ const ProteinInfoContainer = ({ gene }: ProteinInfoContainerProps) => {
)
}
-export default ProteinInfoContainer
+export { ProteinInfoContainer }
diff --git a/apps/genome-page/components/features/ProteinInformation/ProteinInfoLoader.test.tsx b/apps/genome-page/components/features/ProteinInformation/ProteinInfoLoader.test.tsx
index 15c0f79bb6..ecf63f6455 100644
--- a/apps/genome-page/components/features/ProteinInformation/ProteinInfoLoader.test.tsx
+++ b/apps/genome-page/components/features/ProteinInformation/ProteinInfoLoader.test.tsx
@@ -1,7 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import ProteinInfoLoader from "./ProteinInfoLoader"
+import { ProteinInfoLoader } from "./ProteinInfoLoader"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "DDB_G123456"
describe("components/ProteinInformation/ProteinInfoLoader", () => {
diff --git a/apps/genome-page/components/features/ProteinInformation/ProteinInfoLoader.tsx b/apps/genome-page/components/features/ProteinInformation/ProteinInfoLoader.tsx
index bedf385b30..efd1c5599a 100644
--- a/apps/genome-page/components/features/ProteinInformation/ProteinInfoLoader.tsx
+++ b/apps/genome-page/components/features/ProteinInformation/ProteinInfoLoader.tsx
@@ -1,4 +1,4 @@
-import { createTheme } from "@material-ui/core/styles"
+/* eslint-disable react/no-array-index-key */
import { Box, Skeleton } from "@mui/material"
/**
@@ -7,21 +7,21 @@ import { Box, Skeleton } from "@mui/material"
const ProteinInfoLoader = () => (
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
- {[...Array(5)].map((item, key) => (
+ {new Array(5).map((item, key) => (
))}
)
-export default ProteinInfoLoader
+export { ProteinInfoLoader }
diff --git a/apps/genome-page/components/features/ProteinInformation/ProteinLinks.tsx b/apps/genome-page/components/features/ProteinInformation/ProteinLinks.tsx
index db4891ae78..30d251a875 100644
--- a/apps/genome-page/components/features/ProteinInformation/ProteinLinks.tsx
+++ b/apps/genome-page/components/features/ProteinInformation/ProteinLinks.tsx
@@ -1,18 +1,18 @@
import React from "react"
import { GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
-import LeftDisplay from "components/panels/LeftDisplay"
-import ItemDisplay from "components/panels/ItemDisplay"
-import RightDisplay from "components/panels/RightDisplay"
+import { OtherError } from "components/errors/OtherError"
+import { LeftDisplay } from "components/panels/LeftDisplay"
+import { ItemDisplay } from "components/panels/ItemDisplay"
+import { RightDisplay } from "components/panels/RightDisplay"
-type Props = {
+type Properties = {
gene: GeneQuery
}
/**
* Panel to display Protein Links on the Protein Information page.
*/
-const ProteinLinks = ({ gene }: Props) => {
+const ProteinLinks = ({ gene }: Properties) => {
if (!gene.getProteinInformation?.protein_information) return
const links = gene.getProteinInformation?.protein_information.external_links
@@ -21,8 +21,8 @@ const ProteinLinks = ({ gene }: Props) => {
External Links
- {links.map((item, i) => (
-
+ {links.map((item) => (
+
{item.name}
))}
@@ -32,4 +32,4 @@ const ProteinLinks = ({ gene }: Props) => {
)
}
-export default ProteinLinks
+export { ProteinLinks }
diff --git a/apps/genome-page/components/features/ProteinInformation/ProteinSequence.tsx b/apps/genome-page/components/features/ProteinInformation/ProteinSequence.tsx
index 675cd56a8f..0008231e99 100644
--- a/apps/genome-page/components/features/ProteinInformation/ProteinSequence.tsx
+++ b/apps/genome-page/components/features/ProteinInformation/ProteinSequence.tsx
@@ -1,18 +1,18 @@
import React from "react"
import { GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
-import LeftDisplay from "components/panels/LeftDisplay"
-import ItemDisplay from "components/panels/ItemDisplay"
-import RightDisplay from "components/panels/RightDisplay"
+import { OtherError } from "components/errors/OtherError"
+import { LeftDisplay } from "components/panels/LeftDisplay"
+import { ItemDisplay } from "components/panels/ItemDisplay"
+import { RightDisplay } from "components/panels/RightDisplay"
-type Props = {
+type Properties = {
gene: GeneQuery
}
/**
* Panel to display Protein Sequence on the Protein Information page.
*/
-const ProteinSequence = ({ gene }: Props) => {
+const ProteinSequence = ({ gene }: Properties) => {
if (!gene.getProteinInformation?.protein_information) return
const sequence =
gene.getProteinInformation?.protein_information.protein_sequence
@@ -27,4 +27,4 @@ const ProteinSequence = ({ gene }: Props) => {
)
}
-export default ProteinSequence
+export { ProteinSequence }
diff --git a/apps/genome-page/components/features/References/PublicationRow.tsx b/apps/genome-page/components/features/References/PublicationRow.tsx
index b74d1bdd2e..2bf235ac71 100644
--- a/apps/genome-page/components/features/References/PublicationRow.tsx
+++ b/apps/genome-page/components/features/References/PublicationRow.tsx
@@ -1,7 +1,7 @@
import { Chip, TableCell, TableRow } from "@material-ui/core"
import { commaSeparateWithAnd } from "common/utils/strings"
-interface PublicationRowProps {
+interface PublicationRowProperties {
publication: {
__typename?: "PublicationWithGene"
id: string
@@ -23,32 +23,28 @@ interface PublicationRowProps {
}
}
-const PublicationRow = ({ publication }: PublicationRowProps) => {
- return (
-
-
-
- {commaSeparateWithAnd(publication.authors.map((a) => a.last_name))}
-
- '{publication.title}'
- {publication.journal}
-
- {publication.pages}
-
+const PublicationRow = ({ publication }: PublicationRowProperties) => (
+
+
+ {commaSeparateWithAnd(publication.authors.map((a) => a.last_name))}
+ '{publication.title}'
+ {publication.journal}
+
+ {publication.pages}
+
-
- {publication.related_genes.map((gene, i) => (
-
- ))}
-
-
- )
-}
+
+ {publication.related_genes.map((gene) => (
+
+ ))}
+
+
+)
-export default PublicationRow
+export { PublicationRow }
diff --git a/apps/genome-page/components/features/References/ReferencesContainer.test.tsx b/apps/genome-page/components/features/References/ReferencesContainer.test.tsx
index eece5752b1..fe76aec4a2 100644
--- a/apps/genome-page/components/features/References/ReferencesContainer.test.tsx
+++ b/apps/genome-page/components/features/References/ReferencesContainer.test.tsx
@@ -1,8 +1,11 @@
import { render, screen } from "@testing-library/react"
import { GeneQuery } from "dicty-graphql-schema"
-import mockGene from "mocks/mockGene"
-import ReferencesContainer from "./ReferencesContainer"
+import { mockGene } from "mocks/mockGene"
+import { ReferencesContainer } from "./ReferencesContainer"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "sadA"
const pathname = `gene/${gene}/references`
@@ -17,7 +20,7 @@ describe("features/References/ReferencesContainer", () => {
it("should render data", () => {
useRouter.mockImplementation(() => ({
query: { id: gene },
- pathname: pathname,
+ pathname,
}))
render( )
diff --git a/apps/genome-page/components/features/References/ReferencesContainer.tsx b/apps/genome-page/components/features/References/ReferencesContainer.tsx
index 54c6e7ed13..6ed823c51e 100644
--- a/apps/genome-page/components/features/References/ReferencesContainer.tsx
+++ b/apps/genome-page/components/features/References/ReferencesContainer.tsx
@@ -1,13 +1,14 @@
import Typography from "@material-ui/core/Typography"
-import Layout from "components/layout/Layout"
+import { Layout } from "components/layout/Layout"
import { GeneQuery } from "dicty-graphql-schema"
-import ReferencesDataTable from "./ReferencesDataTable"
import { useRouter } from "next/router"
-interface ReferencesContainerProps {
+import { ReferencesDataTable } from "./ReferencesDataTable"
+
+interface ReferencesContainerProperties {
gene: GeneQuery
}
-const ReferencesContainer = ({ gene }: ReferencesContainerProps) => {
+const ReferencesContainer = ({ gene }: ReferencesContainerProperties) => {
const { query } = useRouter()
const geneId = query.id as string
@@ -24,4 +25,4 @@ const ReferencesContainer = ({ gene }: ReferencesContainerProps) => {
)
}
-export default ReferencesContainer
+export { ReferencesContainer }
diff --git a/apps/genome-page/components/features/References/ReferencesDataTable.tsx b/apps/genome-page/components/features/References/ReferencesDataTable.tsx
index ea52c241f9..a946c2dc54 100644
--- a/apps/genome-page/components/features/References/ReferencesDataTable.tsx
+++ b/apps/genome-page/components/features/References/ReferencesDataTable.tsx
@@ -1,4 +1,4 @@
-import OtherError from "components/errors/OtherError"
+import { OtherError } from "components/errors/OtherError"
import { GeneQuery } from "dicty-graphql-schema"
import {
Paper,
@@ -9,18 +9,18 @@ import {
TableHead,
TableRow,
} from "@material-ui/core"
-import useStyles from "../../../styles/dataTableStyles"
-import PublicationRow from "./PublicationRow"
+import { useStyles } from "../../../styles/dataTableStyles"
+import { PublicationRow } from "./PublicationRow"
-interface Props {
+interface Properties {
data: GeneQuery
}
-const ReferencesDataTable = ({ data }: Props) => {
+const ReferencesDataTable = ({ data }: Properties) => {
const classes = useStyles()
if (!data.allPublications?.publications) return
- const publications = data.allPublications.publications
+ const { publications } = data.allPublications
return (
@@ -33,8 +33,8 @@ const ReferencesDataTable = ({ data }: Props) => {
- {publications.map((publication, i) => (
-
+ {publications.map((publication) => (
+
))}
@@ -42,4 +42,4 @@ const ReferencesDataTable = ({ data }: Props) => {
)
}
-export default ReferencesDataTable
+export { ReferencesDataTable }
diff --git a/apps/genome-page/components/features/References/ReferencesLoader.tsx b/apps/genome-page/components/features/References/ReferencesLoader.tsx
index 8b596dea89..ebd02fbe7e 100644
--- a/apps/genome-page/components/features/References/ReferencesLoader.tsx
+++ b/apps/genome-page/components/features/References/ReferencesLoader.tsx
@@ -1,13 +1,12 @@
import { Box, Skeleton } from "@mui/material"
-const ReferencesLoader = () => {
- return (
-
- {[...Array(10)].map((item, key) => (
-
- ))}
-
- )
-}
+const ReferencesLoader = () => (
+
+ {new Array(10).map((item, key) => (
+ // eslint-disable-next-line react/no-array-index-key
+
+ ))}
+
+)
-export default ReferencesLoader
+export { ReferencesLoader }
diff --git a/apps/genome-page/components/features/Summary/Panels/AssociatedSequencePanel.tsx b/apps/genome-page/components/features/Summary/Panels/AssociatedSequencePanel.tsx
index bf4e1bfba5..0507b28d93 100644
--- a/apps/genome-page/components/features/Summary/Panels/AssociatedSequencePanel.tsx
+++ b/apps/genome-page/components/features/Summary/Panels/AssociatedSequencePanel.tsx
@@ -1,12 +1,12 @@
import React from "react"
-import ItemDisplay from "components/panels/ItemDisplay"
-import LeftDisplay from "components/panels/LeftDisplay"
-import RightDisplay from "components/panels/RightDisplay"
+import { ItemDisplay } from "components/panels/ItemDisplay"
+import { LeftDisplay } from "components/panels/LeftDisplay"
+import { RightDisplay } from "components/panels/RightDisplay"
import { GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
+import { OtherError } from "components/errors/OtherError"
import { panelGenerator } from "common/utils/panelGenerator"
-type Props = {
+type Properties = {
/** Array of GO annotations for a particular gene */
data: GeneQuery
}
@@ -14,11 +14,11 @@ type Props = {
/**
* Panel to display Associated Sequence Panel on the Gene Summary page.
*/
-const AssociatedSequencePanel = ({ data }: Props) => {
+const AssociatedSequencePanel = ({ data }: Properties) => {
if (!data.getAssociatedSequnces) return
const associated_seq = data.getAssociatedSequnces
- let output = panelGenerator(
+ const output = panelGenerator(
[
{
id: "GenBank Genomic Fragment",
@@ -36,16 +36,14 @@ const AssociatedSequencePanel = ({ data }: Props) => {
return (
- {output?.map((item, key) => {
- return (
-
- {item.leftDisplay}
- {item.rightDisplay}
-
- )
- })}
+ {output?.map((item) => (
+
+ {item.leftDisplay}
+ {item.rightDisplay}
+
+ ))}
)
}
-export default AssociatedSequencePanel
+export { AssociatedSequencePanel }
diff --git a/apps/genome-page/components/features/Summary/Panels/GeneralInfoPanel.test.tsx b/apps/genome-page/components/features/Summary/Panels/GeneralInfoPanel.test.tsx
index 0ac0e6ddd9..6eb3f167a8 100644
--- a/apps/genome-page/components/features/Summary/Panels/GeneralInfoPanel.test.tsx
+++ b/apps/genome-page/components/features/Summary/Panels/GeneralInfoPanel.test.tsx
@@ -1,8 +1,8 @@
import { render, screen } from "@testing-library/react"
import { GeneQuery } from "dicty-graphql-schema"
-import mockGene from "mocks/mockGene"
-import mockGenePiaA from "mocks/piaAMocks/mockGenePiaA"
-import GeneralInfoPanel from "./GeneralInfoPanel"
+import { mockGene } from "mocks/mockGene"
+import { mockGenePiaA } from "mocks/piaAMocks/mockGenePiaA"
+import { GeneralInfoPanel } from "./GeneralInfoPanel"
describe("features/References/ReferencesContainer", () => {
beforeEach(() => jest.clearAllMocks())
diff --git a/apps/genome-page/components/features/Summary/Panels/GeneralInfoPanel.tsx b/apps/genome-page/components/features/Summary/Panels/GeneralInfoPanel.tsx
index e81b8d06ba..89a41f3a78 100644
--- a/apps/genome-page/components/features/Summary/Panels/GeneralInfoPanel.tsx
+++ b/apps/genome-page/components/features/Summary/Panels/GeneralInfoPanel.tsx
@@ -1,12 +1,12 @@
import React from "react"
import { GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
-import LeftDisplay from "components/panels/LeftDisplay"
-import ItemDisplay from "components/panels/ItemDisplay"
-import RightDisplay from "components/panels/RightDisplay"
+import { OtherError } from "components/errors/OtherError"
+import { LeftDisplay } from "components/panels/LeftDisplay"
+import { ItemDisplay } from "components/panels/ItemDisplay"
+import { RightDisplay } from "components/panels/RightDisplay"
import { panelGenerator } from "common/utils/panelGenerator"
-type Props = {
+type Properties = {
/** Array of GO annotations for a particular gene */
gene: GeneQuery
}
@@ -14,11 +14,11 @@ type Props = {
/**
* Panel to display Product Info on the Gene Summary page.
*/
-const GeneralInfoPanel = ({ gene }: Props) => {
+const GeneralInfoPanel = ({ gene }: Properties) => {
if (!gene.generalInformation?.general_info) return
const gen_info = gene.generalInformation.general_info
- let output = panelGenerator(
+ const output = panelGenerator(
[
{ id: "Gene Name", value: gene.gene?.name },
{ id: "Name Description", value: gen_info.name_description },
@@ -34,16 +34,14 @@ const GeneralInfoPanel = ({ gene }: Props) => {
return (
- {output?.map((item, key) => {
- return (
-
- {item.leftDisplay}
- {item.rightDisplay}
-
- )
- })}
+ {output?.map((item) => (
+
+ {item.leftDisplay}
+ {item.rightDisplay}
+
+ ))}
)
}
-export default GeneralInfoPanel
+export { GeneralInfoPanel }
diff --git a/apps/genome-page/components/features/Summary/Panels/GoaPanel.tsx b/apps/genome-page/components/features/Summary/Panels/GoaPanel.tsx
index dbdbac94f9..4556533805 100644
--- a/apps/genome-page/components/features/Summary/Panels/GoaPanel.tsx
+++ b/apps/genome-page/components/features/Summary/Panels/GoaPanel.tsx
@@ -1,18 +1,18 @@
-import GoaPanelContent from "./GoaPanelContent"
-import ItemDisplay from "components/panels/ItemDisplay"
-import LeftDisplay from "components/panels/LeftDisplay"
-import RightDisplay from "components/panels/RightDisplay"
+import { ItemDisplay } from "components/panels/ItemDisplay"
+import { LeftDisplay } from "components/panels/LeftDisplay"
+import { RightDisplay } from "components/panels/RightDisplay"
import { GeneQuery, GoAnnotation } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
+import { OtherError } from "components/errors/OtherError"
+import { GoaPanelContent } from "./GoaPanelContent"
type GOType = "molecular_function" | "biological_process" | "cellular_component"
-const dataFilter = (arr: Array, type: GOType) => {
+const dataFilter = (array: Array, type: GOType) => {
// get the attributes from specified type
- const attr = arr.filter((item) => item.type === type)
+ const attribute = array.filter((item) => item.type === type)
// get the five most recent EXP annotations
- const expChecker = attr
+ const expChecker = attribute
.filter(
(item) =>
item.evidence_code === "IMP" ||
@@ -26,13 +26,13 @@ const dataFilter = (arr: Array, type: GOType) => {
.slice(0, 5)
// get five most recent manual
- const manualChecker = attr
+ const manualChecker = attribute
.filter((item) => item.evidence_code !== "IEA")
.sort((a, b) => b.date.localeCompare(a.date))
.slice(0, 5)
// get five most recent electronic
- const electronicChecker = attr
+ const electronicChecker = attribute
.filter((item) => item.evidence_code === "IEA")
.sort((a, b) => b.date.localeCompare(a.date))
.slice(0, 5)
@@ -40,8 +40,8 @@ const dataFilter = (arr: Array, type: GOType) => {
// check if EXP array is empty
// if it is, return manual
// if manual is empty, return electronic
- if (!Array.isArray(expChecker) || !expChecker.length) {
- if (!Array.isArray(manualChecker) || !manualChecker.length) {
+ if (!Array.isArray(expChecker) || expChecker.length === 0) {
+ if (!Array.isArray(manualChecker) || manualChecker.length === 0) {
return electronicChecker
}
return manualChecker
@@ -49,7 +49,7 @@ const dataFilter = (arr: Array, type: GOType) => {
return expChecker
}
-type Props = {
+type Properties = {
/** Array of GO annotations for a particular gene */
data: GeneQuery
}
@@ -57,44 +57,38 @@ type Props = {
/**
* Panel to display Gene Ontology Annotations on the Gene Summary page.
*/
-const GoaPanel = ({ data }: Props) => {
+const GoaPanel = ({ data }: Properties) => {
if (!data.gene || !data.gene.goas) return
- const goas = data.gene.goas
+ const { goas } = data.gene
return (
Molecular Function
- {dataFilter(goas, "molecular_function").map(
- (item: GoAnnotation, index: number) => (
-
- ),
- )}
+ {dataFilter(goas, "molecular_function").map((item: GoAnnotation) => (
+
+ ))}
Biological Process
- {dataFilter(goas, "biological_process").map(
- (item: GoAnnotation, index: number) => (
-
- ),
- )}
+ {dataFilter(goas, "biological_process").map((item: GoAnnotation) => (
+
+ ))}
Cellular Component
- {dataFilter(goas, "cellular_component").map(
- (item: GoAnnotation, index: number) => (
-
- ),
- )}
+ {dataFilter(goas, "cellular_component").map((item: GoAnnotation) => (
+
+ ))}
)
}
-export default GoaPanel
+export { GoaPanel }
diff --git a/apps/genome-page/components/features/Summary/Panels/GoaPanelContent.tsx b/apps/genome-page/components/features/Summary/Panels/GoaPanelContent.tsx
index 42a2dd3841..85fd596fcb 100644
--- a/apps/genome-page/components/features/Summary/Panels/GoaPanelContent.tsx
+++ b/apps/genome-page/components/features/Summary/Panels/GoaPanelContent.tsx
@@ -1,9 +1,9 @@
import React from "react"
-import withDataFilter from "../utils/withDataFilter"
import { GoAnnotation, Extension, With } from "dicty-graphql-schema"
-import WithExtensionLink from "components/features/Ontology/Table/WithExtensionLink"
+import { WithExtensionLink } from "components/features/Ontology/Table/WithExtensionLink"
+import { withDataFilter } from "../utils/withDataFilter"
-type Props = {
+type Properties = {
/** Individual GO Annotation */
data: GoAnnotation
}
@@ -12,12 +12,13 @@ type Props = {
* The content that goes in the right side of the GOA panel on the summary page.
*/
-const GoaPanelContent = ({ data }: Props) => {
- let withData, extensionsData
+const GoaPanelContent = ({ data }: Properties) => {
+ let withData
+ let extensionsData
if (data.with !== null && data.with !== undefined) {
- withData = withDataFilter(data.with).map((xref: With, index: number) => (
-
+ withData = withDataFilter(data.with).map((xref: With) => (
+
{" "}
with
@@ -25,24 +26,22 @@ const GoaPanelContent = ({ data }: Props) => {
}
if (data.extensions !== null && data.extensions !== undefined) {
- extensionsData = data.extensions
- .slice(0, 2)
- .map((ext: Extension, index: number) => (
-
- {" "}
- {ext.relation} {" "}
-
- ))
+ extensionsData = data.extensions.slice(0, 2).map((extension: Extension) => (
+
+ {" "}
+ {extension.relation} {" "}
+
+ ))
}
return (
-
+ <>
{data.go_term}
{withData}
{extensionsData} ({data.evidence_code})
-
+ >
)
}
-export default GoaPanelContent
+export { GoaPanelContent }
diff --git a/apps/genome-page/components/features/Summary/Panels/LinksPanel.tsx b/apps/genome-page/components/features/Summary/Panels/LinksPanel.tsx
index 86218d3093..f610797a57 100644
--- a/apps/genome-page/components/features/Summary/Panels/LinksPanel.tsx
+++ b/apps/genome-page/components/features/Summary/Panels/LinksPanel.tsx
@@ -1,12 +1,12 @@
import React from "react"
-import ItemDisplay from "components/panels/ItemDisplay"
-import LeftDisplay from "components/panels/LeftDisplay"
-import RightDisplay from "components/panels/RightDisplay"
+import { ItemDisplay } from "components/panels/ItemDisplay"
+import { LeftDisplay } from "components/panels/LeftDisplay"
+import { RightDisplay } from "components/panels/RightDisplay"
import { GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
+import { OtherError } from "components/errors/OtherError"
import { panelGenerator } from "common/utils/panelGenerator"
-type Props = {
+type Properties = {
/** Array of GO annotations for a particular gene */
data: GeneQuery
}
@@ -14,11 +14,11 @@ type Props = {
/**
* Panel to display Links Panel on the Gene Summary page.
*/
-const LinkPanel = ({ data }: Props) => {
+const LinkPanel = ({ data }: Properties) => {
if (!data.getLinks?.links) return
- const links = data.getLinks.links
+ const { links } = data.getLinks
- let output = panelGenerator(
+ const output = panelGenerator(
[
{ id: "Expression", value: links.expression },
{ id: "dictyBase Colleagues", value: links.colleagues },
@@ -30,16 +30,14 @@ const LinkPanel = ({ data }: Props) => {
return (
- {output?.map((item, key) => {
- return (
-
- {item.leftDisplay}
- {item.rightDisplay}
-
- )
- })}
+ {output?.map((item) => (
+
+ {item.leftDisplay}
+ {item.rightDisplay}
+
+ ))}
)
}
-export default LinkPanel
+export { LinkPanel }
diff --git a/apps/genome-page/components/features/Summary/Panels/ProductInfoPanel.tsx b/apps/genome-page/components/features/Summary/Panels/ProductInfoPanel.tsx
index abce5c2490..ad1a668fd3 100644
--- a/apps/genome-page/components/features/Summary/Panels/ProductInfoPanel.tsx
+++ b/apps/genome-page/components/features/Summary/Panels/ProductInfoPanel.tsx
@@ -1,11 +1,11 @@
import { GeneQuery } from "dicty-graphql-schema"
-import OtherError from "components/errors/OtherError"
-import LeftDisplay from "components/panels/LeftDisplay"
-import ItemDisplay from "components/panels/ItemDisplay"
-import RightDisplay from "components/panels/RightDisplay"
+import { OtherError } from "components/errors/OtherError"
+import { LeftDisplay } from "components/panels/LeftDisplay"
+import { ItemDisplay } from "components/panels/ItemDisplay"
+import { RightDisplay } from "components/panels/RightDisplay"
import { panelGenerator } from "common/utils/panelGenerator"
-type Props = {
+type Properties = {
/** Array of GO annotations for a particular gene */
gene: GeneQuery
}
@@ -13,11 +13,11 @@ type Props = {
/**
* Panel to display Product Info on the Gene Summary page.
*/
-const ProductInfoPanel = ({ gene }: Props) => {
+const ProductInfoPanel = ({ gene }: Properties) => {
if (!gene.listGeneProductInfo?.product_info) return
const productInfo = gene.listGeneProductInfo.product_info[0]
- let output = panelGenerator(
+ const output = panelGenerator(
[
{ id: "Protein Coding Gene", value: productInfo.protein_coding_gene },
{ id: "Protein Length", value: productInfo.protein_length },
@@ -31,17 +31,14 @@ const ProductInfoPanel = ({ gene }: Props) => {
return (
- {output?.map((item, key) => {
- return (
-
- {item.leftDisplay}
- {item.rightDisplay}
-
- )
- })}
+ {output?.map((item) => (
+
+ {item.leftDisplay}
+ {item.rightDisplay}
+
+ ))}
)
}
-export default ProductInfoPanel
-
+export { ProductInfoPanel }
diff --git a/apps/genome-page/components/features/Summary/Panels/ReferencesPanel.tsx b/apps/genome-page/components/features/Summary/Panels/ReferencesPanel.tsx
index b37d93a84b..6a57ca187e 100644
--- a/apps/genome-page/components/features/Summary/Panels/ReferencesPanel.tsx
+++ b/apps/genome-page/components/features/Summary/Panels/ReferencesPanel.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable jsx-a11y/anchor-is-valid */
import { GeneQuery } from "dicty-graphql-schema"
import {
Paper,
@@ -7,12 +8,12 @@ import {
TableContainer,
TableRow,
} from "@material-ui/core"
-import useStyles from "../../../../styles/dataTableStyles"
-import OtherError from "components/errors/OtherError"
+import { OtherError } from "components/errors/OtherError"
import { commaSeparateWithAnd } from "common/utils/strings"
import Image from "next/image"
+import { useStyles } from "../../../../styles/dataTableStyles"
-type Props = {
+type Properties = {
/** Array of GO annotations for a particular gene */
gene: GeneQuery
}
@@ -20,18 +21,18 @@ type Props = {
/**
* Panel to display Gene Ontology Annotations on the Gene Summary page.
*/
-const ReferencesPanel = ({ gene }: Props) => {
+const ReferencesPanel = ({ gene }: Properties) => {
const classes = useStyles()
if (!gene.allPublications?.publications) return
- const publications = gene.allPublications.publications
+ const { publications } = gene.allPublications
return (
- {publications.map((publication, i) => (
-
+ {publications.map((publication) => (
+
{commaSeparateWithAnd(
@@ -82,4 +83,4 @@ const ReferencesPanel = ({ gene }: Props) => {
)
}
-export default ReferencesPanel
+export { ReferencesPanel }
diff --git a/apps/genome-page/components/features/Summary/SummaryContainer.test.tsx b/apps/genome-page/components/features/Summary/SummaryContainer.test.tsx
index e01f3c31e8..22f017669c 100644
--- a/apps/genome-page/components/features/Summary/SummaryContainer.test.tsx
+++ b/apps/genome-page/components/features/Summary/SummaryContainer.test.tsx
@@ -1,8 +1,9 @@
import { render, screen } from "@testing-library/react"
-import SummaryContainer from "./SummaryContainer"
import { GeneQuery } from "dicty-graphql-schema"
-import mockGene from "mocks/mockGene"
+import { mockGene } from "mocks/mockGene"
+import { SummaryContainer } from "./SummaryContainer"
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
describe("features/Summary/SummaryContainer", () => {
diff --git a/apps/genome-page/components/features/Summary/SummaryContainer.tsx b/apps/genome-page/components/features/Summary/SummaryContainer.tsx
index 1508e9ad45..b4ffa03075 100644
--- a/apps/genome-page/components/features/Summary/SummaryContainer.tsx
+++ b/apps/genome-page/components/features/Summary/SummaryContainer.tsx
@@ -1,6 +1,6 @@
import Typography from "@material-ui/core/Typography"
-import PanelWrapper from "components/panels/PanelWrapper"
-import Layout from "components/layout/Layout"
+import { PanelWrapper } from "components/panels/PanelWrapper"
+import { Layout } from "components/layout/Layout"
import { GeneQuery } from "dicty-graphql-schema"
import { useRouter } from "next/router"
import {
@@ -8,7 +8,7 @@ import {
createRouteFromString,
} from "../../../common/utils/containerGenerator"
-interface SummaryContainerProps {
+interface SummaryContainerProperties {
gene: GeneQuery
}
@@ -21,7 +21,7 @@ interface ChildContent {
child: JSX.Element | undefined
}
-const SummaryContainer = ({ gene }: SummaryContainerProps) => {
+const SummaryContainer = ({ gene }: SummaryContainerProperties) => {
const { query } = useRouter()
const geneId = query.id as string
@@ -43,19 +43,17 @@ const SummaryContainer = ({ gene }: SummaryContainerProps) => {
],
gene,
) as ChildContent[]
- ).map((item, key) => {
- return (
-
- {item!.child}
-
- )
- })}
+ ).map((item) => (
+
+ {item!.child}
+
+ ))}
)
}
-export default SummaryContainer
+export { SummaryContainer }
diff --git a/apps/genome-page/components/features/Summary/SummaryLoader.test.tsx b/apps/genome-page/components/features/Summary/SummaryLoader.test.tsx
index e6a07056c0..8b67af72e5 100644
--- a/apps/genome-page/components/features/Summary/SummaryLoader.test.tsx
+++ b/apps/genome-page/components/features/Summary/SummaryLoader.test.tsx
@@ -1,7 +1,10 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import SummaryLoader from "./SummaryLoader"
+import { SummaryLoader } from "./SummaryLoader"
+
+// eslint-disable-next-line import/no-commonjs, unicorn/prefer-module -- ESM not supported by default as of Jest 29
const useRouter = jest.spyOn(require("next/router"), "useRouter")
+
const gene = "DDB_G123456"
describe("components/SummaryLoader", () => {
diff --git a/apps/genome-page/components/features/Summary/SummaryLoader.tsx b/apps/genome-page/components/features/Summary/SummaryLoader.tsx
index c6d47c704b..8ed16c059d 100644
--- a/apps/genome-page/components/features/Summary/SummaryLoader.tsx
+++ b/apps/genome-page/components/features/Summary/SummaryLoader.tsx
@@ -4,11 +4,12 @@ import { Box, Skeleton } from "@mui/material"
* Loading screen for Summary page
*/
const SummaryLoader = () => (
-
- {[...Array(10)].map((item, key) => (
+
+ {new Array(10).map((item, key) => (
+ // eslint-disable-next-line react/no-array-index-key
))}
)
-export default SummaryLoader
+export { SummaryLoader }
diff --git a/apps/genome-page/components/features/Summary/utils/withDataFilter.test.ts b/apps/genome-page/components/features/Summary/utils/withDataFilter.test.ts
index 9fb00bcd06..65cccd8580 100644
--- a/apps/genome-page/components/features/Summary/utils/withDataFilter.test.ts
+++ b/apps/genome-page/components/features/Summary/utils/withDataFilter.test.ts
@@ -1,29 +1,29 @@
-import withDataFilter, { emptyArray } from "./withDataFilter"
+import { withDataFilter, emptyArray } from "./withDataFilter"
-const testArr = (db: string) => [
+const testArray = (database: string) => [
{
id: "123456",
- db: db,
+ db: database,
name: "test1",
},
{
id: "987654",
- db: db,
+ db: database,
name: "test2",
},
{
id: "999999",
- db: db,
+ db: database,
name: "test3",
},
]
-const dictyBase = testArr("dictyBase")
-const UniProtKB = testArr("UniProtKB")
-const MGI = testArr("MGI")
-const RGD = testArr("RGD")
-const SGD = testArr("SGD")
-const PomBase = testArr("PomBase")
+const dictyBase = testArray("dictyBase")
+const UniProtKB = testArray("UniProtKB")
+const MGI = testArray("MGI")
+const RGD = testArray("RGD")
+const SGD = testArray("SGD")
+const PomBase = testArray("PomBase")
describe("features/Summary/utils/withDataFilter", () => {
describe("emptyArray function", () => {
diff --git a/apps/genome-page/components/features/Summary/utils/withDataFilter.ts b/apps/genome-page/components/features/Summary/utils/withDataFilter.ts
index fdc66fae14..10cabac178 100644
--- a/apps/genome-page/components/features/Summary/utils/withDataFilter.ts
+++ b/apps/genome-page/components/features/Summary/utils/withDataFilter.ts
@@ -1,41 +1,41 @@
import { With } from "dicty-graphql-schema"
-const emptyArray = (arr: Array) => !Array.isArray(arr) || !arr.length
+const emptyArray = (array: Array) =>
+ !Array.isArray(array) || array.length === 0
// function to filter the With data
-const withDataFilter = (arr: Array) => {
- let finalArr = arr
+const withDataFilter = (array: Array) => {
+ let finalArray = array
// filter by db type
- const dictyBase = arr.filter((item) => item.db === "dictyBase").slice(0, 2)
- const uniProtKB = arr.filter((item) => item.db === "UniProtKB").slice(0, 2)
- const MGI = arr.filter((item) => item.db === "MGI").slice(0, 2)
- const RGD = arr.filter((item) => item.db === "RGD").slice(0, 2)
- const SGD = arr.filter((item) => item.db === "SGD").slice(0, 2)
- const PomBase = arr.filter((item) => item.db === "PomBase").slice(0, 2)
+ const dictyBase = array.filter((item) => item.db === "dictyBase").slice(0, 2)
+ const uniProtKB = array.filter((item) => item.db === "UniProtKB").slice(0, 2)
+ const MGI = array.filter((item) => item.db === "MGI").slice(0, 2)
+ const RGD = array.filter((item) => item.db === "RGD").slice(0, 2)
+ const SGD = array.filter((item) => item.db === "SGD").slice(0, 2)
+ const PomBase = array.filter((item) => item.db === "PomBase").slice(0, 2)
// order of preference to display With data
// dictyBase => UniProt => MGI => RGD => SGD => PomBase
if (!emptyArray(dictyBase)) {
- finalArr = dictyBase
+ finalArray = dictyBase
}
if (!emptyArray(uniProtKB)) {
- finalArr = uniProtKB
+ finalArray = uniProtKB
}
if (!emptyArray(MGI)) {
- finalArr = MGI
+ finalArray = MGI
}
if (!emptyArray(RGD)) {
- finalArr = RGD
+ finalArray = RGD
}
if (!emptyArray(SGD)) {
- finalArr = SGD
+ finalArray = SGD
}
if (!emptyArray(PomBase)) {
- finalArr = PomBase
+ finalArray = PomBase
}
- return finalArr
+ return finalArray
}
-export { emptyArray }
-export default withDataFilter
+export { emptyArray, withDataFilter }
diff --git a/apps/genome-page/components/layout/App.tsx b/apps/genome-page/components/layout/App.tsx
index e15d9c66b3..af22058b39 100644
--- a/apps/genome-page/components/layout/App.tsx
+++ b/apps/genome-page/components/layout/App.tsx
@@ -10,7 +10,7 @@ import {
GetRefreshTokenQuery,
User,
} from "dicty-graphql-schema"
-import ErrorBoundary from "components/errors/ErrorBoundary"
+import { ErrorBoundary } from "components/errors/ErrorBoundary"
import {
useAuthStore,
ActionType,
@@ -64,7 +64,7 @@ type Action = {
}
const updateToken = (
- dispatch: (arg0: Action) => void,
+ dispatch: (argument0: Action) => void,
data: GetRefreshTokenQuery["getRefreshToken"],
) =>
dispatch({
@@ -78,12 +78,12 @@ const updateToken = (
const getTokenIntervalDelayInMS = (token: string) => {
if (token === "") {
- return
+ return 60
}
const decodedToken = jwtDecode(token) as any
const currentTime = new Date(Date.now())
const jwtTime = new Date(decodedToken.exp * 1000)
- const timeDiffInMins = (+jwtTime - +currentTime) / 60000
+ const timeDiffInMins = (+jwtTime - +currentTime) / 60_000
// all this to say we want the delay to be two minutes before the JWT expires
return (timeDiffInMins - 2) * 60 * 1000
}
@@ -102,7 +102,7 @@ const App = ({ children }: { children: React.ReactNode }) => {
const footer = useFetch(footerURL, footerLinks)
const classes = useStyles()
const { loading, refetch, data } = useGetRefreshTokenQuery({
- variables: { token: token },
+ variables: { token },
errorPolicy: "ignore",
fetchPolicy: "cache-and-network",
nextFetchPolicy: "cache-and-network",
@@ -122,12 +122,13 @@ const App = ({ children }: { children: React.ReactNode }) => {
const fetchRefreshToken = React.useCallback(async () => {
try {
- const res = await refetch({ token: token })
- if (res.data.getRefreshToken) {
- const { data } = res
- updateToken(dispatch, data.getRefreshToken)
+ const response = await refetch({ token })
+ if (response.data.getRefreshToken) {
+ const { data: refetchData } = response
+ updateToken(dispatch, refetchData.getRefreshToken)
}
} catch (error) {
+ // eslint-disable-next-line no-console
console.error(error)
}
}, [dispatch, refetch, token])
@@ -154,4 +155,4 @@ const App = ({ children }: { children: React.ReactNode }) => {
)
}
-export default App
+export { App }
diff --git a/apps/genome-page/components/layout/AppProviders.tsx b/apps/genome-page/components/layout/AppProviders.tsx
index f32adf78ec..3bf5ddee51 100644
--- a/apps/genome-page/components/layout/AppProviders.tsx
+++ b/apps/genome-page/components/layout/AppProviders.tsx
@@ -1,7 +1,7 @@
import React from "react"
import { ApolloProvider } from "@apollo/client"
import { MuiThemeProvider, createTheme } from "@material-ui/core/styles"
-import useCreateApolloClient from "common/hooks/useCreateApolloClient"
+import { useCreateApolloClient } from "common/hooks/useCreateApolloClient"
import CircularProgress from "@material-ui/core/CircularProgress"
const muiTheme = createTheme({
@@ -89,4 +89,4 @@ const AppProviders = ({ children }: { children: React.ReactNode }) => {
)
}
-export default AppProviders
+export { AppProviders }
diff --git a/apps/genome-page/components/layout/Layout.tsx b/apps/genome-page/components/layout/Layout.tsx
index 0b645cf8ad..c1d30fdaec 100644
--- a/apps/genome-page/components/layout/Layout.tsx
+++ b/apps/genome-page/components/layout/Layout.tsx
@@ -7,7 +7,7 @@ import { Typography, Grid, AppBar, Box } from "@mui/material"
import Head from "next/head"
const getTabValue = (pathname: string) => {
- const subroute = pathname.split("/").splice(-1).join()
+ const subroute = pathname.split("/").splice(-1).join(",")
switch (subroute) {
case "blast":
@@ -29,14 +29,14 @@ const getTabValue = (pathname: string) => {
}
}
-type Props = {
+type Properties = {
children: React.ReactNode
gene: string
title: string
description: string
}
-const Layout = ({ children, gene, title, description }: Props) => {
+const Layout = ({ children, gene, title, description }: Properties) => {
const router = useRouter()
const [tabValue, setTabValue] = React.useState(getTabValue(router.pathname))
@@ -91,4 +91,4 @@ const Layout = ({ children, gene, title, description }: Props) => {
}
export { getTabValue }
-export default Layout
+export { Layout }
diff --git a/apps/genome-page/components/panels/GenomicCoordsTable.test.tsx b/apps/genome-page/components/panels/GenomicCoordsTable.test.tsx
index b7a9a9f385..879b929145 100644
--- a/apps/genome-page/components/panels/GenomicCoordsTable.test.tsx
+++ b/apps/genome-page/components/panels/GenomicCoordsTable.test.tsx
@@ -1,7 +1,7 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import GenomicCoordsTable from "./GenomicCoordsTable"
-import mockProductInfo from "../../mocks/mockProductInfo"
+import { TableDisplay as GenomicCoordsTable } from "./GenomicCoordsTable"
+import { mockProductInfo } from "../../mocks/mockProductInfo"
describe("components/panels/GenomicCoordsTable", () => {
const product_info = [...mockProductInfo]
diff --git a/apps/genome-page/components/panels/GenomicCoordsTable.tsx b/apps/genome-page/components/panels/GenomicCoordsTable.tsx
index aac51f4be7..60893b16d3 100644
--- a/apps/genome-page/components/panels/GenomicCoordsTable.tsx
+++ b/apps/genome-page/components/panels/GenomicCoordsTable.tsx
@@ -1,66 +1,79 @@
import React from "react"
-import Table from '@mui/material/Table';
-import TableBody from '@mui/material/TableBody';
-import TableCell from '@mui/material/TableCell';
-import TableContainer from '@mui/material/TableContainer';
-import TableHead from '@mui/material/TableHead';
-import TableRow from '@mui/material/TableRow';
-import Paper from "@mui/material/Paper";
-import { GenomicCoordinates } from 'dicty-graphql-schema';
+import Table from "@mui/material/Table"
+import TableBody from "@mui/material/TableBody"
+import TableCell from "@mui/material/TableCell"
+import TableContainer from "@mui/material/TableContainer"
+import TableHead from "@mui/material/TableHead"
+import TableRow from "@mui/material/TableRow"
+import Paper from "@mui/material/Paper"
+import { GenomicCoordinates } from "dicty-graphql-schema"
import { makeStyles } from "@material-ui/core/styles"
-import OtherError from "components/errors/OtherError";
+import { OtherError } from "components/errors/OtherError"
-type TableDisplayProps = {
- /** Array of Genomic Coordinates for a particular gene */
- data: GenomicCoordinates[] | null | undefined
+type TableDisplayProperties = {
+ /** Array of Genomic Coordinates for a particular gene */
+ data: GenomicCoordinates[] | null | undefined
}
const useStyles = makeStyles({
root: {
- display: 'flex',
+ display: "flex",
marginTop: 30,
- overflowX: 'hidden',
+ overflowX: "hidden",
},
table: {
minWidth: 340,
},
tableCell: {
paddingRight: 4,
- paddingLeft: 5
- }
+ paddingLeft: 5,
+ },
})
-
/**
* Table Display component that display product info data
*/
-const TableDisplay = ({ data }: TableDisplayProps) => {
+const TableDisplay = ({ data }: TableDisplayProperties) => {
const classes = useStyles()
- if(!data) return
-
+ if (!data) return
return (
-
+
-
- Exon
- Local Coords.
- Chrom. Coords.
-
+
+
+ Exon
+
+
+ Local Coords.
+
+
+ Chrom. Coords.
+
+
- {data.map((item) => (
+ {data.map((item) => (
- {item.exon}
- {item.local_coords}
- {item.chrom_coords}
+
+ {item.exon}
+
+
+ {item.local_coords}
+
+
+ {item.chrom_coords}
+
- ))}
+ ))}
-
+
)
}
-export default TableDisplay
+export { TableDisplay }
diff --git a/apps/genome-page/components/panels/ItemDisplay.test.tsx b/apps/genome-page/components/panels/ItemDisplay.test.tsx
index 630d34e783..af839a03ce 100644
--- a/apps/genome-page/components/panels/ItemDisplay.test.tsx
+++ b/apps/genome-page/components/panels/ItemDisplay.test.tsx
@@ -1,10 +1,9 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import ItemDisplay from "./ItemDisplay"
+import { ItemDisplay } from "./ItemDisplay"
+const Child = () => <>child component>
describe("components/panels/ItemDisplay", () => {
- const Child = () => child component
-
it("should render children", () => {
render(
diff --git a/apps/genome-page/components/panels/ItemDisplay.tsx b/apps/genome-page/components/panels/ItemDisplay.tsx
index 6dab1c85da..e2179bb5f4 100644
--- a/apps/genome-page/components/panels/ItemDisplay.tsx
+++ b/apps/genome-page/components/panels/ItemDisplay.tsx
@@ -25,4 +25,4 @@ const ItemDisplay = ({ children }: any) => {
)
}
-export default ItemDisplay
+export { ItemDisplay }
diff --git a/apps/genome-page/components/panels/LeftDisplay.test.tsx b/apps/genome-page/components/panels/LeftDisplay.test.tsx
index e2c75cda0e..d7e044982c 100644
--- a/apps/genome-page/components/panels/LeftDisplay.test.tsx
+++ b/apps/genome-page/components/panels/LeftDisplay.test.tsx
@@ -1,10 +1,9 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import LeftDisplay from "./LeftDisplay"
+import { LeftDisplay } from "./LeftDisplay"
+const Child = () => <>child component>
describe("components/panels/LeftDisplay", () => {
- const Child = () => child component
-
it("should render children", () => {
render(
diff --git a/apps/genome-page/components/panels/LeftDisplay.tsx b/apps/genome-page/components/panels/LeftDisplay.tsx
index df6a3971d9..0a880b1db0 100644
--- a/apps/genome-page/components/panels/LeftDisplay.tsx
+++ b/apps/genome-page/components/panels/LeftDisplay.tsx
@@ -35,4 +35,4 @@ const LeftDisplay = ({ children }: any) => {
)
}
-export default LeftDisplay
+export { LeftDisplay }
diff --git a/apps/genome-page/components/panels/PanelWrapper.test.tsx b/apps/genome-page/components/panels/PanelWrapper.test.tsx
index c09be7976c..e4224d3e02 100644
--- a/apps/genome-page/components/panels/PanelWrapper.test.tsx
+++ b/apps/genome-page/components/panels/PanelWrapper.test.tsx
@@ -1,9 +1,9 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import PanelWrapper from "./PanelWrapper"
+import { PanelWrapper } from "./PanelWrapper"
+const Child = () => <>child component>
describe("components/panels/PanelWrapper", () => {
- const Child = () => child component
const renderComponent = () => {
render(
diff --git a/apps/genome-page/components/panels/PanelWrapper.tsx b/apps/genome-page/components/panels/PanelWrapper.tsx
index aa5ebaa98e..a416ae6def 100644
--- a/apps/genome-page/components/panels/PanelWrapper.tsx
+++ b/apps/genome-page/components/panels/PanelWrapper.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable jsx-a11y/anchor-is-valid */
import React from "react"
import Link from "next/link"
import { makeStyles, Theme, createStyles } from "@material-ui/core/styles"
@@ -38,7 +39,7 @@ const useStyles = makeStyles((theme: Theme) =>
}),
)
-type Props = {
+type Properties = {
/** Any content to display inside the panel */
children: any
/** Route to link the View All button to */
@@ -52,7 +53,7 @@ type Props = {
* It is used for every panel on the gene summary page.
*/
-const PanelWrapper = ({ title, route, children }: Props) => {
+const PanelWrapper = ({ title, route, children }: Properties) => {
const classes = useStyles()
return (
@@ -61,7 +62,7 @@ const PanelWrapper = ({ title, route, children }: Props) => {
}>
-
+
{title}
{route && (
@@ -78,4 +79,4 @@ const PanelWrapper = ({ title, route, children }: Props) => {
)
}
-export default PanelWrapper
+export { PanelWrapper }
diff --git a/apps/genome-page/components/panels/RightDisplay.test.tsx b/apps/genome-page/components/panels/RightDisplay.test.tsx
index 10c68d9360..cd3d820b43 100644
--- a/apps/genome-page/components/panels/RightDisplay.test.tsx
+++ b/apps/genome-page/components/panels/RightDisplay.test.tsx
@@ -1,10 +1,9 @@
import React from "react"
import { render, screen } from "@testing-library/react"
-import RightDisplay from "./RightDisplay"
+import { RightDisplay } from "./RightDisplay"
+const Child = () => <>child component>
describe("components/panels/RightDisplay", () => {
- const Child = () => child component
-
it("should render children", () => {
render(
diff --git a/apps/genome-page/components/panels/RightDisplay.tsx b/apps/genome-page/components/panels/RightDisplay.tsx
index d0db80daf0..814959ab63 100644
--- a/apps/genome-page/components/panels/RightDisplay.tsx
+++ b/apps/genome-page/components/panels/RightDisplay.tsx
@@ -31,4 +31,4 @@ const RightDisplay = ({ children }: any) => {
)
}
-export default RightDisplay
+export { RightDisplay }
diff --git a/apps/genome-page/jest.config.js b/apps/genome-page/jest.config.js
index 834357f887..3e198371c9 100644
--- a/apps/genome-page/jest.config.js
+++ b/apps/genome-page/jest.config.js
@@ -22,7 +22,7 @@ const customJestConfig = {
resetMocks: false,
moduleNameMapper: {
"react-markdown":
- "/components/features/CommunityAnnotations/mocks/react-markdown.js",
+ "/components/features/CommunityAnnotations/mocks/react-markdown.tsx",
},
}
diff --git a/apps/genome-page/mocks/MockAuthProvider.tsx b/apps/genome-page/mocks/MockAuthProvider.tsx
index 700064a41a..021da99e3f 100644
--- a/apps/genome-page/mocks/MockAuthProvider.tsx
+++ b/apps/genome-page/mocks/MockAuthProvider.tsx
@@ -1,4 +1,4 @@
-import React from "react"
+import React, { useMemo } from "react"
import { MockedProvider, MockedResponse } from "@apollo/client/testing"
import { User } from "dicty-graphql-schema"
import {
@@ -6,7 +6,7 @@ import {
authReducer,
} from "components/features/Authentication/AuthStore"
-type AuthProps = {
+type AuthProperties = {
children: React.ReactNode
mocks: ReadonlyArray
user?: User
@@ -20,23 +20,23 @@ const MockSuperuser = {
last_name: "Vandelay",
email: "george@vandelayindustries.com",
is_active: true,
- created_at: 123456,
- updated_at: 678900,
+ created_at: 123_456,
+ updated_at: 678_900,
roles: [
{
id: "1",
role: "superuser",
description: "total power!",
- created_at: 123456,
- updated_at: 678900,
+ created_at: 123_456,
+ updated_at: 678_900,
permissions: [
{
id: "1",
permission: "test",
description: "a test permission",
resource: "testresource",
- created_at: 123456,
- updated_at: 678900,
+ created_at: 123_456,
+ updated_at: 678_900,
},
],
},
@@ -54,16 +54,20 @@ const MockAuthProvider = ({
mocks,
user = MockSuperuser,
validToken = true,
-}: AuthProps) => {
+}: AuthProperties) => {
const [state, dispatch] = React.useReducer(authReducer, {
token: validToken ? activeToken : expiredToken,
- user: user,
+ user,
provider: "google",
isAuthenticated: true,
- error: null,
+ error: undefined,
})
+ const authContextValue = useMemo(
+ () => ({ state, dispatch }),
+ [state, dispatch],
+ )
return (
-
+
{children}
@@ -72,4 +76,4 @@ const MockAuthProvider = ({
}
export { MockSuperuser }
-export default MockAuthProvider
+export { MockAuthProvider }
diff --git a/apps/genome-page/mocks/ada2Mocks/mockAssociatedAda2.ts b/apps/genome-page/mocks/ada2Mocks/mockAssociatedAda2.ts
index 37c225b8e2..354f6df2f8 100644
--- a/apps/genome-page/mocks/ada2Mocks/mockAssociatedAda2.ts
+++ b/apps/genome-page/mocks/ada2Mocks/mockAssociatedAda2.ts
@@ -1,8 +1,8 @@
import { AssociatedSequences, NameWithLink } from "dicty-graphql-schema"
const mockAssociatedAda2: AssociatedSequences = {
- genbank_genomic_fragment: null,
- genbank_mrna: null,
+ genbank_genomic_fragment: undefined,
+ genbank_mrna: undefined,
ests: [
{
name: "DDB0117409",
@@ -33,4 +33,4 @@ const mockAssociatedAda2: AssociatedSequences = {
"http://dictybase.org/db/cgi-bin/more_est.pl?feature_id=186572&gene_name=ada2",
}
-export default mockAssociatedAda2
+export { mockAssociatedAda2 }
diff --git a/apps/genome-page/mocks/ada2Mocks/mockGeneAda2.ts b/apps/genome-page/mocks/ada2Mocks/mockGeneAda2.ts
index bafb22e402..d81b5358d4 100644
--- a/apps/genome-page/mocks/ada2Mocks/mockGeneAda2.ts
+++ b/apps/genome-page/mocks/ada2Mocks/mockGeneAda2.ts
@@ -1,13 +1,13 @@
import { GeneQuery } from "dicty-graphql-schema"
-import mockGeneralInfoPiaA from "mocks/piaAMocks/mockGeneralInfoPiaA"
-import mockLinksPiaA from "mocks/piaAMocks/mockLinksPiaA"
-import mockOrthologsPiaA from "mocks/piaAMocks/mockOrthologsPiaA"
-import mockProductInfoPiaA from "mocks/piaAMocks/mockProductInfoPIaA"
-import mockReferencesPiaA from "mocks/piaAMocks/mockReferencesPiaA"
-import mockAssociatedAda2 from "./mockAssociatedAda2"
-import mockOntologyAda2 from "./mockOntologyAda2"
-import mockPhenotypesAda2 from "./mockPhenotypesAda2"
-import mockProteinInformation from "mocks/mockProteinInformation"
+import { mockGeneralInfoPiaA } from "mocks/piaAMocks/mockGeneralInfoPiaA"
+import { mockLinksPiaA } from "mocks/piaAMocks/mockLinksPiaA"
+import { mockOrthologsPiaA } from "mocks/piaAMocks/mockOrthologsPiaA"
+import { mockProductInfoPiaA } from "mocks/piaAMocks/mockProductInfoPIaA"
+import { mockReferencesPiaA } from "mocks/piaAMocks/mockReferencesPiaA"
+import { mockProteinInformation } from "mocks/mockProteinInformation"
+import { mockAssociatedAda2 } from "./mockAssociatedAda2"
+import { mockOntologyAda2 } from "./mockOntologyAda2"
+import { mockPhenotypesAda2 } from "./mockPhenotypesAda2"
const mockGeneAda2: GeneQuery = {
gene: {
@@ -58,4 +58,4 @@ const mockGeneAda2: GeneQuery = {
protein_information: mockProteinInformation,
},
}
-export default mockGeneAda2
+export { mockGeneAda2 }
diff --git a/apps/genome-page/mocks/ada2Mocks/mockGeneAda2Limit.ts b/apps/genome-page/mocks/ada2Mocks/mockGeneAda2Limit.ts
index 7cb20bc426..6f5c51b287 100644
--- a/apps/genome-page/mocks/ada2Mocks/mockGeneAda2Limit.ts
+++ b/apps/genome-page/mocks/ada2Mocks/mockGeneAda2Limit.ts
@@ -1,13 +1,13 @@
import { GeneQuery } from "dicty-graphql-schema"
-import mockGeneralInfoPiaA from "mocks/piaAMocks/mockGeneralInfoPiaA"
-import mockLinksPiaA from "mocks/piaAMocks/mockLinksPiaA"
-import mockOrthologsPiaA from "mocks/piaAMocks/mockOrthologsPiaA"
-import mockProductInfoPiaA from "mocks/piaAMocks/mockProductInfoPIaA"
-import mockReferencesPiaA from "mocks/piaAMocks/mockReferencesPiaA"
-import mockAssociatedAda2 from "./mockAssociatedAda2"
-import mockOntologyAda2 from "./mockOntologyAda2"
-import mockPhenotypesAda2 from "./mockPhenotypesAda2"
-import mockProteinInformation from "mocks/mockProteinInformation"
+import { mockGeneralInfoPiaA } from "mocks/piaAMocks/mockGeneralInfoPiaA"
+import { mockLinksPiaA } from "mocks/piaAMocks/mockLinksPiaA"
+import { mockOrthologsPiaA } from "mocks/piaAMocks/mockOrthologsPiaA"
+import { mockProductInfoPiaA } from "mocks/piaAMocks/mockProductInfoPIaA"
+import { mockReferencesPiaA } from "mocks/piaAMocks/mockReferencesPiaA"
+import { mockProteinInformation } from "mocks/mockProteinInformation"
+import { mockAssociatedAda2 } from "./mockAssociatedAda2"
+import { mockOntologyAda2 } from "./mockOntologyAda2"
+import { mockPhenotypesAda2 } from "./mockPhenotypesAda2"
const mockGeneAda2Limit: GeneQuery = {
gene: {
@@ -24,7 +24,7 @@ const mockGeneAda2Limit: GeneQuery = {
},
allPublications: {
num_pubs: 40,
- publications: [...mockReferencesPiaA.slice(0, 3)],
+ publications: mockReferencesPiaA.slice(0, 3),
},
allOrthologs: {
__typename: "Gene",
@@ -58,4 +58,4 @@ const mockGeneAda2Limit: GeneQuery = {
protein_information: mockProteinInformation,
},
}
-export default mockGeneAda2Limit
+export { mockGeneAda2Limit }
diff --git a/apps/genome-page/mocks/ada2Mocks/mockOntologyAda2.ts b/apps/genome-page/mocks/ada2Mocks/mockOntologyAda2.ts
index f2d78cf305..16fd1954e3 100644
--- a/apps/genome-page/mocks/ada2Mocks/mockOntologyAda2.ts
+++ b/apps/genome-page/mocks/ada2Mocks/mockOntologyAda2.ts
@@ -1,3 +1,4 @@
+/* eslint-disable sonarjs/no-duplicate-string */
import { GoAnnotation } from "dicty-graphql-schema"
interface IMockOntologyData {
@@ -292,4 +293,4 @@ const mockOntologyAda2: IMockOntologyData = {
],
}
-export default mockOntologyAda2
+export { mockOntologyAda2 }
diff --git a/apps/genome-page/mocks/ada2Mocks/mockPhenotypesAda2.ts b/apps/genome-page/mocks/ada2Mocks/mockPhenotypesAda2.ts
index d2dd795bbb..c0ca17e9ed 100644
--- a/apps/genome-page/mocks/ada2Mocks/mockPhenotypesAda2.ts
+++ b/apps/genome-page/mocks/ada2Mocks/mockPhenotypesAda2.ts
@@ -1,3 +1,4 @@
+/* eslint-disable sonarjs/no-duplicate-string */
import { Strain } from "dicty-graphql-schema"
/**
@@ -393,4 +394,4 @@ const mockPhenotypesAda2: { strains: Strain[] } = {
],
}
-export default mockPhenotypesAda2
+export { mockPhenotypesAda2 }
diff --git a/apps/genome-page/mocks/handlers.ts b/apps/genome-page/mocks/handlers.ts
index 2ddaa98d0e..98eb7a9597 100644
--- a/apps/genome-page/mocks/handlers.ts
+++ b/apps/genome-page/mocks/handlers.ts
@@ -1,35 +1,36 @@
import { graphql } from "msw"
-import mockGene from "./mockGene"
-import mockGeneLimit from "./mockGeneLimit"
-import mockGenePiaA from "./piaAMocks/mockGenePiaA"
-import mockGenePiaALimit from "./piaAMocks/mockGenePiaALimit"
-import mockGeneAda2 from "./ada2Mocks/mockGeneAda2"
-import mockGeneAda2Limit from "./ada2Mocks/mockGeneAda2Limit"
+import { mockGene } from "./mockGene"
+import { mockGeneLimit } from "./mockGeneLimit"
+import { mockGenePiaA } from "./piaAMocks/mockGenePiaA"
+import { mockGenePiaALimit } from "./piaAMocks/mockGenePiaALimit"
+import { mockGeneAda2 } from "./ada2Mocks/mockGeneAda2"
+import { mockGeneAda2Limit } from "./ada2Mocks/mockGeneAda2Limit"
export const handlers = [
// Handles the Gene query: https://github.com/dictyBase/dicty-graphql-schema/blob/develop/src/queries/gene.graphql
// Implementation details here: https://github.com/dictyBase/genomepage/pull/825#issuecomment-977246804
- graphql.query("Gene", (req, res, ctx) => {
- const gene = req.body?.variables?.gene
- const limit = req.body?.variables?.limit
+ graphql.query("Gene", (request, response, context) => {
+ const gene = request.body?.variables?.gene
+ const limit = request.body?.variables?.limit
if (gene === "sadA") {
- if (limit == 3) {
- return res(ctx.data({ ...mockGeneLimit }))
+ if (limit === 3) {
+ return response(context.data({ ...mockGeneLimit }))
}
- return res(ctx.data({ ...mockGene }))
+ return response(context.data({ ...mockGene }))
}
if (gene === "piaA") {
- if (limit == 3) {
- return res(ctx.data({ ...mockGenePiaALimit }))
+ if (limit === 3) {
+ return response(context.data({ ...mockGenePiaALimit }))
}
- return res(ctx.data({ ...mockGenePiaA }))
+ return response(context.data({ ...mockGenePiaA }))
}
if (gene === "ada2") {
- if (limit == 3) {
- return res(ctx.data({ ...mockGeneAda2Limit }))
+ if (limit === 3) {
+ return response(context.data({ ...mockGeneAda2Limit }))
}
- return res(ctx.data({ ...mockGeneAda2 }))
+ return response(context.data({ ...mockGeneAda2 }))
}
+ return response(context.errors([{ message: `No mock for ${gene}` }]))
}),
]
diff --git a/apps/genome-page/mocks/index.js b/apps/genome-page/mocks/index.js
index 5120e60dec..868093f382 100644
--- a/apps/genome-page/mocks/index.js
+++ b/apps/genome-page/mocks/index.js
@@ -1,7 +1,11 @@
-if (typeof window === "undefined") {
- const { server } = require("./server")
- server.listen()
-} else {
- const { worker } = require("./browser")
- worker.start()
+const enableMock = async () => {
+ if (typeof window === "undefined") {
+ const { server } = await import("./server")
+ server.listen()
+ } else {
+ const { worker } = await import("./browser")
+ await worker.start()
+ }
}
+
+export { enableMock }
diff --git a/apps/genome-page/mocks/mockAssociatedData.ts b/apps/genome-page/mocks/mockAssociatedData.ts
index 11cdd88163..cf08528099 100644
--- a/apps/genome-page/mocks/mockAssociatedData.ts
+++ b/apps/genome-page/mocks/mockAssociatedData.ts
@@ -5,7 +5,7 @@ const mockAssociatedData: AssociatedSequences = {
name: "AY178767",
link: "http://www.ncbi.nlm.nih.gov/nuccore/AY178767",
} as NameWithLink,
- genbank_mrna: null,
+ genbank_mrna: undefined,
ests: [
{ name: "DDB0025213", link: "" },
{ name: "DDB0029617", link: "" },
@@ -16,4 +16,4 @@ const mockAssociatedData: AssociatedSequences = {
] as NameWithLink[],
}
-export default mockAssociatedData
+export { mockAssociatedData }
diff --git a/apps/genome-page/mocks/mockGene.ts b/apps/genome-page/mocks/mockGene.ts
index b5f1a526a7..a6ffaf348c 100644
--- a/apps/genome-page/mocks/mockGene.ts
+++ b/apps/genome-page/mocks/mockGene.ts
@@ -1,13 +1,13 @@
import { GeneQuery } from "dicty-graphql-schema"
-import mockOntologyData from "./mockOntologyData"
-import mockOrthologsData from "./mockOrthologsData"
-import mockPhenotypesData from "./mockPhenotypesData"
-import mockReferencesData from "./mockReferencesData"
-import mockProductInfo from "./mockProductInfo"
-import mockGeneralInfoData from "./mockGeneralInfoData"
-import mockAssociatedData from "./mockAssociatedData"
-import mockLinksData from "./mockLinksData"
-import mockProteinInformation from "./mockProteinInformation"
+import { mockOntologyData } from "./mockOntologyData"
+import { mockOrthologsData } from "./mockOrthologsData"
+import { mockPhenotypesData } from "./mockPhenotypesData"
+import { mockReferencesData } from "./mockReferencesData"
+import { mockProductInfo } from "./mockProductInfo"
+import { mockGeneralInfoData } from "./mockGeneralInfoData"
+import { mockAssociatedData } from "./mockAssociatedData"
+import { mockLinksData } from "./mockLinksData"
+import { mockProteinInformation } from "./mockProteinInformation"
const mockGene: GeneQuery = {
gene: {
@@ -58,4 +58,4 @@ const mockGene: GeneQuery = {
protein_information: mockProteinInformation,
},
}
-export default mockGene
+export { mockGene }
diff --git a/apps/genome-page/mocks/mockGeneLimit.ts b/apps/genome-page/mocks/mockGeneLimit.ts
index 691fca0620..e89a6ff261 100644
--- a/apps/genome-page/mocks/mockGeneLimit.ts
+++ b/apps/genome-page/mocks/mockGeneLimit.ts
@@ -1,13 +1,13 @@
import { GeneQuery } from "dicty-graphql-schema"
-import mockOntologyData from "./mockOntologyData"
-import mockOrthologsData from "./mockOrthologsData"
-import mockPhenotypesData from "./mockPhenotypesData"
-import mockReferencesData from "./mockReferencesData"
-import mockProductInfo from "./mockProductInfo"
-import mockGeneralInfoData from "./mockGeneralInfoData"
-import mockAssociatedData from "./mockAssociatedData"
-import mockLinksData from "./mockLinksData"
-import mockProteinInformation from "./mockProteinInformation"
+import { mockOntologyData } from "./mockOntologyData"
+import { mockOrthologsData } from "./mockOrthologsData"
+import { mockPhenotypesData } from "./mockPhenotypesData"
+import { mockReferencesData } from "./mockReferencesData"
+import { mockProductInfo } from "./mockProductInfo"
+import { mockGeneralInfoData } from "./mockGeneralInfoData"
+import { mockAssociatedData } from "./mockAssociatedData"
+import { mockLinksData } from "./mockLinksData"
+import { mockProteinInformation } from "./mockProteinInformation"
const mockGeneLimit: GeneQuery = {
gene: {
@@ -24,7 +24,7 @@ const mockGeneLimit: GeneQuery = {
},
allPublications: {
num_pubs: 14,
- publications: [...mockReferencesData.slice(0, 3)],
+ publications: mockReferencesData.slice(0, 3),
},
allOrthologs: {
__typename: "Gene",
@@ -58,4 +58,4 @@ const mockGeneLimit: GeneQuery = {
protein_information: mockProteinInformation,
},
}
-export default mockGeneLimit
+export { mockGeneLimit }
diff --git a/apps/genome-page/mocks/mockGeneralInfoData.ts b/apps/genome-page/mocks/mockGeneralInfoData.ts
index 86434f9e31..3832ee5d45 100644
--- a/apps/genome-page/mocks/mockGeneralInfoData.ts
+++ b/apps/genome-page/mocks/mockGeneralInfoData.ts
@@ -5,11 +5,11 @@ import { GeneralInfo } from "dicty-graphql-schema"
*/
const mockGeneralInfoData: GeneralInfo = {
name_description: ["sadA = Substrate ADhesion"],
- alt_gene_name: null,
+ alt_gene_name: undefined,
gene_product: "substrate adhesion molecule",
- alt_protein_names: null,
+ alt_protein_names: undefined,
description:
"EGF repeat-containing 9 transmembrane molecule involved in substrate adhesion",
}
-export default mockGeneralInfoData
+export { mockGeneralInfoData }
diff --git a/apps/genome-page/mocks/mockGraphQLData.ts b/apps/genome-page/mocks/mockGraphQLData.ts
index f8ee1200cc..111f92d953 100644
--- a/apps/genome-page/mocks/mockGraphQLData.ts
+++ b/apps/genome-page/mocks/mockGraphQLData.ts
@@ -1,3 +1,5 @@
+/* eslint-disable unicorn/filename-case */
+/* eslint-disable sonarjs/no-duplicate-string */
// mock data response for sadA gene
const mockGraphQLData = {
data: {
@@ -294,4 +296,4 @@ const mockGraphQLData = {
},
}
-export default mockGraphQLData
+export { mockGraphQLData }
diff --git a/apps/genome-page/mocks/mockLinksData.ts b/apps/genome-page/mocks/mockLinksData.ts
index 041b89689f..66ca4f52e9 100644
--- a/apps/genome-page/mocks/mockLinksData.ts
+++ b/apps/genome-page/mocks/mockLinksData.ts
@@ -31,4 +31,4 @@ const mockLinksData: Links = {
] as NameWithLink[],
}
-export default mockLinksData
+export { mockLinksData }
diff --git a/apps/genome-page/mocks/mockOntologyData.ts b/apps/genome-page/mocks/mockOntologyData.ts
index 3c298d7ae7..3ce8369dca 100644
--- a/apps/genome-page/mocks/mockOntologyData.ts
+++ b/apps/genome-page/mocks/mockOntologyData.ts
@@ -1,3 +1,4 @@
+/* eslint-disable sonarjs/no-duplicate-string */
import { GoAnnotation } from "dicty-graphql-schema"
interface IMockOntologyData {
@@ -291,4 +292,4 @@ const mockOntologyData: IMockOntologyData = {
],
}
-export default mockOntologyData
+export { mockOntologyData }
diff --git a/apps/genome-page/mocks/mockOrthologsData.ts b/apps/genome-page/mocks/mockOrthologsData.ts
index d5c6779c57..f17a3fe903 100644
--- a/apps/genome-page/mocks/mockOrthologsData.ts
+++ b/apps/genome-page/mocks/mockOrthologsData.ts
@@ -21,4 +21,4 @@ const mockOrthologsData: IMockOrthologsData = {
],
}
-export default mockOrthologsData
+export { mockOrthologsData }
diff --git a/apps/genome-page/mocks/mockPhenotypesData.tsx b/apps/genome-page/mocks/mockPhenotypesData.tsx
index 8a12e62685..86e859d0a8 100644
--- a/apps/genome-page/mocks/mockPhenotypesData.tsx
+++ b/apps/genome-page/mocks/mockPhenotypesData.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable sonarjs/no-duplicate-string */
import { Strain } from "dicty-graphql-schema"
/**
@@ -393,4 +394,4 @@ const mockPhenotypesData: { strains: Strain[] } = {
],
}
-export default mockPhenotypesData
+export { mockPhenotypesData }
diff --git a/apps/genome-page/mocks/mockProductInfo.ts b/apps/genome-page/mocks/mockProductInfo.ts
index f0a197a4e9..edaec3ef06 100644
--- a/apps/genome-page/mocks/mockProductInfo.ts
+++ b/apps/genome-page/mocks/mockProductInfo.ts
@@ -30,4 +30,4 @@ const mockProductInfo: ProductInformation[] = [
},
]
-export default mockProductInfo
+export { mockProductInfo }
diff --git a/apps/genome-page/mocks/mockProteinInformation.ts b/apps/genome-page/mocks/mockProteinInformation.ts
index 3bcfa0abe1..5571879d88 100644
--- a/apps/genome-page/mocks/mockProteinInformation.ts
+++ b/apps/genome-page/mocks/mockProteinInformation.ts
@@ -31,4 +31,4 @@ const mockProteinInformation = {
">DDB0191090|DDB_G0288511 |Protein|gene: sadA on chromosome: 5 position 1638800 to 1641837\nMKSQKIGSMILLIGILLAIFNFAYSDDDIERFSINPEKPISFTSDQPGFPTSADFPIGSI\nLANSFYSFGGDVNYFQLNISLMEEFSKDGNTGSQATWNQYTSVPVSPISSAVTANRVYTM\nSIGSLNRVKKGDITSMESTDFLNDEKYSSLVTTLNGGVSYGDDVFFLSSKSATGEAVLIH\nINDTATGTFGTSSYDEILLDAAINDPSSITVDSKLGLAFIGDSDGDILVFNMTLKAKIAI\nYSNSSIANLRSSGVVDEERQLLYICGQAGGMNSYITQVDIFHYSATDITLLHSFTILGSL\nCPSAGIDVKGGQLFFSTTTSSGSQLIGTDTSGGNTGSLSENIANTQSVAISVDSITKTIS\nVFYPDSVFYGTFKSICPSDCSGHGECNYGTCVCDHNYQGQGCEEELCLTLNNCTGTDNGK\nCENGFCYCSSEWEGAQCEIRRCKDSCNGYGTCNTANYTCVCDSAHMGETCNELVPPPPCT\nYYTDSESCLSRTTCGWCEVDGLCKEGDRYGPFEGFCRTWFFDTNVETGVIALACIFIAFV\nGILYIIDIGTTVPIDIKRAKDYAEENKSGQFPKATHEEASVLWWRDQRSHKAWTFMDQFQ\nLISLVSHIGVVFPSRFISFTEYLDWSNLGIPLPPSINPPQIWSVPTDWTSNTARTILSMA\nQYENSLGSGDLYLLPNILFWFGLLLGVFLVPLLLAYAIISFMESLIHWKEVVTNRLIHVL\nVRILTFGYIGVLIAASFAMVTPLHDYRIIIPGAIIFVLYGIGLPIAIWFLLAVPEARLHN\nPTFKQRFGCLYVHYKPKTDHRFVVFMFIKRFIMAVIIGILSFKPMTNYPLTGTDLAVPIV\nQVVVIDIALIGYAVLLFIRKPYFDHYQLWLEYLLTAINIVTVSLSLTHIKSPSAAGELIA\nCLIQALALVACIAAYVVAWLQMRSSFIKKVKKYLCCCCKSSKSSGEIDLSKK*",
}
-export default mockProteinInformation
+export { mockProteinInformation }
diff --git a/apps/genome-page/mocks/mockReferencesData.ts b/apps/genome-page/mocks/mockReferencesData.ts
index 232d006bfa..b1c0252381 100644
--- a/apps/genome-page/mocks/mockReferencesData.ts
+++ b/apps/genome-page/mocks/mockReferencesData.ts
@@ -2,7 +2,7 @@ import { PublicationWithGene, Gene } from "dicty-graphql-schema"
const mockReferencesData: PublicationWithGene[] = [
{
- related_genes: Array(),
+ related_genes: [] as Array,
id: "17968",
authors: [
{ last_name: "Kamprad", first_name: "", initials: "", rank: "" },
@@ -67,7 +67,10 @@ const mockReferencesData: PublicationWithGene[] = [
{ id: "DDB_G0289073", name: "csaA" } as Gene,
],
id: "13217",
- authors: [{ last_name: "Wu", first_name: "", initials: "", rank: "" }, { last_name: "Janetopoulos", first_name: "", initials: "", rank: "" }],
+ authors: [
+ { last_name: "Wu", first_name: "", initials: "", rank: "" },
+ { last_name: "Janetopoulos", first_name: "", initials: "", rank: "" },
+ ],
title:
"The G alpha subunit G?8 inhibits proliferation, promotes adhesion and regulates cell differentiation.",
journal: "Dev. Biol.",
@@ -152,7 +155,10 @@ const mockReferencesData: PublicationWithGene[] = [
{
related_genes: [{ id: "DDB_G0289483", name: "ctxA" } as Gene],
id: "12499361",
- authors: [{ last_name: "Kowal", first_name: "", initials: "", rank: "" }, { last_name: "Chisholm", first_name: "", initials: "", rank: "" }],
+ authors: [
+ { last_name: "Kowal", first_name: "", initials: "", rank: "" },
+ { last_name: "Chisholm", first_name: "", initials: "", rank: "" },
+ ],
title:
"Uncovering a role for the Dictyostelium discoideum SadA protein in cell-substrate adhesion: A Role for the Tail.",
journal: "Eukaryotic cell",
@@ -178,7 +184,9 @@ const mockReferencesData: PublicationWithGene[] = [
{ id: "DDB_G0276077", name: "mlcR" } as Gene,
],
id: "11404",
- authors: [{ last_name: "Tsujioka", first_name: "", initials: "", rank: "" }],
+ authors: [
+ { last_name: "Tsujioka", first_name: "", initials: "", rank: "" },
+ ],
title: "Cell migration in multicellular environments.",
journal: "Dev. Growth Differ.",
pages: "53:528-37",
@@ -202,7 +210,10 @@ const mockReferencesData: PublicationWithGene[] = [
{ id: "DDB_G0280531", name: "tgrC1" } as Gene,
],
id: "236",
- authors: [{ last_name: "Abedin", first_name: "", initials: "", rank: "" }, { last_name: "King", first_name: "", initials: "", rank: "" }],
+ authors: [
+ { last_name: "Abedin", first_name: "", initials: "", rank: "" },
+ { last_name: "King", first_name: "", initials: "", rank: "" },
+ ],
title: "Diverse evolutionary paths to cell adhesion.",
journal: "Trends Cell Biol",
pages: "20:734-42",
@@ -262,7 +273,10 @@ const mockReferencesData: PublicationWithGene[] = [
{ id: "DDB_G0292322", name: "DDB_G0292322" } as Gene,
],
id: "459",
- authors: [{ last_name: "Cosson", first_name: "", initials: "", rank: "" }, { last_name: "Soldati", first_name: "", initials: "", rank: "" }],
+ authors: [
+ { last_name: "Cosson", first_name: "", initials: "", rank: "" },
+ { last_name: "Soldati", first_name: "", initials: "", rank: "" },
+ ],
title: "Eat, kill or die: when amoeba meets bacteria.",
journal: "Curr Opin Microbiol",
pages: "11:271-6",
@@ -345,7 +359,10 @@ const mockReferencesData: PublicationWithGene[] = [
{ id: "DDB_G0293834", name: "wasA" } as Gene,
],
id: "1732",
- authors: [{ last_name: "Williams", first_name: "", initials: "", rank: "" }, { last_name: "Harwood", first_name: "", initials: "", rank: "" }],
+ authors: [
+ { last_name: "Williams", first_name: "", initials: "", rank: "" },
+ { last_name: "Harwood", first_name: "", initials: "", rank: "" },
+ ],
title: "Cell polarity and Dictyostelium development.",
journal: "Curr Opin Microbiol",
pages: "6:621-7",
@@ -360,7 +377,7 @@ const mockReferencesData: PublicationWithGene[] = [
status: "",
} as PublicationWithGene,
{
- related_genes: Array(),
+ related_genes: [] as Array,
id: "12499361",
authors: [
{ last_name: "Fey", first_name: "", initials: "", rank: "" },
@@ -383,4 +400,4 @@ const mockReferencesData: PublicationWithGene[] = [
} as PublicationWithGene,
]
-export default mockReferencesData
+export { mockReferencesData }
diff --git a/apps/genome-page/mocks/piaAMocks/mockAssociatedPiaA.ts b/apps/genome-page/mocks/piaAMocks/mockAssociatedPiaA.ts
index 55a416f984..ecece42342 100644
--- a/apps/genome-page/mocks/piaAMocks/mockAssociatedPiaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockAssociatedPiaA.ts
@@ -39,4 +39,4 @@ const mockAssociatedPiaA: AssociatedSequences = {
"http://dictybase.org/db/cgi-bin/more_est.pl?feature_id=179785&gene_name=piaA",
}
-export default mockAssociatedPiaA
+export { mockAssociatedPiaA }
diff --git a/apps/genome-page/mocks/piaAMocks/mockGenePiaA.ts b/apps/genome-page/mocks/piaAMocks/mockGenePiaA.ts
index 6c86121bf0..c31bf9212a 100644
--- a/apps/genome-page/mocks/piaAMocks/mockGenePiaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockGenePiaA.ts
@@ -1,13 +1,13 @@
import { GeneQuery } from "dicty-graphql-schema"
-import mockLinksPiaA from "./mockLinksPiaA"
-import mockAssociatedPiaA from "./mockAssociatedPiaA"
-import mockGeneralInfoPiaA from "./mockGeneralInfoPiaA"
-import mockProductInfoPiaA from "./mockProductInfoPIaA"
-import mockOntologyPiaA from "./mockOntologyPiaA"
-import mockOrthologsPiaA from "./mockOrthologsPiaA"
-import mockReferencesPiaA from "./mockReferencesPiaA"
-import mockPhenotypesPiaA from "./mockPhenotypesPiaA"
-import mockProteinInformation from "mocks/mockProteinInformation"
+import { mockProteinInformation } from "mocks/mockProteinInformation"
+import { mockLinksPiaA } from "./mockLinksPiaA"
+import { mockAssociatedPiaA } from "./mockAssociatedPiaA"
+import { mockGeneralInfoPiaA } from "./mockGeneralInfoPiaA"
+import { mockProductInfoPiaA } from "./mockProductInfoPIaA"
+import { mockOntologyPiaA } from "./mockOntologyPiaA"
+import { mockOrthologsPiaA } from "./mockOrthologsPiaA"
+import { mockReferencesPiaA } from "./mockReferencesPiaA"
+import { mockPhenotypesPiaA } from "./mockPhenotypesPiaA"
const mockGenePiaA: GeneQuery = {
gene: {
@@ -58,4 +58,4 @@ const mockGenePiaA: GeneQuery = {
protein_information: mockProteinInformation,
},
}
-export default mockGenePiaA
+export { mockGenePiaA }
diff --git a/apps/genome-page/mocks/piaAMocks/mockGenePiaALimit.ts b/apps/genome-page/mocks/piaAMocks/mockGenePiaALimit.ts
index f7526b924d..2a2861b83a 100644
--- a/apps/genome-page/mocks/piaAMocks/mockGenePiaALimit.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockGenePiaALimit.ts
@@ -1,13 +1,13 @@
import { GeneQuery } from "dicty-graphql-schema"
-import mockLinksPiaA from "./mockLinksPiaA"
-import mockAssociatedPiaA from "./mockAssociatedPiaA"
-import mockGeneralInfoPiaA from "./mockGeneralInfoPiaA"
-import mockProductInfoPiaA from "./mockProductInfoPIaA"
-import mockOntologyPiaA from "./mockOntologyPiaA"
-import mockOrthologsPiaA from "./mockOrthologsPiaA"
-import mockReferencesPiaA from "./mockReferencesPiaA"
-import mockPhenotypesPiaA from "./mockPhenotypesPiaA"
-import mockProteinInformation from "mocks/mockProteinInformation"
+import { mockProteinInformation } from "mocks/mockProteinInformation"
+import { mockLinksPiaA } from "./mockLinksPiaA"
+import { mockAssociatedPiaA } from "./mockAssociatedPiaA"
+import { mockGeneralInfoPiaA } from "./mockGeneralInfoPiaA"
+import { mockProductInfoPiaA } from "./mockProductInfoPIaA"
+import { mockOntologyPiaA } from "./mockOntologyPiaA"
+import { mockOrthologsPiaA } from "./mockOrthologsPiaA"
+import { mockReferencesPiaA } from "./mockReferencesPiaA"
+import { mockPhenotypesPiaA } from "./mockPhenotypesPiaA"
const mockGenePiaALimit: GeneQuery = {
gene: {
@@ -24,7 +24,7 @@ const mockGenePiaALimit: GeneQuery = {
},
allPublications: {
num_pubs: 40,
- publications: [...mockReferencesPiaA.slice(0, 3)],
+ publications: mockReferencesPiaA.slice(0, 3),
},
allOrthologs: {
__typename: "Gene",
@@ -58,4 +58,4 @@ const mockGenePiaALimit: GeneQuery = {
protein_information: mockProteinInformation,
},
}
-export default mockGenePiaALimit
+export { mockGenePiaALimit }
diff --git a/apps/genome-page/mocks/piaAMocks/mockGeneralInfoPiaA.ts b/apps/genome-page/mocks/piaAMocks/mockGeneralInfoPiaA.ts
index a2236cdb70..36870e238e 100644
--- a/apps/genome-page/mocks/piaAMocks/mockGeneralInfoPiaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockGeneralInfoPiaA.ts
@@ -3,7 +3,7 @@ import { GeneralInfo } from "dicty-graphql-schema"
/**
* Reference: http://dictybase.org/gene/piaA
*/
-const mockGeneralInfoPia: GeneralInfo = {
+const mockGeneralInfoPiaA: GeneralInfo = {
name_description: [
"pia = PIAnissimo",
"rictor = Rapamycin-Insensitive Companion of mTOR",
@@ -15,4 +15,4 @@ const mockGeneralInfoPia: GeneralInfo = {
"required for receptor-mediated activation of adenylyl cyclase; component of the TORC2 (Tor complex 2) with Tor, Lst8, and Rip3 that plays a role in regulation of adenylate cyclase (ACA) and protein kinase B (PKB) activation during aggregation",
}
-export default mockGeneralInfoPia
+export { mockGeneralInfoPiaA }
diff --git a/apps/genome-page/mocks/piaAMocks/mockLinksPiaA.ts b/apps/genome-page/mocks/piaAMocks/mockLinksPiaA.ts
index 5ebd1a1f93..1f231bd82d 100644
--- a/apps/genome-page/mocks/piaAMocks/mockLinksPiaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockLinksPiaA.ts
@@ -43,4 +43,4 @@ const mockLinksPiaA: Links = {
] as NameWithLink[],
}
-export default mockLinksPiaA
+export { mockLinksPiaA }
diff --git a/apps/genome-page/mocks/piaAMocks/mockOntologyPiaA.ts b/apps/genome-page/mocks/piaAMocks/mockOntologyPiaA.ts
index 5251e7d2d3..6869e28433 100644
--- a/apps/genome-page/mocks/piaAMocks/mockOntologyPiaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockOntologyPiaA.ts
@@ -1,3 +1,4 @@
+/* eslint-disable sonarjs/no-duplicate-string */
import { GoAnnotation } from "dicty-graphql-schema"
interface IMockOntologyData {
@@ -292,4 +293,4 @@ const mockOntologyPiaA: IMockOntologyData = {
],
}
-export default mockOntologyPiaA
+export { mockOntologyPiaA }
diff --git a/apps/genome-page/mocks/piaAMocks/mockOrthologsPiaA.ts b/apps/genome-page/mocks/piaAMocks/mockOrthologsPiaA.ts
index 61f7c9ce63..974ace43d3 100644
--- a/apps/genome-page/mocks/piaAMocks/mockOrthologsPiaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockOrthologsPiaA.ts
@@ -107,4 +107,4 @@ const mockOrthologsPiaA: IMockOrthologsData = {
],
}
-export default mockOrthologsPiaA
+export { mockOrthologsPiaA }
diff --git a/apps/genome-page/mocks/piaAMocks/mockPhenotypesPiaA.ts b/apps/genome-page/mocks/piaAMocks/mockPhenotypesPiaA.ts
index 3eedcad7c3..0f16040cef 100644
--- a/apps/genome-page/mocks/piaAMocks/mockPhenotypesPiaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockPhenotypesPiaA.ts
@@ -1,3 +1,4 @@
+/* eslint-disable sonarjs/no-duplicate-string */
import { Strain } from "dicty-graphql-schema"
/**
@@ -393,4 +394,4 @@ const mockPhenotypesPiaA: { strains: Strain[] } = {
],
}
-export default mockPhenotypesPiaA
+export { mockPhenotypesPiaA }
diff --git a/apps/genome-page/mocks/piaAMocks/mockProductInfoPIaA.ts b/apps/genome-page/mocks/piaAMocks/mockProductInfoPIaA.ts
index 4a6fd9c6bb..ea3e49dba0 100644
--- a/apps/genome-page/mocks/piaAMocks/mockProductInfoPIaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockProductInfoPIaA.ts
@@ -34,4 +34,4 @@ const mockProductInfoPiaA: ProductInformation[] = [
},
]
-export default mockProductInfoPiaA
+export { mockProductInfoPiaA }
diff --git a/apps/genome-page/mocks/piaAMocks/mockReferencesPiaA.ts b/apps/genome-page/mocks/piaAMocks/mockReferencesPiaA.ts
index fb14493b43..c9308fbce0 100644
--- a/apps/genome-page/mocks/piaAMocks/mockReferencesPiaA.ts
+++ b/apps/genome-page/mocks/piaAMocks/mockReferencesPiaA.ts
@@ -2,7 +2,7 @@ import { PublicationWithGene, Gene } from "dicty-graphql-schema"
const mockReferencesPiaA: PublicationWithGene[] = [
{
- related_genes: Array(),
+ related_genes: [] as Array,
id: "17968",
authors: [
{ last_name: "Kamprad", first_name: "", initials: "", rank: "" },
@@ -377,7 +377,7 @@ const mockReferencesPiaA: PublicationWithGene[] = [
status: "",
} as PublicationWithGene,
{
- related_genes: Array(),
+ related_genes: [] as Array,
id: "12499361",
authors: [
{ last_name: "Fey", first_name: "", initials: "", rank: "" },
@@ -400,4 +400,4 @@ const mockReferencesPiaA: PublicationWithGene[] = [
} as PublicationWithGene,
]
-export default mockReferencesPiaA
+export { mockReferencesPiaA }
diff --git a/apps/genome-page/next.config.mjs b/apps/genome-page/next.config.mjs
index cba807b67f..7604670008 100644
--- a/apps/genome-page/next.config.mjs
+++ b/apps/genome-page/next.config.mjs
@@ -21,4 +21,5 @@ const nextConfig = {
},
}
+// eslint-disable-next-line import/no-default-export
export default nextConfig
diff --git a/apps/genome-page/package.json b/apps/genome-page/package.json
index 283adea92c..2bee5f67fe 100644
--- a/apps/genome-page/package.json
+++ b/apps/genome-page/package.json
@@ -14,7 +14,8 @@
"cypress:open": "cypress open",
"cypress:run": "percy exec -- cypress run",
"cypress:ci": "NEXT_PUBLIC_MOCK_SERVER=on start-server-and-test dev http://localhost:3000 cypress:run",
- "lint": "next lint",
+ "lint": "eslint ./ --ext .ts --ext .tsx",
+ "lint:out": "eslint ./ --ext .ts --ext .tsx -f json -o ../../eslint/genomepage.json",
"tsc": "tsc",
"styleguide": "FAST_REFRESH=false styleguidist server",
"styleguide:build": "FAST_REFRESH=false styleguidist build",
diff --git a/apps/genome-page/pages/404.tsx b/apps/genome-page/pages/404.tsx
index daca1fa139..4022da0b9b 100644
--- a/apps/genome-page/pages/404.tsx
+++ b/apps/genome-page/pages/404.tsx
@@ -1,8 +1,7 @@
-import PageNotReady from "components/PageNotReady"
+import { PageNotReady } from "components/PageNotReady"
/* This page allows us to create custom 404 errors */
-const Custom404 = () => {
- return
-}
+const Custom404 = () =>
+// eslint-disable-next-line import/no-default-export
export default Custom404
diff --git a/apps/genome-page/pages/_app.tsx b/apps/genome-page/pages/_app.tsx
index 59d1503eab..e0f2555eac 100644
--- a/apps/genome-page/pages/_app.tsx
+++ b/apps/genome-page/pages/_app.tsx
@@ -4,17 +4,21 @@ import CssBaseline from "@material-ui/core/CssBaseline"
import type { AppProps } from "next/app"
import Head from "next/head"
import { AuthProvider } from "components/features/Authentication/AuthStore"
-import AppProviders from "components/layout/AppProviders"
-import App from "components/layout/App"
-import useGoogleAnalytics from "common/hooks/useGoogleAnalytics"
+import { AppProviders } from "components/layout/AppProviders"
+import { App } from "components/layout/App"
+import { useGoogleAnalytics } from "common/hooks/useGoogleAnalytics"
+import { enableMock } from "mocks"
-const GenomePageApp = ({ Component, pageProps }: AppProps) => {
- useGoogleAnalytics()
- // Activate MSW
- // Utilizing this approach: https://github.com/vercel/next.js/tree/canary/examples/with-msw
+// Activate MSW
+const main = async () => {
if (process.env.NEXT_PUBLIC_MOCK_SERVER === "on") {
- require("../mocks")
+ await enableMock()
}
+}
+main()
+
+const GenomePageApp = ({ Component, pageProps }: AppProps) => {
+ useGoogleAnalytics()
return (
@@ -39,4 +43,5 @@ const GenomePageApp = ({ Component, pageProps }: AppProps) => {
)
}
+// eslint-disable-next-line import/no-default-export
export default GenomePageApp
diff --git a/apps/genome-page/pages/gene/[id]/blast.tsx b/apps/genome-page/pages/gene/[id]/blast.tsx
index 30808d2f13..2e3106bca9 100644
--- a/apps/genome-page/pages/gene/[id]/blast.tsx
+++ b/apps/genome-page/pages/gene/[id]/blast.tsx
@@ -1,6 +1,6 @@
-import BlastContainer from "components/features/Blast/BlastContainer"
-import GraphQLErrorPage from "components/errors/GraphQLErrorPage"
-import BlastLoader from "components/features/Blast/BlastLoader"
+import { BlastContainer } from "components/features/Blast/BlastContainer"
+import { GraphQLErrorPage } from "components/errors/GraphQLErrorPage"
+import { BlastLoader } from "components/features/Blast/BlastLoader"
import { useRouter } from "next/router"
import { useGeneQuery, GeneQuery } from "dicty-graphql-schema"
@@ -27,4 +27,5 @@ const BlastPageWrapper = () => {
)
}
+// eslint-disable-next-line import/no-default-export
export default BlastPageWrapper
diff --git a/apps/genome-page/pages/gene/[id]/callback.tsx b/apps/genome-page/pages/gene/[id]/callback.tsx
index fb5f586aa8..34fe915431 100644
--- a/apps/genome-page/pages/gene/[id]/callback.tsx
+++ b/apps/genome-page/pages/gene/[id]/callback.tsx
@@ -1,7 +1,6 @@
-import OauthCallback from "components/features/Authentication/OauthCallback"
+import { OauthCallback } from "components/features/Authentication/OauthCallback"
-const OauthCallbackPage = () => {
- return
-}
+const OauthCallbackPage = () =>
+// eslint-disable-next-line import/no-default-export
export default OauthCallbackPage
diff --git a/apps/genome-page/pages/gene/[id]/communityannotations.tsx b/apps/genome-page/pages/gene/[id]/communityannotations.tsx
index 1695ea4db5..0b46d56f60 100644
--- a/apps/genome-page/pages/gene/[id]/communityannotations.tsx
+++ b/apps/genome-page/pages/gene/[id]/communityannotations.tsx
@@ -1,43 +1,46 @@
import { useRouter } from "next/router"
import { useState, useEffect, useMemo } from "react"
-import * as E from "fp-ts/Either"
-import * as TE from "fp-ts/TaskEither"
+import { right, left, fold } from "fp-ts/Either"
+import { type TaskEither } from "fp-ts/TaskEither"
import { pipe } from "fp-ts/lib/function"
+import FS from "@isomorphic-git/lightning-fs"
import { cloneGithubWiki } from "../../../common/hooks/useGithubWiki"
import { toOutput, WikiContentEither } from "../../../common/hooks/WikiDisplay"
-import FS from "@isomorphic-git/lightning-fs"
+// eslint-disable-next-line import/no-default-export
export default function Gene() {
const router = useRouter()
// markdown file that will be retrieved from the wiki
const geneFile = `${router.query.id}.md`
- //react state that contains the markdown content
+ // react state that contains the markdown content
const [content, setContent] = useState(
- E.right({ loading: true }),
+ right({ loading: true }),
)
// two functions to set the state in case of success or error
- const errSet = (err: string) => setContent(E.left(err))
+ const errorSet = (error: string) => setContent(left(error))
const contentSet = (cont: string) =>
- setContent(E.right({ markdown: cont, loading: false }))
+ setContent(right({ markdown: cont, loading: false }))
// returns a promise that resolves to returing the markdown content
- const wikiFn = useMemo(() => {
- return cloneGithubWiki({
- dir: "/wiki",
- file: geneFile,
- browserFS: new FS("github-wiki"),
- url: "https://github.com/dictybase-playground/ontomania.wiki.git",
- })
- }, [geneFile])
+ const wikiFunction = useMemo(
+ () =>
+ cloneGithubWiki({
+ dir: "/wiki",
+ file: geneFile,
+ browserFS: new FS("github-wiki"),
+ url: "https://github.com/dictybase-playground/ontomania.wiki.git",
+ }),
+ [geneFile],
+ )
// resolves the promise, returns the content or the error
useEffect(() => {
- const prog = async (fn: TE.TaskEither) =>
- pipe(await fn(), E.fold(errSet, contentSet))
- prog(wikiFn)
- }, [wikiFn])
+ const prog = async (function_: TaskEither) =>
+ pipe(await function_(), fold(errorSet, contentSet))
+ prog(wikiFunction)
+ }, [wikiFunction])
// renders the content or error
return pipe(content, toOutput)
diff --git a/apps/genome-page/pages/gene/[id]/goannotations.tsx b/apps/genome-page/pages/gene/[id]/goannotations.tsx
index b31671e66d..bd832b4025 100644
--- a/apps/genome-page/pages/gene/[id]/goannotations.tsx
+++ b/apps/genome-page/pages/gene/[id]/goannotations.tsx
@@ -1,6 +1,6 @@
-import OntologyContainer from "components/features/Ontology/OntologyContainer"
-import GraphQLErrorPage from "components/errors/GraphQLErrorPage"
-import OntologyLoader from "components/features/Ontology/OntologyLoader"
+import { OntologyContainer } from "components/features/Ontology/OntologyContainer"
+import { GraphQLErrorPage } from "components/errors/GraphQLErrorPage"
+import { OntologyLoader } from "components/features/Ontology/OntologyLoader"
import { useRouter } from "next/router"
import { useGeneQuery, GeneQuery } from "dicty-graphql-schema"
@@ -27,4 +27,5 @@ const OntologyPageWrapper = () => {
)
}
+// eslint-disable-next-line import/no-default-export
export default OntologyPageWrapper
diff --git a/apps/genome-page/pages/gene/[id]/index.tsx b/apps/genome-page/pages/gene/[id]/index.tsx
index 16d9c2cae0..e9f04b0f47 100644
--- a/apps/genome-page/pages/gene/[id]/index.tsx
+++ b/apps/genome-page/pages/gene/[id]/index.tsx
@@ -1,6 +1,6 @@
-import SummaryContainer from "components/features/Summary/SummaryContainer"
-import SummaryLoader from "components/features/Summary/SummaryLoader"
-import GraphQLErrorPage from "components/errors/GraphQLErrorPage"
+import { SummaryContainer } from "components/features/Summary/SummaryContainer"
+import { SummaryLoader } from "components/features/Summary/SummaryLoader"
+import { GraphQLErrorPage } from "components/errors/GraphQLErrorPage"
import { useRouter } from "next/router"
import { useGeneQuery, GeneQuery } from "dicty-graphql-schema"
@@ -28,4 +28,5 @@ const GenomePageWrapper = () => {
)
}
+// eslint-disable-next-line import/no-default-export
export default GenomePageWrapper
diff --git a/apps/genome-page/pages/gene/[id]/orthologs.tsx b/apps/genome-page/pages/gene/[id]/orthologs.tsx
index 92521c7747..114705ff70 100644
--- a/apps/genome-page/pages/gene/[id]/orthologs.tsx
+++ b/apps/genome-page/pages/gene/[id]/orthologs.tsx
@@ -1,8 +1,8 @@
-import GraphQLErrorPage from "components/errors/GraphQLErrorPage"
-import OrthologsLoader from "components/features/Orthologs/OrthologsLoader"
+import { GraphQLErrorPage } from "components/errors/GraphQLErrorPage"
+import { OrthologsLoader } from "components/features/Orthologs/OrthologsLoader"
import { useRouter } from "next/router"
import { useGeneQuery, GeneQuery } from "dicty-graphql-schema"
-import OrthologsContainer from "components/features/Orthologs/OrthologsContainer"
+import { OrthologsContainer } from "components/features/Orthologs/OrthologsContainer"
/*
Renders the Orthologs page given a gene id
@@ -27,4 +27,5 @@ const OrthologsPageWrapper = () => {
)
}
+// eslint-disable-next-line import/no-default-export
export default OrthologsPageWrapper
diff --git a/apps/genome-page/pages/gene/[id]/phenotypes.tsx b/apps/genome-page/pages/gene/[id]/phenotypes.tsx
index 3e31e83781..149a87c77e 100644
--- a/apps/genome-page/pages/gene/[id]/phenotypes.tsx
+++ b/apps/genome-page/pages/gene/[id]/phenotypes.tsx
@@ -1,6 +1,6 @@
-import PhenotypesContainer from "components/features/Phenotypes/PhenotypesContainer"
-import GraphQLErrorPage from "components/errors/GraphQLErrorPage"
-import PhenotypesLoader from "components/features/Phenotypes/PhenotypesLoader"
+import { PhenotypesContainer } from "components/features/Phenotypes/PhenotypesContainer"
+import { GraphQLErrorPage } from "components/errors/GraphQLErrorPage"
+import { PhenotypesLoader } from "components/features/Phenotypes/PhenotypesLoader"
import { useGeneQuery, GeneQuery } from "dicty-graphql-schema"
import { useRouter } from "next/router"
/*
@@ -24,4 +24,5 @@ const PhenotypesPageWrapper = () => {
)
}
+// eslint-disable-next-line import/no-default-export
export default PhenotypesPageWrapper
diff --git a/apps/genome-page/pages/gene/[id]/proteinInformation.tsx b/apps/genome-page/pages/gene/[id]/proteininformation.tsx
similarity index 67%
rename from apps/genome-page/pages/gene/[id]/proteinInformation.tsx
rename to apps/genome-page/pages/gene/[id]/proteininformation.tsx
index a01559f02f..b05761b1e0 100644
--- a/apps/genome-page/pages/gene/[id]/proteinInformation.tsx
+++ b/apps/genome-page/pages/gene/[id]/proteininformation.tsx
@@ -1,6 +1,6 @@
-import GraphQLErrorPage from "components/errors/GraphQLErrorPage"
-import ProteinInfoLoader from "components/features/ProteinInformation/ProteinInfoLoader"
-import ProteinInfoContainer from "components/features/ProteinInformation/ProteinInfoContainer"
+import { GraphQLErrorPage } from "components/errors/GraphQLErrorPage"
+import { ProteinInfoLoader } from "components/features/ProteinInformation/ProteinInfoLoader"
+import { ProteinInfoContainer } from "components/features/ProteinInformation/ProteinInfoContainer"
import { useRouter } from "next/router"
import { useGeneQuery, GeneQuery } from "dicty-graphql-schema"
@@ -27,4 +27,5 @@ const ProteinInformationPageWrapper = () => {
)
}
+// eslint-disable-next-line import/no-default-export
export default ProteinInformationPageWrapper
diff --git a/apps/genome-page/pages/gene/[id]/references.tsx b/apps/genome-page/pages/gene/[id]/references.tsx
index ec34d3e16e..5e3ae84468 100644
--- a/apps/genome-page/pages/gene/[id]/references.tsx
+++ b/apps/genome-page/pages/gene/[id]/references.tsx
@@ -1,6 +1,6 @@
-import ReferencesContainer from "components/features/References/ReferencesContainer"
-import GraphQLErrorPage from "components/errors/GraphQLErrorPage"
-import ReferencesLoader from "components/features/References/ReferencesLoader"
+import { ReferencesContainer } from "components/features/References/ReferencesContainer"
+import { GraphQLErrorPage } from "components/errors/GraphQLErrorPage"
+import { ReferencesLoader } from "components/features/References/ReferencesLoader"
import { useRouter } from "next/router"
import { useGeneQuery, GeneQuery } from "dicty-graphql-schema"
@@ -24,4 +24,5 @@ const ReferencesPageWrapper = () => {
)
}
+// eslint-disable-next-line import/no-default-export
export default ReferencesPageWrapper
diff --git a/apps/genome-page/pages/load/auth.tsx b/apps/genome-page/pages/load/auth.tsx
index 9fbfd96f19..ff13d33d0f 100644
--- a/apps/genome-page/pages/load/auth.tsx
+++ b/apps/genome-page/pages/load/auth.tsx
@@ -1,7 +1,6 @@
-import AuthLoader from "components/features/Authentication/AuthLoader"
+import { AuthLoader } from "components/features/Authentication/AuthLoader"
-const AuthLoaderPage = () => {
- return
-}
+const AuthLoaderPage = () =>
+// eslint-disable-next-line import/no-default-export
export default AuthLoaderPage
diff --git a/apps/genome-page/pages/login.tsx b/apps/genome-page/pages/login.tsx
index b5f1855768..512311fc9e 100644
--- a/apps/genome-page/pages/login.tsx
+++ b/apps/genome-page/pages/login.tsx
@@ -1,7 +1,6 @@
-import Login from "components/features/Authentication/Login"
+import { Login } from "components/features/Authentication/Login"
-const LoginPage = () => {
- return
-}
+const LoginPage = () =>
+// eslint-disable-next-line import/no-default-export
export default LoginPage
diff --git a/apps/genome-page/pages/logout.tsx b/apps/genome-page/pages/logout.tsx
index 0cb39d7f1e..dee4d4b4fa 100644
--- a/apps/genome-page/pages/logout.tsx
+++ b/apps/genome-page/pages/logout.tsx
@@ -1,7 +1,6 @@
-import Logout from "components/features/Authentication/Logout"
+import { Logout } from "components/features/Authentication/Logout"
-const LogoutPage = () => {
- return
-}
+const LogoutPage = () =>
+// eslint-disable-next-line import/no-default-export
export default LogoutPage
diff --git a/apps/genome-page/styles/blastContainerStyles.ts b/apps/genome-page/styles/blastContainerStyles.ts
index c8fb6e7677..d9beb2f60a 100644
--- a/apps/genome-page/styles/blastContainerStyles.ts
+++ b/apps/genome-page/styles/blastContainerStyles.ts
@@ -69,4 +69,4 @@ const useStyles = makeStyles({
},
})
-export default useStyles
+export { useStyles }
diff --git a/apps/genome-page/styles/dataTableStyles.tsx b/apps/genome-page/styles/dataTableStyles.tsx
index 34971547f3..00101e2ffd 100644
--- a/apps/genome-page/styles/dataTableStyles.tsx
+++ b/apps/genome-page/styles/dataTableStyles.tsx
@@ -26,4 +26,4 @@ const useStyles = makeStyles({
},
})
-export default useStyles
+export { useStyles }
diff --git a/apps/genome-page/styles/displayTableStyles.ts b/apps/genome-page/styles/displayTableStyles.ts
index 7ff2480cdb..28ff317ebf 100644
--- a/apps/genome-page/styles/displayTableStyles.ts
+++ b/apps/genome-page/styles/displayTableStyles.ts
@@ -29,4 +29,4 @@ const useStyles = makeStyles((theme: Theme) => ({
},
}))
-export default useStyles
+export { useStyles }
diff --git a/apps/genome-page/styles/errorStyles.tsx b/apps/genome-page/styles/errorStyles.tsx
index 249ed31e44..95aa6e0a36 100644
--- a/apps/genome-page/styles/errorStyles.tsx
+++ b/apps/genome-page/styles/errorStyles.tsx
@@ -1,6 +1,6 @@
import { makeStyles } from "@material-ui/core/styles"
-const useStyles = makeStyles((theme) => ({
+const useStyles = makeStyles({
error400: {
backgroundColor: "#eff8fb",
textAlign: "center",
@@ -32,6 +32,6 @@ const useStyles = makeStyles((theme) => ({
margin: "0 auto",
display: "table",
},
-}))
+})
-export default useStyles
+export { useStyles }
diff --git a/apps/genome-page/styles/geneOrIDSection.ts b/apps/genome-page/styles/geneOrIdSection.ts
similarity index 95%
rename from apps/genome-page/styles/geneOrIDSection.ts
rename to apps/genome-page/styles/geneOrIdSection.ts
index 9793d095ba..a06f8b7181 100644
--- a/apps/genome-page/styles/geneOrIDSection.ts
+++ b/apps/genome-page/styles/geneOrIdSection.ts
@@ -33,4 +33,4 @@ const useStyles = makeStyles({
},
})
-export default useStyles
+export { useStyles }
diff --git a/apps/genome-page/styles/querySection.ts b/apps/genome-page/styles/querySection.ts
index 21409236cb..a3fca16e94 100644
--- a/apps/genome-page/styles/querySection.ts
+++ b/apps/genome-page/styles/querySection.ts
@@ -33,4 +33,4 @@ const useStyles = makeStyles({
},
})
-export default useStyles
+export { useStyles }
diff --git a/apps/genome-page/tsconfig.json b/apps/genome-page/tsconfig.json
index 216f11a079..cbbc9f12c2 100644
--- a/apps/genome-page/tsconfig.json
+++ b/apps/genome-page/tsconfig.json
@@ -2,7 +2,7 @@
"compilerOptions": {
"allowJs": true,
"allowSyntheticDefaultImports": true,
- "baseUrl": "./",
+ "baseUrl": ".",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
diff --git a/apps/publication/src/__tests__/OauthCallback.test.tsx b/apps/publication/src/__tests__/OauthCallback.test.tsx
index 6f745bb768..563bf46452 100644
--- a/apps/publication/src/__tests__/OauthCallback.test.tsx
+++ b/apps/publication/src/__tests__/OauthCallback.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable turbo/no-undeclared-env-vars */
import React from "react"
import { render, screen } from "@testing-library/react"
import { OauthCallback } from "../components/auth/OauthCallback"
diff --git a/apps/publication/src/__tests__/OauthSignHandler.test.tsx b/apps/publication/src/__tests__/OauthSignHandler.test.tsx
index 3917f011cd..68328564c8 100644
--- a/apps/publication/src/__tests__/OauthSignHandler.test.tsx
+++ b/apps/publication/src/__tests__/OauthSignHandler.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import React from "react"
import { render, waitFor } from "@testing-library/react"
import { LoginDocument } from "dicty-graphql-schema"
diff --git a/apps/publication/src/__tests__/mocks/MockAuthProvider.tsx b/apps/publication/src/__tests__/mocks/MockAuthProvider.tsx
index 910aee091f..38fec7a26a 100644
--- a/apps/publication/src/__tests__/mocks/MockAuthProvider.tsx
+++ b/apps/publication/src/__tests__/mocks/MockAuthProvider.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import React from "react"
import { MockedProvider, MockedResponse } from "@apollo/client/testing"
import { User } from "dicty-graphql-schema"
diff --git a/apps/publication/src/__tests__/mocks/mockdata.ts b/apps/publication/src/__tests__/mocks/mockdata.ts
index 385249aed0..c9f17198ac 100644
--- a/apps/publication/src/__tests__/mocks/mockdata.ts
+++ b/apps/publication/src/__tests__/mocks/mockdata.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { Publication } from "dicty-graphql-schema"
const data: { publication: Publication } = {
diff --git a/apps/publication/src/__tests__/useCreateApolloClient.test.tsx b/apps/publication/src/__tests__/useCreateApolloClient.test.tsx
index d656c8d175..dc441f4eac 100644
--- a/apps/publication/src/__tests__/useCreateApolloClient.test.tsx
+++ b/apps/publication/src/__tests__/useCreateApolloClient.test.tsx
@@ -1,5 +1,5 @@
/* eslint-disable sonarjs/no-duplicate-string */
-/* eslint-disable turbo/no-undeclared-env-vars */
+
import {
isMutation,
getGraphQLServer,
diff --git a/apps/publication/src/common/hooks/useCreateApolloClient.tsx b/apps/publication/src/common/hooks/useCreateApolloClient.tsx
index 608e98c796..9fe8e66901 100644
--- a/apps/publication/src/common/hooks/useCreateApolloClient.tsx
+++ b/apps/publication/src/common/hooks/useCreateApolloClient.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable turbo/no-undeclared-env-vars */
import React from "react"
import {
ApolloClient,
diff --git a/apps/publication/src/common/hooks/useGoogleAnalytics.tsx b/apps/publication/src/common/hooks/useGoogleAnalytics.tsx
index 71469a81e0..c64ea28b7a 100644
--- a/apps/publication/src/common/hooks/useGoogleAnalytics.tsx
+++ b/apps/publication/src/common/hooks/useGoogleAnalytics.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable turbo/no-undeclared-env-vars */
import { useRouter } from "next/router"
import React from "react"
diff --git a/apps/publication/src/common/utils/footerItems.ts b/apps/publication/src/common/utils/footerItems.ts
index 5e3c29117f..b9f390e111 100644
--- a/apps/publication/src/common/utils/footerItems.ts
+++ b/apps/publication/src/common/utils/footerItems.ts
@@ -1,4 +1,3 @@
-/* eslint-disable turbo/no-undeclared-env-vars */
const footerLinks = {
data: [
{
diff --git a/apps/publication/src/common/utils/navbarItems.ts b/apps/publication/src/common/utils/navbarItems.ts
index 472c14825d..c43dfb90fa 100644
--- a/apps/publication/src/common/utils/navbarItems.ts
+++ b/apps/publication/src/common/utils/navbarItems.ts
@@ -1,4 +1,3 @@
-/* eslint-disable turbo/no-undeclared-env-vars */
const navbarItems = {
data: [
{
diff --git a/apps/publication/src/components/JournalData.tsx b/apps/publication/src/components/JournalData.tsx
index 4a13918353..e5ce07b89c 100644
--- a/apps/publication/src/components/JournalData.tsx
+++ b/apps/publication/src/components/JournalData.tsx
@@ -22,7 +22,6 @@ interface JournalDataProperties {
*/
const JournalData = ({ data }: JournalDataProperties) => {
- // eslint-disable-next-line camelcase
const { id, doi, pub_date, journal, pages, issue, volume } = data
const classes = useStyles()
diff --git a/apps/publication/src/components/auth/OauthCallback.tsx b/apps/publication/src/components/auth/OauthCallback.tsx
index c237d31caf..5471e9cea0 100644
--- a/apps/publication/src/components/auth/OauthCallback.tsx
+++ b/apps/publication/src/components/auth/OauthCallback.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable turbo/no-undeclared-env-vars */
import React, { useEffect } from "react"
import Box from "@material-ui/core/Box"
import Typography from "@material-ui/core/Typography"
diff --git a/apps/publication/src/components/auth/OauthSignHandler.tsx b/apps/publication/src/components/auth/OauthSignHandler.tsx
index c2166b6fec..9142e15b16 100644
--- a/apps/publication/src/components/auth/OauthSignHandler.tsx
+++ b/apps/publication/src/components/auth/OauthSignHandler.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import React from "react"
import querystring from "node:querystring"
import { useLoginMutation, User } from "dicty-graphql-schema"
diff --git a/apps/stock-center/src/__tests__/AvailableDisplay.test.tsx b/apps/stock-center/src/__tests__/AvailableDisplay.test.tsx
index 90427558f6..b0f2279402 100644
--- a/apps/stock-center/src/__tests__/AvailableDisplay.test.tsx
+++ b/apps/stock-center/src/__tests__/AvailableDisplay.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { test, expect } from "vitest"
import { render, screen } from "@testing-library/react"
import { MemoryRouter } from "react-router-dom"
diff --git a/apps/stock-center/src/components/AddToCartButtonHandler.tsx b/apps/stock-center/src/components/AddToCartButtonHandler.tsx
index 9c5437a629..d889677912 100644
--- a/apps/stock-center/src/components/AddToCartButtonHandler.tsx
+++ b/apps/stock-center/src/components/AddToCartButtonHandler.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { useState } from "react"
import { match } from "ts-pattern"
import { Strain } from "dicty-graphql-schema"
diff --git a/apps/stock-center/src/components/SubmitButton.tsx b/apps/stock-center/src/components/SubmitButton.tsx
index 2eed5c559e..4fe5619add 100644
--- a/apps/stock-center/src/components/SubmitButton.tsx
+++ b/apps/stock-center/src/components/SubmitButton.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { makeStyles } from "@material-ui/core/styles"
import Button from "@material-ui/core/Button"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
diff --git a/apps/stock-center/src/hooks/useCartItemProperties.ts b/apps/stock-center/src/hooks/useCartItemProperties.ts
index e89b835b51..21a7210c4b 100644
--- a/apps/stock-center/src/hooks/useCartItemProperties.ts
+++ b/apps/stock-center/src/hooks/useCartItemProperties.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { useAtomValue } from "jotai"
import { findFirst } from "fp-ts/Array"
import { match as Omatch } from "fp-ts/Option"
diff --git a/apps/stock-center/src/mocks/cartData.ts b/apps/stock-center/src/mocks/cartData.ts
index 36011252b9..7477caf0a1 100644
--- a/apps/stock-center/src/mocks/cartData.ts
+++ b/apps/stock-center/src/mocks/cartData.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
const testItems = [
{
id: "DBS-1",
diff --git a/apps/stock-center/src/mocks/listStrainData.ts b/apps/stock-center/src/mocks/listStrainData.ts
index dc94a94e8a..396bc476c8 100644
--- a/apps/stock-center/src/mocks/listStrainData.ts
+++ b/apps/stock-center/src/mocks/listStrainData.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
const generateRandomData = () => {
const id = `DBS${Math.floor(Math.random() * 100_000)}`
const label = `${String.fromCodePoint(
diff --git a/package.json b/package.json
index f1030111a7..f982772ab5 100644
--- a/package.json
+++ b/package.json
@@ -62,5 +62,8 @@
"not dead",
"not op_mini all"
],
- "dependencies": {}
-}
+ "dependencies": {},
+ "msw": {
+ "workerDirectory": "public"
+ }
+}
\ No newline at end of file
diff --git a/packages/editor/src/Editor.tsx b/packages/editor/src/Editor.tsx
index 407a442565..e8bd3281f4 100644
--- a/packages/editor/src/Editor.tsx
+++ b/packages/editor/src/Editor.tsx
@@ -59,7 +59,7 @@ const Editor = ({
const initialEditorState = content?.editorState || initialStateString || null
const inputClasses = useEditorInputStyles()
const placeholderClasses = useEditorPlaceholderStyles()
- const persistencePluginStyles = usePersistencePluginStyles()
+ // const persistencePluginStyles = usePersistencePluginStyles()
const editorAreaClasses = useEditorAreaStyles({ editable })
return (
diff --git a/packages/eslint-config-custom/index.js b/packages/eslint-config-custom/index.js
index d257d38127..ce79379823 100644
--- a/packages/eslint-config-custom/index.js
+++ b/packages/eslint-config-custom/index.js
@@ -22,17 +22,20 @@ module.exports = {
files: ["*.ts", "*.tsx"],
},
],
+ ignorePatterns: ["next-env.d.ts"],
settings: {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"],
},
"import/resolver": {
typescript: {
+ project: ["apps/genome-page/tsconfig.json"],
alwaysTryTypes: true,
},
},
},
rules: {
+ camelcase: "off",
"import/no-unresolved": "error",
"import/prefer-default-export": "off",
"import/no-default-export": "error",
diff --git a/packages/hook-dsc/src/graphql_config.ts b/packages/hook-dsc/src/graphql_config.ts
index 18c6b8fa28..d8b74ee3c7 100644
--- a/packages/hook-dsc/src/graphql_config.ts
+++ b/packages/hook-dsc/src/graphql_config.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { StrainListDocument, StrainType } from "dicty-graphql-schema"
import { SearchConfigMember, BaseConfigMember } from "./types"
diff --git a/packages/hook-dsc/src/useConfigureStrainCatalogSearchGraphql.ts b/packages/hook-dsc/src/useConfigureStrainCatalogSearchGraphql.ts
index d71220aa24..9feb68e9b1 100644
--- a/packages/hook-dsc/src/useConfigureStrainCatalogSearchGraphql.ts
+++ b/packages/hook-dsc/src/useConfigureStrainCatalogSearchGraphql.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { filter as RAfilter, reduce as RAreduce } from "fp-ts/ReadonlyArray"
import { head as RNAhead } from "fp-ts/ReadonlyNonEmptyArray"
import { keys as Rkeys } from "fp-ts/Record"
diff --git a/packages/news-component/src/mockNews.ts b/packages/news-component/src/mockNews.ts
index 9b251a561b..987b5279d4 100644
--- a/packages/news-component/src/mockNews.ts
+++ b/packages/news-component/src/mockNews.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
const CONTENT_STRING = `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"Annual International Dictyostelium Conference","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"International conferences dedicated to ","type":"text","version":1},{"detail":0,"format":2,"mode":"normal","style":"","text":"Dictyostelium","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" started in 1977 with the meeting in Sardinia, and continued on a roughly 3-year cycle into the 1980's. However, as the field became more active, more local meetings sprang up to fill the gaps in the cycle. Notable amongst these was an annual series in the UK, which gradually became more international. By the late 1980's with the successive meetings at Amsterdam, Oxford, Airlie and Cambridge, the current pattern of annual meetings was established. Interestingly in the late 1990's as the field expanded further, local meetings were re-started in several countries. ","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"flex-layout","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}`
const listNewsContent = [
{
diff --git a/packages/resizable-image/src/useImageStyles.ts b/packages/resizable-image/src/useImageStyles.ts
index b6655d0889..e1c6565690 100644
--- a/packages/resizable-image/src/useImageStyles.ts
+++ b/packages/resizable-image/src/useImageStyles.ts
@@ -13,8 +13,10 @@ export type StyleProperties = {
const useImageStyles = makeStyles({
root: {
position: "relative",
- height: ({ height: currentHeight }) => `${currentHeight}px`,
- width: ({ width: currentWidth }) => `${currentWidth}px`,
+ height: ({ height: currentHeight }) =>
+ currentHeight ? `${currentHeight}px` : "auto",
+ width: ({ width: currentWidth }) =>
+ currentWidth ? `${currentWidth}px` : "auto",
display: "flex",
justifyContent: "center",
alignItems: "center",
diff --git a/packages/ui-common/src/EditablePages/AddPageEditor.tsx b/packages/ui-common/src/EditablePages/AddPageEditor.tsx
index 2d47fa9038..dc99138101 100644
--- a/packages/ui-common/src/EditablePages/AddPageEditor.tsx
+++ b/packages/ui-common/src/EditablePages/AddPageEditor.tsx
@@ -36,7 +36,6 @@ const AddPageEditor = ({
variables: {
input: {
name: slug,
- // eslint-disable-next-line camelcase
created_by: userId,
content: value,
namespace,
diff --git a/packages/ui-common/src/EditablePages/EditEditor.tsx b/packages/ui-common/src/EditablePages/EditEditor.tsx
index a5e65d9e55..d9c899c0a7 100644
--- a/packages/ui-common/src/EditablePages/EditEditor.tsx
+++ b/packages/ui-common/src/EditablePages/EditEditor.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { useNavigate } from "react-router-dom"
import {
type ContentBySlugQuery,
diff --git a/packages/ui-common/src/EditablePages/EditableEditor.tsx b/packages/ui-common/src/EditablePages/EditableEditor.tsx
index bb3925d2e4..510400c6fd 100644
--- a/packages/ui-common/src/EditablePages/EditableEditor.tsx
+++ b/packages/ui-common/src/EditablePages/EditableEditor.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { type ContentBySlugQuery } from "dicty-graphql-schema"
import { Editor } from "editor"
import { EditableContentToolbar } from "./EditableContentToolbar"
diff --git a/packages/ui-common/src/mocks/content.ts b/packages/ui-common/src/mocks/content.ts
index 881063dd87..be72d2e5f7 100644
--- a/packages/ui-common/src/mocks/content.ts
+++ b/packages/ui-common/src/mocks/content.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
const contentText = "Test Content"
const lexicalEditorState = `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"${contentText}","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading","version":1,"tag":"h1"},{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"International conferences dedicated to ","type":"text","version":1},{"detail":0,"format":2,"mode":"normal","style":"","text":"Dictyostelium","type":"text","version":1},{"detail":0,"format":0,"mode":"normal","style":"","text":" started in 1977 with the meeting in Sardinia, and continued on a roughly 3-year cycle into the 1980's. However, as the field became more active, more local meetings sprang up to fill the gaps in the cycle. Notable amongst these was an annual series in the UK, which gradually became more international. By the late 1980's with the successive meetings at Amsterdam, Oxford, Airlie and Cambridge, the current pattern of annual meetings was established. Interestingly in the late 1990's as the field expanded further, local meetings were re-started in several countries. ","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"flex-layout","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}`
diff --git a/packages/ui-dsc/src/__tests__/AddToCartDialog.test.tsx b/packages/ui-dsc/src/__tests__/AddToCartDialog.test.tsx
index 5818dc5d30..c4936636da 100644
--- a/packages/ui-dsc/src/__tests__/AddToCartDialog.test.tsx
+++ b/packages/ui-dsc/src/__tests__/AddToCartDialog.test.tsx
@@ -17,7 +17,7 @@ const properties = {
summary: "test summary",
fee: fees.STRAIN_FEE,
quantity: 1,
- // eslint-disable-next-line camelcase
+
in_stock: true,
},
],
diff --git a/packages/ui-dsc/src/__tests__/CartIcon.test.tsx b/packages/ui-dsc/src/__tests__/CartIcon.test.tsx
index 5f750a8817..30bfe37a0c 100644
--- a/packages/ui-dsc/src/__tests__/CartIcon.test.tsx
+++ b/packages/ui-dsc/src/__tests__/CartIcon.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { expect, test } from "vitest"
import { render, screen } from "@testing-library/react"
import { MemoryRouter } from "react-router-dom"
diff --git a/packages/ui-dsc/src/__tests__/CartItem.test.tsx b/packages/ui-dsc/src/__tests__/CartItem.test.tsx
index b382d5c365..7b47f5b940 100644
--- a/packages/ui-dsc/src/__tests__/CartItem.test.tsx
+++ b/packages/ui-dsc/src/__tests__/CartItem.test.tsx
@@ -10,7 +10,7 @@ const testItem = {
label: "testStrain",
quantity: 1,
fee: 10,
- // eslint-disable-next-line camelcase
+
in_stock: true,
}
diff --git a/packages/ui-dsc/src/__tests__/CatalogTableDisplay.test.tsx b/packages/ui-dsc/src/__tests__/CatalogTableDisplay.test.tsx
index 0e1f824ac5..eb463ce67d 100644
--- a/packages/ui-dsc/src/__tests__/CatalogTableDisplay.test.tsx
+++ b/packages/ui-dsc/src/__tests__/CatalogTableDisplay.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { vi, describe, test, expect } from "vitest"
import { render, screen } from "@testing-library/react"
import userEvent from "@testing-library/user-event"
diff --git a/packages/ui-dsc/src/__tests__/OrderSummary.test.tsx b/packages/ui-dsc/src/__tests__/OrderSummary.test.tsx
index 31696ea5f1..8cf75a2e8a 100644
--- a/packages/ui-dsc/src/__tests__/OrderSummary.test.tsx
+++ b/packages/ui-dsc/src/__tests__/OrderSummary.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { describe, test, expect } from "vitest"
import { render, screen } from "@testing-library/react"
import { OrderSummary } from "../order/OrderSummary"
diff --git a/packages/ui-dsc/src/__tests__/OrderSummaryPdf.test.tsx b/packages/ui-dsc/src/__tests__/OrderSummaryPdf.test.tsx
index 1758717463..a2b3a360b6 100644
--- a/packages/ui-dsc/src/__tests__/OrderSummaryPdf.test.tsx
+++ b/packages/ui-dsc/src/__tests__/OrderSummaryPdf.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { ReactNode } from "react"
import { vi, describe, test, expect } from "vitest"
import { render, screen } from "@testing-library/react"
diff --git a/packages/ui-dsc/src/__tests__/PublicationDisplay.test.tsx b/packages/ui-dsc/src/__tests__/PublicationDisplay.test.tsx
index e46217a11a..54f08f664b 100644
--- a/packages/ui-dsc/src/__tests__/PublicationDisplay.test.tsx
+++ b/packages/ui-dsc/src/__tests__/PublicationDisplay.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { test, expect } from "vitest"
import { render, screen } from "@testing-library/react"
import {
diff --git a/packages/ui-dsc/src/__tests__/StrainDetailsCardHeader.test.tsx b/packages/ui-dsc/src/__tests__/StrainDetailsCardHeader.test.tsx
index 0920d0dc67..4db02a175e 100644
--- a/packages/ui-dsc/src/__tests__/StrainDetailsCardHeader.test.tsx
+++ b/packages/ui-dsc/src/__tests__/StrainDetailsCardHeader.test.tsx
@@ -14,7 +14,7 @@ const properties = {
label: "test1",
summary: "this is the best test strain in the world",
fee: fees.STRAIN_FEE,
- // eslint-disable-next-line camelcase
+
in_stock: true,
quantity: 1,
},
diff --git a/packages/ui-dsc/src/__tests__/functional.test.tsx b/packages/ui-dsc/src/__tests__/functional.test.tsx
index a37b404388..008ea92207 100644
--- a/packages/ui-dsc/src/__tests__/functional.test.tsx
+++ b/packages/ui-dsc/src/__tests__/functional.test.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { describe, expect, test } from "vitest"
import { render, screen } from "@testing-library/react"
import { renderStrainTotal } from "../functional"
diff --git a/packages/ui-dsc/src/__tests__/getDepositorName.test.ts b/packages/ui-dsc/src/__tests__/getDepositorName.test.ts
index ef0659a425..8b2c239ab4 100644
--- a/packages/ui-dsc/src/__tests__/getDepositorName.test.ts
+++ b/packages/ui-dsc/src/__tests__/getDepositorName.test.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { getDepositorName } from "../utils/getDepositorName"
describe("features/Stocks/Details/utils/getDepositorName", () => {
diff --git a/packages/ui-dsc/src/catalog/StrainDetailsCard.tsx b/packages/ui-dsc/src/catalog/StrainDetailsCard.tsx
index 7b4e188ec2..77103e2692 100644
--- a/packages/ui-dsc/src/catalog/StrainDetailsCard.tsx
+++ b/packages/ui-dsc/src/catalog/StrainDetailsCard.tsx
@@ -140,7 +140,7 @@ const StrainDetailsCard = ({ data }: Properties) => {
label: data?.label as string,
summary: data?.summary as string,
fee: fees.STRAIN_FEE,
- // eslint-disable-next-line camelcase
+
in_stock: true,
}
diff --git a/packages/ui-dsc/src/home/Slideshow.tsx b/packages/ui-dsc/src/home/Slideshow.tsx
index 49c140cc6f..a80538c1dc 100644
--- a/packages/ui-dsc/src/home/Slideshow.tsx
+++ b/packages/ui-dsc/src/home/Slideshow.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
import { Carousel } from "react-responsive-carousel"
import { makeStyles } from "@material-ui/core/styles"
import { Image } from "@dictybase/dicty-image"
diff --git a/packages/ui-dsc/src/mocks/mockSearchData.ts b/packages/ui-dsc/src/mocks/mockSearchData.ts
index 3858ac11e6..0b75fd9569 100644
--- a/packages/ui-dsc/src/mocks/mockSearchData.ts
+++ b/packages/ui-dsc/src/mocks/mockSearchData.ts
@@ -1,5 +1,4 @@
/* eslint-disable sonarjs/no-duplicate-string */
-/* eslint-disable camelcase */
const first50 = [
{
id: "DBS0266721",
diff --git a/packages/ui-dsc/src/mocks/mockStrain.ts b/packages/ui-dsc/src/mocks/mockStrain.ts
index 28173caf77..d04a1c1013 100644
--- a/packages/ui-dsc/src/mocks/mockStrain.ts
+++ b/packages/ui-dsc/src/mocks/mockStrain.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
/* eslint-disable sonarjs/no-duplicate-string */
import { Strain, Gene, Publication, Phenotype } from "dicty-graphql-schema"
diff --git a/packages/ui-dsc/src/mocks/testData.ts b/packages/ui-dsc/src/mocks/testData.ts
index 36011252b9..7477caf0a1 100644
--- a/packages/ui-dsc/src/mocks/testData.ts
+++ b/packages/ui-dsc/src/mocks/testData.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
const testItems = [
{
id: "DBS-1",
diff --git a/packages/ui-dsc/src/utils/getDepositorName.ts b/packages/ui-dsc/src/utils/getDepositorName.ts
index 86be299eb8..c8b0850121 100644
--- a/packages/ui-dsc/src/utils/getDepositorName.ts
+++ b/packages/ui-dsc/src/utils/getDepositorName.ts
@@ -1,4 +1,3 @@
-/* eslint-disable camelcase */
type Depositor = {
/** First name of depositor */
first_name?: string
diff --git a/turbo.json b/turbo.json
index b509c9d25f..b9817deb2c 100644
--- a/turbo.json
+++ b/turbo.json
@@ -1,5 +1,17 @@
{
"$schema": "https://turborepo.org/schema.json",
+ "globalEnv": [
+ "NODE_ENV",
+ "NEXT_PUBLIC_GRAPHQL_SERVER",
+ "NEXT_PUBLIC_BASENAME",
+ "NEXT_PUBLIC_GA_TRACKING_ID",
+ "NEXT_PUBLIC_GRAPHQL_SERVER",
+ "NEXT_PUBLIC_ALT_GRAPHQL_SERVER",
+ "NEXT_PUBLIC_FOOTER_JSON",
+ "NEXT_PUBLIC_NAVBAR_JSON",
+ "NEXT_PUBLIC_MOCK_SERVER",
+ "NEXT_PUBLIC_DEPLOY_ENV"
+ ],
"pipeline": {
"build": {
"dependsOn": ["^build"],