Eslint-flat-config and @stencil-community/eslint-plugin

Hi :slight_smile:

Did anybody succeed in adding @stencil-community/eslint-plugin to the new eslint-flat-config?

As I understand it, you need @eslint/eslintrc - FlatCompat to integrate ‘legacy’ plugins into the new file format…

eslint.config.js:

import {FlatCompat} from "@eslint/eslintrc";

const compat = new FlatCompat({
  baseDirectory: import.meta.dirname,
});

export default [
	...compat.extends("plugin:@stencil-community/recommended")
];

But I get a bunch of errors:

TypeError: Key “rules”: Key “@stencil-community/strict-boolean-conditions”: Could not find plugin “@stencil-community”.

TypeError: Error while loading rule ‘@stencil-community/async-methods’: Cannot read properties of null (reading ‘getTypeChecker’)

full error log
[Error - 12:32:33 PM] TypeError: Error while loading rule '@stencil-community/async-methods': Cannot read properties of null (reading 'getTypeChecker')
Occurred while linting /home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/src/components/my-component/my-component.tsx
    at Object.create (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/@stencil-community+eslint-plugin@0.7.2_@typescript-eslint+eslint-plugin@6.21.0_@typescript-es_qcora5vdkzibc63sarjg4hw3hi/node_modules/@stencil-community/eslint-plugin/dist/index.js:189:52)
    at createRuleListeners (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:895:21)
    at /home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1066:110
    at Array.forEach (<anonymous>)
    at runRules (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1003:34)
    at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1730:31)
    at Linter._verifyWithFlatConfigArray (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1861:21)
    at Linter.verify (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1433:65)
    at Linter.verifyAndFix (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:2068:29)
    at verifyText (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/eslint/flat-eslint.js:478:48)
[Error - 12:32:34 PM] An unexpected error occurred:
[Error - 12:32:34 PM] TypeError: Key "rules": Key "@stencil-community/strict-boolean-conditions": Could not find plugin "@stencil-community".
    at throwRuleNotFoundError (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/config/rule-validator.js:66:11)
    at RuleValidator.validate (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/config/rule-validator.js:128:17)
    at [finalizeConfig] (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/config/flat-config-array.js:231:23)
    at FlatConfigArray.getConfig (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/@humanwhocodes+config-array@0.11.14/node_modules/@humanwhocodes/config-array/api.js:938:55)
    at FlatESLint.calculateConfigForFile (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/eslint/flat-eslint.js:1091:24)
    at async FlatESLint.isPathIgnored (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/eslint/flat-eslint.js:1113:24)
    at async FlatESLint.lintText (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/eslint/flat-eslint.js:952:33)
    at async /home/christian/.vscode-server/extensions/dbaeumer.vscode-eslint-2.4.4/server/out/eslintServer.js:1:24954
    at async E (/home/christian/.vscode-server/extensions/dbaeumer.vscode-eslint-2.4.4/server/out/eslintServer.js:1:19114)
    at async /home/christian/.vscode-server/extensions/dbaeumer.vscode-eslint-2.4.4/server/out/eslintServer.js:1:220290
[Error - 12:32:34 PM] An unexpected error occurred:
[Error - 12:32:34 PM] TypeError: Error while loading rule '@stencil-community/async-methods': Cannot read properties of null (reading 'getTypeChecker')
Occurred while linting /home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/src/lint-test.ts
    at Object.create (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/@stencil-community+eslint-plugin@0.7.2_@typescript-eslint+eslint-plugin@6.21.0_@typescript-es_qcora5vdkzibc63sarjg4hw3hi/node_modules/@stencil-community/eslint-plugin/dist/index.js:189:52)
    at createRuleListeners (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:895:21)
    at /home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1066:110
    at Array.forEach (<anonymous>)
    at runRules (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1003:34)
    at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1730:31)
    at Linter._verifyWithFlatConfigArray (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1861:21)
    at Linter.verify (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:1433:65)
    at Linter.verifyAndFix (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/linter/linter.js:2068:29)
    at verifyText (/home/christian/@projects/@tests-to-be-removed/modern-node-ts-lint-stencil-storybook/node_modules/.pnpm/eslint@8.57.0/node_modules/eslint/lib/eslint/flat-eslint.js:478:48)

Here are the packages I’m using:

  • @stencil/core”: “^4.12.6”,
  • @eslint/eslintrc”: “^3.0.2”,
  • @stencil-community/eslint-plugin”: “^0.7.2”,
  • “eslint”: “^8.57.0”,

Alternatively, do you know of a way to suppress eslint errors on stencil decorators (@Component, @Prop, …) without adding too much complexity?

Thanks in advance
Christian