Skip to content
8 changes: 4 additions & 4 deletions .eslint-doc-generatorrc.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
'use strict';

const prettier = require('prettier');
import prettier from 'prettier';

/** @type {import('eslint-doc-generator').GenerateOptions} */
module.exports = {
const config = {
ignoreConfig: [
'all',
'all-type-checked',
Expand All @@ -29,3 +27,5 @@ module.exports = {
urlConfigs:
'https://github.com/eslint-community/eslint-plugin-eslint-plugin#presets',
};

export default config;
4 changes: 1 addition & 3 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
'use strict';

module.exports = {
export default {
singleQuote: true,
};
4 changes: 1 addition & 3 deletions commitlint.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
'use strict';

module.exports = { extends: ['@commitlint/config-conventional'] };
export default { extends: ['@commitlint/config-conventional'] };
6 changes: 3 additions & 3 deletions configs/all-type-checked.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
* @author 唯然<[email protected]>
*/

'use strict';
import plugin from '../lib/index.js';

const plugin = require('../lib/index.js');
const config = plugin.configs['flat/all-type-checked'];

module.exports = plugin.configs['flat/all-type-checked'];
export default config;
6 changes: 3 additions & 3 deletions configs/all.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
* @author 唯然<[email protected]>
*/

'use strict';
import plugin from '../lib/index.js';

const plugin = require('../lib/index.js');
const config = plugin.configs['flat/all'];

module.exports = plugin.configs['flat/all'];
export default config;
6 changes: 3 additions & 3 deletions configs/recommended.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
* @author 唯然<[email protected]>
*/

'use strict';
import plugin from '../lib/index.js';

const plugin = require('../lib/index.js');
const config = plugin.configs['flat/recommended'];

module.exports = plugin.configs['flat/recommended'];
export default config;
6 changes: 3 additions & 3 deletions configs/rules-recommended.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
* @author 唯然<[email protected]>
*/

'use strict';
import plugin from '../lib/index.js';

const plugin = require('../lib/index.js');
const config = plugin.configs['flat/rules-recommended'];

module.exports = plugin.configs['flat/rules-recommended'];
export default config;
6 changes: 3 additions & 3 deletions configs/rules.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
* @author 唯然<[email protected]>
*/

'use strict';
import plugin from '../lib/index.js';

const plugin = require('../lib/index.js');
const config = plugin.configs['flat/rules'];

module.exports = plugin.configs['flat/rules'];
export default config;
6 changes: 3 additions & 3 deletions configs/tests-recommended.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
* @author 唯然<[email protected]>
*/

'use strict';
import plugin from '../lib/index.js';

const plugin = require('../lib/index.js');
const config = plugin.configs['flat/tests-recommended'];

module.exports = plugin.configs['flat/tests-recommended'];
export default config;
6 changes: 3 additions & 3 deletions configs/tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
* @author 唯然<[email protected]>
*/

'use strict';
import plugin from '../lib/index.js';

const plugin = require('../lib/index.js');
const config = plugin.configs['flat/tests'];

module.exports = plugin.configs['flat/tests'];
export default config;
19 changes: 10 additions & 9 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
'use strict';

const js = require('@eslint/js');
const { FlatCompat } = require('@eslint/eslintrc');
const markdown = require('eslint-plugin-markdown');
const pluginN = require('eslint-plugin-n');
const eslintPluginConfig = require('eslint-plugin-eslint-plugin/configs/all');
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import js from '@eslint/js';
import { FlatCompat } from '@eslint/eslintrc';
import markdown from 'eslint-plugin-markdown';
import pluginN from 'eslint-plugin-n';
import eslintPluginConfig from 'eslint-plugin-eslint-plugin/configs/all';

const dirname = path.dirname(fileURLToPath(import.meta.url));
const compat = new FlatCompat({
baseDirectory: __dirname,
baseDirectory: dirname,
recommendedConfig: js.configs.recommended,
});

module.exports = [
export default [
...compat.extends(
'not-an-aardvark/node',
'plugin:@eslint-community/eslint-comments/recommended',
Expand Down
85 changes: 69 additions & 16 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,44 @@
* @author Teddy Katz
*/

'use strict';

// ------------------------------------------------------------------------------
// Requirements
// ------------------------------------------------------------------------------

const fs = require('fs');
const path = require('path');
const packageMetadata = require('../package');
import packageMetadata from '../package.json' with { type: 'json' };
import consistentOutput from './rules/consistent-output.js';
import fixerReturn from './rules/fixer-return.js';
import metaPropertyOrdering from './rules/meta-property-ordering.js';
import noDeprecatedContextMethods from './rules/no-deprecated-context-methods.js';
import noDeprecatedReportApi from './rules/no-deprecated-report-api.js';
import noIdenticalTests from './rules/no-identical-tests.js';
import noMetaReplacedBy from './rules/no-meta-replaced-by.js';
import noMetaSchemaDefault from './rules/no-meta-schema-default.js';
import noMissingMessageIds from './rules/no-missing-message-ids.js';
import noMissingPlaceholders from './rules/no-missing-placeholders.js';
import noOnlyTests from './rules/no-only-tests.js';
import noPropertyInNode from './rules/no-property-in-node.js';
import noUnusedMessageIds from './rules/no-unused-message-ids.js';
import noUnusedPlaceholders from './rules/no-unused-placeholders.js';
import noUselessTokenRange from './rules/no-useless-token-range.js';
import preferMessageIds from './rules/prefer-message-ids.js';
import preferObjectRule from './rules/prefer-object-rule.js';
import preferOutputNull from './rules/prefer-output-null.js';
import preferPlaceholders from './rules/prefer-placeholders.js';
import preferReplaceText from './rules/prefer-replace-text.js';
import reportMessageFormat from './rules/report-message-format.js';
import requireMetaDefaultOptions from './rules/require-meta-default-options.js';
import requireMetaDocsDescription from './rules/require-meta-docs-description.js';
import requireMetaDocsRecommended from './rules/require-meta-docs-recommended.js';
import requireMetaDocsUrl from './rules/require-meta-docs-url.js';
import requireMetaFixable from './rules/require-meta-fixable.js';
import requireMetaHasSuggestions from './rules/require-meta-has-suggestions.js';
import requireMetaSchemaDescription from './rules/require-meta-schema-description.js';
import requireMetaSchema from './rules/require-meta-schema.js';
import requireMetaType from './rules/require-meta-type.js';
import testCasePropertyOrdering from './rules/test-case-property-ordering.js';
import testCaseShorthandStrings from './rules/test-case-shorthand-strings.js';

const PLUGIN_NAME = packageMetadata.name.replace(/^eslint-plugin-/, '');

const configFilters = {
Expand All @@ -31,16 +60,40 @@ const configFilters = {
// ------------------------------------------------------------------------------

// import all rules in lib/rules
const allRules = Object.fromEntries(
fs
.readdirSync(`${__dirname}/rules`)
.filter((fileName) => fileName.endsWith('.js') && /^[^._]/.test(fileName))
.map((fileName) => fileName.replace(/\.js$/, ''))
.map((ruleName) => [
ruleName,
require(path.join(__dirname, 'rules', ruleName)),
]),
);
const allRules = {
'consistent-output': consistentOutput,
'fixer-return': fixerReturn,
'meta-property-ordering': metaPropertyOrdering,
'no-deprecated-context-methods': noDeprecatedContextMethods,
'no-deprecated-report-api': noDeprecatedReportApi,
'no-identical-tests': noIdenticalTests,
'no-meta-replaced-by': noMetaReplacedBy,
'no-meta-schema-default': noMetaSchemaDefault,
'no-missing-message-ids': noMissingMessageIds,
'no-missing-placeholders': noMissingPlaceholders,
'no-only-tests': noOnlyTests,
'no-property-in-node': noPropertyInNode,
'no-unused-message-ids': noUnusedMessageIds,
'no-unused-placeholders': noUnusedPlaceholders,
'no-useless-token-range': noUselessTokenRange,
'prefer-message-ids': preferMessageIds,
'prefer-object-rule': preferObjectRule,
'prefer-output-null': preferOutputNull,
'prefer-placeholders': preferPlaceholders,
'prefer-replace-text': preferReplaceText,
'report-message-format': reportMessageFormat,
'require-meta-default-options': requireMetaDefaultOptions,
'require-meta-docs-description': requireMetaDocsDescription,
'require-meta-docs-recommended': requireMetaDocsRecommended,
'require-meta-docs-url': requireMetaDocsUrl,
'require-meta-fixable': requireMetaFixable,
'require-meta-has-suggestions': requireMetaHasSuggestions,
'require-meta-schema-description': requireMetaSchemaDescription,
'require-meta-schema': requireMetaSchema,
'require-meta-type': requireMetaType,
'test-case-property-ordering': testCasePropertyOrdering,
'test-case-shorthand-strings': testCaseShorthandStrings,
};

/** @type {import("eslint").ESLint.Plugin} */
const plugin = {
Expand Down Expand Up @@ -87,4 +140,4 @@ Object.assign(
}, {}),
);

module.exports = plugin;
export default plugin;
8 changes: 4 additions & 4 deletions lib/rules/consistent-output.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
* @author Teddy Katz
*/

'use strict';

const utils = require('../utils');
import * as utils from '../utils.js';

// ------------------------------------------------------------------------------
// Rule Definition
// ------------------------------------------------------------------------------

/** @type {import('eslint').Rule.RuleModule} */
module.exports = {
const rule = {
meta: {
type: 'suggestion',
docs: {
Expand Down Expand Up @@ -71,3 +69,5 @@ module.exports = {
};
},
};

export default rule;
10 changes: 5 additions & 5 deletions lib/rules/fixer-return.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,19 @@
* @author 薛定谔的猫<[email protected]>
*/

'use strict';

// ------------------------------------------------------------------------------
// Requirements
// ------------------------------------------------------------------------------

const utils = require('../utils');
const { getStaticValue } = require('@eslint-community/eslint-utils');
import * as utils from '../utils.js';
import { getStaticValue } from '@eslint-community/eslint-utils';

// ------------------------------------------------------------------------------
// Rule Definition
// ------------------------------------------------------------------------------

/** @type {import('eslint').Rule.RuleModule} */
module.exports = {
const rule = {
meta: {
type: 'problem',
docs: {
Expand Down Expand Up @@ -167,3 +165,5 @@ module.exports = {
};
},
};

export default rule;
7 changes: 4 additions & 3 deletions lib/rules/meta-property-ordering.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@
* @fileoverview Enforces the order of meta properties
*/

'use strict';
import * as utils from '../utils.js';

const utils = require('../utils');
const { getKeyName, getRuleInfo } = utils;

const defaultOrder = [
Expand All @@ -24,7 +23,7 @@ const defaultOrder = [
// ------------------------------------------------------------------------------

/** @type {import('eslint').Rule.RuleModule} */
module.exports = {
const rule = {
meta: {
type: 'suggestion',
docs: {
Expand Down Expand Up @@ -111,3 +110,5 @@ module.exports = {
};
},
};

export default rule;
8 changes: 4 additions & 4 deletions lib/rules/no-deprecated-context-methods.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
* @author Teddy Katz
*/

'use strict';

const utils = require('../utils');
import * as utils from '../utils.js';

const DEPRECATED_PASSTHROUGHS = {
getSource: 'getText',
Expand Down Expand Up @@ -35,7 +33,7 @@ const DEPRECATED_PASSTHROUGHS = {
// ------------------------------------------------------------------------------

/** @type {import('eslint').Rule.RuleModule} */
module.exports = {
const rule = {
meta: {
type: 'suggestion',
docs: {
Expand Down Expand Up @@ -96,3 +94,5 @@ module.exports = {
};
},
};

export default rule;
8 changes: 4 additions & 4 deletions lib/rules/no-deprecated-report-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
* @author Teddy Katz
*/

'use strict';

const utils = require('../utils');
import * as utils from '../utils.js';

// ------------------------------------------------------------------------------
// Rule Definition
// ------------------------------------------------------------------------------

/** @type {import('eslint').Rule.RuleModule} */
module.exports = {
const rule = {
meta: {
type: 'suggestion',
docs: {
Expand Down Expand Up @@ -81,3 +79,5 @@ module.exports = {
};
},
};

export default rule;
Loading