From 5be785f864a3df417e6915c582ce6eb75aea6576 Mon Sep 17 00:00:00 2001 From: ksample89 Date: Fri, 25 Mar 2022 12:20:48 -0400 Subject: [PATCH 1/7] prettier rc, Countries file, ReadMe instructions --- .prettierrc | 10 ++-- README.md | 14 ++++-- src/app/containers/Countries/index.tsx | 66 +++++++++++--------------- 3 files changed, 42 insertions(+), 48 deletions(-) diff --git a/.prettierrc b/.prettierrc index b88daf7..473084a 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,9 +1,9 @@ { - "printWidth": 80, + "arrowParens": "avoid", + "bracketSpacing": true, + "semi": false, "tabWidth": 2, - "useTabs": false, - "semi": true, "singleQuote": true, "trailingComma": "all", - "arrowParens": "avoid" -} + "useTabs": false +} \ No newline at end of file diff --git a/README.md b/README.md index 7f0bf87..69b2dbf 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ This is a simple web app that based on the [react-boilerplate CRA template](http It currently has two pages, an index and a `/countries` page which downloads a list of countries from the CareRev API and displays links to a country detail page. Right now the link leads to a 404. Your task is to add the missing route which will download the details for the selected country and display them. -**NOTE:** The task is broken up into smaller steps and shouldn't take more than an hour or two in total. If you find yourself stuck on any step, simply note where you ran into any problems and what you were trying to do so we can discuss it later, then move on to the next step. +**NOTE:** If you find yourself stuck on any step, simply note where you ran into any problems and what you were trying to do so we can discuss it later, then move on to the next step. -1. Get the app running with `yarn install` and `yarn start` +1. Get the app running with `npm install` and `npm start` 2. Add a route for `/country/:id` @@ -20,6 +20,12 @@ It currently has two pages, an index and a `/countries` page which downloads a l 7. Display that country's name and currency code in the container when it loads, using the selector(s). -8. Bonus (optional): Add an error view in case the data fetching has a problem. +8. Add an error view in case the data fetching has a problem. -This added container should function roughly like the existing `Countries` container. In the interview, we'll discuss this app, ways to improve it, architectural concepts, best practices and what ideas you think are important in making a strong, reliable and easy to use app. \ No newline at end of file +9. Style the page with tailwind. + +10. Ensure the page meets accessibility standards. + +11. Add unit tests. + +This added container should function roughly like the existing `Countries` container. In the interview, we'll discuss this app, ways to improve it, architectural concepts, best practices and what ideas you think are important in making a strong, reliable and easy to use app. diff --git a/src/app/containers/Countries/index.tsx b/src/app/containers/Countries/index.tsx index 29ef29d..f89bd82 100644 --- a/src/app/containers/Countries/index.tsx +++ b/src/app/containers/Countries/index.tsx @@ -1,53 +1,41 @@ -import React, { useEffect } from 'react'; -import styled from 'styled-components/macro'; -import { useSelector, useDispatch } from 'react-redux'; -import { useInjectReducer, useInjectSaga } from 'utils/redux-injectors'; -import { saga } from './saga'; -import { key, countriesReducer } from './reducer'; -import { actions } from './actions'; -import { selectCountries, selectLoading, selectError } from './selectors'; -import { LoadingIndicator } from 'app/components/LoadingIndicator'; -import { Link } from 'app/components/Link'; -import { PageWrapper } from 'app/components/PageWrapper'; +import React, { useEffect } from 'react' +import { useSelector, useDispatch } from 'react-redux' +import { useInjectReducer, useInjectSaga } from 'utils/redux-injectors' +import { saga } from './saga' +import { key, countriesReducer } from './reducer' +import { actions } from './actions' +import { selectCountries, selectLoading, selectError } from './selectors' +import { LoadingIndicator } from 'app/components/LoadingIndicator' +import { Link } from 'app/components/Link' +import { PageWrapper } from 'app/components/PageWrapper' -export function Countries() { - useInjectReducer({ key: key, reducer: countriesReducer }); - useInjectSaga({ key: key, saga }); +export const Countries = () => { + useInjectReducer({ key: key, reducer: countriesReducer }) + useInjectSaga({ key: key, saga }) - const countries = useSelector(selectCountries); - const isLoading = useSelector(selectLoading); - const error = useSelector(selectError); + const countries = useSelector(selectCountries) + const isLoading = useSelector(selectLoading) + const error = useSelector(selectError) - const dispatch = useDispatch(); + const dispatch = useDispatch() useEffect(() => { - dispatch(actions.fetchCountries()); - }, [dispatch]); + dispatch(actions.fetchCountries()) + }, [dispatch]) return (

Countries

{isLoading && } - {countries?.length > 0 ? ( - + {countries?.length > 0 && ( +
    {countries.map(country => ( - +
  • {country.name} - +
  • ))} - - ) : error ? ( - {error} - ) : null} +
+ )} + {error &&
{error}
}
- ); + ) } - -const Country = styled.li` - color: blue; -`; - -const ErrorText = styled.span` - color: ${p => p.theme.text}; -`; - -const List = styled.div``; From 9b59148a5a2ea7b7c725756ce9f83b548144f016 Mon Sep 17 00:00:00 2001 From: ksample89 Date: Fri, 25 Mar 2022 12:40:39 -0400 Subject: [PATCH 2/7] add slice commented code --- .eslintcache | 2 +- .../__snapshots__/index.test.tsx.snap | 27 -------------- .../components/Link/__tests__/index.test.tsx | 36 ------------------- src/app/containers/Countries/actions.tsx | 28 --------------- src/app/containers/Countries/index.tsx | 19 ++++++---- src/app/containers/Countries/reducer.tsx | 24 ------------- src/app/containers/Countries/saga.ts | 20 +++++------ src/app/containers/Countries/selectors.ts | 15 ++++---- src/app/containers/Countries/slice.ts | 31 ++++++++++++++++ 9 files changed, 61 insertions(+), 141 deletions(-) delete mode 100644 src/app/components/Link/__tests__/__snapshots__/index.test.tsx.snap delete mode 100644 src/app/components/Link/__tests__/index.test.tsx delete mode 100644 src/app/containers/Countries/actions.tsx delete mode 100644 src/app/containers/Countries/reducer.tsx create mode 100644 src/app/containers/Countries/slice.ts diff --git a/.eslintcache b/.eslintcache index aab2df7..9f5d802 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/Users/drew/Documents/carerev-sample/src/locales/i18n.ts":"1","/Users/drew/Documents/carerev-sample/src/styles/theme/ThemeProvider.tsx":"2","/Users/drew/Documents/carerev-sample/src/app/containers/HomePage/index.tsx":"3","/Users/drew/Documents/carerev-sample/src/app/components/Link/index.ts":"4","/Users/drew/Documents/carerev-sample/src/app/containers/LanguageSwitch/messages.ts":"5","/Users/drew/Documents/carerev-sample/src/utils/request.ts":"6","/Users/drew/Documents/carerev-sample/src/app/index.tsx":"7","/Users/drew/Documents/carerev-sample/src/styles/theme/themes.ts":"8","/Users/drew/Documents/carerev-sample/src/app/containers/NotFoundPage/index.tsx":"9","/Users/drew/Documents/carerev-sample/src/index.tsx":"10","/Users/drew/Documents/carerev-sample/src/styles/theme/utils.ts":"11","/Users/drew/Documents/carerev-sample/src/styles/theme/slice.ts":"12","/Users/drew/Documents/carerev-sample/src/styles/global-styles.ts":"13","/Users/drew/Documents/carerev-sample/src/app/components/LoadingIndicator/index.tsx":"14","/Users/drew/Documents/carerev-sample/src/app/containers/NotFoundPage/P.ts":"15","/Users/drew/Documents/carerev-sample/src/store/reducers.ts":"16","/Users/drew/Documents/carerev-sample/src/app/containers/Countries/index.tsx":"17","/Users/drew/Documents/carerev-sample/src/app/components/PageWrapper/index.ts":"18","/Users/drew/Documents/carerev-sample/src/app/containers/Countries/saga.ts":"19","/Users/drew/Documents/carerev-sample/src/app/containers/Countries/reducer.tsx":"20","/Users/drew/Documents/carerev-sample/src/app/containers/Countries/selectors.ts":"21"},{"size":1124,"mtime":1609202726944,"results":"22","hashOfConfig":"23"},{"size":580,"mtime":1609202726954,"results":"24","hashOfConfig":"23"},{"size":550,"mtime":1609208694958,"results":"25","hashOfConfig":"23"},{"size":307,"mtime":1609202726893,"results":"26","hashOfConfig":"23"},{"size":232,"mtime":1609202726929,"results":"27","hashOfConfig":"23"},{"size":1434,"mtime":1609202726967,"results":"28","hashOfConfig":"23"},{"size":1192,"mtime":1609208885298,"results":"29","hashOfConfig":"23"},{"size":385,"mtime":1609208799962,"results":"30","hashOfConfig":"23"},{"size":1101,"mtime":1609208828206,"results":"31","hashOfConfig":"23"},{"size":1799,"mtime":1609202726941,"results":"32","hashOfConfig":"23"},{"size":528,"mtime":1609202726958,"results":"33","hashOfConfig":"23"},{"size":1082,"mtime":1609202726956,"results":"34","hashOfConfig":"23"},{"size":720,"mtime":1609202726952,"results":"35","hashOfConfig":"23"},{"size":1063,"mtime":1609202726895,"results":"36","hashOfConfig":"23"},{"size":187,"mtime":1609202726937,"results":"37","hashOfConfig":"23"},{"size":632,"mtime":1609202726950,"results":"38","hashOfConfig":"23"},{"size":1558,"mtime":1609209139127,"results":"39","hashOfConfig":"23"},{"size":171,"mtime":1609202726896,"results":"40","hashOfConfig":"23"},{"size":714,"mtime":1609208959579,"results":"41","hashOfConfig":"23"},{"size":630,"mtime":1609209157562,"results":"42","hashOfConfig":"23"},{"size":590,"mtime":1609207168770,"results":"43","hashOfConfig":"23"},{"filePath":"44","messages":"45","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"kwpepp",{"filePath":"46","messages":"47","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"48","messages":"49","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"50","messages":"51","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"52","messages":"53","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"54","messages":"55","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"56","messages":"57","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"58","messages":"59","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"60","messages":"61","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"64"},{"filePath":"65","messages":"66","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"67","messages":"68","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"69"},{"filePath":"70","messages":"71","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"74","messages":"75","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"76","messages":"77","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"78","messages":"79","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"80","messages":"81","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"82","messages":"83","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"84","messages":"85","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/drew/Documents/carerev-sample/src/locales/i18n.ts",[],"/Users/drew/Documents/carerev-sample/src/styles/theme/ThemeProvider.tsx",[],"/Users/drew/Documents/carerev-sample/src/app/containers/HomePage/index.tsx",[],"/Users/drew/Documents/carerev-sample/src/app/components/Link/index.ts",[],"/Users/drew/Documents/carerev-sample/src/app/containers/LanguageSwitch/messages.ts",[],"/Users/drew/Documents/carerev-sample/src/utils/request.ts",[],"/Users/drew/Documents/carerev-sample/src/app/index.tsx",[],"/Users/drew/Documents/carerev-sample/src/styles/theme/themes.ts",[],"/Users/drew/Documents/carerev-sample/src/app/containers/NotFoundPage/index.tsx",[],"/Users/drew/Documents/carerev-sample/src/index.tsx",[],["88","89"],"/Users/drew/Documents/carerev-sample/src/styles/theme/utils.ts",[],"/Users/drew/Documents/carerev-sample/src/styles/theme/slice.ts",[],["90","91"],"/Users/drew/Documents/carerev-sample/src/styles/global-styles.ts",[],"/Users/drew/Documents/carerev-sample/src/app/components/LoadingIndicator/index.tsx",[],"/Users/drew/Documents/carerev-sample/src/app/containers/NotFoundPage/P.ts",[],"/Users/drew/Documents/carerev-sample/src/store/reducers.ts",[],"/Users/drew/Documents/carerev-sample/src/app/containers/Countries/index.tsx",[],"/Users/drew/Documents/carerev-sample/src/app/components/PageWrapper/index.ts",[],"/Users/drew/Documents/carerev-sample/src/app/containers/Countries/saga.ts",[],"/Users/drew/Documents/carerev-sample/src/app/containers/Countries/reducer.tsx",[],"/Users/drew/Documents/carerev-sample/src/app/containers/Countries/selectors.ts",[],{"ruleId":"92","replacedBy":"93"},{"ruleId":"94","replacedBy":"95"},{"ruleId":"92","replacedBy":"96"},{"ruleId":"94","replacedBy":"97"},"no-native-reassign",["98"],"no-negated-in-lhs",["99"],["98"],["99"],"no-global-assign","no-unsafe-negation"] \ No newline at end of file +[{"/Users/kellysample/Development/web-example/src/index.tsx":"1","/Users/kellysample/Development/web-example/src/locales/i18n.ts":"2","/Users/kellysample/Development/web-example/src/locales/translations.ts":"3","/Users/kellysample/Development/web-example/src/serviceWorker.ts":"4","/Users/kellysample/Development/web-example/src/store/configureStore.ts":"5","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx":"6","/Users/kellysample/Development/web-example/src/store/reducers.ts":"7","/Users/kellysample/Development/web-example/src/app/index.tsx":"8","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts":"9","/Users/kellysample/Development/web-example/src/styles/global-styles.ts":"10","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts":"11","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts":"12","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx":"13","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx":"14","/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts":"15","/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx":"16","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx":"17","/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx":"18","/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts":"19","/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts":"20","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/P.ts":"21","/Users/kellysample/Development/web-example/src/utils/loadable.tsx":"22","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts":"23","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx":"24","/Users/kellysample/Development/web-example/src/utils/request.ts":"25","/Users/kellysample/Development/web-example/src/app/components/Link/index.ts":"26","/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts":"27","/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts":"28"},{"size":1799,"mtime":1648222804296,"results":"29","hashOfConfig":"30"},{"size":1124,"mtime":1648222804297,"results":"31","hashOfConfig":"30"},{"size":1131,"mtime":1648222804297,"results":"32","hashOfConfig":"30"},{"size":5283,"mtime":1648225159469,"results":"33","hashOfConfig":"30"},{"size":907,"mtime":1648222804299,"results":"34","hashOfConfig":"30"},{"size":580,"mtime":1648222804301,"results":"35","hashOfConfig":"30"},{"size":632,"mtime":1648222804299,"results":"36","hashOfConfig":"30"},{"size":1192,"mtime":1648222804295,"results":"37","hashOfConfig":"30"},{"size":1082,"mtime":1648222804302,"results":"38","hashOfConfig":"30"},{"size":720,"mtime":1648222804300,"results":"39","hashOfConfig":"30"},{"size":528,"mtime":1648222804302,"results":"40","hashOfConfig":"30"},{"size":385,"mtime":1648222804302,"results":"41","hashOfConfig":"30"},{"size":354,"mtime":1648222804294,"results":"42","hashOfConfig":"30"},{"size":589,"mtime":1648225858882,"results":"43","hashOfConfig":"30"},{"size":58,"mtime":1648222804300,"results":"44","hashOfConfig":"30"},{"size":1332,"mtime":1648226479002,"results":"45","hashOfConfig":"30"},{"size":1101,"mtime":1648225858885,"results":"46","hashOfConfig":"30"},{"size":550,"mtime":1648225858884,"results":"47","hashOfConfig":"30"},{"size":708,"mtime":1648226603007,"results":"48","hashOfConfig":"30"},{"size":532,"mtime":1648226461029,"results":"49","hashOfConfig":"30"},{"size":187,"mtime":1648222804294,"results":"50","hashOfConfig":"30"},{"size":750,"mtime":1648222804305,"results":"51","hashOfConfig":"30"},{"size":475,"mtime":1648222804306,"results":"52","hashOfConfig":"30"},{"size":1063,"mtime":1648225858881,"results":"53","hashOfConfig":"30"},{"size":1434,"mtime":1648222804306,"results":"54","hashOfConfig":"30"},{"size":307,"mtime":1648225858880,"results":"55","hashOfConfig":"30"},{"size":171,"mtime":1648225858881,"results":"56","hashOfConfig":"30"},{"size":685,"mtime":1648226300241,"results":"57","hashOfConfig":"30"},{"filePath":"58","messages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":21,"fixableErrorCount":0,"fixableWarningCount":21,"source":"60","usedDeprecatedRules":"61"},"11mdaqp",{"filePath":"62","messages":"63","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"64","usedDeprecatedRules":"61"},{"filePath":"65","messages":"66","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"67","usedDeprecatedRules":"61"},{"filePath":"68","messages":"69","errorCount":0,"fatalErrorCount":0,"warningCount":32,"fixableErrorCount":0,"fixableWarningCount":32,"source":"70","usedDeprecatedRules":"61"},{"filePath":"71","messages":"72","errorCount":0,"fatalErrorCount":0,"warningCount":11,"fixableErrorCount":0,"fixableWarningCount":11,"source":"73","usedDeprecatedRules":"61"},{"filePath":"74","messages":"75","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"76","usedDeprecatedRules":"61"},{"filePath":"77","messages":"78","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"79","usedDeprecatedRules":"61"},{"filePath":"80","messages":"81","errorCount":0,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":10,"source":"82","usedDeprecatedRules":"61"},{"filePath":"83","messages":"84","errorCount":0,"fatalErrorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":15,"source":"85","usedDeprecatedRules":"61"},{"filePath":"86","messages":"87","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"88","usedDeprecatedRules":"61"},{"filePath":"89","messages":"90","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"91","usedDeprecatedRules":"61"},{"filePath":"92","messages":"93","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"94","usedDeprecatedRules":"61"},{"filePath":"95","messages":"96","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"97","usedDeprecatedRules":"61"},{"filePath":"98","messages":"99","errorCount":0,"fatalErrorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":6,"source":null},{"filePath":"100","messages":"101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"61"},{"filePath":"102","messages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":null},{"filePath":"106","messages":"107","errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":5,"source":null},{"filePath":"108","messages":"109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"110","messages":"111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"112","messages":"113","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"114","usedDeprecatedRules":"61"},{"filePath":"115","messages":"116","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"117","usedDeprecatedRules":"61"},{"filePath":"118","messages":"119","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"120","usedDeprecatedRules":"61"},{"filePath":"121","messages":"122","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":null},{"filePath":"123","messages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":12,"source":"125","usedDeprecatedRules":"61"},{"filePath":"126","messages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":null},{"filePath":"128","messages":"129","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":null},{"filePath":"130","messages":"131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/kellysample/Development/web-example/src/index.tsx",["132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152"],"/**\n * index.tsx\n *\n * This is the entry file for the application, only setup and boilerplate\n * code.\n */\n\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport FontFaceObserver from 'fontfaceobserver';\nimport * as serviceWorker from 'serviceWorker';\n\n// Use consistent styling\nimport 'sanitize.css/sanitize.css';\n\nimport { App } from 'app';\n\nimport { HelmetProvider } from 'react-helmet-async';\n\nimport { configureAppStore } from 'store/configureStore';\n\nimport { ThemeProvider } from 'styles/theme/ThemeProvider';\n\n// Initialize languages\nimport './locales/i18n';\n\n// Observe loading of Inter (to remove 'Inter', remove the tag in\n// the index.html file and this observer)\nconst openSansObserver = new FontFaceObserver('Inter', {});\n\n// When Inter is loaded, add a font-family using Inter to the body\nopenSansObserver.load().then(() => {\n document.body.classList.add('fontLoaded');\n});\n\nconst store = configureAppStore();\nconst MOUNT_NODE = document.getElementById('root') as HTMLElement;\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n MOUNT_NODE,\n);\n\n// Hot reloadable translation json files\nif (module.hot) {\n module.hot.accept(['./locales/i18n'], () => {\n // No need to render the App again because i18next works with the hooks\n });\n}\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n",["153","154"],"/Users/kellysample/Development/web-example/src/locales/i18n.ts",["155","156","157","158","159","160","161","162","163"],"import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nimport en from './en/translation.json';\nimport de from './de/translation.json';\nimport { convertLanguageJsonToObject } from './translations';\n\nexport const translationsJson = {\n en: {\n translation: en,\n },\n de: {\n translation: de,\n },\n};\n\n// Create the 'translations' object to provide full intellisense support for the static json files.\nconvertLanguageJsonToObject(en);\n\nexport const i18n = i18next\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n resources: translationsJson,\n fallbackLng: 'en',\n debug:\n process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test',\n\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n });\n","/Users/kellysample/Development/web-example/src/locales/translations.ts",["164","165","166","167","168","169","170","171"],"import { ConvertedToObjectType, TranslationJsonType } from './types';\n\n/**\n * This file is seperate from the './i18n.ts' simply to make the Hot Module Replacement work seamlessly.\n * Your components can import this file in 'messages.ts' files which would ruin the HMR if this isn't a separate module\n */\nexport const translations: ConvertedToObjectType = {} as any;\n\n/*\n * Converts the static JSON file into an object where keys are identical\n * but values are strings concatenated according to syntax.\n * This is helpful when using the JSON file keys and still having the intellisense support\n * along with type-safety\n */\nexport const convertLanguageJsonToObject = (\n json: any,\n objToConvertTo = translations,\n current?: string,\n) => {\n Object.keys(json).forEach(key => {\n const currentLookupKey = current ? `${current}.${key}` : key;\n if (typeof json[key] === 'object') {\n objToConvertTo[key] = {};\n convertLanguageJsonToObject(\n json[key],\n objToConvertTo[key],\n currentLookupKey,\n );\n } else {\n objToConvertTo[key] = currentLookupKey;\n }\n });\n};\n","/Users/kellysample/Development/web-example/src/serviceWorker.ts",["172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203"],"// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/store/configureStore.ts",["204","205","206","207","208","209","210","211","212","213","214"],"import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\nimport { createInjectorsEnhancer } from 'redux-injectors';\nimport createSagaMiddleware from 'redux-saga';\n\nimport { createReducer } from './reducers';\n\nexport function configureAppStore() {\n const reduxSagaMonitorOptions = {};\n const sagaMiddleware = createSagaMiddleware(reduxSagaMonitorOptions);\n const { run: runSaga } = sagaMiddleware;\n\n // Create the store with saga middleware\n const middlewares = [sagaMiddleware];\n\n const enhancers = [\n createInjectorsEnhancer({\n createReducer,\n runSaga,\n }),\n ];\n\n const store = configureStore({\n reducer: createReducer(),\n middleware: [...getDefaultMiddleware(), ...middlewares],\n devTools:\n /* istanbul ignore next line */\n process.env.NODE_ENV !== 'production' ||\n process.env.PUBLIC_URL.length > 0,\n enhancers,\n });\n\n return store;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx",["215","216","217","218","219","220","221","222","223"],"import * as React from 'react';\nimport { ThemeProvider as OriginalThemeProvider } from 'styled-components';\nimport { useSelector } from 'react-redux';\nimport { selectTheme, themeSliceKey, reducer } from './slice';\nimport { useInjectReducer } from 'redux-injectors';\n\nexport const ThemeProvider = (props: { children: React.ReactChild }) => {\n useInjectReducer({ key: themeSliceKey, reducer: reducer });\n\n const theme = useSelector(selectTheme);\n return (\n \n {React.Children.only(props.children)}\n \n );\n};\n","/Users/kellysample/Development/web-example/src/store/reducers.ts",["224","225","226","227"],"/**\n * Combine all reducers in this file and export the combined reducers.\n */\n\nimport { combineReducers } from '@reduxjs/toolkit';\n\nimport { InjectedReducersType } from 'utils/types/injector-typings';\n\n/**\n * Merges the main reducer with the router state and dynamically injected reducers\n */\nexport function createReducer(injectedReducers: InjectedReducersType = {}) {\n // Initially we don't have any injectedReducers, so returning identity function to avoid the error\n if (Object.keys(injectedReducers).length === 0) {\n return state => state;\n } else {\n return combineReducers({\n ...injectedReducers,\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/app/index.tsx",["228","229","230","231","232","233","234","235","236","237"],"/**\n *\n * App\n *\n * This component is the skeleton around the actual pages, and should only\n * contain code that should be seen on all pages. (e.g. navigation bar)\n */\n\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { Switch, Route, BrowserRouter } from 'react-router-dom';\n\nimport { GlobalStyle } from '../styles/global-styles';\n\nimport { HomePage } from './containers/HomePage/Loadable';\nimport { NotFoundPage } from './containers/NotFoundPage/Loadable';\nimport { Countries } from './containers/Countries';\nimport { useTranslation } from 'react-i18next';\n\nexport function App() {\n const { i18n } = useTranslation();\n return (\n \n \n\n \n \n \n \n \n \n \n );\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts",["238","239","240","241","242","243","244","245","246","247","248","249","250","251","252"],"import { PayloadAction, createSelector, createSlice } from '@reduxjs/toolkit';\nimport { ThemeState, ThemeKeyType } from './types';\nimport { themes } from './themes';\nimport { getThemeFromStorage, isSystemDark } from './utils';\nimport { RootState } from 'types';\n\nexport const initialState: ThemeState = {\n selected: getThemeFromStorage() || 'system',\n};\n\nconst themeSlice = createSlice({\n name: 'theme',\n initialState,\n reducers: {\n changeTheme(state, action: PayloadAction) {\n state.selected = action.payload;\n },\n },\n});\n\nexport const selectTheme = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => {\n if (theme.selected === 'system') {\n return isSystemDark ? themes.dark : themes.light;\n }\n return themes[theme.selected];\n },\n);\n\nexport const selectThemeKey = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => theme.selected,\n);\n\nexport const { changeTheme } = themeSlice.actions;\nexport const reducer = themeSlice.reducer;\nexport const themeSliceKey = themeSlice.name;\n","/Users/kellysample/Development/web-example/src/styles/global-styles.ts",["253","254","255"],"import { createGlobalStyle } from 'styled-components';\nimport { StyleConstants } from './StyleConstants';\n/* istanbul ignore next */\nexport const GlobalStyle = createGlobalStyle`\n html,\n body {\n height: 100%;\n width: 100%;\n line-height: 1.5;\n }\n\n body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding-top: ${StyleConstants.NAV_BAR_HEIGHT};\n background-color: ${p => p.theme.background};\n }\n\n body.fontLoaded {\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n \n p,\n label {\n line-height: 1.5em;\n }\n\n input, select, button {\n font-family: inherit;\n font-size: inherit;\n }\n\n .icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n`;\n","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts",["256","257","258","259"],"import { ThemeKeyType } from './types';\n\n/* istanbul ignore next line */\nexport const isSystemDark = window?.matchMedia\n ? window.matchMedia('(prefers-color-scheme: dark)')?.matches\n : undefined;\n\nexport function saveTheme(theme: ThemeKeyType) {\n window.localStorage && localStorage.setItem('selectedTheme', theme);\n}\n\n/* istanbul ignore next line */\nexport function getThemeFromStorage(): ThemeKeyType | null {\n return window.localStorage\n ? (localStorage.getItem('selectedTheme') as ThemeKeyType) || null\n : null;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts",["260","261","262"],"const lightTheme = {\n primary: 'rgba(215,113,88,1)',\n text: 'rgba(58,52,51,1)',\n textSecondary: 'rgba(58,52,51,0.7)',\n background: 'rgba(255,255,255,1)',\n backgroundVariant: 'rgba(251,249,249,1)',\n border: 'rgba(58,52,51,0.12)',\n borderLight: 'rgba(58,52,51,0.05)',\n};\n\nexport type Theme = typeof lightTheme;\n\nexport const themes = {\n light: lightTheme,\n dark: lightTheme,\n};\n","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx",["263","264","265","266"],"/**\n * Asynchronously loads the component for NotFoundPage\n */\n\nimport * as React from 'react';\nimport { lazyLoad } from 'utils/loadable';\nimport { LoadingIndicator } from 'app/components/LoadingIndicator';\n\nexport const NotFoundPage = lazyLoad(\n () => import('./index'),\n module => module.NotFoundPage,\n {\n fallback: ,\n },\n);\n","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx",["267","268","269","270","271","272"],"/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx",["273","274","275","276","277","278","279","280","281"],"/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx",["282","283","284","285","286"],"/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/P.ts",["287","288"],"import styled from 'styled-components/macro';\n\nexport const P = styled.p`\n font-size: 1rem;\n line-height: 1.5;\n color: ${p => p.theme.textSecondary};\n margin: 0.625rem 0 1.5rem 0;\n`;\n","/Users/kellysample/Development/web-example/src/utils/loadable.tsx",["289","290","291","292","293","294","295","296"],"import React, { lazy, Suspense } from 'react';\n\ninterface Opts {\n fallback: React.ReactNode;\n}\ntype Unpromisify = T extends Promise ? P : never;\n\nexport const lazyLoad = <\n T extends Promise,\n U extends React.ComponentType\n>(\n importFunc: () => T,\n selectorFunc?: (s: Unpromisify) => U,\n opts: Opts = { fallback: null },\n) => {\n let lazyFactory: () => Promise<{ default: U }> = importFunc;\n\n if (selectorFunc) {\n lazyFactory = () =>\n importFunc().then(module => ({ default: selectorFunc(module) }));\n }\n\n const LazyComponent = lazy(lazyFactory);\n\n return (props: React.ComponentProps): JSX.Element => (\n \n \n \n );\n};\n","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts",["297","298","299","300"],"import {\n useInjectReducer as useReducer,\n useInjectSaga as useSaga,\n} from 'redux-injectors';\nimport {\n InjectReducerParams,\n InjectSagaParams,\n RootStateKeyType,\n} from './types/injector-typings';\n\n/* Wrap redux-injectors with stricter types */\n\nexport function useInjectReducer(\n params: InjectReducerParams,\n) {\n return useReducer(params);\n}\n\nexport function useInjectSaga(params: InjectSagaParams) {\n return useSaga(params);\n}\n","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx",["301","302","303","304","305","306","307","308","309"],"/Users/kellysample/Development/web-example/src/utils/request.ts",["310","311","312","313","314","315","316","317","318","319","320","321"],"export class ResponseError extends Error {\n public response: Response;\n\n constructor(response: Response) {\n super(response.statusText);\n this.response = response;\n }\n}\n/**\n * Parses the JSON returned by a network request\n *\n * @param {object} response A response from a network request\n *\n * @return {object} The parsed JSON from the request\n */\nfunction parseJSON(response: Response) {\n if (response.status === 204 || response.status === 205) {\n return null;\n }\n return response.json();\n}\n\n/**\n * Checks if a network request came back fine, and throws an error if not\n *\n * @param {object} response A response from a network request\n *\n * @return {object|undefined} Returns either the response, or throws an error\n */\nfunction checkStatus(response: Response) {\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n const error = new ResponseError(response);\n error.response = response;\n throw error;\n}\n\n/**\n * Requests a URL, returning a promise\n *\n * @param {string} url The URL we want to request\n * @param {object} [options] The options we want to pass to \"fetch\"\n *\n * @return {object} The response data\n */\nexport async function request(\n url: string,\n options?: RequestInit,\n): Promise<{} | { err: ResponseError }> {\n const fetchResponse = await fetch(url, options);\n const response = checkStatus(fetchResponse);\n return parseJSON(response);\n}\n","/Users/kellysample/Development/web-example/src/app/components/Link/index.ts",["322","323","324"],"/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts",["325","326"],"/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts",[],{"ruleId":"327","severity":1,"message":"328","line":8,"column":33,"nodeType":null,"endLine":8,"endColumn":34,"fix":"329"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":35,"nodeType":null,"endLine":9,"endColumn":36,"fix":"330"},{"ruleId":"327","severity":1,"message":"328","line":11,"column":31,"nodeType":null,"endLine":11,"endColumn":32,"fix":"331"},{"ruleId":"327","severity":1,"message":"328","line":12,"column":38,"nodeType":null,"endLine":12,"endColumn":39,"fix":"332"},{"ruleId":"327","severity":1,"message":"328","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"333"},{"ruleId":"327","severity":1,"message":"328","line":14,"column":48,"nodeType":null,"endLine":14,"endColumn":49,"fix":"334"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":47,"nodeType":null,"endLine":15,"endColumn":48,"fix":"335"},{"ruleId":"327","severity":1,"message":"328","line":18,"column":35,"nodeType":null,"endLine":18,"endColumn":36,"fix":"336"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":26,"nodeType":null,"endLine":20,"endColumn":27,"fix":"337"},{"ruleId":"327","severity":1,"message":"328","line":22,"column":52,"nodeType":null,"endLine":22,"endColumn":53,"fix":"338"},{"ruleId":"327","severity":1,"message":"328","line":24,"column":57,"nodeType":null,"endLine":24,"endColumn":58,"fix":"339"},{"ruleId":"327","severity":1,"message":"328","line":26,"column":59,"nodeType":null,"endLine":26,"endColumn":60,"fix":"340"},{"ruleId":"327","severity":1,"message":"328","line":29,"column":24,"nodeType":null,"endLine":29,"endColumn":25,"fix":"341"},{"ruleId":"327","severity":1,"message":"328","line":33,"column":59,"nodeType":null,"endLine":33,"endColumn":60,"fix":"342"},{"ruleId":"327","severity":1,"message":"328","line":37,"column":44,"nodeType":null,"endLine":37,"endColumn":45,"fix":"343"},{"ruleId":"327","severity":1,"message":"328","line":38,"column":3,"nodeType":null,"endLine":38,"endColumn":4,"fix":"344"},{"ruleId":"327","severity":1,"message":"328","line":40,"column":34,"nodeType":null,"endLine":40,"endColumn":35,"fix":"345"},{"ruleId":"327","severity":1,"message":"328","line":41,"column":66,"nodeType":null,"endLine":41,"endColumn":67,"fix":"346"},{"ruleId":"327","severity":1,"message":"328","line":54,"column":2,"nodeType":null,"endLine":54,"endColumn":3,"fix":"347"},{"ruleId":"327","severity":1,"message":"328","line":60,"column":5,"nodeType":null,"endLine":60,"endColumn":6,"fix":"348"},{"ruleId":"327","severity":1,"message":"328","line":66,"column":27,"nodeType":null,"endLine":66,"endColumn":28,"fix":"349"},{"ruleId":"350","replacedBy":"351"},{"ruleId":"352","replacedBy":"353"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":30,"nodeType":null,"endLine":1,"endColumn":31,"fix":"354"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":49,"nodeType":null,"endLine":2,"endColumn":50,"fix":"355"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":64,"nodeType":null,"endLine":3,"endColumn":65,"fix":"356"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":39,"nodeType":null,"endLine":5,"endColumn":40,"fix":"357"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":39,"nodeType":null,"endLine":6,"endColumn":40,"fix":"358"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":61,"nodeType":null,"endLine":7,"endColumn":62,"fix":"359"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"360"},{"ruleId":"327","severity":1,"message":"328","line":19,"column":32,"nodeType":null,"endLine":19,"endColumn":33,"fix":"361"},{"ruleId":"327","severity":1,"message":"328","line":38,"column":5,"nodeType":null,"endLine":38,"endColumn":6,"fix":"362"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":69,"nodeType":null,"endLine":1,"endColumn":70,"fix":"363"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":82,"nodeType":null,"endLine":7,"endColumn":83,"fix":"364"},{"ruleId":"327","severity":1,"message":"328","line":21,"column":65,"nodeType":null,"endLine":21,"endColumn":66,"fix":"365"},{"ruleId":"327","severity":1,"message":"328","line":23,"column":31,"nodeType":null,"endLine":23,"endColumn":32,"fix":"366"},{"ruleId":"327","severity":1,"message":"328","line":28,"column":8,"nodeType":null,"endLine":28,"endColumn":9,"fix":"367"},{"ruleId":"327","severity":1,"message":"328","line":30,"column":45,"nodeType":null,"endLine":30,"endColumn":46,"fix":"368"},{"ruleId":"327","severity":1,"message":"328","line":32,"column":5,"nodeType":null,"endLine":32,"endColumn":6,"fix":"369"},{"ruleId":"327","severity":1,"message":"328","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"370"},{"ruleId":"327","severity":1,"message":"328","line":21,"column":2,"nodeType":null,"endLine":21,"endColumn":3,"fix":"371"},{"ruleId":"327","severity":1,"message":"328","line":24,"column":64,"nodeType":null,"endLine":24,"endColumn":65,"fix":"372"},{"ruleId":"327","severity":1,"message":"328","line":25,"column":63,"nodeType":null,"endLine":25,"endColumn":64,"fix":"373"},{"ruleId":"327","severity":1,"message":"328","line":26,"column":2,"nodeType":null,"endLine":26,"endColumn":3,"fix":"374"},{"ruleId":"327","severity":1,"message":"328","line":31,"column":76,"nodeType":null,"endLine":31,"endColumn":77,"fix":"375"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":13,"nodeType":null,"endLine":36,"endColumn":14,"fix":"376"},{"ruleId":"327","severity":1,"message":"328","line":40,"column":66,"nodeType":null,"endLine":40,"endColumn":67,"fix":"377"},{"ruleId":"327","severity":1,"message":"328","line":44,"column":47,"nodeType":null,"endLine":44,"endColumn":48,"fix":"378"},{"ruleId":"327","severity":1,"message":"328","line":52,"column":12,"nodeType":null,"endLine":52,"endColumn":13,"fix":"379"},{"ruleId":"327","severity":1,"message":"328","line":53,"column":11,"nodeType":null,"endLine":53,"endColumn":12,"fix":"380"},{"ruleId":"327","severity":1,"message":"328","line":56,"column":39,"nodeType":null,"endLine":56,"endColumn":40,"fix":"381"},{"ruleId":"327","severity":1,"message":"328","line":58,"column":7,"nodeType":null,"endLine":58,"endColumn":8,"fix":"382"},{"ruleId":"327","severity":1,"message":"328","line":67,"column":57,"nodeType":null,"endLine":67,"endColumn":58,"fix":"383"},{"ruleId":"327","severity":1,"message":"328","line":69,"column":17,"nodeType":null,"endLine":69,"endColumn":18,"fix":"384"},{"ruleId":"327","severity":1,"message":"328","line":80,"column":16,"nodeType":null,"endLine":80,"endColumn":17,"fix":"385"},{"ruleId":"327","severity":1,"message":"328","line":84,"column":46,"nodeType":null,"endLine":84,"endColumn":47,"fix":"386"},{"ruleId":"327","severity":1,"message":"328","line":90,"column":64,"nodeType":null,"endLine":90,"endColumn":65,"fix":"387"},{"ruleId":"327","severity":1,"message":"328","line":94,"column":47,"nodeType":null,"endLine":94,"endColumn":48,"fix":"388"},{"ruleId":"327","severity":1,"message":"328","line":98,"column":10,"nodeType":null,"endLine":98,"endColumn":11,"fix":"389"},{"ruleId":"327","severity":1,"message":"328","line":99,"column":8,"nodeType":null,"endLine":99,"endColumn":9,"fix":"390"},{"ruleId":"327","severity":1,"message":"328","line":102,"column":72,"nodeType":null,"endLine":102,"endColumn":73,"fix":"391"},{"ruleId":"327","severity":1,"message":"328","line":103,"column":7,"nodeType":null,"endLine":103,"endColumn":8,"fix":"392"},{"ruleId":"327","severity":1,"message":"328","line":113,"column":63,"nodeType":null,"endLine":113,"endColumn":64,"fix":"393"},{"ruleId":"327","severity":1,"message":"328","line":121,"column":37,"nodeType":null,"endLine":121,"endColumn":38,"fix":"394"},{"ruleId":"327","severity":1,"message":"328","line":122,"column":13,"nodeType":null,"endLine":122,"endColumn":14,"fix":"395"},{"ruleId":"327","severity":1,"message":"328","line":123,"column":11,"nodeType":null,"endLine":123,"endColumn":12,"fix":"396"},{"ruleId":"327","severity":1,"message":"328","line":126,"column":39,"nodeType":null,"endLine":126,"endColumn":40,"fix":"397"},{"ruleId":"327","severity":1,"message":"328","line":132,"column":8,"nodeType":null,"endLine":132,"endColumn":9,"fix":"398"},{"ruleId":"327","severity":1,"message":"328","line":133,"column":7,"nodeType":null,"endLine":133,"endColumn":8,"fix":"399"},{"ruleId":"327","severity":1,"message":"328","line":140,"column":34,"nodeType":null,"endLine":140,"endColumn":35,"fix":"400"},{"ruleId":"327","severity":1,"message":"328","line":143,"column":37,"nodeType":null,"endLine":143,"endColumn":38,"fix":"401"},{"ruleId":"327","severity":1,"message":"328","line":144,"column":9,"nodeType":null,"endLine":144,"endColumn":10,"fix":"402"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":72,"nodeType":null,"endLine":1,"endColumn":73,"fix":"403"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":58,"nodeType":null,"endLine":2,"endColumn":59,"fix":"404"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":46,"nodeType":null,"endLine":3,"endColumn":47,"fix":"405"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":43,"nodeType":null,"endLine":5,"endColumn":44,"fix":"406"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":37,"nodeType":null,"endLine":8,"endColumn":38,"fix":"407"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":71,"nodeType":null,"endLine":9,"endColumn":72,"fix":"408"},{"ruleId":"327","severity":1,"message":"328","line":10,"column":42,"nodeType":null,"endLine":10,"endColumn":43,"fix":"409"},{"ruleId":"327","severity":1,"message":"328","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"410"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":4,"nodeType":null,"endLine":20,"endColumn":5,"fix":"411"},{"ruleId":"327","severity":1,"message":"328","line":30,"column":5,"nodeType":null,"endLine":30,"endColumn":6,"fix":"412"},{"ruleId":"327","severity":1,"message":"328","line":32,"column":15,"nodeType":null,"endLine":32,"endColumn":16,"fix":"413"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"414"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":75,"nodeType":null,"endLine":2,"endColumn":76,"fix":"415"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":42,"nodeType":null,"endLine":3,"endColumn":43,"fix":"416"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":62,"nodeType":null,"endLine":4,"endColumn":63,"fix":"417"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"418"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":61,"nodeType":null,"endLine":8,"endColumn":62,"fix":"419"},{"ruleId":"327","severity":1,"message":"328","line":10,"column":41,"nodeType":null,"endLine":10,"endColumn":42,"fix":"420"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":4,"nodeType":null,"endLine":15,"endColumn":5,"fix":"421"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"422"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"423"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":68,"nodeType":null,"endLine":7,"endColumn":69,"fix":"424"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":26,"nodeType":null,"endLine":15,"endColumn":27,"fix":"425"},{"ruleId":"327","severity":1,"message":"328","line":19,"column":7,"nodeType":null,"endLine":19,"endColumn":8,"fix":"426"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":31,"nodeType":null,"endLine":9,"endColumn":32,"fix":"427"},{"ruleId":"327","severity":1,"message":"328","line":10,"column":44,"nodeType":null,"endLine":10,"endColumn":45,"fix":"428"},{"ruleId":"327","severity":1,"message":"328","line":11,"column":64,"nodeType":null,"endLine":11,"endColumn":65,"fix":"429"},{"ruleId":"327","severity":1,"message":"328","line":13,"column":54,"nodeType":null,"endLine":13,"endColumn":55,"fix":"430"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":58,"nodeType":null,"endLine":15,"endColumn":59,"fix":"431"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":66,"nodeType":null,"endLine":16,"endColumn":67,"fix":"432"},{"ruleId":"327","severity":1,"message":"328","line":17,"column":51,"nodeType":null,"endLine":17,"endColumn":52,"fix":"433"},{"ruleId":"327","severity":1,"message":"328","line":18,"column":47,"nodeType":null,"endLine":18,"endColumn":48,"fix":"434"},{"ruleId":"327","severity":1,"message":"328","line":21,"column":36,"nodeType":null,"endLine":21,"endColumn":37,"fix":"435"},{"ruleId":"327","severity":1,"message":"328","line":41,"column":4,"nodeType":null,"endLine":41,"endColumn":5,"fix":"436"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":78,"nodeType":null,"endLine":1,"endColumn":79,"fix":"437"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":51,"nodeType":null,"endLine":2,"endColumn":52,"fix":"438"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":34,"nodeType":null,"endLine":3,"endColumn":35,"fix":"439"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":60,"nodeType":null,"endLine":4,"endColumn":61,"fix":"440"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":34,"nodeType":null,"endLine":5,"endColumn":35,"fix":"441"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"442"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":38,"nodeType":null,"endLine":16,"endColumn":39,"fix":"443"},{"ruleId":"327","severity":1,"message":"328","line":19,"column":3,"nodeType":null,"endLine":19,"endColumn":4,"fix":"444"},{"ruleId":"327","severity":1,"message":"328","line":25,"column":55,"nodeType":null,"endLine":25,"endColumn":56,"fix":"445"},{"ruleId":"327","severity":1,"message":"328","line":27,"column":34,"nodeType":null,"endLine":27,"endColumn":35,"fix":"446"},{"ruleId":"327","severity":1,"message":"328","line":29,"column":2,"nodeType":null,"endLine":29,"endColumn":3,"fix":"447"},{"ruleId":"327","severity":1,"message":"328","line":34,"column":2,"nodeType":null,"endLine":34,"endColumn":3,"fix":"448"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":50,"nodeType":null,"endLine":36,"endColumn":51,"fix":"449"},{"ruleId":"327","severity":1,"message":"328","line":37,"column":42,"nodeType":null,"endLine":37,"endColumn":43,"fix":"450"},{"ruleId":"327","severity":1,"message":"328","line":38,"column":45,"nodeType":null,"endLine":38,"endColumn":46,"fix":"451"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":54,"nodeType":null,"endLine":1,"endColumn":55,"fix":"452"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":50,"nodeType":null,"endLine":2,"endColumn":51,"fix":"453"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":2,"nodeType":null,"endLine":36,"endColumn":3,"fix":"454"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":39,"nodeType":null,"endLine":1,"endColumn":40,"fix":"455"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":14,"nodeType":null,"endLine":6,"endColumn":15,"fix":"456"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":70,"nodeType":null,"endLine":9,"endColumn":71,"fix":"457"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":11,"nodeType":null,"endLine":16,"endColumn":12,"fix":"458"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"459"},{"ruleId":"327","severity":1,"message":"328","line":11,"column":38,"nodeType":null,"endLine":11,"endColumn":39,"fix":"460"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"461"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"462"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":42,"nodeType":null,"endLine":6,"endColumn":43,"fix":"463"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":67,"nodeType":null,"endLine":7,"endColumn":68,"fix":"464"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":2,"nodeType":null,"endLine":15,"endColumn":3,"fix":"465"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"466"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":42,"nodeType":null,"endLine":6,"endColumn":43,"fix":"467"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":67,"nodeType":null,"endLine":7,"endColumn":68,"fix":"468"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":45,"nodeType":null,"endLine":8,"endColumn":46,"fix":"469"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"470"},{"ruleId":"327","severity":1,"message":"328","line":28,"column":2,"nodeType":null,"endLine":28,"endColumn":3,"fix":"471"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"472"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":45,"nodeType":null,"endLine":2,"endColumn":46,"fix":"473"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":24,"nodeType":null,"endLine":3,"endColumn":25,"fix":"474"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":43,"nodeType":null,"endLine":4,"endColumn":44,"fix":"475"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":44,"nodeType":null,"endLine":5,"endColumn":45,"fix":"476"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":55,"nodeType":null,"endLine":6,"endColumn":56,"fix":"477"},{"ruleId":"327","severity":1,"message":"328","line":27,"column":4,"nodeType":null,"endLine":27,"endColumn":5,"fix":"478"},{"ruleId":"327","severity":1,"message":"328","line":37,"column":2,"nodeType":null,"endLine":37,"endColumn":3,"fix":"479"},{"ruleId":"327","severity":1,"message":"328","line":48,"column":2,"nodeType":null,"endLine":48,"endColumn":3,"fix":"480"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"481"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":44,"nodeType":null,"endLine":2,"endColumn":45,"fix":"482"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":57,"nodeType":null,"endLine":3,"endColumn":58,"fix":"483"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":43,"nodeType":null,"endLine":4,"endColumn":44,"fix":"484"},{"ruleId":"327","severity":1,"message":"328","line":21,"column":4,"nodeType":null,"endLine":21,"endColumn":5,"fix":"485"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"486"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"487"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":46,"nodeType":null,"endLine":1,"endColumn":47,"fix":"488"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":28,"nodeType":null,"endLine":4,"endColumn":29,"fix":"489"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":61,"nodeType":null,"endLine":6,"endColumn":62,"fix":"490"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":62,"nodeType":null,"endLine":16,"endColumn":63,"fix":"491"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":71,"nodeType":null,"endLine":20,"endColumn":72,"fix":"492"},{"ruleId":"327","severity":1,"message":"328","line":23,"column":42,"nodeType":null,"endLine":23,"endColumn":43,"fix":"493"},{"ruleId":"327","severity":1,"message":"328","line":29,"column":4,"nodeType":null,"endLine":29,"endColumn":5,"fix":"494"},{"ruleId":"327","severity":1,"message":"328","line":30,"column":2,"nodeType":null,"endLine":30,"endColumn":3,"fix":"495"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":25,"nodeType":null,"endLine":4,"endColumn":26,"fix":"496"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":34,"nodeType":null,"endLine":9,"endColumn":35,"fix":"497"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":28,"nodeType":null,"endLine":16,"endColumn":29,"fix":"498"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"499"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"500"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":60,"nodeType":null,"endLine":2,"endColumn":61,"fix":"501"},{"ruleId":"327","severity":1,"message":"328","line":10,"column":2,"nodeType":null,"endLine":10,"endColumn":3,"fix":"502"},{"ruleId":"327","severity":1,"message":"328","line":12,"column":18,"nodeType":null,"endLine":12,"endColumn":19,"fix":"503"},{"ruleId":"327","severity":1,"message":"328","line":18,"column":2,"nodeType":null,"endLine":18,"endColumn":3,"fix":"504"},{"ruleId":"327","severity":1,"message":"328","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"505"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":18,"nodeType":null,"endLine":36,"endColumn":19,"fix":"506"},{"ruleId":"327","severity":1,"message":"328","line":44,"column":2,"nodeType":null,"endLine":44,"endColumn":3,"fix":"507"},{"ruleId":"327","severity":1,"message":"328","line":50,"column":2,"nodeType":null,"endLine":50,"endColumn":3,"fix":"508"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":28,"nodeType":null,"endLine":2,"endColumn":29,"fix":"509"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"510"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":29,"nodeType":null,"endLine":6,"endColumn":30,"fix":"511"},{"ruleId":"327","severity":1,"message":"328","line":18,"column":16,"nodeType":null,"endLine":18,"endColumn":17,"fix":"512"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"513"},{"ruleId":"327","severity":1,"message":"328","line":32,"column":20,"nodeType":null,"endLine":32,"endColumn":21,"fix":"514"},{"ruleId":"327","severity":1,"message":"328","line":34,"column":44,"nodeType":null,"endLine":34,"endColumn":45,"fix":"515"},{"ruleId":"327","severity":1,"message":"328","line":35,"column":28,"nodeType":null,"endLine":35,"endColumn":29,"fix":"516"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":14,"nodeType":null,"endLine":36,"endColumn":15,"fix":"517"},{"ruleId":"327","severity":1,"message":"328","line":51,"column":50,"nodeType":null,"endLine":51,"endColumn":51,"fix":"518"},{"ruleId":"327","severity":1,"message":"328","line":52,"column":46,"nodeType":null,"endLine":52,"endColumn":47,"fix":"519"},{"ruleId":"327","severity":1,"message":"328","line":53,"column":29,"nodeType":null,"endLine":53,"endColumn":30,"fix":"520"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"521"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":54,"nodeType":null,"endLine":2,"endColumn":55,"fix":"522"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"523"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"524"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"525"},"prettier/prettier","Delete `;`",{"range":"526","text":"527"},{"range":"528","text":"527"},{"range":"529","text":"527"},{"range":"530","text":"527"},{"range":"531","text":"527"},{"range":"532","text":"527"},{"range":"533","text":"527"},{"range":"534","text":"527"},{"range":"535","text":"527"},{"range":"536","text":"527"},{"range":"537","text":"527"},{"range":"538","text":"527"},{"range":"539","text":"527"},{"range":"540","text":"527"},{"range":"541","text":"527"},{"range":"542","text":"527"},{"range":"543","text":"527"},{"range":"544","text":"527"},{"range":"545","text":"527"},{"range":"546","text":"527"},{"range":"547","text":"527"},"no-native-reassign",["548"],"no-negated-in-lhs",["549"],{"range":"550","text":"527"},{"range":"551","text":"527"},{"range":"552","text":"527"},{"range":"553","text":"527"},{"range":"554","text":"527"},{"range":"555","text":"527"},{"range":"556","text":"527"},{"range":"557","text":"527"},{"range":"558","text":"527"},{"range":"559","text":"527"},{"range":"560","text":"527"},{"range":"561","text":"527"},{"range":"562","text":"527"},{"range":"563","text":"527"},{"range":"564","text":"527"},{"range":"565","text":"527"},{"range":"566","text":"527"},{"range":"567","text":"527"},{"range":"568","text":"527"},{"range":"569","text":"527"},{"range":"570","text":"527"},{"range":"571","text":"527"},{"range":"572","text":"527"},{"range":"573","text":"527"},{"range":"574","text":"527"},{"range":"575","text":"527"},{"range":"576","text":"527"},{"range":"577","text":"527"},{"range":"578","text":"527"},{"range":"579","text":"527"},{"range":"580","text":"527"},{"range":"581","text":"527"},{"range":"582","text":"527"},{"range":"583","text":"527"},{"range":"584","text":"527"},{"range":"585","text":"527"},{"range":"586","text":"527"},{"range":"587","text":"527"},{"range":"588","text":"527"},{"range":"589","text":"527"},{"range":"590","text":"527"},{"range":"591","text":"527"},{"range":"592","text":"527"},{"range":"593","text":"527"},{"range":"594","text":"527"},{"range":"595","text":"527"},{"range":"596","text":"527"},{"range":"597","text":"527"},{"range":"598","text":"527"},{"range":"599","text":"527"},{"range":"600","text":"527"},{"range":"601","text":"527"},{"range":"602","text":"527"},{"range":"603","text":"527"},{"range":"604","text":"527"},{"range":"605","text":"527"},{"range":"606","text":"527"},{"range":"607","text":"527"},{"range":"608","text":"527"},{"range":"609","text":"527"},{"range":"610","text":"527"},{"range":"611","text":"527"},{"range":"612","text":"527"},{"range":"613","text":"527"},{"range":"614","text":"527"},{"range":"615","text":"527"},{"range":"616","text":"527"},{"range":"617","text":"527"},{"range":"618","text":"527"},{"range":"619","text":"527"},{"range":"620","text":"527"},{"range":"621","text":"527"},{"range":"622","text":"527"},{"range":"623","text":"527"},{"range":"624","text":"527"},{"range":"625","text":"527"},{"range":"626","text":"527"},{"range":"627","text":"527"},{"range":"628","text":"527"},{"range":"629","text":"527"},{"range":"630","text":"527"},{"range":"631","text":"527"},{"range":"632","text":"527"},{"range":"633","text":"527"},{"range":"634","text":"527"},{"range":"635","text":"527"},{"range":"636","text":"527"},{"range":"637","text":"527"},{"range":"638","text":"527"},{"range":"639","text":"527"},{"range":"640","text":"527"},{"range":"641","text":"527"},{"range":"642","text":"527"},{"range":"643","text":"527"},{"range":"644","text":"527"},{"range":"645","text":"527"},{"range":"646","text":"527"},{"range":"647","text":"527"},{"range":"648","text":"527"},{"range":"649","text":"527"},{"range":"650","text":"527"},{"range":"651","text":"527"},{"range":"652","text":"527"},{"range":"653","text":"527"},{"range":"654","text":"527"},{"range":"655","text":"527"},{"range":"656","text":"527"},{"range":"657","text":"527"},{"range":"658","text":"527"},{"range":"659","text":"527"},{"range":"660","text":"527"},{"range":"661","text":"527"},{"range":"662","text":"527"},{"range":"663","text":"527"},{"range":"664","text":"527"},{"range":"665","text":"527"},{"range":"666","text":"527"},{"range":"667","text":"527"},{"range":"668","text":"527"},{"range":"669","text":"527"},{"range":"670","text":"527"},{"range":"671","text":"527"},{"range":"672","text":"527"},{"range":"673","text":"527"},{"range":"674","text":"527"},{"range":"675","text":"527"},{"range":"676","text":"527"},{"range":"677","text":"527"},{"range":"678","text":"527"},{"range":"679","text":"527"},{"range":"680","text":"527"},{"range":"681","text":"527"},{"range":"682","text":"527"},{"range":"683","text":"527"},{"range":"684","text":"527"},{"range":"685","text":"527"},{"range":"686","text":"527"},{"range":"687","text":"527"},{"range":"688","text":"527"},{"range":"689","text":"527"},{"range":"690","text":"527"},{"range":"691","text":"527"},{"range":"692","text":"527"},{"range":"693","text":"527"},{"range":"694","text":"527"},{"range":"695","text":"527"},{"range":"696","text":"527"},{"range":"697","text":"527"},{"range":"698","text":"527"},{"range":"699","text":"527"},{"range":"700","text":"527"},{"range":"701","text":"527"},{"range":"702","text":"527"},{"range":"703","text":"527"},{"range":"704","text":"527"},{"range":"705","text":"527"},{"range":"706","text":"527"},{"range":"707","text":"527"},{"range":"708","text":"527"},{"range":"709","text":"527"},{"range":"710","text":"527"},{"range":"711","text":"527"},{"range":"712","text":"527"},{"range":"713","text":"527"},{"range":"714","text":"527"},{"range":"715","text":"527"},{"range":"716","text":"527"},{"range":"717","text":"527"},{"range":"718","text":"527"},{"range":"719","text":"527"},{"range":"720","text":"527"},{"range":"721","text":"527"},[140,141],"",[176,177],[209,210],[248,249],[288,289],[337,338],[385,386],[448,449],[476,477],[530,531],[589,590],[650,651],[700,701],[876,877],[1026,1027],[1030,1031],[1066,1067],[1133,1134],[1371,1372],[1561,1562],[1797,1798],"no-global-assign","no-unsafe-negation",[29,30],[79,80],[144,145],[185,186],[225,226],[287,288],[393,394],[527,528],[1122,1123],[68,69],[385,386],[864,865],[937,938],[1055,1056],[1114,1115],[1126,1127],[1129,1130],[902,903],[984,985],[1048,1049],[1051,1052],[1325,1326],[1636,1637],[1754,1755],[1922,1923],[2275,2276],[2287,2288],[2400,2401],[2416,2417],[2658,2659],[2716,2717],[3296,3297],[3425,3426],[3705,3706],[3836,3837],[3889,3890],[3898,3899],[4000,4001],[4008,4009],[4390,4391],[4747,4748],[4761,4762],[4773,4774],[4880,4881],[5015,5016],[5023,5024],[5194,5195],[5265,5266],[5275,5276],[71,72],[130,131],[177,178],[222,223],[299,300],[371,372],[414,415],[498,499],[600,601],[886,887],[903,904],[30,31],[106,107],[149,150],[212,213],[264,265],[401,402],[444,445],[575,576],[578,579],[130,131],[200,201],[549,550],[624,625],[199,200],[244,245],[309,310],[365,366],[425,426],[492,493],[544,545],[592,593],[654,655],[1188,1189],[77,78],[129,130],[164,165],[225,226],[260,261],[353,354],[535,536],[551,552],[758,759],[799,800],[807,808],[939,940],[991,992],[1034,1035],[1080,1081],[53,54],[104,105],[718,719],[38,39],[196,197],[317,318],[524,525],[274,275],[314,315],[383,384],[94,95],[137,138],[205,206],[352,353],[90,91],[133,134],[201,202],[247,248],[385,386],[587,588],[30,31],[76,77],[101,102],[145,146],[190,191],[246,247],[727,728],[933,934],[1097,1098],[30,31],[75,76],[133,134],[177,178],[546,547],[44,45],[185,186],[45,46],[92,93],[156,157],[420,421],[539,540],[587,588],[745,746],[748,749],[95,96],[202,203],[384,385],[471,472],[30,31],[91,92],[316,317],[336,337],[410,411],[649,650],[690,691],[914,915],[1061,1062],[70,71],[139,140],[169,170],[481,482],[511,512],[866,867],[915,916],[944,945],[959,960],[1353,1354],[1400,1401],[1430,1431],[44,45],[99,100],[305,306],[44,45],[169,170]] \ No newline at end of file diff --git a/src/app/components/Link/__tests__/__snapshots__/index.test.tsx.snap b/src/app/components/Link/__tests__/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 278061d..0000000 --- a/src/app/components/Link/__tests__/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,27 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` should match snapshot 1`] = ` -.c0 { - color: rgba(215,113,88,1); - -webkit-text-decoration: none; - text-decoration: none; -} - -.c0:hover { - -webkit-text-decoration: underline; - text-decoration: underline; - opacity: 0.8; -} - -.c0:active { - opacity: 0.4; -} - - - HeaderLink - -`; diff --git a/src/app/components/Link/__tests__/index.test.tsx b/src/app/components/Link/__tests__/index.test.tsx deleted file mode 100644 index cf1a912..0000000 --- a/src/app/components/Link/__tests__/index.test.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import * as React from 'react'; -import { render } from '@testing-library/react'; - -import { Link } from '../index'; -import { themes } from 'styles/theme/themes'; -import { DefaultTheme } from 'styled-components'; -import { MemoryRouter } from 'react-router-dom'; - -const renderWithTheme = (theme?: DefaultTheme) => { - return render( - - - HeaderLink - - , - ); -}; - -describe('', () => { - it('should match snapshot', () => { - const link = renderWithTheme(); - expect(link.container.firstChild).toMatchSnapshot(); - }); - - it('should have theme', () => { - const link = renderWithTheme(); - expect(link.container.firstChild).toHaveStyle( - `color: ${themes.light.primary}`, - ); - }); - - it('should have a class attribute', () => { - const link = renderWithTheme(); - expect(link.queryByText('HeaderLink')).toHaveAttribute('class'); - }); -}); diff --git a/src/app/containers/Countries/actions.tsx b/src/app/containers/Countries/actions.tsx deleted file mode 100644 index 6f92e1a..0000000 --- a/src/app/containers/Countries/actions.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { createAction } from '@reduxjs/toolkit'; - -const fetchCountries = createAction('FETCH_COUNTRIES_REQUEST'); - -const fetchCountriesSuccess = createAction( - 'FETCH_COUNTRIES_SUCCESS', - countries => { - return { - payload: { - countries, - }, - }; - }, -); - -const fetchCountriesError = createAction('FETCH_COUNTRIES_ERROR', error => { - return { - payload: { - error, - }, - }; -}); - -export const actions = { - fetchCountries, - fetchCountriesSuccess, - fetchCountriesError, -}; diff --git a/src/app/containers/Countries/index.tsx b/src/app/containers/Countries/index.tsx index f89bd82..c5cfaf9 100644 --- a/src/app/containers/Countries/index.tsx +++ b/src/app/containers/Countries/index.tsx @@ -1,16 +1,14 @@ import React, { useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux' +import { Link } from 'react-router-dom' import { useInjectReducer, useInjectSaga } from 'utils/redux-injectors' import { saga } from './saga' -import { key, countriesReducer } from './reducer' -import { actions } from './actions' +import { key, reducer, actions } from './slice' import { selectCountries, selectLoading, selectError } from './selectors' import { LoadingIndicator } from 'app/components/LoadingIndicator' -import { Link } from 'app/components/Link' -import { PageWrapper } from 'app/components/PageWrapper' export const Countries = () => { - useInjectReducer({ key: key, reducer: countriesReducer }) + useInjectReducer({ key: key, reducer: reducer }) useInjectSaga({ key: key, saga }) const countries = useSelector(selectCountries) @@ -23,7 +21,14 @@ export const Countries = () => { }, [dispatch]) return ( - +

Countries

{isLoading && } {countries?.length > 0 && ( @@ -36,6 +41,6 @@ export const Countries = () => { )} {error &&
{error}
} - +
) } diff --git a/src/app/containers/Countries/reducer.tsx b/src/app/containers/Countries/reducer.tsx deleted file mode 100644 index 3ed1f86..0000000 --- a/src/app/containers/Countries/reducer.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { createReducer } from '@reduxjs/toolkit'; -import { CountriesState } from './types'; - -export const key = 'countries'; - -export const initialState: CountriesState = { - countries: [], - error: undefined, - isLoading: false, -}; - -export const countriesReducer = createReducer(initialState, { - FETCH_COUNTRIES_REQUEST: (state, action) => { - state.isLoading = true; - }, - FETCH_COUNTRIES_SUCCESS: (state, action) => { - state.isLoading = false; - state.countries = action.payload.countries; - }, - FETCH_COUNTRIES_ERROR: (state, action) => { - state.isLoading = false; - state.error = action.payload.error; - }, -}); diff --git a/src/app/containers/Countries/saga.ts b/src/app/containers/Countries/saga.ts index bd06be5..ab5a5a5 100644 --- a/src/app/containers/Countries/saga.ts +++ b/src/app/containers/Countries/saga.ts @@ -1,20 +1,20 @@ -import { call, put, takeLatest } from 'redux-saga/effects'; -import { request } from 'utils/request'; -import { actions } from './actions'; +import { call, put, takeLatest } from 'redux-saga/effects' +import { request } from 'utils/request' +import { actions } from './slice' export function* fetchCountries() { - const requestURL = `https://api.carerev.com/api/v1/countries`; + const requestURL = `https://api.carerev.com/api/v1/countries` try { - const { countries } = yield call(request, requestURL); + const { countries } = yield call(request, requestURL) if (countries?.length > 0) { - yield put(actions.fetchCountriesSuccess(countries)); + yield put(actions.fetchCountriesSuccess(countries)) } else { - yield put(actions.fetchCountriesError('No countries found.')); + yield put(actions.fetchCountriesError('No countries found.')) } - } catch (err) { - yield put(actions.fetchCountriesError(err.toString())); + } catch (err: any) { + yield put(actions.fetchCountriesError(err.toString())) } } @@ -22,5 +22,5 @@ export function* fetchCountries() { * Root saga manages watcher lifecycle */ export function* saga() { - yield takeLatest(actions.fetchCountries.type, fetchCountries); + yield takeLatest(actions.fetchCountries.type, fetchCountries) } diff --git a/src/app/containers/Countries/selectors.ts b/src/app/containers/Countries/selectors.ts index b0d5638..c462938 100644 --- a/src/app/containers/Countries/selectors.ts +++ b/src/app/containers/Countries/selectors.ts @@ -1,22 +1,21 @@ -import { createSelector } from '@reduxjs/toolkit'; +import { createSelector } from '@reduxjs/toolkit' -import { RootState } from 'types'; -import { initialState } from './reducer'; +import { RootState } from 'types' +import { initialState } from './slice' -// First select the relevant part from the state -const selectDomain = (state: RootState) => state.countries || initialState; +const selectDomain = (state: RootState) => state.countries || initialState export const selectLoading = createSelector( [selectDomain], countriesState => countriesState.isLoading, -); +) export const selectError = createSelector( [selectDomain], countriesState => countriesState.error, -); +) export const selectCountries = createSelector( [selectDomain], countriesState => countriesState.countries, -); +) diff --git a/src/app/containers/Countries/slice.ts b/src/app/containers/Countries/slice.ts new file mode 100644 index 0000000..4acab95 --- /dev/null +++ b/src/app/containers/Countries/slice.ts @@ -0,0 +1,31 @@ +import { createSlice } from '@reduxjs/toolkit' +import { CountriesState } from './types' + +const initialState: CountriesState = { + countries: [], + error: undefined, + isLoading: false, +} + +const key = 'countries' +const slice = createSlice({ + name: key, + initialState, + reducers: { + fetchCountries: state => { + state.isLoading = true + }, + fetchCountriesSuccess: (state, { payload }) => { + state.isLoading = false + state.countries = payload + }, + fetchCountriesError: (state, { payload: error }) => { + state.isLoading = false + state.error = error + }, + }, +}) + +const { actions, reducer } = slice + +export { actions, reducer, initialState, key } From 97d0d1c0365af1197413af055a973f92f6be05a8 Mon Sep 17 00:00:00 2001 From: ksample89 Date: Fri, 25 Mar 2022 12:52:55 -0400 Subject: [PATCH 3/7] Homepage, delete tests, assets folder, components folder, masthead, and logo --- .eslintcache | 2 +- .prettierrc | 2 +- src/app/containers/HomePage/Loadable.tsx | 29 ++++++----- src/app/containers/HomePage/Logos.tsx | 32 ------------- src/app/containers/HomePage/Masthead.tsx | 43 ----------------- .../HomePage/__tests__/Features.test.tsx | 34 ------------- .../HomePage/__tests__/Logos.test.tsx | 30 ------------ .../HomePage/__tests__/Masthead.test.tsx | 13 ----- .../__snapshots__/Logos.test.tsx.snap | 48 ------------------- .../__snapshots__/Masthead.test.tsx.snap | 33 ------------- .../__snapshots__/index.test.tsx.snap | 23 --------- .../HomePage/__tests__/index.test.tsx | 14 ------ .../HomePage/assets/code-analysis.svg | 4 -- .../containers/HomePage/assets/cra-logo.svg | 3 -- src/app/containers/HomePage/assets/css.svg | 8 ---- .../HomePage/assets/instant-feedback.svg | 5 -- src/app/containers/HomePage/assets/intl.svg | 4 -- .../HomePage/assets/offline-first.svg | 4 -- .../containers/HomePage/assets/plus-sign.svg | 3 -- src/app/containers/HomePage/assets/route.svg | 4 -- .../containers/HomePage/assets/rp-logo.svg | 3 -- .../HomePage/assets/scaffolding.svg | 4 -- src/app/containers/HomePage/assets/seo.svg | 11 ----- src/app/containers/HomePage/assets/state.svg | 4 -- src/app/containers/HomePage/assets/ts.svg | 5 -- .../containers/HomePage/components/Lead.ts | 13 ----- src/app/containers/HomePage/components/P.ts | 8 ---- .../HomePage/components/SubTitle.ts | 7 --- .../containers/HomePage/components/Title.ts | 8 ---- .../components/__tests__/Lead.test.tsx | 25 ---------- .../HomePage/components/__tests__/P.test.tsx | 25 ---------- .../components/__tests__/Subtitle.test.tsx | 24 ---------- .../components/__tests__/Title.test.tsx | 24 ---------- .../__snapshots__/Lead.test.tsx.snap | 19 -------- .../__tests__/__snapshots__/P.test.tsx.snap | 14 ------ .../__snapshots__/Subtitle.test.tsx.snap | 13 ----- .../__snapshots__/Title.test.tsx.snap | 14 ------ src/app/containers/HomePage/index.tsx | 28 ++++++----- src/app/containers/HomePage/messages.ts | 22 --------- 39 files changed, 33 insertions(+), 576 deletions(-) delete mode 100644 src/app/containers/HomePage/Logos.tsx delete mode 100644 src/app/containers/HomePage/Masthead.tsx delete mode 100644 src/app/containers/HomePage/__tests__/Features.test.tsx delete mode 100644 src/app/containers/HomePage/__tests__/Logos.test.tsx delete mode 100644 src/app/containers/HomePage/__tests__/Masthead.test.tsx delete mode 100644 src/app/containers/HomePage/__tests__/__snapshots__/Logos.test.tsx.snap delete mode 100644 src/app/containers/HomePage/__tests__/__snapshots__/Masthead.test.tsx.snap delete mode 100644 src/app/containers/HomePage/__tests__/__snapshots__/index.test.tsx.snap delete mode 100644 src/app/containers/HomePage/__tests__/index.test.tsx delete mode 100644 src/app/containers/HomePage/assets/code-analysis.svg delete mode 100644 src/app/containers/HomePage/assets/cra-logo.svg delete mode 100644 src/app/containers/HomePage/assets/css.svg delete mode 100644 src/app/containers/HomePage/assets/instant-feedback.svg delete mode 100644 src/app/containers/HomePage/assets/intl.svg delete mode 100644 src/app/containers/HomePage/assets/offline-first.svg delete mode 100644 src/app/containers/HomePage/assets/plus-sign.svg delete mode 100644 src/app/containers/HomePage/assets/route.svg delete mode 100644 src/app/containers/HomePage/assets/rp-logo.svg delete mode 100644 src/app/containers/HomePage/assets/scaffolding.svg delete mode 100644 src/app/containers/HomePage/assets/seo.svg delete mode 100644 src/app/containers/HomePage/assets/state.svg delete mode 100644 src/app/containers/HomePage/assets/ts.svg delete mode 100644 src/app/containers/HomePage/components/Lead.ts delete mode 100644 src/app/containers/HomePage/components/P.ts delete mode 100644 src/app/containers/HomePage/components/SubTitle.ts delete mode 100644 src/app/containers/HomePage/components/Title.ts delete mode 100644 src/app/containers/HomePage/components/__tests__/Lead.test.tsx delete mode 100644 src/app/containers/HomePage/components/__tests__/P.test.tsx delete mode 100644 src/app/containers/HomePage/components/__tests__/Subtitle.test.tsx delete mode 100644 src/app/containers/HomePage/components/__tests__/Title.test.tsx delete mode 100644 src/app/containers/HomePage/components/__tests__/__snapshots__/Lead.test.tsx.snap delete mode 100644 src/app/containers/HomePage/components/__tests__/__snapshots__/P.test.tsx.snap delete mode 100644 src/app/containers/HomePage/components/__tests__/__snapshots__/Subtitle.test.tsx.snap delete mode 100644 src/app/containers/HomePage/components/__tests__/__snapshots__/Title.test.tsx.snap delete mode 100644 src/app/containers/HomePage/messages.ts diff --git a/.eslintcache b/.eslintcache index 9f5d802..9296b7a 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/Users/kellysample/Development/web-example/src/index.tsx":"1","/Users/kellysample/Development/web-example/src/locales/i18n.ts":"2","/Users/kellysample/Development/web-example/src/locales/translations.ts":"3","/Users/kellysample/Development/web-example/src/serviceWorker.ts":"4","/Users/kellysample/Development/web-example/src/store/configureStore.ts":"5","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx":"6","/Users/kellysample/Development/web-example/src/store/reducers.ts":"7","/Users/kellysample/Development/web-example/src/app/index.tsx":"8","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts":"9","/Users/kellysample/Development/web-example/src/styles/global-styles.ts":"10","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts":"11","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts":"12","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx":"13","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx":"14","/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts":"15","/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx":"16","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx":"17","/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx":"18","/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts":"19","/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts":"20","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/P.ts":"21","/Users/kellysample/Development/web-example/src/utils/loadable.tsx":"22","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts":"23","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx":"24","/Users/kellysample/Development/web-example/src/utils/request.ts":"25","/Users/kellysample/Development/web-example/src/app/components/Link/index.ts":"26","/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts":"27","/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts":"28"},{"size":1799,"mtime":1648222804296,"results":"29","hashOfConfig":"30"},{"size":1124,"mtime":1648222804297,"results":"31","hashOfConfig":"30"},{"size":1131,"mtime":1648222804297,"results":"32","hashOfConfig":"30"},{"size":5283,"mtime":1648225159469,"results":"33","hashOfConfig":"30"},{"size":907,"mtime":1648222804299,"results":"34","hashOfConfig":"30"},{"size":580,"mtime":1648222804301,"results":"35","hashOfConfig":"30"},{"size":632,"mtime":1648222804299,"results":"36","hashOfConfig":"30"},{"size":1192,"mtime":1648222804295,"results":"37","hashOfConfig":"30"},{"size":1082,"mtime":1648222804302,"results":"38","hashOfConfig":"30"},{"size":720,"mtime":1648222804300,"results":"39","hashOfConfig":"30"},{"size":528,"mtime":1648222804302,"results":"40","hashOfConfig":"30"},{"size":385,"mtime":1648222804302,"results":"41","hashOfConfig":"30"},{"size":354,"mtime":1648222804294,"results":"42","hashOfConfig":"30"},{"size":589,"mtime":1648225858882,"results":"43","hashOfConfig":"30"},{"size":58,"mtime":1648222804300,"results":"44","hashOfConfig":"30"},{"size":1332,"mtime":1648226479002,"results":"45","hashOfConfig":"30"},{"size":1101,"mtime":1648225858885,"results":"46","hashOfConfig":"30"},{"size":550,"mtime":1648225858884,"results":"47","hashOfConfig":"30"},{"size":708,"mtime":1648226603007,"results":"48","hashOfConfig":"30"},{"size":532,"mtime":1648226461029,"results":"49","hashOfConfig":"30"},{"size":187,"mtime":1648222804294,"results":"50","hashOfConfig":"30"},{"size":750,"mtime":1648222804305,"results":"51","hashOfConfig":"30"},{"size":475,"mtime":1648222804306,"results":"52","hashOfConfig":"30"},{"size":1063,"mtime":1648225858881,"results":"53","hashOfConfig":"30"},{"size":1434,"mtime":1648222804306,"results":"54","hashOfConfig":"30"},{"size":307,"mtime":1648225858880,"results":"55","hashOfConfig":"30"},{"size":171,"mtime":1648225858881,"results":"56","hashOfConfig":"30"},{"size":685,"mtime":1648226300241,"results":"57","hashOfConfig":"30"},{"filePath":"58","messages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":21,"fixableErrorCount":0,"fixableWarningCount":21,"source":"60","usedDeprecatedRules":"61"},"11mdaqp",{"filePath":"62","messages":"63","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"64","usedDeprecatedRules":"61"},{"filePath":"65","messages":"66","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"67","usedDeprecatedRules":"61"},{"filePath":"68","messages":"69","errorCount":0,"fatalErrorCount":0,"warningCount":32,"fixableErrorCount":0,"fixableWarningCount":32,"source":"70","usedDeprecatedRules":"61"},{"filePath":"71","messages":"72","errorCount":0,"fatalErrorCount":0,"warningCount":11,"fixableErrorCount":0,"fixableWarningCount":11,"source":"73","usedDeprecatedRules":"61"},{"filePath":"74","messages":"75","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"76","usedDeprecatedRules":"61"},{"filePath":"77","messages":"78","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"79","usedDeprecatedRules":"61"},{"filePath":"80","messages":"81","errorCount":0,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":10,"source":"82","usedDeprecatedRules":"61"},{"filePath":"83","messages":"84","errorCount":0,"fatalErrorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":15,"source":"85","usedDeprecatedRules":"61"},{"filePath":"86","messages":"87","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"88","usedDeprecatedRules":"61"},{"filePath":"89","messages":"90","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"91","usedDeprecatedRules":"61"},{"filePath":"92","messages":"93","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"94","usedDeprecatedRules":"61"},{"filePath":"95","messages":"96","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"97","usedDeprecatedRules":"61"},{"filePath":"98","messages":"99","errorCount":0,"fatalErrorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":6,"source":null},{"filePath":"100","messages":"101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"61"},{"filePath":"102","messages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":null},{"filePath":"106","messages":"107","errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":5,"source":null},{"filePath":"108","messages":"109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"110","messages":"111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"112","messages":"113","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"114","usedDeprecatedRules":"61"},{"filePath":"115","messages":"116","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"117","usedDeprecatedRules":"61"},{"filePath":"118","messages":"119","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"120","usedDeprecatedRules":"61"},{"filePath":"121","messages":"122","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":null},{"filePath":"123","messages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":12,"source":"125","usedDeprecatedRules":"61"},{"filePath":"126","messages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":null},{"filePath":"128","messages":"129","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":null},{"filePath":"130","messages":"131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/kellysample/Development/web-example/src/index.tsx",["132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152"],"/**\n * index.tsx\n *\n * This is the entry file for the application, only setup and boilerplate\n * code.\n */\n\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport FontFaceObserver from 'fontfaceobserver';\nimport * as serviceWorker from 'serviceWorker';\n\n// Use consistent styling\nimport 'sanitize.css/sanitize.css';\n\nimport { App } from 'app';\n\nimport { HelmetProvider } from 'react-helmet-async';\n\nimport { configureAppStore } from 'store/configureStore';\n\nimport { ThemeProvider } from 'styles/theme/ThemeProvider';\n\n// Initialize languages\nimport './locales/i18n';\n\n// Observe loading of Inter (to remove 'Inter', remove the tag in\n// the index.html file and this observer)\nconst openSansObserver = new FontFaceObserver('Inter', {});\n\n// When Inter is loaded, add a font-family using Inter to the body\nopenSansObserver.load().then(() => {\n document.body.classList.add('fontLoaded');\n});\n\nconst store = configureAppStore();\nconst MOUNT_NODE = document.getElementById('root') as HTMLElement;\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n MOUNT_NODE,\n);\n\n// Hot reloadable translation json files\nif (module.hot) {\n module.hot.accept(['./locales/i18n'], () => {\n // No need to render the App again because i18next works with the hooks\n });\n}\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n",["153","154"],"/Users/kellysample/Development/web-example/src/locales/i18n.ts",["155","156","157","158","159","160","161","162","163"],"import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nimport en from './en/translation.json';\nimport de from './de/translation.json';\nimport { convertLanguageJsonToObject } from './translations';\n\nexport const translationsJson = {\n en: {\n translation: en,\n },\n de: {\n translation: de,\n },\n};\n\n// Create the 'translations' object to provide full intellisense support for the static json files.\nconvertLanguageJsonToObject(en);\n\nexport const i18n = i18next\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n resources: translationsJson,\n fallbackLng: 'en',\n debug:\n process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test',\n\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n });\n","/Users/kellysample/Development/web-example/src/locales/translations.ts",["164","165","166","167","168","169","170","171"],"import { ConvertedToObjectType, TranslationJsonType } from './types';\n\n/**\n * This file is seperate from the './i18n.ts' simply to make the Hot Module Replacement work seamlessly.\n * Your components can import this file in 'messages.ts' files which would ruin the HMR if this isn't a separate module\n */\nexport const translations: ConvertedToObjectType = {} as any;\n\n/*\n * Converts the static JSON file into an object where keys are identical\n * but values are strings concatenated according to syntax.\n * This is helpful when using the JSON file keys and still having the intellisense support\n * along with type-safety\n */\nexport const convertLanguageJsonToObject = (\n json: any,\n objToConvertTo = translations,\n current?: string,\n) => {\n Object.keys(json).forEach(key => {\n const currentLookupKey = current ? `${current}.${key}` : key;\n if (typeof json[key] === 'object') {\n objToConvertTo[key] = {};\n convertLanguageJsonToObject(\n json[key],\n objToConvertTo[key],\n currentLookupKey,\n );\n } else {\n objToConvertTo[key] = currentLookupKey;\n }\n });\n};\n","/Users/kellysample/Development/web-example/src/serviceWorker.ts",["172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203"],"// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/store/configureStore.ts",["204","205","206","207","208","209","210","211","212","213","214"],"import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\nimport { createInjectorsEnhancer } from 'redux-injectors';\nimport createSagaMiddleware from 'redux-saga';\n\nimport { createReducer } from './reducers';\n\nexport function configureAppStore() {\n const reduxSagaMonitorOptions = {};\n const sagaMiddleware = createSagaMiddleware(reduxSagaMonitorOptions);\n const { run: runSaga } = sagaMiddleware;\n\n // Create the store with saga middleware\n const middlewares = [sagaMiddleware];\n\n const enhancers = [\n createInjectorsEnhancer({\n createReducer,\n runSaga,\n }),\n ];\n\n const store = configureStore({\n reducer: createReducer(),\n middleware: [...getDefaultMiddleware(), ...middlewares],\n devTools:\n /* istanbul ignore next line */\n process.env.NODE_ENV !== 'production' ||\n process.env.PUBLIC_URL.length > 0,\n enhancers,\n });\n\n return store;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx",["215","216","217","218","219","220","221","222","223"],"import * as React from 'react';\nimport { ThemeProvider as OriginalThemeProvider } from 'styled-components';\nimport { useSelector } from 'react-redux';\nimport { selectTheme, themeSliceKey, reducer } from './slice';\nimport { useInjectReducer } from 'redux-injectors';\n\nexport const ThemeProvider = (props: { children: React.ReactChild }) => {\n useInjectReducer({ key: themeSliceKey, reducer: reducer });\n\n const theme = useSelector(selectTheme);\n return (\n \n {React.Children.only(props.children)}\n \n );\n};\n","/Users/kellysample/Development/web-example/src/store/reducers.ts",["224","225","226","227"],"/**\n * Combine all reducers in this file and export the combined reducers.\n */\n\nimport { combineReducers } from '@reduxjs/toolkit';\n\nimport { InjectedReducersType } from 'utils/types/injector-typings';\n\n/**\n * Merges the main reducer with the router state and dynamically injected reducers\n */\nexport function createReducer(injectedReducers: InjectedReducersType = {}) {\n // Initially we don't have any injectedReducers, so returning identity function to avoid the error\n if (Object.keys(injectedReducers).length === 0) {\n return state => state;\n } else {\n return combineReducers({\n ...injectedReducers,\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/app/index.tsx",["228","229","230","231","232","233","234","235","236","237"],"/**\n *\n * App\n *\n * This component is the skeleton around the actual pages, and should only\n * contain code that should be seen on all pages. (e.g. navigation bar)\n */\n\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { Switch, Route, BrowserRouter } from 'react-router-dom';\n\nimport { GlobalStyle } from '../styles/global-styles';\n\nimport { HomePage } from './containers/HomePage/Loadable';\nimport { NotFoundPage } from './containers/NotFoundPage/Loadable';\nimport { Countries } from './containers/Countries';\nimport { useTranslation } from 'react-i18next';\n\nexport function App() {\n const { i18n } = useTranslation();\n return (\n \n \n\n \n \n \n \n \n \n \n );\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts",["238","239","240","241","242","243","244","245","246","247","248","249","250","251","252"],"import { PayloadAction, createSelector, createSlice } from '@reduxjs/toolkit';\nimport { ThemeState, ThemeKeyType } from './types';\nimport { themes } from './themes';\nimport { getThemeFromStorage, isSystemDark } from './utils';\nimport { RootState } from 'types';\n\nexport const initialState: ThemeState = {\n selected: getThemeFromStorage() || 'system',\n};\n\nconst themeSlice = createSlice({\n name: 'theme',\n initialState,\n reducers: {\n changeTheme(state, action: PayloadAction) {\n state.selected = action.payload;\n },\n },\n});\n\nexport const selectTheme = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => {\n if (theme.selected === 'system') {\n return isSystemDark ? themes.dark : themes.light;\n }\n return themes[theme.selected];\n },\n);\n\nexport const selectThemeKey = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => theme.selected,\n);\n\nexport const { changeTheme } = themeSlice.actions;\nexport const reducer = themeSlice.reducer;\nexport const themeSliceKey = themeSlice.name;\n","/Users/kellysample/Development/web-example/src/styles/global-styles.ts",["253","254","255"],"import { createGlobalStyle } from 'styled-components';\nimport { StyleConstants } from './StyleConstants';\n/* istanbul ignore next */\nexport const GlobalStyle = createGlobalStyle`\n html,\n body {\n height: 100%;\n width: 100%;\n line-height: 1.5;\n }\n\n body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding-top: ${StyleConstants.NAV_BAR_HEIGHT};\n background-color: ${p => p.theme.background};\n }\n\n body.fontLoaded {\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n \n p,\n label {\n line-height: 1.5em;\n }\n\n input, select, button {\n font-family: inherit;\n font-size: inherit;\n }\n\n .icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n`;\n","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts",["256","257","258","259"],"import { ThemeKeyType } from './types';\n\n/* istanbul ignore next line */\nexport const isSystemDark = window?.matchMedia\n ? window.matchMedia('(prefers-color-scheme: dark)')?.matches\n : undefined;\n\nexport function saveTheme(theme: ThemeKeyType) {\n window.localStorage && localStorage.setItem('selectedTheme', theme);\n}\n\n/* istanbul ignore next line */\nexport function getThemeFromStorage(): ThemeKeyType | null {\n return window.localStorage\n ? (localStorage.getItem('selectedTheme') as ThemeKeyType) || null\n : null;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts",["260","261","262"],"const lightTheme = {\n primary: 'rgba(215,113,88,1)',\n text: 'rgba(58,52,51,1)',\n textSecondary: 'rgba(58,52,51,0.7)',\n background: 'rgba(255,255,255,1)',\n backgroundVariant: 'rgba(251,249,249,1)',\n border: 'rgba(58,52,51,0.12)',\n borderLight: 'rgba(58,52,51,0.05)',\n};\n\nexport type Theme = typeof lightTheme;\n\nexport const themes = {\n light: lightTheme,\n dark: lightTheme,\n};\n","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx",["263","264","265","266"],"/**\n * Asynchronously loads the component for NotFoundPage\n */\n\nimport * as React from 'react';\nimport { lazyLoad } from 'utils/loadable';\nimport { LoadingIndicator } from 'app/components/LoadingIndicator';\n\nexport const NotFoundPage = lazyLoad(\n () => import('./index'),\n module => module.NotFoundPage,\n {\n fallback: ,\n },\n);\n","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx",["267","268","269","270","271","272"],"/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx",["273","274","275","276","277","278","279","280","281"],"/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx",["282","283","284","285","286"],"/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/P.ts",["287","288"],"import styled from 'styled-components/macro';\n\nexport const P = styled.p`\n font-size: 1rem;\n line-height: 1.5;\n color: ${p => p.theme.textSecondary};\n margin: 0.625rem 0 1.5rem 0;\n`;\n","/Users/kellysample/Development/web-example/src/utils/loadable.tsx",["289","290","291","292","293","294","295","296"],"import React, { lazy, Suspense } from 'react';\n\ninterface Opts {\n fallback: React.ReactNode;\n}\ntype Unpromisify = T extends Promise ? P : never;\n\nexport const lazyLoad = <\n T extends Promise,\n U extends React.ComponentType\n>(\n importFunc: () => T,\n selectorFunc?: (s: Unpromisify) => U,\n opts: Opts = { fallback: null },\n) => {\n let lazyFactory: () => Promise<{ default: U }> = importFunc;\n\n if (selectorFunc) {\n lazyFactory = () =>\n importFunc().then(module => ({ default: selectorFunc(module) }));\n }\n\n const LazyComponent = lazy(lazyFactory);\n\n return (props: React.ComponentProps): JSX.Element => (\n \n \n \n );\n};\n","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts",["297","298","299","300"],"import {\n useInjectReducer as useReducer,\n useInjectSaga as useSaga,\n} from 'redux-injectors';\nimport {\n InjectReducerParams,\n InjectSagaParams,\n RootStateKeyType,\n} from './types/injector-typings';\n\n/* Wrap redux-injectors with stricter types */\n\nexport function useInjectReducer(\n params: InjectReducerParams,\n) {\n return useReducer(params);\n}\n\nexport function useInjectSaga(params: InjectSagaParams) {\n return useSaga(params);\n}\n","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx",["301","302","303","304","305","306","307","308","309"],"/Users/kellysample/Development/web-example/src/utils/request.ts",["310","311","312","313","314","315","316","317","318","319","320","321"],"export class ResponseError extends Error {\n public response: Response;\n\n constructor(response: Response) {\n super(response.statusText);\n this.response = response;\n }\n}\n/**\n * Parses the JSON returned by a network request\n *\n * @param {object} response A response from a network request\n *\n * @return {object} The parsed JSON from the request\n */\nfunction parseJSON(response: Response) {\n if (response.status === 204 || response.status === 205) {\n return null;\n }\n return response.json();\n}\n\n/**\n * Checks if a network request came back fine, and throws an error if not\n *\n * @param {object} response A response from a network request\n *\n * @return {object|undefined} Returns either the response, or throws an error\n */\nfunction checkStatus(response: Response) {\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n const error = new ResponseError(response);\n error.response = response;\n throw error;\n}\n\n/**\n * Requests a URL, returning a promise\n *\n * @param {string} url The URL we want to request\n * @param {object} [options] The options we want to pass to \"fetch\"\n *\n * @return {object} The response data\n */\nexport async function request(\n url: string,\n options?: RequestInit,\n): Promise<{} | { err: ResponseError }> {\n const fetchResponse = await fetch(url, options);\n const response = checkStatus(fetchResponse);\n return parseJSON(response);\n}\n","/Users/kellysample/Development/web-example/src/app/components/Link/index.ts",["322","323","324"],"/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts",["325","326"],"/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts",[],{"ruleId":"327","severity":1,"message":"328","line":8,"column":33,"nodeType":null,"endLine":8,"endColumn":34,"fix":"329"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":35,"nodeType":null,"endLine":9,"endColumn":36,"fix":"330"},{"ruleId":"327","severity":1,"message":"328","line":11,"column":31,"nodeType":null,"endLine":11,"endColumn":32,"fix":"331"},{"ruleId":"327","severity":1,"message":"328","line":12,"column":38,"nodeType":null,"endLine":12,"endColumn":39,"fix":"332"},{"ruleId":"327","severity":1,"message":"328","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"333"},{"ruleId":"327","severity":1,"message":"328","line":14,"column":48,"nodeType":null,"endLine":14,"endColumn":49,"fix":"334"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":47,"nodeType":null,"endLine":15,"endColumn":48,"fix":"335"},{"ruleId":"327","severity":1,"message":"328","line":18,"column":35,"nodeType":null,"endLine":18,"endColumn":36,"fix":"336"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":26,"nodeType":null,"endLine":20,"endColumn":27,"fix":"337"},{"ruleId":"327","severity":1,"message":"328","line":22,"column":52,"nodeType":null,"endLine":22,"endColumn":53,"fix":"338"},{"ruleId":"327","severity":1,"message":"328","line":24,"column":57,"nodeType":null,"endLine":24,"endColumn":58,"fix":"339"},{"ruleId":"327","severity":1,"message":"328","line":26,"column":59,"nodeType":null,"endLine":26,"endColumn":60,"fix":"340"},{"ruleId":"327","severity":1,"message":"328","line":29,"column":24,"nodeType":null,"endLine":29,"endColumn":25,"fix":"341"},{"ruleId":"327","severity":1,"message":"328","line":33,"column":59,"nodeType":null,"endLine":33,"endColumn":60,"fix":"342"},{"ruleId":"327","severity":1,"message":"328","line":37,"column":44,"nodeType":null,"endLine":37,"endColumn":45,"fix":"343"},{"ruleId":"327","severity":1,"message":"328","line":38,"column":3,"nodeType":null,"endLine":38,"endColumn":4,"fix":"344"},{"ruleId":"327","severity":1,"message":"328","line":40,"column":34,"nodeType":null,"endLine":40,"endColumn":35,"fix":"345"},{"ruleId":"327","severity":1,"message":"328","line":41,"column":66,"nodeType":null,"endLine":41,"endColumn":67,"fix":"346"},{"ruleId":"327","severity":1,"message":"328","line":54,"column":2,"nodeType":null,"endLine":54,"endColumn":3,"fix":"347"},{"ruleId":"327","severity":1,"message":"328","line":60,"column":5,"nodeType":null,"endLine":60,"endColumn":6,"fix":"348"},{"ruleId":"327","severity":1,"message":"328","line":66,"column":27,"nodeType":null,"endLine":66,"endColumn":28,"fix":"349"},{"ruleId":"350","replacedBy":"351"},{"ruleId":"352","replacedBy":"353"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":30,"nodeType":null,"endLine":1,"endColumn":31,"fix":"354"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":49,"nodeType":null,"endLine":2,"endColumn":50,"fix":"355"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":64,"nodeType":null,"endLine":3,"endColumn":65,"fix":"356"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":39,"nodeType":null,"endLine":5,"endColumn":40,"fix":"357"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":39,"nodeType":null,"endLine":6,"endColumn":40,"fix":"358"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":61,"nodeType":null,"endLine":7,"endColumn":62,"fix":"359"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"360"},{"ruleId":"327","severity":1,"message":"328","line":19,"column":32,"nodeType":null,"endLine":19,"endColumn":33,"fix":"361"},{"ruleId":"327","severity":1,"message":"328","line":38,"column":5,"nodeType":null,"endLine":38,"endColumn":6,"fix":"362"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":69,"nodeType":null,"endLine":1,"endColumn":70,"fix":"363"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":82,"nodeType":null,"endLine":7,"endColumn":83,"fix":"364"},{"ruleId":"327","severity":1,"message":"328","line":21,"column":65,"nodeType":null,"endLine":21,"endColumn":66,"fix":"365"},{"ruleId":"327","severity":1,"message":"328","line":23,"column":31,"nodeType":null,"endLine":23,"endColumn":32,"fix":"366"},{"ruleId":"327","severity":1,"message":"328","line":28,"column":8,"nodeType":null,"endLine":28,"endColumn":9,"fix":"367"},{"ruleId":"327","severity":1,"message":"328","line":30,"column":45,"nodeType":null,"endLine":30,"endColumn":46,"fix":"368"},{"ruleId":"327","severity":1,"message":"328","line":32,"column":5,"nodeType":null,"endLine":32,"endColumn":6,"fix":"369"},{"ruleId":"327","severity":1,"message":"328","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"370"},{"ruleId":"327","severity":1,"message":"328","line":21,"column":2,"nodeType":null,"endLine":21,"endColumn":3,"fix":"371"},{"ruleId":"327","severity":1,"message":"328","line":24,"column":64,"nodeType":null,"endLine":24,"endColumn":65,"fix":"372"},{"ruleId":"327","severity":1,"message":"328","line":25,"column":63,"nodeType":null,"endLine":25,"endColumn":64,"fix":"373"},{"ruleId":"327","severity":1,"message":"328","line":26,"column":2,"nodeType":null,"endLine":26,"endColumn":3,"fix":"374"},{"ruleId":"327","severity":1,"message":"328","line":31,"column":76,"nodeType":null,"endLine":31,"endColumn":77,"fix":"375"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":13,"nodeType":null,"endLine":36,"endColumn":14,"fix":"376"},{"ruleId":"327","severity":1,"message":"328","line":40,"column":66,"nodeType":null,"endLine":40,"endColumn":67,"fix":"377"},{"ruleId":"327","severity":1,"message":"328","line":44,"column":47,"nodeType":null,"endLine":44,"endColumn":48,"fix":"378"},{"ruleId":"327","severity":1,"message":"328","line":52,"column":12,"nodeType":null,"endLine":52,"endColumn":13,"fix":"379"},{"ruleId":"327","severity":1,"message":"328","line":53,"column":11,"nodeType":null,"endLine":53,"endColumn":12,"fix":"380"},{"ruleId":"327","severity":1,"message":"328","line":56,"column":39,"nodeType":null,"endLine":56,"endColumn":40,"fix":"381"},{"ruleId":"327","severity":1,"message":"328","line":58,"column":7,"nodeType":null,"endLine":58,"endColumn":8,"fix":"382"},{"ruleId":"327","severity":1,"message":"328","line":67,"column":57,"nodeType":null,"endLine":67,"endColumn":58,"fix":"383"},{"ruleId":"327","severity":1,"message":"328","line":69,"column":17,"nodeType":null,"endLine":69,"endColumn":18,"fix":"384"},{"ruleId":"327","severity":1,"message":"328","line":80,"column":16,"nodeType":null,"endLine":80,"endColumn":17,"fix":"385"},{"ruleId":"327","severity":1,"message":"328","line":84,"column":46,"nodeType":null,"endLine":84,"endColumn":47,"fix":"386"},{"ruleId":"327","severity":1,"message":"328","line":90,"column":64,"nodeType":null,"endLine":90,"endColumn":65,"fix":"387"},{"ruleId":"327","severity":1,"message":"328","line":94,"column":47,"nodeType":null,"endLine":94,"endColumn":48,"fix":"388"},{"ruleId":"327","severity":1,"message":"328","line":98,"column":10,"nodeType":null,"endLine":98,"endColumn":11,"fix":"389"},{"ruleId":"327","severity":1,"message":"328","line":99,"column":8,"nodeType":null,"endLine":99,"endColumn":9,"fix":"390"},{"ruleId":"327","severity":1,"message":"328","line":102,"column":72,"nodeType":null,"endLine":102,"endColumn":73,"fix":"391"},{"ruleId":"327","severity":1,"message":"328","line":103,"column":7,"nodeType":null,"endLine":103,"endColumn":8,"fix":"392"},{"ruleId":"327","severity":1,"message":"328","line":113,"column":63,"nodeType":null,"endLine":113,"endColumn":64,"fix":"393"},{"ruleId":"327","severity":1,"message":"328","line":121,"column":37,"nodeType":null,"endLine":121,"endColumn":38,"fix":"394"},{"ruleId":"327","severity":1,"message":"328","line":122,"column":13,"nodeType":null,"endLine":122,"endColumn":14,"fix":"395"},{"ruleId":"327","severity":1,"message":"328","line":123,"column":11,"nodeType":null,"endLine":123,"endColumn":12,"fix":"396"},{"ruleId":"327","severity":1,"message":"328","line":126,"column":39,"nodeType":null,"endLine":126,"endColumn":40,"fix":"397"},{"ruleId":"327","severity":1,"message":"328","line":132,"column":8,"nodeType":null,"endLine":132,"endColumn":9,"fix":"398"},{"ruleId":"327","severity":1,"message":"328","line":133,"column":7,"nodeType":null,"endLine":133,"endColumn":8,"fix":"399"},{"ruleId":"327","severity":1,"message":"328","line":140,"column":34,"nodeType":null,"endLine":140,"endColumn":35,"fix":"400"},{"ruleId":"327","severity":1,"message":"328","line":143,"column":37,"nodeType":null,"endLine":143,"endColumn":38,"fix":"401"},{"ruleId":"327","severity":1,"message":"328","line":144,"column":9,"nodeType":null,"endLine":144,"endColumn":10,"fix":"402"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":72,"nodeType":null,"endLine":1,"endColumn":73,"fix":"403"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":58,"nodeType":null,"endLine":2,"endColumn":59,"fix":"404"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":46,"nodeType":null,"endLine":3,"endColumn":47,"fix":"405"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":43,"nodeType":null,"endLine":5,"endColumn":44,"fix":"406"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":37,"nodeType":null,"endLine":8,"endColumn":38,"fix":"407"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":71,"nodeType":null,"endLine":9,"endColumn":72,"fix":"408"},{"ruleId":"327","severity":1,"message":"328","line":10,"column":42,"nodeType":null,"endLine":10,"endColumn":43,"fix":"409"},{"ruleId":"327","severity":1,"message":"328","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"410"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":4,"nodeType":null,"endLine":20,"endColumn":5,"fix":"411"},{"ruleId":"327","severity":1,"message":"328","line":30,"column":5,"nodeType":null,"endLine":30,"endColumn":6,"fix":"412"},{"ruleId":"327","severity":1,"message":"328","line":32,"column":15,"nodeType":null,"endLine":32,"endColumn":16,"fix":"413"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"414"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":75,"nodeType":null,"endLine":2,"endColumn":76,"fix":"415"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":42,"nodeType":null,"endLine":3,"endColumn":43,"fix":"416"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":62,"nodeType":null,"endLine":4,"endColumn":63,"fix":"417"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"418"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":61,"nodeType":null,"endLine":8,"endColumn":62,"fix":"419"},{"ruleId":"327","severity":1,"message":"328","line":10,"column":41,"nodeType":null,"endLine":10,"endColumn":42,"fix":"420"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":4,"nodeType":null,"endLine":15,"endColumn":5,"fix":"421"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"422"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"423"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":68,"nodeType":null,"endLine":7,"endColumn":69,"fix":"424"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":26,"nodeType":null,"endLine":15,"endColumn":27,"fix":"425"},{"ruleId":"327","severity":1,"message":"328","line":19,"column":7,"nodeType":null,"endLine":19,"endColumn":8,"fix":"426"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":31,"nodeType":null,"endLine":9,"endColumn":32,"fix":"427"},{"ruleId":"327","severity":1,"message":"328","line":10,"column":44,"nodeType":null,"endLine":10,"endColumn":45,"fix":"428"},{"ruleId":"327","severity":1,"message":"328","line":11,"column":64,"nodeType":null,"endLine":11,"endColumn":65,"fix":"429"},{"ruleId":"327","severity":1,"message":"328","line":13,"column":54,"nodeType":null,"endLine":13,"endColumn":55,"fix":"430"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":58,"nodeType":null,"endLine":15,"endColumn":59,"fix":"431"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":66,"nodeType":null,"endLine":16,"endColumn":67,"fix":"432"},{"ruleId":"327","severity":1,"message":"328","line":17,"column":51,"nodeType":null,"endLine":17,"endColumn":52,"fix":"433"},{"ruleId":"327","severity":1,"message":"328","line":18,"column":47,"nodeType":null,"endLine":18,"endColumn":48,"fix":"434"},{"ruleId":"327","severity":1,"message":"328","line":21,"column":36,"nodeType":null,"endLine":21,"endColumn":37,"fix":"435"},{"ruleId":"327","severity":1,"message":"328","line":41,"column":4,"nodeType":null,"endLine":41,"endColumn":5,"fix":"436"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":78,"nodeType":null,"endLine":1,"endColumn":79,"fix":"437"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":51,"nodeType":null,"endLine":2,"endColumn":52,"fix":"438"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":34,"nodeType":null,"endLine":3,"endColumn":35,"fix":"439"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":60,"nodeType":null,"endLine":4,"endColumn":61,"fix":"440"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":34,"nodeType":null,"endLine":5,"endColumn":35,"fix":"441"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"442"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":38,"nodeType":null,"endLine":16,"endColumn":39,"fix":"443"},{"ruleId":"327","severity":1,"message":"328","line":19,"column":3,"nodeType":null,"endLine":19,"endColumn":4,"fix":"444"},{"ruleId":"327","severity":1,"message":"328","line":25,"column":55,"nodeType":null,"endLine":25,"endColumn":56,"fix":"445"},{"ruleId":"327","severity":1,"message":"328","line":27,"column":34,"nodeType":null,"endLine":27,"endColumn":35,"fix":"446"},{"ruleId":"327","severity":1,"message":"328","line":29,"column":2,"nodeType":null,"endLine":29,"endColumn":3,"fix":"447"},{"ruleId":"327","severity":1,"message":"328","line":34,"column":2,"nodeType":null,"endLine":34,"endColumn":3,"fix":"448"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":50,"nodeType":null,"endLine":36,"endColumn":51,"fix":"449"},{"ruleId":"327","severity":1,"message":"328","line":37,"column":42,"nodeType":null,"endLine":37,"endColumn":43,"fix":"450"},{"ruleId":"327","severity":1,"message":"328","line":38,"column":45,"nodeType":null,"endLine":38,"endColumn":46,"fix":"451"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":54,"nodeType":null,"endLine":1,"endColumn":55,"fix":"452"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":50,"nodeType":null,"endLine":2,"endColumn":51,"fix":"453"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":2,"nodeType":null,"endLine":36,"endColumn":3,"fix":"454"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":39,"nodeType":null,"endLine":1,"endColumn":40,"fix":"455"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":14,"nodeType":null,"endLine":6,"endColumn":15,"fix":"456"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":70,"nodeType":null,"endLine":9,"endColumn":71,"fix":"457"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":11,"nodeType":null,"endLine":16,"endColumn":12,"fix":"458"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"459"},{"ruleId":"327","severity":1,"message":"328","line":11,"column":38,"nodeType":null,"endLine":11,"endColumn":39,"fix":"460"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"461"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"462"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":42,"nodeType":null,"endLine":6,"endColumn":43,"fix":"463"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":67,"nodeType":null,"endLine":7,"endColumn":68,"fix":"464"},{"ruleId":"327","severity":1,"message":"328","line":15,"column":2,"nodeType":null,"endLine":15,"endColumn":3,"fix":"465"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"466"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":42,"nodeType":null,"endLine":6,"endColumn":43,"fix":"467"},{"ruleId":"327","severity":1,"message":"328","line":7,"column":67,"nodeType":null,"endLine":7,"endColumn":68,"fix":"468"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":45,"nodeType":null,"endLine":8,"endColumn":46,"fix":"469"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"470"},{"ruleId":"327","severity":1,"message":"328","line":28,"column":2,"nodeType":null,"endLine":28,"endColumn":3,"fix":"471"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"472"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":45,"nodeType":null,"endLine":2,"endColumn":46,"fix":"473"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":24,"nodeType":null,"endLine":3,"endColumn":25,"fix":"474"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":43,"nodeType":null,"endLine":4,"endColumn":44,"fix":"475"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":44,"nodeType":null,"endLine":5,"endColumn":45,"fix":"476"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":55,"nodeType":null,"endLine":6,"endColumn":56,"fix":"477"},{"ruleId":"327","severity":1,"message":"328","line":27,"column":4,"nodeType":null,"endLine":27,"endColumn":5,"fix":"478"},{"ruleId":"327","severity":1,"message":"328","line":37,"column":2,"nodeType":null,"endLine":37,"endColumn":3,"fix":"479"},{"ruleId":"327","severity":1,"message":"328","line":48,"column":2,"nodeType":null,"endLine":48,"endColumn":3,"fix":"480"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"481"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":44,"nodeType":null,"endLine":2,"endColumn":45,"fix":"482"},{"ruleId":"327","severity":1,"message":"328","line":3,"column":57,"nodeType":null,"endLine":3,"endColumn":58,"fix":"483"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":43,"nodeType":null,"endLine":4,"endColumn":44,"fix":"484"},{"ruleId":"327","severity":1,"message":"328","line":21,"column":4,"nodeType":null,"endLine":21,"endColumn":5,"fix":"485"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"486"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"487"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":46,"nodeType":null,"endLine":1,"endColumn":47,"fix":"488"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":28,"nodeType":null,"endLine":4,"endColumn":29,"fix":"489"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":61,"nodeType":null,"endLine":6,"endColumn":62,"fix":"490"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":62,"nodeType":null,"endLine":16,"endColumn":63,"fix":"491"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":71,"nodeType":null,"endLine":20,"endColumn":72,"fix":"492"},{"ruleId":"327","severity":1,"message":"328","line":23,"column":42,"nodeType":null,"endLine":23,"endColumn":43,"fix":"493"},{"ruleId":"327","severity":1,"message":"328","line":29,"column":4,"nodeType":null,"endLine":29,"endColumn":5,"fix":"494"},{"ruleId":"327","severity":1,"message":"328","line":30,"column":2,"nodeType":null,"endLine":30,"endColumn":3,"fix":"495"},{"ruleId":"327","severity":1,"message":"328","line":4,"column":25,"nodeType":null,"endLine":4,"endColumn":26,"fix":"496"},{"ruleId":"327","severity":1,"message":"328","line":9,"column":34,"nodeType":null,"endLine":9,"endColumn":35,"fix":"497"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":28,"nodeType":null,"endLine":16,"endColumn":29,"fix":"498"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"499"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"500"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":60,"nodeType":null,"endLine":2,"endColumn":61,"fix":"501"},{"ruleId":"327","severity":1,"message":"328","line":10,"column":2,"nodeType":null,"endLine":10,"endColumn":3,"fix":"502"},{"ruleId":"327","severity":1,"message":"328","line":12,"column":18,"nodeType":null,"endLine":12,"endColumn":19,"fix":"503"},{"ruleId":"327","severity":1,"message":"328","line":18,"column":2,"nodeType":null,"endLine":18,"endColumn":3,"fix":"504"},{"ruleId":"327","severity":1,"message":"328","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"505"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":18,"nodeType":null,"endLine":36,"endColumn":19,"fix":"506"},{"ruleId":"327","severity":1,"message":"328","line":44,"column":2,"nodeType":null,"endLine":44,"endColumn":3,"fix":"507"},{"ruleId":"327","severity":1,"message":"328","line":50,"column":2,"nodeType":null,"endLine":50,"endColumn":3,"fix":"508"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":28,"nodeType":null,"endLine":2,"endColumn":29,"fix":"509"},{"ruleId":"327","severity":1,"message":"328","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"510"},{"ruleId":"327","severity":1,"message":"328","line":6,"column":29,"nodeType":null,"endLine":6,"endColumn":30,"fix":"511"},{"ruleId":"327","severity":1,"message":"328","line":18,"column":16,"nodeType":null,"endLine":18,"endColumn":17,"fix":"512"},{"ruleId":"327","severity":1,"message":"328","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"513"},{"ruleId":"327","severity":1,"message":"328","line":32,"column":20,"nodeType":null,"endLine":32,"endColumn":21,"fix":"514"},{"ruleId":"327","severity":1,"message":"328","line":34,"column":44,"nodeType":null,"endLine":34,"endColumn":45,"fix":"515"},{"ruleId":"327","severity":1,"message":"328","line":35,"column":28,"nodeType":null,"endLine":35,"endColumn":29,"fix":"516"},{"ruleId":"327","severity":1,"message":"328","line":36,"column":14,"nodeType":null,"endLine":36,"endColumn":15,"fix":"517"},{"ruleId":"327","severity":1,"message":"328","line":51,"column":50,"nodeType":null,"endLine":51,"endColumn":51,"fix":"518"},{"ruleId":"327","severity":1,"message":"328","line":52,"column":46,"nodeType":null,"endLine":52,"endColumn":47,"fix":"519"},{"ruleId":"327","severity":1,"message":"328","line":53,"column":29,"nodeType":null,"endLine":53,"endColumn":30,"fix":"520"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"521"},{"ruleId":"327","severity":1,"message":"328","line":2,"column":54,"nodeType":null,"endLine":2,"endColumn":55,"fix":"522"},{"ruleId":"327","severity":1,"message":"328","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"523"},{"ruleId":"327","severity":1,"message":"328","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"524"},{"ruleId":"327","severity":1,"message":"328","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"525"},"prettier/prettier","Delete `;`",{"range":"526","text":"527"},{"range":"528","text":"527"},{"range":"529","text":"527"},{"range":"530","text":"527"},{"range":"531","text":"527"},{"range":"532","text":"527"},{"range":"533","text":"527"},{"range":"534","text":"527"},{"range":"535","text":"527"},{"range":"536","text":"527"},{"range":"537","text":"527"},{"range":"538","text":"527"},{"range":"539","text":"527"},{"range":"540","text":"527"},{"range":"541","text":"527"},{"range":"542","text":"527"},{"range":"543","text":"527"},{"range":"544","text":"527"},{"range":"545","text":"527"},{"range":"546","text":"527"},{"range":"547","text":"527"},"no-native-reassign",["548"],"no-negated-in-lhs",["549"],{"range":"550","text":"527"},{"range":"551","text":"527"},{"range":"552","text":"527"},{"range":"553","text":"527"},{"range":"554","text":"527"},{"range":"555","text":"527"},{"range":"556","text":"527"},{"range":"557","text":"527"},{"range":"558","text":"527"},{"range":"559","text":"527"},{"range":"560","text":"527"},{"range":"561","text":"527"},{"range":"562","text":"527"},{"range":"563","text":"527"},{"range":"564","text":"527"},{"range":"565","text":"527"},{"range":"566","text":"527"},{"range":"567","text":"527"},{"range":"568","text":"527"},{"range":"569","text":"527"},{"range":"570","text":"527"},{"range":"571","text":"527"},{"range":"572","text":"527"},{"range":"573","text":"527"},{"range":"574","text":"527"},{"range":"575","text":"527"},{"range":"576","text":"527"},{"range":"577","text":"527"},{"range":"578","text":"527"},{"range":"579","text":"527"},{"range":"580","text":"527"},{"range":"581","text":"527"},{"range":"582","text":"527"},{"range":"583","text":"527"},{"range":"584","text":"527"},{"range":"585","text":"527"},{"range":"586","text":"527"},{"range":"587","text":"527"},{"range":"588","text":"527"},{"range":"589","text":"527"},{"range":"590","text":"527"},{"range":"591","text":"527"},{"range":"592","text":"527"},{"range":"593","text":"527"},{"range":"594","text":"527"},{"range":"595","text":"527"},{"range":"596","text":"527"},{"range":"597","text":"527"},{"range":"598","text":"527"},{"range":"599","text":"527"},{"range":"600","text":"527"},{"range":"601","text":"527"},{"range":"602","text":"527"},{"range":"603","text":"527"},{"range":"604","text":"527"},{"range":"605","text":"527"},{"range":"606","text":"527"},{"range":"607","text":"527"},{"range":"608","text":"527"},{"range":"609","text":"527"},{"range":"610","text":"527"},{"range":"611","text":"527"},{"range":"612","text":"527"},{"range":"613","text":"527"},{"range":"614","text":"527"},{"range":"615","text":"527"},{"range":"616","text":"527"},{"range":"617","text":"527"},{"range":"618","text":"527"},{"range":"619","text":"527"},{"range":"620","text":"527"},{"range":"621","text":"527"},{"range":"622","text":"527"},{"range":"623","text":"527"},{"range":"624","text":"527"},{"range":"625","text":"527"},{"range":"626","text":"527"},{"range":"627","text":"527"},{"range":"628","text":"527"},{"range":"629","text":"527"},{"range":"630","text":"527"},{"range":"631","text":"527"},{"range":"632","text":"527"},{"range":"633","text":"527"},{"range":"634","text":"527"},{"range":"635","text":"527"},{"range":"636","text":"527"},{"range":"637","text":"527"},{"range":"638","text":"527"},{"range":"639","text":"527"},{"range":"640","text":"527"},{"range":"641","text":"527"},{"range":"642","text":"527"},{"range":"643","text":"527"},{"range":"644","text":"527"},{"range":"645","text":"527"},{"range":"646","text":"527"},{"range":"647","text":"527"},{"range":"648","text":"527"},{"range":"649","text":"527"},{"range":"650","text":"527"},{"range":"651","text":"527"},{"range":"652","text":"527"},{"range":"653","text":"527"},{"range":"654","text":"527"},{"range":"655","text":"527"},{"range":"656","text":"527"},{"range":"657","text":"527"},{"range":"658","text":"527"},{"range":"659","text":"527"},{"range":"660","text":"527"},{"range":"661","text":"527"},{"range":"662","text":"527"},{"range":"663","text":"527"},{"range":"664","text":"527"},{"range":"665","text":"527"},{"range":"666","text":"527"},{"range":"667","text":"527"},{"range":"668","text":"527"},{"range":"669","text":"527"},{"range":"670","text":"527"},{"range":"671","text":"527"},{"range":"672","text":"527"},{"range":"673","text":"527"},{"range":"674","text":"527"},{"range":"675","text":"527"},{"range":"676","text":"527"},{"range":"677","text":"527"},{"range":"678","text":"527"},{"range":"679","text":"527"},{"range":"680","text":"527"},{"range":"681","text":"527"},{"range":"682","text":"527"},{"range":"683","text":"527"},{"range":"684","text":"527"},{"range":"685","text":"527"},{"range":"686","text":"527"},{"range":"687","text":"527"},{"range":"688","text":"527"},{"range":"689","text":"527"},{"range":"690","text":"527"},{"range":"691","text":"527"},{"range":"692","text":"527"},{"range":"693","text":"527"},{"range":"694","text":"527"},{"range":"695","text":"527"},{"range":"696","text":"527"},{"range":"697","text":"527"},{"range":"698","text":"527"},{"range":"699","text":"527"},{"range":"700","text":"527"},{"range":"701","text":"527"},{"range":"702","text":"527"},{"range":"703","text":"527"},{"range":"704","text":"527"},{"range":"705","text":"527"},{"range":"706","text":"527"},{"range":"707","text":"527"},{"range":"708","text":"527"},{"range":"709","text":"527"},{"range":"710","text":"527"},{"range":"711","text":"527"},{"range":"712","text":"527"},{"range":"713","text":"527"},{"range":"714","text":"527"},{"range":"715","text":"527"},{"range":"716","text":"527"},{"range":"717","text":"527"},{"range":"718","text":"527"},{"range":"719","text":"527"},{"range":"720","text":"527"},{"range":"721","text":"527"},[140,141],"",[176,177],[209,210],[248,249],[288,289],[337,338],[385,386],[448,449],[476,477],[530,531],[589,590],[650,651],[700,701],[876,877],[1026,1027],[1030,1031],[1066,1067],[1133,1134],[1371,1372],[1561,1562],[1797,1798],"no-global-assign","no-unsafe-negation",[29,30],[79,80],[144,145],[185,186],[225,226],[287,288],[393,394],[527,528],[1122,1123],[68,69],[385,386],[864,865],[937,938],[1055,1056],[1114,1115],[1126,1127],[1129,1130],[902,903],[984,985],[1048,1049],[1051,1052],[1325,1326],[1636,1637],[1754,1755],[1922,1923],[2275,2276],[2287,2288],[2400,2401],[2416,2417],[2658,2659],[2716,2717],[3296,3297],[3425,3426],[3705,3706],[3836,3837],[3889,3890],[3898,3899],[4000,4001],[4008,4009],[4390,4391],[4747,4748],[4761,4762],[4773,4774],[4880,4881],[5015,5016],[5023,5024],[5194,5195],[5265,5266],[5275,5276],[71,72],[130,131],[177,178],[222,223],[299,300],[371,372],[414,415],[498,499],[600,601],[886,887],[903,904],[30,31],[106,107],[149,150],[212,213],[264,265],[401,402],[444,445],[575,576],[578,579],[130,131],[200,201],[549,550],[624,625],[199,200],[244,245],[309,310],[365,366],[425,426],[492,493],[544,545],[592,593],[654,655],[1188,1189],[77,78],[129,130],[164,165],[225,226],[260,261],[353,354],[535,536],[551,552],[758,759],[799,800],[807,808],[939,940],[991,992],[1034,1035],[1080,1081],[53,54],[104,105],[718,719],[38,39],[196,197],[317,318],[524,525],[274,275],[314,315],[383,384],[94,95],[137,138],[205,206],[352,353],[90,91],[133,134],[201,202],[247,248],[385,386],[587,588],[30,31],[76,77],[101,102],[145,146],[190,191],[246,247],[727,728],[933,934],[1097,1098],[30,31],[75,76],[133,134],[177,178],[546,547],[44,45],[185,186],[45,46],[92,93],[156,157],[420,421],[539,540],[587,588],[745,746],[748,749],[95,96],[202,203],[384,385],[471,472],[30,31],[91,92],[316,317],[336,337],[410,411],[649,650],[690,691],[914,915],[1061,1062],[70,71],[139,140],[169,170],[481,482],[511,512],[866,867],[915,916],[944,945],[959,960],[1353,1354],[1400,1401],[1430,1431],[44,45],[99,100],[305,306],[44,45],[169,170]] \ No newline at end of file +[{"/Users/kellysample/Development/web-example/src/index.tsx":"1","/Users/kellysample/Development/web-example/src/locales/i18n.ts":"2","/Users/kellysample/Development/web-example/src/locales/translations.ts":"3","/Users/kellysample/Development/web-example/src/serviceWorker.ts":"4","/Users/kellysample/Development/web-example/src/store/configureStore.ts":"5","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx":"6","/Users/kellysample/Development/web-example/src/store/reducers.ts":"7","/Users/kellysample/Development/web-example/src/app/index.tsx":"8","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts":"9","/Users/kellysample/Development/web-example/src/styles/global-styles.ts":"10","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts":"11","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts":"12","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx":"13","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx":"14","/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts":"15","/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx":"16","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx":"17","/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx":"18","/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts":"19","/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts":"20","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/P.ts":"21","/Users/kellysample/Development/web-example/src/utils/loadable.tsx":"22","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts":"23","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx":"24","/Users/kellysample/Development/web-example/src/utils/request.ts":"25","/Users/kellysample/Development/web-example/src/app/components/Link/index.ts":"26","/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts":"27","/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts":"28"},{"size":1799,"mtime":1648222804296,"results":"29","hashOfConfig":"30"},{"size":1124,"mtime":1648222804297,"results":"31","hashOfConfig":"30"},{"size":1131,"mtime":1648222804297,"results":"32","hashOfConfig":"30"},{"size":5283,"mtime":1648225159469,"results":"33","hashOfConfig":"30"},{"size":907,"mtime":1648222804299,"results":"34","hashOfConfig":"30"},{"size":580,"mtime":1648222804301,"results":"35","hashOfConfig":"30"},{"size":632,"mtime":1648222804299,"results":"36","hashOfConfig":"30"},{"size":1192,"mtime":1648222804295,"results":"37","hashOfConfig":"30"},{"size":1082,"mtime":1648222804302,"results":"38","hashOfConfig":"30"},{"size":720,"mtime":1648222804300,"results":"39","hashOfConfig":"30"},{"size":528,"mtime":1648222804302,"results":"40","hashOfConfig":"30"},{"size":385,"mtime":1648222804302,"results":"41","hashOfConfig":"30"},{"size":354,"mtime":1648222804294,"results":"42","hashOfConfig":"30"},{"size":561,"mtime":1648226967177,"results":"43","hashOfConfig":"30"},{"size":58,"mtime":1648222804300,"results":"44","hashOfConfig":"30"},{"size":1332,"mtime":1648226629048,"results":"45","hashOfConfig":"30"},{"size":1101,"mtime":1648225858885,"results":"46","hashOfConfig":"30"},{"size":632,"mtime":1648226986630,"results":"47","hashOfConfig":"30"},{"size":708,"mtime":1648226603007,"results":"48","hashOfConfig":"30"},{"size":532,"mtime":1648226629048,"results":"49","hashOfConfig":"30"},{"size":187,"mtime":1648222804294,"results":"50","hashOfConfig":"30"},{"size":750,"mtime":1648222804305,"results":"51","hashOfConfig":"30"},{"size":475,"mtime":1648222804306,"results":"52","hashOfConfig":"30"},{"size":1063,"mtime":1648225858881,"results":"53","hashOfConfig":"30"},{"size":1434,"mtime":1648222804306,"results":"54","hashOfConfig":"30"},{"size":307,"mtime":1648225858880,"results":"55","hashOfConfig":"30"},{"size":171,"mtime":1648225858881,"results":"56","hashOfConfig":"30"},{"size":685,"mtime":1648226300241,"results":"57","hashOfConfig":"30"},{"filePath":"58","messages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":21,"fixableErrorCount":0,"fixableWarningCount":21,"source":"60","usedDeprecatedRules":"61"},"11mdaqp",{"filePath":"62","messages":"63","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"64","usedDeprecatedRules":"61"},{"filePath":"65","messages":"66","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"67","usedDeprecatedRules":"61"},{"filePath":"68","messages":"69","errorCount":0,"fatalErrorCount":0,"warningCount":32,"fixableErrorCount":0,"fixableWarningCount":32,"source":"70","usedDeprecatedRules":"61"},{"filePath":"71","messages":"72","errorCount":0,"fatalErrorCount":0,"warningCount":11,"fixableErrorCount":0,"fixableWarningCount":11,"source":"73","usedDeprecatedRules":"61"},{"filePath":"74","messages":"75","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"76","usedDeprecatedRules":"61"},{"filePath":"77","messages":"78","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"79","usedDeprecatedRules":"61"},{"filePath":"80","messages":"81","errorCount":0,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":10,"source":"82","usedDeprecatedRules":"61"},{"filePath":"83","messages":"84","errorCount":0,"fatalErrorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":15,"source":"85","usedDeprecatedRules":"61"},{"filePath":"86","messages":"87","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"88","usedDeprecatedRules":"61"},{"filePath":"89","messages":"90","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"91","usedDeprecatedRules":"61"},{"filePath":"92","messages":"93","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"94","usedDeprecatedRules":"61"},{"filePath":"95","messages":"96","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"97","usedDeprecatedRules":"61"},{"filePath":"98","messages":"99","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"100","messages":"101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"61"},{"filePath":"102","messages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"106"},{"filePath":"107","messages":"108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"109","messages":"110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"111","messages":"112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"113","messages":"114","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"115","usedDeprecatedRules":"61"},{"filePath":"116","messages":"117","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"118","usedDeprecatedRules":"61"},{"filePath":"119","messages":"120","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"121","usedDeprecatedRules":"61"},{"filePath":"122","messages":"123","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"124"},{"filePath":"125","messages":"126","errorCount":0,"fatalErrorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":12,"source":"127","usedDeprecatedRules":"61"},{"filePath":"128","messages":"129","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"130"},{"filePath":"131","messages":"132","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":null},{"filePath":"133","messages":"134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/kellysample/Development/web-example/src/index.tsx",["135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155"],"/**\n * index.tsx\n *\n * This is the entry file for the application, only setup and boilerplate\n * code.\n */\n\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport FontFaceObserver from 'fontfaceobserver';\nimport * as serviceWorker from 'serviceWorker';\n\n// Use consistent styling\nimport 'sanitize.css/sanitize.css';\n\nimport { App } from 'app';\n\nimport { HelmetProvider } from 'react-helmet-async';\n\nimport { configureAppStore } from 'store/configureStore';\n\nimport { ThemeProvider } from 'styles/theme/ThemeProvider';\n\n// Initialize languages\nimport './locales/i18n';\n\n// Observe loading of Inter (to remove 'Inter', remove the tag in\n// the index.html file and this observer)\nconst openSansObserver = new FontFaceObserver('Inter', {});\n\n// When Inter is loaded, add a font-family using Inter to the body\nopenSansObserver.load().then(() => {\n document.body.classList.add('fontLoaded');\n});\n\nconst store = configureAppStore();\nconst MOUNT_NODE = document.getElementById('root') as HTMLElement;\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n MOUNT_NODE,\n);\n\n// Hot reloadable translation json files\nif (module.hot) {\n module.hot.accept(['./locales/i18n'], () => {\n // No need to render the App again because i18next works with the hooks\n });\n}\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n",["156","157"],"/Users/kellysample/Development/web-example/src/locales/i18n.ts",["158","159","160","161","162","163","164","165","166"],"import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nimport en from './en/translation.json';\nimport de from './de/translation.json';\nimport { convertLanguageJsonToObject } from './translations';\n\nexport const translationsJson = {\n en: {\n translation: en,\n },\n de: {\n translation: de,\n },\n};\n\n// Create the 'translations' object to provide full intellisense support for the static json files.\nconvertLanguageJsonToObject(en);\n\nexport const i18n = i18next\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n resources: translationsJson,\n fallbackLng: 'en',\n debug:\n process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test',\n\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n });\n","/Users/kellysample/Development/web-example/src/locales/translations.ts",["167","168","169","170","171","172","173","174"],"import { ConvertedToObjectType, TranslationJsonType } from './types';\n\n/**\n * This file is seperate from the './i18n.ts' simply to make the Hot Module Replacement work seamlessly.\n * Your components can import this file in 'messages.ts' files which would ruin the HMR if this isn't a separate module\n */\nexport const translations: ConvertedToObjectType = {} as any;\n\n/*\n * Converts the static JSON file into an object where keys are identical\n * but values are strings concatenated according to syntax.\n * This is helpful when using the JSON file keys and still having the intellisense support\n * along with type-safety\n */\nexport const convertLanguageJsonToObject = (\n json: any,\n objToConvertTo = translations,\n current?: string,\n) => {\n Object.keys(json).forEach(key => {\n const currentLookupKey = current ? `${current}.${key}` : key;\n if (typeof json[key] === 'object') {\n objToConvertTo[key] = {};\n convertLanguageJsonToObject(\n json[key],\n objToConvertTo[key],\n currentLookupKey,\n );\n } else {\n objToConvertTo[key] = currentLookupKey;\n }\n });\n};\n","/Users/kellysample/Development/web-example/src/serviceWorker.ts",["175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206"],"// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/store/configureStore.ts",["207","208","209","210","211","212","213","214","215","216","217"],"import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\nimport { createInjectorsEnhancer } from 'redux-injectors';\nimport createSagaMiddleware from 'redux-saga';\n\nimport { createReducer } from './reducers';\n\nexport function configureAppStore() {\n const reduxSagaMonitorOptions = {};\n const sagaMiddleware = createSagaMiddleware(reduxSagaMonitorOptions);\n const { run: runSaga } = sagaMiddleware;\n\n // Create the store with saga middleware\n const middlewares = [sagaMiddleware];\n\n const enhancers = [\n createInjectorsEnhancer({\n createReducer,\n runSaga,\n }),\n ];\n\n const store = configureStore({\n reducer: createReducer(),\n middleware: [...getDefaultMiddleware(), ...middlewares],\n devTools:\n /* istanbul ignore next line */\n process.env.NODE_ENV !== 'production' ||\n process.env.PUBLIC_URL.length > 0,\n enhancers,\n });\n\n return store;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx",["218","219","220","221","222","223","224","225","226"],"import * as React from 'react';\nimport { ThemeProvider as OriginalThemeProvider } from 'styled-components';\nimport { useSelector } from 'react-redux';\nimport { selectTheme, themeSliceKey, reducer } from './slice';\nimport { useInjectReducer } from 'redux-injectors';\n\nexport const ThemeProvider = (props: { children: React.ReactChild }) => {\n useInjectReducer({ key: themeSliceKey, reducer: reducer });\n\n const theme = useSelector(selectTheme);\n return (\n \n {React.Children.only(props.children)}\n \n );\n};\n","/Users/kellysample/Development/web-example/src/store/reducers.ts",["227","228","229","230"],"/**\n * Combine all reducers in this file and export the combined reducers.\n */\n\nimport { combineReducers } from '@reduxjs/toolkit';\n\nimport { InjectedReducersType } from 'utils/types/injector-typings';\n\n/**\n * Merges the main reducer with the router state and dynamically injected reducers\n */\nexport function createReducer(injectedReducers: InjectedReducersType = {}) {\n // Initially we don't have any injectedReducers, so returning identity function to avoid the error\n if (Object.keys(injectedReducers).length === 0) {\n return state => state;\n } else {\n return combineReducers({\n ...injectedReducers,\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/app/index.tsx",["231","232","233","234","235","236","237","238","239","240"],"/**\n *\n * App\n *\n * This component is the skeleton around the actual pages, and should only\n * contain code that should be seen on all pages. (e.g. navigation bar)\n */\n\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { Switch, Route, BrowserRouter } from 'react-router-dom';\n\nimport { GlobalStyle } from '../styles/global-styles';\n\nimport { HomePage } from './containers/HomePage/Loadable';\nimport { NotFoundPage } from './containers/NotFoundPage/Loadable';\nimport { Countries } from './containers/Countries';\nimport { useTranslation } from 'react-i18next';\n\nexport function App() {\n const { i18n } = useTranslation();\n return (\n \n \n\n \n \n \n \n \n \n \n );\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts",["241","242","243","244","245","246","247","248","249","250","251","252","253","254","255"],"import { PayloadAction, createSelector, createSlice } from '@reduxjs/toolkit';\nimport { ThemeState, ThemeKeyType } from './types';\nimport { themes } from './themes';\nimport { getThemeFromStorage, isSystemDark } from './utils';\nimport { RootState } from 'types';\n\nexport const initialState: ThemeState = {\n selected: getThemeFromStorage() || 'system',\n};\n\nconst themeSlice = createSlice({\n name: 'theme',\n initialState,\n reducers: {\n changeTheme(state, action: PayloadAction) {\n state.selected = action.payload;\n },\n },\n});\n\nexport const selectTheme = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => {\n if (theme.selected === 'system') {\n return isSystemDark ? themes.dark : themes.light;\n }\n return themes[theme.selected];\n },\n);\n\nexport const selectThemeKey = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => theme.selected,\n);\n\nexport const { changeTheme } = themeSlice.actions;\nexport const reducer = themeSlice.reducer;\nexport const themeSliceKey = themeSlice.name;\n","/Users/kellysample/Development/web-example/src/styles/global-styles.ts",["256","257","258"],"import { createGlobalStyle } from 'styled-components';\nimport { StyleConstants } from './StyleConstants';\n/* istanbul ignore next */\nexport const GlobalStyle = createGlobalStyle`\n html,\n body {\n height: 100%;\n width: 100%;\n line-height: 1.5;\n }\n\n body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding-top: ${StyleConstants.NAV_BAR_HEIGHT};\n background-color: ${p => p.theme.background};\n }\n\n body.fontLoaded {\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n \n p,\n label {\n line-height: 1.5em;\n }\n\n input, select, button {\n font-family: inherit;\n font-size: inherit;\n }\n\n .icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n`;\n","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts",["259","260","261","262"],"import { ThemeKeyType } from './types';\n\n/* istanbul ignore next line */\nexport const isSystemDark = window?.matchMedia\n ? window.matchMedia('(prefers-color-scheme: dark)')?.matches\n : undefined;\n\nexport function saveTheme(theme: ThemeKeyType) {\n window.localStorage && localStorage.setItem('selectedTheme', theme);\n}\n\n/* istanbul ignore next line */\nexport function getThemeFromStorage(): ThemeKeyType | null {\n return window.localStorage\n ? (localStorage.getItem('selectedTheme') as ThemeKeyType) || null\n : null;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts",["263","264","265"],"const lightTheme = {\n primary: 'rgba(215,113,88,1)',\n text: 'rgba(58,52,51,1)',\n textSecondary: 'rgba(58,52,51,0.7)',\n background: 'rgba(255,255,255,1)',\n backgroundVariant: 'rgba(251,249,249,1)',\n border: 'rgba(58,52,51,0.12)',\n borderLight: 'rgba(58,52,51,0.05)',\n};\n\nexport type Theme = typeof lightTheme;\n\nexport const themes = {\n light: lightTheme,\n dark: lightTheme,\n};\n","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx",["266","267","268","269"],"/**\n * Asynchronously loads the component for NotFoundPage\n */\n\nimport * as React from 'react';\nimport { lazyLoad } from 'utils/loadable';\nimport { LoadingIndicator } from 'app/components/LoadingIndicator';\n\nexport const NotFoundPage = lazyLoad(\n () => import('./index'),\n module => module.NotFoundPage,\n {\n fallback: ,\n },\n);\n","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx",[],"/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx",["270","271","272","273","274","275","276","277","278"],"import * as React from 'react';\nimport styled from 'styled-components/macro';\nimport { P } from './P';\nimport { Link } from 'app/components/Link';\nimport { Helmet } from 'react-helmet-async';\nimport { StyleConstants } from 'styles/StyleConstants';\n\nexport function NotFoundPage() {\n return (\n <>\n \n 404 Page Not Found\n \n \n \n \n 4\n <span role=\"img\" aria-label=\"Crying Face\">\n 😢\n </span>\n 4\n \n

Page not found.

\n Return to Home Page\n
\n \n );\n}\n\nconst Wrapper = styled.div`\n height: calc(100vh - ${StyleConstants.NAV_BAR_HEIGHT});\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n min-height: 320px;\n`;\n\nconst Title = styled.div`\n margin-top: -8vh;\n font-weight: bold;\n color: ${p => p.theme.text};\n font-size: 3.375rem;\n\n span {\n font-size: 3.125rem;\n }\n`;\n","/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/P.ts",["279","280"],"import styled from 'styled-components/macro';\n\nexport const P = styled.p`\n font-size: 1rem;\n line-height: 1.5;\n color: ${p => p.theme.textSecondary};\n margin: 0.625rem 0 1.5rem 0;\n`;\n","/Users/kellysample/Development/web-example/src/utils/loadable.tsx",["281","282","283","284","285","286","287","288"],"import React, { lazy, Suspense } from 'react';\n\ninterface Opts {\n fallback: React.ReactNode;\n}\ntype Unpromisify = T extends Promise ? P : never;\n\nexport const lazyLoad = <\n T extends Promise,\n U extends React.ComponentType\n>(\n importFunc: () => T,\n selectorFunc?: (s: Unpromisify) => U,\n opts: Opts = { fallback: null },\n) => {\n let lazyFactory: () => Promise<{ default: U }> = importFunc;\n\n if (selectorFunc) {\n lazyFactory = () =>\n importFunc().then(module => ({ default: selectorFunc(module) }));\n }\n\n const LazyComponent = lazy(lazyFactory);\n\n return (props: React.ComponentProps): JSX.Element => (\n \n \n \n );\n};\n","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts",["289","290","291","292"],"import {\n useInjectReducer as useReducer,\n useInjectSaga as useSaga,\n} from 'redux-injectors';\nimport {\n InjectReducerParams,\n InjectSagaParams,\n RootStateKeyType,\n} from './types/injector-typings';\n\n/* Wrap redux-injectors with stricter types */\n\nexport function useInjectReducer(\n params: InjectReducerParams,\n) {\n return useReducer(params);\n}\n\nexport function useInjectSaga(params: InjectSagaParams) {\n return useSaga(params);\n}\n","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx",["293","294","295","296","297","298","299","300","301"],"import * as React from 'react';\nimport styled, { keyframes } from 'styled-components/macro';\n\ninterface Props extends SvgProps {}\n\nexport const LoadingIndicator = (props: Props) => (\n \n \n \n);\n\nconst speed = 1.5;\n\nconst rotate = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nconst dash = keyframes`\n 0% {\n stroke-dasharray: 0, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 100, 150;\n stroke-dashoffset: -24;\n }\n 100% {\n stroke-dasharray: 0, 150;\n stroke-dashoffset: -124;\n }\n`;\n\ninterface SvgProps {\n small?: boolean;\n}\n\nconst Svg = styled.svg`\n animation: ${rotate} ${speed * 1.75}s linear infinite;\n height: ${p => (p.small ? '1.25rem' : '3rem')};\n width: ${p => (p.small ? '1.25rem' : '3rem')};\n transform-origin: center;\n`;\n\nconst Circle = styled.circle`\n animation: ${dash} ${speed}s ease-in-out infinite;\n stroke: ${p => p.theme.primary};\n stroke-linecap: round;\n`;\n","/Users/kellysample/Development/web-example/src/utils/request.ts",["302","303","304","305","306","307","308","309","310","311","312","313"],"export class ResponseError extends Error {\n public response: Response;\n\n constructor(response: Response) {\n super(response.statusText);\n this.response = response;\n }\n}\n/**\n * Parses the JSON returned by a network request\n *\n * @param {object} response A response from a network request\n *\n * @return {object} The parsed JSON from the request\n */\nfunction parseJSON(response: Response) {\n if (response.status === 204 || response.status === 205) {\n return null;\n }\n return response.json();\n}\n\n/**\n * Checks if a network request came back fine, and throws an error if not\n *\n * @param {object} response A response from a network request\n *\n * @return {object|undefined} Returns either the response, or throws an error\n */\nfunction checkStatus(response: Response) {\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n const error = new ResponseError(response);\n error.response = response;\n throw error;\n}\n\n/**\n * Requests a URL, returning a promise\n *\n * @param {string} url The URL we want to request\n * @param {object} [options] The options we want to pass to \"fetch\"\n *\n * @return {object} The response data\n */\nexport async function request(\n url: string,\n options?: RequestInit,\n): Promise<{} | { err: ResponseError }> {\n const fetchResponse = await fetch(url, options);\n const response = checkStatus(fetchResponse);\n return parseJSON(response);\n}\n","/Users/kellysample/Development/web-example/src/app/components/Link/index.ts",["314","315","316"],"import styled from 'styled-components/macro';\nimport { Link as RouterLink } from 'react-router-dom';\n\nexport const Link = styled(RouterLink)`\n color: ${p => p.theme.primary};\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n opacity: 0.8;\n }\n\n &:active {\n opacity: 0.4;\n }\n`;\n","/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts",["317","318"],"/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts",[],{"ruleId":"319","severity":1,"message":"320","line":8,"column":33,"nodeType":null,"endLine":8,"endColumn":34,"fix":"321"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":35,"nodeType":null,"endLine":9,"endColumn":36,"fix":"322"},{"ruleId":"319","severity":1,"message":"320","line":11,"column":31,"nodeType":null,"endLine":11,"endColumn":32,"fix":"323"},{"ruleId":"319","severity":1,"message":"320","line":12,"column":38,"nodeType":null,"endLine":12,"endColumn":39,"fix":"324"},{"ruleId":"319","severity":1,"message":"320","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"325"},{"ruleId":"319","severity":1,"message":"320","line":14,"column":48,"nodeType":null,"endLine":14,"endColumn":49,"fix":"326"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":47,"nodeType":null,"endLine":15,"endColumn":48,"fix":"327"},{"ruleId":"319","severity":1,"message":"320","line":18,"column":35,"nodeType":null,"endLine":18,"endColumn":36,"fix":"328"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":26,"nodeType":null,"endLine":20,"endColumn":27,"fix":"329"},{"ruleId":"319","severity":1,"message":"320","line":22,"column":52,"nodeType":null,"endLine":22,"endColumn":53,"fix":"330"},{"ruleId":"319","severity":1,"message":"320","line":24,"column":57,"nodeType":null,"endLine":24,"endColumn":58,"fix":"331"},{"ruleId":"319","severity":1,"message":"320","line":26,"column":59,"nodeType":null,"endLine":26,"endColumn":60,"fix":"332"},{"ruleId":"319","severity":1,"message":"320","line":29,"column":24,"nodeType":null,"endLine":29,"endColumn":25,"fix":"333"},{"ruleId":"319","severity":1,"message":"320","line":33,"column":59,"nodeType":null,"endLine":33,"endColumn":60,"fix":"334"},{"ruleId":"319","severity":1,"message":"320","line":37,"column":44,"nodeType":null,"endLine":37,"endColumn":45,"fix":"335"},{"ruleId":"319","severity":1,"message":"320","line":38,"column":3,"nodeType":null,"endLine":38,"endColumn":4,"fix":"336"},{"ruleId":"319","severity":1,"message":"320","line":40,"column":34,"nodeType":null,"endLine":40,"endColumn":35,"fix":"337"},{"ruleId":"319","severity":1,"message":"320","line":41,"column":66,"nodeType":null,"endLine":41,"endColumn":67,"fix":"338"},{"ruleId":"319","severity":1,"message":"320","line":54,"column":2,"nodeType":null,"endLine":54,"endColumn":3,"fix":"339"},{"ruleId":"319","severity":1,"message":"320","line":60,"column":5,"nodeType":null,"endLine":60,"endColumn":6,"fix":"340"},{"ruleId":"319","severity":1,"message":"320","line":66,"column":27,"nodeType":null,"endLine":66,"endColumn":28,"fix":"341"},{"ruleId":"342","replacedBy":"343"},{"ruleId":"344","replacedBy":"345"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":30,"nodeType":null,"endLine":1,"endColumn":31,"fix":"346"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":49,"nodeType":null,"endLine":2,"endColumn":50,"fix":"347"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":64,"nodeType":null,"endLine":3,"endColumn":65,"fix":"348"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":39,"nodeType":null,"endLine":5,"endColumn":40,"fix":"349"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":39,"nodeType":null,"endLine":6,"endColumn":40,"fix":"350"},{"ruleId":"319","severity":1,"message":"320","line":7,"column":61,"nodeType":null,"endLine":7,"endColumn":62,"fix":"351"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"352"},{"ruleId":"319","severity":1,"message":"320","line":19,"column":32,"nodeType":null,"endLine":19,"endColumn":33,"fix":"353"},{"ruleId":"319","severity":1,"message":"320","line":38,"column":5,"nodeType":null,"endLine":38,"endColumn":6,"fix":"354"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":69,"nodeType":null,"endLine":1,"endColumn":70,"fix":"355"},{"ruleId":"319","severity":1,"message":"320","line":7,"column":82,"nodeType":null,"endLine":7,"endColumn":83,"fix":"356"},{"ruleId":"319","severity":1,"message":"320","line":21,"column":65,"nodeType":null,"endLine":21,"endColumn":66,"fix":"357"},{"ruleId":"319","severity":1,"message":"320","line":23,"column":31,"nodeType":null,"endLine":23,"endColumn":32,"fix":"358"},{"ruleId":"319","severity":1,"message":"320","line":28,"column":8,"nodeType":null,"endLine":28,"endColumn":9,"fix":"359"},{"ruleId":"319","severity":1,"message":"320","line":30,"column":45,"nodeType":null,"endLine":30,"endColumn":46,"fix":"360"},{"ruleId":"319","severity":1,"message":"320","line":32,"column":5,"nodeType":null,"endLine":32,"endColumn":6,"fix":"361"},{"ruleId":"319","severity":1,"message":"320","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"362"},{"ruleId":"319","severity":1,"message":"320","line":21,"column":2,"nodeType":null,"endLine":21,"endColumn":3,"fix":"363"},{"ruleId":"319","severity":1,"message":"320","line":24,"column":64,"nodeType":null,"endLine":24,"endColumn":65,"fix":"364"},{"ruleId":"319","severity":1,"message":"320","line":25,"column":63,"nodeType":null,"endLine":25,"endColumn":64,"fix":"365"},{"ruleId":"319","severity":1,"message":"320","line":26,"column":2,"nodeType":null,"endLine":26,"endColumn":3,"fix":"366"},{"ruleId":"319","severity":1,"message":"320","line":31,"column":76,"nodeType":null,"endLine":31,"endColumn":77,"fix":"367"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":13,"nodeType":null,"endLine":36,"endColumn":14,"fix":"368"},{"ruleId":"319","severity":1,"message":"320","line":40,"column":66,"nodeType":null,"endLine":40,"endColumn":67,"fix":"369"},{"ruleId":"319","severity":1,"message":"320","line":44,"column":47,"nodeType":null,"endLine":44,"endColumn":48,"fix":"370"},{"ruleId":"319","severity":1,"message":"320","line":52,"column":12,"nodeType":null,"endLine":52,"endColumn":13,"fix":"371"},{"ruleId":"319","severity":1,"message":"320","line":53,"column":11,"nodeType":null,"endLine":53,"endColumn":12,"fix":"372"},{"ruleId":"319","severity":1,"message":"320","line":56,"column":39,"nodeType":null,"endLine":56,"endColumn":40,"fix":"373"},{"ruleId":"319","severity":1,"message":"320","line":58,"column":7,"nodeType":null,"endLine":58,"endColumn":8,"fix":"374"},{"ruleId":"319","severity":1,"message":"320","line":67,"column":57,"nodeType":null,"endLine":67,"endColumn":58,"fix":"375"},{"ruleId":"319","severity":1,"message":"320","line":69,"column":17,"nodeType":null,"endLine":69,"endColumn":18,"fix":"376"},{"ruleId":"319","severity":1,"message":"320","line":80,"column":16,"nodeType":null,"endLine":80,"endColumn":17,"fix":"377"},{"ruleId":"319","severity":1,"message":"320","line":84,"column":46,"nodeType":null,"endLine":84,"endColumn":47,"fix":"378"},{"ruleId":"319","severity":1,"message":"320","line":90,"column":64,"nodeType":null,"endLine":90,"endColumn":65,"fix":"379"},{"ruleId":"319","severity":1,"message":"320","line":94,"column":47,"nodeType":null,"endLine":94,"endColumn":48,"fix":"380"},{"ruleId":"319","severity":1,"message":"320","line":98,"column":10,"nodeType":null,"endLine":98,"endColumn":11,"fix":"381"},{"ruleId":"319","severity":1,"message":"320","line":99,"column":8,"nodeType":null,"endLine":99,"endColumn":9,"fix":"382"},{"ruleId":"319","severity":1,"message":"320","line":102,"column":72,"nodeType":null,"endLine":102,"endColumn":73,"fix":"383"},{"ruleId":"319","severity":1,"message":"320","line":103,"column":7,"nodeType":null,"endLine":103,"endColumn":8,"fix":"384"},{"ruleId":"319","severity":1,"message":"320","line":113,"column":63,"nodeType":null,"endLine":113,"endColumn":64,"fix":"385"},{"ruleId":"319","severity":1,"message":"320","line":121,"column":37,"nodeType":null,"endLine":121,"endColumn":38,"fix":"386"},{"ruleId":"319","severity":1,"message":"320","line":122,"column":13,"nodeType":null,"endLine":122,"endColumn":14,"fix":"387"},{"ruleId":"319","severity":1,"message":"320","line":123,"column":11,"nodeType":null,"endLine":123,"endColumn":12,"fix":"388"},{"ruleId":"319","severity":1,"message":"320","line":126,"column":39,"nodeType":null,"endLine":126,"endColumn":40,"fix":"389"},{"ruleId":"319","severity":1,"message":"320","line":132,"column":8,"nodeType":null,"endLine":132,"endColumn":9,"fix":"390"},{"ruleId":"319","severity":1,"message":"320","line":133,"column":7,"nodeType":null,"endLine":133,"endColumn":8,"fix":"391"},{"ruleId":"319","severity":1,"message":"320","line":140,"column":34,"nodeType":null,"endLine":140,"endColumn":35,"fix":"392"},{"ruleId":"319","severity":1,"message":"320","line":143,"column":37,"nodeType":null,"endLine":143,"endColumn":38,"fix":"393"},{"ruleId":"319","severity":1,"message":"320","line":144,"column":9,"nodeType":null,"endLine":144,"endColumn":10,"fix":"394"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":72,"nodeType":null,"endLine":1,"endColumn":73,"fix":"395"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":58,"nodeType":null,"endLine":2,"endColumn":59,"fix":"396"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":46,"nodeType":null,"endLine":3,"endColumn":47,"fix":"397"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":43,"nodeType":null,"endLine":5,"endColumn":44,"fix":"398"},{"ruleId":"319","severity":1,"message":"320","line":8,"column":37,"nodeType":null,"endLine":8,"endColumn":38,"fix":"399"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":71,"nodeType":null,"endLine":9,"endColumn":72,"fix":"400"},{"ruleId":"319","severity":1,"message":"320","line":10,"column":42,"nodeType":null,"endLine":10,"endColumn":43,"fix":"401"},{"ruleId":"319","severity":1,"message":"320","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"402"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":4,"nodeType":null,"endLine":20,"endColumn":5,"fix":"403"},{"ruleId":"319","severity":1,"message":"320","line":30,"column":5,"nodeType":null,"endLine":30,"endColumn":6,"fix":"404"},{"ruleId":"319","severity":1,"message":"320","line":32,"column":15,"nodeType":null,"endLine":32,"endColumn":16,"fix":"405"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"406"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":75,"nodeType":null,"endLine":2,"endColumn":76,"fix":"407"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":42,"nodeType":null,"endLine":3,"endColumn":43,"fix":"408"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":62,"nodeType":null,"endLine":4,"endColumn":63,"fix":"409"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"410"},{"ruleId":"319","severity":1,"message":"320","line":8,"column":61,"nodeType":null,"endLine":8,"endColumn":62,"fix":"411"},{"ruleId":"319","severity":1,"message":"320","line":10,"column":41,"nodeType":null,"endLine":10,"endColumn":42,"fix":"412"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":4,"nodeType":null,"endLine":15,"endColumn":5,"fix":"413"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"414"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"415"},{"ruleId":"319","severity":1,"message":"320","line":7,"column":68,"nodeType":null,"endLine":7,"endColumn":69,"fix":"416"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":26,"nodeType":null,"endLine":15,"endColumn":27,"fix":"417"},{"ruleId":"319","severity":1,"message":"320","line":19,"column":7,"nodeType":null,"endLine":19,"endColumn":8,"fix":"418"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":31,"nodeType":null,"endLine":9,"endColumn":32,"fix":"419"},{"ruleId":"319","severity":1,"message":"320","line":10,"column":44,"nodeType":null,"endLine":10,"endColumn":45,"fix":"420"},{"ruleId":"319","severity":1,"message":"320","line":11,"column":64,"nodeType":null,"endLine":11,"endColumn":65,"fix":"421"},{"ruleId":"319","severity":1,"message":"320","line":13,"column":54,"nodeType":null,"endLine":13,"endColumn":55,"fix":"422"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":58,"nodeType":null,"endLine":15,"endColumn":59,"fix":"423"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":66,"nodeType":null,"endLine":16,"endColumn":67,"fix":"424"},{"ruleId":"319","severity":1,"message":"320","line":17,"column":51,"nodeType":null,"endLine":17,"endColumn":52,"fix":"425"},{"ruleId":"319","severity":1,"message":"320","line":18,"column":47,"nodeType":null,"endLine":18,"endColumn":48,"fix":"426"},{"ruleId":"319","severity":1,"message":"320","line":21,"column":36,"nodeType":null,"endLine":21,"endColumn":37,"fix":"427"},{"ruleId":"319","severity":1,"message":"320","line":41,"column":4,"nodeType":null,"endLine":41,"endColumn":5,"fix":"428"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":78,"nodeType":null,"endLine":1,"endColumn":79,"fix":"429"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":51,"nodeType":null,"endLine":2,"endColumn":52,"fix":"430"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":34,"nodeType":null,"endLine":3,"endColumn":35,"fix":"431"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":60,"nodeType":null,"endLine":4,"endColumn":61,"fix":"432"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":34,"nodeType":null,"endLine":5,"endColumn":35,"fix":"433"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"434"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":38,"nodeType":null,"endLine":16,"endColumn":39,"fix":"435"},{"ruleId":"319","severity":1,"message":"320","line":19,"column":3,"nodeType":null,"endLine":19,"endColumn":4,"fix":"436"},{"ruleId":"319","severity":1,"message":"320","line":25,"column":55,"nodeType":null,"endLine":25,"endColumn":56,"fix":"437"},{"ruleId":"319","severity":1,"message":"320","line":27,"column":34,"nodeType":null,"endLine":27,"endColumn":35,"fix":"438"},{"ruleId":"319","severity":1,"message":"320","line":29,"column":2,"nodeType":null,"endLine":29,"endColumn":3,"fix":"439"},{"ruleId":"319","severity":1,"message":"320","line":34,"column":2,"nodeType":null,"endLine":34,"endColumn":3,"fix":"440"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":50,"nodeType":null,"endLine":36,"endColumn":51,"fix":"441"},{"ruleId":"319","severity":1,"message":"320","line":37,"column":42,"nodeType":null,"endLine":37,"endColumn":43,"fix":"442"},{"ruleId":"319","severity":1,"message":"320","line":38,"column":45,"nodeType":null,"endLine":38,"endColumn":46,"fix":"443"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":54,"nodeType":null,"endLine":1,"endColumn":55,"fix":"444"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":50,"nodeType":null,"endLine":2,"endColumn":51,"fix":"445"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":2,"nodeType":null,"endLine":36,"endColumn":3,"fix":"446"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":39,"nodeType":null,"endLine":1,"endColumn":40,"fix":"447"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":14,"nodeType":null,"endLine":6,"endColumn":15,"fix":"448"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":70,"nodeType":null,"endLine":9,"endColumn":71,"fix":"449"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":11,"nodeType":null,"endLine":16,"endColumn":12,"fix":"450"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"451"},{"ruleId":"319","severity":1,"message":"320","line":11,"column":38,"nodeType":null,"endLine":11,"endColumn":39,"fix":"452"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"453"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"454"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":42,"nodeType":null,"endLine":6,"endColumn":43,"fix":"455"},{"ruleId":"319","severity":1,"message":"320","line":7,"column":67,"nodeType":null,"endLine":7,"endColumn":68,"fix":"456"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":2,"nodeType":null,"endLine":15,"endColumn":3,"fix":"457"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"458"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":45,"nodeType":null,"endLine":2,"endColumn":46,"fix":"459"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":24,"nodeType":null,"endLine":3,"endColumn":25,"fix":"460"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":43,"nodeType":null,"endLine":4,"endColumn":44,"fix":"461"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":44,"nodeType":null,"endLine":5,"endColumn":45,"fix":"462"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":55,"nodeType":null,"endLine":6,"endColumn":56,"fix":"463"},{"ruleId":"319","severity":1,"message":"320","line":27,"column":4,"nodeType":null,"endLine":27,"endColumn":5,"fix":"464"},{"ruleId":"319","severity":1,"message":"320","line":37,"column":2,"nodeType":null,"endLine":37,"endColumn":3,"fix":"465"},{"ruleId":"319","severity":1,"message":"320","line":48,"column":2,"nodeType":null,"endLine":48,"endColumn":3,"fix":"466"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"467"},{"ruleId":"319","severity":1,"message":"320","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"468"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":46,"nodeType":null,"endLine":1,"endColumn":47,"fix":"469"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":28,"nodeType":null,"endLine":4,"endColumn":29,"fix":"470"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":61,"nodeType":null,"endLine":6,"endColumn":62,"fix":"471"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":62,"nodeType":null,"endLine":16,"endColumn":63,"fix":"472"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":71,"nodeType":null,"endLine":20,"endColumn":72,"fix":"473"},{"ruleId":"319","severity":1,"message":"320","line":23,"column":42,"nodeType":null,"endLine":23,"endColumn":43,"fix":"474"},{"ruleId":"319","severity":1,"message":"320","line":29,"column":4,"nodeType":null,"endLine":29,"endColumn":5,"fix":"475"},{"ruleId":"319","severity":1,"message":"320","line":30,"column":2,"nodeType":null,"endLine":30,"endColumn":3,"fix":"476"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":25,"nodeType":null,"endLine":4,"endColumn":26,"fix":"477"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":34,"nodeType":null,"endLine":9,"endColumn":35,"fix":"478"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":28,"nodeType":null,"endLine":16,"endColumn":29,"fix":"479"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"480"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"481"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":60,"nodeType":null,"endLine":2,"endColumn":61,"fix":"482"},{"ruleId":"319","severity":1,"message":"320","line":10,"column":2,"nodeType":null,"endLine":10,"endColumn":3,"fix":"483"},{"ruleId":"319","severity":1,"message":"320","line":12,"column":18,"nodeType":null,"endLine":12,"endColumn":19,"fix":"484"},{"ruleId":"319","severity":1,"message":"320","line":18,"column":2,"nodeType":null,"endLine":18,"endColumn":3,"fix":"485"},{"ruleId":"319","severity":1,"message":"320","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"486"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":18,"nodeType":null,"endLine":36,"endColumn":19,"fix":"487"},{"ruleId":"319","severity":1,"message":"320","line":44,"column":2,"nodeType":null,"endLine":44,"endColumn":3,"fix":"488"},{"ruleId":"319","severity":1,"message":"320","line":50,"column":2,"nodeType":null,"endLine":50,"endColumn":3,"fix":"489"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":28,"nodeType":null,"endLine":2,"endColumn":29,"fix":"490"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"491"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":29,"nodeType":null,"endLine":6,"endColumn":30,"fix":"492"},{"ruleId":"319","severity":1,"message":"320","line":18,"column":16,"nodeType":null,"endLine":18,"endColumn":17,"fix":"493"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"494"},{"ruleId":"319","severity":1,"message":"320","line":32,"column":20,"nodeType":null,"endLine":32,"endColumn":21,"fix":"495"},{"ruleId":"319","severity":1,"message":"320","line":34,"column":44,"nodeType":null,"endLine":34,"endColumn":45,"fix":"496"},{"ruleId":"319","severity":1,"message":"320","line":35,"column":28,"nodeType":null,"endLine":35,"endColumn":29,"fix":"497"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":14,"nodeType":null,"endLine":36,"endColumn":15,"fix":"498"},{"ruleId":"319","severity":1,"message":"320","line":51,"column":50,"nodeType":null,"endLine":51,"endColumn":51,"fix":"499"},{"ruleId":"319","severity":1,"message":"320","line":52,"column":46,"nodeType":null,"endLine":52,"endColumn":47,"fix":"500"},{"ruleId":"319","severity":1,"message":"320","line":53,"column":29,"nodeType":null,"endLine":53,"endColumn":30,"fix":"501"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"502"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":54,"nodeType":null,"endLine":2,"endColumn":55,"fix":"503"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"504"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"505"},{"ruleId":"319","severity":1,"message":"320","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"506"},"prettier/prettier","Delete `;`",{"range":"507","text":"508"},{"range":"509","text":"508"},{"range":"510","text":"508"},{"range":"511","text":"508"},{"range":"512","text":"508"},{"range":"513","text":"508"},{"range":"514","text":"508"},{"range":"515","text":"508"},{"range":"516","text":"508"},{"range":"517","text":"508"},{"range":"518","text":"508"},{"range":"519","text":"508"},{"range":"520","text":"508"},{"range":"521","text":"508"},{"range":"522","text":"508"},{"range":"523","text":"508"},{"range":"524","text":"508"},{"range":"525","text":"508"},{"range":"526","text":"508"},{"range":"527","text":"508"},{"range":"528","text":"508"},"no-native-reassign",["529"],"no-negated-in-lhs",["530"],{"range":"531","text":"508"},{"range":"532","text":"508"},{"range":"533","text":"508"},{"range":"534","text":"508"},{"range":"535","text":"508"},{"range":"536","text":"508"},{"range":"537","text":"508"},{"range":"538","text":"508"},{"range":"539","text":"508"},{"range":"540","text":"508"},{"range":"541","text":"508"},{"range":"542","text":"508"},{"range":"543","text":"508"},{"range":"544","text":"508"},{"range":"545","text":"508"},{"range":"546","text":"508"},{"range":"547","text":"508"},{"range":"548","text":"508"},{"range":"549","text":"508"},{"range":"550","text":"508"},{"range":"551","text":"508"},{"range":"552","text":"508"},{"range":"553","text":"508"},{"range":"554","text":"508"},{"range":"555","text":"508"},{"range":"556","text":"508"},{"range":"557","text":"508"},{"range":"558","text":"508"},{"range":"559","text":"508"},{"range":"560","text":"508"},{"range":"561","text":"508"},{"range":"562","text":"508"},{"range":"563","text":"508"},{"range":"564","text":"508"},{"range":"565","text":"508"},{"range":"566","text":"508"},{"range":"567","text":"508"},{"range":"568","text":"508"},{"range":"569","text":"508"},{"range":"570","text":"508"},{"range":"571","text":"508"},{"range":"572","text":"508"},{"range":"573","text":"508"},{"range":"574","text":"508"},{"range":"575","text":"508"},{"range":"576","text":"508"},{"range":"577","text":"508"},{"range":"578","text":"508"},{"range":"579","text":"508"},{"range":"580","text":"508"},{"range":"581","text":"508"},{"range":"582","text":"508"},{"range":"583","text":"508"},{"range":"584","text":"508"},{"range":"585","text":"508"},{"range":"586","text":"508"},{"range":"587","text":"508"},{"range":"588","text":"508"},{"range":"589","text":"508"},{"range":"590","text":"508"},{"range":"591","text":"508"},{"range":"592","text":"508"},{"range":"593","text":"508"},{"range":"594","text":"508"},{"range":"595","text":"508"},{"range":"596","text":"508"},{"range":"597","text":"508"},{"range":"598","text":"508"},{"range":"599","text":"508"},{"range":"600","text":"508"},{"range":"601","text":"508"},{"range":"602","text":"508"},{"range":"603","text":"508"},{"range":"604","text":"508"},{"range":"605","text":"508"},{"range":"606","text":"508"},{"range":"607","text":"508"},{"range":"608","text":"508"},{"range":"609","text":"508"},{"range":"610","text":"508"},{"range":"611","text":"508"},{"range":"612","text":"508"},{"range":"613","text":"508"},{"range":"614","text":"508"},{"range":"615","text":"508"},{"range":"616","text":"508"},{"range":"617","text":"508"},{"range":"618","text":"508"},{"range":"619","text":"508"},{"range":"620","text":"508"},{"range":"621","text":"508"},{"range":"622","text":"508"},{"range":"623","text":"508"},{"range":"624","text":"508"},{"range":"625","text":"508"},{"range":"626","text":"508"},{"range":"627","text":"508"},{"range":"628","text":"508"},{"range":"629","text":"508"},{"range":"630","text":"508"},{"range":"631","text":"508"},{"range":"632","text":"508"},{"range":"633","text":"508"},{"range":"634","text":"508"},{"range":"635","text":"508"},{"range":"636","text":"508"},{"range":"637","text":"508"},{"range":"638","text":"508"},{"range":"639","text":"508"},{"range":"640","text":"508"},{"range":"641","text":"508"},{"range":"642","text":"508"},{"range":"643","text":"508"},{"range":"644","text":"508"},{"range":"645","text":"508"},{"range":"646","text":"508"},{"range":"647","text":"508"},{"range":"648","text":"508"},{"range":"649","text":"508"},{"range":"650","text":"508"},{"range":"651","text":"508"},{"range":"652","text":"508"},{"range":"653","text":"508"},{"range":"654","text":"508"},{"range":"655","text":"508"},{"range":"656","text":"508"},{"range":"657","text":"508"},{"range":"658","text":"508"},{"range":"659","text":"508"},{"range":"660","text":"508"},{"range":"661","text":"508"},{"range":"662","text":"508"},{"range":"663","text":"508"},{"range":"664","text":"508"},{"range":"665","text":"508"},{"range":"666","text":"508"},{"range":"667","text":"508"},{"range":"668","text":"508"},{"range":"669","text":"508"},{"range":"670","text":"508"},{"range":"671","text":"508"},{"range":"672","text":"508"},{"range":"673","text":"508"},{"range":"674","text":"508"},{"range":"675","text":"508"},{"range":"676","text":"508"},{"range":"677","text":"508"},{"range":"678","text":"508"},{"range":"679","text":"508"},{"range":"680","text":"508"},{"range":"681","text":"508"},{"range":"682","text":"508"},{"range":"683","text":"508"},{"range":"684","text":"508"},{"range":"685","text":"508"},{"range":"686","text":"508"},{"range":"687","text":"508"},{"range":"688","text":"508"},{"range":"689","text":"508"},{"range":"690","text":"508"},{"range":"691","text":"508"},[140,141],"",[176,177],[209,210],[248,249],[288,289],[337,338],[385,386],[448,449],[476,477],[530,531],[589,590],[650,651],[700,701],[876,877],[1026,1027],[1030,1031],[1066,1067],[1133,1134],[1371,1372],[1561,1562],[1797,1798],"no-global-assign","no-unsafe-negation",[29,30],[79,80],[144,145],[185,186],[225,226],[287,288],[393,394],[527,528],[1122,1123],[68,69],[385,386],[864,865],[937,938],[1055,1056],[1114,1115],[1126,1127],[1129,1130],[902,903],[984,985],[1048,1049],[1051,1052],[1325,1326],[1636,1637],[1754,1755],[1922,1923],[2275,2276],[2287,2288],[2400,2401],[2416,2417],[2658,2659],[2716,2717],[3296,3297],[3425,3426],[3705,3706],[3836,3837],[3889,3890],[3898,3899],[4000,4001],[4008,4009],[4390,4391],[4747,4748],[4761,4762],[4773,4774],[4880,4881],[5015,5016],[5023,5024],[5194,5195],[5265,5266],[5275,5276],[71,72],[130,131],[177,178],[222,223],[299,300],[371,372],[414,415],[498,499],[600,601],[886,887],[903,904],[30,31],[106,107],[149,150],[212,213],[264,265],[401,402],[444,445],[575,576],[578,579],[130,131],[200,201],[549,550],[624,625],[199,200],[244,245],[309,310],[365,366],[425,426],[492,493],[544,545],[592,593],[654,655],[1188,1189],[77,78],[129,130],[164,165],[225,226],[260,261],[353,354],[535,536],[551,552],[758,759],[799,800],[807,808],[939,940],[991,992],[1034,1035],[1080,1081],[53,54],[104,105],[718,719],[38,39],[196,197],[317,318],[524,525],[274,275],[314,315],[383,384],[94,95],[137,138],[205,206],[352,353],[30,31],[76,77],[101,102],[145,146],[190,191],[246,247],[727,728],[933,934],[1097,1098],[44,45],[185,186],[45,46],[92,93],[156,157],[420,421],[539,540],[587,588],[745,746],[748,749],[95,96],[202,203],[384,385],[471,472],[30,31],[91,92],[316,317],[336,337],[410,411],[649,650],[690,691],[914,915],[1061,1062],[70,71],[139,140],[169,170],[481,482],[511,512],[866,867],[915,916],[944,945],[959,960],[1353,1354],[1400,1401],[1430,1431],[44,45],[99,100],[305,306],[44,45],[169,170]] \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 473084a..9d251ea 100644 --- a/.prettierrc +++ b/.prettierrc @@ -6,4 +6,4 @@ "singleQuote": true, "trailingComma": "all", "useTabs": false -} \ No newline at end of file +} diff --git a/src/app/containers/HomePage/Loadable.tsx b/src/app/containers/HomePage/Loadable.tsx index ff81604..456cff0 100644 --- a/src/app/containers/HomePage/Loadable.tsx +++ b/src/app/containers/HomePage/Loadable.tsx @@ -2,27 +2,26 @@ * Asynchronously loads the component for HomePage */ -import * as React from 'react'; -import { lazyLoad } from 'utils/loadable'; -import { LoadingIndicator } from 'app/components/LoadingIndicator'; -import styled from 'styled-components/macro'; - -const LoadingWrapper = styled.div` - width: 100%; - height: 100vh; - display: flex; - align-items: center; - justify-content: center; -`; +import * as React from 'react' +import { lazyLoad } from 'utils/loadable' +import { LoadingIndicator } from 'app/components/LoadingIndicator' export const HomePage = lazyLoad( () => import('./index'), module => module.HomePage, { fallback: ( - +
- +
), }, -); +) diff --git a/src/app/containers/HomePage/Logos.tsx b/src/app/containers/HomePage/Logos.tsx deleted file mode 100644 index bafe936..0000000 --- a/src/app/containers/HomePage/Logos.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import * as React from 'react'; -import styled from 'styled-components/macro'; -import { ReactComponent as CRALogo } from './assets/cra-logo.svg'; -import { ReactComponent as RPLogo } from './assets/rp-logo.svg'; -import { ReactComponent as PlusSign } from './assets/plus-sign.svg'; - -export function Logos() { - return ( - - - - - - ); -} - -const Wrapper = styled.div` - display: flex; - align-items: center; - color: ${p => p.theme.border}; - - .logo { - width: 4.5rem; - height: 4.5rem; - } - - .sign { - width: 2rem; - height: 2rem; - margin: 0 2rem; - } -`; diff --git a/src/app/containers/HomePage/Masthead.tsx b/src/app/containers/HomePage/Masthead.tsx deleted file mode 100644 index 10ddc42..0000000 --- a/src/app/containers/HomePage/Masthead.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import * as React from 'react'; -import styled from 'styled-components/macro'; -import { Logos } from './Logos'; -import { Title } from 'app/containers/HomePage/components/Title'; -import { Lead } from 'app/containers/HomePage/components/Lead'; -import { A } from 'app/components/A'; - -export function Masthead() { - return ( - - - React Boilerplate meets CRA - - Now you can use the{' '} - - React Boilerplate - {' '} - as a{' '} - - Create React App - {' '} - template. - - - ); -} - -const Wrapper = styled.main` - height: 60vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - min-height: 320px; -`; diff --git a/src/app/containers/HomePage/__tests__/Features.test.tsx b/src/app/containers/HomePage/__tests__/Features.test.tsx deleted file mode 100644 index 0fcb416..0000000 --- a/src/app/containers/HomePage/__tests__/Features.test.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from 'react'; -import { createRenderer } from 'react-test-renderer/shallow'; -import { Features } from '../Features'; -import i18next from 'i18next'; - -const shallowRenderer = createRenderer(); - -describe('', () => { - it('should render with en translations', () => { - i18next.changeLanguage('en'); - shallowRenderer.render(); - const renderedOutput = shallowRenderer.getRenderOutput(); - expect(renderedOutput).toMatchSnapshot(); - }); - - it('should render with de translations', () => { - i18next.changeLanguage('de'); - shallowRenderer.render(); - const renderedOutput = shallowRenderer.getRenderOutput(); - expect(renderedOutput).toMatchSnapshot(); - }); - - it('should render different after language change', () => { - i18next.changeLanguage('en'); - shallowRenderer.render(); - const renderedOutput1 = shallowRenderer.getRenderOutput(); - - i18next.changeLanguage('de'); - shallowRenderer.render(); - const renderedOutput2 = shallowRenderer.getRenderOutput(); - - expect(renderedOutput1).not.toEqual(renderedOutput2); - }); -}); diff --git a/src/app/containers/HomePage/__tests__/Logos.test.tsx b/src/app/containers/HomePage/__tests__/Logos.test.tsx deleted file mode 100644 index 68a198f..0000000 --- a/src/app/containers/HomePage/__tests__/Logos.test.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import * as React from 'react'; -import { Logos } from '../Logos'; -import { render } from '@testing-library/react'; -import { ThemeProvider, DefaultTheme } from 'styled-components'; - -import { themes } from 'styles/theme/themes'; - -const renderLogos = (theme: DefaultTheme) => - render( - - - , - ); -describe('', () => { - it('should render and match the snapshot', () => { - const logos = renderLogos(themes.light); - expect(logos.asFragment()).toMatchSnapshot(); - }); - - it('should use theme from props', () => { - let logos = renderLogos(themes.light); - expect(logos.container.firstChild).toHaveStyle( - `color: ${themes.light.border}`, - ); - logos = renderLogos(themes.dark); - expect(logos.container.firstChild).toHaveStyle( - `color: ${themes.dark.border}`, - ); - }); -}); diff --git a/src/app/containers/HomePage/__tests__/Masthead.test.tsx b/src/app/containers/HomePage/__tests__/Masthead.test.tsx deleted file mode 100644 index 2295a6d..0000000 --- a/src/app/containers/HomePage/__tests__/Masthead.test.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react'; -import { Masthead } from '../Masthead'; -import { createRenderer } from 'react-test-renderer/shallow'; - -const shallowRenderer = createRenderer(); - -describe('', () => { - it('should render and match the snapshot', () => { - shallowRenderer.render(); - const renderedOutput = shallowRenderer.getRenderOutput(); - expect(renderedOutput).toMatchSnapshot(); - }); -}); diff --git a/src/app/containers/HomePage/__tests__/__snapshots__/Logos.test.tsx.snap b/src/app/containers/HomePage/__tests__/__snapshots__/Logos.test.tsx.snap deleted file mode 100644 index a70c4ff..0000000 --- a/src/app/containers/HomePage/__tests__/__snapshots__/Logos.test.tsx.snap +++ /dev/null @@ -1,48 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` should render and match the snapshot 1`] = ` - - .c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - color: rgba(58,52,51,0.12); -} - -.c0 .logo { - width: 4.5rem; - height: 4.5rem; -} - -.c0 .sign { - width: 2rem; - height: 2rem; - margin: 0 2rem; -} - -
- - - plus-sign.svg - - -
-
-`; diff --git a/src/app/containers/HomePage/__tests__/__snapshots__/Masthead.test.tsx.snap b/src/app/containers/HomePage/__tests__/__snapshots__/Masthead.test.tsx.snap deleted file mode 100644 index 60573cf..0000000 --- a/src/app/containers/HomePage/__tests__/__snapshots__/Masthead.test.tsx.snap +++ /dev/null @@ -1,33 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` should render and match the snapshot 1`] = ` - - - - React Boilerplate meets CRA - - - Now you can use the - - - React Boilerplate - - - as a - - - Create React App - - - template. - - -`; diff --git a/src/app/containers/HomePage/__tests__/__snapshots__/index.test.tsx.snap b/src/app/containers/HomePage/__tests__/__snapshots__/index.test.tsx.snap deleted file mode 100644 index acce254..0000000 --- a/src/app/containers/HomePage/__tests__/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,23 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` should render and match the snapshot 1`] = ` - - - - Home Page - - - - - - - - - -`; diff --git a/src/app/containers/HomePage/__tests__/index.test.tsx b/src/app/containers/HomePage/__tests__/index.test.tsx deleted file mode 100644 index db55958..0000000 --- a/src/app/containers/HomePage/__tests__/index.test.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react'; -import { createRenderer } from 'react-test-renderer/shallow'; - -import { HomePage } from '..'; - -const shallowRenderer = createRenderer(); - -describe('', () => { - it('should render and match the snapshot', () => { - shallowRenderer.render(); - const renderedOutput = shallowRenderer.getRenderOutput(); - expect(renderedOutput).toMatchSnapshot(); - }); -}); diff --git a/src/app/containers/HomePage/assets/code-analysis.svg b/src/app/containers/HomePage/assets/code-analysis.svg deleted file mode 100644 index b16a4e7..0000000 --- a/src/app/containers/HomePage/assets/code-analysis.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/app/containers/HomePage/assets/cra-logo.svg b/src/app/containers/HomePage/assets/cra-logo.svg deleted file mode 100644 index c0bb732..0000000 --- a/src/app/containers/HomePage/assets/cra-logo.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/app/containers/HomePage/assets/css.svg b/src/app/containers/HomePage/assets/css.svg deleted file mode 100644 index 57dfe5b..0000000 --- a/src/app/containers/HomePage/assets/css.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/app/containers/HomePage/assets/instant-feedback.svg b/src/app/containers/HomePage/assets/instant-feedback.svg deleted file mode 100644 index 7e38f0e..0000000 --- a/src/app/containers/HomePage/assets/instant-feedback.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/app/containers/HomePage/assets/intl.svg b/src/app/containers/HomePage/assets/intl.svg deleted file mode 100644 index 86c771f..0000000 --- a/src/app/containers/HomePage/assets/intl.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/app/containers/HomePage/assets/offline-first.svg b/src/app/containers/HomePage/assets/offline-first.svg deleted file mode 100644 index 04e7d6e..0000000 --- a/src/app/containers/HomePage/assets/offline-first.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/app/containers/HomePage/assets/plus-sign.svg b/src/app/containers/HomePage/assets/plus-sign.svg deleted file mode 100644 index 0cd16e1..0000000 --- a/src/app/containers/HomePage/assets/plus-sign.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/app/containers/HomePage/assets/route.svg b/src/app/containers/HomePage/assets/route.svg deleted file mode 100644 index 72d76f5..0000000 --- a/src/app/containers/HomePage/assets/route.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/app/containers/HomePage/assets/rp-logo.svg b/src/app/containers/HomePage/assets/rp-logo.svg deleted file mode 100644 index 1aae1ed..0000000 --- a/src/app/containers/HomePage/assets/rp-logo.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/app/containers/HomePage/assets/scaffolding.svg b/src/app/containers/HomePage/assets/scaffolding.svg deleted file mode 100644 index e8f907c..0000000 --- a/src/app/containers/HomePage/assets/scaffolding.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/app/containers/HomePage/assets/seo.svg b/src/app/containers/HomePage/assets/seo.svg deleted file mode 100644 index f94e1e8..0000000 --- a/src/app/containers/HomePage/assets/seo.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/app/containers/HomePage/assets/state.svg b/src/app/containers/HomePage/assets/state.svg deleted file mode 100644 index 3d8712e..0000000 --- a/src/app/containers/HomePage/assets/state.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/app/containers/HomePage/assets/ts.svg b/src/app/containers/HomePage/assets/ts.svg deleted file mode 100644 index 2fa5730..0000000 --- a/src/app/containers/HomePage/assets/ts.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/app/containers/HomePage/components/Lead.ts b/src/app/containers/HomePage/components/Lead.ts deleted file mode 100644 index f8d44e2..0000000 --- a/src/app/containers/HomePage/components/Lead.ts +++ /dev/null @@ -1,13 +0,0 @@ -import styled from 'styled-components/macro'; - -export const Lead = styled.p` - font-size: 1.5rem; - font-weight: 300; - line-height: 1.5; - color: ${p => p.theme.textSecondary}; - margin: 0 0 1.5rem 0; - - strong { - color: ${p => p.theme.text}; - } -`; diff --git a/src/app/containers/HomePage/components/P.ts b/src/app/containers/HomePage/components/P.ts deleted file mode 100644 index f1eceb5..0000000 --- a/src/app/containers/HomePage/components/P.ts +++ /dev/null @@ -1,8 +0,0 @@ -import styled from 'styled-components/macro'; - -export const P = styled.p` - font-size: 1rem; - line-height: 1.5; - color: ${p => p.theme.textSecondary}; - margin: 0.625rem 0 1.5rem 0; -`; diff --git a/src/app/containers/HomePage/components/SubTitle.ts b/src/app/containers/HomePage/components/SubTitle.ts deleted file mode 100644 index b3be5e4..0000000 --- a/src/app/containers/HomePage/components/SubTitle.ts +++ /dev/null @@ -1,7 +0,0 @@ -import styled from 'styled-components/macro'; - -export const SubTitle = styled.h3` - font-size: 1.25rem; - margin: 0; - color: ${p => p.theme.text}; -`; diff --git a/src/app/containers/HomePage/components/Title.ts b/src/app/containers/HomePage/components/Title.ts deleted file mode 100644 index 7dadd28..0000000 --- a/src/app/containers/HomePage/components/Title.ts +++ /dev/null @@ -1,8 +0,0 @@ -import styled from 'styled-components/macro'; - -export const Title = styled.h1` - font-size: 32px; - font-weight: bold; - color: ${p => p.theme.text}; - margin: 1rem 0; -`; diff --git a/src/app/containers/HomePage/components/__tests__/Lead.test.tsx b/src/app/containers/HomePage/components/__tests__/Lead.test.tsx deleted file mode 100644 index a64873d..0000000 --- a/src/app/containers/HomePage/components/__tests__/Lead.test.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from 'react'; -import { render } from '@testing-library/react'; -import { DefaultTheme } from 'styled-components'; -import { themes } from 'styles/theme/themes'; -import { Lead } from '../Lead'; - -const renderWithTheme = (theme: DefaultTheme) => render(); - -describe('', () => { - it('should render and match the snapshot', () => { - const lead = renderWithTheme(themes.light); - expect(lead.container.firstChild).toMatchSnapshot(); - }); - - it('should use theme from props', () => { - let lead = renderWithTheme(themes.light); - expect(lead.container.firstChild).toHaveStyle( - `color: ${themes.light.textSecondary}`, - ); - lead = renderWithTheme(themes.dark); - expect(lead.container.firstChild).toHaveStyle( - `color: ${themes.dark.textSecondary}`, - ); - }); -}); diff --git a/src/app/containers/HomePage/components/__tests__/P.test.tsx b/src/app/containers/HomePage/components/__tests__/P.test.tsx deleted file mode 100644 index 142c2a8..0000000 --- a/src/app/containers/HomePage/components/__tests__/P.test.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from 'react'; -import { render } from '@testing-library/react'; -import { DefaultTheme } from 'styled-components'; -import { themes } from 'styles/theme/themes'; -import { P } from '../P'; - -const renderWithTheme = (theme: DefaultTheme) => render(

); - -describe('

', () => { - it('should render and match the snapshot', () => { - const p = renderWithTheme(themes.light); - expect(p.container.firstChild).toMatchSnapshot(); - }); - - it('should use theme from props', () => { - let p = renderWithTheme(themes.light); - expect(p.container.firstChild).toHaveStyle( - `color: ${themes.light.textSecondary}`, - ); - p = renderWithTheme(themes.dark); - expect(p.container.firstChild).toHaveStyle( - `color: ${themes.dark.textSecondary}`, - ); - }); -}); diff --git a/src/app/containers/HomePage/components/__tests__/Subtitle.test.tsx b/src/app/containers/HomePage/components/__tests__/Subtitle.test.tsx deleted file mode 100644 index 8748c68..0000000 --- a/src/app/containers/HomePage/components/__tests__/Subtitle.test.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from 'react'; -import { render } from '@testing-library/react'; -import { DefaultTheme } from 'styled-components'; -import { themes } from 'styles/theme/themes'; -import { SubTitle } from '../SubTitle'; - -const renderWithTheme = (theme: DefaultTheme) => - render(); - -describe('', () => { - it('should render and match the snapshot', () => { - const comp = renderWithTheme(themes.light); - expect(comp.container.firstChild).toMatchSnapshot(); - }); - - it('should use theme from props', () => { - let comp = renderWithTheme(themes.light); - expect(comp.container.firstChild).toHaveStyle( - `color: ${themes.light.text}`, - ); - comp = renderWithTheme(themes.dark); - expect(comp.container.firstChild).toHaveStyle(`color: ${themes.dark.text}`); - }); -}); diff --git a/src/app/containers/HomePage/components/__tests__/Title.test.tsx b/src/app/containers/HomePage/components/__tests__/Title.test.tsx deleted file mode 100644 index 86a95c9..0000000 --- a/src/app/containers/HomePage/components/__tests__/Title.test.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from 'react'; -import { render } from '@testing-library/react'; -import { DefaultTheme } from 'styled-components'; -import { themes } from 'styles/theme/themes'; -import { Title } from '../Title'; - -const renderWithTheme = (theme: DefaultTheme) => - render(); - -describe('<Title />', () => { - it('should render and match the snapshot', () => { - const comp = renderWithTheme(themes.light); - expect(comp.container.firstChild).toMatchSnapshot(); - }); - - it('should use theme from props', () => { - let comp = renderWithTheme(themes.light); - expect(comp.container.firstChild).toHaveStyle( - `color: ${themes.light.text}`, - ); - comp = renderWithTheme(themes.dark); - expect(comp.container.firstChild).toHaveStyle(`color: ${themes.dark.text}`); - }); -}); diff --git a/src/app/containers/HomePage/components/__tests__/__snapshots__/Lead.test.tsx.snap b/src/app/containers/HomePage/components/__tests__/__snapshots__/Lead.test.tsx.snap deleted file mode 100644 index 8d6103f..0000000 --- a/src/app/containers/HomePage/components/__tests__/__snapshots__/Lead.test.tsx.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`<Lead /> should render and match the snapshot 1`] = ` -.c0 { - font-size: 1.5rem; - font-weight: 300; - line-height: 1.5; - color: rgba(58,52,51,0.7); - margin: 0 0 1.5rem 0; -} - -.c0 strong { - color: rgba(58,52,51,1); -} - -<p - class="c0" -/> -`; diff --git a/src/app/containers/HomePage/components/__tests__/__snapshots__/P.test.tsx.snap b/src/app/containers/HomePage/components/__tests__/__snapshots__/P.test.tsx.snap deleted file mode 100644 index f533d1a..0000000 --- a/src/app/containers/HomePage/components/__tests__/__snapshots__/P.test.tsx.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`<P /> should render and match the snapshot 1`] = ` -.c0 { - font-size: 1rem; - line-height: 1.5; - color: rgba(58,52,51,0.7); - margin: 0.625rem 0 1.5rem 0; -} - -<p - class="c0" -/> -`; diff --git a/src/app/containers/HomePage/components/__tests__/__snapshots__/Subtitle.test.tsx.snap b/src/app/containers/HomePage/components/__tests__/__snapshots__/Subtitle.test.tsx.snap deleted file mode 100644 index 6081c03..0000000 --- a/src/app/containers/HomePage/components/__tests__/__snapshots__/Subtitle.test.tsx.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`<Subtitle /> should render and match the snapshot 1`] = ` -.c0 { - font-size: 1.25rem; - margin: 0; - color: rgba(58,52,51,1); -} - -<h3 - class="c0" -/> -`; diff --git a/src/app/containers/HomePage/components/__tests__/__snapshots__/Title.test.tsx.snap b/src/app/containers/HomePage/components/__tests__/__snapshots__/Title.test.tsx.snap deleted file mode 100644 index 363787a..0000000 --- a/src/app/containers/HomePage/components/__tests__/__snapshots__/Title.test.tsx.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`<Title /> should render and match the snapshot 1`] = ` -.c0 { - font-size: 32px; - font-weight: bold; - color: rgba(58,52,51,1); - margin: 1rem 0; -} - -<h1 - class="c0" -/> -`; diff --git a/src/app/containers/HomePage/index.tsx b/src/app/containers/HomePage/index.tsx index 7ecda73..3880c64 100644 --- a/src/app/containers/HomePage/index.tsx +++ b/src/app/containers/HomePage/index.tsx @@ -1,22 +1,28 @@ -import * as React from 'react'; -import { Helmet } from 'react-helmet-async'; -import { PageWrapper } from 'app/components/PageWrapper'; -import { Link } from 'app/components/Link'; +import * as React from 'react' +import { Helmet } from 'react-helmet-async' +import { Link } from 'react-router-dom' -export function HomePage() { +export const HomePage = () => { return ( <> <Helmet> <title>Home Page - -

CareRev Sample App

+
+

CareRev Currency App

Show Countries - +
- ); + ) } diff --git a/src/app/containers/HomePage/messages.ts b/src/app/containers/HomePage/messages.ts deleted file mode 100644 index 7eb15e4..0000000 --- a/src/app/containers/HomePage/messages.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * This file is only need if you want to extract messages into JSON files in locales folder - * AND if you are also using the object syntax instead of string syntax. \ - * Check the documentation section i18n for details - */ - -import { translations } from 'locales/translations'; -import { _t } from 'utils/messages'; - -export const messages = { - routingTitle: _t( - translations.routingFeature.title, - 'Industry-standard Routing', // you can set the default value when extracting - ), - routingDescription: _t(translations.routingFeature.description), - feedbackTitle: _t(translations.feedbackFeature.title), - feedbackDescription: _t(translations.feedbackFeature.description), - scaffoldingTitle: _t(translations.scaffoldingFeature.title), - scaffoldingDescription: _t(translations.scaffoldingFeature.description), - i18nTitle: _t(translations.i18nFeature.title), - i18nDescription: _t(translations.i18nFeature.description), -}; From 986da6585184bbae1cb51c141ef78286ad88786b Mon Sep 17 00:00:00 2001 From: ksample89 Date: Fri, 25 Mar 2022 13:08:29 -0400 Subject: [PATCH 4/7] update App, not found page, loading indicator, delete themeswitch, languageswitch, a, link, navbar, formlabel --- .eslintcache | 2 +- .../__snapshots__/index.test.tsx.snap | 33 --- src/app/__tests__/index.test.tsx | 14 - src/app/components/A/__tests__/index.test.tsx | 23 -- src/app/components/A/index.ts | 15 -- .../FormLabel/__tests__/index.test.tsx | 23 -- src/app/components/FormLabel/index.ts | 10 - src/app/components/Link/index.ts | 16 -- .../__snapshots__/index.test.tsx.snap | 67 ----- .../LoadingIndicator/__tests__/index.test.tsx | 35 --- src/app/components/LoadingIndicator/index.tsx | 18 +- .../LanguageSwitch/__tests__/index.test.tsx | 51 ---- src/app/containers/LanguageSwitch/index.tsx | 55 ---- src/app/containers/LanguageSwitch/messages.ts | 9 - src/app/containers/NavBar/Logo.tsx | 29 -- src/app/containers/NavBar/Nav.tsx | 57 ---- .../containers/NavBar/__tests__/Logo.test.tsx | 10 - .../containers/NavBar/__tests__/Nav.test.tsx | 15 -- .../__snapshots__/Logo.test.tsx.snap | 40 --- .../__tests__/__snapshots__/Nav.test.tsx.snap | 69 ----- .../__snapshots__/index.test.tsx.snap | 10 - .../NavBar/__tests__/index.test.tsx | 13 - .../NavBar/assets/documentation-icon.svg | 3 - .../containers/NavBar/assets/github-icon.svg | 3 - src/app/containers/NavBar/index.tsx | 43 --- src/app/containers/NotFoundPage/P.ts | 8 - .../__snapshots__/index.test.tsx.snap | 248 ------------------ .../NotFoundPage/__tests__/index.test.tsx | 31 --- src/app/containers/NotFoundPage/index.tsx | 74 +++--- .../ThemeSwitch/__tests__/index.test.tsx | 43 --- src/app/containers/ThemeSwitch/index.tsx | 69 ----- src/app/index.tsx | 22 +- 32 files changed, 61 insertions(+), 1097 deletions(-) delete mode 100644 src/app/__tests__/__snapshots__/index.test.tsx.snap delete mode 100644 src/app/__tests__/index.test.tsx delete mode 100644 src/app/components/A/__tests__/index.test.tsx delete mode 100644 src/app/components/A/index.ts delete mode 100644 src/app/components/FormLabel/__tests__/index.test.tsx delete mode 100644 src/app/components/FormLabel/index.ts delete mode 100644 src/app/components/Link/index.ts delete mode 100644 src/app/components/LoadingIndicator/__tests__/__snapshots__/index.test.tsx.snap delete mode 100644 src/app/components/LoadingIndicator/__tests__/index.test.tsx delete mode 100644 src/app/containers/LanguageSwitch/__tests__/index.test.tsx delete mode 100644 src/app/containers/LanguageSwitch/index.tsx delete mode 100644 src/app/containers/LanguageSwitch/messages.ts delete mode 100644 src/app/containers/NavBar/Logo.tsx delete mode 100644 src/app/containers/NavBar/Nav.tsx delete mode 100644 src/app/containers/NavBar/__tests__/Logo.test.tsx delete mode 100644 src/app/containers/NavBar/__tests__/Nav.test.tsx delete mode 100644 src/app/containers/NavBar/__tests__/__snapshots__/Logo.test.tsx.snap delete mode 100644 src/app/containers/NavBar/__tests__/__snapshots__/Nav.test.tsx.snap delete mode 100644 src/app/containers/NavBar/__tests__/__snapshots__/index.test.tsx.snap delete mode 100644 src/app/containers/NavBar/__tests__/index.test.tsx delete mode 100644 src/app/containers/NavBar/assets/documentation-icon.svg delete mode 100644 src/app/containers/NavBar/assets/github-icon.svg delete mode 100644 src/app/containers/NavBar/index.tsx delete mode 100644 src/app/containers/NotFoundPage/P.ts delete mode 100644 src/app/containers/NotFoundPage/__tests__/__snapshots__/index.test.tsx.snap delete mode 100644 src/app/containers/NotFoundPage/__tests__/index.test.tsx delete mode 100644 src/app/containers/ThemeSwitch/__tests__/index.test.tsx delete mode 100644 src/app/containers/ThemeSwitch/index.tsx diff --git a/.eslintcache b/.eslintcache index 9296b7a..2689d16 100644 --- a/.eslintcache +++ b/.eslintcache @@ -1 +1 @@ -[{"/Users/kellysample/Development/web-example/src/index.tsx":"1","/Users/kellysample/Development/web-example/src/locales/i18n.ts":"2","/Users/kellysample/Development/web-example/src/locales/translations.ts":"3","/Users/kellysample/Development/web-example/src/serviceWorker.ts":"4","/Users/kellysample/Development/web-example/src/store/configureStore.ts":"5","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx":"6","/Users/kellysample/Development/web-example/src/store/reducers.ts":"7","/Users/kellysample/Development/web-example/src/app/index.tsx":"8","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts":"9","/Users/kellysample/Development/web-example/src/styles/global-styles.ts":"10","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts":"11","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts":"12","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx":"13","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx":"14","/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts":"15","/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx":"16","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx":"17","/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx":"18","/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts":"19","/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts":"20","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/P.ts":"21","/Users/kellysample/Development/web-example/src/utils/loadable.tsx":"22","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts":"23","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx":"24","/Users/kellysample/Development/web-example/src/utils/request.ts":"25","/Users/kellysample/Development/web-example/src/app/components/Link/index.ts":"26","/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts":"27","/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts":"28"},{"size":1799,"mtime":1648222804296,"results":"29","hashOfConfig":"30"},{"size":1124,"mtime":1648222804297,"results":"31","hashOfConfig":"30"},{"size":1131,"mtime":1648222804297,"results":"32","hashOfConfig":"30"},{"size":5283,"mtime":1648225159469,"results":"33","hashOfConfig":"30"},{"size":907,"mtime":1648222804299,"results":"34","hashOfConfig":"30"},{"size":580,"mtime":1648222804301,"results":"35","hashOfConfig":"30"},{"size":632,"mtime":1648222804299,"results":"36","hashOfConfig":"30"},{"size":1192,"mtime":1648222804295,"results":"37","hashOfConfig":"30"},{"size":1082,"mtime":1648222804302,"results":"38","hashOfConfig":"30"},{"size":720,"mtime":1648222804300,"results":"39","hashOfConfig":"30"},{"size":528,"mtime":1648222804302,"results":"40","hashOfConfig":"30"},{"size":385,"mtime":1648222804302,"results":"41","hashOfConfig":"30"},{"size":354,"mtime":1648222804294,"results":"42","hashOfConfig":"30"},{"size":561,"mtime":1648226967177,"results":"43","hashOfConfig":"30"},{"size":58,"mtime":1648222804300,"results":"44","hashOfConfig":"30"},{"size":1332,"mtime":1648226629048,"results":"45","hashOfConfig":"30"},{"size":1101,"mtime":1648225858885,"results":"46","hashOfConfig":"30"},{"size":632,"mtime":1648226986630,"results":"47","hashOfConfig":"30"},{"size":708,"mtime":1648226603007,"results":"48","hashOfConfig":"30"},{"size":532,"mtime":1648226629048,"results":"49","hashOfConfig":"30"},{"size":187,"mtime":1648222804294,"results":"50","hashOfConfig":"30"},{"size":750,"mtime":1648222804305,"results":"51","hashOfConfig":"30"},{"size":475,"mtime":1648222804306,"results":"52","hashOfConfig":"30"},{"size":1063,"mtime":1648225858881,"results":"53","hashOfConfig":"30"},{"size":1434,"mtime":1648222804306,"results":"54","hashOfConfig":"30"},{"size":307,"mtime":1648225858880,"results":"55","hashOfConfig":"30"},{"size":171,"mtime":1648225858881,"results":"56","hashOfConfig":"30"},{"size":685,"mtime":1648226300241,"results":"57","hashOfConfig":"30"},{"filePath":"58","messages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":21,"fixableErrorCount":0,"fixableWarningCount":21,"source":"60","usedDeprecatedRules":"61"},"11mdaqp",{"filePath":"62","messages":"63","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"64","usedDeprecatedRules":"61"},{"filePath":"65","messages":"66","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"67","usedDeprecatedRules":"61"},{"filePath":"68","messages":"69","errorCount":0,"fatalErrorCount":0,"warningCount":32,"fixableErrorCount":0,"fixableWarningCount":32,"source":"70","usedDeprecatedRules":"61"},{"filePath":"71","messages":"72","errorCount":0,"fatalErrorCount":0,"warningCount":11,"fixableErrorCount":0,"fixableWarningCount":11,"source":"73","usedDeprecatedRules":"61"},{"filePath":"74","messages":"75","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"76","usedDeprecatedRules":"61"},{"filePath":"77","messages":"78","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"79","usedDeprecatedRules":"61"},{"filePath":"80","messages":"81","errorCount":0,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":10,"source":"82","usedDeprecatedRules":"61"},{"filePath":"83","messages":"84","errorCount":0,"fatalErrorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":15,"source":"85","usedDeprecatedRules":"61"},{"filePath":"86","messages":"87","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"88","usedDeprecatedRules":"61"},{"filePath":"89","messages":"90","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"91","usedDeprecatedRules":"61"},{"filePath":"92","messages":"93","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"94","usedDeprecatedRules":"61"},{"filePath":"95","messages":"96","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"97","usedDeprecatedRules":"61"},{"filePath":"98","messages":"99","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"100","messages":"101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"61"},{"filePath":"102","messages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"106"},{"filePath":"107","messages":"108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"109","messages":"110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"111","messages":"112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"113","messages":"114","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":"115","usedDeprecatedRules":"61"},{"filePath":"116","messages":"117","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"118","usedDeprecatedRules":"61"},{"filePath":"119","messages":"120","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"121","usedDeprecatedRules":"61"},{"filePath":"122","messages":"123","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"124"},{"filePath":"125","messages":"126","errorCount":0,"fatalErrorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":12,"source":"127","usedDeprecatedRules":"61"},{"filePath":"128","messages":"129","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"130"},{"filePath":"131","messages":"132","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":null},{"filePath":"133","messages":"134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/kellysample/Development/web-example/src/index.tsx",["135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155"],"/**\n * index.tsx\n *\n * This is the entry file for the application, only setup and boilerplate\n * code.\n */\n\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport FontFaceObserver from 'fontfaceobserver';\nimport * as serviceWorker from 'serviceWorker';\n\n// Use consistent styling\nimport 'sanitize.css/sanitize.css';\n\nimport { App } from 'app';\n\nimport { HelmetProvider } from 'react-helmet-async';\n\nimport { configureAppStore } from 'store/configureStore';\n\nimport { ThemeProvider } from 'styles/theme/ThemeProvider';\n\n// Initialize languages\nimport './locales/i18n';\n\n// Observe loading of Inter (to remove 'Inter', remove the tag in\n// the index.html file and this observer)\nconst openSansObserver = new FontFaceObserver('Inter', {});\n\n// When Inter is loaded, add a font-family using Inter to the body\nopenSansObserver.load().then(() => {\n document.body.classList.add('fontLoaded');\n});\n\nconst store = configureAppStore();\nconst MOUNT_NODE = document.getElementById('root') as HTMLElement;\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n MOUNT_NODE,\n);\n\n// Hot reloadable translation json files\nif (module.hot) {\n module.hot.accept(['./locales/i18n'], () => {\n // No need to render the App again because i18next works with the hooks\n });\n}\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n",["156","157"],"/Users/kellysample/Development/web-example/src/locales/i18n.ts",["158","159","160","161","162","163","164","165","166"],"import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nimport en from './en/translation.json';\nimport de from './de/translation.json';\nimport { convertLanguageJsonToObject } from './translations';\n\nexport const translationsJson = {\n en: {\n translation: en,\n },\n de: {\n translation: de,\n },\n};\n\n// Create the 'translations' object to provide full intellisense support for the static json files.\nconvertLanguageJsonToObject(en);\n\nexport const i18n = i18next\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n resources: translationsJson,\n fallbackLng: 'en',\n debug:\n process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test',\n\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n });\n","/Users/kellysample/Development/web-example/src/locales/translations.ts",["167","168","169","170","171","172","173","174"],"import { ConvertedToObjectType, TranslationJsonType } from './types';\n\n/**\n * This file is seperate from the './i18n.ts' simply to make the Hot Module Replacement work seamlessly.\n * Your components can import this file in 'messages.ts' files which would ruin the HMR if this isn't a separate module\n */\nexport const translations: ConvertedToObjectType = {} as any;\n\n/*\n * Converts the static JSON file into an object where keys are identical\n * but values are strings concatenated according to syntax.\n * This is helpful when using the JSON file keys and still having the intellisense support\n * along with type-safety\n */\nexport const convertLanguageJsonToObject = (\n json: any,\n objToConvertTo = translations,\n current?: string,\n) => {\n Object.keys(json).forEach(key => {\n const currentLookupKey = current ? `${current}.${key}` : key;\n if (typeof json[key] === 'object') {\n objToConvertTo[key] = {};\n convertLanguageJsonToObject(\n json[key],\n objToConvertTo[key],\n currentLookupKey,\n );\n } else {\n objToConvertTo[key] = currentLookupKey;\n }\n });\n};\n","/Users/kellysample/Development/web-example/src/serviceWorker.ts",["175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206"],"// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/store/configureStore.ts",["207","208","209","210","211","212","213","214","215","216","217"],"import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\nimport { createInjectorsEnhancer } from 'redux-injectors';\nimport createSagaMiddleware from 'redux-saga';\n\nimport { createReducer } from './reducers';\n\nexport function configureAppStore() {\n const reduxSagaMonitorOptions = {};\n const sagaMiddleware = createSagaMiddleware(reduxSagaMonitorOptions);\n const { run: runSaga } = sagaMiddleware;\n\n // Create the store with saga middleware\n const middlewares = [sagaMiddleware];\n\n const enhancers = [\n createInjectorsEnhancer({\n createReducer,\n runSaga,\n }),\n ];\n\n const store = configureStore({\n reducer: createReducer(),\n middleware: [...getDefaultMiddleware(), ...middlewares],\n devTools:\n /* istanbul ignore next line */\n process.env.NODE_ENV !== 'production' ||\n process.env.PUBLIC_URL.length > 0,\n enhancers,\n });\n\n return store;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx",["218","219","220","221","222","223","224","225","226"],"import * as React from 'react';\nimport { ThemeProvider as OriginalThemeProvider } from 'styled-components';\nimport { useSelector } from 'react-redux';\nimport { selectTheme, themeSliceKey, reducer } from './slice';\nimport { useInjectReducer } from 'redux-injectors';\n\nexport const ThemeProvider = (props: { children: React.ReactChild }) => {\n useInjectReducer({ key: themeSliceKey, reducer: reducer });\n\n const theme = useSelector(selectTheme);\n return (\n \n {React.Children.only(props.children)}\n \n );\n};\n","/Users/kellysample/Development/web-example/src/store/reducers.ts",["227","228","229","230"],"/**\n * Combine all reducers in this file and export the combined reducers.\n */\n\nimport { combineReducers } from '@reduxjs/toolkit';\n\nimport { InjectedReducersType } from 'utils/types/injector-typings';\n\n/**\n * Merges the main reducer with the router state and dynamically injected reducers\n */\nexport function createReducer(injectedReducers: InjectedReducersType = {}) {\n // Initially we don't have any injectedReducers, so returning identity function to avoid the error\n if (Object.keys(injectedReducers).length === 0) {\n return state => state;\n } else {\n return combineReducers({\n ...injectedReducers,\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/app/index.tsx",["231","232","233","234","235","236","237","238","239","240"],"/**\n *\n * App\n *\n * This component is the skeleton around the actual pages, and should only\n * contain code that should be seen on all pages. (e.g. navigation bar)\n */\n\nimport * as React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { Switch, Route, BrowserRouter } from 'react-router-dom';\n\nimport { GlobalStyle } from '../styles/global-styles';\n\nimport { HomePage } from './containers/HomePage/Loadable';\nimport { NotFoundPage } from './containers/NotFoundPage/Loadable';\nimport { Countries } from './containers/Countries';\nimport { useTranslation } from 'react-i18next';\n\nexport function App() {\n const { i18n } = useTranslation();\n return (\n \n \n\n \n \n \n \n \n \n \n );\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts",["241","242","243","244","245","246","247","248","249","250","251","252","253","254","255"],"import { PayloadAction, createSelector, createSlice } from '@reduxjs/toolkit';\nimport { ThemeState, ThemeKeyType } from './types';\nimport { themes } from './themes';\nimport { getThemeFromStorage, isSystemDark } from './utils';\nimport { RootState } from 'types';\n\nexport const initialState: ThemeState = {\n selected: getThemeFromStorage() || 'system',\n};\n\nconst themeSlice = createSlice({\n name: 'theme',\n initialState,\n reducers: {\n changeTheme(state, action: PayloadAction) {\n state.selected = action.payload;\n },\n },\n});\n\nexport const selectTheme = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => {\n if (theme.selected === 'system') {\n return isSystemDark ? themes.dark : themes.light;\n }\n return themes[theme.selected];\n },\n);\n\nexport const selectThemeKey = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => theme.selected,\n);\n\nexport const { changeTheme } = themeSlice.actions;\nexport const reducer = themeSlice.reducer;\nexport const themeSliceKey = themeSlice.name;\n","/Users/kellysample/Development/web-example/src/styles/global-styles.ts",["256","257","258"],"import { createGlobalStyle } from 'styled-components';\nimport { StyleConstants } from './StyleConstants';\n/* istanbul ignore next */\nexport const GlobalStyle = createGlobalStyle`\n html,\n body {\n height: 100%;\n width: 100%;\n line-height: 1.5;\n }\n\n body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding-top: ${StyleConstants.NAV_BAR_HEIGHT};\n background-color: ${p => p.theme.background};\n }\n\n body.fontLoaded {\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n \n p,\n label {\n line-height: 1.5em;\n }\n\n input, select, button {\n font-family: inherit;\n font-size: inherit;\n }\n\n .icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n`;\n","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts",["259","260","261","262"],"import { ThemeKeyType } from './types';\n\n/* istanbul ignore next line */\nexport const isSystemDark = window?.matchMedia\n ? window.matchMedia('(prefers-color-scheme: dark)')?.matches\n : undefined;\n\nexport function saveTheme(theme: ThemeKeyType) {\n window.localStorage && localStorage.setItem('selectedTheme', theme);\n}\n\n/* istanbul ignore next line */\nexport function getThemeFromStorage(): ThemeKeyType | null {\n return window.localStorage\n ? (localStorage.getItem('selectedTheme') as ThemeKeyType) || null\n : null;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts",["263","264","265"],"const lightTheme = {\n primary: 'rgba(215,113,88,1)',\n text: 'rgba(58,52,51,1)',\n textSecondary: 'rgba(58,52,51,0.7)',\n background: 'rgba(255,255,255,1)',\n backgroundVariant: 'rgba(251,249,249,1)',\n border: 'rgba(58,52,51,0.12)',\n borderLight: 'rgba(58,52,51,0.05)',\n};\n\nexport type Theme = typeof lightTheme;\n\nexport const themes = {\n light: lightTheme,\n dark: lightTheme,\n};\n","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx",["266","267","268","269"],"/**\n * Asynchronously loads the component for NotFoundPage\n */\n\nimport * as React from 'react';\nimport { lazyLoad } from 'utils/loadable';\nimport { LoadingIndicator } from 'app/components/LoadingIndicator';\n\nexport const NotFoundPage = lazyLoad(\n () => import('./index'),\n module => module.NotFoundPage,\n {\n fallback: ,\n },\n);\n","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx",[],"/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx",["270","271","272","273","274","275","276","277","278"],"import * as React from 'react';\nimport styled from 'styled-components/macro';\nimport { P } from './P';\nimport { Link } from 'app/components/Link';\nimport { Helmet } from 'react-helmet-async';\nimport { StyleConstants } from 'styles/StyleConstants';\n\nexport function NotFoundPage() {\n return (\n <>\n \n 404 Page Not Found\n \n \n \n \n 4\n <span role=\"img\" aria-label=\"Crying Face\">\n 😢\n </span>\n 4\n \n

Page not found.

\n Return to Home Page\n
\n \n );\n}\n\nconst Wrapper = styled.div`\n height: calc(100vh - ${StyleConstants.NAV_BAR_HEIGHT});\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n min-height: 320px;\n`;\n\nconst Title = styled.div`\n margin-top: -8vh;\n font-weight: bold;\n color: ${p => p.theme.text};\n font-size: 3.375rem;\n\n span {\n font-size: 3.125rem;\n }\n`;\n","/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/P.ts",["279","280"],"import styled from 'styled-components/macro';\n\nexport const P = styled.p`\n font-size: 1rem;\n line-height: 1.5;\n color: ${p => p.theme.textSecondary};\n margin: 0.625rem 0 1.5rem 0;\n`;\n","/Users/kellysample/Development/web-example/src/utils/loadable.tsx",["281","282","283","284","285","286","287","288"],"import React, { lazy, Suspense } from 'react';\n\ninterface Opts {\n fallback: React.ReactNode;\n}\ntype Unpromisify = T extends Promise ? P : never;\n\nexport const lazyLoad = <\n T extends Promise,\n U extends React.ComponentType\n>(\n importFunc: () => T,\n selectorFunc?: (s: Unpromisify) => U,\n opts: Opts = { fallback: null },\n) => {\n let lazyFactory: () => Promise<{ default: U }> = importFunc;\n\n if (selectorFunc) {\n lazyFactory = () =>\n importFunc().then(module => ({ default: selectorFunc(module) }));\n }\n\n const LazyComponent = lazy(lazyFactory);\n\n return (props: React.ComponentProps): JSX.Element => (\n \n \n \n );\n};\n","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts",["289","290","291","292"],"import {\n useInjectReducer as useReducer,\n useInjectSaga as useSaga,\n} from 'redux-injectors';\nimport {\n InjectReducerParams,\n InjectSagaParams,\n RootStateKeyType,\n} from './types/injector-typings';\n\n/* Wrap redux-injectors with stricter types */\n\nexport function useInjectReducer(\n params: InjectReducerParams,\n) {\n return useReducer(params);\n}\n\nexport function useInjectSaga(params: InjectSagaParams) {\n return useSaga(params);\n}\n","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx",["293","294","295","296","297","298","299","300","301"],"import * as React from 'react';\nimport styled, { keyframes } from 'styled-components/macro';\n\ninterface Props extends SvgProps {}\n\nexport const LoadingIndicator = (props: Props) => (\n \n \n \n);\n\nconst speed = 1.5;\n\nconst rotate = keyframes`\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nconst dash = keyframes`\n 0% {\n stroke-dasharray: 0, 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 100, 150;\n stroke-dashoffset: -24;\n }\n 100% {\n stroke-dasharray: 0, 150;\n stroke-dashoffset: -124;\n }\n`;\n\ninterface SvgProps {\n small?: boolean;\n}\n\nconst Svg = styled.svg`\n animation: ${rotate} ${speed * 1.75}s linear infinite;\n height: ${p => (p.small ? '1.25rem' : '3rem')};\n width: ${p => (p.small ? '1.25rem' : '3rem')};\n transform-origin: center;\n`;\n\nconst Circle = styled.circle`\n animation: ${dash} ${speed}s ease-in-out infinite;\n stroke: ${p => p.theme.primary};\n stroke-linecap: round;\n`;\n","/Users/kellysample/Development/web-example/src/utils/request.ts",["302","303","304","305","306","307","308","309","310","311","312","313"],"export class ResponseError extends Error {\n public response: Response;\n\n constructor(response: Response) {\n super(response.statusText);\n this.response = response;\n }\n}\n/**\n * Parses the JSON returned by a network request\n *\n * @param {object} response A response from a network request\n *\n * @return {object} The parsed JSON from the request\n */\nfunction parseJSON(response: Response) {\n if (response.status === 204 || response.status === 205) {\n return null;\n }\n return response.json();\n}\n\n/**\n * Checks if a network request came back fine, and throws an error if not\n *\n * @param {object} response A response from a network request\n *\n * @return {object|undefined} Returns either the response, or throws an error\n */\nfunction checkStatus(response: Response) {\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n const error = new ResponseError(response);\n error.response = response;\n throw error;\n}\n\n/**\n * Requests a URL, returning a promise\n *\n * @param {string} url The URL we want to request\n * @param {object} [options] The options we want to pass to \"fetch\"\n *\n * @return {object} The response data\n */\nexport async function request(\n url: string,\n options?: RequestInit,\n): Promise<{} | { err: ResponseError }> {\n const fetchResponse = await fetch(url, options);\n const response = checkStatus(fetchResponse);\n return parseJSON(response);\n}\n","/Users/kellysample/Development/web-example/src/app/components/Link/index.ts",["314","315","316"],"import styled from 'styled-components/macro';\nimport { Link as RouterLink } from 'react-router-dom';\n\nexport const Link = styled(RouterLink)`\n color: ${p => p.theme.primary};\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n opacity: 0.8;\n }\n\n &:active {\n opacity: 0.4;\n }\n`;\n","/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts",["317","318"],"/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts",[],{"ruleId":"319","severity":1,"message":"320","line":8,"column":33,"nodeType":null,"endLine":8,"endColumn":34,"fix":"321"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":35,"nodeType":null,"endLine":9,"endColumn":36,"fix":"322"},{"ruleId":"319","severity":1,"message":"320","line":11,"column":31,"nodeType":null,"endLine":11,"endColumn":32,"fix":"323"},{"ruleId":"319","severity":1,"message":"320","line":12,"column":38,"nodeType":null,"endLine":12,"endColumn":39,"fix":"324"},{"ruleId":"319","severity":1,"message":"320","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"325"},{"ruleId":"319","severity":1,"message":"320","line":14,"column":48,"nodeType":null,"endLine":14,"endColumn":49,"fix":"326"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":47,"nodeType":null,"endLine":15,"endColumn":48,"fix":"327"},{"ruleId":"319","severity":1,"message":"320","line":18,"column":35,"nodeType":null,"endLine":18,"endColumn":36,"fix":"328"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":26,"nodeType":null,"endLine":20,"endColumn":27,"fix":"329"},{"ruleId":"319","severity":1,"message":"320","line":22,"column":52,"nodeType":null,"endLine":22,"endColumn":53,"fix":"330"},{"ruleId":"319","severity":1,"message":"320","line":24,"column":57,"nodeType":null,"endLine":24,"endColumn":58,"fix":"331"},{"ruleId":"319","severity":1,"message":"320","line":26,"column":59,"nodeType":null,"endLine":26,"endColumn":60,"fix":"332"},{"ruleId":"319","severity":1,"message":"320","line":29,"column":24,"nodeType":null,"endLine":29,"endColumn":25,"fix":"333"},{"ruleId":"319","severity":1,"message":"320","line":33,"column":59,"nodeType":null,"endLine":33,"endColumn":60,"fix":"334"},{"ruleId":"319","severity":1,"message":"320","line":37,"column":44,"nodeType":null,"endLine":37,"endColumn":45,"fix":"335"},{"ruleId":"319","severity":1,"message":"320","line":38,"column":3,"nodeType":null,"endLine":38,"endColumn":4,"fix":"336"},{"ruleId":"319","severity":1,"message":"320","line":40,"column":34,"nodeType":null,"endLine":40,"endColumn":35,"fix":"337"},{"ruleId":"319","severity":1,"message":"320","line":41,"column":66,"nodeType":null,"endLine":41,"endColumn":67,"fix":"338"},{"ruleId":"319","severity":1,"message":"320","line":54,"column":2,"nodeType":null,"endLine":54,"endColumn":3,"fix":"339"},{"ruleId":"319","severity":1,"message":"320","line":60,"column":5,"nodeType":null,"endLine":60,"endColumn":6,"fix":"340"},{"ruleId":"319","severity":1,"message":"320","line":66,"column":27,"nodeType":null,"endLine":66,"endColumn":28,"fix":"341"},{"ruleId":"342","replacedBy":"343"},{"ruleId":"344","replacedBy":"345"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":30,"nodeType":null,"endLine":1,"endColumn":31,"fix":"346"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":49,"nodeType":null,"endLine":2,"endColumn":50,"fix":"347"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":64,"nodeType":null,"endLine":3,"endColumn":65,"fix":"348"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":39,"nodeType":null,"endLine":5,"endColumn":40,"fix":"349"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":39,"nodeType":null,"endLine":6,"endColumn":40,"fix":"350"},{"ruleId":"319","severity":1,"message":"320","line":7,"column":61,"nodeType":null,"endLine":7,"endColumn":62,"fix":"351"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"352"},{"ruleId":"319","severity":1,"message":"320","line":19,"column":32,"nodeType":null,"endLine":19,"endColumn":33,"fix":"353"},{"ruleId":"319","severity":1,"message":"320","line":38,"column":5,"nodeType":null,"endLine":38,"endColumn":6,"fix":"354"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":69,"nodeType":null,"endLine":1,"endColumn":70,"fix":"355"},{"ruleId":"319","severity":1,"message":"320","line":7,"column":82,"nodeType":null,"endLine":7,"endColumn":83,"fix":"356"},{"ruleId":"319","severity":1,"message":"320","line":21,"column":65,"nodeType":null,"endLine":21,"endColumn":66,"fix":"357"},{"ruleId":"319","severity":1,"message":"320","line":23,"column":31,"nodeType":null,"endLine":23,"endColumn":32,"fix":"358"},{"ruleId":"319","severity":1,"message":"320","line":28,"column":8,"nodeType":null,"endLine":28,"endColumn":9,"fix":"359"},{"ruleId":"319","severity":1,"message":"320","line":30,"column":45,"nodeType":null,"endLine":30,"endColumn":46,"fix":"360"},{"ruleId":"319","severity":1,"message":"320","line":32,"column":5,"nodeType":null,"endLine":32,"endColumn":6,"fix":"361"},{"ruleId":"319","severity":1,"message":"320","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"362"},{"ruleId":"319","severity":1,"message":"320","line":21,"column":2,"nodeType":null,"endLine":21,"endColumn":3,"fix":"363"},{"ruleId":"319","severity":1,"message":"320","line":24,"column":64,"nodeType":null,"endLine":24,"endColumn":65,"fix":"364"},{"ruleId":"319","severity":1,"message":"320","line":25,"column":63,"nodeType":null,"endLine":25,"endColumn":64,"fix":"365"},{"ruleId":"319","severity":1,"message":"320","line":26,"column":2,"nodeType":null,"endLine":26,"endColumn":3,"fix":"366"},{"ruleId":"319","severity":1,"message":"320","line":31,"column":76,"nodeType":null,"endLine":31,"endColumn":77,"fix":"367"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":13,"nodeType":null,"endLine":36,"endColumn":14,"fix":"368"},{"ruleId":"319","severity":1,"message":"320","line":40,"column":66,"nodeType":null,"endLine":40,"endColumn":67,"fix":"369"},{"ruleId":"319","severity":1,"message":"320","line":44,"column":47,"nodeType":null,"endLine":44,"endColumn":48,"fix":"370"},{"ruleId":"319","severity":1,"message":"320","line":52,"column":12,"nodeType":null,"endLine":52,"endColumn":13,"fix":"371"},{"ruleId":"319","severity":1,"message":"320","line":53,"column":11,"nodeType":null,"endLine":53,"endColumn":12,"fix":"372"},{"ruleId":"319","severity":1,"message":"320","line":56,"column":39,"nodeType":null,"endLine":56,"endColumn":40,"fix":"373"},{"ruleId":"319","severity":1,"message":"320","line":58,"column":7,"nodeType":null,"endLine":58,"endColumn":8,"fix":"374"},{"ruleId":"319","severity":1,"message":"320","line":67,"column":57,"nodeType":null,"endLine":67,"endColumn":58,"fix":"375"},{"ruleId":"319","severity":1,"message":"320","line":69,"column":17,"nodeType":null,"endLine":69,"endColumn":18,"fix":"376"},{"ruleId":"319","severity":1,"message":"320","line":80,"column":16,"nodeType":null,"endLine":80,"endColumn":17,"fix":"377"},{"ruleId":"319","severity":1,"message":"320","line":84,"column":46,"nodeType":null,"endLine":84,"endColumn":47,"fix":"378"},{"ruleId":"319","severity":1,"message":"320","line":90,"column":64,"nodeType":null,"endLine":90,"endColumn":65,"fix":"379"},{"ruleId":"319","severity":1,"message":"320","line":94,"column":47,"nodeType":null,"endLine":94,"endColumn":48,"fix":"380"},{"ruleId":"319","severity":1,"message":"320","line":98,"column":10,"nodeType":null,"endLine":98,"endColumn":11,"fix":"381"},{"ruleId":"319","severity":1,"message":"320","line":99,"column":8,"nodeType":null,"endLine":99,"endColumn":9,"fix":"382"},{"ruleId":"319","severity":1,"message":"320","line":102,"column":72,"nodeType":null,"endLine":102,"endColumn":73,"fix":"383"},{"ruleId":"319","severity":1,"message":"320","line":103,"column":7,"nodeType":null,"endLine":103,"endColumn":8,"fix":"384"},{"ruleId":"319","severity":1,"message":"320","line":113,"column":63,"nodeType":null,"endLine":113,"endColumn":64,"fix":"385"},{"ruleId":"319","severity":1,"message":"320","line":121,"column":37,"nodeType":null,"endLine":121,"endColumn":38,"fix":"386"},{"ruleId":"319","severity":1,"message":"320","line":122,"column":13,"nodeType":null,"endLine":122,"endColumn":14,"fix":"387"},{"ruleId":"319","severity":1,"message":"320","line":123,"column":11,"nodeType":null,"endLine":123,"endColumn":12,"fix":"388"},{"ruleId":"319","severity":1,"message":"320","line":126,"column":39,"nodeType":null,"endLine":126,"endColumn":40,"fix":"389"},{"ruleId":"319","severity":1,"message":"320","line":132,"column":8,"nodeType":null,"endLine":132,"endColumn":9,"fix":"390"},{"ruleId":"319","severity":1,"message":"320","line":133,"column":7,"nodeType":null,"endLine":133,"endColumn":8,"fix":"391"},{"ruleId":"319","severity":1,"message":"320","line":140,"column":34,"nodeType":null,"endLine":140,"endColumn":35,"fix":"392"},{"ruleId":"319","severity":1,"message":"320","line":143,"column":37,"nodeType":null,"endLine":143,"endColumn":38,"fix":"393"},{"ruleId":"319","severity":1,"message":"320","line":144,"column":9,"nodeType":null,"endLine":144,"endColumn":10,"fix":"394"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":72,"nodeType":null,"endLine":1,"endColumn":73,"fix":"395"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":58,"nodeType":null,"endLine":2,"endColumn":59,"fix":"396"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":46,"nodeType":null,"endLine":3,"endColumn":47,"fix":"397"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":43,"nodeType":null,"endLine":5,"endColumn":44,"fix":"398"},{"ruleId":"319","severity":1,"message":"320","line":8,"column":37,"nodeType":null,"endLine":8,"endColumn":38,"fix":"399"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":71,"nodeType":null,"endLine":9,"endColumn":72,"fix":"400"},{"ruleId":"319","severity":1,"message":"320","line":10,"column":42,"nodeType":null,"endLine":10,"endColumn":43,"fix":"401"},{"ruleId":"319","severity":1,"message":"320","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"402"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":4,"nodeType":null,"endLine":20,"endColumn":5,"fix":"403"},{"ruleId":"319","severity":1,"message":"320","line":30,"column":5,"nodeType":null,"endLine":30,"endColumn":6,"fix":"404"},{"ruleId":"319","severity":1,"message":"320","line":32,"column":15,"nodeType":null,"endLine":32,"endColumn":16,"fix":"405"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"406"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":75,"nodeType":null,"endLine":2,"endColumn":76,"fix":"407"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":42,"nodeType":null,"endLine":3,"endColumn":43,"fix":"408"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":62,"nodeType":null,"endLine":4,"endColumn":63,"fix":"409"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"410"},{"ruleId":"319","severity":1,"message":"320","line":8,"column":61,"nodeType":null,"endLine":8,"endColumn":62,"fix":"411"},{"ruleId":"319","severity":1,"message":"320","line":10,"column":41,"nodeType":null,"endLine":10,"endColumn":42,"fix":"412"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":4,"nodeType":null,"endLine":15,"endColumn":5,"fix":"413"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"414"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"415"},{"ruleId":"319","severity":1,"message":"320","line":7,"column":68,"nodeType":null,"endLine":7,"endColumn":69,"fix":"416"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":26,"nodeType":null,"endLine":15,"endColumn":27,"fix":"417"},{"ruleId":"319","severity":1,"message":"320","line":19,"column":7,"nodeType":null,"endLine":19,"endColumn":8,"fix":"418"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":31,"nodeType":null,"endLine":9,"endColumn":32,"fix":"419"},{"ruleId":"319","severity":1,"message":"320","line":10,"column":44,"nodeType":null,"endLine":10,"endColumn":45,"fix":"420"},{"ruleId":"319","severity":1,"message":"320","line":11,"column":64,"nodeType":null,"endLine":11,"endColumn":65,"fix":"421"},{"ruleId":"319","severity":1,"message":"320","line":13,"column":54,"nodeType":null,"endLine":13,"endColumn":55,"fix":"422"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":58,"nodeType":null,"endLine":15,"endColumn":59,"fix":"423"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":66,"nodeType":null,"endLine":16,"endColumn":67,"fix":"424"},{"ruleId":"319","severity":1,"message":"320","line":17,"column":51,"nodeType":null,"endLine":17,"endColumn":52,"fix":"425"},{"ruleId":"319","severity":1,"message":"320","line":18,"column":47,"nodeType":null,"endLine":18,"endColumn":48,"fix":"426"},{"ruleId":"319","severity":1,"message":"320","line":21,"column":36,"nodeType":null,"endLine":21,"endColumn":37,"fix":"427"},{"ruleId":"319","severity":1,"message":"320","line":41,"column":4,"nodeType":null,"endLine":41,"endColumn":5,"fix":"428"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":78,"nodeType":null,"endLine":1,"endColumn":79,"fix":"429"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":51,"nodeType":null,"endLine":2,"endColumn":52,"fix":"430"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":34,"nodeType":null,"endLine":3,"endColumn":35,"fix":"431"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":60,"nodeType":null,"endLine":4,"endColumn":61,"fix":"432"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":34,"nodeType":null,"endLine":5,"endColumn":35,"fix":"433"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"434"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":38,"nodeType":null,"endLine":16,"endColumn":39,"fix":"435"},{"ruleId":"319","severity":1,"message":"320","line":19,"column":3,"nodeType":null,"endLine":19,"endColumn":4,"fix":"436"},{"ruleId":"319","severity":1,"message":"320","line":25,"column":55,"nodeType":null,"endLine":25,"endColumn":56,"fix":"437"},{"ruleId":"319","severity":1,"message":"320","line":27,"column":34,"nodeType":null,"endLine":27,"endColumn":35,"fix":"438"},{"ruleId":"319","severity":1,"message":"320","line":29,"column":2,"nodeType":null,"endLine":29,"endColumn":3,"fix":"439"},{"ruleId":"319","severity":1,"message":"320","line":34,"column":2,"nodeType":null,"endLine":34,"endColumn":3,"fix":"440"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":50,"nodeType":null,"endLine":36,"endColumn":51,"fix":"441"},{"ruleId":"319","severity":1,"message":"320","line":37,"column":42,"nodeType":null,"endLine":37,"endColumn":43,"fix":"442"},{"ruleId":"319","severity":1,"message":"320","line":38,"column":45,"nodeType":null,"endLine":38,"endColumn":46,"fix":"443"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":54,"nodeType":null,"endLine":1,"endColumn":55,"fix":"444"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":50,"nodeType":null,"endLine":2,"endColumn":51,"fix":"445"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":2,"nodeType":null,"endLine":36,"endColumn":3,"fix":"446"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":39,"nodeType":null,"endLine":1,"endColumn":40,"fix":"447"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":14,"nodeType":null,"endLine":6,"endColumn":15,"fix":"448"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":70,"nodeType":null,"endLine":9,"endColumn":71,"fix":"449"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":11,"nodeType":null,"endLine":16,"endColumn":12,"fix":"450"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"451"},{"ruleId":"319","severity":1,"message":"320","line":11,"column":38,"nodeType":null,"endLine":11,"endColumn":39,"fix":"452"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"453"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"454"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":42,"nodeType":null,"endLine":6,"endColumn":43,"fix":"455"},{"ruleId":"319","severity":1,"message":"320","line":7,"column":67,"nodeType":null,"endLine":7,"endColumn":68,"fix":"456"},{"ruleId":"319","severity":1,"message":"320","line":15,"column":2,"nodeType":null,"endLine":15,"endColumn":3,"fix":"457"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"458"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":45,"nodeType":null,"endLine":2,"endColumn":46,"fix":"459"},{"ruleId":"319","severity":1,"message":"320","line":3,"column":24,"nodeType":null,"endLine":3,"endColumn":25,"fix":"460"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":43,"nodeType":null,"endLine":4,"endColumn":44,"fix":"461"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":44,"nodeType":null,"endLine":5,"endColumn":45,"fix":"462"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":55,"nodeType":null,"endLine":6,"endColumn":56,"fix":"463"},{"ruleId":"319","severity":1,"message":"320","line":27,"column":4,"nodeType":null,"endLine":27,"endColumn":5,"fix":"464"},{"ruleId":"319","severity":1,"message":"320","line":37,"column":2,"nodeType":null,"endLine":37,"endColumn":3,"fix":"465"},{"ruleId":"319","severity":1,"message":"320","line":48,"column":2,"nodeType":null,"endLine":48,"endColumn":3,"fix":"466"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"467"},{"ruleId":"319","severity":1,"message":"320","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"468"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":46,"nodeType":null,"endLine":1,"endColumn":47,"fix":"469"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":28,"nodeType":null,"endLine":4,"endColumn":29,"fix":"470"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":61,"nodeType":null,"endLine":6,"endColumn":62,"fix":"471"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":62,"nodeType":null,"endLine":16,"endColumn":63,"fix":"472"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":71,"nodeType":null,"endLine":20,"endColumn":72,"fix":"473"},{"ruleId":"319","severity":1,"message":"320","line":23,"column":42,"nodeType":null,"endLine":23,"endColumn":43,"fix":"474"},{"ruleId":"319","severity":1,"message":"320","line":29,"column":4,"nodeType":null,"endLine":29,"endColumn":5,"fix":"475"},{"ruleId":"319","severity":1,"message":"320","line":30,"column":2,"nodeType":null,"endLine":30,"endColumn":3,"fix":"476"},{"ruleId":"319","severity":1,"message":"320","line":4,"column":25,"nodeType":null,"endLine":4,"endColumn":26,"fix":"477"},{"ruleId":"319","severity":1,"message":"320","line":9,"column":34,"nodeType":null,"endLine":9,"endColumn":35,"fix":"478"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":28,"nodeType":null,"endLine":16,"endColumn":29,"fix":"479"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"480"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"481"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":60,"nodeType":null,"endLine":2,"endColumn":61,"fix":"482"},{"ruleId":"319","severity":1,"message":"320","line":10,"column":2,"nodeType":null,"endLine":10,"endColumn":3,"fix":"483"},{"ruleId":"319","severity":1,"message":"320","line":12,"column":18,"nodeType":null,"endLine":12,"endColumn":19,"fix":"484"},{"ruleId":"319","severity":1,"message":"320","line":18,"column":2,"nodeType":null,"endLine":18,"endColumn":3,"fix":"485"},{"ruleId":"319","severity":1,"message":"320","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"486"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":18,"nodeType":null,"endLine":36,"endColumn":19,"fix":"487"},{"ruleId":"319","severity":1,"message":"320","line":44,"column":2,"nodeType":null,"endLine":44,"endColumn":3,"fix":"488"},{"ruleId":"319","severity":1,"message":"320","line":50,"column":2,"nodeType":null,"endLine":50,"endColumn":3,"fix":"489"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":28,"nodeType":null,"endLine":2,"endColumn":29,"fix":"490"},{"ruleId":"319","severity":1,"message":"320","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"491"},{"ruleId":"319","severity":1,"message":"320","line":6,"column":29,"nodeType":null,"endLine":6,"endColumn":30,"fix":"492"},{"ruleId":"319","severity":1,"message":"320","line":18,"column":16,"nodeType":null,"endLine":18,"endColumn":17,"fix":"493"},{"ruleId":"319","severity":1,"message":"320","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"494"},{"ruleId":"319","severity":1,"message":"320","line":32,"column":20,"nodeType":null,"endLine":32,"endColumn":21,"fix":"495"},{"ruleId":"319","severity":1,"message":"320","line":34,"column":44,"nodeType":null,"endLine":34,"endColumn":45,"fix":"496"},{"ruleId":"319","severity":1,"message":"320","line":35,"column":28,"nodeType":null,"endLine":35,"endColumn":29,"fix":"497"},{"ruleId":"319","severity":1,"message":"320","line":36,"column":14,"nodeType":null,"endLine":36,"endColumn":15,"fix":"498"},{"ruleId":"319","severity":1,"message":"320","line":51,"column":50,"nodeType":null,"endLine":51,"endColumn":51,"fix":"499"},{"ruleId":"319","severity":1,"message":"320","line":52,"column":46,"nodeType":null,"endLine":52,"endColumn":47,"fix":"500"},{"ruleId":"319","severity":1,"message":"320","line":53,"column":29,"nodeType":null,"endLine":53,"endColumn":30,"fix":"501"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"502"},{"ruleId":"319","severity":1,"message":"320","line":2,"column":54,"nodeType":null,"endLine":2,"endColumn":55,"fix":"503"},{"ruleId":"319","severity":1,"message":"320","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"504"},{"ruleId":"319","severity":1,"message":"320","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"505"},{"ruleId":"319","severity":1,"message":"320","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"506"},"prettier/prettier","Delete `;`",{"range":"507","text":"508"},{"range":"509","text":"508"},{"range":"510","text":"508"},{"range":"511","text":"508"},{"range":"512","text":"508"},{"range":"513","text":"508"},{"range":"514","text":"508"},{"range":"515","text":"508"},{"range":"516","text":"508"},{"range":"517","text":"508"},{"range":"518","text":"508"},{"range":"519","text":"508"},{"range":"520","text":"508"},{"range":"521","text":"508"},{"range":"522","text":"508"},{"range":"523","text":"508"},{"range":"524","text":"508"},{"range":"525","text":"508"},{"range":"526","text":"508"},{"range":"527","text":"508"},{"range":"528","text":"508"},"no-native-reassign",["529"],"no-negated-in-lhs",["530"],{"range":"531","text":"508"},{"range":"532","text":"508"},{"range":"533","text":"508"},{"range":"534","text":"508"},{"range":"535","text":"508"},{"range":"536","text":"508"},{"range":"537","text":"508"},{"range":"538","text":"508"},{"range":"539","text":"508"},{"range":"540","text":"508"},{"range":"541","text":"508"},{"range":"542","text":"508"},{"range":"543","text":"508"},{"range":"544","text":"508"},{"range":"545","text":"508"},{"range":"546","text":"508"},{"range":"547","text":"508"},{"range":"548","text":"508"},{"range":"549","text":"508"},{"range":"550","text":"508"},{"range":"551","text":"508"},{"range":"552","text":"508"},{"range":"553","text":"508"},{"range":"554","text":"508"},{"range":"555","text":"508"},{"range":"556","text":"508"},{"range":"557","text":"508"},{"range":"558","text":"508"},{"range":"559","text":"508"},{"range":"560","text":"508"},{"range":"561","text":"508"},{"range":"562","text":"508"},{"range":"563","text":"508"},{"range":"564","text":"508"},{"range":"565","text":"508"},{"range":"566","text":"508"},{"range":"567","text":"508"},{"range":"568","text":"508"},{"range":"569","text":"508"},{"range":"570","text":"508"},{"range":"571","text":"508"},{"range":"572","text":"508"},{"range":"573","text":"508"},{"range":"574","text":"508"},{"range":"575","text":"508"},{"range":"576","text":"508"},{"range":"577","text":"508"},{"range":"578","text":"508"},{"range":"579","text":"508"},{"range":"580","text":"508"},{"range":"581","text":"508"},{"range":"582","text":"508"},{"range":"583","text":"508"},{"range":"584","text":"508"},{"range":"585","text":"508"},{"range":"586","text":"508"},{"range":"587","text":"508"},{"range":"588","text":"508"},{"range":"589","text":"508"},{"range":"590","text":"508"},{"range":"591","text":"508"},{"range":"592","text":"508"},{"range":"593","text":"508"},{"range":"594","text":"508"},{"range":"595","text":"508"},{"range":"596","text":"508"},{"range":"597","text":"508"},{"range":"598","text":"508"},{"range":"599","text":"508"},{"range":"600","text":"508"},{"range":"601","text":"508"},{"range":"602","text":"508"},{"range":"603","text":"508"},{"range":"604","text":"508"},{"range":"605","text":"508"},{"range":"606","text":"508"},{"range":"607","text":"508"},{"range":"608","text":"508"},{"range":"609","text":"508"},{"range":"610","text":"508"},{"range":"611","text":"508"},{"range":"612","text":"508"},{"range":"613","text":"508"},{"range":"614","text":"508"},{"range":"615","text":"508"},{"range":"616","text":"508"},{"range":"617","text":"508"},{"range":"618","text":"508"},{"range":"619","text":"508"},{"range":"620","text":"508"},{"range":"621","text":"508"},{"range":"622","text":"508"},{"range":"623","text":"508"},{"range":"624","text":"508"},{"range":"625","text":"508"},{"range":"626","text":"508"},{"range":"627","text":"508"},{"range":"628","text":"508"},{"range":"629","text":"508"},{"range":"630","text":"508"},{"range":"631","text":"508"},{"range":"632","text":"508"},{"range":"633","text":"508"},{"range":"634","text":"508"},{"range":"635","text":"508"},{"range":"636","text":"508"},{"range":"637","text":"508"},{"range":"638","text":"508"},{"range":"639","text":"508"},{"range":"640","text":"508"},{"range":"641","text":"508"},{"range":"642","text":"508"},{"range":"643","text":"508"},{"range":"644","text":"508"},{"range":"645","text":"508"},{"range":"646","text":"508"},{"range":"647","text":"508"},{"range":"648","text":"508"},{"range":"649","text":"508"},{"range":"650","text":"508"},{"range":"651","text":"508"},{"range":"652","text":"508"},{"range":"653","text":"508"},{"range":"654","text":"508"},{"range":"655","text":"508"},{"range":"656","text":"508"},{"range":"657","text":"508"},{"range":"658","text":"508"},{"range":"659","text":"508"},{"range":"660","text":"508"},{"range":"661","text":"508"},{"range":"662","text":"508"},{"range":"663","text":"508"},{"range":"664","text":"508"},{"range":"665","text":"508"},{"range":"666","text":"508"},{"range":"667","text":"508"},{"range":"668","text":"508"},{"range":"669","text":"508"},{"range":"670","text":"508"},{"range":"671","text":"508"},{"range":"672","text":"508"},{"range":"673","text":"508"},{"range":"674","text":"508"},{"range":"675","text":"508"},{"range":"676","text":"508"},{"range":"677","text":"508"},{"range":"678","text":"508"},{"range":"679","text":"508"},{"range":"680","text":"508"},{"range":"681","text":"508"},{"range":"682","text":"508"},{"range":"683","text":"508"},{"range":"684","text":"508"},{"range":"685","text":"508"},{"range":"686","text":"508"},{"range":"687","text":"508"},{"range":"688","text":"508"},{"range":"689","text":"508"},{"range":"690","text":"508"},{"range":"691","text":"508"},[140,141],"",[176,177],[209,210],[248,249],[288,289],[337,338],[385,386],[448,449],[476,477],[530,531],[589,590],[650,651],[700,701],[876,877],[1026,1027],[1030,1031],[1066,1067],[1133,1134],[1371,1372],[1561,1562],[1797,1798],"no-global-assign","no-unsafe-negation",[29,30],[79,80],[144,145],[185,186],[225,226],[287,288],[393,394],[527,528],[1122,1123],[68,69],[385,386],[864,865],[937,938],[1055,1056],[1114,1115],[1126,1127],[1129,1130],[902,903],[984,985],[1048,1049],[1051,1052],[1325,1326],[1636,1637],[1754,1755],[1922,1923],[2275,2276],[2287,2288],[2400,2401],[2416,2417],[2658,2659],[2716,2717],[3296,3297],[3425,3426],[3705,3706],[3836,3837],[3889,3890],[3898,3899],[4000,4001],[4008,4009],[4390,4391],[4747,4748],[4761,4762],[4773,4774],[4880,4881],[5015,5016],[5023,5024],[5194,5195],[5265,5266],[5275,5276],[71,72],[130,131],[177,178],[222,223],[299,300],[371,372],[414,415],[498,499],[600,601],[886,887],[903,904],[30,31],[106,107],[149,150],[212,213],[264,265],[401,402],[444,445],[575,576],[578,579],[130,131],[200,201],[549,550],[624,625],[199,200],[244,245],[309,310],[365,366],[425,426],[492,493],[544,545],[592,593],[654,655],[1188,1189],[77,78],[129,130],[164,165],[225,226],[260,261],[353,354],[535,536],[551,552],[758,759],[799,800],[807,808],[939,940],[991,992],[1034,1035],[1080,1081],[53,54],[104,105],[718,719],[38,39],[196,197],[317,318],[524,525],[274,275],[314,315],[383,384],[94,95],[137,138],[205,206],[352,353],[30,31],[76,77],[101,102],[145,146],[190,191],[246,247],[727,728],[933,934],[1097,1098],[44,45],[185,186],[45,46],[92,93],[156,157],[420,421],[539,540],[587,588],[745,746],[748,749],[95,96],[202,203],[384,385],[471,472],[30,31],[91,92],[316,317],[336,337],[410,411],[649,650],[690,691],[914,915],[1061,1062],[70,71],[139,140],[169,170],[481,482],[511,512],[866,867],[915,916],[944,945],[959,960],[1353,1354],[1400,1401],[1430,1431],[44,45],[99,100],[305,306],[44,45],[169,170]] \ No newline at end of file +[{"/Users/kellysample/Development/web-example/src/index.tsx":"1","/Users/kellysample/Development/web-example/src/locales/i18n.ts":"2","/Users/kellysample/Development/web-example/src/locales/translations.ts":"3","/Users/kellysample/Development/web-example/src/serviceWorker.ts":"4","/Users/kellysample/Development/web-example/src/store/configureStore.ts":"5","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx":"6","/Users/kellysample/Development/web-example/src/store/reducers.ts":"7","/Users/kellysample/Development/web-example/src/app/index.tsx":"8","/Users/kellysample/Development/web-example/src/styles/theme/slice.ts":"9","/Users/kellysample/Development/web-example/src/styles/global-styles.ts":"10","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts":"11","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts":"12","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx":"13","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx":"14","/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts":"15","/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx":"16","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx":"17","/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx":"18","/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts":"19","/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts":"20","/Users/kellysample/Development/web-example/src/utils/loadable.tsx":"21","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts":"22","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx":"23","/Users/kellysample/Development/web-example/src/utils/request.ts":"24","/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts":"25","/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts":"26"},{"size":1799,"mtime":1648222804296,"results":"27","hashOfConfig":"28"},{"size":1124,"mtime":1648222804297,"results":"29","hashOfConfig":"28"},{"size":1131,"mtime":1648222804297,"results":"30","hashOfConfig":"28"},{"size":5283,"mtime":1648225159469,"results":"31","hashOfConfig":"28"},{"size":907,"mtime":1648222804299,"results":"32","hashOfConfig":"28"},{"size":580,"mtime":1648222804301,"results":"33","hashOfConfig":"28"},{"size":632,"mtime":1648222804299,"results":"34","hashOfConfig":"28"},{"size":1185,"mtime":1648227973401,"results":"35","hashOfConfig":"28"},{"size":1082,"mtime":1648222804302,"results":"36","hashOfConfig":"28"},{"size":720,"mtime":1648222804300,"results":"37","hashOfConfig":"28"},{"size":528,"mtime":1648222804302,"results":"38","hashOfConfig":"28"},{"size":385,"mtime":1648222804302,"results":"39","hashOfConfig":"28"},{"size":354,"mtime":1648222804294,"results":"40","hashOfConfig":"28"},{"size":561,"mtime":1648226967177,"results":"41","hashOfConfig":"28"},{"size":58,"mtime":1648222804300,"results":"42","hashOfConfig":"28"},{"size":1332,"mtime":1648226629048,"results":"43","hashOfConfig":"28"},{"size":1319,"mtime":1648227943432,"results":"44","hashOfConfig":"28"},{"size":632,"mtime":1648226986630,"results":"45","hashOfConfig":"28"},{"size":708,"mtime":1648226603007,"results":"46","hashOfConfig":"28"},{"size":532,"mtime":1648226629048,"results":"47","hashOfConfig":"28"},{"size":750,"mtime":1648222804305,"results":"48","hashOfConfig":"28"},{"size":475,"mtime":1648222804306,"results":"49","hashOfConfig":"28"},{"size":1054,"mtime":1648227392002,"results":"50","hashOfConfig":"28"},{"size":1434,"mtime":1648222804306,"results":"51","hashOfConfig":"28"},{"size":171,"mtime":1648225858881,"results":"52","hashOfConfig":"28"},{"size":685,"mtime":1648226300241,"results":"53","hashOfConfig":"28"},{"filePath":"54","messages":"55","errorCount":0,"fatalErrorCount":0,"warningCount":21,"fixableErrorCount":0,"fixableWarningCount":21,"source":"56","usedDeprecatedRules":"57"},"11mdaqp",{"filePath":"58","messages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"60","usedDeprecatedRules":"57"},{"filePath":"61","messages":"62","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"63","usedDeprecatedRules":"57"},{"filePath":"64","messages":"65","errorCount":0,"fatalErrorCount":0,"warningCount":32,"fixableErrorCount":0,"fixableWarningCount":32,"source":"66","usedDeprecatedRules":"57"},{"filePath":"67","messages":"68","errorCount":0,"fatalErrorCount":0,"warningCount":11,"fixableErrorCount":0,"fixableWarningCount":11,"source":"69","usedDeprecatedRules":"57"},{"filePath":"70","messages":"71","errorCount":0,"fatalErrorCount":0,"warningCount":9,"fixableErrorCount":0,"fixableWarningCount":9,"source":"72","usedDeprecatedRules":"57"},{"filePath":"73","messages":"74","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"75","usedDeprecatedRules":"57"},{"filePath":"76","messages":"77","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"78","messages":"79","errorCount":0,"fatalErrorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":15,"source":"80","usedDeprecatedRules":"57"},{"filePath":"81","messages":"82","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"83","usedDeprecatedRules":"57"},{"filePath":"84","messages":"85","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"86","usedDeprecatedRules":"57"},{"filePath":"87","messages":"88","errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":3,"source":"89","usedDeprecatedRules":"57"},{"filePath":"90","messages":"91","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"92","usedDeprecatedRules":"57"},{"filePath":"93","messages":"94","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},{"filePath":"95","messages":"96","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},{"filePath":"97","messages":"98","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},{"filePath":"99","messages":"100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},{"filePath":"101","messages":"102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},{"filePath":"103","messages":"104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},{"filePath":"105","messages":"106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},{"filePath":"107","messages":"108","errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":8,"source":"109","usedDeprecatedRules":"57"},{"filePath":"110","messages":"111","errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":4,"source":"112","usedDeprecatedRules":"57"},{"filePath":"113","messages":"114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},{"filePath":"115","messages":"116","errorCount":0,"fatalErrorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":12,"source":"117","usedDeprecatedRules":"57"},{"filePath":"118","messages":"119","errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":2,"source":null},{"filePath":"120","messages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"57"},"/Users/kellysample/Development/web-example/src/index.tsx",["122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142"],"/**\n * index.tsx\n *\n * This is the entry file for the application, only setup and boilerplate\n * code.\n */\n\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport FontFaceObserver from 'fontfaceobserver';\nimport * as serviceWorker from 'serviceWorker';\n\n// Use consistent styling\nimport 'sanitize.css/sanitize.css';\n\nimport { App } from 'app';\n\nimport { HelmetProvider } from 'react-helmet-async';\n\nimport { configureAppStore } from 'store/configureStore';\n\nimport { ThemeProvider } from 'styles/theme/ThemeProvider';\n\n// Initialize languages\nimport './locales/i18n';\n\n// Observe loading of Inter (to remove 'Inter', remove the tag in\n// the index.html file and this observer)\nconst openSansObserver = new FontFaceObserver('Inter', {});\n\n// When Inter is loaded, add a font-family using Inter to the body\nopenSansObserver.load().then(() => {\n document.body.classList.add('fontLoaded');\n});\n\nconst store = configureAppStore();\nconst MOUNT_NODE = document.getElementById('root') as HTMLElement;\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n MOUNT_NODE,\n);\n\n// Hot reloadable translation json files\nif (module.hot) {\n module.hot.accept(['./locales/i18n'], () => {\n // No need to render the App again because i18next works with the hooks\n });\n}\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n",["143","144"],"/Users/kellysample/Development/web-example/src/locales/i18n.ts",["145","146","147","148","149","150","151","152","153"],"import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nimport en from './en/translation.json';\nimport de from './de/translation.json';\nimport { convertLanguageJsonToObject } from './translations';\n\nexport const translationsJson = {\n en: {\n translation: en,\n },\n de: {\n translation: de,\n },\n};\n\n// Create the 'translations' object to provide full intellisense support for the static json files.\nconvertLanguageJsonToObject(en);\n\nexport const i18n = i18next\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n resources: translationsJson,\n fallbackLng: 'en',\n debug:\n process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test',\n\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n });\n","/Users/kellysample/Development/web-example/src/locales/translations.ts",["154","155","156","157","158","159","160","161"],"import { ConvertedToObjectType, TranslationJsonType } from './types';\n\n/**\n * This file is seperate from the './i18n.ts' simply to make the Hot Module Replacement work seamlessly.\n * Your components can import this file in 'messages.ts' files which would ruin the HMR if this isn't a separate module\n */\nexport const translations: ConvertedToObjectType = {} as any;\n\n/*\n * Converts the static JSON file into an object where keys are identical\n * but values are strings concatenated according to syntax.\n * This is helpful when using the JSON file keys and still having the intellisense support\n * along with type-safety\n */\nexport const convertLanguageJsonToObject = (\n json: any,\n objToConvertTo = translations,\n current?: string,\n) => {\n Object.keys(json).forEach(key => {\n const currentLookupKey = current ? `${current}.${key}` : key;\n if (typeof json[key] === 'object') {\n objToConvertTo[key] = {};\n convertLanguageJsonToObject(\n json[key],\n objToConvertTo[key],\n currentLookupKey,\n );\n } else {\n objToConvertTo[key] = currentLookupKey;\n }\n });\n};\n","/Users/kellysample/Development/web-example/src/serviceWorker.ts",["162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193"],"// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/store/configureStore.ts",["194","195","196","197","198","199","200","201","202","203","204"],"import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\nimport { createInjectorsEnhancer } from 'redux-injectors';\nimport createSagaMiddleware from 'redux-saga';\n\nimport { createReducer } from './reducers';\n\nexport function configureAppStore() {\n const reduxSagaMonitorOptions = {};\n const sagaMiddleware = createSagaMiddleware(reduxSagaMonitorOptions);\n const { run: runSaga } = sagaMiddleware;\n\n // Create the store with saga middleware\n const middlewares = [sagaMiddleware];\n\n const enhancers = [\n createInjectorsEnhancer({\n createReducer,\n runSaga,\n }),\n ];\n\n const store = configureStore({\n reducer: createReducer(),\n middleware: [...getDefaultMiddleware(), ...middlewares],\n devTools:\n /* istanbul ignore next line */\n process.env.NODE_ENV !== 'production' ||\n process.env.PUBLIC_URL.length > 0,\n enhancers,\n });\n\n return store;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/ThemeProvider.tsx",["205","206","207","208","209","210","211","212","213"],"import * as React from 'react';\nimport { ThemeProvider as OriginalThemeProvider } from 'styled-components';\nimport { useSelector } from 'react-redux';\nimport { selectTheme, themeSliceKey, reducer } from './slice';\nimport { useInjectReducer } from 'redux-injectors';\n\nexport const ThemeProvider = (props: { children: React.ReactChild }) => {\n useInjectReducer({ key: themeSliceKey, reducer: reducer });\n\n const theme = useSelector(selectTheme);\n return (\n \n {React.Children.only(props.children)}\n \n );\n};\n","/Users/kellysample/Development/web-example/src/store/reducers.ts",["214","215","216","217"],"/**\n * Combine all reducers in this file and export the combined reducers.\n */\n\nimport { combineReducers } from '@reduxjs/toolkit';\n\nimport { InjectedReducersType } from 'utils/types/injector-typings';\n\n/**\n * Merges the main reducer with the router state and dynamically injected reducers\n */\nexport function createReducer(injectedReducers: InjectedReducersType = {}) {\n // Initially we don't have any injectedReducers, so returning identity function to avoid the error\n if (Object.keys(injectedReducers).length === 0) {\n return state => state;\n } else {\n return combineReducers({\n ...injectedReducers,\n });\n }\n}\n","/Users/kellysample/Development/web-example/src/app/index.tsx",[],"/Users/kellysample/Development/web-example/src/styles/theme/slice.ts",["218","219","220","221","222","223","224","225","226","227","228","229","230","231","232"],"import { PayloadAction, createSelector, createSlice } from '@reduxjs/toolkit';\nimport { ThemeState, ThemeKeyType } from './types';\nimport { themes } from './themes';\nimport { getThemeFromStorage, isSystemDark } from './utils';\nimport { RootState } from 'types';\n\nexport const initialState: ThemeState = {\n selected: getThemeFromStorage() || 'system',\n};\n\nconst themeSlice = createSlice({\n name: 'theme',\n initialState,\n reducers: {\n changeTheme(state, action: PayloadAction) {\n state.selected = action.payload;\n },\n },\n});\n\nexport const selectTheme = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => {\n if (theme.selected === 'system') {\n return isSystemDark ? themes.dark : themes.light;\n }\n return themes[theme.selected];\n },\n);\n\nexport const selectThemeKey = createSelector(\n [(state: RootState) => state.theme || initialState],\n theme => theme.selected,\n);\n\nexport const { changeTheme } = themeSlice.actions;\nexport const reducer = themeSlice.reducer;\nexport const themeSliceKey = themeSlice.name;\n","/Users/kellysample/Development/web-example/src/styles/global-styles.ts",["233","234","235"],"import { createGlobalStyle } from 'styled-components';\nimport { StyleConstants } from './StyleConstants';\n/* istanbul ignore next */\nexport const GlobalStyle = createGlobalStyle`\n html,\n body {\n height: 100%;\n width: 100%;\n line-height: 1.5;\n }\n\n body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n padding-top: ${StyleConstants.NAV_BAR_HEIGHT};\n background-color: ${p => p.theme.background};\n }\n\n body.fontLoaded {\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n \n p,\n label {\n line-height: 1.5em;\n }\n\n input, select, button {\n font-family: inherit;\n font-size: inherit;\n }\n\n .icon {\n width: 1.5rem;\n height: 1.5rem;\n }\n`;\n","/Users/kellysample/Development/web-example/src/styles/theme/utils.ts",["236","237","238","239"],"import { ThemeKeyType } from './types';\n\n/* istanbul ignore next line */\nexport const isSystemDark = window?.matchMedia\n ? window.matchMedia('(prefers-color-scheme: dark)')?.matches\n : undefined;\n\nexport function saveTheme(theme: ThemeKeyType) {\n window.localStorage && localStorage.setItem('selectedTheme', theme);\n}\n\n/* istanbul ignore next line */\nexport function getThemeFromStorage(): ThemeKeyType | null {\n return window.localStorage\n ? (localStorage.getItem('selectedTheme') as ThemeKeyType) || null\n : null;\n}\n","/Users/kellysample/Development/web-example/src/styles/theme/themes.ts",["240","241","242"],"const lightTheme = {\n primary: 'rgba(215,113,88,1)',\n text: 'rgba(58,52,51,1)',\n textSecondary: 'rgba(58,52,51,0.7)',\n background: 'rgba(255,255,255,1)',\n backgroundVariant: 'rgba(251,249,249,1)',\n border: 'rgba(58,52,51,0.12)',\n borderLight: 'rgba(58,52,51,0.05)',\n};\n\nexport type Theme = typeof lightTheme;\n\nexport const themes = {\n light: lightTheme,\n dark: lightTheme,\n};\n","/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/Loadable.tsx",["243","244","245","246"],"/**\n * Asynchronously loads the component for NotFoundPage\n */\n\nimport * as React from 'react';\nimport { lazyLoad } from 'utils/loadable';\nimport { LoadingIndicator } from 'app/components/LoadingIndicator';\n\nexport const NotFoundPage = lazyLoad(\n () => import('./index'),\n module => module.NotFoundPage,\n {\n fallback: ,\n },\n);\n","/Users/kellysample/Development/web-example/src/app/containers/HomePage/Loadable.tsx",[],"/Users/kellysample/Development/web-example/src/styles/StyleConstants.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/NotFoundPage/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/HomePage/index.tsx",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/saga.ts",[],"/Users/kellysample/Development/web-example/src/app/containers/Countries/selectors.ts",[],"/Users/kellysample/Development/web-example/src/utils/loadable.tsx",["247","248","249","250","251","252","253","254"],"import React, { lazy, Suspense } from 'react';\n\ninterface Opts {\n fallback: React.ReactNode;\n}\ntype Unpromisify = T extends Promise ? P : never;\n\nexport const lazyLoad = <\n T extends Promise,\n U extends React.ComponentType\n>(\n importFunc: () => T,\n selectorFunc?: (s: Unpromisify) => U,\n opts: Opts = { fallback: null },\n) => {\n let lazyFactory: () => Promise<{ default: U }> = importFunc;\n\n if (selectorFunc) {\n lazyFactory = () =>\n importFunc().then(module => ({ default: selectorFunc(module) }));\n }\n\n const LazyComponent = lazy(lazyFactory);\n\n return (props: React.ComponentProps): JSX.Element => (\n \n \n \n );\n};\n","/Users/kellysample/Development/web-example/src/utils/redux-injectors.ts",["255","256","257","258"],"import {\n useInjectReducer as useReducer,\n useInjectSaga as useSaga,\n} from 'redux-injectors';\nimport {\n InjectReducerParams,\n InjectSagaParams,\n RootStateKeyType,\n} from './types/injector-typings';\n\n/* Wrap redux-injectors with stricter types */\n\nexport function useInjectReducer(\n params: InjectReducerParams,\n) {\n return useReducer(params);\n}\n\nexport function useInjectSaga(params: InjectSagaParams) {\n return useSaga(params);\n}\n","/Users/kellysample/Development/web-example/src/app/components/LoadingIndicator/index.tsx",[],"/Users/kellysample/Development/web-example/src/utils/request.ts",["259","260","261","262","263","264","265","266","267","268","269","270"],"export class ResponseError extends Error {\n public response: Response;\n\n constructor(response: Response) {\n super(response.statusText);\n this.response = response;\n }\n}\n/**\n * Parses the JSON returned by a network request\n *\n * @param {object} response A response from a network request\n *\n * @return {object} The parsed JSON from the request\n */\nfunction parseJSON(response: Response) {\n if (response.status === 204 || response.status === 205) {\n return null;\n }\n return response.json();\n}\n\n/**\n * Checks if a network request came back fine, and throws an error if not\n *\n * @param {object} response A response from a network request\n *\n * @return {object|undefined} Returns either the response, or throws an error\n */\nfunction checkStatus(response: Response) {\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n const error = new ResponseError(response);\n error.response = response;\n throw error;\n}\n\n/**\n * Requests a URL, returning a promise\n *\n * @param {string} url The URL we want to request\n * @param {object} [options] The options we want to pass to \"fetch\"\n *\n * @return {object} The response data\n */\nexport async function request(\n url: string,\n options?: RequestInit,\n): Promise<{} | { err: ResponseError }> {\n const fetchResponse = await fetch(url, options);\n const response = checkStatus(fetchResponse);\n return parseJSON(response);\n}\n","/Users/kellysample/Development/web-example/src/app/components/PageWrapper/index.ts",["271","272"],"/Users/kellysample/Development/web-example/src/app/containers/Countries/slice.ts",[],{"ruleId":"273","severity":1,"message":"274","line":8,"column":33,"nodeType":null,"endLine":8,"endColumn":34,"fix":"275"},{"ruleId":"273","severity":1,"message":"274","line":9,"column":35,"nodeType":null,"endLine":9,"endColumn":36,"fix":"276"},{"ruleId":"273","severity":1,"message":"274","line":11,"column":31,"nodeType":null,"endLine":11,"endColumn":32,"fix":"277"},{"ruleId":"273","severity":1,"message":"274","line":12,"column":38,"nodeType":null,"endLine":12,"endColumn":39,"fix":"278"},{"ruleId":"273","severity":1,"message":"274","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"279"},{"ruleId":"273","severity":1,"message":"274","line":14,"column":48,"nodeType":null,"endLine":14,"endColumn":49,"fix":"280"},{"ruleId":"273","severity":1,"message":"274","line":15,"column":47,"nodeType":null,"endLine":15,"endColumn":48,"fix":"281"},{"ruleId":"273","severity":1,"message":"274","line":18,"column":35,"nodeType":null,"endLine":18,"endColumn":36,"fix":"282"},{"ruleId":"273","severity":1,"message":"274","line":20,"column":26,"nodeType":null,"endLine":20,"endColumn":27,"fix":"283"},{"ruleId":"273","severity":1,"message":"274","line":22,"column":52,"nodeType":null,"endLine":22,"endColumn":53,"fix":"284"},{"ruleId":"273","severity":1,"message":"274","line":24,"column":57,"nodeType":null,"endLine":24,"endColumn":58,"fix":"285"},{"ruleId":"273","severity":1,"message":"274","line":26,"column":59,"nodeType":null,"endLine":26,"endColumn":60,"fix":"286"},{"ruleId":"273","severity":1,"message":"274","line":29,"column":24,"nodeType":null,"endLine":29,"endColumn":25,"fix":"287"},{"ruleId":"273","severity":1,"message":"274","line":33,"column":59,"nodeType":null,"endLine":33,"endColumn":60,"fix":"288"},{"ruleId":"273","severity":1,"message":"274","line":37,"column":44,"nodeType":null,"endLine":37,"endColumn":45,"fix":"289"},{"ruleId":"273","severity":1,"message":"274","line":38,"column":3,"nodeType":null,"endLine":38,"endColumn":4,"fix":"290"},{"ruleId":"273","severity":1,"message":"274","line":40,"column":34,"nodeType":null,"endLine":40,"endColumn":35,"fix":"291"},{"ruleId":"273","severity":1,"message":"274","line":41,"column":66,"nodeType":null,"endLine":41,"endColumn":67,"fix":"292"},{"ruleId":"273","severity":1,"message":"274","line":54,"column":2,"nodeType":null,"endLine":54,"endColumn":3,"fix":"293"},{"ruleId":"273","severity":1,"message":"274","line":60,"column":5,"nodeType":null,"endLine":60,"endColumn":6,"fix":"294"},{"ruleId":"273","severity":1,"message":"274","line":66,"column":27,"nodeType":null,"endLine":66,"endColumn":28,"fix":"295"},{"ruleId":"296","replacedBy":"297"},{"ruleId":"298","replacedBy":"299"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":30,"nodeType":null,"endLine":1,"endColumn":31,"fix":"300"},{"ruleId":"273","severity":1,"message":"274","line":2,"column":49,"nodeType":null,"endLine":2,"endColumn":50,"fix":"301"},{"ruleId":"273","severity":1,"message":"274","line":3,"column":64,"nodeType":null,"endLine":3,"endColumn":65,"fix":"302"},{"ruleId":"273","severity":1,"message":"274","line":5,"column":39,"nodeType":null,"endLine":5,"endColumn":40,"fix":"303"},{"ruleId":"273","severity":1,"message":"274","line":6,"column":39,"nodeType":null,"endLine":6,"endColumn":40,"fix":"304"},{"ruleId":"273","severity":1,"message":"274","line":7,"column":61,"nodeType":null,"endLine":7,"endColumn":62,"fix":"305"},{"ruleId":"273","severity":1,"message":"274","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"306"},{"ruleId":"273","severity":1,"message":"274","line":19,"column":32,"nodeType":null,"endLine":19,"endColumn":33,"fix":"307"},{"ruleId":"273","severity":1,"message":"274","line":38,"column":5,"nodeType":null,"endLine":38,"endColumn":6,"fix":"308"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":69,"nodeType":null,"endLine":1,"endColumn":70,"fix":"309"},{"ruleId":"273","severity":1,"message":"274","line":7,"column":82,"nodeType":null,"endLine":7,"endColumn":83,"fix":"310"},{"ruleId":"273","severity":1,"message":"274","line":21,"column":65,"nodeType":null,"endLine":21,"endColumn":66,"fix":"311"},{"ruleId":"273","severity":1,"message":"274","line":23,"column":31,"nodeType":null,"endLine":23,"endColumn":32,"fix":"312"},{"ruleId":"273","severity":1,"message":"274","line":28,"column":8,"nodeType":null,"endLine":28,"endColumn":9,"fix":"313"},{"ruleId":"273","severity":1,"message":"274","line":30,"column":45,"nodeType":null,"endLine":30,"endColumn":46,"fix":"314"},{"ruleId":"273","severity":1,"message":"274","line":32,"column":5,"nodeType":null,"endLine":32,"endColumn":6,"fix":"315"},{"ruleId":"273","severity":1,"message":"274","line":33,"column":2,"nodeType":null,"endLine":33,"endColumn":3,"fix":"316"},{"ruleId":"273","severity":1,"message":"274","line":21,"column":2,"nodeType":null,"endLine":21,"endColumn":3,"fix":"317"},{"ruleId":"273","severity":1,"message":"274","line":24,"column":64,"nodeType":null,"endLine":24,"endColumn":65,"fix":"318"},{"ruleId":"273","severity":1,"message":"274","line":25,"column":63,"nodeType":null,"endLine":25,"endColumn":64,"fix":"319"},{"ruleId":"273","severity":1,"message":"274","line":26,"column":2,"nodeType":null,"endLine":26,"endColumn":3,"fix":"320"},{"ruleId":"273","severity":1,"message":"274","line":31,"column":76,"nodeType":null,"endLine":31,"endColumn":77,"fix":"321"},{"ruleId":"273","severity":1,"message":"274","line":36,"column":13,"nodeType":null,"endLine":36,"endColumn":14,"fix":"322"},{"ruleId":"273","severity":1,"message":"274","line":40,"column":66,"nodeType":null,"endLine":40,"endColumn":67,"fix":"323"},{"ruleId":"273","severity":1,"message":"274","line":44,"column":47,"nodeType":null,"endLine":44,"endColumn":48,"fix":"324"},{"ruleId":"273","severity":1,"message":"274","line":52,"column":12,"nodeType":null,"endLine":52,"endColumn":13,"fix":"325"},{"ruleId":"273","severity":1,"message":"274","line":53,"column":11,"nodeType":null,"endLine":53,"endColumn":12,"fix":"326"},{"ruleId":"273","severity":1,"message":"274","line":56,"column":39,"nodeType":null,"endLine":56,"endColumn":40,"fix":"327"},{"ruleId":"273","severity":1,"message":"274","line":58,"column":7,"nodeType":null,"endLine":58,"endColumn":8,"fix":"328"},{"ruleId":"273","severity":1,"message":"274","line":67,"column":57,"nodeType":null,"endLine":67,"endColumn":58,"fix":"329"},{"ruleId":"273","severity":1,"message":"274","line":69,"column":17,"nodeType":null,"endLine":69,"endColumn":18,"fix":"330"},{"ruleId":"273","severity":1,"message":"274","line":80,"column":16,"nodeType":null,"endLine":80,"endColumn":17,"fix":"331"},{"ruleId":"273","severity":1,"message":"274","line":84,"column":46,"nodeType":null,"endLine":84,"endColumn":47,"fix":"332"},{"ruleId":"273","severity":1,"message":"274","line":90,"column":64,"nodeType":null,"endLine":90,"endColumn":65,"fix":"333"},{"ruleId":"273","severity":1,"message":"274","line":94,"column":47,"nodeType":null,"endLine":94,"endColumn":48,"fix":"334"},{"ruleId":"273","severity":1,"message":"274","line":98,"column":10,"nodeType":null,"endLine":98,"endColumn":11,"fix":"335"},{"ruleId":"273","severity":1,"message":"274","line":99,"column":8,"nodeType":null,"endLine":99,"endColumn":9,"fix":"336"},{"ruleId":"273","severity":1,"message":"274","line":102,"column":72,"nodeType":null,"endLine":102,"endColumn":73,"fix":"337"},{"ruleId":"273","severity":1,"message":"274","line":103,"column":7,"nodeType":null,"endLine":103,"endColumn":8,"fix":"338"},{"ruleId":"273","severity":1,"message":"274","line":113,"column":63,"nodeType":null,"endLine":113,"endColumn":64,"fix":"339"},{"ruleId":"273","severity":1,"message":"274","line":121,"column":37,"nodeType":null,"endLine":121,"endColumn":38,"fix":"340"},{"ruleId":"273","severity":1,"message":"274","line":122,"column":13,"nodeType":null,"endLine":122,"endColumn":14,"fix":"341"},{"ruleId":"273","severity":1,"message":"274","line":123,"column":11,"nodeType":null,"endLine":123,"endColumn":12,"fix":"342"},{"ruleId":"273","severity":1,"message":"274","line":126,"column":39,"nodeType":null,"endLine":126,"endColumn":40,"fix":"343"},{"ruleId":"273","severity":1,"message":"274","line":132,"column":8,"nodeType":null,"endLine":132,"endColumn":9,"fix":"344"},{"ruleId":"273","severity":1,"message":"274","line":133,"column":7,"nodeType":null,"endLine":133,"endColumn":8,"fix":"345"},{"ruleId":"273","severity":1,"message":"274","line":140,"column":34,"nodeType":null,"endLine":140,"endColumn":35,"fix":"346"},{"ruleId":"273","severity":1,"message":"274","line":143,"column":37,"nodeType":null,"endLine":143,"endColumn":38,"fix":"347"},{"ruleId":"273","severity":1,"message":"274","line":144,"column":9,"nodeType":null,"endLine":144,"endColumn":10,"fix":"348"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":72,"nodeType":null,"endLine":1,"endColumn":73,"fix":"349"},{"ruleId":"273","severity":1,"message":"274","line":2,"column":58,"nodeType":null,"endLine":2,"endColumn":59,"fix":"350"},{"ruleId":"273","severity":1,"message":"274","line":3,"column":46,"nodeType":null,"endLine":3,"endColumn":47,"fix":"351"},{"ruleId":"273","severity":1,"message":"274","line":5,"column":43,"nodeType":null,"endLine":5,"endColumn":44,"fix":"352"},{"ruleId":"273","severity":1,"message":"274","line":8,"column":37,"nodeType":null,"endLine":8,"endColumn":38,"fix":"353"},{"ruleId":"273","severity":1,"message":"274","line":9,"column":71,"nodeType":null,"endLine":9,"endColumn":72,"fix":"354"},{"ruleId":"273","severity":1,"message":"274","line":10,"column":42,"nodeType":null,"endLine":10,"endColumn":43,"fix":"355"},{"ruleId":"273","severity":1,"message":"274","line":13,"column":39,"nodeType":null,"endLine":13,"endColumn":40,"fix":"356"},{"ruleId":"273","severity":1,"message":"274","line":20,"column":4,"nodeType":null,"endLine":20,"endColumn":5,"fix":"357"},{"ruleId":"273","severity":1,"message":"274","line":30,"column":5,"nodeType":null,"endLine":30,"endColumn":6,"fix":"358"},{"ruleId":"273","severity":1,"message":"274","line":32,"column":15,"nodeType":null,"endLine":32,"endColumn":16,"fix":"359"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":31,"nodeType":null,"endLine":1,"endColumn":32,"fix":"360"},{"ruleId":"273","severity":1,"message":"274","line":2,"column":75,"nodeType":null,"endLine":2,"endColumn":76,"fix":"361"},{"ruleId":"273","severity":1,"message":"274","line":3,"column":42,"nodeType":null,"endLine":3,"endColumn":43,"fix":"362"},{"ruleId":"273","severity":1,"message":"274","line":4,"column":62,"nodeType":null,"endLine":4,"endColumn":63,"fix":"363"},{"ruleId":"273","severity":1,"message":"274","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"364"},{"ruleId":"273","severity":1,"message":"274","line":8,"column":61,"nodeType":null,"endLine":8,"endColumn":62,"fix":"365"},{"ruleId":"273","severity":1,"message":"274","line":10,"column":41,"nodeType":null,"endLine":10,"endColumn":42,"fix":"366"},{"ruleId":"273","severity":1,"message":"274","line":15,"column":4,"nodeType":null,"endLine":15,"endColumn":5,"fix":"367"},{"ruleId":"273","severity":1,"message":"274","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"368"},{"ruleId":"273","severity":1,"message":"274","line":5,"column":51,"nodeType":null,"endLine":5,"endColumn":52,"fix":"369"},{"ruleId":"273","severity":1,"message":"274","line":7,"column":68,"nodeType":null,"endLine":7,"endColumn":69,"fix":"370"},{"ruleId":"273","severity":1,"message":"274","line":15,"column":26,"nodeType":null,"endLine":15,"endColumn":27,"fix":"371"},{"ruleId":"273","severity":1,"message":"274","line":19,"column":7,"nodeType":null,"endLine":19,"endColumn":8,"fix":"372"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":78,"nodeType":null,"endLine":1,"endColumn":79,"fix":"373"},{"ruleId":"273","severity":1,"message":"274","line":2,"column":51,"nodeType":null,"endLine":2,"endColumn":52,"fix":"374"},{"ruleId":"273","severity":1,"message":"274","line":3,"column":34,"nodeType":null,"endLine":3,"endColumn":35,"fix":"375"},{"ruleId":"273","severity":1,"message":"274","line":4,"column":60,"nodeType":null,"endLine":4,"endColumn":61,"fix":"376"},{"ruleId":"273","severity":1,"message":"274","line":5,"column":34,"nodeType":null,"endLine":5,"endColumn":35,"fix":"377"},{"ruleId":"273","severity":1,"message":"274","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"378"},{"ruleId":"273","severity":1,"message":"274","line":16,"column":38,"nodeType":null,"endLine":16,"endColumn":39,"fix":"379"},{"ruleId":"273","severity":1,"message":"274","line":19,"column":3,"nodeType":null,"endLine":19,"endColumn":4,"fix":"380"},{"ruleId":"273","severity":1,"message":"274","line":25,"column":55,"nodeType":null,"endLine":25,"endColumn":56,"fix":"381"},{"ruleId":"273","severity":1,"message":"274","line":27,"column":34,"nodeType":null,"endLine":27,"endColumn":35,"fix":"382"},{"ruleId":"273","severity":1,"message":"274","line":29,"column":2,"nodeType":null,"endLine":29,"endColumn":3,"fix":"383"},{"ruleId":"273","severity":1,"message":"274","line":34,"column":2,"nodeType":null,"endLine":34,"endColumn":3,"fix":"384"},{"ruleId":"273","severity":1,"message":"274","line":36,"column":50,"nodeType":null,"endLine":36,"endColumn":51,"fix":"385"},{"ruleId":"273","severity":1,"message":"274","line":37,"column":42,"nodeType":null,"endLine":37,"endColumn":43,"fix":"386"},{"ruleId":"273","severity":1,"message":"274","line":38,"column":45,"nodeType":null,"endLine":38,"endColumn":46,"fix":"387"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":54,"nodeType":null,"endLine":1,"endColumn":55,"fix":"388"},{"ruleId":"273","severity":1,"message":"274","line":2,"column":50,"nodeType":null,"endLine":2,"endColumn":51,"fix":"389"},{"ruleId":"273","severity":1,"message":"274","line":36,"column":2,"nodeType":null,"endLine":36,"endColumn":3,"fix":"390"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":39,"nodeType":null,"endLine":1,"endColumn":40,"fix":"391"},{"ruleId":"273","severity":1,"message":"274","line":6,"column":14,"nodeType":null,"endLine":6,"endColumn":15,"fix":"392"},{"ruleId":"273","severity":1,"message":"274","line":9,"column":70,"nodeType":null,"endLine":9,"endColumn":71,"fix":"393"},{"ruleId":"273","severity":1,"message":"274","line":16,"column":11,"nodeType":null,"endLine":16,"endColumn":12,"fix":"394"},{"ruleId":"273","severity":1,"message":"274","line":9,"column":2,"nodeType":null,"endLine":9,"endColumn":3,"fix":"395"},{"ruleId":"273","severity":1,"message":"274","line":11,"column":38,"nodeType":null,"endLine":11,"endColumn":39,"fix":"396"},{"ruleId":"273","severity":1,"message":"274","line":16,"column":2,"nodeType":null,"endLine":16,"endColumn":3,"fix":"397"},{"ruleId":"273","severity":1,"message":"274","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"398"},{"ruleId":"273","severity":1,"message":"274","line":6,"column":42,"nodeType":null,"endLine":6,"endColumn":43,"fix":"399"},{"ruleId":"273","severity":1,"message":"274","line":7,"column":67,"nodeType":null,"endLine":7,"endColumn":68,"fix":"400"},{"ruleId":"273","severity":1,"message":"274","line":15,"column":2,"nodeType":null,"endLine":15,"endColumn":3,"fix":"401"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":46,"nodeType":null,"endLine":1,"endColumn":47,"fix":"402"},{"ruleId":"273","severity":1,"message":"274","line":4,"column":28,"nodeType":null,"endLine":4,"endColumn":29,"fix":"403"},{"ruleId":"273","severity":1,"message":"274","line":6,"column":61,"nodeType":null,"endLine":6,"endColumn":62,"fix":"404"},{"ruleId":"273","severity":1,"message":"274","line":16,"column":62,"nodeType":null,"endLine":16,"endColumn":63,"fix":"405"},{"ruleId":"273","severity":1,"message":"274","line":20,"column":71,"nodeType":null,"endLine":20,"endColumn":72,"fix":"406"},{"ruleId":"273","severity":1,"message":"274","line":23,"column":42,"nodeType":null,"endLine":23,"endColumn":43,"fix":"407"},{"ruleId":"273","severity":1,"message":"274","line":29,"column":4,"nodeType":null,"endLine":29,"endColumn":5,"fix":"408"},{"ruleId":"273","severity":1,"message":"274","line":30,"column":2,"nodeType":null,"endLine":30,"endColumn":3,"fix":"409"},{"ruleId":"273","severity":1,"message":"274","line":4,"column":25,"nodeType":null,"endLine":4,"endColumn":26,"fix":"410"},{"ruleId":"273","severity":1,"message":"274","line":9,"column":34,"nodeType":null,"endLine":9,"endColumn":35,"fix":"411"},{"ruleId":"273","severity":1,"message":"274","line":16,"column":28,"nodeType":null,"endLine":16,"endColumn":29,"fix":"412"},{"ruleId":"273","severity":1,"message":"274","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"413"},{"ruleId":"273","severity":1,"message":"274","line":2,"column":28,"nodeType":null,"endLine":2,"endColumn":29,"fix":"414"},{"ruleId":"273","severity":1,"message":"274","line":5,"column":31,"nodeType":null,"endLine":5,"endColumn":32,"fix":"415"},{"ruleId":"273","severity":1,"message":"274","line":6,"column":29,"nodeType":null,"endLine":6,"endColumn":30,"fix":"416"},{"ruleId":"273","severity":1,"message":"274","line":18,"column":16,"nodeType":null,"endLine":18,"endColumn":17,"fix":"417"},{"ruleId":"273","severity":1,"message":"274","line":20,"column":25,"nodeType":null,"endLine":20,"endColumn":26,"fix":"418"},{"ruleId":"273","severity":1,"message":"274","line":32,"column":20,"nodeType":null,"endLine":32,"endColumn":21,"fix":"419"},{"ruleId":"273","severity":1,"message":"274","line":34,"column":44,"nodeType":null,"endLine":34,"endColumn":45,"fix":"420"},{"ruleId":"273","severity":1,"message":"274","line":35,"column":28,"nodeType":null,"endLine":35,"endColumn":29,"fix":"421"},{"ruleId":"273","severity":1,"message":"274","line":36,"column":14,"nodeType":null,"endLine":36,"endColumn":15,"fix":"422"},{"ruleId":"273","severity":1,"message":"274","line":51,"column":50,"nodeType":null,"endLine":51,"endColumn":51,"fix":"423"},{"ruleId":"273","severity":1,"message":"274","line":52,"column":46,"nodeType":null,"endLine":52,"endColumn":47,"fix":"424"},{"ruleId":"273","severity":1,"message":"274","line":53,"column":29,"nodeType":null,"endLine":53,"endColumn":30,"fix":"425"},{"ruleId":"273","severity":1,"message":"274","line":1,"column":45,"nodeType":null,"endLine":1,"endColumn":46,"fix":"426"},{"ruleId":"273","severity":1,"message":"274","line":8,"column":2,"nodeType":null,"endLine":8,"endColumn":3,"fix":"427"},"prettier/prettier","Delete `;`",{"range":"428","text":"429"},{"range":"430","text":"429"},{"range":"431","text":"429"},{"range":"432","text":"429"},{"range":"433","text":"429"},{"range":"434","text":"429"},{"range":"435","text":"429"},{"range":"436","text":"429"},{"range":"437","text":"429"},{"range":"438","text":"429"},{"range":"439","text":"429"},{"range":"440","text":"429"},{"range":"441","text":"429"},{"range":"442","text":"429"},{"range":"443","text":"429"},{"range":"444","text":"429"},{"range":"445","text":"429"},{"range":"446","text":"429"},{"range":"447","text":"429"},{"range":"448","text":"429"},{"range":"449","text":"429"},"no-native-reassign",["450"],"no-negated-in-lhs",["451"],{"range":"452","text":"429"},{"range":"453","text":"429"},{"range":"454","text":"429"},{"range":"455","text":"429"},{"range":"456","text":"429"},{"range":"457","text":"429"},{"range":"458","text":"429"},{"range":"459","text":"429"},{"range":"460","text":"429"},{"range":"461","text":"429"},{"range":"462","text":"429"},{"range":"463","text":"429"},{"range":"464","text":"429"},{"range":"465","text":"429"},{"range":"466","text":"429"},{"range":"467","text":"429"},{"range":"468","text":"429"},{"range":"469","text":"429"},{"range":"470","text":"429"},{"range":"471","text":"429"},{"range":"472","text":"429"},{"range":"473","text":"429"},{"range":"474","text":"429"},{"range":"475","text":"429"},{"range":"476","text":"429"},{"range":"477","text":"429"},{"range":"478","text":"429"},{"range":"479","text":"429"},{"range":"480","text":"429"},{"range":"481","text":"429"},{"range":"482","text":"429"},{"range":"483","text":"429"},{"range":"484","text":"429"},{"range":"485","text":"429"},{"range":"486","text":"429"},{"range":"487","text":"429"},{"range":"488","text":"429"},{"range":"489","text":"429"},{"range":"490","text":"429"},{"range":"491","text":"429"},{"range":"492","text":"429"},{"range":"493","text":"429"},{"range":"494","text":"429"},{"range":"495","text":"429"},{"range":"496","text":"429"},{"range":"497","text":"429"},{"range":"498","text":"429"},{"range":"499","text":"429"},{"range":"500","text":"429"},{"range":"501","text":"429"},{"range":"502","text":"429"},{"range":"503","text":"429"},{"range":"504","text":"429"},{"range":"505","text":"429"},{"range":"506","text":"429"},{"range":"507","text":"429"},{"range":"508","text":"429"},{"range":"509","text":"429"},{"range":"510","text":"429"},{"range":"511","text":"429"},{"range":"512","text":"429"},{"range":"513","text":"429"},{"range":"514","text":"429"},{"range":"515","text":"429"},{"range":"516","text":"429"},{"range":"517","text":"429"},{"range":"518","text":"429"},{"range":"519","text":"429"},{"range":"520","text":"429"},{"range":"521","text":"429"},{"range":"522","text":"429"},{"range":"523","text":"429"},{"range":"524","text":"429"},{"range":"525","text":"429"},{"range":"526","text":"429"},{"range":"527","text":"429"},{"range":"528","text":"429"},{"range":"529","text":"429"},{"range":"530","text":"429"},{"range":"531","text":"429"},{"range":"532","text":"429"},{"range":"533","text":"429"},{"range":"534","text":"429"},{"range":"535","text":"429"},{"range":"536","text":"429"},{"range":"537","text":"429"},{"range":"538","text":"429"},{"range":"539","text":"429"},{"range":"540","text":"429"},{"range":"541","text":"429"},{"range":"542","text":"429"},{"range":"543","text":"429"},{"range":"544","text":"429"},{"range":"545","text":"429"},{"range":"546","text":"429"},{"range":"547","text":"429"},{"range":"548","text":"429"},{"range":"549","text":"429"},{"range":"550","text":"429"},{"range":"551","text":"429"},{"range":"552","text":"429"},{"range":"553","text":"429"},{"range":"554","text":"429"},{"range":"555","text":"429"},{"range":"556","text":"429"},{"range":"557","text":"429"},{"range":"558","text":"429"},{"range":"559","text":"429"},{"range":"560","text":"429"},{"range":"561","text":"429"},{"range":"562","text":"429"},{"range":"563","text":"429"},{"range":"564","text":"429"},{"range":"565","text":"429"},{"range":"566","text":"429"},{"range":"567","text":"429"},{"range":"568","text":"429"},{"range":"569","text":"429"},{"range":"570","text":"429"},{"range":"571","text":"429"},{"range":"572","text":"429"},{"range":"573","text":"429"},{"range":"574","text":"429"},{"range":"575","text":"429"},{"range":"576","text":"429"},{"range":"577","text":"429"},{"range":"578","text":"429"},{"range":"579","text":"429"},[140,141],"",[176,177],[209,210],[248,249],[288,289],[337,338],[385,386],[448,449],[476,477],[530,531],[589,590],[650,651],[700,701],[876,877],[1026,1027],[1030,1031],[1066,1067],[1133,1134],[1371,1372],[1561,1562],[1797,1798],"no-global-assign","no-unsafe-negation",[29,30],[79,80],[144,145],[185,186],[225,226],[287,288],[393,394],[527,528],[1122,1123],[68,69],[385,386],[864,865],[937,938],[1055,1056],[1114,1115],[1126,1127],[1129,1130],[902,903],[984,985],[1048,1049],[1051,1052],[1325,1326],[1636,1637],[1754,1755],[1922,1923],[2275,2276],[2287,2288],[2400,2401],[2416,2417],[2658,2659],[2716,2717],[3296,3297],[3425,3426],[3705,3706],[3836,3837],[3889,3890],[3898,3899],[4000,4001],[4008,4009],[4390,4391],[4747,4748],[4761,4762],[4773,4774],[4880,4881],[5015,5016],[5023,5024],[5194,5195],[5265,5266],[5275,5276],[71,72],[130,131],[177,178],[222,223],[299,300],[371,372],[414,415],[498,499],[600,601],[886,887],[903,904],[30,31],[106,107],[149,150],[212,213],[264,265],[401,402],[444,445],[575,576],[578,579],[130,131],[200,201],[549,550],[624,625],[77,78],[129,130],[164,165],[225,226],[260,261],[353,354],[535,536],[551,552],[758,759],[799,800],[807,808],[939,940],[991,992],[1034,1035],[1080,1081],[53,54],[104,105],[718,719],[38,39],[196,197],[317,318],[524,525],[274,275],[314,315],[383,384],[94,95],[137,138],[205,206],[352,353],[45,46],[92,93],[156,157],[420,421],[539,540],[587,588],[745,746],[748,749],[95,96],[202,203],[384,385],[471,472],[70,71],[139,140],[169,170],[481,482],[511,512],[866,867],[915,916],[944,945],[959,960],[1353,1354],[1400,1401],[1430,1431],[44,45],[169,170]] \ No newline at end of file diff --git a/src/app/__tests__/__snapshots__/index.test.tsx.snap b/src/app/__tests__/__snapshots__/index.test.tsx.snap deleted file mode 100644 index d44ae9f..0000000 --- a/src/app/__tests__/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,33 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[` should render and match the snapshot 1`] = ` - - - - - - - - - - -`; diff --git a/src/app/__tests__/index.test.tsx b/src/app/__tests__/index.test.tsx deleted file mode 100644 index 7d3cd5b..0000000 --- a/src/app/__tests__/index.test.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react'; -import { createRenderer } from 'react-test-renderer/shallow'; - -import { App } from '../index'; - -const renderer = createRenderer(); - -describe('', () => { - it('should render and match the snapshot', () => { - renderer.render(); - const renderedOutput = renderer.getRenderOutput(); - expect(renderedOutput).toMatchSnapshot(); - }); -}); diff --git a/src/app/components/A/__tests__/index.test.tsx b/src/app/components/A/__tests__/index.test.tsx deleted file mode 100644 index dd1cfcc..0000000 --- a/src/app/components/A/__tests__/index.test.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import * as React from 'react'; -import { render } from '@testing-library/react'; - -import { A } from '../index'; -import { themes } from 'styles/theme/themes'; -import { DefaultTheme } from 'styled-components'; - -const renderWithTheme = (theme?: DefaultTheme) => - render(); - -describe('', () => { - it('should render an tag', () => { - const a = renderWithTheme(); - expect(a.container.querySelector('a')).toBeInTheDocument(); - }); - - it('should have theme', () => { - const a = renderWithTheme(); - expect(a.container.firstChild).toHaveStyle( - `color: ${themes.light.primary}`, - ); - }); -}); diff --git a/src/app/components/A/index.ts b/src/app/components/A/index.ts deleted file mode 100644 index 389b4aa..0000000 --- a/src/app/components/A/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import styled from 'styled-components/macro'; - -export const A = styled.a` - color: ${p => p.theme.primary}; - text-decoration: none; - - &:hover { - text-decoration: underline; - opacity: 0.8; - } - - &:active { - opacity: 0.4; - } -`; diff --git a/src/app/components/FormLabel/__tests__/index.test.tsx b/src/app/components/FormLabel/__tests__/index.test.tsx deleted file mode 100644 index ae147ba..0000000 --- a/src/app/components/FormLabel/__tests__/index.test.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import * as React from 'react'; -import { render } from '@testing-library/react'; - -import { FormLabel } from '../index'; -import { themes } from 'styles/theme/themes'; -import { DefaultTheme } from 'styled-components'; - -const renderWithTheme = (theme?: DefaultTheme) => - render(); - -describe('', () => { - it('should render an