
Security News
Security Community Slams MIT-linked Report Claiming AI Powers 80% of Ransomware
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.
@gooddata/eslint-config
Advanced tools
Unified, modular ESLint configuration for the GoodData.UI monorepo.
Unified, modular ESLint configuration for the GoodData.UI monorepo.
This package consolidates ESLint configurations that were previously scattered across:
The new approach provides:
Configuration Modules (src/configurations/)
IConfiguration<RulePrefix> interfaceIndex File (src/index.ts)
common array: Base rules applied to all configsvariants object: Different combinations for specific use casesBuild Process (npm run build)
dist/base.json (all common configs)browser.json, react.json, esm-react.json, etc.@gooddata/eslint-config/react � dist/react.jsonPackage Sync (npm run update-package)
package.json dependencies and peer dependencies.) - Core rules for all packages/browser) - For packages using browser APIs (document, window)/browser-esm) - Browser + ESM import rules/esm) - ESM-specific import rules/esm-vitest) - ESM + Vitest rules/react) - Browser + React + React Hooks rules/react-cypress) - Browser + React + React Hooks + Cypress rules/esm-react) - Browser + React + React Hooks + ESM rules (most React libraries)/esm-react-cypress) - Browser + React + React Hooks + ESM + Cypress rules/esm-react-vitest) - Browser + React + React Hooks + ESM + Vitest rulesFor TypeScript projects, use the tsOverride helper which automatically configures the TypeScript parser, import resolver, and other required settings:
// (C) 2020 GoodData Corporation
const { tsOverride } = require("@gooddata/eslint-config/tsOverride");
module.exports = {
    extends: ["@gooddata/eslint-config/react"],
    overrides: [
        tsOverride(__dirname, {
            // Optional: Add custom TypeScript rule overrides here
            "@typescript-eslint/no-namespace": "off",
            "@typescript-eslint/no-unsafe-assignment": "off",
        }),
    ],
};
What tsOverride does:
@typescript-eslint/parser)tsconfigRootDir to point to your project directory**/*.ts and **/*.tsx filesFor non-TypeScript projects, simply extend the configuration:
module.exports = {
    extends: ["@gooddata/eslint-config/react"],
};
Important Notes:
TypeScript Projects: Using tsOverride(__dirname, rules) is mandatory for TypeScript projects. Without it, @typescript-eslint/parser won't know where to find your tsconfig.json, and import resolution will not work correctly.
Peer Dependencies: Only packages from the common configuration are listed in peerDependencies. Variant-specific packages (e.g., eslint-plugin-react for the react variant) are not included as peer dependencies since they're not required by all consumers.
Verify Dependencies: After adopting a configuration, run npm run eslint (or your lint command) to ensure all necessary dependencies are present in your project. If you get plugin errors, install the missing packages.
src/configurations/ (e.g., my-plugin.ts):// (C) 2025 GoodData Corporation
import type { IConfiguration } from "../types.js";
const configuration: IConfiguration<"my-plugin"> = {
    packages: [
        {
            name: "eslint-plugin-my-plugin",
            version: "1.0.0",
        },
    ],
    plugin: "my-plugin",
    extends: ["plugin:my-plugin/recommended"],
    rules: {
        "my-plugin/some-rule": "error",
    },
};
export default configuration;
src/configurations/index.ts:export { default as myPlugin } from "./my-plugin.js";
common or a variant in src/index.ts:export const common = [
    // ... existing configs
    myPlugin,
];
Run npm run update-package to sync dependencies to package.json
Run npm run build to generate updated JSON configs
src/index.ts:export const variants = {
    // ... existing variants
    "my-variant": [browserEnv, myPlugin],
};
Run npm run update-package to update package.json exports
Run npm run build to generate the new variant JSON file
src/configurations/typescript.ts):const configuration: IConfiguration = {
    packages: [
        {
            name: "@typescript-eslint/parser",
            version: "8.50.0", // � Update here
        },
    ],
    // ...
};
Run npm run update-package to sync to package.json
Run npm run build to regenerate configs
src/configurations/rules: {
    "my-plugin/some-rule": "off", // Disable
    "my-plugin/another-rule": ["error", { option: true }], // Configure
}
npm run build to regenerate JSON configsnpm run build - Generates JSON configuration files in dist/
npm run update-package - Syncs dependencies and exports
devDependencies and peerDependencies in package.jsonexports field based on available variantsnpm run validate - Type-checks TypeScript files
npm run eslint - Lints the configuration source code
Each configuration module follows this structure:
interface IConfiguration<RulePrefix extends string = ""> {
    // Packages required for this configuration
    packages?: Array<{
        name: string;
        version: string;
    }>;
    // Parser to use (e.g., "@typescript-eslint/parser")
    parser?: string;
    // Plugin to register (e.g., "react")
    plugin?: string;
    // Shareable configs to extend
    extends?: string[];
    // Parser options
    parserOptions?: Record<string, number | string>;
    // ESLint rules
    rules?: Rules<RulePrefix>;
    override?: {
        files: string[];
        parser?: string;
        plugin?: string;
        extends?: string[];
        parserOptions?: Record<string, number | string>;
        rules?: Rules<RulePrefix>;
        settings?: Record<string, object>;
        env?: Record<string, boolean>;
        ignorePatterns?: string[];
    };
    // Plugin settings
    settings?: Record<string, object>;
    // Environment settings
    env?: Record<string, boolean>;
    // Ignore patterns (e.g., "**/dist/**/*.*")
    ignorePatterns?: string[];
}
Notes:
**/dist/**/*.* and **/esm/**/*.* files.esm configuration sets parserOptions.sourceType: "module" to tell the parser to treat files as ES modules. The importEsm configuration adds the eslint-plugin-import-esm plugin which enforces ESM-specific import rules (e.g., requiring .js extensions in imports). Most ESM projects need both.FAQs
Unified, modular ESLint configuration for the GoodData.UI monorepo.
The npm package @gooddata/eslint-config receives a total of 539 weekly downloads. As such, @gooddata/eslint-config popularity was classified as not popular.
We found that @gooddata/eslint-config demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 67 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.

Security News
Ruby's creator Matz assumes control of RubyGems and Bundler repositories while former maintainers agree to step back and transfer all rights to end the dispute.

Research
/Security News
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.