Skip to content
Draft
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
1,010 changes: 861 additions & 149 deletions package-lock.json

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
"./packages/*"
],
"devDependencies": {
"eslint-plugin-perfectionist": "^4.12.3",
"lerna": "8.1",
"prettier": "^3.2.5"
}
Expand Down
17 changes: 17 additions & 0 deletions packages/eslint-config/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const { FlatCompat } = require('@eslint/eslintrc');
const js = require('@eslint/js');

const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
});

module.exports = [
...compat.extends('./index.js'),
{
files: ['eslint.config.js'],
rules: {
'import/no-extraneous-dependencies': 'off',
},
},
];
2 changes: 1 addition & 1 deletion packages/eslint-config/esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const config = {
// https://gist.github.com/Jaid/164668c0151ae09d2bc81be78a203dd5
'import/no-commonjs': 'error',

'node/no-extraneous-import': 'error',
'n/no-extraneous-import': 'error',
'unicorn/prefer-module': 'error',
'unicorn/prefer-node-protocol': 'error',
},
Expand Down
8 changes: 4 additions & 4 deletions packages/eslint-config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const config = {
'plugin:you-dont-need-lodash-underscore/compatible',
'prettier',
],
plugins: ['node', 'unicorn'],
plugins: ['n', 'unicorn'],
rules: {
'arrow-body-style': 'off', // This rule clashes with our Prettier config.

Expand Down Expand Up @@ -50,9 +50,9 @@ const config = {
// acceptable.
'no-shadow': ['error', { allow: ['err'] }],

'node/no-deprecated-api': 'error',
'node/no-exports-assign': 'error',
'node/no-extraneous-require': 'error',
'n/no-deprecated-api': 'error',
'n/no-exports-assign': 'error',
'n/no-extraneous-require': 'error',

'prefer-arrow-callback': 'off', // This rule clashes with our Prettier config.
'prefer-destructuring': 'off',
Expand Down
8 changes: 6 additions & 2 deletions packages/eslint-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"eslint-plugin-jest-dom": "^5.2.0",
"eslint-plugin-jest-formatting": "^3.0.0",
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-n": "^17.0.0",
"eslint-plugin-perfectionist": "^4.9.0",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
Expand All @@ -47,12 +47,16 @@
"lodash": "^4.17.21"
},
"peerDependencies": {
"eslint": "^8.0.0",
"eslint": "^9.0.0",
"prettier": "^3.0.0"
},
"devDependencies": {
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "^9.16.0",
"@types/lodash": "^4.17.7",
"eslint": "^9.39.1",
"eslint-define-config": "^2.0.0",
"eslint-plugin-perfectionist": "^4.12.3",
"typescript": "^5.8.3"
}
}
4 changes: 2 additions & 2 deletions packages/eslint-config/testing/common.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/** @type {import("eslint-define-config").ESLintConfig} */
const config = {
plugins: ['import', 'node'],
plugins: ['import', 'n'],
rules: {
// A failing `JSON.parse()` will fail the unit test it's in so it's safe to ignore.
'try-catch-failsafe/json-parse': 'off',
Expand All @@ -9,7 +9,7 @@ const config = {

'import/no-extraneous-dependencies': 'off',

'node/no-extraneous-require': 'off',
'n/no-extraneous-require': 'off',

// Sniff out tests that have useless `async` declarations. Since there's valid usecases for
// having a function be async and not return or await a Promise, we're only running this rule
Expand Down
2 changes: 2 additions & 0 deletions packages/eslint-plugin/.eslint-doc-generatorrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ const config = {
if (page === 'README.md') {
return `https://github.com/readmeio/standards/tree/main/packages/eslint-plugin/docs/rules/${name}.md`;
}

return undefined;
},
};

Expand Down
30 changes: 30 additions & 0 deletions packages/eslint-plugin/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const { FlatCompat } = require('@eslint/eslintrc');
const js = require('@eslint/js');

const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
});

