From e6de771b23a37c658223d3c751d457d3e132e978 Mon Sep 17 00:00:00 2001 From: mvn-namnguyen-dn Date: Mon, 20 Nov 2023 10:57:57 +0900 Subject: [PATCH 1/2] fix: proto-gen-nexus google type --- packages/@proto-graphql/codegen-core/src/printer/util.ts | 8 ++++++++ packages/protoc-gen-nexus/src/dslgen/printers/field.ts | 3 ++- .../src/dslgen/printers/inputObjectType.ts | 3 ++- 3 files changed, 12 insertions(+), 2 deletions(-) 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" From 04ece3f29edd41e466dd10c2c6d3d7a1a4ec83ee Mon Sep 17 00:00:00 2001 From: mvn-namnguyen-dn Date: Mon, 20 Nov 2023 13:16:42 +0900 Subject: [PATCH 2/2] docs(changeset): bug fix proto-gen-nexus for google.Type.Date --- .changeset/eight-jeans-matter.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/eight-jeans-matter.md 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