From 85223ca42a998965168429a9d03b0223c3817832 Mon Sep 17 00:00:00 2001 From: Elisha Nuchi <31550519+enuchi@users.noreply.github.com> Date: Sun, 2 Jun 2024 18:01:12 -0400 Subject: [PATCH] Chore: Update eslint configuration (#224) - Update missing dev dependencies - Fix root .eslintrc.json and client and server versions - Add lint.yaml workflow - Remove babel settings - Clean up and fix eslint and ts errors --- .eslintrc.json | 34 +- .github/workflows/lint.yaml | 18 + package.json | 7 +- src/client/.babelrc | 8 - src/client/.eslintrc.json | 33 +- .../dialog-demo-mui/components/FormInput.tsx | 4 +- .../components/SheetEditor.jsx | 52 +- .../dialog-demo-mui/components/SheetTable.tsx | 9 +- .../components/FormInput.tsx | 6 +- src/server/.babelrc | 18 - src/server/.eslintrc.json | 19 +- test/.babelrc | 2 +- test/.eslintrc.json | 9 +- test/global-setup.js | 12 +- test/global-teardown.js | 5 +- test/local-development.test.js | 6 +- test/puppeteer-environment.js | 6 +- vite.config.ts | 9 +- yarn.lock | 1748 ++++++++++++----- 19 files changed, 1411 insertions(+), 594 deletions(-) create mode 100644 .github/workflows/lint.yaml delete mode 100644 src/client/.babelrc delete mode 100644 src/server/.babelrc diff --git a/.eslintrc.json b/.eslintrc.json index 5875fa8..5bff5f7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,31 +1,37 @@ { "root": true, + "parser": "@typescript-eslint/parser", "extends": [ "airbnb-base", "plugin:prettier/recommended", "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:react-hooks/recommended" + "plugin:@typescript-eslint/recommended" ], - "plugins": ["react-refresh", "prettier"], + "plugins": ["prettier", "googleappsscript"], + "env": { + "googleappsscript/googleappsscript": true + }, "rules": { "prettier/prettier": "error", "camelcase": "warn", "import/prefer-default-export": "warn", "import/no-extraneous-dependencies": "warn", "prefer-object-spread": "warn", - "spaced-comment": "off", - "react-refresh/only-export-components": [ - "warn", - { "allowConstantExport": true } + "import/extensions": [ + "error", + "ignorePackages", + { + "js": "never", + "ts": "never" + } ] }, - "parserOptions": { - "babelOptions": { - "configFile": "./dev/.babelrc" - } - }, - "env": { "browser": true, "es2020": true }, "ignorePatterns": ["dist", ".eslintrc.json"], - "parser": "@typescript-eslint/parser" + "settings": { + "import/resolver": { + "node": { + "extensions": [".js", ".ts"] + } + } + } } diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..00ba1e1 --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,18 @@ +name: Lint + +on: [push, pull_request] + +jobs: + lint: + runs-on: macos-13 + timeout-minutes: 8 + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: 20 + - name: Install packages + run: yarn install + - name: Run lint + run: yarn lint diff --git a/package.json b/package.json index 706ad3e..821ba16 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "scripts": { "dev": "vite", + "lint": "eslint .", "test:integration": "jest --forceExit test/local-development.test", "test:integration:extended": "cross-env IS_EXTENDED=true jest --forceExit test/local-development.test", "test:integration:extended:ci-reporter": "cross-env IS_EXTENDED=true jest --forceExit || node test/utils/image-reporter-standalone.js", @@ -48,9 +49,7 @@ "react-transition-group": "^4.4.2" }, "devDependencies": { - "@babel/core": "^7.24.4", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/preset-env": "^7.24.4", + "@babel/preset-env": "^7.24.6", "@google/clasp": "^2.4.2", "@types/expect-puppeteer": "^5.0.0", "@types/jest-environment-puppeteer": "^5.0.2", @@ -69,6 +68,7 @@ "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-googleappsscript": "^1.0.4", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-jest": "^26.5.3", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-react-hooks": "^4.6.0", @@ -83,6 +83,7 @@ "puppeteer": "^14.3.0", "puppeteer-extra": "^3.2.3", "puppeteer-extra-plugin-stealth": "^2.9.0", + "rollup": "^4.18.0", "tailwindcss": "^3.4.3", "typescript": "^5.2.2", "vite": "^5.2.0", diff --git a/src/client/.babelrc b/src/client/.babelrc deleted file mode 100644 index afbad68..0000000 --- a/src/client/.babelrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "presets": ["@babel/react"], - "plugins": [ - "@babel/plugin-proposal-object-rest-spread", - "@babel/plugin-proposal-class-properties", - "@babel/plugin-proposal-optional-chaining" - ] -} diff --git a/src/client/.eslintrc.json b/src/client/.eslintrc.json index 19a12cc..f6719c8 100644 --- a/src/client/.eslintrc.json +++ b/src/client/.eslintrc.json @@ -1,35 +1,24 @@ { "root": true, - "parser": "@babel/eslint-parser", "extends": [ "airbnb-base", "plugin:prettier/recommended", - "plugin:react/recommended" + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react-hooks/recommended" ], - "plugins": ["babel", "react", "prettier"], - "env": { - "browser": true, - "es6": true - }, - "globals": { - "google": false, - "alert": false, - "css": true - }, - "parserOptions": { - "ecmaVersion": 9, - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, + "plugins": ["react-refresh", "prettier"], "rules": { "prettier/prettier": "error", - "react/prop-types": "warn", "camelcase": "warn", "import/prefer-default-export": "warn", "import/no-extraneous-dependencies": "warn", "prefer-object-spread": "warn", + "spaced-comment": "off", + "react-refresh/only-export-components": [ + "warn", + { "allowConstantExport": true } + ], "import/extensions": [ "error", "ignorePackages", @@ -50,5 +39,7 @@ "extensions": [".js", ".jsx", ".ts", ".tsx"] } } - } + }, + "env": { "browser": true, "es2020": true }, + "parser": "@typescript-eslint/parser" } diff --git a/src/client/dialog-demo-mui/components/FormInput.tsx b/src/client/dialog-demo-mui/components/FormInput.tsx index 31bbb1d..8a7afb9 100644 --- a/src/client/dialog-demo-mui/components/FormInput.tsx +++ b/src/client/dialog-demo-mui/components/FormInput.tsx @@ -23,9 +23,7 @@ const FormInput = ({ submitNewSheet }: FormInputProps) => { }; return ( -