Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .github/workflows/dummy-ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# This job is used to satisfy PR checks for parts of the codebase
# that are not tested during CI
name: Dummy CI
on:
pull_request:
paths:
- '.gitignore'
- 'LICENSE'
- 'README.md'
jobs:
build_test:
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- run: echo Nothing to do
2 changes: 2 additions & 0 deletions .github/workflows/execution.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ on:
- 'v2/**'
- 'execution/**'
- '.github/workflows/execution.yml'
- '.golangci.yml'
push:
branches:
- master
paths:
- 'v2/**'
- 'execution/**'
- '.github/workflows/execution.yml'
- '.golangci.yml'
jobs:
test:
name: Build and test (go ${{ matrix.go }} / ${{ matrix.os }})
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/v2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
- '.github/workflows/pr-title.yml'
- '.github/workflows/release.yml'
- 'commitlint.config.js'
- '.golangci.yml'
push:
branches:
- master
Expand All @@ -16,6 +17,7 @@ on:
- '.github/workflows/pr-title.yml'
- '.github/workflows/release.yml'
- 'commitlint.config.js'
- '.golangci.yml'
jobs:
test:
name: Build and test (go ${{ matrix.go }} / ${{ matrix.os }})
Expand Down
46 changes: 0 additions & 46 deletions Makefile

This file was deleted.

