Skip to content

Commit

Permalink
Chore: Upgrade eslint-plugin-jsdoc to v25 and remove --legacy-peer-de…
Browse files Browse the repository at this point in the history
…ps (#14244)

* Chore: Upgrade eslint-plugin-jsdoc to v25

This is a Chore instead of an Upgrade because it's in `devDependencies`.
v25 is the first release of `eslint-plugin-jsdoc` to bump the `eslint`
peer dependency to allow `eslint@7`. Once it's upgraded, we won't have
to use `--legacy-peer-deps` to install dependencies with npm v7. The
newer version was unsatisfied with the `cliOptions` param to
`translateOptions` typed as just `Object`, so I turned our Optionator
config into a JSDoc typedef.

* Chore: npm v7 no longer needs --legacy-peer-deps (refs #13844)

`eslint-plugin-jsdoc` was the last upgrade needed to be compatible with
the new peer dependency resolution in npm v7.

* Docs: Make ParsedCLIOptions typedef name consistent

Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com>

* Docs: Properties with default values are non-optional

Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com>

* Docs: Add _ filenames/patterns to ParsedCLIOptions typedef

* Docs: ParsedCLIOptions.fixType is optional

Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com>

Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com>
  • Loading branch information
btmills and mdjermanovic committed Mar 25, 2021
1 parent 43f1685 commit 49d1697
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 6 deletions.
4 changes: 0 additions & 4 deletions .github/workflows/ci.yml
Expand Up @@ -40,10 +40,6 @@ jobs:
node-version: ${{ matrix.node }}
- name: Install Packages
run: npm install
if: ${{ !startswith(matrix.node, '15') }}
- name: Install Packages
run: npm install --legacy-peer-deps
if: ${{ startswith(matrix.node, '15') }}
- name: Test
run: node Makefile mocha
- name: Fuzz Test
Expand Down
5 changes: 4 additions & 1 deletion lib/cli.js
Expand Up @@ -32,6 +32,7 @@ const debug = require("debug")("eslint:cli");
/** @typedef {import("./eslint/eslint").ESLintOptions} ESLintOptions */
/** @typedef {import("./eslint/eslint").LintMessage} LintMessage */
/** @typedef {import("./eslint/eslint").LintResult} LintResult */
/** @typedef {import("./options").ParsedCLIOptions} ParsedCLIOptions */

//------------------------------------------------------------------------------
// Helpers
Expand All @@ -54,7 +55,7 @@ function quietFixPredicate(message) {

/**
* Translates the CLI options into the options expected by the CLIEngine.
* @param {Object} cliOptions The CLI options to translate.
* @param {ParsedCLIOptions} cliOptions The CLI options to translate.
* @returns {ESLintOptions} The options object for the CLIEngine.
* @private
*/
Expand Down Expand Up @@ -221,6 +222,8 @@ const cli = {
if (Array.isArray(args)) {
debug("CLI args: %o", args.slice(2));
}

/** @type {ParsedCLIOptions} */
let options;

try {
Expand Down
47 changes: 47 additions & 0 deletions lib/options.js
Expand Up @@ -11,6 +11,53 @@

const optionator = require("optionator");

//------------------------------------------------------------------------------
// Typedefs
//------------------------------------------------------------------------------

/**
* The options object parsed by Optionator.
* @typedef {Object} ParsedCLIOptions
* @property {boolean} cache Only check changed files
* @property {string} cacheFile Path to the cache file. Deprecated: use --cache-location
* @property {string} [cacheLocation] Path to the cache file or directory
* @property {"metadata" | "content"} cacheStrategy Strategy to use for detecting changed files in the cache
* @property {boolean} [color] Force enabling/disabling of color
* @property {string} [config] Use this configuration, overriding .eslintrc.* config options if present
* @property {boolean} debug Output debugging information
* @property {string[]} [env] Specify environments
* @property {boolean} envInfo Output execution environment information
* @property {boolean} errorOnUnmatchedPattern Prevent errors when pattern is unmatched
* @property {boolean} eslintrc Disable use of configuration from .eslintrc.*
* @property {string[]} [ext] Specify JavaScript file extensions
* @property {boolean} fix Automatically fix problems
* @property {boolean} fixDryRun Automatically fix problems without saving the changes to the file system
* @property {("problem" | "suggestion" | "layout")[]} [fixType] Specify the types of fixes to apply (problem, suggestion, layout)
* @property {string} format Use a specific output format
* @property {string[]} [global] Define global variables
* @property {boolean} [help] Show help
* @property {boolean} ignore Disable use of ignore files and patterns
* @property {string} [ignorePath] Specify path of ignore file
* @property {string[]} [ignorePattern] Pattern of files to ignore (in addition to those in .eslintignore)
* @property {boolean} init Run config initialization wizard
* @property {boolean} inlineConfig Prevent comments from changing config or rules
* @property {number} maxWarnings Number of warnings to trigger nonzero exit code
* @property {string} [outputFile] Specify file to write report to
* @property {string} [parser] Specify the parser to be used
* @property {Object} [parserOptions] Specify parser options
* @property {string[]} [plugin] Specify plugins
* @property {string} [printConfig] Print the configuration for the given file
* @property {boolean | undefined} reportUnusedDisableDirectives Adds reported errors for unused eslint-disable directives
* @property {string} [resolvePluginsRelativeTo] A folder where plugins should be resolved from, CWD by default
* @property {Object} [rule] Specify rules
* @property {string[]} [rulesdir] Use additional rules from this directory
* @property {boolean} stdin Lint code provided on <STDIN>
* @property {string} [stdinFilename] Specify filename to process STDIN as
* @property {boolean} quiet Report errors only
* @property {boolean} [version] Output the version number
* @property {string[]} _ Positional filenames or patterns
*/

//------------------------------------------------------------------------------
// Initialization and Public Interface
//------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -100,7 +100,7 @@
"eslint-config-eslint": "file:packages/eslint-config-eslint",
"eslint-plugin-eslint-plugin": "^2.2.1",
"eslint-plugin-internal-rules": "file:tools/internal-rules",
"eslint-plugin-jsdoc": "^22.1.0",
"eslint-plugin-jsdoc": "^25.4.3",
"eslint-plugin-node": "^11.1.0",
"eslint-release": "^2.0.0",
"eslump": "^2.0.0",
Expand Down

0 comments on commit 49d1697

Please sign in to comment.