gajus / eslint-plugin-jsdoc

JSDoc specific linting rules for ESLint.
Other
1.09k stars 157 forks source link

v46.5.0's `engines.node` constraint is wrong #1148

Closed emmercm closed 1 year ago

emmercm commented 1 year ago

Expected behavior

eslint-plugin-jsdoc has the correct engines.node version constraint.

Actual behavior

eslint-plugin-jsdoc throws a TypeError on Node.js v16.3.0 (which satisfies >=16):

TypeError: Object.hasOwn is not a function
Occurred while linting <redacted>/igir/src/console/logger.ts:15
Rule: "jsdoc/check-access"
    at Object.getPreferredTagName (<redacted>/igir/node_modules/eslint-plugin-jsdoc/dist/jsdocUtils.js:440:14)
    at Object.utils.getPreferredTagName (<redacted>/igir/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js:1245:37)
    at Object.utils.forEachPreferredTag (<redacted>/igir/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js:1481:11)
    at _default.checkPrivate (<redacted>/igir/node_modules/eslint-plugin-jsdoc/dist/rules/checkAccess.js:14:9)
    at iterate (<redacted>/igir/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js:1752:3)
    at callIterator (<redacted>/igir/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js:1888:7)
    at *:not(Program) (<redacted>/igir/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js:1943:11)
    at ruleErrorHandler (<redacted>/igir/node_modules/eslint/lib/linter/linter.js:1050:28)
    at <redacted>/igir/node_modules/eslint/lib/linter/safe-emitter.js:45:58
    at Array.forEach (<anonymous>)

Object.hasOwn() was added in Node.js v16.9.0: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn.

ESLint Config

{
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "airbnb-base",
    "airbnb-typescript/base",
    "plugin:jsdoc/recommended-typescript-error"
  ],
  "plugins": [
    "@typescript-eslint",
    "simple-import-sort",
    "jest"
  ],

  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "project": "./tsconfig.json",
    "sourceType": "module"
  },

  "rules": {
    "jsdoc/require-jsdoc": ["error", {
      "checkConstructors": false,
      "contexts": [
        "ClassDeclaration",
        "MethodDefinition[accessibility!=private][key.name!=/^(get|set)[A-Z][a-zA-Z]+/]"
      ]
    }],
    "jsdoc/require-param": "off",
    "jsdoc/require-returns": "off",
    "jsdoc/no-blank-blocks": "error",
  }
}

https://github.com/emmercm/igir/blob/1c5b386fd178367be8cea582c8f543f331e2c830/.eslintrc

ESLint sample

https://github.com/emmercm/igir/blob/1c5b386fd178367be8cea582c8f543f331e2c830/src/console/logger.ts

Environment

Other:

https://github.com/emmercm/igir/blob/1c5b386fd178367be8cea582c8f543f331e2c830/package.json

github-actions[bot] commented 1 year ago

:tada: This issue has been resolved in version 46.5.1 :tada:

The release is available on:

Your semantic-release bot :package::rocket: