c668b72c3f
## Summary Enforces `react/react-compiler` as an error for the webapp now that all reported compiler diagnostics are fixed or narrowly scoped. Removes the unused lazy-ref helper made obsolete by the ref initialization cleanup.
170 lines
5.7 KiB
JSON
170 lines
5.7 KiB
JSON
{
|
|
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
|
"categories": {
|
|
"correctness": "error"
|
|
},
|
|
"plugins": ["typescript", "import", "react", "jsx-a11y"],
|
|
"jsPlugins": [
|
|
"./oxlint-plugins/no-thrown-unawaited-redirect.mjs",
|
|
"./oxlint-plugins/runops-residency.mjs",
|
|
"./oxlint-plugins/prisma-in-filter.mjs"
|
|
],
|
|
"ignorePatterns": [
|
|
"**/dist/**",
|
|
"**/build/**",
|
|
"**/.worktrees/**",
|
|
"**/*.d.ts",
|
|
"**/seed.js",
|
|
"**/seedCloud.ts",
|
|
"**/populate.js",
|
|
"internal-packages/tsql/src/grammar/"
|
|
],
|
|
"rules": {
|
|
"no-unused-vars": [
|
|
"error",
|
|
{
|
|
"args": "none",
|
|
"argsIgnorePattern": "^_",
|
|
"varsIgnorePattern": "^_",
|
|
"caughtErrors": "all",
|
|
"caughtErrorsIgnorePattern": "^_",
|
|
"destructuredArrayIgnorePattern": "^_",
|
|
"ignoreRestSiblings": true
|
|
}
|
|
],
|
|
"no-empty-pattern": "off",
|
|
"no-control-regex": "off",
|
|
"typescript/no-non-null-asserted-optional-chain": "error",
|
|
"no-unused-expressions": [
|
|
"error",
|
|
{
|
|
"allowShortCircuit": true,
|
|
"allowTernary": true
|
|
}
|
|
],
|
|
"typescript/consistent-type-imports": "error",
|
|
"import/no-duplicates": "error",
|
|
"import/namespace": "off",
|
|
"react/exhaustive-deps": "error",
|
|
"react/rules-of-hooks": "off",
|
|
"guard-for-in": "error",
|
|
"symbol-description": "error",
|
|
"no-unneeded-ternary": "error",
|
|
"prefer-object-has-own": "error",
|
|
"no-redeclare": "error",
|
|
"no-multi-assign": "error",
|
|
"prefer-object-spread": "error",
|
|
"react/jsx-no-target-blank": "error",
|
|
"react/jsx-fragments": "error",
|
|
"react/self-closing-comp": "error",
|
|
"react/jsx-no-constructed-context-values": "error",
|
|
"react/no-children-prop": "error",
|
|
"react/no-danger-with-children": "error",
|
|
"react/no-direct-mutation-state": "error",
|
|
"react/no-find-dom-node": "error",
|
|
"react/no-is-mounted": "error",
|
|
"react/no-render-return-value": "error",
|
|
"react/no-string-refs": "error",
|
|
"react/no-unsafe": "error",
|
|
"react/no-will-update-set-state": "error",
|
|
"react/require-render-return": "error",
|
|
"react/style-prop-object": "error",
|
|
"react/void-dom-elements-no-children": "error",
|
|
"react/checked-requires-onchange-or-readonly": "error",
|
|
"react/forward-ref-uses-ref": "error",
|
|
"react/iframe-missing-sandbox": "error",
|
|
"react/no-unknown-property": "error",
|
|
"jsx-a11y/alt-text": "error",
|
|
"jsx-a11y/aria-role": "error",
|
|
"jsx-a11y/click-events-have-key-events": "error",
|
|
"jsx-a11y/control-has-associated-label": [
|
|
"error",
|
|
{
|
|
"depth": 4,
|
|
"ignoreElements": ["audio", "canvas", "embed", "input", "textarea", "tr", "td", "video"]
|
|
}
|
|
],
|
|
"jsx-a11y/label-has-associated-control": "error",
|
|
"jsx-a11y/no-autofocus": "off",
|
|
"jsx-a11y/no-noninteractive-element-interactions": "error",
|
|
"jsx-a11y/no-static-element-interactions": "error",
|
|
"jsx-a11y/prefer-tag-over-role": "off",
|
|
"jsx-a11y/anchor-ambiguous-text": "error",
|
|
"jsx-a11y/anchor-has-content": "error",
|
|
"jsx-a11y/anchor-is-valid": "error",
|
|
"jsx-a11y/aria-activedescendant-has-tabindex": "error",
|
|
"jsx-a11y/aria-props": "error",
|
|
"jsx-a11y/aria-proptypes": "error",
|
|
"jsx-a11y/aria-unsupported-elements": "error",
|
|
"jsx-a11y/autocomplete-valid": "error",
|
|
"jsx-a11y/heading-has-content": "error",
|
|
"jsx-a11y/html-has-lang": "error",
|
|
"jsx-a11y/iframe-has-title": "error",
|
|
"jsx-a11y/img-redundant-alt": "error",
|
|
"jsx-a11y/media-has-caption": "error",
|
|
"jsx-a11y/no-access-key": "error",
|
|
"jsx-a11y/no-aria-hidden-on-focusable": "error",
|
|
"jsx-a11y/no-distracting-elements": "error",
|
|
"jsx-a11y/no-redundant-roles": "error",
|
|
"jsx-a11y/role-has-required-aria-props": "error",
|
|
"jsx-a11y/role-supports-aria-props": "error",
|
|
"jsx-a11y/scope": "error",
|
|
"jsx-a11y/tabindex-no-positive": "error",
|
|
"no-lone-blocks": "error",
|
|
"typescript/prefer-function-type": "error",
|
|
"typescript/prefer-for-of": "error",
|
|
"trigger/no-thrown-unawaited-redirect": "error",
|
|
"trigger-prisma/no-unbounded-list-filter": "error",
|
|
"trigger-prisma/no-unbounded-list-filter-in-args-helper": "error"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"files": ["apps/webapp/app/**/*.ts", "apps/webapp/app/**/*.tsx"],
|
|
"rules": {
|
|
"react/button-has-type": "error",
|
|
"react/jsx-no-useless-fragment": "error",
|
|
"react/no-unstable-nested-components": "error",
|
|
"react/react-compiler": "error",
|
|
"react/rules-of-hooks": "error",
|
|
"trigger-runops/no-control-plane-run-graph-access": "error",
|
|
"trigger-runops/no-control-plane-in-runops-slot": "error"
|
|
}
|
|
},
|
|
{
|
|
"files": ["packages/react-hooks/src/**/*.ts", "packages/react-hooks/src/**/*.tsx"],
|
|
"rules": {
|
|
"react/rules-of-hooks": "error"
|
|
}
|
|
},
|
|
{
|
|
"files": ["apps/webapp/app/**/*.test.ts", "apps/webapp/app/**/*.test.tsx"],
|
|
"rules": {
|
|
"trigger-runops/no-control-plane-run-graph-access": "off",
|
|
"trigger-runops/no-control-plane-in-runops-slot": "off"
|
|
}
|
|
},
|
|
{
|
|
"files": ["**/*.test.ts", "**/*.test.tsx", "**/test/**", "**/tests/**", "**/e2e/**"],
|
|
"rules": {
|
|
"trigger-prisma/no-unbounded-list-filter": "off",
|
|
"trigger-prisma/no-unbounded-list-filter-in-args-helper": "off"
|
|
}
|
|
},
|
|
{
|
|
"files": ["internal-packages/tsql/**"],
|
|
"rules": {
|
|
"prefer-object-has-own": "off"
|
|
}
|
|
},
|
|
{
|
|
"files": [
|
|
"apps/webapp/app/components/primitives/charts/Chart.tsx",
|
|
"apps/webapp/app/components/primitives/Timeline.tsx"
|
|
],
|
|
"rules": {
|
|
"react/jsx-no-constructed-context-values": "off"
|
|
}
|
|
}
|
|
]
|
|
}
|