dotansimha / dotansimha/graphql-code-generator
feat(graphql-modules-preset): allow custom namespace name
- 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.