From 32931996aebbf63ebfff165339f6912a588705b0 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Tue, 2 Dec 2025 18:14:59 -0330 Subject: [PATCH 1/2] chore: Update `eslint-plugin-jsdoc` from v50 to v61 The plugin `eslint-plugin-jsdoc` has been updated from `^50.2.4` to `^61.4.1`. This range of updates includes many features and bug fixes, but mainly I've worked on this to unblock #404 (to be addressed in a later PR). Here is a list of each release that includes a "breaking" change (it includes some non-major versions because the author seems to consider making a rule recommended as non-breaking): - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v51.0.0 - Requires Node.js v20.11.0+ - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v52.0.0 - Descriptions now parsed as unicode using `v` flag - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v53.0.0 and https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v54.0.0 - Changes to exports and build sustem - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v55.0.0 - New recommended named export (though not breaking) - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v56.0.0 - More export changes - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v57.0.0 - New recommended rules: `require-next-type`, `require-throws-type`, `require-yields-type` - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v58.0.0 - New recommended rules: `reject-any-type` and `reject-function-type` - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v59.0.0 - Remove `exemptedBy` option from `require-yields-check` rule added earlier - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v60.0.0 - Rename `required-tags` to `require-tags` - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v60.6.0 - Add new recommended rule `escale-inline-tags` - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.0.0 - Change default value of `stringQuotes` option for `type-formatting` rule (was `single`, now `double`) - https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.0 - New recommended rule `ts-no-empty-object-type` I found that the new `escape-inline-tags` rule was causing problems in `core` when I tested it out because `@metamask` was interpreted as an inline tag, so I left that one disabled. The rest of the new recommended rules were all left enabled in the base config, but disabled in the `typescript` config (because they were type-related`). --- package.json | 2 +- packages/base/package.json | 4 +- packages/base/rules-snapshot.json | 18 +++ packages/base/src/index.mjs | 2 + packages/browser/package.json | 2 +- packages/commonjs/package.json | 2 +- packages/jest/package.json | 2 +- packages/mocha/package.json | 2 +- packages/nodejs/package.json | 2 +- packages/typescript/package.json | 4 +- packages/typescript/rules-snapshot.json | 18 +++ packages/typescript/src/index.mjs | 9 ++ packages/vitest/package.json | 2 +- yarn.lock | 190 +++++++++++++++--------- 14 files changed, 181 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index 8d65d53f..06225bcf 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/packages/base/package.json b/packages/base/package.json index 642b64ca..ff3a7fb9 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -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", @@ -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", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-promise": "^7.1.0", "prettier": "^3.3.3" diff --git a/packages/base/rules-snapshot.json b/packages/base/rules-snapshot.json index 89238702..a2754896 100644 --- a/packages/base/rules-snapshot.json +++ b/packages/base/rules-snapshot.json @@ -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", @@ -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", @@ -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", @@ -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", diff --git a/packages/base/src/index.mjs b/packages/base/src/index.mjs index f4bfd3da..28d1e3c2 100644 --- a/packages/base/src/index.mjs +++ b/packages/base/src/index.mjs @@ -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': [ diff --git a/packages/browser/package.json b/packages/browser/package.json index 04430bd3..87d931ab 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -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" diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index bf5724c0..0a78884f 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -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" diff --git a/packages/jest/package.json b/packages/jest/package.json index 0d8b85e2..0c1655bb 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -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", diff --git a/packages/mocha/package.json b/packages/mocha/package.json index 232cac03..22c3a32d 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -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", diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index 36256fa4..097fced2 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -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", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 18210668..9787b5b5 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -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", @@ -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" }, diff --git a/packages/typescript/rules-snapshot.json b/packages/typescript/rules-snapshot.json index e76505fe..81f1a895 100644 --- a/packages/typescript/rules-snapshot.json +++ b/packages/typescript/rules-snapshot.json @@ -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", @@ -184,6 +185,9 @@ "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", @@ -191,6 +195,8 @@ "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", @@ -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", diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs index 9bdeb557..97737b0a 100644 --- a/packages/typescript/src/index.mjs +++ b/packages/typescript/src/index.mjs @@ -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. diff --git a/packages/vitest/package.json b/packages/vitest/package.json index bdfdbdea..b2614311 100644 --- a/packages/vitest/package.json +++ b/packages/vitest/package.json @@ -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", diff --git a/yarn.lock b/yarn.lock index ae943958..8eee02a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -409,14 +409,23 @@ __metadata: languageName: node linkType: hard -"@es-joy/jsdoccomment@npm:~0.48.0": - version: 0.48.0 - resolution: "@es-joy/jsdoccomment@npm:0.48.0" +"@es-joy/jsdoccomment@npm:~0.76.0": + version: 0.76.0 + resolution: "@es-joy/jsdoccomment@npm:0.76.0" dependencies: + "@types/estree": "npm:^1.0.8" + "@typescript-eslint/types": "npm:^8.46.0" comment-parser: "npm:1.4.1" esquery: "npm:^1.6.0" - jsdoc-type-pratt-parser: "npm:~4.1.0" - checksum: 10/28fc48521cc020a570d4cc0c1dde9e370a68bb5bebb7ca0049e2d7090f373ea4ccb685adb0123da0783c47672822b49bc849bc4a1a27d4758ab1bc18a9c8500a + jsdoc-type-pratt-parser: "npm:~6.10.0" + checksum: 10/ce7a79c3323f17afdcf997221c0aa45a023c7dc6bbfec501642538691b3307e920146fcb490c00c9f4e8a21adcafad664dffbb3e53051dbb75a0ee85a2428c43 + languageName: node + linkType: hard + +"@es-joy/resolve.exports@npm:1.2.0": + version: 1.2.0 + resolution: "@es-joy/resolve.exports@npm:1.2.0" + checksum: 10/238189f011902b3db0dcf9cd01d403eb565cfc80fb2614cba01c0c1f66b607575132f9952ac914a7395074fbca13415137a50152afc17b1dcb5ae032a84a680d languageName: node linkType: hard @@ -1114,7 +1123,7 @@ __metadata: eslint: "npm:^9.11.0" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import-x: "npm:^4.3.0" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-prettier: "npm:^5.2.1" globals: "npm:^15.9.0" prettier: "npm:^3.3.3" @@ -1135,7 +1144,7 @@ __metadata: eslint: "npm:^9.11.0" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import-x: "npm:^4.3.0" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-prettier: "npm:^5.2.1" globals: "npm:^15.9.0" prettier: "npm:^3.3.3" @@ -1158,7 +1167,7 @@ __metadata: eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import-x: "npm:^4.3.0" eslint-plugin-jest: "npm:^28.8.3" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-prettier: "npm:^5.2.1" globals: "npm:^15.9.0" jest: "npm:^29.7.0" @@ -1182,7 +1191,7 @@ __metadata: eslint: "npm:^9.11.0" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import-x: "npm:^4.3.0" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-mocha: "npm:^10.5.0" eslint-plugin-prettier: "npm:^5.2.1" globals: "npm:^15.9.0" @@ -1206,7 +1215,7 @@ __metadata: eslint: "npm:^9.11.0" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import-x: "npm:^4.3.0" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-n: "npm:^17.10.3" eslint-plugin-prettier: "npm:^5.2.1" globals: "npm:^15.9.0" @@ -1239,7 +1248,7 @@ __metadata: eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import-x: "npm:^4.3.0" eslint-plugin-jest: "npm:^28.8.3" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-n: "npm:^17.10.3" eslint-plugin-prettier: "npm:^5.2.1" globals: "npm:^15.9.0" @@ -1264,7 +1273,7 @@ __metadata: eslint-config-prettier: "npm:^9.1.0" eslint-import-resolver-typescript: "npm:^3.6.3" eslint-plugin-import-x: "npm:^4.3.0" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-prettier: "npm:^5.2.1" globals: "npm:^15.9.0" prettier: "npm:^3.3.3" @@ -1276,7 +1285,7 @@ __metadata: 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 languageName: unknown @@ -1294,7 +1303,7 @@ __metadata: eslint: "npm:^9.11.0" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import-x: "npm:^4.3.0" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-prettier: "npm:^5.2.1" globals: "npm:^15.9.0" jest: "npm:^29.7.0" @@ -1317,7 +1326,7 @@ __metadata: eslint: "npm:^9.11.0" eslint-config-prettier: "npm:^9.1.0" eslint-plugin-import-x: "npm:^4.3.0" - eslint-plugin-jsdoc: "npm:^50.2.4" + eslint-plugin-jsdoc: "npm:^61.4.1" eslint-plugin-prettier: "npm:^5.2.1" eslint-plugin-promise: "npm:^7.1.0" globals: "npm:^15.9.0" @@ -1327,7 +1336,7 @@ __metadata: 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 @@ -1671,6 +1680,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/base62@npm:^1.0.0": + version: 1.0.0 + resolution: "@sindresorhus/base62@npm:1.0.0" + checksum: 10/ba1a1ccfc9de0995f0e4506b8cabff3436fd1a9815f9c1a44f6833694bba6b3db7fa61fa5fc2f63180edda01abf3c26ffd16325be0ab25409f992ba91ea6dcd0 + languageName: node + linkType: hard + "@sinonjs/commons@npm:^3.0.0": version: 3.0.1 resolution: "@sinonjs/commons@npm:3.0.1" @@ -1765,10 +1781,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.8": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10/25a4c16a6752538ffde2826c2cc0c6491d90e69cd6187bef4a006dd2c3c45469f049e643d7e516c515f21484dc3d48fd5c870be158a5beb72f5baf3dc43e4099 languageName: node linkType: hard @@ -1965,13 +1981,20 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.47.0, @typescript-eslint/types@npm:^8.47.0": +"@typescript-eslint/types@npm:8.47.0": version: 8.47.0 resolution: "@typescript-eslint/types@npm:8.47.0" checksum: 10/fc42416c01c512cfe1533bdf521925bca999adc68ffefa246e48552783f1fe9d22487d912611c5cb35fca481604aae3cab88279a53ce76c7cd7510b76775c078 languageName: node linkType: hard +"@typescript-eslint/types@npm:^8.46.0, @typescript-eslint/types@npm:^8.47.0": + version: 8.48.1 + resolution: "@typescript-eslint/types@npm:8.48.1" + checksum: 10/1aa1e3f25b429bcebd9eb45b5252d950f1b24dbc6014a47dff8d00547e2e1ac47f351846fb996b6ebd49da37a85394051d36191cbbbf2c431b8db9d95afd198d + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.47.0": version: 8.47.0 resolution: "@typescript-eslint/typescript-estree@npm:8.47.0" @@ -2207,12 +2230,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.12.0": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" +"acorn@npm:^8.15.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" bin: acorn: bin/acorn - checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 + checksum: 10/77f2de5051a631cf1729c090e5759148459cdb76b5f5c70f890503d629cf5052357b0ce783c0f976dd8a93c5150f59f6d18df1def3f502396a20f81282482fa4 languageName: node linkType: hard @@ -2955,15 +2978,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.3.7": - version: 4.4.0 - resolution: "debug@npm:4.4.0" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7, debug@npm:^4.4.3": + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10/1847944c2e3c2c732514b93d11886575625686056cd765336212dc15de2d2b29612b6cd80e1afba767bb8e1803b778caf9973e98169ef1a24a7a7009e1820367 + checksum: 10/9ada3434ea2993800bd9a1e320bd4aa7af69659fb51cca685d390949434bc0a8873c21ed7c9b852af6f2455a55c6d050aa3937d52b3c69f796dab666f762acad languageName: node linkType: hard @@ -3284,7 +3307,7 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.5.3, es-module-lexer@npm:^1.5.4": +"es-module-lexer@npm:^1.5.4": version: 1.6.0 resolution: "es-module-lexer@npm:1.6.0" checksum: 10/807ee7020cc46a9c970c78cad1f2f3fc139877e5ebad7f66dbfbb124d451189ba1c48c1c632bd5f8ce1b8af2caef3fca340ba044a410fa890d17b080a59024bb @@ -3529,24 +3552,27 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:^50.2.4": - version: 50.2.4 - resolution: "eslint-plugin-jsdoc@npm:50.2.4" +"eslint-plugin-jsdoc@npm:^61.4.1": + version: 61.4.1 + resolution: "eslint-plugin-jsdoc@npm:61.4.1" dependencies: - "@es-joy/jsdoccomment": "npm:~0.48.0" + "@es-joy/jsdoccomment": "npm:~0.76.0" + "@es-joy/resolve.exports": "npm:1.2.0" are-docs-informative: "npm:^0.0.2" comment-parser: "npm:1.4.1" - debug: "npm:^4.3.6" + debug: "npm:^4.4.3" escape-string-regexp: "npm:^4.0.0" - espree: "npm:^10.1.0" + espree: "npm:^10.4.0" esquery: "npm:^1.6.0" - parse-imports: "npm:^2.1.1" - semver: "npm:^7.6.3" + html-entities: "npm:^2.6.0" + object-deep-merge: "npm:^2.0.0" + parse-imports-exports: "npm:^0.2.4" + semver: "npm:^7.7.3" spdx-expression-parse: "npm:^4.0.0" - synckit: "npm:^0.9.1" + to-valid-identifier: "npm:^1.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10/0e1c9830ce47805f1b90ba754c94288d5c091920a25edf4c1a2796dba2cb0388195b86997c1ebadaafaf98691da5a563e258c80fa495de7354c6e4e599a46902 + checksum: 10/73674dbdf2e8e4e7647536570bb5ab3712c753e0160a5688ad037a9fbb1c89e62436e32068347b98c884d804a0e0800f3b31c8eec53b6e62449ff4a404f285f2 languageName: node linkType: hard @@ -3701,14 +3727,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.1.0": - version: 10.1.0 - resolution: "espree@npm:10.1.0" +"espree@npm:^10.0.1, espree@npm:^10.1.0, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" dependencies: - acorn: "npm:^8.12.0" + acorn: "npm:^8.15.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.0.0" - checksum: 10/a673aa39a19a51763d92272f8f3772ae3d4b10624740bb72d5f273b631b43f1a5a32b385c1da6ae6bc10be05a5913bc4679ebd22a09c7b336a745204834806ea + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10/9b355b32dbd1cc9f57121d5ee3be258fab87ebeb7c83fc6c02e5af1a74fc8c5ba79fe8c663e69ea112c3e84a1b95e6a2067ac4443ee7813bb85ac7581acb8bf9 languageName: node linkType: hard @@ -4412,6 +4438,13 @@ __metadata: languageName: node linkType: hard +"html-entities@npm:^2.6.0": + version: 2.6.0 + resolution: "html-entities@npm:2.6.0" + checksum: 10/06d4e7a3ba6243bba558af176e56f85e09894b26d911bc1ef7b2b9b3f18b46604360805b32636f080e954778e9a34313d1982479a05a5aa49791afd6a4229346 + languageName: node + linkType: hard + "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" @@ -5320,10 +5353,10 @@ __metadata: languageName: node linkType: hard -"jsdoc-type-pratt-parser@npm:~4.1.0": - version: 4.1.0 - resolution: "jsdoc-type-pratt-parser@npm:4.1.0" - checksum: 10/30d88f95f6cbb4a1aa6d4b0d0ae46eb1096e606235ecaf9bab7a3ed5da860516b5d1cd967182765002f292c627526db918f3e56d34637bcf810e6ef84d403f3f +"jsdoc-type-pratt-parser@npm:~6.10.0": + version: 6.10.0 + resolution: "jsdoc-type-pratt-parser@npm:6.10.0" + checksum: 10/c9f12f33a14edd7755b119e98d19c0bd062e9bb6dc0cd9d326ed9d768d4aaaaf2aca8f04086cef2db9c83cd5664c435f9682fde78e24b7ecba7f272f8787613f languageName: node linkType: hard @@ -6018,6 +6051,13 @@ __metadata: languageName: node linkType: hard +"object-deep-merge@npm:^2.0.0": + version: 2.0.0 + resolution: "object-deep-merge@npm:2.0.0" + checksum: 10/d2f9aa0b2160118f3e261fe51634a958b9f19993f64479911df3d3b4daa0212cb01bf2a7cf2c3ab1a1830cc167151a408ecf8c3e47efa44343b516777d6ef11c + languageName: node + linkType: hard + "object-inspect@npm:^1.13.3": version: 1.13.4 resolution: "object-inspect@npm:1.13.4" @@ -6148,13 +6188,12 @@ __metadata: languageName: node linkType: hard -"parse-imports@npm:^2.1.1": - version: 2.2.1 - resolution: "parse-imports@npm:2.2.1" +"parse-imports-exports@npm:^0.2.4": + version: 0.2.4 + resolution: "parse-imports-exports@npm:0.2.4" dependencies: - es-module-lexer: "npm:^1.5.3" - slashes: "npm:^3.0.12" - checksum: 10/db1d98077587d23bfa1f136abae158ea08e1e588d0260dfc0769092be86b842c798ae47466742b1d9bc106d3430cebbd9730fc34872a2c0e72b9ff720986e82e + parse-statements: "npm:1.0.11" + checksum: 10/144d459771d1aeaa80eebffe43a2074c34e5b79a86d326c907efea90b62ff41af9555600b8e117e6cab717654d8e20b440e9ab09cdbbc9092f352cb0a9e1f3a3 languageName: node linkType: hard @@ -6177,6 +6216,13 @@ __metadata: languageName: node linkType: hard +"parse-statements@npm:1.0.11": + version: 1.0.11 + resolution: "parse-statements@npm:1.0.11" + checksum: 10/287c2739f4cbffa08e28a95ea2d3ff4a8a51ddb367df6212ae2cd80580a1189e09c6edcb8277fc05d0fdbcb93c86ad16b591f317e2fe12ac4189de738863e514 + languageName: node + linkType: hard + "parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -6522,6 +6568,13 @@ __metadata: languageName: node linkType: hard +"reserved-identifiers@npm:^1.0.0": + version: 1.2.0 + resolution: "reserved-identifiers@npm:1.2.0" + checksum: 10/02722585aa97f25384a59a33055529a90c8fa8ce3d32f02be4bcec1454254fb385429fc3168a85fe56bb952ad632ea8fecb8fa2addb47e7d97a1ab4922827ad9 + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -6753,12 +6806,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": - version: 7.6.3 - resolution: "semver@npm:7.6.3" +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" bin: semver: bin/semver.js - checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10 + checksum: 10/8dbc3168e057a38fc322af909c7f5617483c50caddba135439ff09a754b20bdd6482a5123ff543dad4affa488ecf46ec5fb56d61312ad20bb140199b88dfaea9 languageName: node linkType: hard @@ -6915,13 +6968,6 @@ __metadata: languageName: node linkType: hard -"slashes@npm:^3.0.12": - version: 3.0.12 - resolution: "slashes@npm:3.0.12" - checksum: 10/c221d73765013db64f3eaf49dacc6b99a5d5477e63720c1bb71d1af647965dda23ab100ca1eb622e080f11ffe68e1e0a233b7b908073260bed4ec819ff1d3e42 - languageName: node - linkType: hard - "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -7335,6 +7381,16 @@ __metadata: languageName: node linkType: hard +"to-valid-identifier@npm:^1.0.0": + version: 1.0.0 + resolution: "to-valid-identifier@npm:1.0.0" + dependencies: + "@sindresorhus/base62": "npm:^1.0.0" + reserved-identifiers: "npm:^1.0.0" + checksum: 10/fba7ebdf464c92c92ccde887f917c9461792f99b738d36bebe5c3bd07562c3fdceedfd120ac115da359162b115798136bb8b9ea7417d7e3a663db9425ff1bcc1 + languageName: node + linkType: hard + "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" From eeaf7af76fcc8d0599e88fa99bdb00dd7dfdaee9 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Tue, 2 Dec 2025 18:24:43 -0330 Subject: [PATCH 2/2] Update changelogs --- packages/base/CHANGELOG.md | 8 ++++++++ packages/typescript/CHANGELOG.md | 1 + 2 files changed, 9 insertions(+) diff --git a/packages/base/CHANGELOG.md b/packages/base/CHANGELOG.md index 550dff59..e58ff3b2 100644 --- a/packages/base/CHANGELOG.md +++ b/packages/base/CHANGELOG.md @@ -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] diff --git a/packages/typescript/CHANGELOG.md b/packages/typescript/CHANGELOG.md index 66e31569..2337bc94 100644 --- a/packages/typescript/CHANGELOG.md +++ b/packages/typescript/CHANGELOG.md @@ -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))