UNPKG

@graphql-eslint/eslint-plugin

Version:
130 lines (85 loc) 2.62 kB
# `strict-id-in-types` ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file enables this rule. - Category: `Schema` - Rule name: `@graphql-eslint/strict-id-in-types` - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema) - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations) Requires output types to have one unique identifier unless they do not have a logical one. Exceptions can be used to ignore output types that do not have unique identifiers. ## Usage Examples ### Incorrect ```graphql # eslint @graphql-eslint/strict-id-in-types: ['error', { acceptedIdNames: ['id', '_id'], acceptedIdTypes: ['ID'], exceptions: { suffixes: ['Payload'] } }] # Incorrect field name type InvalidFieldName { key: ID! } # Incorrect field type type InvalidFieldType { id: String! } # Incorrect exception suffix type InvalidSuffixResult { data: String! } # Too many unique identifiers. Must only contain one. type InvalidFieldName { id: ID! _id: ID! } ``` ### Correct ```graphql # eslint @graphql-eslint/strict-id-in-types: ['error', { acceptedIdNames: ['id', '_id'], acceptedIdTypes: ['ID'], exceptions: { types: ['Error'], suffixes: ['Payload'] } }] type User { id: ID! } type Post { _id: ID! } type CreateUserPayload { data: String! } type Error { message: String! } ``` ## Config Schema The schema defines the following properties: ### `acceptedIdNames` (array) The object is an array with all elements of the type `string`. Default: ```json ["id"] ``` Additional restrictions: - Minimum items: `1` - Unique items: `true` ### `acceptedIdTypes` (array) The object is an array with all elements of the type `string`. Default: ```json ["ID"] ``` Additional restrictions: - Minimum items: `1` - Unique items: `true` ### `exceptions` (object) Properties of the `exceptions` object: #### `types` (array) This is used to exclude types with names that match one of the specified values. The object is an array with all elements of the type `string`. Additional restrictions: - Minimum items: `1` - Unique items: `true` #### `suffixes` (array) This is used to exclude types with names with suffixes that match one of the specified values. The object is an array with all elements of the type `string`. Additional restrictions: - Minimum items: `1` - Unique items: `true` ## Resources - [Rule source](../../packages/plugin/src/rules/strict-id-in-types.ts) - [Test source](../../packages/plugin/tests/strict-id-in-types.spec.ts)