dotansimha / dotansimha/graphql-code-generator

@Deprecated directive is not being added to the generated resolver-types.ts when used with enumsAsConst

Open
#9,453 1 comment 3 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
11.3k
Forks
1.4k
Avg merge
1d 1h
Merged PRs (30d)
23

Description

### Which packages are impacted by your issue?

@graphql-codegen/typescript

### Describe the bug

When using the `enumsAsConst` plugin configuration option in `graphql-codegen/typescript` to generate TypeScript enums for GraphQL enums, the `@Deprecated` directive is not being added to the generated `resolver-types.ts` file. This means that any deprecated values in the GraphQL schema are not marked as deprecated in the generated TypeScript types, which could lead to confusion for developers using the generated types.

### Your Example Website or App

https://stackblitz.com/edit/github-jbn6g8?file=codegen.ts

### Steps to Reproduce the Bug or Issue

1. Create a GraphQL schema that includes a deprecated enum value with the `@deprecated` directive:

```
enum Color {
RED
GREEN @deprecated(reason: “Use BLUE instead”)
BLUE
}
```

2. Configure `graphql-codegen` with the `typescript` plugin and the `enumsAsConst` plugin configuration option:

```
plugins:
- typescript
config:
enumsAsConst: true
```
3. Run `graphql-codegen` to generate TypeScript types for the schema.

4. Inspect the generated `resolver-types.ts` file and verify that the deprecated enum value does not have the `@deprecated` JSDoc annotation.

The `@deprecated` JSDoc annotation is not included in the generated `resolver-types.ts` file for deprecated enum values when using the `enumsAsConst` plugin configuration option.

```
export const Color = {
RED: 'RED',
GREEN: 'GREEN',
BLUE: 'BLUE'
} as const;
```

### Expected behavior

The generated `resolver-types.ts` file should include the `@deprecated` JSDoc annotation for any deprecated enum values in the GraphQL schema, even when using the `enumsAsConst` plugin configuration option.

```
enum Color {
RED
GREEN @deprecated(reason: "Use BLUE instead")
BLUE
}

export const Color = {
RED: 'RED',
/** @deprecated Use BLUE instead */
GREEN: 'GREEN',
BLUE: 'BLUE'
} as const;

```

### Screenshots or Videos

_No response_

### Platform

- OS: [e.g. macOS, Windows, Linux]
- NodeJS: [e.g. 18.5.0]
- `graphql` version: [e.g. 16.3.0]
- `@graphql-codegen/*` version(s): [e.g. 2.6.2]

### Codegen Config File

```
schema: 'schema.graphql',
documents: 'document.graphql',
generates: {
'types.ts': {
plugins: ['typescript', 'typescript-operations'],
config: { enumsAsConst: true },
},
},
```

### Additional context

_No response_

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.