14 changes: 6 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Check out the [currently open positions](https://wundergraph.com/jobs#open-posit

## The State of GraphQL Federation 2024

Get insights from industry experts and Federation practicioners across all industries and learn how companies are using GraphQL Federation.
Get insights from industry experts and Federation practitioners across all industries and learn how companies are using GraphQL Federation.
Head over to the [State of GraphQL Federation 2024](https://wundergraph.com/state-of-graphql-federation/2024) page and download the full **48 page PDF report** for free!

## From the WunderGraph Blog
Expand Down Expand Up @@ -63,22 +63,20 @@ This repository contains multiple packages joined via [workspace](https://github
| [graphql-go-tools v2](https://github.com/wundergraph/graphql-go-tools/blob/master/v2/go.mod) | GraphQL engine implementation consisting of lexer, parser, ast, ast validation, ast normalization, datasources, query planner and resolver. Supports GraphQL Federation. Has built-in support for batching federation entity calls | - | actual version, active development |
| [execution](https://github.com/wundergraph/graphql-go-tools/blob/master/execution/go.mod) | Execution helpers for the request handling and engine configuration builder | depends on [graphql-go-tools v2](https://github.com/wundergraph/graphql-go-tools/blob/master/v2/go.mod) and [composition](https://github.com/wundergraph/cosmo/blob/main/composition-go/go.mod) | actual version |
| [examples/federation](https://github.com/wundergraph/graphql-go-tools/blob/master/examples/federation/go.mod) | Example implementation of graphql federation gateway. This example is not production ready. For production ready solution please consider using [cosmo router](https://github.com/wundergraph/cosmo/tree/main) | depends on [execution](https://github.com/wundergraph/graphql-go-tools/blob/master/execution/go.mod) package | actual federation gateway example |
| [graphql-go-tools v1](https://github.com/wundergraph/graphql-go-tools/blob/master/go.mod) | Legacy GraphQL engine implementation. This version 1 package is in maintenance mode and accepts only pull requests with critical bug fixes. All new features will be implemented in the version 2 package only. | - | deprecated, maintenance mode |
| [graphql-go-tools v1](https://github.com/wundergraph/graphql-go-tools/blob/v1.67.4/go.mod) | Deprecated and retracted GraphQL engine implementation. Not supported nor maintained. It was removed from the repo in v1.67.5. | - | deprecated |


## Notes

This library is used in production at [WunderGraph](https://wundergraph.com/).
We've recently introduced a v2 module that is not completely backwards compatible with v1, hence the major version bump.
The v2 module contains big rewrites in the engine package, mainly to better support GraphQL Federation.
Please consider the v1 module as deprecated and move to v2 as soon as possible.
We support and actively improve only the v2 module.

We have customers who pay us to maintain this library and steer the direction of the project.
[Contact us](https://wundergraph.com/contact/sales) if you're looking for commercial support, features or consulting.

## Performance

The architecture of this library is designed for performance, high-throughput and low garbage collection overhead.
The architecture of this library is designed for performance, high throughput and low garbage collection overhead.
The following benchmark measures the "overhead" of loading and resolving a GraphQL response from four static in-memory Subgraphs at 0,007459 ms/op.
In more complete end-to-end benchmarks, we've measured up to 8x more requests per second and 8x lower p99 latency compared to Apollo Router, which is written in Rust.

Expand All @@ -94,7 +92,7 @@ Benchmark_NestedBatchingWithoutChecks-10 473186 7134 ns/op
## Tutorial

If you're here to learn how to use this library to build your own custom GraphQL Router or API Gateway,
here's a speed run tutorial for you, based on how we use this library in Cosmo Router.
here's a speed-run tutorial, based on how we use this library in Cosmo Router.

```go
package main
Expand Down Expand Up @@ -783,7 +781,7 @@ Following, here's a list of all the important packages in this library and what
- Fixed various bugs in the parser & visitor & printer
- Refactored and enhanced the astimport package
- Current maintainer of the plan package
- [Patric Vormstein][patric-vormstein-github] (Active Maintainer)
- [Patric Vormstein][patric-vormstein-github] (Inactive)
- Fixed lexer on windows
- Author of the graphql package to simplify the usage of the library
- Refactored the http package to simplify usage with http servers
Expand Down
76 changes: 5 additions & 71 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,75 +2,9 @@ module github.com/wundergraph/graphql-go-tools

go 1.25

require (
github.com/99designs/gqlgen v0.17.45
github.com/buger/jsonparser v1.1.1
github.com/cespare/xxhash/v2 v2.3.0
github.com/dave/jennifer v1.4.0
github.com/davecgh/go-spew v1.1.1
github.com/eclipse/paho.mqtt.golang v1.2.0
github.com/evanphx/json-patch/v5 v5.1.0
github.com/go-test/deep v1.0.8
github.com/gobwas/ws v1.4.0
github.com/golang/mock v1.6.0
github.com/google/go-cmp v0.6.0
github.com/gorilla/websocket v1.5.1
github.com/hashicorp/golang-lru v0.5.4
github.com/iancoleman/strcase v0.3.0
github.com/jensneuse/abstractlogger v0.0.4
github.com/jensneuse/byte-template v0.0.0-20200214152254-4f3cf06e5c68
github.com/jensneuse/diffview v1.0.0
github.com/jensneuse/pipeline v0.0.0-20200117120358-9fb4de085cd6
github.com/nats-io/nats.go v1.35.0
github.com/r3labs/sse/v2 v2.8.1
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1
github.com/sebdah/goldie/v2 v2.7.1
github.com/stretchr/testify v1.10.0
github.com/tidwall/gjson v1.17.0
github.com/tidwall/sjson v1.2.5
github.com/vektah/gqlparser/v2 v2.5.14
go.uber.org/atomic v1.11.0
go.uber.org/zap v1.26.0
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8
gopkg.in/yaml.v2 v2.4.0
nhooyr.io/websocket v1.8.11
)

require (
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible // indirect
github.com/agnivade/levenshtein v1.1.1 // indirect
github.com/gobwas/httphead v0.1.0 // indirect
github.com/gobwas/pool v0.2.1 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/huandu/xstrings v1.2.1 // indirect
github.com/imdario/mergo v0.3.8 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/logrusorgru/aurora/v3 v3.0.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/copystructure v1.0.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.0 // indirect
github.com/nats-io/nkeys v0.4.7 // indirect
github.com/nats-io/nuid v1.0.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/sergi/go-diff v1.3.1 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/sosodev/duration v1.2.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
go.uber.org/goleak v1.3.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.36.0 // indirect
golang.org/x/net v0.38.0 // indirect
golang.org/x/sys v0.31.0 // indirect
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
// Use github.com/wundergraph/graphql-go-tools/v2 instead.
retract (
[v1.0.0, v1.67.5]
v0.13.2
v0.0.1
)
Loading