Skip to content

Commit ec4dfb0

Browse files
authored
Merge pull request #828 from sutt0n/fix/name-parts
fix(enum): propagate namingConvention.transformUnderscore to convertNameParts
2 parents d8e91dc + db7e15e commit ec4dfb0

File tree

14 files changed

+256
-33
lines changed

14 files changed

+256
-33
lines changed

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,6 @@ type: `NamingConventionMap` default: `{ enumValues: "change-case-all#pascalCase"
215215

216216
Uses the full path of the enum type as the default value instead of the stringified value.
217217

218-
Note: This option has not been tested with `namingConvention.transformUnderscore` and `namingConvention.typeNames` options and may not work as expected.
219-
220218
Related: https://the-guild.dev/graphql/codegen/docs/config-reference/naming-convention#namingconvention
221219

222220
### `directives`

src/directive.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { ConstArgumentNode, ConstDirectiveNode, ConstValueNode } from 'graphql';
2+
import { Kind, valueFromASTUntyped } from 'graphql';
23
import type { DirectiveConfig, DirectiveObjectArguments } from './config.js';
34

4-
import { Kind, valueFromASTUntyped } from 'graphql';
55
import { isConvertableRegexp } from './regexp.js';
66

77
export interface FormattedDirectiveConfig {

src/graphql.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import type {
55
GraphQLSchema,
66
InterfaceTypeDefinitionNode,
77
ListTypeNode,
8-
NamedTypeNode,
98
NameNode,
9+
NamedTypeNode,
1010
NonNullTypeNode,
1111
ObjectTypeDefinitionNode,
1212
TypeNode,

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';
22
import type { GraphQLSchema } from 'graphql';
3+
import { transformSchemaAST } from '@graphql-codegen/schema-ast';
4+
import { buildSchema, printSchema, visit } from 'graphql';
35
import type { ValidationSchemaPluginConfig } from './config.js';
46
import type { SchemaVisitor } from './types.js';
57

6-
import { transformSchemaAST } from '@graphql-codegen/schema-ast';
7-
import { buildSchema, printSchema, visit } from 'graphql';
88
import { isGeneratedByIntrospection, topologicalSortAST } from './graphql.js';
99
import { MyZodSchemaVisitor } from './myzod/index.js';
1010
import { ValibotSchemaVisitor } from './valibot/index.js';

src/myzod/index.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,23 @@ import type {
1010
TypeNode,
1111
UnionTypeDefinitionNode,
1212
} from 'graphql';
13-
import type { ValidationSchemaPluginConfig } from '../config.js';
14-
import type { Visitor } from '../visitor.js';
1513

1614
import { resolveExternalModuleAndFn } from '@graphql-codegen/plugin-helpers';
17-
import { convertNameParts, DeclarationBlock, indent } from '@graphql-codegen/visitor-plugin-common';
15+
import { DeclarationBlock, convertNameParts, indent } from '@graphql-codegen/visitor-plugin-common';
1816
import {
1917
Kind,
2018
} from 'graphql';
19+
import type { Visitor } from '../visitor.js';
20+
import type { ValidationSchemaPluginConfig } from '../config.js';
2121
import { buildApi, formatDirectiveConfig } from '../directive.js';
2222
import {
23-
escapeGraphQLCharacters,
2423
InterfaceTypeDefinitionBuilder,
24+
ObjectTypeDefinitionBuilder,
25+
escapeGraphQLCharacters,
2526
isInput,
2627
isListType,
2728
isNamedType,
2829
isNonNullType,
29-
ObjectTypeDefinitionBuilder,
3030
} from '../graphql.js';
3131
import { BaseSchemaVisitor } from '../schema_visitor.js';
3232

@@ -290,10 +290,10 @@ function generateFieldTypeMyZodSchema(config: ValidationSchemaPluginConfig, visi
290290

291291
if (defaultValue?.kind === Kind.STRING || defaultValue?.kind === Kind.ENUM) {
292292
if (config.useEnumTypeAsDefaultValue && defaultValue?.kind !== Kind.STRING) {
293-
let value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn('change-case-all#pascalCase'));
293+
let value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn('change-case-all#pascalCase'), config?.namingConvention?.transformUnderscore);
294294

295295
if (config.namingConvention?.enumValues)
296-
value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn(config.namingConvention?.enumValues));
296+
value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn(config.namingConvention?.enumValues), config?.namingConvention?.transformUnderscore);
297297

298298
appliedDirectivesGen = `${appliedDirectivesGen}.default(${visitor.convertName(type.name.value)}.${value})`;
299299
}

src/valibot/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@ import type {
1010
TypeNode,
1111
UnionTypeDefinitionNode,
1212
} from 'graphql';
13+
import { DeclarationBlock, indent } from '@graphql-codegen/visitor-plugin-common';
1314
import type { ValidationSchemaPluginConfig } from '../config.js';
1415

1516
import type { Visitor } from '../visitor.js';
16-
import { DeclarationBlock, indent } from '@graphql-codegen/visitor-plugin-common';
1717
import { buildApiForValibot, formatDirectiveConfig } from '../directive.js';
1818
import {
1919
InterfaceTypeDefinitionBuilder,
20+
ObjectTypeDefinitionBuilder,
2021
isInput,
2122
isListType,
2223
isNamedType,
2324
isNonNullType,
24-
ObjectTypeDefinitionBuilder,
2525
} from '../graphql.js';
2626
import { BaseSchemaVisitor } from '../schema_visitor.js';
2727

src/visitor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import type {
55
NameNode,
66
ObjectTypeDefinitionNode,
77
} from 'graphql';
8-
import type { ValidationSchemaPluginConfig } from './config.js';
98
import { TsVisitor } from '@graphql-codegen/typescript';
109

1110
import {
1211
specifiedScalarTypes,
1312
} from 'graphql';
13+
import type { ValidationSchemaPluginConfig } from './config.js';
1414

1515
export class Visitor extends TsVisitor {
1616
constructor(

src/yup/index.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,23 @@ import type {
1010
TypeNode,
1111
UnionTypeDefinitionNode,
1212
} from 'graphql';
13-
import type { ValidationSchemaPluginConfig } from '../config.js';
14-
import type { Visitor } from '../visitor.js';
1513

1614
import { resolveExternalModuleAndFn } from '@graphql-codegen/plugin-helpers';
17-
import { convertNameParts, DeclarationBlock, indent } from '@graphql-codegen/visitor-plugin-common';
15+
import { DeclarationBlock, convertNameParts, indent } from '@graphql-codegen/visitor-plugin-common';
1816
import {
1917
Kind,
2018
} from 'graphql';
19+
import type { Visitor } from '../visitor.js';
20+
import type { ValidationSchemaPluginConfig } from '../config.js';
2121
import { buildApi, formatDirectiveConfig } from '../directive.js';
2222
import {
23-
escapeGraphQLCharacters,
2423
InterfaceTypeDefinitionBuilder,
24+
ObjectTypeDefinitionBuilder,
25+
escapeGraphQLCharacters,
2526
isInput,
2627
isListType,
2728
isNamedType,
2829
isNonNullType,
29-
ObjectTypeDefinitionBuilder,
3030
} from '../graphql.js';
3131
import { BaseSchemaVisitor } from '../schema_visitor.js';
3232

@@ -292,10 +292,10 @@ function shapeFields(fields: readonly (FieldDefinitionNode | InputValueDefinitio
292292

293293
if (defaultValue?.kind === Kind.STRING || defaultValue?.kind === Kind.ENUM) {
294294
if (config.useEnumTypeAsDefaultValue && defaultValue?.kind !== Kind.STRING) {
295-
let value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn('change-case-all#pascalCase'));
295+
let value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn('change-case-all#pascalCase'), config?.namingConvention?.transformUnderscore);
296296

297297
if (config.namingConvention?.enumValues)
298-
value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn(config.namingConvention?.enumValues));
298+
value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn(config.namingConvention?.enumValues), config?.namingConvention?.transformUnderscore);
299299

300300
fieldSchema = `${fieldSchema}.default(${visitor.convertName(field.name.value)}.${value})`;
301301
}

src/zod/index.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,23 @@ import type {
1010
TypeNode,
1111
UnionTypeDefinitionNode,
1212
} from 'graphql';
13-
import type { ValidationSchemaPluginConfig } from '../config.js';
14-
import type { Visitor } from '../visitor.js';
1513

1614
import { resolveExternalModuleAndFn } from '@graphql-codegen/plugin-helpers';
17-
import { convertNameParts, DeclarationBlock, indent } from '@graphql-codegen/visitor-plugin-common';
15+
import { DeclarationBlock, convertNameParts, indent } from '@graphql-codegen/visitor-plugin-common';
1816
import {
1917
Kind,
2018
} from 'graphql';
19+
import type { Visitor } from '../visitor.js';
20+
import type { ValidationSchemaPluginConfig } from '../config.js';
2121
import { buildApi, formatDirectiveConfig } from '../directive.js';
2222
import {
23-
escapeGraphQLCharacters,
2423
InterfaceTypeDefinitionBuilder,
24+
ObjectTypeDefinitionBuilder,
25+
escapeGraphQLCharacters,
2526
isInput,
2627
isListType,
2728
isNamedType,
2829
isNonNullType,
29-
ObjectTypeDefinitionBuilder,
3030
} from '../graphql.js';
3131
import { BaseSchemaVisitor } from '../schema_visitor.js';
3232

@@ -306,10 +306,10 @@ function generateFieldTypeZodSchema(config: ValidationSchemaPluginConfig, visito
306306

307307
if (defaultValue?.kind === Kind.STRING || defaultValue?.kind === Kind.ENUM) {
308308
if (config.useEnumTypeAsDefaultValue && defaultValue?.kind !== Kind.STRING) {
309-
let value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn('change-case-all#pascalCase'));
309+
let value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn('change-case-all#pascalCase'), config.namingConvention?.transformUnderscore);
310310

311311
if (config.namingConvention?.enumValues)
312-
value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn(config.namingConvention?.enumValues));
312+
value = convertNameParts(defaultValue.value, resolveExternalModuleAndFn(config.namingConvention?.enumValues), config.namingConvention?.transformUnderscore);
313313

314314
appliedDirectivesGen = `${appliedDirectivesGen}.default(${type.name.value}.${value})`;
315315
}

tests/directive.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import type { ConstArgumentNode, ConstDirectiveNode, ConstValueNode, NameNode } from 'graphql';
2+
import { Kind, parseConstValue } from 'graphql';
23
import type { DirectiveConfig, DirectiveObjectArguments } from '../src/config';
34

45
import type {
56
FormattedDirectiveArguments,
67
FormattedDirectiveConfig,
78
FormattedDirectiveObjectArguments,
89
} from '../src/directive';
9-
import { Kind, parseConstValue } from 'graphql';
1010
import {
1111
buildApi,
1212
buildApiForValibot,

0 commit comments

Comments
 (0)