module.exports = [
...compat.extends('@readme/eslint-config'),
{
languageOptions: {
ecmaVersion: 2022,
sourceType: 'commonjs',
},
},
{
files: ['test/**/*.js'],
rules: {
'global-require': 'off',
'import/no-unresolved': 'off',
},
},
{
files: ['eslint.config.js'],
rules: {
'import/no-extraneous-dependencies': 'off',
},
},
];
5 changes: 4 additions & 1 deletion packages/eslint-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,15 @@
"update:docs": "eslint-doc-generator && npx prettier --write docs/rules/*.md *.md"
},
"peerDependencies": {
"eslint": "^8.0.0"
"eslint": "^9.0.0"
},
"devDependencies": {
"@babel/eslint-parser": "^7.27.1",
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "^9.16.0",
"@readme/eslint-config": "file:../eslint-config",
"@typescript-eslint/parser": "^8.24.1",
"eslint": "^9.39.1",
"eslint-doc-generator": "^2.0.2"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ const { RuleTester } = require('eslint');
const { rules } = require('..');

const ruleTester = new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
parserOptions: {
languageOptions: {
parser: require('@typescript-eslint/parser'),
ecmaVersion: 2022,
requireConfigFile: false,
sourceType: 'module',
},
});

Expand Down
10 changes: 7 additions & 3 deletions packages/eslint-plugin/test/no-dual-exports.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@ const { RuleTester } = require('eslint');
const { rules } = require('..');

const ruleTester = new RuleTester({
parser: require.resolve('@babel/eslint-parser'),
parserOptions: {
requireConfigFile: false,
languageOptions: {
parser: require('@babel/eslint-parser'),
ecmaVersion: 'latest',
sourceType: 'module',
parserOptions: {
requireConfigFile: false,
},
},
});

Expand Down
9 changes: 6 additions & 3 deletions packages/eslint-plugin/test/no-wildcard-imports.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ const { RuleTester } = require('eslint');
const { rules } = require('..');

const ruleTester = new RuleTester({
parser: require.resolve('@babel/eslint-parser'),
parserOptions: {
languageOptions: {
parser: require('@babel/eslint-parser'),
ecmaVersion: 2022,
requireConfigFile: false,
sourceType: 'module',
parserOptions: {
requireConfigFile: false,
},
},
});

Expand Down
12 changes: 3 additions & 9 deletions packages/eslint-plugin/test/prefer-javascript.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ const { RuleTester } = require('eslint');
const { rules } = require('..');

const ruleTester = new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
parserOptions: {
languageOptions: {
parser: require('@typescript-eslint/parser'),
ecmaVersion: 2022,
requireConfigFile: false,
sourceType: 'module',
},
});

Expand All @@ -26,37 +26,31 @@ ruleTester.run('prefer-javascript', rules['prefer-javascript'], {
filename: 'file.ts',
code: '/** this is a TS file */',
errors: [{ message: errorMessage }],
output: '/** this is a TS file */',
},
{
filename: 'file.tsx',
code: '/** this is a TSX file */',
errors: [{ message: errorMessage }],
output: '/** this is a TSX file */',
},
{
filename: 'file.cts',
code: '/** this is a CTS file */',
errors: [{ message: errorMessage }],
output: '/** this is a CTS file */',
},
{
filename: 'file.ctsx',
code: '/** this is a CTSX file */',
errors: [{ message: errorMessage }],
output: '/** this is a CTSX file */',
},
{
filename: 'file.mts',
code: '/** this is a MTS file */',
errors: [{ message: errorMessage }],
output: '/** this is a MTS file */',
},
{
filename: 'file.mtsx',
code: '/** this is a MTSX file */',
errors: [{ message: errorMessage }],
output: '/** this is a MTSX file */',
},
],
});
12 changes: 3 additions & 9 deletions packages/eslint-plugin/test/prefer-typescript.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ const { RuleTester } = require('eslint');
const { rules } = require('..');

