Skip to main content
Glama
eslint.config.js3.69 kB
import js from "@eslint/js"; import globals from "globals"; import react from "eslint-plugin-react"; import reactHooks from "eslint-plugin-react-hooks"; import reactRefresh from "eslint-plugin-react-refresh"; import tseslint from "typescript-eslint"; export default tseslint.config( { ignores: [ "dist", "e2e/**", "*.config.ts", "*.config.js", "*.config.cjs", "env.d.ts", "**/*.test.ts", "**/*.test.tsx", ], }, // TypeScript files with type-aware linting { files: ["**/*.{ts,tsx}"], extends: [js.configs.recommended, ...tseslint.configs.recommended], languageOptions: { ecmaVersion: 2020, globals: globals.browser, parserOptions: { ecmaVersion: "latest", ecmaFeatures: { jsx: true }, sourceType: "module", project: true, tsconfigRootDir: import.meta.dirname, }, }, settings: { react: { version: "18.3" } }, plugins: { react, "react-hooks": reactHooks, "react-refresh": reactRefresh, }, rules: { ...react.configs.recommended.rules, ...react.configs["jsx-runtime"].rules, ...reactHooks.configs.recommended.rules, "react/jsx-no-target-blank": "off", "react-refresh/only-export-components": [ "warn", { allowConstantExport: true }, ], "react/prop-types": "off", // Disabled: return types are inferrable and this is a React app "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/no-unused-vars": [ "warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_", }, ], "@typescript-eslint/switch-exhaustiveness-check": [ "error", { allowDefaultCaseForExhaustiveSwitch: true, considerDefaultExhaustiveForUnions: true, }, ], "@typescript-eslint/no-misused-promises": [ "error", { checksVoidReturn: { arguments: false, attributes: false } }, ], // React-specific: disable unescaped entities rule as it's too strict for JSX "react/no-unescaped-entities": "off", // Allow empty interfaces that extend other interfaces (common in React prop patterns) "@typescript-eslint/no-empty-object-type": "off", }, }, // Allow non-component exports in component files (shadcn/ui variants, column definitions, validators) { files: [ "src/components/ui/**/*.{ts,tsx}", "src/components/tools/ToolGroupSheet.tsx", "src/components/tools/ToolsTable.tsx", ], rules: { "react-refresh/only-export-components": "off", }, }, // JavaScript files (legacy shadcn/ui components) { files: ["**/*.{js,jsx}"], extends: [js.configs.recommended], languageOptions: { ecmaVersion: 2020, globals: globals.browser, parserOptions: { ecmaVersion: "latest", ecmaFeatures: { jsx: true }, sourceType: "module", }, }, settings: { react: { version: "18.3" } }, plugins: { react, "react-hooks": reactHooks, "react-refresh": reactRefresh, }, rules: { ...react.configs.recommended.rules, ...react.configs["jsx-runtime"].rules, ...reactHooks.configs.recommended.rules, "react/jsx-no-target-blank": "off", "react-refresh/only-export-components": [ "warn", { allowConstantExport: true }, ], // Disable prop-types for JSX files - this is a TypeScript project // and JSX files are legacy shadcn/ui components "react/prop-types": "off", }, }, );

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheLunarCompany/lunar'

If you have feedback or need assistance with the MCP directory API, please join our Discord server