@cratis/eslint-plugin-arc
v20.39.1
Published
Cratis Arc ESLint rules: skip generated proxies and keep MVVM view models React-free. Compose on top of @cratis/eslint-config.
Maintainers
Readme
@cratis/eslint-plugin-arc
ESLint rules for projects that consume Cratis Arc. Compose these on top of the Cratis
base config, @cratis/eslint-config.
| Rule / processor | What it does |
|---|---|
| skip-generated-proxies (processor) | Skips Arc-generated proxy files wholesale. They carry a // @generated by Cratis header (and a **DO NOT EDIT** banner), cannot be edited, and are regenerated by the build — so any finding on them is un-actionable. Keyed on the header because proxies sit intermixed with hand-written .ts. |
| no-hooks-in-view-model | Disallows React hook calls inside MVVM view models (classes named *ViewModel). A view model must be a plain, React-free class; inject Cratis abstractions instead of calling hooks. |
Install
yarn add -D @cratis/eslint-plugin-arc @cratis/eslint-config eslintUse
// eslint.config.mjs
import cratis from '@cratis/eslint-config';
import arc from '@cratis/eslint-plugin-arc';
export default [
...cratis.configs.consumer,
...arc.configs.recommended,
// …your project rules
];no-hooks-in-view-model options
'@cratis/arc/no-hooks-in-view-model': ['error', {
classSuffix: 'ViewModel', // class-name suffix that marks a view model
hookPattern: '^use[A-Z]', // bare-identifier calls treated as hooks
additionalHooks: ['injectQuery'], // extra call names to forbid
}]Only bare-identifier calls (useState(...)) are flagged — member calls like
this.useDefaults() are not, so view-model methods that merely start with use are safe.
