Detailed changes
@@ -1,4 +1,25 @@
{
- "extends": ["react-app", "plugin:prettier/recommended"],
- "ignorePatterns": ["src/fragmentTypes.js"]
+ "extends": [
+ "react-app",
+ "prettier/@typescript-eslint",
+ "plugin:prettier/recommended"
+ ],
+ "rules": {
+ "import/order": [
+ "error", {
+ "alphabetize": {"order": "asc"},
+ "pathGroups": [{
+ "pattern": "@material-ui/**",
+ "group": "external",
+ "position": "after"
+ }, {
+ "pattern": "*.generated",
+ "group": "sibling",
+ "position": "after"
+ }],
+ "groups": [["builtin", "external"], "parent", ["sibling", "index"]],
+ "newlines-between": "always"
+ }
+ ]
+ }
}
@@ -26,4 +26,4 @@ generates:
hooks:
afterOneFileWrite:
- - prettier --write
+ - eslint --fix
@@ -46,7 +46,7 @@
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"generate": "graphql-codegen",
- "lint": "eslint src/"
+ "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'"
},
"proxy": "http://localhost:3001",
"browserslist": [
@@ -1,18 +1,18 @@
import AppBar from '@material-ui/core/AppBar';
import CssBaseline from '@material-ui/core/CssBaseline';
+import Toolbar from '@material-ui/core/Toolbar';
import {
createMuiTheme,
ThemeProvider,
makeStyles,
} from '@material-ui/core/styles';
-import Toolbar from '@material-ui/core/Toolbar';
import React from 'react';
import { Route, Switch } from 'react-router';
import { Link } from 'react-router-dom';
+import CurrentIdentity from './CurrentIdentity';
import BugQuery from './bug/BugQuery';
import ListQuery from './list/ListQuery';
-import CurrentIdentity from './CurrentIdentity';
const theme = createMuiTheme({
palette: {
@@ -1,5 +1,5 @@
-import Tooltip from '@material-ui/core/Tooltip/Tooltip';
import MAvatar from '@material-ui/core/Avatar';
+import Tooltip from '@material-ui/core/Tooltip/Tooltip';
import React from 'react';
import { AuthoredFragment } from './Author.generated';
@@ -1,8 +1,9 @@
-import unified from 'unified';
-import parse from 'remark-parse';
+import { ReactNode } from 'react';
import html from 'remark-html';
+import parse from 'remark-parse';
import remark2react from 'remark-react';
-import { ReactNode } from 'react';
+import unified from 'unified';
+
import ImageTag from './tag/ImageTag';
import PreTag from './tag/PreTag';
@@ -1,6 +1,6 @@
-import React from 'react';
import Avatar from '@material-ui/core/Avatar';
import { makeStyles } from '@material-ui/core/styles';
+import React from 'react';
import { useCurrentIdentityQuery } from './CurrentIdentity.generated';
@@ -1,13 +1,13 @@
-import React from 'react';
+import { common } from '@material-ui/core/colors';
import { makeStyles } from '@material-ui/core/styles';
import {
getContrastRatio,
darken,
} from '@material-ui/core/styles/colorManipulator';
-import { common } from '@material-ui/core/colors';
+import React from 'react';
-import { Color } from './gqlTypes';
import { LabelFragment } from './Label.generated';
+import { Color } from './gqlTypes';
// Minimum contrast between the background and the text color
const contrastThreshold = 2.5;
@@ -1,11 +1,13 @@
-import { makeStyles } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography/Typography';
+import { makeStyles } from '@material-ui/core/styles';
import React from 'react';
+
import Author from '../Author';
import Date from '../Date';
-import TimelineQuery from './TimelineQuery';
import Label from '../Label';
+
import { BugFragment } from './Bug.generated';
+import TimelineQuery from './TimelineQuery';
const useStyles = makeStyles(theme => ({
main: {
@@ -2,8 +2,8 @@ import CircularProgress from '@material-ui/core/CircularProgress';
import React from 'react';
import { RouteComponentProps } from 'react-router-dom';
-import { useGetBugQuery } from './BugQuery.generated';
import Bug from './Bug';
+import { useGetBugQuery } from './BugQuery.generated';
type Props = RouteComponentProps<{
id: string;
@@ -1,5 +1,6 @@
import { makeStyles } from '@material-ui/styles';
import React from 'react';
+
import Author from '../Author';
import Date from '../Date';
import Label from '../Label';
@@ -1,10 +1,11 @@
-import { makeStyles } from '@material-ui/styles';
import Paper from '@material-ui/core/Paper';
+import { makeStyles } from '@material-ui/styles';
import React from 'react';
+
import Author from '../Author';
import { Avatar } from '../Author';
-import Date from '../Date';
import Content from '../Content';
+import Date from '../Date';
const useStyles = makeStyles(theme => ({
author: {
@@ -1,5 +1,6 @@
import { makeStyles } from '@material-ui/styles';
import React from 'react';
+
import Author from '../Author';
import Date from '../Date';
@@ -1,5 +1,6 @@
import { makeStyles } from '@material-ui/styles';
import React from 'react';
+
import Author from '../Author';
import Date from '../Date';
@@ -1,5 +1,6 @@
import { makeStyles } from '@material-ui/styles';
import React from 'react';
+
import LabelChange from './LabelChange';
import Message from './Message';
import SetStatus from './SetStatus';
@@ -1,7 +1,7 @@
import CircularProgress from '@material-ui/core/CircularProgress';
import React from 'react';
-import Timeline from './Timeline';
+import Timeline from './Timeline';
import { useTimelineQuery } from './TimelineQuery.generated';
const TimelineQuery = ({ id }) => {
@@ -1,5 +1,5 @@
-import ThemeProvider from '@material-ui/styles/ThemeProvider';
import { createMuiTheme } from '@material-ui/core/styles';
+import ThemeProvider from '@material-ui/styles/ThemeProvider';
import ApolloClient from 'apollo-boost';
import {
IntrospectionFragmentMatcher,
@@ -10,8 +10,8 @@ import { ApolloProvider } from 'react-apollo';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
-import introspectionQueryResultData from './fragmentTypes';
import App from './App';
+import introspectionQueryResultData from './fragmentTypes';
const theme = createMuiTheme();
@@ -1,16 +1,18 @@
-import { makeStyles } from '@material-ui/core/styles';
import TableCell from '@material-ui/core/TableCell/TableCell';
import TableRow from '@material-ui/core/TableRow/TableRow';
import Tooltip from '@material-ui/core/Tooltip/Tooltip';
-import ErrorOutline from '@material-ui/icons/ErrorOutline';
+import { makeStyles } from '@material-ui/core/styles';
import CheckCircleOutline from '@material-ui/icons/CheckCircleOutline';
+import ErrorOutline from '@material-ui/icons/ErrorOutline';
import React from 'react';
import { Link } from 'react-router-dom';
+
import Date from '../Date';
import Label from '../Label';
-import { BugRowFragment } from './BugRow.generated';
import { Status } from '../gqlTypes';
+import { BugRowFragment } from './BugRow.generated';
+
type OpenClosedProps = { className: string };
const Open = ({ className }: OpenClosedProps) => (
<Tooltip title="Open">
@@ -1,12 +1,12 @@
-import React, { useState, useRef } from 'react';
-import { Link } from 'react-router-dom';
-import { LocationDescriptor } from 'history';
-import clsx from 'clsx';
-import { makeStyles } from '@material-ui/core/styles';
-import { SvgIconProps } from '@material-ui/core/SvgIcon';
import Menu from '@material-ui/core/Menu';
import MenuItem from '@material-ui/core/MenuItem';
+import { SvgIconProps } from '@material-ui/core/SvgIcon';
+import { makeStyles } from '@material-ui/core/styles';
import ArrowDropDown from '@material-ui/icons/ArrowDropDown';
+import clsx from 'clsx';
+import { LocationDescriptor } from 'history';
+import React, { useState, useRef } from 'react';
+import { Link } from 'react-router-dom';
export type Query = { [key: string]: Array<string> };
@@ -1,10 +1,11 @@
-import { makeStyles } from '@material-ui/core/styles';
-import React from 'react';
-import { LocationDescriptor } from 'history';
import { pipe } from '@arrows/composition';
import Toolbar from '@material-ui/core/Toolbar';
-import ErrorOutline from '@material-ui/icons/ErrorOutline';
+import { makeStyles } from '@material-ui/core/styles';
import CheckCircleOutline from '@material-ui/icons/CheckCircleOutline';
+import ErrorOutline from '@material-ui/icons/ErrorOutline';
+import { LocationDescriptor } from 'history';
+import React from 'react';
+
import {
FilterDropdown,
FilterProps,
@@ -1,6 +1,7 @@
import Table from '@material-ui/core/Table/Table';
import TableBody from '@material-ui/core/TableBody/TableBody';
import React from 'react';
+
import BugRow from './BugRow';
import { BugListFragment } from './ListQuery.generated';
@@ -1,16 +1,17 @@
-import { fade, makeStyles, Theme } from '@material-ui/core/styles';
import IconButton from '@material-ui/core/IconButton';
+import InputBase from '@material-ui/core/InputBase';
+import Paper from '@material-ui/core/Paper';
+import { fade, makeStyles, Theme } from '@material-ui/core/styles';
+import ErrorOutline from '@material-ui/icons/ErrorOutline';
import KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';
import KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';
-import ErrorOutline from '@material-ui/icons/ErrorOutline';
-import Paper from '@material-ui/core/Paper';
-import InputBase from '@material-ui/core/InputBase';
import Skeleton from '@material-ui/lab/Skeleton';
+import { ApolloError } from 'apollo-boost';
import React, { useState, useEffect, useRef } from 'react';
import { useLocation, useHistory, Link } from 'react-router-dom';
-import { ApolloError } from 'apollo-boost';
-import List from './List';
+
import FilterToolbar from './FilterToolbar';
+import List from './List';
import { useListBugsQuery } from './ListQuery.generated';
type StylesProps = { searching?: boolean };
@@ -1,5 +1,5 @@
-import React from 'react';
import { makeStyles } from '@material-ui/styles';
+import React from 'react';
const useStyles = makeStyles({
tag: {
@@ -1,5 +1,5 @@
-import React from 'react';
import { makeStyles } from '@material-ui/styles';
+import React from 'react';
const useStyles = makeStyles({
tag: {