From 242adad49305141a9c81f2a3329517f4328d0b25 Mon Sep 17 00:00:00 2001 From: Ola Okelola <10857143+lolopinto@users.noreply.github.com> Date: Sun, 17 Nov 2024 16:46:31 -0800 Subject: [PATCH] make types in union deterministic (#1855) --- .../graphql/generated/resolvers/contact_item_result_type.ts | 2 +- .../simple/src/graphql/generated/resolvers/feedback_type.ts | 2 +- .../src/graphql/generated/resolvers/with_day_of_week_type.ts | 2 +- internal/graphql/custom_ts.go | 3 +++ internal/graphql/generate_ts_code.go | 2 ++ 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/examples/simple/src/graphql/generated/resolvers/contact_item_result_type.ts b/examples/simple/src/graphql/generated/resolvers/contact_item_result_type.ts index 41bccca2c..af864dd4c 100644 --- a/examples/simple/src/graphql/generated/resolvers/contact_item_result_type.ts +++ b/examples/simple/src/graphql/generated/resolvers/contact_item_result_type.ts @@ -12,5 +12,5 @@ import { export const ContactItemResultType = new GraphQLUnionType({ name: "ContactItemResult", - types: () => [ContactEmailType, ContactPhoneNumberType, ContactDateType], + types: () => [ContactDateType, ContactEmailType, ContactPhoneNumberType], }); diff --git a/examples/simple/src/graphql/generated/resolvers/feedback_type.ts b/examples/simple/src/graphql/generated/resolvers/feedback_type.ts index b35e1d1f6..73866ce21 100644 --- a/examples/simple/src/graphql/generated/resolvers/feedback_type.ts +++ b/examples/simple/src/graphql/generated/resolvers/feedback_type.ts @@ -14,9 +14,9 @@ import { export const FeedbackType = new GraphQLUnionType({ name: "Feedback", types: () => [ + ContactType, ContactEmailType, ContactPhoneNumberType, UserType, - ContactType, ], }); diff --git a/examples/simple/src/graphql/generated/resolvers/with_day_of_week_type.ts b/examples/simple/src/graphql/generated/resolvers/with_day_of_week_type.ts index a0b4cbb3c..a41fc435e 100644 --- a/examples/simple/src/graphql/generated/resolvers/with_day_of_week_type.ts +++ b/examples/simple/src/graphql/generated/resolvers/with_day_of_week_type.ts @@ -8,5 +8,5 @@ import { HolidayType, HoursOfOperationType } from "../../resolvers/internal"; export const WithDayOfWeekType = new GraphQLUnionType({ name: "WithDayOfWeek", - types: () => [HoursOfOperationType, HolidayType], + types: () => [HolidayType, HoursOfOperationType], }); diff --git a/internal/graphql/custom_ts.go b/internal/graphql/custom_ts.go index f5ed8358d..757e152ce 100644 --- a/internal/graphql/custom_ts.go +++ b/internal/graphql/custom_ts.go @@ -3,6 +3,7 @@ package graphql import ( "fmt" "path/filepath" + "sort" "strings" "github.com/lolopinto/ent/internal/codegen" @@ -1090,6 +1091,8 @@ func processCustomUnions(processor *codegen.Processor, cd *CustomData, s *gqlSch unionTypes := make([]string, len(union.UnionTypes)) imports := make([]*tsimport.ImportPath, len(union.UnionTypes)) + // sort to make sure it's deterministic + sort.Strings(union.UnionTypes) for i, unionType := range union.UnionTypes { unionTypes[i] = fmt.Sprintf("%sType", unionType) imports[i] = tsimport.NewLocalGraphQLEntImportPath(unionType) diff --git a/internal/graphql/generate_ts_code.go b/internal/graphql/generate_ts_code.go index 4321c49cf..8edd1b306 100644 --- a/internal/graphql/generate_ts_code.go +++ b/internal/graphql/generate_ts_code.go @@ -1670,6 +1670,8 @@ func buildGQLSchema(processor *codegen.Processor) chan *buildGQLSchemaResult { unionTypes := make([]string, len(nodeNames)) imports := make([]*tsimport.ImportPath, len(nodeNames)) + // sort for deterministic output + sort.Strings(nodeNames) for i, nodeName := range nodeNames { unionTypes[i] = fmt.Sprintf("%sType", nodeName) imports[i] = tsimport.NewLocalGraphQLEntImportPath(nodeName)