-
Notifications
You must be signed in to change notification settings - Fork 348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(compose): respect other @composeDirective
definitions & refactor HTTP Cache plugin
#8268
Conversation
Apollo Federation Subgraph Compatibility Results
Learn more: |
🚀 Snapshot Release (
|
Package | Version | Info |
---|---|---|
@graphql-mesh/cache-cfw-kv |
0.104.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/cache-file |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/cache-inmemory-lru |
0.0.8-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/cache-localforage |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/cache-redis |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/compose-cli |
1.3.6-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/fusion-composition |
0.7.18-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/include |
0.2.11-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/apollo-link |
0.105.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/cli |
0.98.18-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/config |
0.106.18-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/graphql |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/grpc |
0.107.3-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/json-schema |
0.108.14-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/mongoose |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/mysql |
0.104.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/neo4j |
0.105.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/odata |
0.105.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/openapi |
0.108.15-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/postgraphile |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/raml |
0.108.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/soap |
0.105.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/supergraph |
0.9.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/thrift |
0.105.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/tuql |
0.104.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/http |
0.105.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/merger-bare |
0.104.15-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/merger-stitching |
0.104.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/migrate-config-cli |
1.4.10-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/runtime |
0.105.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/store |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-cache |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-encapsulate |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-extend |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-federation |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-filter-schema |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-hive |
0.103.15-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-hoist-field |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-naming-convention |
0.103.14-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-prefix |
0.103.14-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-prune |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-rate-limit |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-rename |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-replace-field |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-resolvers-composition |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-transfer-schema |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transform-type-merging |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/types |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/urql-exchange |
0.105.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/utils |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/grpc |
0.2.2-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/json-schema |
0.108.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/mysql |
0.8.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/neo4j |
0.9.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/odata |
0.1.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/openapi |
0.108.15-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/raml |
0.108.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/soap |
0.105.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/sqlite |
0.7.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@omnigraph/thrift |
0.8.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-deduplicate-request |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-hive |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-http-cache |
0.104.0-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-http-details-extensions |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-jit |
0.1.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-jwt-auth |
1.4.2-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-live-query |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-mock |
0.103.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-newrelic |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-operation-field-permissions |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-operation-headers |
1.3.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-rate-limit |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-response-cache |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-snapshot |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/plugin-statsd |
0.103.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/string-interpolation |
0.5.8-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transport-grpc |
0.2.2-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transport-mysql |
0.8.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transport-neo4j |
0.8.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transport-odata |
0.1.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transport-rest |
0.8.13-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transport-soap |
0.8.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transport-sqlite |
0.8.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
@graphql-mesh/transport-thrift |
0.8.12-alpha-20250123141232-8f9ad143dd2118376769ac14e1a0d69af7f15118 |
npm ↗︎ unpkg ↗︎ |
💻 Website PreviewThe latest changes are available as preview in: https://3d40e28f.graphql-mesh.pages.dev |
0a17f00
to
9ed6883
Compare
@composeDirective
definitions@composeDirective
definitions & refactor HTTP Cache plugin
3bff2de
to
4d42fb6
Compare
@ardatan is there a reason for these two changes to be combined? |
I updated the description, I hope it is more clear right now @Urigo |
f1c60a7
to
631ad2d
Compare
b4581e7
to
1efb292
Compare
c671286
to
eac33eb
Compare
859c980
to
64909f0
Compare
5990d6d
to
bc1e8c1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed during a call :-) All good for me !
Bothe changes are pretty intrecated, I think it is ok to have both in the same PR for this time.
HTTP Cache Plugin
policyOptions
, so HTTP Caching mechanism becomes more configurableETag
support so it can leverage https://the-guild.dev/graphql/yoga-server/v3/features/response-caching#http-caching-via-etag-and-if-none-match-headers as it does the same for Apollo'sCache-Control
Composition
Respect other
@composeDirective
definitions other than MeshWhen some other
@composeDirective
is used, do not detect it as a Mesh directive;New E2E Test
There is a new E2E test that consists of 3 Federation subgraphs;
@cacheControl
on Yoga server, and expose it via@composeDirective
@cacheControl
on Apollo Server, and expose it via@composeDirective
cache-control
header to 5s by default on Apollo ServerTest cases;
Compose with Mesh
Compose with Apollo
Use Response Caching plugin and configure it via
@cacheControl
directives existing in the supergraphUse HTTP Caching plugin to have a caching layer based on HTTP Caching headers
So we test
@cacheControl
directive's behavior with different combinations** Redis Cache storage improvements**
Milliseconds are important in the caching, instead of
EX
which expects integers(seconds in float values are not available when you use milliseconds in ttl), we usePX
so we can use milliseconds.Documentation
graphql-hive/console#6395