diff --git a/.eslintrc.back.typescript.js b/.eslintrc.back.typescript.js new file mode 100644 index 0000000000..33936fc8bf --- /dev/null +++ b/.eslintrc.back.typescript.js @@ -0,0 +1,15 @@ +'use strict'; + +module.exports = { + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + /** + * TODO: this should extend @strapi/eslint-config/typescript but doing so requires configuring parserOption.project, which requires tsconfig.json configuration + */ + // extends: ['plugin:@typescript-eslint/recommended'], + globals: { + strapi: false, + }, + // Instead of extending (which includes values that interfere with this configuration), only take the rules field + rules: require('./.eslintrc.back.js').rules, +}; diff --git a/.eslintrc.js b/.eslintrc.js index f3b0af1942..0945f68fbb 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -13,10 +13,20 @@ module.exports = { }, overrides: [ { + // Backend javascript files: ['packages/**/*.js', 'test/**/*.js', 'scripts/**/*.js'], excludedFiles: frontPaths, ...require('./.eslintrc.back.js'), }, + + // Backend typescript + { + files: ['packages/**/*.ts', 'test/**/*.ts', 'scripts/**/*.ts'], + excludedFiles: frontPaths, + ...require('./.eslintrc.back.typescript.js'), + }, + + // Frontend { files: frontPaths, ...require('./.eslintrc.front.js'), diff --git a/package.json b/package.json index b618316b9c..a0004c87b5 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "format": "npm-run-all -p format:*", "format:code": "npm run prettier:code -- --write", "format:other": "npm run prettier:other -- --write", - "prettier:code": "prettier \"**/*.js\"", + "prettier:code": "prettier \"**/*.{js,ts}\"", "prettier:other": "prettier \"**/*.{md,css,scss,yaml,yml}\"", "test:clean": "rimraf ./coverage", "test:front": "npm run test:clean && cross-env IS_EE=true jest --config ./jest.config.front.js", @@ -56,10 +56,10 @@ "doc:api": "node scripts/open-api/serve.js" }, "lint-staged": { - "*.{js,md,css,scss,yaml,yml}": [ + "*.{js,ts,md,css,scss,yaml,yml}": [ "prettier --write" ], - "*.js": [ + "*.{js,ts}": [ "eslint --fix" ] }, @@ -70,12 +70,22 @@ "@strapi/eslint-config": "0.1.2", "@swc/core": "1.2.224", "@swc/jest": "0.2.22", + "@typescript-eslint/eslint-plugin": "5.43.0", + "@typescript-eslint/parser": "5.42.1", "babel-eslint": "10.1.0", "chalk": "4.1.2", "chokidar": "3.5.3", "cross-env": "7.0.3", "dotenv": "14.2.0", "eslint": "8.21.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin": "1.0.1", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-react": "7.31.10", + "eslint-plugin-react-hooks": "4.6.0", "execa": "1.0.0", "fs-extra": "10.1.0", "get-port": "5.1.1", @@ -105,6 +115,7 @@ "stylelint-processor-styled-components": "1.10.0", "supertest": "6.2.4", "ts-jest": "29.0.3", + "typescript": "4.6.2", "yargs": "17.6.0" }, "engines": { diff --git a/packages/core/admin/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/FilterSelect.js b/packages/core/admin/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/FilterSelect.js index 7e846a738f..7cef3641da 100644 --- a/packages/core/admin/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/FilterSelect.js +++ b/packages/core/admin/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/FilterSelect.js @@ -9,6 +9,7 @@ const FilterSelect = ({ message, value, onChange, possibleFilters, onClear, cust return (