{"id":19767,"library":"eslint-plugin-fsecond","title":"eslint-plugin-fsecond","description":"ESLint plugin providing opinionated rules for JavaScript, TypeScript, and React projects. Current stable version is 1.5.0 (February 2026). Requires Node.js >=22 and ESLint >=9.0.0. Supports TypeScript via peer dependency typescript >=5.0.0. Key differentiators: includes rules like no-inline-interfaces (auto-fixable), prefer-destructured-optionals, valid-event-listener, and no-redundant-jsx-prop-usage (requires type information). Offers recommended and recommendedTypeChecked configs. Actively maintained with regular releases.","status":"active","version":"1.5.0","language":"javascript","source_language":"en","source_url":"https://github.com/AndreaPontrandolfo/eslint-plugin-fsecond","tags":["javascript","typescript","eslint","eslintplugin","eslint-plugin","react","reactjs"],"install":[{"cmd":"npm install eslint-plugin-fsecond","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-fsecond","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-fsecond","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency: ESLint >=9.0.0 required for plugin to work","package":"eslint","optional":false},{"reason":"optional peer dependency for TypeScript rules (>=5.0.0)","package":"typescript","optional":true}],"imports":[{"note":"Default import of the plugin object. ESM-only as the package does not export a CommonJS entry point.","wrong":"const fsecond = require('eslint-plugin-fsecond')","symbol":"fsecond","correct":"import fsecond from 'eslint-plugin-fsecond'"},{"note":"Accessing configs via named import may fail because the default export is the plugin object with a configs property.","wrong":"import { configs } from 'eslint-plugin-fsecond'","symbol":"fsecond.configs.recommended","correct":"import fsecond from 'eslint-plugin-fsecond'; export default [...fsecond.configs.recommended]"},{"note":"Rules are accessed via the plugin prefix in ESLint configs, not by importing individual rule objects.","wrong":"import { rules } from 'eslint-plugin-fsecond'","symbol":"no-inline-interfaces","correct":"import fsecond from 'eslint-plugin-fsecond'; ... rules: { 'fsecond/no-inline-interfaces': 'error' }"}],"quickstart":{"code":"// eslint.config.ts\nimport fsecond from 'eslint-plugin-fsecond';\n\nexport default [\n  ...fsecond.configs.recommended,\n  {\n    rules: {\n      'fsecond/no-inline-interfaces': ['error', { allowObjectTypes: false }],\n    },\n  },\n];","lang":"typescript","description":"Shows how to use the recommended config and override a rule with options."},"warnings":[{"fix":"Upgrade Node.js to version 22 or higher.","message":"Node.js >=22 required; older Node versions are not supported.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Migrate to ESLint flat config (eslint.config.js/ts) and upgrade ESLint to 9+.","message":"ESLint >=9.0.0 required; flat config only (no .eslintrc).","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Replace 'checkWindowListener' with 'checkGlobalListeners' in rule options.","message":"The rule 'valid-event-listener' has an option 'checkWindowListener' that was deprecated in v1.1.0; use 'checkGlobalListeners' instead.","severity":"deprecated","affected_versions":">=1.1.0"},{"fix":"Use import statements or dynamic import().","message":"Default import is ESM-only; require() will throw an error.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Switch to import syntax or use dynamic import: const fsecond = await import('eslint-plugin-fsecond');","cause":"Package is ESM-only; using require() in a CommonJS file.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module ..."},{"fix":"Run: pnpm add -D eslint-plugin-fsecond","cause":"ESLint plugin not installed or not in node_modules.","error":"ESLint couldn't find the plugin \"eslint-plugin-fsecond\". Are you sure it's installed?"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}