From d428997b3c39d20055f89db78359bdca740dc9cf Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 18 Oct 2024 14:40:46 -0400 Subject: [PATCH 1/6] Provide better gjs/gts config support for eslint 9 --- eslint.config.js | 16 ++++++++++++++++ lib/config.mjs | 28 ++++++++++++++++++++++++++++ package.json | 3 +++ 3 files changed, 47 insertions(+) create mode 100644 lib/config.mjs diff --git a/eslint.config.js b/eslint.config.js index b8f2ef8fb0..cce277179e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -235,4 +235,20 @@ module.exports = [ 'unicorn/filename-case': 'off', }, }, + { + files: ['**/*.mjs'], + languageOptions: { + parser: babelEslintParser, + parserOptions: { + ecmaFeatures: { modules: true }, + ecmaVersion: 2022, + babelOptions: { + configFile: require.resolve('./.babelrc'), + }, + }, + }, + rules: { + 'import/extensions': ['error', 'ignorePackages'], + }, + }, ]; diff --git a/lib/config.mjs b/lib/config.mjs new file mode 100644 index 0000000000..502a5f0d42 --- /dev/null +++ b/lib/config.mjs @@ -0,0 +1,28 @@ +import plugin from './index.js'; +import gjsRules from './recommended-rules-gjs.js'; +import gtsRules from './recommended-rules-gts.js'; +import parser from 'ember-eslint-parser'; + +export const base = { + plugins: { ember: plugin }, +}; + +export const gjs = { + plugins: { ember: plugin }, + files: ['**/*.gjs'], + languageOptions: { + parser, + }, + processor: 'ember/noop', + rules: gjsRules, +}; + +export const gts = { + plugins: { ember: plugin }, + files: ['**/*.gts'], + languageOptions: { + parser, + }, + processor: 'ember/noop', + rules: gtsRules, +}; diff --git a/package.json b/package.json index c674a1827d..7a8e529224 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,9 @@ "license": "MIT", "exports": { ".": "./lib/index.js", + "./config": { + "import": "./lib/config.mjs" + }, "./configs/*": "./lib/config/*.js" }, "main": "./lib/index.js", From b36e51209796529d12254af8247b0784223e6c1e Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:03:48 -0400 Subject: [PATCH 2/6] fix lints --- eslint.config.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/eslint.config.js b/eslint.config.js index cce277179e..42089e2893 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -248,7 +248,17 @@ module.exports = [ }, }, rules: { + // Extensions are required in ESM 'import/extensions': ['error', 'ignorePackages'], + // These don't appear to work correctly + // All these throw on the import of a dependency + 'import/namespace': 'off', + 'import/no-deprecated': 'off', + 'import/default': 'off', + 'import/no-named-as-default': 'off', + 'import/no-named-as-default-member': 'off', + 'import/no-unresalved': 'off', + 'import/no-missing-import': 'off', }, }, ]; From f79557b794e4ee13e29a4752719f69eb6f2c3b80 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:15:11 -0400 Subject: [PATCH 3/6] Align with ecosystem --- lib/{config.mjs => recommended.mjs} | 0 package.json | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename lib/{config.mjs => recommended.mjs} (100%) diff --git a/lib/config.mjs b/lib/recommended.mjs similarity index 100% rename from lib/config.mjs rename to lib/recommended.mjs diff --git a/package.json b/package.json index 7a8e529224..ae7ddf67d5 100644 --- a/package.json +++ b/package.json @@ -23,8 +23,8 @@ "license": "MIT", "exports": { ".": "./lib/index.js", - "./config": { - "import": "./lib/config.mjs" + "./recommended": { + "import": "./lib/recommended.mjs" }, "./configs/*": "./lib/config/*.js" }, From db19149d2c2d2e76beb52cf89c1491974048aa14 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:17:33 -0400 Subject: [PATCH 4/6] Some organization --- lib/recommended.mjs | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/recommended.mjs b/lib/recommended.mjs index 502a5f0d42..078a9d62ad 100644 --- a/lib/recommended.mjs +++ b/lib/recommended.mjs @@ -1,28 +1,41 @@ -import plugin from './index.js'; +import emberPlugin from './index.js'; import gjsRules from './recommended-rules-gjs.js'; import gtsRules from './recommended-rules-gts.js'; -import parser from 'ember-eslint-parser'; +import emberParser from 'ember-eslint-parser'; + +export const plugin = emberPlugin; +export const parser = emberParser; export const base = { - plugins: { ember: plugin }, + plugins: { ember: emberPlugin }, }; export const gjs = { - plugins: { ember: plugin }, + plugins: { ember: emberPlugin }, files: ['**/*.gjs'], languageOptions: { - parser, + parser: emberParser, }, processor: 'ember/noop', rules: gjsRules, }; export const gts = { - plugins: { ember: plugin }, + plugins: { ember: emberPlugin }, files: ['**/*.gts'], languageOptions: { - parser, + parser: emberParser, }, processor: 'ember/noop', rules: gtsRules, }; + +export default { + // Helpful utility exports + plugin, + parser, + // Recommended config sets + base, + gjs, + gts, +}; From 2678bc07e2acd34e01fa739958a5531c3325e0b5 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:56:35 -0400 Subject: [PATCH 5/6] Add base rules to base config --- lib/recommended.mjs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/recommended.mjs b/lib/recommended.mjs index 078a9d62ad..6e646ad371 100644 --- a/lib/recommended.mjs +++ b/lib/recommended.mjs @@ -1,4 +1,5 @@ import emberPlugin from './index.js'; +import baseRules from './recommended-rules.js'; import gjsRules from './recommended-rules-gjs.js'; import gtsRules from './recommended-rules-gts.js'; import emberParser from 'ember-eslint-parser'; @@ -8,6 +9,9 @@ export const parser = emberParser; export const base = { plugins: { ember: emberPlugin }, + rules: { + ...baseRules, + }, }; export const gjs = { @@ -15,9 +19,17 @@ export const gjs = { files: ['**/*.gjs'], languageOptions: { parser: emberParser, + parserOptions: { + ecmaFeatures: { modules: true }, + ecmaVersion: 'latest', + // babel config options should be supplied in the consuming project + }, }, processor: 'ember/noop', - rules: gjsRules, + rules: { + ...base.rules, + ...gjsRules, + }, }; export const gts = { @@ -25,9 +37,13 @@ export const gts = { files: ['**/*.gts'], languageOptions: { parser: emberParser, + // parser options should be supplied in the consuming project }, processor: 'ember/noop', - rules: gtsRules, + rules: { + ...base.rules, + ...gtsRules, + }, }; export default { From f0ca88e40f693632abfe28942d959572e441ad06 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 18 Oct 2024 17:58:30 -0400 Subject: [PATCH 6/6] Put configs under configs key --- lib/recommended.mjs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/recommended.mjs b/lib/recommended.mjs index 6e646ad371..3db25e624c 100644 --- a/lib/recommended.mjs +++ b/lib/recommended.mjs @@ -8,6 +8,7 @@ export const plugin = emberPlugin; export const parser = emberParser; export const base = { + files: ['**/*.{js,ts}'], plugins: { ember: emberPlugin }, rules: { ...baseRules, @@ -37,6 +38,9 @@ export const gts = { files: ['**/*.gts'], languageOptions: { parser: emberParser, + parserOptions: { + extraFileExtensions: ['.gts'], + }, // parser options should be supplied in the consuming project }, processor: 'ember/noop', @@ -51,7 +55,9 @@ export default { plugin, parser, // Recommended config sets - base, - gjs, - gts, + configs: { + base, + gjs, + gts, + }, };