/** * @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, };