mirror of
https://github.com/zen-browser/www.git
synced 2025-07-07 08:55:32 +02:00
93 lines
2.3 KiB
TypeScript
93 lines
2.3 KiB
TypeScript
import { includeIgnoreFile } from "@eslint/compat";
|
|
import type { TSESLint } from "@typescript-eslint/utils";
|
|
import prettierConfig from "eslint-config-prettier";
|
|
import astro from "eslint-plugin-astro";
|
|
import { dirname, resolve } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import tseslint from "typescript-eslint";
|
|
|
|
// Import modular configurations
|
|
import { astroConfig } from "./.eslint/astro";
|
|
import { baseConfig } from "./.eslint/base";
|
|
import { configFilesConfig } from "./.eslint/config-files";
|
|
import { importConfigArray } from "./.eslint/import";
|
|
import { javascriptConfig } from "./.eslint/javascript";
|
|
import { jsxA11yConfig } from "./.eslint/jsx-a11y";
|
|
import { reactConfig, reactHooksConfig } from "./.eslint/react";
|
|
import { testConfig } from "./.eslint/test";
|
|
import { createTypescriptConfig } from "./.eslint/typescript";
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
const tsConfigPath = resolve(__dirname, "./tsconfig.json");
|
|
|
|
const ignoresConfig = {
|
|
name: "eslint/ignores",
|
|
ignores: [
|
|
// Build outputs
|
|
"**/dist/**",
|
|
"**/build/**",
|
|
"**/.astro/**",
|
|
"**/node_modules/**",
|
|
|
|
// Test outputs
|
|
"**/coverage/**",
|
|
"**/playwright-report/**",
|
|
"**/test-results/**",
|
|
|
|
// Config files that don't need linting
|
|
"**/*.config.js",
|
|
"**/*.config.mjs",
|
|
"**/wrangler.toml",
|
|
|
|
// Other common ignores
|
|
"**/.next/**",
|
|
"**/.nuxt/**",
|
|
"**/.output/**",
|
|
"**/.vercel/**",
|
|
"**/.netlify/**",
|
|
"**/public/**",
|
|
"**/*.min.js",
|
|
"**/*.d.ts",
|
|
"**/CHANGELOG.md",
|
|
"**/README.md",
|
|
],
|
|
} satisfies TSESLint.FlatConfig.Config;
|
|
|
|
const config: TSESLint.FlatConfig.ConfigArray = tseslint.config(
|
|
// Include .gitignore patterns
|
|
includeIgnoreFile(resolve(__dirname, ".gitignore")),
|
|
|
|
// Core configurations
|
|
ignoresConfig,
|
|
baseConfig,
|
|
// TypeScript ecosystem
|
|
...tseslint.configs.strict,
|
|
...tseslint.configs.stylistic,
|
|
createTypescriptConfig(tsConfigPath),
|
|
|
|
// Import management
|
|
...importConfigArray,
|
|
|
|
// Framework specific
|
|
reactConfig,
|
|
reactHooksConfig,
|
|
jsxA11yConfig,
|
|
|
|
// Astro specific
|
|
...astro.configs.recommended,
|
|
astroConfig,
|
|
|
|
// Language specific
|
|
javascriptConfig,
|
|
|
|
// Special cases
|
|
testConfig,
|
|
configFilesConfig,
|
|
|
|
// Prettier integration (must be last)
|
|
prettierConfig,
|
|
);
|
|
|
|
export default config;
|