From 38fecf32b03bd49891273e8381129450fa93edbf Mon Sep 17 00:00:00 2001 From: Pelle Wessman Date: Mon, 24 Jun 2024 14:50:20 +0200 Subject: [PATCH] fix: make node rules apply to cjs / mjs --- base-configs/additional-rules.js | 33 ------------------------- base-configs/node.js | 42 ++++++++++++++++++++++++++++++++ index.js | 4 ++- 3 files changed, 45 insertions(+), 34 deletions(-) create mode 100644 base-configs/node.js diff --git a/base-configs/additional-rules.js b/base-configs/additional-rules.js index 17a8b1f..3a8bcbb 100644 --- a/base-configs/additional-rules.js +++ b/base-configs/additional-rules.js @@ -1,8 +1,6 @@ // @ts-ignore import esxPlugin from 'eslint-plugin-es-x'; // import importPlugin from 'eslint-plugin-import-x'; -// @ts-ignore -import nPlugin from 'eslint-plugin-n'; // // @ts-ignore // import promisePlugin from 'eslint-plugin-promise'; // @ts-ignore @@ -27,36 +25,6 @@ const additionalCoreRules = { }, }; -/** @satisfies {import('eslint').Linter.FlatConfig[]} */ -const adaptedNodeRules = [ - { - // Remove when https://github.com/eslint-community/eslint-plugin-n/pull/300 is fixed - ignores: ['**/*.cjs', '**/*.mjs'], - ...nPlugin.configs['flat/recommended'], - }, - { - name: '@voxpelli/additional/node', - rules: { - // Overriding - 'n/no-process-exit': 'off', - - // Adding - 'n/prefer-global/console': 'warn', - 'n/prefer-promises/fs': 'warn', - 'n/no-process-env': 'warn', - 'n/no-sync': 'error', - }, - }, - { - name: '@voxpelli/additional/node/ts', - files: ['**/*.ts'], - rules: { - // TODO: Remove when *.js files can be properly resolved from *.d.ts - 'n/no-missing-import': 'off', - }, - }, -]; - /** @satisfies {import('eslint').Linter.FlatConfig[]} */ const adaptedUnicornRules = [ unicornPlugin.configs['flat/recommended'], @@ -84,7 +52,6 @@ const adaptedUnicornRules = [ /** @satisfies {import('eslint').Linter.FlatConfig[]} */ export const additionalRules = [ additionalCoreRules, - ...adaptedNodeRules, ...adaptedUnicornRules, securityPlugin.configs.recommended, // TODO: Add promise plugin once https://github.com/eslint-community/eslint-plugin-promise/issues/449 has been fixed diff --git a/base-configs/node.js b/base-configs/node.js new file mode 100644 index 0000000..f237818 --- /dev/null +++ b/base-configs/node.js @@ -0,0 +1,42 @@ +// @ts-ignore +import nPlugin from 'eslint-plugin-n'; + +/** + * @param {boolean} cjs + * @returns {import('eslint').Linter.FlatConfig[]} + */ +export function nodeRules (cjs) { + return [ + { + ...nPlugin.configs['flat/recommended-module'], + // If CommonJS, only target *.mjs, target everything but *.cjs + ...cjs ? { files: ['**/*.mjs'] } : { ignores: ['**/*.cjs'] }, + }, + { + ...nPlugin.configs['flat/recommended-script'], + // If CommonJS, target everything but *.mjs, else only target *.cjs + ...cjs ? { ignores: ['**/*.mjs'] } : { files: ['**/*.cjs'] }, + }, + { + name: '@voxpelli/additional/node', + rules: { + // Overriding + 'n/no-process-exit': 'off', + + // Adding + 'n/prefer-global/console': 'warn', + 'n/prefer-promises/fs': 'warn', + 'n/no-process-env': 'warn', + 'n/no-sync': 'error', + }, + }, + { + name: '@voxpelli/additional/node/ts', + files: ['**/*.ts'], + rules: { + // TODO: Remove when *.js files can be properly resolved from *.d.ts + 'n/no-missing-import': 'off', + }, + }, + ]; +} diff --git a/index.js b/index.js index 87e03bf..8648a41 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,7 @@ import { additionalRules } from './base-configs/additional-rules.js'; import { esmRules } from './base-configs/esm.js'; import { jsdocRules } from './base-configs/jsdoc.js'; import { mochaRules } from './base-configs/mocha.js'; +import { nodeRules } from './base-configs/node.js'; import { modifiedNeostandardRules } from './base-configs/modified-rules.js'; /** @@ -12,7 +13,7 @@ import { modifiedNeostandardRules } from './base-configs/modified-rules.js'; */ export function voxpelli (options) { const { - cjs, + cjs = false, ignores: rawIgnores, noMocha, ...neostandardOptions @@ -35,6 +36,7 @@ export function voxpelli (options) { ...modifiedNeostandardRules, ...additionalRules, ...jsdocRules, + ...nodeRules(cjs), ...cjs ? [] : esmRules, ...noMocha ? [] : mochaRules, ];