{"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,"search_vec":"'1.5.0':20 '2026':22 '22':25 '5.0.0':35 '9.0.0':28 'activ':71 'auto':46 'auto-fix':45 'config':70 'current':16 'depend':33 'destructur':50 'differenti':37 'eslint':2,5,27,78,81 'eslint-plugin':80 'eslint-plugin-fsecond':1 'eslintplugin':79 'event':54 'februari':21 'fixabl':47 'fsecond':4 'includ':38 'inform':65 'inlin':43 'interfac':44 'javascript':11,76 'jsx':60 'key':36 'like':40 'listen':55 'maintain':72 'no-inline-interfac':41 'no-redundant-jsx-prop-usag':57 'node.js':24 'offer':66 'opinion':8 'option':51 'peer':32 'plugin':3,6,82 'prefer':49 'prefer-destructured-opt':48 'project':15 'prop':61 'provid':7 'react':14,83 'reactj':84 'recommend':67 'recommendedtypecheck':69 'redund':59 'regular':74 'releas':75 'requir':23,63 'rule':9,39 'stabl':17 'support':29 'type':64 'typescript':12,30,34,77 'usag':62 'valid':53 'valid-event-listen':52 'version':18 'via':31","created_at":"2026-04-25T11:19:32.311744+00:00","updated_at":"2026-04-25T11:19:32.311744+00:00","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,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/AndreaPontrandolfo/eslint-plugin-fsecond","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/eslint-plugin-fsecond","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-17","next_check":"2026-07-24","install_tag":null}}