/** * Debugging: * https://eslint.org/docs/latest/use/configure/debug * ---------------------------------------------------- * * Print a file's calculated configuration * * npx eslint --print-config path/to/file.js * * Inspecting the config * * npx eslint --inspect-config * */ import globals from 'globals'; import js from '@eslint/js'; import { defineConfig, globalIgnores } from 'eslint/config'; import ember from 'eslint-plugin-ember/recommended'; import WarpDrive from 'eslint-plugin-warp-drive/recommended'; import eslintConfigPrettier from 'eslint-config-prettier'; import qunit from 'eslint-plugin-qunit'; import n from 'eslint-plugin-n'; import babelParser from '@babel/eslint-parser/experimental-worker'; const esmParserOptions = { ecmaFeatures: { modules: true }, ecmaVersion: 'latest', }; export default defineConfig([ globalIgnores(['dist/', 'coverage/', '!**/.*']), js.configs.recommended, eslintConfigPrettier, ember.configs.base, ember.configs.gjs, ...WarpDrive, /** * https://eslint.org/docs/latest/use/configure/configuration-files#configuring-linter-options */ { linterOptions: { reportUnusedDisableDirectives: 'error', }, }, { files: ['**/*.js'], languageOptions: { parser: babelParser, }, }, { files: ['**/*.{js,gjs}'], languageOptions: { parserOptions: esmParserOptions, globals: { ...globals.browser, }, }, }, { files: ['tests/**/*-test.{js,gjs}'], plugins: { qunit, }, }, /** * CJS node files */ { files: ['**/*.cjs', 'config/**/*.js', 'ember-cli-build.js'], plugins: { n, }, languageOptions: { sourceType: 'script', ecmaVersion: 'latest', globals: { ...globals.node, }, }, }, /** * ESM node files */ { files: ['**/*.mjs'], plugins: { n, }, languageOptions: { sourceType: 'module', ecmaVersion: 'latest', parserOptions: esmParserOptions, globals: { ...globals.node, }, }, }, ]);