Skip to content

Commit 0ceec43

Browse files
authored
Merge pull request #38 from joshuajaco/eslint-9
Add eslint v9 support
2 parents 606e87f + af855c3 commit 0ceec43

File tree

17 files changed

+1039
-678
lines changed

17 files changed

+1039
-678
lines changed

.eslintrc.json

Lines changed: 0 additions & 28 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ jobs:
2626
- run: pnpm format:check
2727
- run: pnpm lint
2828
- run: pnpm test
29-
- name: Coveralls
30-
uses: coverallsapp/github-action@v2
29+
- uses: coverallsapp/github-action@v2
3130
with:
3231
github-token: ${{ secrets.GITHUB_TOKEN }}

eslint.config.mjs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import js from "@eslint/js";
2+
import node from "eslint-plugin-n";
3+
import eslintPlugin from "eslint-plugin-eslint-plugin";
4+
import prettier from "eslint-config-prettier";
5+
import globals from "globals";
6+
7+
export default [
8+
{ ignores: ["tests/e2e/fixtures"] },
9+
js.configs.recommended,
10+
node.configs["flat/recommended"],
11+
eslintPlugin.configs["flat/all"],
12+
{
13+
linterOptions: { reportUnusedDisableDirectives: true },
14+
rules: {
15+
"arrow-body-style": "warn",
16+
strict: "error",
17+
"n/prefer-global/buffer": "error",
18+
"n/prefer-global/console": "error",
19+
"n/prefer-global/process": "error",
20+
"n/prefer-global/text-decoder": "error",
21+
"n/prefer-global/url": "error",
22+
"n/prefer-global/url-search-params": "error",
23+
"eslint-plugin/require-meta-docs-url": [
24+
"error",
25+
{
26+
pattern:
27+
"https://github.com/joshuajaco/eslint-plugin-workspaces/blob/main/docs/rules/{{name}}.md",
28+
},
29+
],
30+
},
31+
},
32+
{
33+
files: ["**/*.mjs"],
34+
languageOptions: { sourceType: "module" },
35+
},
36+
{
37+
files: ["tests/**/*.js"],
38+
languageOptions: { globals: globals.mocha },
39+
},
40+
prettier,
41+
];

lib/index.js

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,51 @@
11
"use strict";
22

3-
module.exports.rules = {
4-
"no-cross-imports": require("./rules/no-cross-imports"),
5-
"no-relative-imports": require("./rules/no-relative-imports"),
6-
"no-absolute-imports": require("./rules/no-absolute-imports"),
7-
"require-dependency": require("./rules/require-dependency"),
3+
const plugin = {
4+
rules: {
5+
"no-cross-imports": require("./rules/no-cross-imports"),
6+
"no-relative-imports": require("./rules/no-relative-imports"),
7+
"no-absolute-imports": require("./rules/no-absolute-imports"),
8+
"require-dependency": require("./rules/require-dependency"),
9+
},
10+
configs: {
11+
recommended: {
12+
plugins: ["workspaces"],
13+
rules: {
14+
"workspaces/no-relative-imports": "error",
15+
"workspaces/no-absolute-imports": "error",
16+
"workspaces/require-dependency": "error",
17+
},
18+
},
19+
all: {
20+
plugins: ["workspaces"],
21+
rules: {
22+
"workspaces/no-relative-imports": "error",
23+
"workspaces/no-absolute-imports": "error",
24+
"workspaces/require-dependency": "error",
25+
"workspaces/no-cross-imports": "error",
26+
},
27+
},
28+
},
829
};
930

10-
module.exports.configs = {
11-
recommended: {
12-
plugins: ["workspaces"],
31+
Object.assign(plugin.configs, {
32+
"flat/recommended": {
33+
plugins: { workspaces: plugin },
1334
rules: {
1435
"workspaces/no-relative-imports": "error",
1536
"workspaces/no-absolute-imports": "error",
1637
"workspaces/require-dependency": "error",
1738
},
1839
},
19-
all: {
20-
plugins: ["workspaces"],
40+
"flat/all": {
41+
plugins: { workspaces: plugin },
2142
rules: {
2243
"workspaces/no-relative-imports": "error",
2344
"workspaces/no-absolute-imports": "error",
2445
"workspaces/require-dependency": "error",
2546
"workspaces/no-cross-imports": "error",
2647
},
2748
},
28-
};
49+
});
50+
51+
module.exports = plugin;

lib/rules/no-cross-imports.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,21 @@ module.exports.meta = {
2020
additionalProperties: false,
2121
properties: {
2222
allow: {
23+
description:
24+
"single or a list of package names to exclude from this rule",
2325
anyOf: [
2426
{ type: "string" },
2527
{
2628
type: "array",
2729
uniqueItems: true,
28-
items: {
29-
type: "string",
30-
},
30+
items: { type: "string" },
3131
},
3232
],
3333
},
3434
scopes: {
35+
description: "deprecated",
3536
anyOf: [
36-
{ type: "boolean", additionalProperties: false },
37+
{ type: "boolean" },
3738
{
3839
type: "object",
3940
additionalProperties: false,
@@ -47,6 +48,7 @@ module.exports.meta = {
4748
},
4849
},
4950
],
51+
defaultOptions: [{ allow: [], scopes: { enable: false } }],
5052
messages: { noCrossImports: 'Import from package "{{name}}" is not allowed' },
5153
};
5254

package.json

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,27 @@
2828
"scripts": {
2929
"format": "prettier . --write",
3030
"format:check": "prettier . --check",
31-
"lint": "eslint . --ignore-path=.gitignore --max-warnings=0",
32-
"lint:fix": "npm run lint -- --fix",
33-
"test": "nyc -r=lcov -r=text mocha tests --recursive --file tests/setup.js"
31+
"lint": "eslint . --max-warnings=0",
32+
"lint:fix": "pnpm lint --fix",
33+
"test": "nyc -r=lcov -r=text pnpm run \"/^test:.*/\"",
34+
"test:e2e": "mocha tests/e2e/test.js",
35+
"test:rules": "mocha tests/rules --recursive --file tests/setup.js"
3436
},
3537
"dependencies": {
3638
"find-workspaces": "^0.3.1"
3739
},
3840
"devDependencies": {
39-
"@babel/eslint-parser": "^7.25.0",
40-
"eslint": "^8.56.0",
41-
"eslint-config-prettier": "^9.1.0",
42-
"eslint-plugin-eslint-plugin": "^6.2.0",
43-
"eslint-plugin-node": "^11.1.0",
44-
"mocha": "^10.7.0",
45-
"nyc": "^17.0.0",
46-
"prettier": "^3.3.3",
47-
"sinon": "^18.0.0"
41+
"@eslint/js": "^9.27.0",
42+
"eslint": "^9.27.0",
43+
"eslint-config-prettier": "^10.1.5",
44+
"eslint-plugin-eslint-plugin": "^6.4.0",
45+
"eslint-plugin-n": "^17.18.0",
46+
"eslint8": "npm:[email protected]",
47+
"globals": "^16.1.0",
48+
"mocha": "^11.3.0",
49+
"nyc": "^17.1.0",
50+
"prettier": "^3.5.3",
51+
"sinon": "^20.0.0"
4852
},
49-
"packageManager": "pnpm@9.6.0"
53+
"packageManager": "pnpm@10.11.0"
5054
}

0 commit comments

Comments
 (0)