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
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jest": "^28.8.3",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-n": "^17.10.3",
"eslint-plugin-prettier": "^5.2.1",
"globals": "^15.9.0",
Expand Down
8 changes: 8 additions & 0 deletions packages/base/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `promise/no-promise-in-callback`
- `promise/no-return-in-finally`
- `promise/valid-params`
- **BREAKING:** Update `eslint-plugin-jsdoc` peer dependency from `^50.2.4` to `^61.4.1` ([#429](https://github.com/MetaMask/eslint-config/pull/429))
- **BREAKING:** Add new `jsdoc/` rules ([#429](https://github.com/MetaMask/eslint-config/pull/429))
- `jsdoc/reject-any-type`: Disallows `any` in JSDoc types
- `jsdoc/reject-function-type`: Disallows `Function` in JSDoc types
- `jsdoc/require-next-type`: Requires a type to be specified for `@next` directives
- `jsdoc/require-throws-type`: Requires a type to be specified for `@throws` directives
- `jsdoc/require-yields-type`: Requires a type to be specified for `@yields` directives`
- `jsdoc/ts-no-empty-object-type`: Disallows empty objects in JSDoc types (i.e. `{}`)

## [14.1.0]

Expand Down
4 changes: 2 additions & 2 deletions packages/base/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"eslint": "^9.11.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-promise": "^7.1.0",
"prettier": "^3.3.3",
Expand All @@ -52,7 +52,7 @@
"eslint": "^9.11.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Node.js version incompatibility with eslint-plugin-jsdoc peer dependency

The engines field claims support for Node.js ^18.18 || >=20, but according to the PR description, eslint-plugin-jsdoc v51.0.0+ (now updated to v61.4.1) requires Node.js v20.11.0+. Users on Node.js 18.x or Node.js 20.0.0-20.10.x will see the package claims compatibility but encounter runtime failures when the jsdoc plugin loads. The engines field needs to be updated to reflect the actual minimum Node.js requirement of v20.11.0.

Additional Locations (1)

Fix in Cursor Fix in Web

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Good point. I even listed this in the change notes.

We'll have to put this on pause and drop support for v18 first then.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Bug: Node.js version incompatibility with updated peer dependency

The eslint-plugin-jsdoc peer dependency is updated to ^61.4.1, but per the PR description, v51.0.0+ requires Node.js v20.11.0+. The engines field still declares "node": "^18.18 || >=20", which allows Node.js 18.18-20.10.x. Users on these Node.js versions would be able to install the packages but encounter runtime failures with the incompatible eslint-plugin-jsdoc version. The PR discussion acknowledges this needs to be addressed by dropping Node.js 18 support first.

Additional Locations (2)

Fix in Cursor Fix in Web

"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-promise": "^7.1.0",
"prettier": "^3.3.3"
Expand Down
18 changes: 18 additions & 0 deletions packages/base/rules-snapshot.json
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@
"jsdoc/check-values": "error",
"jsdoc/convert-to-jsdoc-comments": "off",
"jsdoc/empty-tags": "error",
"jsdoc/escape-inline-tags": "off",
"jsdoc/implements-on-classes": "error",
"jsdoc/imports-as-dependencies": "off",
"jsdoc/informative-docs": "off",
Expand All @@ -166,6 +167,9 @@
"jsdoc/no-restricted-syntax": "off",
"jsdoc/no-types": "off",
"jsdoc/no-undefined-types": "error",
"jsdoc/prefer-import-tag": "off",
"jsdoc/reject-any-type": "error",
"jsdoc/reject-function-type": "error",
"jsdoc/require-asterisk-prefix": "error",
"jsdoc/require-description": "error",
"jsdoc/require-description-complete-sentence": "off",
Expand Down Expand Up @@ -194,6 +198,8 @@
]
}
],
"jsdoc/require-next-description": "off",
"jsdoc/require-next-type": "error",
"jsdoc/require-param": ["error", { "unnamedRootBase": ["options"] }],
"jsdoc/require-param-description": "error",
"jsdoc/require-param-name": "error",
Expand All @@ -202,17 +208,29 @@
"jsdoc/require-property-description": "error",
"jsdoc/require-property-name": "error",
"jsdoc/require-property-type": "error",
"jsdoc/require-rejects": "off",
"jsdoc/require-returns": "error",
"jsdoc/require-returns-check": "error",
"jsdoc/require-returns-description": "error",
"jsdoc/require-returns-type": "error",
"jsdoc/require-tags": "off",
"jsdoc/require-template": "off",
"jsdoc/require-template-description": "off",
"jsdoc/require-throws": "off",
"jsdoc/require-throws-description": "off",
"jsdoc/require-throws-type": "error",
"jsdoc/require-yields": "error",
"jsdoc/require-yields-check": "error",
"jsdoc/require-yields-description": "off",
"jsdoc/require-yields-type": "error",
"jsdoc/sort-tags": "off",
"jsdoc/tag-lines": ["error", "any", { "startLines": 1 }],
"jsdoc/text-escaping": "off",
"jsdoc/ts-method-signature-style": "off",
"jsdoc/ts-no-empty-object-type": "error",
"jsdoc/ts-no-unnecessary-template-expression": "off",
"jsdoc/ts-prefer-function-type": "off",
"jsdoc/type-formatting": "off",
"jsdoc/valid-types": "error",
"jsx-quotes": "off",
"key-spacing": "off",
Expand Down
2 changes: 2 additions & 0 deletions packages/base/src/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,8 @@ const rules = createConfig({
'jsdoc/check-tag-names': 'error',
'jsdoc/check-types': 'error',
'jsdoc/check-values': 'error',
// This recommended rule is disabled because it keeps thinking `@metamask` is an inline tag
'jsdoc/escape-inline-tags': 'off',
'jsdoc/empty-tags': 'error',
'jsdoc/implements-on-classes': 'error',
'jsdoc/match-description': [
Expand Down
2 changes: 1 addition & 1 deletion packages/browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"eslint": "^9.11.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-prettier": "^5.2.1",
"prettier": "^3.3.3",
"vitest": "^2.1.9"
Expand Down
2 changes: 1 addition & 1 deletion packages/commonjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"eslint": "^9.11.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-prettier": "^5.2.1",
"prettier": "^3.3.3",
"vitest": "^2.1.9"
Expand Down
2 changes: 1 addition & 1 deletion packages/jest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jest": "^28.8.3",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-prettier": "^5.2.1",
"jest": "^29.7.0",
"prettier": "^3.3.3",
Expand Down
2 changes: 1 addition & 1 deletion packages/mocha/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"eslint": "^9.11.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-mocha": "^10.5.0",
"eslint-plugin-prettier": "^5.2.1",
"globals": "^15.9.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/nodejs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"eslint": "^9.11.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-n": "^17.10.3",
"eslint-plugin-prettier": "^5.2.1",
"prettier": "^3.3.3",
Expand Down
1 change: 1 addition & 0 deletions packages/typescript/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- **BREAKING:** Update `typescript-eslint` peer dependency to have a minimum version of v8.39.0 ([#423](https://github.com/MetaMask/eslint-config/pull/423))
- This version has a matching supported `typescript` range, and includes some bug fixes for problems we ran into.
- **BREAKING:** Update `eslint-plugin-jsdoc` peer dependency from `^50.2.4` to `^61.4.1` ([#429](https://github.com/MetaMask/eslint-config/pull/429))
- Disable `@typescript-eslint/no-unnecessary-type-arguments` ([#426](https://github.com/MetaMask/eslint-config/pull/426))
- We decided that "unnecessary" type arguments make types easier to read sometimes, so we should allow them.
- Disable `promise/valid-params` because it's redundant in type-checked projects ([#425](https://github.com/MetaMask/eslint-config/pull/425))
Expand Down
4 changes: 2 additions & 2 deletions packages/typescript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-typescript": "^3.6.3",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-prettier": "^5.2.1",
"globals": "^15.9.0",
"prettier": "^3.3.3",
Expand All @@ -57,7 +57,7 @@
"eslint": "^9.11.0",
"eslint-import-resolver-typescript": "^3.6.3",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"typescript": ">=4.8.4 <6",
"typescript-eslint": "^8.39.0"
},
Expand Down
18 changes: 18 additions & 0 deletions packages/typescript/rules-snapshot.json
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@
"jsdoc/check-values": "error",
"jsdoc/convert-to-jsdoc-comments": "off",
"jsdoc/empty-tags": "error",
"jsdoc/escape-inline-tags": "off",
"jsdoc/implements-on-classes": "error",
"jsdoc/imports-as-dependencies": "off",
"jsdoc/informative-docs": "off",
Expand All @@ -184,13 +185,18 @@
"jsdoc/no-restricted-syntax": "off",
"jsdoc/no-types": "error",
"jsdoc/no-undefined-types": "off",
"jsdoc/prefer-import-tag": "off",
"jsdoc/reject-any-type": "off",
"jsdoc/reject-function-type": "off",
"jsdoc/require-asterisk-prefix": "off",
"jsdoc/require-description": "off",
"jsdoc/require-description-complete-sentence": "off",
"jsdoc/require-example": "off",
"jsdoc/require-file-overview": "off",
"jsdoc/require-hyphen-before-param-description": "off",
"jsdoc/require-jsdoc": "error",
"jsdoc/require-next-description": "off",
"jsdoc/require-next-type": "off",
"jsdoc/require-param": "error",
"jsdoc/require-param-description": "error",
"jsdoc/require-param-name": "error",
Expand All @@ -199,17 +205,29 @@
"jsdoc/require-property-description": "error",
"jsdoc/require-property-name": "error",
"jsdoc/require-property-type": "off",
"jsdoc/require-rejects": "off",
"jsdoc/require-returns": "error",
"jsdoc/require-returns-check": "error",
"jsdoc/require-returns-description": "error",
"jsdoc/require-returns-type": "off",
"jsdoc/require-tags": "off",
"jsdoc/require-template": "off",
"jsdoc/require-template-description": "off",
"jsdoc/require-throws": "off",
"jsdoc/require-throws-description": "off",
"jsdoc/require-throws-type": "off",
"jsdoc/require-yields": "error",
"jsdoc/require-yields-check": "error",
"jsdoc/require-yields-description": "off",
"jsdoc/require-yields-type": "off",
"jsdoc/sort-tags": "off",
"jsdoc/tag-lines": "error",
"jsdoc/text-escaping": "off",
"jsdoc/ts-method-signature-style": "off",
"jsdoc/ts-no-empty-object-type": "off",
"jsdoc/ts-no-unnecessary-template-expression": "off",
"jsdoc/ts-prefer-function-type": "off",
"jsdoc/type-formatting": "off",
"jsdoc/valid-types": "off",
"no-array-constructor": "off",
"no-class-assign": "off",
Expand Down
9 changes: 9 additions & 0 deletions packages/typescript/src/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -221,13 +221,22 @@ const config = createConfig({
// multi-line JSDoc types.
'jsdoc/check-indentation': 'error',

// This recommended rule is disabled because it keeps thinking `@metamask` is an inline tag
'jsdoc/escape-inline-tags': 'off',

// Use TypeScript types rather than JSDoc types.
'jsdoc/no-types': 'error',

// These all conflict with `jsdoc/no-types`.
'jsdoc/reject-any-type': 'off',
'jsdoc/reject-function-type': 'off',
'jsdoc/require-next-type': 'off',
'jsdoc/require-param-type': 'off',
'jsdoc/require-property-type': 'off',
'jsdoc/require-returns-type': 'off',
'jsdoc/require-throws-type': 'off',
'jsdoc/require-yields-type': 'off',
'jsdoc/ts-no-empty-object-type': 'off',
'jsdoc/valid-types': 'off',

// Prefer hash names over TypeScript's `private` modifier.
Expand Down
2 changes: 1 addition & 1 deletion packages/vitest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
"eslint": "^9.11.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^4.3.0",
"eslint-plugin-jsdoc": "^50.2.4",
"eslint-plugin-jsdoc": "^61.4.1",
"eslint-plugin-prettier": "^5.2.1",
"jest": "^29.7.0",
"prettier": "^3.3.3",
Expand Down
Loading
Loading