From 9f10f390e62d359655828a09b7fa6e05f19de83d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Fran=C3=A7ois?= Date: Thu, 23 Jan 2025 08:20:37 +0100 Subject: [PATCH] :package: migrate to new eslint configuration file --- admin/.eslintignore | 30 ---------- admin/.eslintrc.cjs | 66 -------------------- admin/eslint.config.mjs | 129 ++++++++++++++++++++++++++++++++++++++++ admin/package.json | 2 +- 4 files changed, 130 insertions(+), 97 deletions(-) delete mode 100644 admin/.eslintignore delete mode 100644 admin/.eslintrc.cjs create mode 100644 admin/eslint.config.mjs diff --git a/admin/.eslintignore b/admin/.eslintignore deleted file mode 100644 index 920a697b286..00000000000 --- a/admin/.eslintignore +++ /dev/null @@ -1,30 +0,0 @@ -# https://eslint.org/docs/user-guide/configuring#eslintignore -# .file are implicitly ignored, unless explicitly specified here - -# unconventional js -/blueprints/*/files/ -/vendor/ - -# compiled output -/dist/ -/tmp/ - -# dependencies -/bower_components/ -/node_modules/ - -# misc -/coverage/ -!.* -.*/ -.eslintcache - -# ember-try -/.node_modules.ember-try/ -/bower.json.ember-try -/package.json.ember-try - -# Phrase generated translation files -/translations/*.json -!/translations/en.json -!/translations/fr.json diff --git a/admin/.eslintrc.cjs b/admin/.eslintrc.cjs deleted file mode 100644 index 7f53149f974..00000000000 --- a/admin/.eslintrc.cjs +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; - -module.exports = { - globals: { - server: true, - }, - parser: '@babel/eslint-parser', - parserOptions: { - requireConfigFile: false, - ecmaVersion: 2018, - sourceType: 'module', - babelOptions: { - plugins: [['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }]], - }, - }, - plugins: ['ember', 'qunit'], - extends: ['@1024pix', 'plugin:ember/recommended', 'plugin:qunit/recommended', 'plugin:prettier/recommended'], - env: { - browser: true, - }, - rules: { - 'ember/no-mixins': 'off', - 'no-restricted-imports': ['error', { paths: ['lodash'] }], - 'qunit/require-expect': ['error', 'except-simple'], - }, - overrides: [ - { - files: ['**/*.gjs'], - parser: 'ember-eslint-parser', - plugins: ['ember', 'qunit'], - extends: [ - '@1024pix', - 'plugin:ember/recommended', - 'plugin:ember/recommended-gjs', - 'plugin:qunit/recommended', - 'plugin:prettier/recommended', - ], - }, - // node files - { - files: [ - '.eslintrc.cjs', - '.prettierrc.js', - '.template-lintrc.js', - 'ember-cli-build.js', - 'testem.js', - 'blueprints/*/index.js', - 'config/**/*.js', - 'lib/*/index.js', - 'server/**/*.js', - ], - parserOptions: { - sourceType: 'script', - }, - env: { - browser: false, - node: true, - }, - }, - { - // test files - files: ['tests/**/*-test.{js,ts}'], - extends: ['plugin:qunit/recommended'], - }, - ], -}; diff --git a/admin/eslint.config.mjs b/admin/eslint.config.mjs new file mode 100644 index 00000000000..04f1e9b1b63 --- /dev/null +++ b/admin/eslint.config.mjs @@ -0,0 +1,129 @@ +import ember from 'eslint-plugin-ember'; +import qunit from 'eslint-plugin-qunit'; +import globals from 'globals'; +import babelParser from '@babel/eslint-parser'; +import parser from 'ember-eslint-parser'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import js from '@eslint/js'; +import { FlatCompat } from '@eslint/eslintrc'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default [ + { + ignores: [ + 'blueprints/*/files/', + 'vendor/', + 'dist/', + 'tmp/', + 'bower_components/', + 'node_modules/', + 'coverage/', + '!**/.*', + '**/.*/', + '**/.eslintcache', + '.node_modules.ember-try/', + 'bower.json.ember-try', + 'package.json.ember-try', + 'translations/*.json', + '!translations/en.json', + '!translations/fr.json', + ], + }, + ...compat.extends('@1024pix', 'plugin:ember/recommended', 'plugin:qunit/recommended', 'plugin:prettier/recommended'), + { + plugins: { + ember, + qunit, + }, + + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + parser: babelParser, + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + requireConfigFile: false, + babelOptions: { + plugins: [ + [ + '@babel/plugin-proposal-decorators', + { + decoratorsBeforeExport: true, + }, + ], + ], + }, + }, + }, + + rules: { + 'ember/no-mixins': 'off', + + 'no-restricted-imports': [ + 'error', + { + paths: ['lodash'], + }, + ], + + 'qunit/require-expect': ['error', 'except-simple'], + }, + }, + ...compat + .extends( + '@1024pix', + 'plugin:ember/recommended', + 'plugin:ember/recommended-gjs', + 'plugin:qunit/recommended', + 'plugin:prettier/recommended', + ) + .map((config) => ({ + ...config, + files: ['**/*.gjs'], + })), + { + files: ['**/*.gjs'], + + plugins: { + ember, + qunit, + }, + }, + { + files: [ + '**/.eslintrc.cjs', + '**/.prettierrc.js', + '**/.template-lintrc.js', + '**/ember-cli-build.js', + '**/testem.js', + 'blueprints/*/index.js', + 'config/**/*.js', + 'lib/*/index.js', + 'server/**/*.js', + ], + + languageOptions: { + globals: { + ...globals.node, + }, + + ecmaVersion: 5, + sourceType: 'commonjs', + }, + }, + ...compat.extends('plugin:qunit/recommended').map((config) => ({ + ...config, + files: ['tests/**/*-test.{js,ts}'], + })), +]; diff --git a/admin/package.json b/admin/package.json index dc35f1a8757..3f24785d766 100644 --- a/admin/package.json +++ b/admin/package.json @@ -31,7 +31,7 @@ "lint:js:uncached": "eslint .", "lint:scss": "stylelint app/styles/*.scss 'app/styles/**/*.scss'", "lint:scss:fix": "npm run lint:scss -- --fix", - "lint:translations": "eslint --ext .json --format node_modules/eslint-plugin-i18n-json/formatter.js translations", + "lint:translations": "eslint --format node_modules/eslint-plugin-i18n-json/formatter.js translations", "lint:translations:fix": "npm run lint:translations -- --fix", "preinstall": "npx check-engine", "dev": "ember serve --proxy http://localhost:3000",