/** * @fileoverview Expose out ESLint and CLI to require. * @author Ian Christian Myers */ "use strict"; //----------------------------------------------------------------------------- // Requirements //----------------------------------------------------------------------------- const { ESLint, shouldUseFlatConfig } = require("./eslint/eslint"); const { LegacyESLint } = require("./eslint/legacy-eslint"); const { Linter } = require("./linter"); const { RuleTester } = require("./rule-tester"); const { SourceCode } = require("./languages/js/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 * @returns {Promise} The ESLint constructor */ async function loadESLint({ useFlatConfig } = {}) { /* * Note: The v8.x version of this function also accepted a `cwd` option, but * it is not used in this implementation so we silently ignore it. */ const shouldESLintUseFlatConfig = useFlatConfig ?? (await shouldUseFlatConfig()); return shouldESLintUseFlatConfig ? ESLint : LegacyESLint; } //----------------------------------------------------------------------------- // Exports //----------------------------------------------------------------------------- module.exports = { Linter, loadESLint, ESLint, RuleTester, SourceCode };