From 9ee86fb16772ed0bb0fc977ef489243841d6db0b Mon Sep 17 00:00:00 2001 From: Alex Ware Date: Tue, 4 Sep 2018 16:30:25 +0100 Subject: [PATCH 1/3] eslint spike --- .eslintrc.js | 13 ++----- frontend/App.tsx | 16 ++++---- frontend/components/ArticleBody.tsx | 2 +- frontend/components/Footer.tsx | 8 ++-- .../components/Header/Nav/EditionDropdown.tsx | 2 +- .../Header/Nav/Links/SupportTheGuardian.tsx | 13 ++----- .../components/Header/Nav/Links/index.tsx | 21 ++++------ frontend/components/Header/Nav/Logo.tsx | 6 ++- .../components/Header/Nav/MainMenu/Column.tsx | 37 ++++++++---------- .../Header/Nav/MainMenu/Columns.tsx | 11 ++---- .../components/Header/Nav/MainMenu/index.tsx | 14 +++---- .../Nav/MainMenuToggle/VeggieBurger.tsx | 14 +++---- .../Header/Nav/MainMenuToggle/index.tsx | 10 ++--- .../components/Header/Nav/Pillars/index.tsx | 6 +-- frontend/components/Header/Nav/SubNav.tsx | 12 +++--- frontend/components/Header/Nav/index.tsx | 2 +- frontend/components/Header/index.tsx | 2 +- frontend/components/MostViewed.tsx | 8 ++-- frontend/document.tsx | 18 ++++----- frontend/pages/Article.tsx | 4 +- package.json | 2 + .../guui/components/CloseButton/index.tsx | 4 +- packages/guui/components/Container/index.tsx | 10 ++--- packages/guui/components/Dropdown/index.tsx | 14 +++---- packages/guui/components/Grid/index.tsx | 39 +++++++------------ packages/guui/components/Number/index.tsx | 4 +- yarn.lock | 25 ++++++++++++ 27 files changed, 152 insertions(+), 165 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index cfaaa54e285..3fc9abf61c3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -3,16 +3,9 @@ module.exports = { browser: true, node: true, }, - parser: 'babel-eslint', - parserOptions: { - ecmaVersion: 8, - sourceType: 'module', - ecmaFeatures: { - jsx: true, - }, - }, + parser: 'typescript-eslint-parser', extends: ['airbnb', 'prettier', 'prettier/react', 'plugin:jsx-a11y/strict'], - plugins: ['react', 'prettier', 'jsx-a11y'], + plugins: ['react', 'prettier', 'jsx-a11y', 'typescript'], rules: { 'no-underscore-dangle': 'off', 'prettier/prettier': ['error'], @@ -21,7 +14,7 @@ module.exports = { 'react/jsx-filename-extension': [ 1, { - extensions: ['.js'], + extensions: ['.tsx'], }, ], 'react/default-props-match-prop-types': 'off', diff --git a/frontend/App.tsx b/frontend/App.tsx index b5d133f03e5..75b7ab955a0 100644 --- a/frontend/App.tsx +++ b/frontend/App.tsx @@ -1,15 +1,15 @@ import React from 'react'; export interface Data { - CAPI: CAPIType, - NAV: NavType, - page: string, - site: string -}; + CAPI: CAPIType; + NAV: NavType; + page: string; + site: string; +} const App: React.SFC<{ - data: Data, - Page: React.StatelessComponent<{data: Data}>, -}> = ({ Page, data }) => + data: Data; + Page: React.StatelessComponent<{ data: Data }>; +}> = ({ Page, data }) => ; export default App; diff --git a/frontend/components/ArticleBody.tsx b/frontend/components/ArticleBody.tsx index 3f5ebca66ea..dad644a03fa 100644 --- a/frontend/components/ArticleBody.tsx +++ b/frontend/components/ArticleBody.tsx @@ -301,7 +301,7 @@ const dtFormat = (date: Date) => dateformat(date, 'ddd d mmm yyyy HH:MM "GMT"'); /* eslint-disable react/no-danger */ const ArticleBody: React.SFC<{ - CAPI: CAPIType, + CAPI: CAPIType; }> = ({ CAPI }) => (
diff --git a/frontend/components/Footer.tsx b/frontend/components/Footer.tsx index 0a090283aa7..f74aa2d6c1f 100644 --- a/frontend/components/Footer.tsx +++ b/frontend/components/Footer.tsx @@ -7,8 +7,8 @@ import { textSans } from '@guardian/pasteup/fonts'; import { Container } from '@guardian/guui'; type Link = { - title: string, - url: string, + title: string; + url: string; }; const footerLinks: Array> = [ @@ -194,8 +194,8 @@ const copyright = css` margin-top: 12px; `; -const FooterLinks: React.SFC< { - links: Array>, +const FooterLinks: React.SFC<{ + links: Array>; }> = ({ links }) => { const linkGroups = links.map(linkGroup => { const ls = linkGroup.map(l => ( diff --git a/frontend/components/Header/Nav/EditionDropdown.tsx b/frontend/components/Header/Nav/EditionDropdown.tsx index 8639a6b6c92..ee7c41110fa 100644 --- a/frontend/components/Header/Nav/EditionDropdown.tsx +++ b/frontend/components/Header/Nav/EditionDropdown.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Dropdown } from '@guardian/guui'; -import { Link } from '@guardian/guui/components/Dropdown'; +import { Link } from '@guardian/guui/components/Dropdown'; import { css } from 'react-emotion'; diff --git a/frontend/components/Header/Nav/Links/SupportTheGuardian.tsx b/frontend/components/Header/Nav/Links/SupportTheGuardian.tsx index 208b815783f..6c3dcf7718d 100644 --- a/frontend/components/Header/Nav/Links/SupportTheGuardian.tsx +++ b/frontend/components/Header/Nav/Links/SupportTheGuardian.tsx @@ -37,15 +37,10 @@ const style = css` `; const SupportTheGuardian: React.SFC<{ - className?: string, - children: React.ReactChild, - href: string -}> = ({ - className, - children, - href, - ...props -}) => ( + className?: string; + children: React.ReactChild; + href: string; +}> = ({ className, children, href, ...props }) => ( {children} diff --git a/frontend/components/Header/Nav/Links/index.tsx b/frontend/components/Header/Nav/Links/index.tsx index 00e74ceb57e..a65aa12c01f 100644 --- a/frontend/components/Header/Nav/Links/index.tsx +++ b/frontend/components/Header/Nav/Links/index.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React from 'react'; import { css, cx } from 'react-emotion'; import Dropdown from '@guardian/guui/components/Dropdown'; @@ -62,15 +62,10 @@ const link = ({ showAtTablet }: { showAtTablet: boolean }) => css` `; const Search: React.SFC<{ - href: string, - children: React.ReactChild, - className?: string, -}> = ({ - className, - children, - href, - ...props -}) => ( + href: string; + children: React.ReactChild; + className?: string; +}> = ({ className, children, href, ...props }) => ( {children} @@ -124,9 +119,9 @@ const identityLinks: Array = [ ]; const Links: React.SFC<{ - isPayingMember: boolean, - isRecentContributor: boolean, - isSignedIn: boolean, + isPayingMember: boolean; + isRecentContributor: boolean; + isSignedIn: boolean; }> = ({ isPayingMember, isRecentContributor, isSignedIn }) => (
{isPayingMember || diff --git a/frontend/components/Header/Nav/Logo.tsx b/frontend/components/Header/Nav/Logo.tsx index e57c214afdb..69c858e8eb6 100644 --- a/frontend/components/Header/Nav/Logo.tsx +++ b/frontend/components/Header/Nav/Logo.tsx @@ -67,7 +67,11 @@ const SVG = () => ; const Logo: React.SFC = () => ( - + The Guardian - Back to home diff --git a/frontend/components/Header/Nav/MainMenu/Column.tsx b/frontend/components/Header/Nav/MainMenu/Column.tsx index a7614a832aa..019d98df730 100644 --- a/frontend/components/Header/Nav/MainMenu/Column.tsx +++ b/frontend/components/Header/Nav/MainMenu/Column.tsx @@ -75,11 +75,11 @@ const collapseColumnButton = css` `; const CollapseColumnButton: React.SFC<{ - column: LinkType, - showColumnLinks: boolean, - toggleColumnLinks: () => void, - ariaControls: string, - isLastIndex: boolean, + column: LinkType; + showColumnLinks: boolean; + toggleColumnLinks: () => void; + ariaControls: string; + isLastIndex: boolean; }> = ({ column, showColumnLinks, @@ -164,9 +164,9 @@ const mainMenuLinkStyle = css` } `; -const ColumnLink: React.SFC<{ - column: LinkType, - link: LinkType, +const ColumnLink: React.SFC<{ + column: LinkType; + link: LinkType; }> = ({ link, column }) => (
  • , - showColumnLinks: boolean, - id: string, -}> = ({ - column, - showColumnLinks, - id, - brandExtensions, -}) => { + column: LinkType; + brandExtensions: Array; + showColumnLinks: boolean; + id: string; +}> = ({ column, showColumnLinks, id, brandExtensions }) => { const links = getColumnLinks(column, brandExtensions); return ( @@ -297,9 +292,9 @@ const columnStyle = css` `; type ColumnProps = { - column: LinkType, - isLastIndex: boolean, - brandExtensions: Array, + column: LinkType; + isLastIndex: boolean; + brandExtensions: Array; }; export class Column extends Component< diff --git a/frontend/components/Header/Nav/MainMenu/Columns.tsx b/frontend/components/Header/Nav/MainMenu/Columns.tsx index 12d196771a1..84be5385d97 100644 --- a/frontend/components/Header/Nav/MainMenu/Columns.tsx +++ b/frontend/components/Header/Nav/MainMenu/Columns.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React from 'react'; import { css } from 'react-emotion'; import { tablet, desktop, leftCol, wide } from '@guardian/pasteup/breakpoints'; @@ -95,12 +95,9 @@ const brandExtensionLink = css` `; export const Columns: React.SFC<{ - columns: Array, - brandExtensions: Array, -}> = ({ - columns, - brandExtensions, -}) => ( + columns: Array; + brandExtensions: Array; +}> = ({ columns, brandExtensions }) => (