/** * @fileoverview Expose out ESLint and CLI to require. * @author Ian Christian Myers */ "use strict"; //----------------------------------------------------------------------------- // Requirements //----------------------------------------------------------------------------- const { ESLint, FlatESLint } = require("./eslint"); const { shouldUseFlatConfig } = require("./eslint/flat-eslint"); const { Linter } = require("./linter"); const { RuleTester } = require("./rule-tester"); const { SourceCode } = require("./source-code"); //----------------------------------------------------------------------------- // Functions //----------------------------------------------------------------------------- /** * Loads the correct ESLint constructor given the options. * @param {Object} [options] The options object * @param {boolean} [options.useFlatConfig] Whether or not to use a flat config * @param {string} [options.cwd] The current working directory * @returns {Promise} The ESLint constructor */ async function loadESLint({ useFlatConfig, cwd = process.cwd() } = {}) { /* * Note: The v9.x version of this function doesn't have a cwd option * because it's not used. It's only used in the v8.x version of this * function. */ const shouldESLintUseFlatConfig = typeof useFlatConfig === "boolean" ? useFlatConfig : await shouldUseFlatConfig({ cwd }); return shouldESLintUseFlatConfig ? FlatESLint : ESLint; } //----------------------------------------------------------------------------- // Exports //----------------------------------------------------------------------------- module.exports = { Linter, loadESLint, ESLint, RuleTester, SourceCode };