From 7675b4bbc23f815affb870c831747a5144176f0d Mon Sep 17 00:00:00 2001 From: df-wg Date: Thu, 5 Dec 2024 13:54:52 +0200 Subject: [PATCH 01/20] feat: make multipart heartbeat configurable (#1006) Previous work for multipart added a timer for regular heartbeat messages which could be set to keep the subscription connection alive. We had configured it to always be 5 seconds, but that caused friction in our cosmo tests which wanted to verify that the heartbeat would be sent. This PR allows for it to be configurable via options, so that we can change it in our tests and save a few seconds. --- v2/pkg/engine/resolve/resolve.go | 42 +++++++++++++++++++------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/v2/pkg/engine/resolve/resolve.go b/v2/pkg/engine/resolve/resolve.go index 7db2ac172..fde2a351e 100644 --- a/v2/pkg/engine/resolve/resolve.go +++ b/v2/pkg/engine/resolve/resolve.go @@ -21,7 +21,7 @@ import ( ) const ( - HeartbeatInterval = 5 * time.Second + DefaultHeartbeatInterval = 5 * time.Second ) var ( @@ -65,8 +65,9 @@ type Resolver struct { reporter Reporter asyncErrorWriter AsyncErrorWriter - propagateSubgraphErrors bool - propagateSubgraphStatusCodes bool + propagateSubgraphErrors bool + propagateSubgraphStatusCodes bool + multipartSubHeartbeatInterval time.Duration } func (r *Resolver) SetAsyncErrorWriter(w AsyncErrorWriter) { @@ -142,6 +143,8 @@ type ResolverOptions struct { ResolvableOptions ResolvableOptions // AllowedCustomSubgraphErrorFields defines which fields are allowed in the subgraph error when in passthrough mode AllowedSubgraphErrorFields []string + // MultipartSubHeartbeatInterval defines the interval in which a heartbeat is sent to all multipart subscriptions + MultipartSubHeartbeatInterval time.Duration } // New returns a new Resolver, ctx.Done() is used to cancel all active subscriptions & streams @@ -151,6 +154,10 @@ func New(ctx context.Context, options ResolverOptions) *Resolver { options.MaxConcurrency = 32 } + if options.MultipartSubHeartbeatInterval <= 0 { + options.MultipartSubHeartbeatInterval = DefaultHeartbeatInterval + } + // We transform the allowed fields into a map for faster lookups allowedExtensionFields := make(map[string]struct{}, len(options.AllowedErrorExtensionFields)) for _, field := range options.AllowedErrorExtensionFields { @@ -176,18 +183,19 @@ func New(ctx context.Context, options ResolverOptions) *Resolver { } resolver := &Resolver{ - ctx: ctx, - options: options, - propagateSubgraphErrors: options.PropagateSubgraphErrors, - propagateSubgraphStatusCodes: options.PropagateSubgraphStatusCodes, - events: make(chan subscriptionEvent), - triggers: make(map[uint64]*trigger), - heartbeatSubscriptions: make(map[*Context]*sub), - reporter: options.Reporter, - asyncErrorWriter: options.AsyncErrorWriter, - triggerUpdateBuf: bytes.NewBuffer(make([]byte, 0, 1024)), - allowedErrorExtensionFields: allowedExtensionFields, - allowedErrorFields: allowedErrorFields, + ctx: ctx, + options: options, + propagateSubgraphErrors: options.PropagateSubgraphErrors, + propagateSubgraphStatusCodes: options.PropagateSubgraphStatusCodes, + events: make(chan subscriptionEvent), + triggers: make(map[uint64]*trigger), + heartbeatSubscriptions: make(map[*Context]*sub), + reporter: options.Reporter, + asyncErrorWriter: options.AsyncErrorWriter, + triggerUpdateBuf: bytes.NewBuffer(make([]byte, 0, 1024)), + allowedErrorExtensionFields: allowedExtensionFields, + allowedErrorFields: allowedErrorFields, + multipartSubHeartbeatInterval: options.MultipartSubHeartbeatInterval, } resolver.maxConcurrency = make(chan struct{}, options.MaxConcurrency) for i := 0; i < options.MaxConcurrency; i++ { @@ -358,7 +366,7 @@ func (r *Resolver) executeSubscriptionUpdate(ctx *Context, sub *sub, sharedInput func (r *Resolver) handleEvents() { done := r.ctx.Done() - heartbeat := time.NewTicker(HeartbeatInterval) + heartbeat := time.NewTicker(r.multipartSubHeartbeatInterval) defer heartbeat.Stop() for { select { @@ -407,7 +415,7 @@ func (r *Resolver) handleHeartbeat(data []byte) { // check if the last write to the subscription was more than heartbeat interval ago c, s := c, s s.mux.Lock() - skipHeartbeat := now.Sub(s.lastWrite) < HeartbeatInterval + skipHeartbeat := now.Sub(s.lastWrite) < r.multipartSubHeartbeatInterval s.mux.Unlock() if skipHeartbeat { continue From c4b8c3b997f556c1c10747654c8154c1320b8cdd Mon Sep 17 00:00:00 2001 From: Dustin Deus Date: Thu, 5 Dec 2024 14:05:36 +0100 Subject: [PATCH 02/20] chore(master): release 2.0.0-rc.132 (#1007) :robot: I have created a release *beep* *boop* --- ## [2.0.0-rc.132](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.131...v2.0.0-rc.132) (2024-12-05) ### Features * make multipart heartbeat configurable ([#1006](https://github.com/wundergraph/graphql-go-tools/issues/1006)) ([7675b4b](https://github.com/wundergraph/graphql-go-tools/commit/7675b4bbc23f815affb870c831747a5144176f0d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- release-please-manifest.json | 2 +- v2/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/release-please-manifest.json b/release-please-manifest.json index 14a1914f8..2fe5a7bbd 100644 --- a/release-please-manifest.json +++ b/release-please-manifest.json @@ -1,4 +1,4 @@ { - "v2": "2.0.0-rc.131", + "v2": "2.0.0-rc.132", "execution": "1.1.0" } diff --git a/v2/CHANGELOG.md b/v2/CHANGELOG.md index 43d67abb4..a14162038 100644 --- a/v2/CHANGELOG.md +++ b/v2/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.0.0-rc.132](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.131...v2.0.0-rc.132) (2024-12-05) + + +### Features + +* make multipart heartbeat configurable ([#1006](https://github.com/wundergraph/graphql-go-tools/issues/1006)) ([7675b4b](https://github.com/wundergraph/graphql-go-tools/commit/7675b4bbc23f815affb870c831747a5144176f0d)) + ## [2.0.0-rc.131](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.130...v2.0.0-rc.131) (2024-12-02) From 34cc4fa864ec9dd8f99c4a1d79814062847ba45b Mon Sep 17 00:00:00 2001 From: Nithin Kumar B Date: Tue, 10 Dec 2024 13:47:05 +0530 Subject: [PATCH 03/20] feat: query plan for subscriptions (#1008) Related https://github.com/wundergraph/cosmo/pull/1425 --- v2/pkg/engine/postprocess/postprocess.go | 46 +++++ v2/pkg/engine/resolve/fetchtree.go | 25 ++- v2/pkg/engine/resolve/resolve.go | 56 +++++++ v2/pkg/engine/resolve/resolve_test.go | 204 +++++++++++++++++++++++ 4 files changed, 328 insertions(+), 3 deletions(-) diff --git a/v2/pkg/engine/postprocess/postprocess.go b/v2/pkg/engine/postprocess/postprocess.go index c7e6a2a80..e9cf9fda7 100644 --- a/v2/pkg/engine/postprocess/postprocess.go +++ b/v2/pkg/engine/postprocess/postprocess.go @@ -1,6 +1,8 @@ package postprocess import ( + "encoding/json" + "fmt" "slices" "github.com/wundergraph/graphql-go-tools/v2/pkg/engine/plan" @@ -142,6 +144,7 @@ func (p *Processor) Process(pre plan.Plan) plan.Plan { p.processResponseTree[i].ProcessSubscription(t.Response.Response.Data) } p.createFetchTree(t.Response.Response) + p.appendTriggerToFetchTree(t.Response) p.dedupe.ProcessFetchTree(t.Response.Response.Fetches) p.resolveInputTemplates.ProcessFetchTree(t.Response.Response.Fetches) p.resolveInputTemplates.ProcessTrigger(&t.Response.Trigger) @@ -184,3 +187,46 @@ func (p *Processor) createFetchTree(res *resolve.GraphQLResponse) { ChildNodes: children, } } + +func (p *Processor) appendTriggerToFetchTree(res *resolve.GraphQLSubscription) { + var input struct { + Body struct { + Query string `json:"query"` + } `json:"body"` + } + + err := json.Unmarshal(res.Trigger.Input, &input) + if err != nil { + fmt.Println("error decoding subscription input", err) + return + } + + rootData := res.Response.Data + if rootData == nil || len(rootData.Fields) == 0 { + return + } + + info := rootData.Fields[0].Info + if info == nil { + return + } + + res.Response.Fetches.Trigger = &resolve.FetchTreeNode{ + Kind: resolve.FetchTreeNodeKindTrigger, + Item: &resolve.FetchItem{ + Fetch: &resolve.SingleFetch{ + FetchDependencies: resolve.FetchDependencies{ + FetchID: info.FetchID, + }, + Info: &resolve.FetchInfo{ + DataSourceID: info.Source.IDs[0], + DataSourceName: info.Source.Names[0], + QueryPlan: &resolve.QueryPlan{ + Query: input.Body.Query, + }, + }, + }, + ResponsePath: info.Name, + }, + } +} diff --git a/v2/pkg/engine/resolve/fetchtree.go b/v2/pkg/engine/resolve/fetchtree.go index d071b191c..dddb019a5 100644 --- a/v2/pkg/engine/resolve/fetchtree.go +++ b/v2/pkg/engine/resolve/fetchtree.go @@ -6,9 +6,11 @@ import ( ) type FetchTreeNode struct { - Kind FetchTreeNodeKind `json:"kind"` - Item *FetchItem `json:"item"` - ChildNodes []*FetchTreeNode `json:"child_nodes"` + Kind FetchTreeNodeKind `json:"kind"` + // Only set for subscription + Trigger *FetchTreeNode `json:"trigger"` + Item *FetchItem `json:"item"` + ChildNodes []*FetchTreeNode `json:"child_nodes"` } type FetchTreeNodeKind string @@ -17,6 +19,7 @@ const ( FetchTreeNodeKindSingle FetchTreeNodeKind = "Single" FetchTreeNodeKindSequence FetchTreeNodeKind = "Sequence" FetchTreeNodeKindParallel FetchTreeNodeKind = "Parallel" + FetchTreeNodeKindTrigger FetchTreeNodeKind = "Trigger" ) func Sequence(children ...*FetchTreeNode) *FetchTreeNode { @@ -146,6 +149,7 @@ func (n *FetchTreeNode) Trace() *FetchTreeTraceNode { type FetchTreeQueryPlanNode struct { Version string `json:"version,omitempty"` Kind FetchTreeNodeKind `json:"kind"` + Trigger *FetchTreeQueryPlan `json:"trigger,omitempty"` Children []*FetchTreeQueryPlanNode `json:"children,omitempty"` Fetch *FetchTreeQueryPlan `json:"fetch,omitempty"` } @@ -165,8 +169,23 @@ func (n *FetchTreeNode) QueryPlan() *FetchTreeQueryPlanNode { if n == nil { return nil } + plan := n.queryPlan() plan.Version = "1" + + if n.Trigger != nil && n.Trigger.Item != nil && n.Trigger.Item.Fetch != nil { + if f, ok := n.Trigger.Item.Fetch.(*SingleFetch); ok { + plan.Trigger = &FetchTreeQueryPlan{ + Kind: "Trigger", + Path: n.Trigger.Item.ResponsePath, + SubgraphName: f.Info.DataSourceName, + SubgraphID: f.Info.DataSourceID, + FetchID: f.FetchDependencies.FetchID, + Query: f.Info.QueryPlan.Query, + } + } + } + return plan } diff --git a/v2/pkg/engine/resolve/resolve.go b/v2/pkg/engine/resolve/resolve.go index fde2a351e..bc3e7c95e 100644 --- a/v2/pkg/engine/resolve/resolve.go +++ b/v2/pkg/engine/resolve/resolve.go @@ -834,6 +834,34 @@ func (r *Resolver) ResolveGraphQLSubscription(ctx *Context, subscription *GraphQ msg := []byte(`{"errors":[{"message":"invalid input"}]}`) return writeFlushComplete(writer, msg) } + + // If SkipLoader is enabled, we skip retrieving actual data. For example, this is useful when requesting a query plan. + // By returning early, we avoid starting a subscription and resolve with empty data instead. + if ctx.ExecutionOptions.SkipLoader { + t := newTools(r.options, r.allowedErrorExtensionFields, r.allowedErrorFields) + + err = t.resolvable.InitSubscription(ctx, nil, subscription.Trigger.PostProcessing) + if err != nil { + return err + } + + buf := &bytes.Buffer{} + err = t.resolvable.Resolve(ctx.ctx, subscription.Response.Data, subscription.Response.Fetches, buf) + if err != nil { + return err + } + + if _, err = writer.Write(buf.Bytes()); err != nil { + return err + } + if err = writer.Flush(); err != nil { + return err + } + writer.Complete() + + return nil + } + xxh := pool.Hash64.Get() defer pool.Hash64.Put(xxh) err = subscription.Trigger.Source.UniqueRequestID(ctx, input, xxh) @@ -921,6 +949,34 @@ func (r *Resolver) AsyncResolveGraphQLSubscription(ctx *Context, subscription *G msg := []byte(`{"errors":[{"message":"invalid input"}]}`) return writeFlushComplete(writer, msg) } + + // If SkipLoader is enabled, we skip retrieving actual data. For example, this is useful when requesting a query plan. + // By returning early, we avoid starting a subscription and resolve with empty data instead. + if ctx.ExecutionOptions.SkipLoader { + t := newTools(r.options, r.allowedErrorExtensionFields, r.allowedErrorFields) + + err = t.resolvable.InitSubscription(ctx, nil, subscription.Trigger.PostProcessing) + if err != nil { + return err + } + + buf := &bytes.Buffer{} + err = t.resolvable.Resolve(ctx.ctx, subscription.Response.Data, subscription.Response.Fetches, buf) + if err != nil { + return err + } + + if _, err = writer.Write(buf.Bytes()); err != nil { + return err + } + if err = writer.Flush(); err != nil { + return err + } + writer.Complete() + + return nil + } + xxh := pool.Hash64.Get() defer pool.Hash64.Put(xxh) err = subscription.Trigger.Source.UniqueRequestID(ctx, input, xxh) diff --git a/v2/pkg/engine/resolve/resolve_test.go b/v2/pkg/engine/resolve/resolve_test.go index a198e13a1..56ce79859 100644 --- a/v2/pkg/engine/resolve/resolve_test.go +++ b/v2/pkg/engine/resolve/resolve_test.go @@ -4847,6 +4847,27 @@ func TestResolver_ResolveGraphQLSubscription(t *testing.T) { } setup := func(ctx context.Context, stream SubscriptionDataSource) (*Resolver, *GraphQLSubscription, *SubscriptionRecorder, SubscriptionIdentifier) { + + fetches := Sequence() + fetches.Trigger = &FetchTreeNode{ + Kind: FetchTreeNodeKindTrigger, + Item: &FetchItem{ + Fetch: &SingleFetch{ + FetchDependencies: FetchDependencies{ + FetchID: 0, + }, + Info: &FetchInfo{ + DataSourceID: "0", + DataSourceName: "counter", + QueryPlan: &QueryPlan{ + Query: "subscription { counter }", + }, + }, + }, + ResponsePath: "counter", + }, + } + plan := &GraphQLSubscription{ Trigger: GraphQLSubscriptionTrigger{ Source: stream, @@ -4871,9 +4892,134 @@ func TestResolver_ResolveGraphQLSubscription(t *testing.T) { Value: &Integer{ Path: []string{"counter"}, }, + Info: &FieldInfo{ + Name: "counter", + ExactParentTypeName: "Subscription", + Source: TypeFieldSource{ + IDs: []string{"0"}, + Names: []string{"counter"}, + }, + FetchID: 0, + }, }, }, }, + Fetches: fetches, + }, + } + + out := &SubscriptionRecorder{ + buf: &bytes.Buffer{}, + messages: []string{}, + complete: atomic.Bool{}, + } + out.complete.Store(false) + + id := SubscriptionIdentifier{ + ConnectionID: 1, + SubscriptionID: 1, + } + + return newResolver(ctx), plan, out, id + } + + setupWithAdditionalDataLoad := func(ctx context.Context, stream SubscriptionDataSource) (*Resolver, *GraphQLSubscription, *SubscriptionRecorder, SubscriptionIdentifier) { + fetches := Sequence() + fetches.Trigger = &FetchTreeNode{ + Kind: FetchTreeNodeKindTrigger, + Item: &FetchItem{ + Fetch: &SingleFetch{ + FetchDependencies: FetchDependencies{ + FetchID: 0, + }, + Info: &FetchInfo{ + DataSourceID: "0", + DataSourceName: "country", + QueryPlan: &QueryPlan{ + Query: "subscription { countryUpdated { name time { local } } }", + }, + }, + }, + ResponsePath: "countryUpdated", + }, + } + fetches.ChildNodes = []*FetchTreeNode{{ + Kind: FetchTreeNodeKindSingle, + Item: &FetchItem{ + Fetch: &SingleFetch{ + FetchDependencies: FetchDependencies{ + FetchID: 1, + DependsOnFetchIDs: []int{0}, + }, + Info: &FetchInfo{ + DataSourceID: "1", + DataSourceName: "time", + OperationType: ast.OperationTypeQuery, + QueryPlan: &QueryPlan{ + Query: "query($representations: [_Any!]!){\n _entities(representations: $representations){\n ... on Time {\n __typename\n local\n }\n }\n}", + }, + }, + }, + ResponsePath: "countryUpdated.time", + }, + }} + + plan := &GraphQLSubscription{ + Trigger: GraphQLSubscriptionTrigger{ + Source: stream, + InputTemplate: InputTemplate{ + Segments: []TemplateSegment{ + { + SegmentType: StaticSegmentType, + Data: []byte(`{"method":"POST","url":"http://localhost:4000","body":{"query":"subscription { countryUpdated { name time { local } } }"}}`), + }, + }, + }, + PostProcessing: PostProcessingConfiguration{ + SelectResponseDataPath: []string{"data"}, + SelectResponseErrorsPath: []string{"errors"}, + }, + }, + Response: &GraphQLResponse{ + Data: &Object{ + Fields: []*Field{ + { + Name: []byte("countryUpdated"), + Value: &Object{ + Path: []string{"countryUpdated"}, + Fields: []*Field{{ + Name: []byte("name"), + Value: &String{ + Path: []string{"name"}, + }, + }, { + Name: []byte("time"), + Value: &Object{ + Path: []string{"time"}, + Fields: []*Field{{ + Name: []byte("local"), + Value: &String{ + Path: []string{"local"}, + }, + }}, + }, + }}, + SourceName: "country", + TypeName: "Country", + }, + Info: &FieldInfo{ + Name: "countryUpdated", + ExactParentTypeName: "Subscription", + Source: TypeFieldSource{ + IDs: []string{"0"}, + Names: []string{"country"}, + }, + FetchID: 0, + }, + }, + }, + }, + Fetches: fetches, }, } @@ -5062,6 +5208,64 @@ func TestResolver_ResolveGraphQLSubscription(t *testing.T) { recorder.AwaitComplete(t, defaultTimeout) fakeStream.AwaitIsDone(t, defaultTimeout) }) + + t.Run("renders query plan with trigger", func(t *testing.T) { + c, cancel := context.WithCancel(context.Background()) + defer cancel() + + fakeStream := createFakeStream(func(counter int) (message string, done bool) { + return fmt.Sprintf(`{"data":{"counter":%d}}`, counter), counter == 0 + }, 0, func(input []byte) { + assert.Equal(t, `{"method":"POST","url":"http://localhost:4000","body":{"query":"subscription { counter }"}}`, string(input)) + }) + + resolver, plan, recorder, id := setup(c, fakeStream) + + ctx := &Context{ + ctx: context.Background(), + ExecutionOptions: ExecutionOptions{ + SkipLoader: true, + IncludeQueryPlanInResponse: true, + }, + } + + err := resolver.AsyncResolveGraphQLSubscription(ctx, plan, recorder, id) + assert.NoError(t, err) + recorder.AwaitComplete(t, defaultTimeout) + assert.Equal(t, 1, len(recorder.Messages())) + assert.ElementsMatch(t, []string{ + `{"data":null,"extensions":{"queryPlan":{"version":"1","kind":"Sequence","trigger":{"kind":"Trigger","path":"counter","subgraphName":"counter","subgraphId":"0","fetchId":0,"query":"subscription { counter }"}}}}`, + }, recorder.Messages()) + }) + + t.Run("renders query plan with trigger and additional data", func(t *testing.T) { + c, cancel := context.WithCancel(context.Background()) + defer cancel() + + fakeStream := createFakeStream(func(counter int) (message string, done bool) { + return fmt.Sprintf(`{"data":{"counter":%d}}`, counter), counter == 0 + }, 0, func(input []byte) { + assert.Equal(t, `{"method":"POST","url":"http://localhost:4000","body":{"query":"subscription { countryUpdated { name time { local } } }"}}`, string(input)) + }) + + resolver, plan, recorder, id := setupWithAdditionalDataLoad(c, fakeStream) + + ctx := &Context{ + ctx: context.Background(), + ExecutionOptions: ExecutionOptions{ + SkipLoader: true, + IncludeQueryPlanInResponse: true, + }, + } + + err := resolver.AsyncResolveGraphQLSubscription(ctx, plan, recorder, id) + assert.NoError(t, err) + recorder.AwaitComplete(t, defaultTimeout) + assert.Equal(t, 1, len(recorder.Messages())) + assert.ElementsMatch(t, []string{ + `{"data":null,"extensions":{"queryPlan":{"version":"1","kind":"Sequence","trigger":{"kind":"Trigger","path":"countryUpdated","subgraphName":"country","subgraphId":"0","fetchId":0,"query":"subscription { countryUpdated { name time { local } } }"},"children":[{"kind":"Single","fetch":{"kind":"Single","path":"countryUpdated.time","subgraphName":"time","subgraphId":"1","fetchId":1,"dependsOnFetchIds":[0],"query":"query($representations: [_Any!]!){\n _entities(representations: $representations){\n ... on Time {\n __typename\n local\n }\n }\n}"}}]}}}`, + }, recorder.Messages()) + }) } func Test_ResolveGraphQLSubscriptionWithFilter(t *testing.T) { From 6bb4cb5eff53a7591a81392ba764edc7a81032d5 Mon Sep 17 00:00:00 2001 From: Jens Neuse Date: Tue, 10 Dec 2024 14:50:05 +0100 Subject: [PATCH 04/20] fix: array merging logic --- v2/go.mod | 4 ++-- v2/pkg/engine/resolve/loader.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/v2/go.mod b/v2/go.mod index 43487484d..ef6363129 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -26,7 +26,7 @@ require ( github.com/tidwall/gjson v1.17.0 github.com/tidwall/sjson v1.2.5 github.com/vektah/gqlparser/v2 v2.5.14 - github.com/wundergraph/astjson v0.0.0-20241108124845-44485579ffa5 + github.com/wundergraph/astjson v0.0.0-20241210134830-8afac530adfe go.uber.org/atomic v1.11.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.26.0 @@ -58,4 +58,4 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -//replace github.com/wundergraph/astjson => ../../astjson +replace github.com/wundergraph/astjson => ../../wundergraph-projects/astjson diff --git a/v2/pkg/engine/resolve/loader.go b/v2/pkg/engine/resolve/loader.go index 44e1b2047..f2545db97 100644 --- a/v2/pkg/engine/resolve/loader.go +++ b/v2/pkg/engine/resolve/loader.go @@ -668,7 +668,7 @@ func (l *Loader) mergeErrors(res *result, fetchItem *FetchItem, value *astjson.V } // If the error propagation mode is pass-through, we append the errors to the root array - astjson.MergeValues(l.resolvable.errors, value) + l.resolvable.errors.AppendArrayItems(value) return nil } From abaa939544c5c9ef954b68c7c7ceae37b304c6bb Mon Sep 17 00:00:00 2001 From: Jens Neuse Date: Tue, 10 Dec 2024 14:52:04 +0100 Subject: [PATCH 05/20] fix: array merging logic --- go.work.sum | 2 ++ v2/go.mod | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.work.sum b/go.work.sum index 052d198bf..64ec7f569 100644 --- a/go.work.sum +++ b/go.work.sum @@ -232,6 +232,8 @@ github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqj github.com/twmb/franz-go/pkg/kmsg v1.7.0/go.mod h1:se9Mjdt0Nwzc9lnjJ0HyDtLyBnaBDAd7pCje47OhSyw= github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/wundergraph/astjson v0.0.0-20240822164222-c1cca919e2c8/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= +github.com/wundergraph/astjson v0.0.0-20241210134830-8afac530adfe h1:ce4SObDyb/WJZSXNv1ISeoTtqn9u30feksK7GCURDvo= +github.com/wundergraph/astjson v0.0.0-20241210134830-8afac530adfe/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= github.com/wundergraph/cosmo/composition-go v0.0.0-20240404083832-79d2290084c6/go.mod h1:Ib+rknmwn4oZFN9SQ4VMP3uF/C/tEINEug5iPQxfrPc= github.com/wundergraph/cosmo/router v0.0.0-20240404083832-79d2290084c6/go.mod h1:LS+5qlr4fQVEW7JMXXI1sz7CH5cdnqx3BNc10p+UbW4= github.com/xdg/scram v1.0.3 h1:nTadYh2Fs4BK2xdldEa2g5bbaZp0/+1nJMMPtPxS/to= diff --git a/v2/go.mod b/v2/go.mod index ef6363129..1d2facbf8 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -56,6 +56,4 @@ require ( gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect -) - -replace github.com/wundergraph/astjson => ../../wundergraph-projects/astjson +) \ No newline at end of file From 0ccd62e2b59f06144aac20fa9b96f3ba19d5849a Mon Sep 17 00:00:00 2001 From: Alessandro Pagnin Date: Tue, 10 Dec 2024 16:44:29 +0100 Subject: [PATCH 06/20] chore: upgrade astjson (#1010) --- v2/go.mod | 4 ++-- v2/go.sum | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/v2/go.mod b/v2/go.mod index 1d2facbf8..dfc5183c7 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -26,7 +26,7 @@ require ( github.com/tidwall/gjson v1.17.0 github.com/tidwall/sjson v1.2.5 github.com/vektah/gqlparser/v2 v2.5.14 - github.com/wundergraph/astjson v0.0.0-20241210134830-8afac530adfe + github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8 go.uber.org/atomic v1.11.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.26.0 @@ -56,4 +56,4 @@ require ( gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect -) \ No newline at end of file +) diff --git a/v2/go.sum b/v2/go.sum index 377dbfc2e..3e9c354bd 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -104,10 +104,8 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/vektah/gqlparser/v2 v2.5.14 h1:dzLq75BJe03jjQm6n56PdH1oweB8ana42wj7E4jRy70= github.com/vektah/gqlparser/v2 v2.5.14/go.mod h1:WQQjFc+I1YIzoPvZBhUQX7waZgg3pMLi0r8KymvAE2w= -github.com/wundergraph/astjson v0.0.0-20241105103047-3b2e8a2b2779 h1:c9pa8s5eOFEOBH9Vs+VsP4EcsdcHzAaDKooHBdUmmK0= -github.com/wundergraph/astjson v0.0.0-20241105103047-3b2e8a2b2779/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= -github.com/wundergraph/astjson v0.0.0-20241108124845-44485579ffa5 h1:rc+IQxG3rrAXEjBywirkzhKkyCKvXLGQXABVD8GiUtU= -github.com/wundergraph/astjson v0.0.0-20241108124845-44485579ffa5/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= +github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8 h1:D0Pw/sly2S9gt63BVlTAfHZG8h98h1AsELOuMgydDt0= +github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= From 3b6f8b18d6f0de15a3359f45beb1aa2ad926a27d Mon Sep 17 00:00:00 2001 From: Jens Neuse Date: Wed, 11 Dec 2024 09:12:16 +0100 Subject: [PATCH 07/20] chore: remove go mod from release please excludes (#1011) --- release-please-config.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/release-please-config.json b/release-please-config.json index 0eaeb3fe8..500ef90d3 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -29,10 +29,6 @@ ".golangci.yml", "commitlint.config.js", "doc.go", - "go.mod", - "go.sum", - "go.work", - "go.work.sum", "LICENSE", "Makefile", "README.md" From 1f7ad3163a891216b28e780640f2b8044be6d4aa Mon Sep 17 00:00:00 2001 From: Jens Neuse Date: Wed, 11 Dec 2024 09:28:39 +0100 Subject: [PATCH 08/20] fix: upgrade astjson, add deprecated hint on old package (#1012) --- v2/pkg/astjson/astjson.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/v2/pkg/astjson/astjson.go b/v2/pkg/astjson/astjson.go index 1f0f1e98e..e4b638910 100644 --- a/v2/pkg/astjson/astjson.go +++ b/v2/pkg/astjson/astjson.go @@ -42,6 +42,8 @@ func (p *pool) Put(j *JSON) { p.p.Put(j) } +// lint:ignore +// Deprecated: JSON is deprecated, use the github.com/wundergraph/astjson package instead type JSON struct { storage []byte Nodes []Node From be3763783356aa0f01efcae75818f24010ac15aa Mon Sep 17 00:00:00 2001 From: Dustin Deus Date: Wed, 11 Dec 2024 09:33:23 +0100 Subject: [PATCH 09/20] chore(master): release 2.0.0-rc.133 (#1009) :robot: I have created a release *beep* *boop* --- ## [2.0.0-rc.133](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.132...v2.0.0-rc.133) (2024-12-11) ### Features * query plan for subscriptions ([#1008](https://github.com/wundergraph/graphql-go-tools/issues/1008)) ([34cc4fa](https://github.com/wundergraph/graphql-go-tools/commit/34cc4fa864ec9dd8f99c4a1d79814062847ba45b)) ### Bug Fixes * array merging logic ([abaa939](https://github.com/wundergraph/graphql-go-tools/commit/abaa939544c5c9ef954b68c7c7ceae37b304c6bb)) * array merging logic ([6bb4cb5](https://github.com/wundergraph/graphql-go-tools/commit/6bb4cb5eff53a7591a81392ba764edc7a81032d5)) * upgrade astjson, add deprecated hint on old package ([#1012](https://github.com/wundergraph/graphql-go-tools/issues/1012)) ([1f7ad31](https://github.com/wundergraph/graphql-go-tools/commit/1f7ad3163a891216b28e780640f2b8044be6d4aa)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- release-please-manifest.json | 2 +- v2/CHANGELOG.md | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/release-please-manifest.json b/release-please-manifest.json index 2fe5a7bbd..1196486d8 100644 --- a/release-please-manifest.json +++ b/release-please-manifest.json @@ -1,4 +1,4 @@ { - "v2": "2.0.0-rc.132", + "v2": "2.0.0-rc.133", "execution": "1.1.0" } diff --git a/v2/CHANGELOG.md b/v2/CHANGELOG.md index a14162038..efbfa5376 100644 --- a/v2/CHANGELOG.md +++ b/v2/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [2.0.0-rc.133](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.132...v2.0.0-rc.133) (2024-12-11) + + +### Features + +* query plan for subscriptions ([#1008](https://github.com/wundergraph/graphql-go-tools/issues/1008)) ([34cc4fa](https://github.com/wundergraph/graphql-go-tools/commit/34cc4fa864ec9dd8f99c4a1d79814062847ba45b)) + + +### Bug Fixes + +* array merging logic ([abaa939](https://github.com/wundergraph/graphql-go-tools/commit/abaa939544c5c9ef954b68c7c7ceae37b304c6bb)) +* array merging logic ([6bb4cb5](https://github.com/wundergraph/graphql-go-tools/commit/6bb4cb5eff53a7591a81392ba764edc7a81032d5)) +* upgrade astjson, add deprecated hint on old package ([#1012](https://github.com/wundergraph/graphql-go-tools/issues/1012)) ([1f7ad31](https://github.com/wundergraph/graphql-go-tools/commit/1f7ad3163a891216b28e780640f2b8044be6d4aa)) + ## [2.0.0-rc.132](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.131...v2.0.0-rc.132) (2024-12-05) From 4d22a58e1a379c7ce5944e2729d9f6b180446540 Mon Sep 17 00:00:00 2001 From: Dustin Deus Date: Wed, 11 Dec 2024 11:13:21 +0100 Subject: [PATCH 10/20] chore(master): release 2.0.0-rc.134 (#1013) :robot: I have created a release *beep* *boop* --- ## [2.0.0-rc.134](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.133...v2.0.0-rc.134) (2024-12-11) ### Bug Fixes * array merging logic ([abaa939](https://github.com/wundergraph/graphql-go-tools/commit/abaa939544c5c9ef954b68c7c7ceae37b304c6bb)) * array merging logic ([6bb4cb5](https://github.com/wundergraph/graphql-go-tools/commit/6bb4cb5eff53a7591a81392ba764edc7a81032d5)) * upgrade astjson, add deprecated hint on old package ([#1012](https://github.com/wundergraph/graphql-go-tools/issues/1012)) ([1f7ad31](https://github.com/wundergraph/graphql-go-tools/commit/1f7ad3163a891216b28e780640f2b8044be6d4aa)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- release-please-manifest.json | 2 +- v2/CHANGELOG.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/release-please-manifest.json b/release-please-manifest.json index 1196486d8..9a1603fac 100644 --- a/release-please-manifest.json +++ b/release-please-manifest.json @@ -1,4 +1,4 @@ { - "v2": "2.0.0-rc.133", + "v2": "2.0.0-rc.134", "execution": "1.1.0" } diff --git a/v2/CHANGELOG.md b/v2/CHANGELOG.md index efbfa5376..2ae3d3c5b 100644 --- a/v2/CHANGELOG.md +++ b/v2/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [2.0.0-rc.134](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.133...v2.0.0-rc.134) (2024-12-11) + + +### Bug Fixes + +* array merging logic ([abaa939](https://github.com/wundergraph/graphql-go-tools/commit/abaa939544c5c9ef954b68c7c7ceae37b304c6bb)) +* array merging logic ([6bb4cb5](https://github.com/wundergraph/graphql-go-tools/commit/6bb4cb5eff53a7591a81392ba764edc7a81032d5)) +* upgrade astjson, add deprecated hint on old package ([#1012](https://github.com/wundergraph/graphql-go-tools/issues/1012)) ([1f7ad31](https://github.com/wundergraph/graphql-go-tools/commit/1f7ad3163a891216b28e780640f2b8044be6d4aa)) + ## [2.0.0-rc.133](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.132...v2.0.0-rc.133) (2024-12-11) From 7d66579b53d831a1b543f9ad20239d1fced303ab Mon Sep 17 00:00:00 2001 From: Alessandro Pagnin Date: Fri, 13 Dec 2024 17:46:37 +0100 Subject: [PATCH 11/20] feat: add ConsumerInactiveThreshold to NatsStreamConfiguration (#1014) --- v2/pkg/engine/datasource/pubsub_datasource/pubsub_nats.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/v2/pkg/engine/datasource/pubsub_datasource/pubsub_nats.go b/v2/pkg/engine/datasource/pubsub_datasource/pubsub_nats.go index b6b5e5049..2f1eff224 100644 --- a/v2/pkg/engine/datasource/pubsub_datasource/pubsub_nats.go +++ b/v2/pkg/engine/datasource/pubsub_datasource/pubsub_nats.go @@ -13,8 +13,9 @@ import ( ) type NatsStreamConfiguration struct { - Consumer string `json:"consumer"` - StreamName string `json:"streamName"` + Consumer string `json:"consumer"` + ConsumerInactiveThreshold int32 `json:"consumerInactiveThreshold"` + StreamName string `json:"streamName"` } type NatsEventConfiguration struct { From 2d960bfc4851c7994db56ad0dbcdf2b245e8a0ec Mon Sep 17 00:00:00 2001 From: Dustin Deus Date: Fri, 13 Dec 2024 18:00:56 +0100 Subject: [PATCH 12/20] chore(master): release 2.0.0-rc.135 (#1015) :robot: I have created a release *beep* *boop* --- ## [2.0.0-rc.135](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.134...v2.0.0-rc.135) (2024-12-13) ### Features * add ConsumerInactiveThreshold to NatsStreamConfiguration ([#1014](https://github.com/wundergraph/graphql-go-tools/issues/1014)) ([7d66579](https://github.com/wundergraph/graphql-go-tools/commit/7d66579b53d831a1b543f9ad20239d1fced303ab)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- release-please-manifest.json | 2 +- v2/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/release-please-manifest.json b/release-please-manifest.json index 9a1603fac..cae02ecda 100644 --- a/release-please-manifest.json +++ b/release-please-manifest.json @@ -1,4 +1,4 @@ { - "v2": "2.0.0-rc.134", + "v2": "2.0.0-rc.135", "execution": "1.1.0" } diff --git a/v2/CHANGELOG.md b/v2/CHANGELOG.md index 2ae3d3c5b..49580883e 100644 --- a/v2/CHANGELOG.md +++ b/v2/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.0.0-rc.135](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.134...v2.0.0-rc.135) (2024-12-13) + + +### Features + +* add ConsumerInactiveThreshold to NatsStreamConfiguration ([#1014](https://github.com/wundergraph/graphql-go-tools/issues/1014)) ([7d66579](https://github.com/wundergraph/graphql-go-tools/commit/7d66579b53d831a1b543f9ad20239d1fced303ab)) + ## [2.0.0-rc.134](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.133...v2.0.0-rc.134) (2024-12-11) From e41bdef9779aae6bba3ac52b39f7dd545241e4ce Mon Sep 17 00:00:00 2001 From: df-wg Date: Mon, 16 Dec 2024 09:24:08 +0200 Subject: [PATCH 13/20] fix: set request in hook context before send request, in case of error (#1016) This will be added to https://github.com/wundergraph/cosmo/pull/1445, to ensure that it's more resilient Previously, we weren't setting the request (even when we really should have had access), because in error cases we were exiting before setting the request/response context. This ensures that we can pass the correct information to the access logs --- .../engine/datasource/httpclient/nethttpclient.go | 14 +++++++++++++- v2/pkg/engine/resolve/loader.go | 13 ++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/v2/pkg/engine/datasource/httpclient/nethttpclient.go b/v2/pkg/engine/datasource/httpclient/nethttpclient.go index 64761d728..51ff7bd23 100644 --- a/v2/pkg/engine/datasource/httpclient/nethttpclient.go +++ b/v2/pkg/engine/datasource/httpclient/nethttpclient.go @@ -79,9 +79,19 @@ func InjectResponseContext(ctx context.Context) (context.Context, *ResponseConte return context.WithValue(ctx, responseContextKey{}, value), value } +func setRequest(ctx context.Context, request *http.Request) { + if value, ok := ctx.Value(responseContextKey{}).(*ResponseContext); ok { + value.Request = request + } +} + func setResponseStatus(ctx context.Context, request *http.Request, response *http.Response) { if value, ok := ctx.Value(responseContextKey{}).(*ResponseContext); ok { - value.StatusCode = response.StatusCode + if response != nil { + value.StatusCode = response.StatusCode + } else { + value.StatusCode = 0 + } value.Request = request value.Response = response } @@ -189,6 +199,8 @@ func makeHTTPRequest(client *http.Client, ctx context.Context, url, method, head request.Header.Set(AcceptEncodingHeader, EncodingGzip) request.Header.Add(AcceptEncodingHeader, EncodingDeflate) + setRequest(ctx, request) + response, err := client.Do(request) if err != nil { return err diff --git a/v2/pkg/engine/resolve/loader.go b/v2/pkg/engine/resolve/loader.go index f2545db97..9ca6f332e 100644 --- a/v2/pkg/engine/resolve/loader.go +++ b/v2/pkg/engine/resolve/loader.go @@ -62,9 +62,16 @@ func newResponseInfo(res *result, subgraphError error) *ResponseInfo { // We're using the response.Request here, because the body will be nil (since the response was read) and won't // cause a memory leak. if res.httpResponseContext.Response != nil { - responseInfo.Request = res.httpResponseContext.Response.Request - responseInfo.ResponseHeaders = res.httpResponseContext.Response.Header.Clone() - } else { + if res.httpResponseContext.Response.Request != nil { + responseInfo.Request = res.httpResponseContext.Response.Request + } + + if res.httpResponseContext.Response.Header != nil { + responseInfo.ResponseHeaders = res.httpResponseContext.Response.Header.Clone() + } + } + + if responseInfo.Request == nil { // In cases where the request errors, the response will be nil, and so we need to get the original request responseInfo.Request = res.httpResponseContext.Request } From 7d86ddcef36db408a2c8bf449d10cff8ab095bac Mon Sep 17 00:00:00 2001 From: Dustin Deus Date: Mon, 16 Dec 2024 08:27:47 +0100 Subject: [PATCH 14/20] chore(master): release 2.0.0-rc.136 (#1017) :robot: I have created a release *beep* *boop* --- ## [2.0.0-rc.136](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.135...v2.0.0-rc.136) (2024-12-16) ### Bug Fixes * set request in hook context before send request, in case of error ([#1016](https://github.com/wundergraph/graphql-go-tools/issues/1016)) ([e41bdef](https://github.com/wundergraph/graphql-go-tools/commit/e41bdef9779aae6bba3ac52b39f7dd545241e4ce)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- release-please-manifest.json | 2 +- v2/CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/release-please-manifest.json b/release-please-manifest.json index cae02ecda..73d17e7c1 100644 --- a/release-please-manifest.json +++ b/release-please-manifest.json @@ -1,4 +1,4 @@ { - "v2": "2.0.0-rc.135", + "v2": "2.0.0-rc.136", "execution": "1.1.0" } diff --git a/v2/CHANGELOG.md b/v2/CHANGELOG.md index 49580883e..ae8aa53ee 100644 --- a/v2/CHANGELOG.md +++ b/v2/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.0.0-rc.136](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.135...v2.0.0-rc.136) (2024-12-16) + + +### Bug Fixes + +* set request in hook context before send request, in case of error ([#1016](https://github.com/wundergraph/graphql-go-tools/issues/1016)) ([e41bdef](https://github.com/wundergraph/graphql-go-tools/commit/e41bdef9779aae6bba3ac52b39f7dd545241e4ce)) + ## [2.0.0-rc.135](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.134...v2.0.0-rc.135) (2024-12-13) From b52a8e675996d25c1b165a25dba3f6c730baf690 Mon Sep 17 00:00:00 2001 From: Alexander Lelidis Date: Mon, 30 Dec 2024 07:32:21 -0500 Subject: [PATCH 15/20] chore: return reviews for a product in example reviews subgraph (#994) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When running queries like the following before the is pr no reviews for a product were returned. ```graphql { me { username id reviews { body product { upc } } } topProducts(first: 2) { upc reviews { body } } } ``` Co-authored-by: Sergiy πŸ‡ΊπŸ‡¦ <818351+devsergiy@users.noreply.github.com> --- examples/federation/reviews/graph/entity.resolvers.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/examples/federation/reviews/graph/entity.resolvers.go b/examples/federation/reviews/graph/entity.resolvers.go index 213bd290b..7043d174a 100644 --- a/examples/federation/reviews/graph/entity.resolvers.go +++ b/examples/federation/reviews/graph/entity.resolvers.go @@ -13,8 +13,16 @@ import ( // FindProductByUpc is the resolver for the findProductByUpc field. func (r *entityResolver) FindProductByUpc(ctx context.Context, upc string) (*model.Product, error) { + var productReviews []*model.Review + for _, review := range reviews { + if review.Product.Upc == upc { + productReviews = append(productReviews, review) + } + } + return &model.Product{ - Upc: upc, + Upc: upc, + Reviews: productReviews, }, nil } From 1b7bac3e96e0a6ce4563b4a4fe671a4073338128 Mon Sep 17 00:00:00 2001 From: lorf Date: Mon, 30 Dec 2024 19:38:35 +0700 Subject: [PATCH 16/20] fix(astprinter): implement transitive interface output (#1021) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Just copied relevant part from EnterObjectTypeDefinition() Also add tests Fixes #1018 Co-authored-by: Sergiy πŸ‡ΊπŸ‡¦ <818351+devsergiy@users.noreply.github.com> --- pkg/astprinter/astprinter.go | 14 ++++++++++++++ pkg/astprinter/astprinter_test.go | 4 ++++ v2/pkg/astprinter/astprinter.go | 14 ++++++++++++++ v2/pkg/astprinter/astprinter_test.go | 4 ++++ 4 files changed, 36 insertions(+) diff --git a/pkg/astprinter/astprinter.go b/pkg/astprinter/astprinter.go index 2e4e619cd..a23d1dfbf 100644 --- a/pkg/astprinter/astprinter.go +++ b/pkg/astprinter/astprinter.go @@ -538,6 +538,20 @@ func (p *printVisitor) EnterInterfaceTypeDefinition(ref int) { p.write(p.document.InterfaceTypeDefinitionNameBytes(ref)) p.write(literal.SPACE) + if len(p.document.InterfaceTypeDefinitions[ref].ImplementsInterfaces.Refs) != 0 { + p.write(literal.IMPLEMENTS) + p.write(literal.SPACE) + for i, j := range p.document.InterfaceTypeDefinitions[ref].ImplementsInterfaces.Refs { + if i != 0 { + p.write(literal.SPACE) + p.write(literal.AND) + p.write(literal.SPACE) + } + p.must(p.document.PrintType(j, p.out)) + } + p.write(literal.SPACE) + } + p.inputValueDefinitionOpener = literal.LPAREN p.inputValueDefinitionCloser = literal.RPAREN } diff --git a/pkg/astprinter/astprinter_test.go b/pkg/astprinter/astprinter_test.go index e50d5556f..1d316d4a5 100644 --- a/pkg/astprinter/astprinter_test.go +++ b/pkg/astprinter/astprinter_test.go @@ -485,6 +485,10 @@ vary: [String]! = []) on QUERY directive @include(if: Boolean!) repeatable on FI `scalar Date schema {query: Query} type Query {me: User! user(id: ID!): User allUsers: [User] search(term: String!): [SearchResult!]! myChats: [Chat!]!} enum Role {USER ADMIN} interface Node {id: ID!} union SearchResult = User | Chat | ChatMessage type User implements Node {id: ID! username: String! email: String! role: Role!} type Chat implements Node {id: ID! users: [User!]! messages: [ChatMessage!]!} type ChatMessage implements Node {id: ID! content: String! time: Date! user: User!}`) }) }) + t.Run("transitive interfaces", func(t *testing.T) { + run(t, "interface I1 {id: ID!} interface I2 implements I1 {id: ID!} interface I3 implements I1 & I2 {id: ID!}", + "interface I1 {id: ID!} interface I2 implements I1 {id: ID!} interface I3 implements I1 & I2 {id: ID!}") + }) } func TestPrintArgumentWithBeforeAfterValue(t *testing.T) { diff --git a/v2/pkg/astprinter/astprinter.go b/v2/pkg/astprinter/astprinter.go index cd492dc25..58d9d0d9c 100644 --- a/v2/pkg/astprinter/astprinter.go +++ b/v2/pkg/astprinter/astprinter.go @@ -601,6 +601,20 @@ func (p *printVisitor) EnterInterfaceTypeDefinition(ref int) { p.write(p.document.InterfaceTypeDefinitionNameBytes(ref)) p.write(literal.SPACE) + if len(p.document.InterfaceTypeDefinitions[ref].ImplementsInterfaces.Refs) != 0 { + p.write(literal.IMPLEMENTS) + p.write(literal.SPACE) + for i, j := range p.document.InterfaceTypeDefinitions[ref].ImplementsInterfaces.Refs { + if i != 0 { + p.write(literal.SPACE) + p.write(literal.AND) + p.write(literal.SPACE) + } + p.must(p.document.PrintType(j, p.out)) + } + p.write(literal.SPACE) + } + p.inputValueDefinitionOpener = literal.LPAREN p.inputValueDefinitionCloser = literal.RPAREN } diff --git a/v2/pkg/astprinter/astprinter_test.go b/v2/pkg/astprinter/astprinter_test.go index 41f38c676..d57b81ae8 100644 --- a/v2/pkg/astprinter/astprinter_test.go +++ b/v2/pkg/astprinter/astprinter_test.go @@ -654,6 +654,10 @@ fragment NameFragment on Dog { `scalar Date schema {query: Query} type Query {me: User! user(id: ID!): User allUsers: [User] search(term: String!): [SearchResult!]! myChats: [Chat!]!} enum Role {USER ADMIN} interface Node {id: ID!} union SearchResult = User | Chat | ChatMessage type User implements Node {id: ID! username: String! email: String! role: Role!} type Chat implements Node {id: ID! users: [User!]! messages: [ChatMessage!]!} type ChatMessage implements Node {id: ID! content: String! time: Date! user: User!}`) }) }) + t.Run("transitive interfaces", func(t *testing.T) { + run(t, "interface I1 {id: ID!} interface I2 implements I1 {id: ID!} interface I3 implements I1 & I2 {id: ID!}", + "interface I1 {id: ID!} interface I2 implements I1 {id: ID!} interface I3 implements I1 & I2 {id: ID!}") + }) } func TestPrintArgumentWithBeforeAfterValue(t *testing.T) { From ba209713de5a98bff3b2778090fac66a0d4ece1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergiy=20=F0=9F=87=BA=F0=9F=87=A6?= <818351+devsergiy@users.noreply.github.com> Date: Mon, 30 Dec 2024 16:52:23 +0200 Subject: [PATCH 17/20] feat: upgrade go to 1.23 (#1020) --- .github/workflows/execution.yml | 8 ++--- .github/workflows/v2.yml | 8 ++--- examples/federation/go.mod | 19 ++++------- examples/federation/go.sum | 33 ++++++++++++------- execution/go.mod | 16 +++------ execution/go.sum | 29 ++++++---------- go.work | 6 ++-- go.work.sum | 9 +++-- v2/go.mod | 2 +- .../abstract_selection_rewriter_helpers.go | 2 +- 10 files changed, 64 insertions(+), 68 deletions(-) diff --git a/.github/workflows/execution.yml b/.github/workflows/execution.yml index badc00519..1a8a965a0 100644 --- a/.github/workflows/execution.yml +++ b/.github/workflows/execution.yml @@ -20,7 +20,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go: [ '1.21' ] + go: [ '1.23' ] os: [ubuntu-latest, windows-latest] steps: - name: Set git to use LF @@ -48,15 +48,15 @@ jobs: steps: - name: Check out code into the Go module directory uses: actions/checkout@v3 - - name: Set up Go 1.21 + - name: Set up Go 1.23 uses: actions/setup-go@v4 with: - go-version: 1.21 + go-version: 1.23 - name: Run linters uses: golangci/golangci-lint-action@v3 with: working-directory: execution - version: v1.55.2 + version: v1.62.2 args: --timeout=3m ci: name: CI Success diff --git a/.github/workflows/v2.yml b/.github/workflows/v2.yml index 50e06dcbe..7848f25bf 100644 --- a/.github/workflows/v2.yml +++ b/.github/workflows/v2.yml @@ -24,7 +24,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go: [ '1.21' ] + go: [ '1.23' ] os: [ubuntu-latest, windows-latest] steps: - name: Set git to use LF @@ -52,15 +52,15 @@ jobs: steps: - name: Check out code into the Go module directory uses: actions/checkout@v3 - - name: Set up Go 1.21 + - name: Set up Go 1.23 uses: actions/setup-go@v4 with: - go-version: 1.21 + go-version: 1.23 - name: Run linters uses: golangci/golangci-lint-action@v3 with: working-directory: v2 - version: v1.55.2 + version: v1.62.2 args: --timeout=3m ci: name: CI Success diff --git a/examples/federation/go.mod b/examples/federation/go.mod index 9fe0f8afd..f6fe170fe 100644 --- a/examples/federation/go.mod +++ b/examples/federation/go.mod @@ -1,34 +1,30 @@ module github.com/wundergraph/graphql-go-tools/examples/federation -go 1.21.5 - -toolchain go1.21.12 +go 1.23 require ( github.com/99designs/gqlgen v0.17.45 - github.com/gobwas/ws v1.3.1 + github.com/gobwas/ws v1.4.0 github.com/gorilla/websocket v1.5.1 github.com/jensneuse/abstractlogger v0.0.4 - github.com/vektah/gqlparser/v2 v2.5.11 + github.com/vektah/gqlparser/v2 v2.5.14 github.com/wundergraph/graphql-go-tools/execution v1.0.1 - github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.66 + github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.136 go.uber.org/atomic v1.11.0 go.uber.org/zap v1.26.0 ) require ( github.com/agnivade/levenshtein v1.1.1 // indirect - github.com/alitto/pond v1.8.3 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/dlclark/regexp2 v1.7.0 // indirect + github.com/dlclark/regexp2 v1.11.0 // indirect github.com/dop251/goja v0.0.0-20230906160731-9410bcaa81d2 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/gobwas/httphead v0.1.0 // indirect github.com/gobwas/pool v0.2.1 // indirect - github.com/goccy/go-json v0.10.2 // indirect github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect @@ -50,8 +46,8 @@ require ( github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/urfave/cli/v2 v2.25.5 // indirect - github.com/wundergraph/astjson v0.0.0-20240822164222-c1cca919e2c8 // indirect - github.com/wundergraph/cosmo/composition-go v0.0.0-20240729154441-b20b00e892c6 // indirect + github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8 // indirect + github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99 // indirect github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -64,7 +60,6 @@ require ( google.golang.org/protobuf v1.34.1 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - nhooyr.io/websocket v1.8.11 // indirect rogchap.com/v8go v0.9.0 // indirect ) diff --git a/examples/federation/go.sum b/examples/federation/go.sum index 5774b7b33..5a6a10085 100644 --- a/examples/federation/go.sum +++ b/examples/federation/go.sum @@ -5,8 +5,6 @@ github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= -github.com/alitto/pond v1.8.3 h1:ydIqygCLVPqIX/USe5EaV/aSRXTRXDEI9JwuDdu+/xs= -github.com/alitto/pond v1.8.3/go.mod h1:CmvIIGd5jKLasGI3D87qDkQxjzChdKMmnXMg3fG6M6Q= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= @@ -18,6 +16,8 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo= +github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -28,8 +28,9 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= +github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja v0.0.0-20230906160731-9410bcaa81d2 h1:3J+RqSTu+JuyCYjoe82vvUUljEfgp8i6+nyhUsaYAbg= github.com/dop251/goja v0.0.0-20230906160731-9410bcaa81d2/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= @@ -41,10 +42,8 @@ github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.3.1 h1:Qi34dfLMWJbiKaNbDVzM9x27nZBjmkaW6i4+Ku+pGVU= -github.com/gobwas/ws v1.3.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs= +github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -91,6 +90,7 @@ github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxec github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5etusZG3Cf+rpow5hqQByeCzJ2g= @@ -124,6 +124,7 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -138,10 +139,14 @@ github.com/urfave/cli/v2 v2.8.1/go.mod h1:Z41J9TPoffeoqP0Iza0YbAhGvymRdZAd2uPmZ5 github.com/urfave/cli/v2 v2.25.5 h1:d0NIAyhh5shGscroL7ek/Ya9QYQE0KNabJgiUinIQkc= github.com/urfave/cli/v2 v2.25.5/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/vektah/gqlparser/v2 v2.5.1/go.mod h1:mPgqFBu/woKTVYWyNk8cO3kh4S/f4aRFZrvOnp3hmCs= -github.com/vektah/gqlparser/v2 v2.5.11 h1:JJxLtXIoN7+3x6MBdtIP59TP1RANnY7pXOaDnADQSf8= -github.com/wundergraph/astjson v0.0.0-20240822164222-c1cca919e2c8 h1:UiT9ykzZavKJXdtpqa1Uix/8BM/Rq2EULCqfcSZdbxo= -github.com/wundergraph/cosmo/composition-go v0.0.0-20240729154441-b20b00e892c6 h1:e9fqrUgU7Mr8FO8mRPzeJOQEbmrmJftOy+qME9poikY= +github.com/vektah/gqlparser/v2 v2.5.14 h1:dzLq75BJe03jjQm6n56PdH1oweB8ana42wj7E4jRy70= +github.com/vektah/gqlparser/v2 v2.5.14/go.mod h1:WQQjFc+I1YIzoPvZBhUQX7waZgg3pMLi0r8KymvAE2w= +github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8 h1:D0Pw/sly2S9gt63BVlTAfHZG8h98h1AsELOuMgydDt0= +github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= +github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99 h1:TGXDYfDhwFLFTuNuCwkuqXT5aXGz47zcurXLfTBS9w4= +github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99/go.mod h1:fUuOAUAXUFB/mlSkAaImGeE4A841AKR5dTMWhV4ibxI= github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6 h1:oXnHjPyl2Wes+mnCQbR0F1v0WAUOf974PdANFMA4CmI= +github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6/go.mod h1:0FOIMzc1cY8c4rUczyhmI2es84HGoEJV2MIbDbiEWzg= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -166,6 +171,7 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -174,10 +180,12 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -192,6 +200,7 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -200,6 +209,7 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -209,6 +219,7 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -218,6 +229,7 @@ gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -235,6 +247,5 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= rogchap.com/v8go v0.9.0 h1:wYbUCO4h6fjTamziHrzyrPnpFNuzPpjZY+nfmZjNaew= rogchap.com/v8go v0.9.0/go.mod h1:MxgP3pL2MW4dpme/72QRs8sgNMmM0pRc8DPhcuLWPAs= diff --git a/execution/go.mod b/execution/go.mod index 766b95f51..a01bc37c8 100644 --- a/execution/go.mod +++ b/execution/go.mod @@ -1,12 +1,10 @@ module github.com/wundergraph/graphql-go-tools/execution -go 1.21.5 - -toolchain go1.21.12 +go 1.23 require ( github.com/99designs/gqlgen v0.17.45 - github.com/gobwas/ws v1.3.1 + github.com/gobwas/ws v1.4.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.6.0 github.com/gorilla/websocket v1.5.1 @@ -14,17 +12,17 @@ require ( github.com/jensneuse/abstractlogger v0.0.4 github.com/sebdah/goldie/v2 v2.5.3 github.com/stretchr/testify v1.9.0 - github.com/vektah/gqlparser/v2 v2.5.11 + github.com/vektah/gqlparser/v2 v2.5.14 + github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8 github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99 github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6 - github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.66 + github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.136 go.uber.org/atomic v1.11.0 google.golang.org/protobuf v1.34.1 ) require ( github.com/agnivade/levenshtein v1.1.1 // indirect - github.com/alitto/pond v1.8.3 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -33,7 +31,6 @@ require ( github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/gobwas/httphead v0.1.0 // indirect github.com/gobwas/pool v0.2.1 // indirect - github.com/goccy/go-json v0.10.2 // indirect github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect github.com/jensneuse/byte-template v0.0.0-20200214152254-4f3cf06e5c68 // indirect github.com/kingledion/go-tools v0.6.0 // indirect @@ -45,14 +42,12 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/r3labs/sse/v2 v2.8.1 // indirect - github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/tidwall/gjson v1.17.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/valyala/fastjson v1.6.4 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/net v0.26.0 // indirect @@ -61,7 +56,6 @@ require ( golang.org/x/text v0.16.0 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - nhooyr.io/websocket v1.8.11 // indirect rogchap.com/v8go v0.9.0 // indirect ) diff --git a/execution/go.sum b/execution/go.sum index 2850b77e3..80b348762 100644 --- a/execution/go.sum +++ b/execution/go.sum @@ -5,8 +5,6 @@ github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= -github.com/alitto/pond v1.8.3 h1:ydIqygCLVPqIX/USe5EaV/aSRXTRXDEI9JwuDdu+/xs= -github.com/alitto/pond v1.8.3/go.mod h1:CmvIIGd5jKLasGI3D87qDkQxjzChdKMmnXMg3fG6M6Q= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= @@ -18,6 +16,8 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo= +github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -26,7 +26,6 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= @@ -41,10 +40,8 @@ github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.3.1 h1:Qi34dfLMWJbiKaNbDVzM9x27nZBjmkaW6i4+Ku+pGVU= -github.com/gobwas/ws v1.3.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs= +github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -108,8 +105,6 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y= github.com/sebdah/goldie/v2 v2.5.3/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= @@ -139,19 +134,17 @@ github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhso github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/urfave/cli/v2 v2.8.1/go.mod h1:Z41J9TPoffeoqP0Iza0YbAhGvymRdZAd2uPmZ5JxRdY= -github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= -github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/vektah/gqlparser/v2 v2.5.1/go.mod h1:mPgqFBu/woKTVYWyNk8cO3kh4S/f4aRFZrvOnp3hmCs= -github.com/vektah/gqlparser/v2 v2.5.11 h1:JJxLtXIoN7+3x6MBdtIP59TP1RANnY7pXOaDnADQSf8= -github.com/vektah/gqlparser/v2 v2.5.11/go.mod h1:1rCcfwB2ekJofmluGWXMSEnPMZgbxzwj6FaZ/4OT8Cc= -github.com/wundergraph/cosmo/composition-go v0.0.0-20240729154441-b20b00e892c6 h1:e9fqrUgU7Mr8FO8mRPzeJOQEbmrmJftOy+qME9poikY= -github.com/wundergraph/cosmo/composition-go v0.0.0-20240729154441-b20b00e892c6/go.mod h1:WbKC2jd0g6BFsMpNDRVSoQyZ0QB6sWqpRfe0/1pTah4= +github.com/vektah/gqlparser/v2 v2.5.14 h1:dzLq75BJe03jjQm6n56PdH1oweB8ana42wj7E4jRy70= +github.com/vektah/gqlparser/v2 v2.5.14/go.mod h1:WQQjFc+I1YIzoPvZBhUQX7waZgg3pMLi0r8KymvAE2w= +github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8 h1:D0Pw/sly2S9gt63BVlTAfHZG8h98h1AsELOuMgydDt0= +github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99 h1:TGXDYfDhwFLFTuNuCwkuqXT5aXGz47zcurXLfTBS9w4= github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99/go.mod h1:fUuOAUAXUFB/mlSkAaImGeE4A841AKR5dTMWhV4ibxI= github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6 h1:oXnHjPyl2Wes+mnCQbR0F1v0WAUOf974PdANFMA4CmI= github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6/go.mod h1:0FOIMzc1cY8c4rUczyhmI2es84HGoEJV2MIbDbiEWzg= -github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.66 h1:82Q13hifV6joW9cjAQmWylWP1JEB2/ceF8gBThczakw= -github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.66/go.mod h1:aukw9fSLqLLQz0tPe84ioUtcnnvdZ58ec9ByC6mz76c= +github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.136 h1:DrQIzB1uO7W85Nf04h3HCPlKrE+D+bs1fR4LvxCQLgE= +github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.136/go.mod h1:xQLII50+GThIafwHGzeOVLsobqpAAB4WA/M9S+HTzxo= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -254,7 +247,5 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= -nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= rogchap.com/v8go v0.9.0 h1:wYbUCO4h6fjTamziHrzyrPnpFNuzPpjZY+nfmZjNaew= rogchap.com/v8go v0.9.0/go.mod h1:MxgP3pL2MW4dpme/72QRs8sgNMmM0pRc8DPhcuLWPAs= diff --git a/go.work b/go.work index 48af77fa1..f6c07c50c 100644 --- a/go.work +++ b/go.work @@ -1,6 +1,6 @@ -go 1.21.5 +go 1.23 -toolchain go1.21.12 +toolchain go1.23.3 use ( // v1 @@ -24,4 +24,4 @@ replace github.com/99designs/gqlgen => github.com/99designs/gqlgen v0.17.22 replace github.com/tidwall/sjson => github.com/tidwall/sjson v1.0.4 -//replace github.com/wundergraph/astjson => ../wundergraph-projects/astjson \ No newline at end of file +//replace github.com/wundergraph/astjson => ../wundergraph-projects/astjson diff --git a/go.work.sum b/go.work.sum index 64ec7f569..4aef0e18a 100644 --- a/go.work.sum +++ b/go.work.sum @@ -23,6 +23,8 @@ github.com/alecthomas/kingpin/v2 v2.3.2 h1:H0aULhgmSzN8xQ3nX1uxtdlTHYoPLu5AhHxWr github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alitto/pond v1.8.3 h1:ydIqygCLVPqIX/USe5EaV/aSRXTRXDEI9JwuDdu+/xs= +github.com/alitto/pond v1.8.3/go.mod h1:CmvIIGd5jKLasGI3D87qDkQxjzChdKMmnXMg3fG6M6Q= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= @@ -104,6 +106,8 @@ github.com/go-redis/redis_rate/v10 v10.0.1 h1:calPxi7tVlxojKunJwQ72kwfozdy25RjA0 github.com/go-redis/redis_rate/v10 v10.0.1/go.mod h1:EMiuO9+cjRkR7UvdvwMO7vbgqJkltQHtwbdIQvaBKIU= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198 h1:FSii2UQeSLngl3jFoR4tUKZLprO7qUlh/TKKticc0BM= github.com/goccmack/gocc v0.0.0-20230228185258-2292f9e40198/go.mod h1:DTh/Y2+NbnOVVoypCCQrovMPDKUGp4yZpSbWg5D0XIM= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/goccy/go-yaml v1.11.3 h1:B3W9IdWbvrUu2OYQGwvU1nZtvMQJPBKgBUuweJjLj6I= @@ -231,10 +235,13 @@ github.com/twmb/franz-go v1.16.1/go.mod h1:/pER254UPPGp/4WfGqRi+SIRGE50RSQzVubQp github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqjJYoij2E= github.com/twmb/franz-go/pkg/kmsg v1.7.0/go.mod h1:se9Mjdt0Nwzc9lnjJ0HyDtLyBnaBDAd7pCje47OhSyw= github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= +github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/wundergraph/astjson v0.0.0-20240822164222-c1cca919e2c8/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= github.com/wundergraph/astjson v0.0.0-20241210134830-8afac530adfe h1:ce4SObDyb/WJZSXNv1ISeoTtqn9u30feksK7GCURDvo= github.com/wundergraph/astjson v0.0.0-20241210134830-8afac530adfe/go.mod h1:eOTL6acwctsN4F3b7YE+eE2t8zcJ/doLm9sZzsxxxrE= github.com/wundergraph/cosmo/composition-go v0.0.0-20240404083832-79d2290084c6/go.mod h1:Ib+rknmwn4oZFN9SQ4VMP3uF/C/tEINEug5iPQxfrPc= +github.com/wundergraph/cosmo/composition-go v0.0.0-20240729154441-b20b00e892c6/go.mod h1:WbKC2jd0g6BFsMpNDRVSoQyZ0QB6sWqpRfe0/1pTah4= github.com/wundergraph/cosmo/router v0.0.0-20240404083832-79d2290084c6/go.mod h1:LS+5qlr4fQVEW7JMXXI1sz7CH5cdnqx3BNc10p+UbW4= github.com/xdg/scram v1.0.3 h1:nTadYh2Fs4BK2xdldEa2g5bbaZp0/+1nJMMPtPxS/to= github.com/xdg/scram v1.0.3/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= @@ -312,7 +319,6 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= @@ -366,7 +372,6 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/plot v0.10.1 h1:dnifSs43YJuNMDzB7v8wV64O4ABBHReuAVAoBxqBqS4= diff --git a/v2/go.mod b/v2/go.mod index dfc5183c7..64c8449f2 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -1,6 +1,6 @@ module github.com/wundergraph/graphql-go-tools/v2 -go 1.21 +go 1.23 require ( github.com/99designs/gqlgen v0.17.45 diff --git a/v2/pkg/engine/plan/abstract_selection_rewriter_helpers.go b/v2/pkg/engine/plan/abstract_selection_rewriter_helpers.go index eac5af515..64d62946e 100644 --- a/v2/pkg/engine/plan/abstract_selection_rewriter_helpers.go +++ b/v2/pkg/engine/plan/abstract_selection_rewriter_helpers.go @@ -39,7 +39,7 @@ func (r *fieldSelectionRewriter) entitiesImplementingInterface(typesImplementing for _, typeName := range typesImplementingInterface { if slices.Contains(entityNames, typeName) { - out = append(out, typeName) + out = append(out, typeName) //nolint:staticcheck } } From 4ac9596e8abd33e26b5c254995732a1919bed078 Mon Sep 17 00:00:00 2001 From: Dustin Deus Date: Mon, 30 Dec 2024 15:57:40 +0100 Subject: [PATCH 18/20] chore(master): release 2.0.0-rc.137 (#1022) :robot: I have created a release *beep* *boop* --- ## [2.0.0-rc.137](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.136...v2.0.0-rc.137) (2024-12-30) ### Features * upgrade go to 1.23 ([#1020](https://github.com/wundergraph/graphql-go-tools/issues/1020)) ([ba20971](https://github.com/wundergraph/graphql-go-tools/commit/ba209713de5a98bff3b2778090fac66a0d4ece1e)) ### Bug Fixes * **astprinter:** implement transitive interface output ([#1021](https://github.com/wundergraph/graphql-go-tools/issues/1021)) ([1b7bac3](https://github.com/wundergraph/graphql-go-tools/commit/1b7bac3e96e0a6ce4563b4a4fe671a4073338128)), closes [#1018](https://github.com/wundergraph/graphql-go-tools/issues/1018) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- release-please-manifest.json | 2 +- v2/CHANGELOG.md | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/release-please-manifest.json b/release-please-manifest.json index 73d17e7c1..b5680a3d5 100644 --- a/release-please-manifest.json +++ b/release-please-manifest.json @@ -1,4 +1,4 @@ { - "v2": "2.0.0-rc.136", + "v2": "2.0.0-rc.137", "execution": "1.1.0" } diff --git a/v2/CHANGELOG.md b/v2/CHANGELOG.md index ae8aa53ee..e04483b51 100644 --- a/v2/CHANGELOG.md +++ b/v2/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [2.0.0-rc.137](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.136...v2.0.0-rc.137) (2024-12-30) + + +### Features + +* upgrade go to 1.23 ([#1020](https://github.com/wundergraph/graphql-go-tools/issues/1020)) ([ba20971](https://github.com/wundergraph/graphql-go-tools/commit/ba209713de5a98bff3b2778090fac66a0d4ece1e)) + + +### Bug Fixes + +* **astprinter:** implement transitive interface output ([#1021](https://github.com/wundergraph/graphql-go-tools/issues/1021)) ([1b7bac3](https://github.com/wundergraph/graphql-go-tools/commit/1b7bac3e96e0a6ce4563b4a4fe671a4073338128)), closes [#1018](https://github.com/wundergraph/graphql-go-tools/issues/1018) + ## [2.0.0-rc.136](https://github.com/wundergraph/graphql-go-tools/compare/v2.0.0-rc.135...v2.0.0-rc.136) (2024-12-16) From fc8c7283dac599e187dec4e0b12ba97d9eec57ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergiy=20=F0=9F=87=BA=F0=9F=87=A6?= <818351+devsergiy@users.noreply.github.com> Date: Mon, 30 Dec 2024 17:04:26 +0200 Subject: [PATCH 19/20] chore: bump execution pkg engine version with go 1.23 (#1023) --- execution/go.mod | 2 +- execution/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/execution/go.mod b/execution/go.mod index a01bc37c8..65f48e232 100644 --- a/execution/go.mod +++ b/execution/go.mod @@ -16,7 +16,7 @@ require ( github.com/wundergraph/astjson v0.0.0-20241210135722-15ca0ac078f8 github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99 github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6 - github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.136 + github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.137 go.uber.org/atomic v1.11.0 google.golang.org/protobuf v1.34.1 ) diff --git a/execution/go.sum b/execution/go.sum index 80b348762..4c0b051e0 100644 --- a/execution/go.sum +++ b/execution/go.sum @@ -143,8 +143,8 @@ github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99 h github.com/wundergraph/cosmo/composition-go v0.0.0-20241020204711-78f240a77c99/go.mod h1:fUuOAUAXUFB/mlSkAaImGeE4A841AKR5dTMWhV4ibxI= github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6 h1:oXnHjPyl2Wes+mnCQbR0F1v0WAUOf974PdANFMA4CmI= github.com/wundergraph/cosmo/router v0.0.0-20240729154441-b20b00e892c6/go.mod h1:0FOIMzc1cY8c4rUczyhmI2es84HGoEJV2MIbDbiEWzg= -github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.136 h1:DrQIzB1uO7W85Nf04h3HCPlKrE+D+bs1fR4LvxCQLgE= -github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.136/go.mod h1:xQLII50+GThIafwHGzeOVLsobqpAAB4WA/M9S+HTzxo= +github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.137 h1:SKLnBI1Fjc0pqF/NJZYi6T8qU58CzaTLqhF0/r9M2Ds= +github.com/wundergraph/graphql-go-tools/v2 v2.0.0-rc.137/go.mod h1:ykbiuySgYVDsvzMs1O4cPKuPDtN4qX8ziYP1CTtgEIA= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= From db7d149e274c85e9cc31fc19f45ce130d97b023b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 17:44:01 +0200 Subject: [PATCH 20/20] chore(master): release execution 1.2.0 (#989) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit :robot: I have created a release *beep* *boop* --- ## [1.2.0](https://github.com/wundergraph/graphql-go-tools/compare/execution/v1.1.0...execution/v1.2.0) (2024-12-30) ### Features * upgrade go to 1.23 ([#1020](https://github.com/wundergraph/graphql-go-tools/issues/1020)) ([ba20971](https://github.com/wundergraph/graphql-go-tools/commit/ba209713de5a98bff3b2778090fac66a0d4ece1e)) ### Bug Fixes * fix regression on removing null variables which was undefined ([#988](https://github.com/wundergraph/graphql-go-tools/issues/988)) ([06d9407](https://github.com/wundergraph/graphql-go-tools/commit/06d9407beee3cd1c210948c4ddbf2b8c0214fe75)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: Dustin Deus Co-authored-by: Sergiy πŸ‡ΊπŸ‡¦ <818351+devsergiy@users.noreply.github.com> --- execution/CHANGELOG.md | 12 ++++++++++++ release-please-manifest.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/execution/CHANGELOG.md b/execution/CHANGELOG.md index a3546aafd..a8bb6933d 100644 --- a/execution/CHANGELOG.md +++ b/execution/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [1.2.0](https://github.com/wundergraph/graphql-go-tools/compare/execution/v1.1.0...execution/v1.2.0) (2024-12-30) + + +### Features + +* upgrade go to 1.23 ([#1020](https://github.com/wundergraph/graphql-go-tools/issues/1020)) ([ba20971](https://github.com/wundergraph/graphql-go-tools/commit/ba209713de5a98bff3b2778090fac66a0d4ece1e)) + + +### Bug Fixes + +* fix regression on removing null variables which was undefined ([#988](https://github.com/wundergraph/graphql-go-tools/issues/988)) ([06d9407](https://github.com/wundergraph/graphql-go-tools/commit/06d9407beee3cd1c210948c4ddbf2b8c0214fe75)) + ## [1.1.0](https://github.com/wundergraph/graphql-go-tools/compare/execution/v1.0.9...execution/v1.1.0) (2024-11-14) diff --git a/release-please-manifest.json b/release-please-manifest.json index b5680a3d5..84e9a23eb 100644 --- a/release-please-manifest.json +++ b/release-please-manifest.json @@ -1,4 +1,4 @@ { "v2": "2.0.0-rc.137", - "execution": "1.1.0" + "execution": "1.2.0" }