Skip to content

feat: move to ESM only #516

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 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 = {
export default {
ignoreConfig: [
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we need to update this for the jsdoc comment to work properly:

Suggested change
export default {
const config = {

and below:

export default config;

'all',
'all-type-checked',
Expand Down
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;
21 changes: 11 additions & 10 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
'use strict';

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

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
83 changes: 67 additions & 16 deletions lib/index.js
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is generated by hand now? Authors of new rules usually forget to update this kind of thing so just want to confirm tests/index.js verifies everything is included here properly?

Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,43 @@
* @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 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 +59,39 @@ 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-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 +138,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
Loading