Skip to content

Commit

Permalink
Convert ESLint plugins to CommonJS (#14180)
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Mar 3, 2022
1 parent a38d54c commit 9e9301d
Show file tree
Hide file tree
Showing 35 changed files with 117 additions and 118 deletions.
2 changes: 1 addition & 1 deletion constraints.pro
Expand Up @@ -80,9 +80,9 @@ gen_enforced_field(WorkspaceCwd, 'exports', '{ ".": "./lib/index.js", "./package
\+ workspace_field(WorkspaceCwd, 'private', true),
% Exclude packages with more complex `exports`
workspace_ident(WorkspaceCwd, WorkspaceIdent),
WorkspaceIdent \= '@babel/eslint-parser',
WorkspaceIdent \= '@babel/compat-data',
WorkspaceIdent \= '@babel/plugin-transform-react-jsx', % TODO: Remove in Babel 8
WorkspaceIdent \= '@babel/helper-plugin-test-runner', % TODO: Remove in Babel 8
WorkspaceIdent \= '@babel/standalone',
\+ atom_concat('@babel/eslint-', _, WorkspaceIdent),
\+ atom_concat('@babel/runtime', _, WorkspaceIdent).
Expand Up @@ -2,7 +2,7 @@
"name": "@babel/eslint-plugin-development-internal",
"version": "7.16.10",
"description": "The Babel Team's ESLint custom rules plugin. Since it's internal, it might not respect semver.",
"main": "./lib/index.js",
"main": "./lib/index.cjs",
"keywords": [
"babel",
"eslint",
Expand Down
12 changes: 12 additions & 0 deletions eslint/babel-eslint-plugin-development-internal/src/index.cjs
@@ -0,0 +1,12 @@
const dryErrorMessages = require("./rules/dry-error-messages.cjs");
const reportErrorMessageFormat = require("./rules/report-error-message-format.cjs");

const rules = {
"dry-error-messages": dryErrorMessages,
"report-error-message-format": reportErrorMessageFormat,
};

exports.rules = rules;
if (!process.env.BABEL_8_BREAKING) {
exports.default = { rules };
}
9 changes: 0 additions & 9 deletions eslint/babel-eslint-plugin-development-internal/src/index.ts

This file was deleted.

@@ -1,4 +1,4 @@
import path from "path";
const path = require("path");

const REL_PATH_REGEX = /^\.{1,2}/;

Expand Down Expand Up @@ -99,7 +99,7 @@ function referencesImportedBinding(node, scope, bindings) {
return false;
}

export default {
module.exports = {
meta: {
type: "suggestion",
docs: {
Expand Down
Expand Up @@ -2,7 +2,7 @@ const messageId = "mustMatchPattern";

const pattern = /(('.*')|(`.*`)|[A-Z]).*(\.|\?)$/s;

export default {
module.exports = {
meta: {
type: "suggestion",
docs: {
Expand Down
@@ -1,5 +1,5 @@
import path from "path";
import rule from "../../lib/rules/dry-error-messages.js";
import rule from "../../lib/rules/dry-error-messages.cjs";
import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester.js";
import { fileURLToPath } from "url";

Expand All @@ -12,7 +12,7 @@ const MODULE_PARENT_DIR = path.resolve(dirname, "test/errorsModule.js");

const ruleTester = new RuleTester();

ruleTester.run("dry-error-messages", rule.default, {
ruleTester.run("dry-error-messages", rule, {
valid: [
// Ignores malformed `this.raise` invocations.
{
Expand Down
@@ -1,9 +1,9 @@
import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester.js";
import rule from "../../lib/rules/report-error-message-format.js";
import rule from "../../lib/rules/report-error-message-format.cjs";

const ruleTester = new RuleTester();

ruleTester.run("report-error-message-format", rule.default, {
ruleTester.run("report-error-message-format", rule, {
valid: [
"makeErrorTemplates({});",
'makeErrorTemplates({ ThisIsAnError: "This is an error." });',
Expand Down
4 changes: 2 additions & 2 deletions eslint/babel-eslint-plugin-development/package.json
Expand Up @@ -8,10 +8,10 @@
"eslint-plugin"
],
"author": "The Babel Team (https://babel.dev/team)",
"main": "./lib/index.js",
"main": "./lib/index.cjs",
"type": "commonjs",
"exports": {
".": "./lib/index.js",
".": "./lib/index.cjs",
"./package.json": "./package.json"
},
"engines": {
Expand Down
14 changes: 14 additions & 0 deletions eslint/babel-eslint-plugin-development/src/index.cjs
@@ -0,0 +1,14 @@
const noDeprecatedClone = require("./rules/no-deprecated-clone.cjs");
const noUndefinedIdentifier = require("./rules/no-undefined-identifier.cjs");
const pluginName = require("./rules/plugin-name.cjs");

const rules = {
"no-deprecated-clone": noDeprecatedClone,
"no-undefined-identifier": noUndefinedIdentifier,
"plugin-name": pluginName,
};

exports.rules = rules;
if (!process.env.BABEL_8_BREAKING) {
exports.default = { rules };
}
11 changes: 0 additions & 11 deletions eslint/babel-eslint-plugin-development/src/index.ts

This file was deleted.

@@ -1,7 +1,7 @@
import getReferenceOrigin from "../utils/get-reference-origin";
import isFromBabelTypes from "../utils/is-from-babel-types";
const getReferenceOrigin = require("../utils/get-reference-origin.cjs");
const isFromBabelTypes = require("../utils/is-from-babel-types.cjs");

export default {
module.exports = {
meta: {
schema: [],
fixable: "code",
Expand Down
@@ -1,5 +1,5 @@
import getReferenceOrigin from "../utils/get-reference-origin";
import isFromBabelTypes from "../utils/is-from-babel-types";
const getReferenceOrigin = require("../utils/get-reference-origin.cjs");
const isFromBabelTypes = require("../utils/is-from-babel-types.cjs");

function firstArgumentIsUndefinedString(argumentsArray) {
return (
Expand All @@ -9,7 +9,7 @@ function firstArgumentIsUndefinedString(argumentsArray) {
);
}

export default {
module.exports = {
meta: {
schema: [],
},
Expand Down
@@ -1,4 +1,4 @@
import isBabelPluginFactory from "../utils/is-babel-plugin-factory";
const isBabelPluginFactory = require("../utils/is-babel-plugin-factory.cjs");

function getReturnValue(node) {
const { body } = node;
Expand All @@ -12,7 +12,7 @@ function getReturnValue(node) {
return body;
}

export default {
module.exports = {
meta: {
schema: [],
},
Expand Down
@@ -1,4 +1,4 @@
export default function getExportName(node) {
module.exports = function getExportName(node) {
const { parent } = node;

if (parent.type === "ExportDefaultDeclaration") {
Expand All @@ -19,4 +19,4 @@ export default function getExportName(node) {
) {
return "module.exports";
}
}
};
Expand Up @@ -22,7 +22,7 @@ type ReferenceOrigin =
// from.
// It resolves imports, parameters of exported functions and property accesses.
// See the ReferenceOrigin type for more information.
export default function getReferenceOrigin(
module.exports = function getReferenceOrigin(
node,
scope,
) /*: ?ReferenceOrigin */ {
Expand Down Expand Up @@ -69,7 +69,7 @@ export default function getReferenceOrigin(
}

return null;
}
};

function getVariableDefinition(name, scope) {
let currentScope = scope;
Expand Down
@@ -1,7 +1,7 @@
import getReferenceOrigin from "./get-reference-origin";
import getExportName from "./get-export-name";
const getReferenceOrigin = require("./get-reference-origin.cjs");
const getExportName = require("./get-export-name.cjs");

export default function isBabelPluginFactory(node, scope) {
module.exports = function isBabelPluginFactory(node, scope) {
const { parent } = node;

if (parent.type === "CallExpression") {
Expand All @@ -21,4 +21,4 @@ export default function isBabelPluginFactory(node, scope) {
// export default function ({ types: t }) {}
// module.exports = function ({ types: t }) {}
return exportName === "default" || exportName === "module.exports";
}
};
@@ -1,8 +1,8 @@
import isBabelPluginFactory from "./is-babel-plugin-factory";
const isBabelPluginFactory = require("./is-babel-plugin-factory.cjs");

// Check if a ReferenceOrigin (returned by ./get-reference-origin.js)
// is a reference to a @babel/types export.
export default function isFromBabelTypes(
module.exports = function isFromBabelTypes(
origin /*: ReferenceOrigin */,
scope /*: Scope */,
) {
Expand Down Expand Up @@ -30,4 +30,4 @@ export default function isFromBabelTypes(
}

return false;
}
};
@@ -1,4 +1,4 @@
import rule from "../../lib/rules/no-deprecated-clone.js";
import rule from "../../lib/rules/no-deprecated-clone.cjs";
import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester.js";

const cloneError = "t.clone() is deprecated. Use t.cloneNode() instead.";
Expand All @@ -9,7 +9,7 @@ const ruleTester = new RuleTester({
parserOptions: { sourceType: "module" },
});

ruleTester.run("no-deprecated-clone", rule.default, {
ruleTester.run("no-deprecated-clone", rule, {
valid: [
`_.clone(obj)`,
`_.cloneDeep(obj)`,
Expand Down
@@ -1,4 +1,4 @@
import rule from "../../lib/rules/no-undefined-identifier.js";
import rule from "../../lib/rules/no-undefined-identifier.cjs";
import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester.js";

const error =
Expand All @@ -8,7 +8,7 @@ const ruleTester = new RuleTester({
parserOptions: { sourceType: "module" },
});

ruleTester.run("no-undefined-identifier", rule.default, {
ruleTester.run("no-undefined-identifier", rule, {
valid: [
`_.identifier("undefined")`,
`_.Identifier("undefined")`,
Expand Down
@@ -1,12 +1,12 @@
import rule from "../../lib/rules/plugin-name.js";
import rule from "../../lib/rules/plugin-name.cjs";
import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester.js";

const missingPluginError = "This file does not export a Babel plugin.";
const missingNameError = "This Babel plugin doesn't have a 'name' property.";

const ruleTester = new RuleTester();

ruleTester.run("plugin-name", rule.default, {
ruleTester.run("plugin-name", rule, {
valid: [
`export default function () { return { name: "test-plugin" } }`,
`import { declare } from "@babel/helper-plugin-utils"; declare(() => { return { name: "test-plugin" } })`,
Expand Down
4 changes: 2 additions & 2 deletions eslint/babel-eslint-plugin/package.json
Expand Up @@ -2,10 +2,10 @@
"name": "@babel/eslint-plugin",
"version": "7.16.5",
"description": "Companion rules for @babel/eslint-parser",
"main": "./lib/index.js",
"main": "./lib/index.cjs",
"type": "commonjs",
"exports": {
".": "./lib/index.js",
".": "./lib/index.cjs",
"./package.json": "./package.json"
},
"publishConfig": {
Expand Down
28 changes: 28 additions & 0 deletions eslint/babel-eslint-plugin/src/index.cjs
@@ -0,0 +1,28 @@
const newCap = require("./rules/new-cap.cjs");
const noInvalidThis = require("./rules/no-invalid-this.cjs");
const noUnusedExpressions = require("./rules/no-unused-expressions.cjs");
const objectCurlySpacing = require("./rules/object-curly-spacing.cjs");
const semi = require("./rules/semi.cjs");

const rules = {
"new-cap": newCap,
"no-invalid-this": noInvalidThis,
"no-unused-expressions": noUnusedExpressions,
"object-curly-spacing": objectCurlySpacing,
semi,
};

const rulesConfig = {
"new-cap": "off",
"no-invalid-this": "off",
"no-unused-expressions": "off",
"object-curly-spacing": "off",
semi: "off",
};

exports.rules = rules;
exports.rulesConfig = rulesConfig;

if (!process.env.BABEL_8_BREAKING) {
exports.default = { rules, rulesConfig };
}
23 changes: 0 additions & 23 deletions eslint/babel-eslint-plugin/src/index.ts

This file was deleted.

@@ -1,5 +1,5 @@
import ruleComposer from "eslint-rule-composer";
import eslint from "eslint";
const ruleComposer = require("eslint-rule-composer");
const eslint = require("eslint");

const rule = new eslint.Linter().getRules().get("new-cap");

Expand All @@ -12,7 +12,7 @@ function isDecorator(node) {
return node.parent.type === "Decorator";
}

export default ruleComposer.filterReports(
module.exports = ruleComposer.filterReports(
rule,
problem => !isDecorator(problem.node),
);
@@ -1,9 +1,9 @@
import ruleComposer from "eslint-rule-composer";
import eslint from "eslint";
const ruleComposer = require("eslint-rule-composer");
const eslint = require("eslint");

const noInvalidThisRule = new eslint.Linter().getRules().get("no-invalid-this");

export default ruleComposer.filterReports(noInvalidThisRule, problem => {
module.exports = ruleComposer.filterReports(noInvalidThisRule, problem => {
let inClassMember = false;
let node = problem.node;

Expand Down
@@ -1,5 +1,5 @@
import ruleComposer from "eslint-rule-composer";
import eslint from "eslint";
const ruleComposer = require("eslint-rule-composer");
const eslint = require("eslint");

const rule = new eslint.Linter().getRules().get("no-unused-expressions");

Expand Down Expand Up @@ -58,7 +58,7 @@ function isOptionalCallExpression(node) {
);
}

export default ruleComposer.filterReports(
module.exports = ruleComposer.filterReports(
rule,
problem =>
!isInDoStatement(problem.node) && !isOptionalCallExpression(problem.node),
Expand Down

0 comments on commit 9e9301d

Please sign in to comment.