From 5d86ffb26c123413b4001bc23a18bbb6dac2fb47 Mon Sep 17 00:00:00 2001 From: Julien Papini Date: Tue, 2 Jul 2024 16:23:05 +0200 Subject: [PATCH] feat(eslint): better member ordering --- .changeset/loud-poets-glow.md | 5 ++ packages/eslint-config/index.js | 141 +++++++++++++++++++++++++++++++- 2 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 .changeset/loud-poets-glow.md diff --git a/.changeset/loud-poets-glow.md b/.changeset/loud-poets-glow.md new file mode 100644 index 0000000..a1c23d4 --- /dev/null +++ b/.changeset/loud-poets-glow.md @@ -0,0 +1,5 @@ +--- +'@jpapini/eslint-config': minor +--- + +Better member ordering. diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js index c3a700c..8ac648b 100644 --- a/packages/eslint-config/index.js +++ b/packages/eslint-config/index.js @@ -88,8 +88,6 @@ const config = { '@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true }], // Enforces usage of `type` keyword instead of `interface` keyword. '@typescript-eslint/consistent-type-definitions': ['error', 'type'], - // Enforces class members declaration order. - '@typescript-eslint/member-ordering': 'error', // Require that function overload signatures be consecutive. '@typescript-eslint/adjacent-overload-signatures': 'error', // Require consistently using either T[] or Array for arrays. @@ -157,6 +155,145 @@ const config = { prefix: ['I'], }, ], + // Enforces class members declaration order. + '@typescript-eslint/member-ordering': [ + 'error', + { + default: [ + // Index signature + 'signature', + 'call-signature', + + // Fields + 'public-static-field', + 'protected-static-field', + 'private-static-field', + '#private-static-field', + + 'public-instance-field', + 'protected-instance-field', + 'private-instance-field', + '#private-instance-field', + + 'public-abstract-field', + 'protected-abstract-field', + + 'public-field', + 'protected-field', + 'private-field', + '#private-field', + + 'static-field', + 'instance-field', + 'abstract-field', + + 'field', + + // Static initialization + 'static-initialization', + + // Constructors + 'public-constructor', + 'protected-constructor', + 'private-constructor', + + 'constructor', + + // Accessors + 'public-static-accessor', + 'protected-static-accessor', + 'private-static-accessor', + '#private-static-accessor', + + 'public-instance-accessor', + 'protected-instance-accessor', + 'private-instance-accessor', + '#private-instance-accessor', + + 'public-abstract-accessor', + 'protected-abstract-accessor', + + 'public-accessor', + 'protected-accessor', + 'private-accessor', + '#private-accessor', + + 'static-accessor', + 'instance-accessor', + 'abstract-accessor', + + 'accessor', + + // Getters / Setters + 'public-static-get', + 'public-static-set', + 'protected-static-get', + 'protected-static-set', + 'private-static-get', + 'private-static-set', + '#private-static-get', + '#private-static-set', + + 'public-instance-get', + 'public-instance-set', + 'protected-instance-get', + 'protected-instance-set', + 'private-instance-get', + 'private-instance-set', + '#private-instance-get', + '#private-instance-set', + + 'public-abstract-get', + 'public-abstract-set', + 'protected-abstract-get', + 'protected-abstract-set', + + 'public-get', + 'public-set', + 'protected-get', + 'protected-set', + 'private-get', + 'private-set', + '#private-get', + '#private-set', + + 'static-get', + 'static-set', + 'instance-get', + 'instance-set', + 'abstract-get', + 'abstract-set', + + 'get', + 'set', + + // Methods + 'public-static-method', + 'protected-static-method', + 'private-static-method', + '#private-static-method', + + 'public-instance-method', + 'protected-instance-method', + 'private-instance-method', + '#private-instance-method', + + 'public-abstract-method', + 'protected-abstract-method', + + 'public-method', + 'protected-method', + 'private-method', + '#private-method', + + 'static-method', + 'instance-method', + 'abstract-method', + + 'method', + ], + }, + ], }, }, {