const ruleTester = new RuleTester({
parser: require.resolve('@typescript-eslint/parser'),
parserOptions: {
languageOptions: {
parser: require('@typescript-eslint/parser'),
ecmaVersion: 2022,
requireConfigFile: false,
sourceType: 'module',
},
});

Expand All @@ -26,37 +26,31 @@ ruleTester.run('prefer-typescript', rules['prefer-typescript'], {
filename: 'file.js',
code: '/** this is a JS file */',
errors: [{ message: errorMessage }],
output: '/** this is a JS file */',
},
{
filename: 'file.jsx',
code: '/** this is a JSX file */',
errors: [{ message: errorMessage }],
output: '/** this is a JSX file */',
},
{
filename: 'file.cjs',
code: '/** this is a CJS file */',
errors: [{ message: errorMessage }],
output: '/** this is a CJS file */',
},
{
filename: 'file.cjsx',
code: '/** this is a CJSX file */',
errors: [{ message: errorMessage }],
output: '/** this is a CJSX file */',
},
{
filename: 'file.mjs',
code: '/** this is a MJS file */',
errors: [{ message: errorMessage }],
output: '/** this is a MJS file */',
},
{
filename: 'file.mjsx',
code: '/** this is a MJSX file */',
errors: [{ message: errorMessage }],
output: '/** this is a MJSX file */',
},
],
});
10 changes: 7 additions & 3 deletions packages/eslint-plugin/test/prefer-unicode-ellipsis.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@ const { RuleTester } = require('eslint');
const { rules } = require('..');

const ruleTester = new RuleTester({
parserOptions: {
ecmaFeatures: {
jsx: true,
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
},
});
Expand Down
1 change: 0 additions & 1 deletion packages/spectral-config/.eslintignore

This file was deleted.

4 changes: 0 additions & 4 deletions packages/spectral-config/.eslintrc

This file was deleted.

16 changes: 16 additions & 0 deletions packages/spectral-config/biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.2/schema.json",
"extends": ["@readme/standards/biome", "@readme/standards/biome/esm"],
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"style": {
"noDefaultExport": "off"
},
"suspicious": {
"noThenProperty": "off"
}
}
}
}
8 changes: 5 additions & 3 deletions packages/spectral-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
},
"scripts": {
"build": "tsup",
"lint": "eslint .",
"lint": "biome check .",
"lint:fix": "biome check --write .",
"prepack": "npm run build",
"test": "vitest run"
},
Expand All @@ -31,11 +32,12 @@
"@stoplight/spectral-cli": "^6.6.0"
},
"devDependencies": {
"@biomejs/biome": "^2.3.2",
"@ibm-cloud/openapi-ruleset": "^1.31.0",
"@readme/eslint-config": "file:../eslint-config",
"@readme/oas-examples": "^7.0.3",
"@readme/standards": "file:../standards",
"tsup": "^8.1.2",
"vitest": "^4.0.6"
},
"prettier": "@readme/eslint-config/prettier"
"prettier": "@readme/standards/prettier"
}
2 changes: 1 addition & 1 deletion packages/spectral-config/src/functions/alex.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { text } from 'alex';
* @see {@link https://alexjs.com/}
* @param {string} input
*/
export default function alex(input, options, context) {
export default function alex(input, _options, context) {
const errors = text(input, { profanitySureness: 1 }).messages;

return errors
Expand Down
3 changes: 0 additions & 3 deletions packages/spectral-config/test/.eslintrc

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { severityCodes, testRule } from '@ibm-cloud/openapi-ruleset/test/test-utils/index.js';
import readme from '@readme/oas-examples/3.0/json/readme-legacy.json';
import { describe, it, expect } from 'vitest';
import { describe, expect, it } from 'vitest';

import rule from '../src/rules/alex-component-description.js';

Expand Down
Loading