Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ module.exports = {
// Other eslint properties here
rules: {
'relay/graphql-syntax': 'error',
'relay/compat-uses-vars': 'warn',
'relay/graphql-naming': 'error',
'relay/generated-flow-types': 'warn',
'relay/must-colocate-fragment-spreads': 'warn',
'relay/no-future-added-value': 'warn',
'relay/unused-fields': 'warn',
Expand All @@ -42,6 +40,18 @@ Add `plugin:relay/recommended` or `plugin:relay/strict` in `extends`:
}
```

### Rule Descriptions

Brief descriptions for each rule:

- `relay/graphql-syntax`: Ensures each `graphql\`\`` tagged template literal contains syntactically valid GraphQL. This is also validated by the Relay Compiler, but the ESLint plugin can often provide faster feedback.
- `relay/graphql-naming`: Ensures GraphQL fragments and queries follow Relay's naming conventions. This is also validated by the Relay Compiler, but the ESLint plugin can often provide faster feedback.
- `relay/no-future-added-value`: Ensures code does not try to explicitly handle the `"%future added value"` enum variant which Relay inserts as a placeholder to ensure you handle the possibility that new enum variants may be added by the server after your application has been deployed.
- `relay/unused-fields`: Ensures that every GraphQL field referenced is used within the module that includes it. This helps enable Relay's [optimal data fetching](https://relay.dev/blog/2023/10/24/how-relay-enables-optimal-data-fetching/)
- `relay/function-required-argument`: Ensures that `readInlineData` is always passed an explicit argument even though that argument is allowed to be `undefined` at runtime.
- `relay/hook-required-argument`: Ensures that Relay hooks are always passed an explicit argument even though that argument is allowed to be `undefined` at runtime.
- `relay/must-colocate-fragment-spreads`: Ensures that when a fragment spread is added within a module, that module directly imports the module which defines that fragment. This prevents the anti-pattern when one component fetches a fragment that is not used by a direct child component. **Note**: This rule leans heavily on Meta's globally unique module names. It likely won't work well in other environments.

### Suppressing rules within graphql tags

The following rules support suppression within graphql tags:
Expand Down
8 changes: 0 additions & 8 deletions eslint-plugin-relay.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@
module.exports = {
rules: {
'graphql-syntax': require('./src/rule-graphql-syntax'),
'compat-uses-vars': require('./src/rule-compat-uses-vars'),
'graphql-naming': require('./src/rule-graphql-naming'),
'generated-flow-types': require('./src/rule-generated-flow-types'),
'generated-typescript-types': require('./src/rule-generated-typescript-types'),
'no-future-added-value': require('./src/rule-no-future-added-value'),
'unused-fields': require('./src/rule-unused-fields'),
Expand All @@ -24,9 +22,7 @@ module.exports = {
recommended: {
rules: {
'relay/graphql-syntax': 'error',
'relay/compat-uses-vars': 'warn',
'relay/graphql-naming': 'error',
'relay/generated-flow-types': 'warn',
'relay/no-future-added-value': 'warn',
'relay/unused-fields': 'warn',
'relay/must-colocate-fragment-spreads': 'warn',
Expand All @@ -37,7 +33,6 @@ module.exports = {
'ts-recommended': {
rules: {
'relay/graphql-syntax': 'error',
'relay/compat-uses-vars': 'warn',
'relay/graphql-naming': 'error',
'relay/generated-typescript-types': 'warn',
'relay/no-future-added-value': 'warn',
Expand All @@ -50,9 +45,7 @@ module.exports = {
strict: {
rules: {
'relay/graphql-syntax': 'error',
'relay/compat-uses-vars': 'error',
'relay/graphql-naming': 'error',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this line got deleted instead of the compat-uses-vars above

'relay/generated-flow-types': 'error',
'relay/no-future-added-value': 'error',
'relay/unused-fields': 'error',
'relay/must-colocate-fragment-spreads': 'error',
Expand All @@ -63,7 +56,6 @@ module.exports = {
'ts-strict': {
rules: {
'relay/graphql-syntax': 'error',
'relay/compat-uses-vars': 'error',
'relay/graphql-naming': 'error',
'relay/generated-typescript-types': 'error',
'relay/no-future-added-value': 'error',
Expand Down
153 changes: 0 additions & 153 deletions src/rule-compat-uses-vars.js

This file was deleted.

Loading