UNPKG

@shayanthenerd/eslint-config

Version:

A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style

53 lines (52 loc) 1.97 kB
import { isTruthy } from "../utils/isTruthy.mjs"; import { globs } from "../helpers/globs.mjs"; import { isEnabled } from "../utils/isEnabled.mjs"; import { getJavaScriptRules } from "../rules/javascript.mjs"; import { mergeConfigs } from "eslint-flat-config-utils"; import { parser } from "typescript-eslint"; import globals from "globals"; //#region src/configs/javascript.ts function getJavascriptConfig(options) { const { env, configs: { vue, astro, javascript: { overrides } }, project: { globals: { bun, node, deno, vitest, worker, browser, commonjs, nodeBuiltin, audioWorklet, webextension, sharedWorker, serviceworker, vue: vueGlobals, astro: astroGlobals, custom: userGlobals } } } = options; return mergeConfigs({ name: "shayanthenerd/base", files: [ globs.src, globs.jsxTsx, isEnabled(vue) ? globs.vue : "", isEnabled(astro) ? globs.astro : "" ].filter(isTruthy), languageOptions: { parser, parserOptions: { ecmaVersion: "latest", ecmaFeatures: { jsx: true, impliedStrict: true } }, globals: { ...globals.builtin, ...globals.es2027, ...worker && globals.worker, ...commonjs && globals.commonjs, ...bun && env === "bun" && globals.bunBuiltin, ...deno && env === "deno" && globals.denoBuiltin, ...node && globals.node, ...nodeBuiltin && env === "node" && globals.nodeBuiltin, ...browser && env === "browser" && globals.browser, ...sharedWorker && env === "browser" && globals.sharedWorker, ...serviceworker && env === "browser" && globals.serviceworker, ...webextension && env === "browser" && globals.webextensions, ...audioWorklet && env === "browser" && globals.audioWorklet, ...vitest && globals.vitest, ...vueGlobals && isEnabled(vue) && globals.vue, ...astroGlobals && isEnabled(astro) && globals.astro, ...userGlobals } }, rules: getJavaScriptRules(options) }, overrides); } //#endregion export { getJavascriptConfig };