dotansimha / dotansimha/graphql-code-generator

feat(graphql-modules-preset): allow custom namespace name

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

Description

### Is your feature request related to a problem? Please describe.

Hi!
I am using `graphql-modules` and preset `@graphql-codegen/graphql-modules-preset`.

*`codegen.ts`*:

```ts
import type { CodegenConfig } from '@graphql-codegen/cli'

const config: CodegenConfig = {
schema: './src/modules/*/*.graphql',
generates: {
'./src/modules/': {
preset: 'graphql-modules',
presetConfig: {
baseTypesPath: './generated.ts',
filename: './generated.ts',
},
plugins: [
'typescript',
'typescript-resolvers',
],
},
},
}

export default config
```

This config generates *`generated.ts`* like this.

```sh
src/modules/
├── generated.ts # `presetConfig.baseTypesPath`
├── foo
│   ├── generated.ts # `presetConfig.filename`
│   ├── index.graphql # Schema for foo module
│   └── index.ts
├── index.ts
└── bar
   ├── generated.ts # `presetConfig.filename`
   ├── index.graphql # Schema for bar module
   └── index.ts
```

*`src/modules/foo/index.ts`*:

```ts
import { FooModule } from './generated.js'

const resolvers: FooModule.Resolvers = {
Query: {
// ...
},
}
```

As we can see above, a directory name becomes a generated namespace prefix.

- *`foo/index.graphql`* => `FooModule`
- *`bar/index.graphql`* => `BarModule`

But, I don't want a prefix.
For instance, I want to do this.

```ts
import { Module } from './generated.js'
```

Thus when you rename the directory, you don't need to change source code.
This is a benefit.

How do you think?

Thanks.

### Describe the solution you'd like

What if we introduce a custom option like `generates.config.namingConvention`?

I'd like to use a custom function, that probably takes context information like path and graphql schema as a argument(s).
It returns string, and becomes namespace name.

### Describe alternatives you've considered

_No response_

### Any additional important details?

_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.