diff --git a/.eslintrc b/.eslintrc index a493496..1844717 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,8 +1,22 @@ { - "extends": "airbnb", - "ecmaFeatures": { - "jsx": true, - "modules": true + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "prettier" + ], + "plugins": [ + "react" + ], + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + "modules": true + } + }, + "settings": { + "react": { + "version": "detect" + } }, "env": { "browser": true, @@ -10,13 +24,11 @@ }, "parser": "babel-eslint", "rules": { - "quotes": [2, "single"], "react/jsx-uses-react": 2, "react/jsx-uses-vars": 2, "react/react-in-jsx-scope": 2, + "react/jsx-no-target-blank": 1, "comma-dangle": [2, "never"], - "space-after-keywords": [2, "never"], - "react/jsx-quotes": [2, "single"], "react/prop-types": 0, "no-use-before-define": 0, "padded-blocks": 0, @@ -24,10 +36,7 @@ "min": 3, "max": 30, "properties": "never", - "exceptions": ["x", "y", "vx", "vy", "id", "i", "e", "fn"] + "exceptions": ["x", "y", "vx", "vy", "id", "i", "e", "fn", "_"] }] - }, - "plugins": [ - "react" - ] + } } diff --git a/components/EmailComponent.jsx b/components/EmailComponent.jsx index 6cdd7aa..ab11279 100644 --- a/components/EmailComponent.jsx +++ b/components/EmailComponent.jsx @@ -1,5 +1,3 @@ -"use strict"; - import React from "react"; export default function EmailComponent() { diff --git a/components/Fader.jsx b/components/Fader.jsx index ab56191..2cbf8ec 100644 --- a/components/Fader.jsx +++ b/components/Fader.jsx @@ -1,5 +1,3 @@ -"use strict"; - import React from "react"; function clamp(min, max, value) { diff --git a/components/Feed.jsx b/components/Feed.jsx index 5b91de4..bb0b290 100644 --- a/components/Feed.jsx +++ b/components/Feed.jsx @@ -1,5 +1,3 @@ -"use strict"; - import React from "react"; import request from "axios"; import _ from "lodash"; diff --git a/components/Footer.jsx b/components/Footer.jsx index 8fc7f45..d8b9b5a 100644 --- a/components/Footer.jsx +++ b/components/Footer.jsx @@ -1,3 +1,4 @@ +import React from "react"; import EmailComponent from "./EmailComponent"; export function Footer() { diff --git a/components/InviteForm.jsx b/components/InviteForm.jsx index 653fe43..df6803c 100644 --- a/components/InviteForm.jsx +++ b/components/InviteForm.jsx @@ -1,5 +1,3 @@ -"use strict"; - import request from "axios"; import React from "react"; import classSet from "classnames"; diff --git a/components/Members.jsx b/components/Members.jsx index 4b9d081..a0abab0 100644 --- a/components/Members.jsx +++ b/components/Members.jsx @@ -1,5 +1,3 @@ -"use strict"; - import React from "react"; import request from "axios"; import _ from "lodash"; diff --git a/components/feed-transformers.js b/components/feed-transformers.js index d357025..b348755 100644 --- a/components/feed-transformers.js +++ b/components/feed-transformers.js @@ -1,5 +1,3 @@ -"use strict"; - import _ from "lodash"; import githubEvent from "parse-github-event"; import twitterText from "twitter-text"; diff --git a/components/membership/MembershipInfoForm.jsx b/components/membership/MembershipInfoForm.jsx index 0d77ba2..4737945 100644 --- a/components/membership/MembershipInfoForm.jsx +++ b/components/membership/MembershipInfoForm.jsx @@ -18,9 +18,10 @@ var fieldNameTranslations = { postcode: { fi: "Postinumero" } }; +const mailValidateRe = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + function validateEmail(email) { - var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return re.test(email); + return mailValidateRe.test(email); } const fieldNames = ["name", "email", "handle", "address", "postcode", "city"]; diff --git a/package.json b/package.json index 1a01b19..18600cf 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "build": "rm -rf public && gulp build", "dev": "SERVER=http://localhost:9000/ ENV=development npm start", "prod": "ENV=production npm start", - "lint": "eslint src" + "lint": "eslint --ext .jsx --ext .js ." }, "dependencies": { "@zeit/next-css": "^1.0.1", @@ -34,6 +34,10 @@ "twitter-text": "^1.11.0" }, "devDependencies": { + "babel-eslint": "^10.0.3", + "eslint": "^6.4.0", + "eslint-config-prettier": "^6.3.0", + "eslint-plugin-react": "^7.14.3", "prettier": "^1.18.2" } } diff --git a/pages/_document.jsx b/pages/_document.jsx index ef683d7..23de78d 100644 --- a/pages/_document.jsx +++ b/pages/_document.jsx @@ -1,3 +1,4 @@ +import React from "react"; import Document, { Html, Head, Main, NextScript } from "next/document"; import { Footer } from "../components/Footer"; import Fader from '../components/Fader'; diff --git a/pages/index.jsx b/pages/index.jsx index 039d634..7856ce4 100644 --- a/pages/index.jsx +++ b/pages/index.jsx @@ -1,3 +1,4 @@ +import React from "react"; import "../styles/style.styl"; import "../styles/icons.less"; import Head from "next/head";