Skip to content

Commit

Permalink
fix: make node rules apply to cjs / mjs
Browse files Browse the repository at this point in the history
  • Loading branch information
voxpelli committed Jun 24, 2024
1 parent e51362a commit 38fecf3
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 34 deletions.
33 changes: 0 additions & 33 deletions base-configs/additional-rules.js
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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'],
Expand Down Expand Up @@ -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
Expand Down
42 changes: 42 additions & 0 deletions base-configs/node.js
Original file line number Diff line number Diff line change
@@ -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',
},
},
];
}
4 changes: 3 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';

/**
Expand All @@ -12,7 +13,7 @@ import { modifiedNeostandardRules } from './base-configs/modified-rules.js';
*/
export function voxpelli (options) {
const {
cjs,
cjs = false,
ignores: rawIgnores,
noMocha,
...neostandardOptions
Expand All @@ -35,6 +36,7 @@ export function voxpelli (options) {
...modifiedNeostandardRules,
...additionalRules,
...jsdocRules,
...nodeRules(cjs),
...cjs ? [] : esmRules,
...noMocha ? [] : mochaRules,
];
Expand Down

0 comments on commit 38fecf3

Please sign in to comment.