diff --git a/configs/recommended.js b/configs/recommended.js index 8849592..3e7f25b 100644 --- a/configs/recommended.js +++ b/configs/recommended.js @@ -10,82 +10,82 @@ import _import from 'eslint-plugin-import'; 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, + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, }); const jsRules = { - 'indent': ['warn', 'tab', { - 'SwitchCase': 1, - 'MemberExpression': 1, - 'flatTernaryExpressions': true, - 'ArrayExpression': 'first', - 'ObjectExpression': 'first', - }], - 'eol-last': ['error', 'always'], - 'semi': ['error', 'always'], - 'semi-spacing': ['error', { 'before': false, 'after': true }], - 'quotes': ['warn', 'single'], - 'comma-dangle': ['warn', 'always-multiline'], - 'comma-spacing': ['error', { 'before': false, 'after': true }], - 'array-bracket-spacing': ['error', 'never'], - 'keyword-spacing': ['error', { - 'before': true, - 'after': true, - }], - 'key-spacing': ['error', { - 'beforeColon': false, - 'afterColon': true, - }], - 'arrow-spacing': ['error', { - 'before': true, - 'after': true, - }], - 'brace-style': ['error', '1tbs', { - 'allowSingleLine': true, - }], - 'padded-blocks': ['error', 'never'], - /* TODO: If you do not use path alias, a warning will be issued. + 'indent': ['warn', 'tab', { + 'SwitchCase': 1, + 'MemberExpression': 1, + 'flatTernaryExpressions': true, + 'ArrayExpression': 'first', + 'ObjectExpression': 'first', + }], + 'eol-last': ['error', 'always'], + 'semi': ['error', 'always'], + 'semi-spacing': ['error', { 'before': false, 'after': true }], + 'quotes': ['warn', 'single'], + 'comma-dangle': ['warn', 'always-multiline'], + 'comma-spacing': ['error', { 'before': false, 'after': true }], + 'array-bracket-spacing': ['error', 'never'], + 'keyword-spacing': ['error', { + 'before': true, + 'after': true, + }], + 'key-spacing': ['error', { + 'beforeColon': false, + 'afterColon': true, + }], + 'arrow-spacing': ['error', { + 'before': true, + 'after': true, + }], + 'brace-style': ['error', '1tbs', { + 'allowSingleLine': true, + }], + 'padded-blocks': ['error', 'never'], + /* TODO: If you do not use path alias, a warning will be issued. 'no-restricted-imports': ['warn', { 'patterns': [ ], }], */ - 'eqeqeq': ['error', 'always', { 'null': 'ignore' }], - 'no-multi-spaces': ['error'], - 'no-var': ['error'], - 'prefer-arrow-callback': ['error'], - 'no-throw-literal': ['error'], - 'no-param-reassign': ['warn'], - 'no-constant-condition': ['warn'], - 'no-empty-pattern': ['warn'], - 'no-async-promise-executor': ['off'], - 'no-useless-escape': ['off'], - 'no-multiple-empty-lines': ['error', { 'max': 1 }], - 'no-control-regex': ['warn'], - 'no-empty': ['warn'], - 'no-inner-declarations': ['off'], - 'no-sparse-arrays': ['off'], - 'nonblock-statement-body-position': ['error', 'beside'], - 'object-curly-spacing': ['error', 'always'], - 'space-infix-ops': ['error'], - 'space-before-blocks': ['error', 'always'], - 'padding-line-between-statements': [ - 'error', - { 'blankLine': 'always', 'prev': 'function', 'next': '*' }, - { 'blankLine': 'always', 'prev': '*', 'next': 'function' }, - ], - 'lines-between-class-members': 'off', - 'import/no-unresolved': ['off'], - 'import/no-default-export': ['warn'], - 'import/order': ['warn', { - 'groups': ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'], - }], + 'eqeqeq': ['error', 'always', { 'null': 'ignore' }], + 'no-multi-spaces': ['error'], + 'no-var': ['error'], + 'prefer-arrow-callback': ['error'], + 'no-throw-literal': ['error'], + 'no-param-reassign': ['warn'], + 'no-constant-condition': ['warn'], + 'no-empty-pattern': ['warn'], + 'no-async-promise-executor': ['off'], + 'no-useless-escape': ['off'], + 'no-multiple-empty-lines': ['error', { 'max': 1 }], + 'no-control-regex': ['warn'], + 'no-empty': ['warn'], + 'no-inner-declarations': ['off'], + 'no-sparse-arrays': ['off'], + 'nonblock-statement-body-position': ['error', 'beside'], + 'object-curly-spacing': ['error', 'always'], + 'space-infix-ops': ['error'], + 'space-before-blocks': ['error', 'always'], + 'padding-line-between-statements': [ + 'error', + { 'blankLine': 'always', 'prev': 'function', 'next': '*' }, + { 'blankLine': 'always', 'prev': '*', 'next': 'function' }, + ], + 'lines-between-class-members': 'off', + 'import/no-unresolved': ['off'], + 'import/no-default-export': ['warn'], + 'import/order': ['warn', { + 'groups': ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'], + }], }; const tsRules = { - /* It seems that typescript-eslint does not support enforce. + /* It seems that typescript-eslint does not support enforce. '@typescript-eslint/lines-between-class-members': ['error', { enforce: [{ blankLine: 'always', @@ -94,77 +94,77 @@ const tsRules = { }], }], */ - '@typescript-eslint/func-call-spacing': ['error', 'never'], - '@typescript-eslint/no-explicit-any': ['warn'], - '@typescript-eslint/no-unused-vars': ['warn'], - '@typescript-eslint/no-unnecessary-condition': ['warn'], - '@typescript-eslint/no-var-requires': ['warn'], - '@typescript-eslint/no-inferrable-types': ['warn'], - '@typescript-eslint/no-empty-function': ['off'], - '@typescript-eslint/no-non-null-assertion': ['warn'], - '@typescript-eslint/explicit-function-return-type': ['off'], - '@typescript-eslint/no-misused-promises': ['error', { - 'checksVoidReturn': false, - }], - '@typescript-eslint/consistent-type-imports': 'off', - '@typescript-eslint/prefer-nullish-coalescing': [ - 'warn', - ], - '@typescript-eslint/naming-convention': [ - 'error', - { - 'selector': 'typeLike', - 'format': ['PascalCase'], - }, - { - 'selector': 'typeParameter', - 'format': [], - }, - ], + '@typescript-eslint/func-call-spacing': ['error', 'never'], + '@typescript-eslint/no-explicit-any': ['warn'], + '@typescript-eslint/no-unused-vars': ['warn'], + '@typescript-eslint/no-unnecessary-condition': ['warn'], + '@typescript-eslint/no-var-requires': ['warn'], + '@typescript-eslint/no-inferrable-types': ['warn'], + '@typescript-eslint/no-empty-function': ['off'], + '@typescript-eslint/no-non-null-assertion': ['warn'], + '@typescript-eslint/explicit-function-return-type': ['off'], + '@typescript-eslint/no-misused-promises': ['error', { + 'checksVoidReturn': false, + }], + '@typescript-eslint/consistent-type-imports': 'off', + '@typescript-eslint/prefer-nullish-coalescing': [ + 'warn', + ], + '@typescript-eslint/naming-convention': [ + 'error', + { + 'selector': 'typeLike', + 'format': ['PascalCase'], + }, + { + 'selector': 'typeParameter', + 'format': [], + }, + ], }; export default [ - ...fixupConfigRules(compat.extends( - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - // TODO: When enabled, when you import in a .ts file - // parserPath or languageOptions.parser is required! - // This will appear, so disable the following: - // 'plugin:import/recommended', - 'plugin:import/typescript', - )), - { - files: ['**/*.js', '**/*.cjs', '**/*.mjs', '**/*.jsx'], - plugins: { - import: fixupPluginRules(_import), - }, - settings: { - /** @see https://github.com/import-js/eslint-plugin-import/issues/2556#issuecomment-1419518561 */ - 'import/parsers': { - '@typescript-eslint/parser': ['.js', '.cjs', '.mjs', '.jsx'], - }, - }, - rules: { - ...jsRules, - }, - }, - { - files: ['**/*.ts', '**/*.tsx'], - plugins: { - '@typescript-eslint': fixupPluginRules(typescriptEslint), - import: fixupPluginRules(_import), - }, - languageOptions: { - parser: tsParser, - }, - settings: { - 'import/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx'], - }, - }, - rules: { - ...jsRules, - ...tsRules, - }, - }, -]; \ No newline at end of file + ...fixupConfigRules(compat.extends( + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + // TODO: When enabled, when you import in a .ts file + // parserPath or languageOptions.parser is required! + // This will appear, so disable the following: + // 'plugin:import/recommended', + 'plugin:import/typescript', + )), + { + files: ['**/*.js', '**/*.cjs', '**/*.mjs', '**/*.jsx'], + plugins: { + import: fixupPluginRules(_import), + }, + settings: { + /** @see https://github.com/import-js/eslint-plugin-import/issues/2556#issuecomment-1419518561 */ + 'import/parsers': { + '@typescript-eslint/parser': ['.js', '.cjs', '.mjs', '.jsx'], + }, + }, + rules: { + ...jsRules, + }, + }, + { + files: ['**/*.ts', '**/*.tsx'], + plugins: { + '@typescript-eslint': fixupPluginRules(typescriptEslint), + import: fixupPluginRules(_import), + }, + languageOptions: { + parser: tsParser, + }, + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + }, + rules: { + ...jsRules, + ...tsRules, + }, + }, +]; diff --git a/eslint.config.js b/eslint.config.js index 3a7b1d8..4a2f98e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -29,4 +29,4 @@ export default [ }, }, }, -]; \ No newline at end of file +]; diff --git a/index.js b/index.js index 8452660..2e5b29d 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,16 @@ -module.exports = { +import recommended from './configs/recommended.js'; +// import packageConfig from './package.json' with { type: 'json' }; + +const plugin = { + meta: { + // name: packageConfig.name, + // version: packageConfig.version, + name: '@valkyriecoms/eslint-plugin', + version: '1.0.0', + }, configs: { - recommended: require('./configs/recommended'), + recommended, }, }; + +export default plugin;