dotansimha / dotansimha/graphql-code-generator-community

[typescript-react-apollo] `dedupeOperationSuffix` doesn't work when operation name is all upper case

Open
#126 1 comment 0 reactions 0 assignees View on GitHub
help wanted
Dominant language
TypeScript
Stars
137
Forks
195
Avg merge
6h 20m
Merged PRs (30d)
16

Description

**Describe the bug**

The typescript-react-apollo plugin doesn't properly handle deduping operation suffix when the suffix is all upper case.

**To Reproduce**

Generate apollo typescript hooks with an operation name that is all caps and post-fixed with `QUERY`, `MUTATION`, or `FRAGMENT`.

1. My GraphQL schema:

```graphql
type Query {
user(id: ID!): User!
}

type User {
id: ID!
username: String!
email: String!
}
```

2. My GraphQL operations:

```graphql
query GET_USER_QUERY {
user(id: 1) {
id
username
email
}
}
```

3. My `codegen.yml` config file:

```yml
config:
apolloClientVersion: 3
dedupeOperationSuffix: true
namingConvention:
transformUnderscore: true
documents:
- './src/**/*.graphql'
generates:
src/graphql/types-and-hooks.ts:
schema: schema.graphql
plugins:
- 'typescript'
- 'typescript-operations'
- 'typescript-react-apollo'
```

**Expected behavior**

A hook should be generated with pascal case without duplicate operation name suffix

```ts
export function useGetUserQuery(baseOptions?: ApolloReactHooks.QueryHookOptions) {
const options = {...defaultOptions, ...baseOptions}
return ApolloReactHooks.useQuery(GetUserQueryDocument, options);
}
```

**Environment:**

- OS: MacOS 11.3
- "@graphql-codegen/cli": "^1.21.3",
- "@graphql-codegen/typescript": "^1.21.1",
- "@graphql-codegen/typescript-operations": "^1.17.15",
- "@graphql-codegen/typescript-react-apollo": "^2.2.4",
- NodeJS: 12

**Additional context**

From looking at the codebase, I believe that the operation name being tested [here](https://github.com/dotansimha/graphql-code-generator/blob/master/packages/plugins/typescript/react-apollo/src/visitor.ts#L384) should either be a regex match or convert it to test the operation name via `pascalCase(name).includes(...)`.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.