diff --git a/.changeset/eight-jeans-matter.md b/.changeset/eight-jeans-matter.md new file mode 100644 index 00000000..d5d3a5c6 --- /dev/null +++ b/.changeset/eight-jeans-matter.md @@ -0,0 +1,6 @@ +--- +"@proto-graphql/codegen-core": patch +"protoc-gen-nexus": patch +--- + +bug fix proto-gen-nexus for google.Type.Date diff --git a/packages/@proto-graphql/codegen-core/src/printer/util.ts b/packages/@proto-graphql/codegen-core/src/printer/util.ts index 1f6873d9..a956a14f 100644 --- a/packages/@proto-graphql/codegen-core/src/printer/util.ts +++ b/packages/@proto-graphql/codegen-core/src/printer/util.ts @@ -247,6 +247,14 @@ export function isProtobufWrapperType( ); } +export function isGoogleWellKnownType( + proto: ProtoField["type"] +): proto is ProtoMessage { + return ( + proto.kind === "Message" && proto.file.name.startsWith("google/type/") + ); +} + export function isProtobufWellKnownType( proto: ProtoField["type"] ): proto is ProtoMessage { diff --git a/packages/protoc-gen-nexus/src/dslgen/printers/field.ts b/packages/protoc-gen-nexus/src/dslgen/printers/field.ts index aa1884ef..eb208cc2 100644 --- a/packages/protoc-gen-nexus/src/dslgen/printers/field.ts +++ b/packages/protoc-gen-nexus/src/dslgen/printers/field.ts @@ -6,6 +6,7 @@ import { InputObjectType, InterfaceType, isProtobufLong, + isGoogleWellKnownType, isProtobufWellKnownType, ObjectField, ObjectOneofField, @@ -251,7 +252,7 @@ function createResolverCode( } } - if (isProtobufWellKnownType(field.proto.type)) { + if (isProtobufWellKnownType(field.proto.type)|| isGoogleWellKnownType(field.proto.type)) { const transformer = code`${impProtoNexus( "getTransformer" )}("${field.proto.type.fullName.toString()}")`; diff --git a/packages/protoc-gen-nexus/src/dslgen/printers/inputObjectType.ts b/packages/protoc-gen-nexus/src/dslgen/printers/inputObjectType.ts index 57301c8c..8bc535a3 100644 --- a/packages/protoc-gen-nexus/src/dslgen/printers/inputObjectType.ts +++ b/packages/protoc-gen-nexus/src/dslgen/printers/inputObjectType.ts @@ -4,6 +4,7 @@ import { InputObjectField, InputObjectType, isProtobufLong, + isGoogleWellKnownType, isProtobufWellKnownType, protobufGraphQLExtensions, protoType, @@ -93,7 +94,7 @@ export function createToProtoFuncCode( type.fields.map((f) => { let wrapperFunc: (v: Code) => Code = (v) => v; if (f.type instanceof ScalarType) { - if (isProtobufWellKnownType(f.proto.type)) { + if (isProtobufWellKnownType(f.proto.type) || isGoogleWellKnownType(f.proto.type)) { const protoFullName = f.proto.type.fullName.toString(); const transformer = code`${impProtoNexus( "getTransformer"