Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
21 KiB
@graphql-hive/core
0.20.1
Patch Changes
- #7507
8bbbfb8Thanks @doronrosenberg! - Update the tiny-lru dependency
0.20.0
Minor Changes
-
#7462
60133a4Thanks @adambenhassen! - Add Layer 2 (L2) cache support for persisted documents.This feature adds a second layer of caching between the in-memory cache (L1) and the CDN for persisted documents. This is particularly useful for:
- Serverless environments: Where in-memory cache is lost between invocations
- Multi-instance deployments: To share cached documents across server instances
- Reducing CDN calls: By caching documents in Redis or similar external caches
The lookup flow is: L1 (memory) -> L2 (Redis/external) -> CDN
Example with GraphQL Yoga:
import { createYoga } from 'graphql-yoga' import { createClient } from 'redis' import { useHive } from '@graphql-hive/yoga' const redis = createClient({ url: 'redis://localhost:6379' }) await redis.connect() const yoga = createYoga({ plugins: [ useHive({ experimental__persistedDocuments: { cdn: { endpoint: 'https://cdn.graphql-hive.com/artifacts/v1/<target_id>', accessToken: '<cdn_access_token>' }, layer2Cache: { cache: { get: key => redis.get(`hive:pd:${key}`), set: (key, value, opts) => redis.set(`hive:pd:${key}`, value, opts?.ttl ? { EX: opts.ttl } : {}) }, ttlSeconds: 3600, // 1 hour for found documents notFoundTtlSeconds: 60 // 1 minute for not-found (negative caching) } } }) ] })Features:
- Configurable TTL for found documents (
ttlSeconds) - Configurable TTL for negative caching (
notFoundTtlSeconds) - Graceful fallback to CDN if L2 cache fails
- Support for
waitUntilin serverless environments - Apollo Server integration auto-uses context cache if available
0.19.0
Minor Changes
Patch Changes
- #7414
4f9f988Thanks @ardatan! - Support `graphql-client-name` and `graphql-client-version` by default in addition to the existing `x-graphql-client-name` and `x-graphql-client-version` headers
0.18.0
Minor Changes
-
#7346
f266368Thanks @n1ru4l! - Add support for providing a logger object viaHivePluginOptions.It is possible to provide the following options:
- 'trace'
- 'debug'
- 'info' default
- 'warn'
- 'error'
import { createHive } from '@graphql-hive/core' const client = createHive({ logger: 'info' })In addition to that, it is also possible to provide a Hive Logger instance, that allows more control over how you want to log and forward logs.
import { createHive } from '@graphql-hive/core' import { Logger } from '@graphql-hive/logger' const client = createHive({ logger: new Logger() })Head to our Hive Logger documentation to learn more.
The
HivePluginOptions.debugoption is now deprecated. Instead, please use theloggeroption to control logging levels.import { createHive } from '@graphql-hive/core' const client = createHive({ - debug: process.env.DEBUG === "1", + logger: process.env.DEBUG === "1" ? "debug" : "info", })Note: If the
loggerproperty is provided, thedebugoption is ignored.
The
HivePluginOptions.agent.loggeroption is now deprecated. Instead, please provideHivePluginOptions.logger.import { createHive } from '@graphql-hive/core' const logger = new Logger() const client = createHive({ agent: { - logger, }, + logger, })Note: If both options are provided, the
agentoption is ignored. -
#7346
f266368Thanks @n1ru4l! - Persisted Documents ImprovementsPersisted documents now support specifying a mirror endpoint that will be used in case the main CDN is unreachable. Provide an array of endpoints to the client configuration.
import { createClient } from '@graphql-hive/core' const client = createClient({ experimental__persistedDocuments: { cdn: { endpoint: [ 'https://cdn.graphql-hive.com/artifacts/v1/9fb37bc4-e520-4019-843a-0c8698c25688', 'https://cdn-mirror.graphql-hive.com/artifacts/v1/9fb37bc4-e520-4019-843a-0c8698c25688' ], accessToken: '' } } })In addition to that, the underlying logic for looking up documents now uses a circuit breaker. If a single endpoint is unreachable, further lookups on that endpoint are skipped.
The behaviour of the circuit breaker can be customized via the
circuitBreakerconfiguration.import { createClient } from '@graphql-hive/core' const client = createClient({ experimental__persistedDocuments: { cdn: { endpoint: [ 'https://cdn.graphql-hive.com/artifacts/v1/9fb37bc4-e520-4019-843a-0c8698c25688', 'https://cdn-mirror.graphql-hive.com/artifacts/v1/9fb37bc4-e520-4019-843a-0c8698c25688' ], accessToken: '' }, circuitBreaker: { // open circuit if 50 percent of request result in an error errorThresholdPercentage: 50, // start monitoring the circuit after 10 requests volumeThreshold: 10, // time before the backend is tried again after the circuit is open resetTimeout: 30_000 } } }) -
#7346
f266368Thanks @n1ru4l! - New CDN Artifact FetcherWe have a new interface for fetching CDN artifacts (such as supergraph and services) with a cache from the CDN. This fetcher supports providing a mirror endpoint and comes with a circuit breaker under the hood.
const supergraphFetcher = createCDNArtifactFetcher({ endpoint: [ 'https://cdn.graphql-hive.com/artifacts/v1/9fb37bc4-e520-4019-843a-0c8698c25688', 'https://cdn-mirror.graphql-hive.com/artifacts/v1/9fb37bc4-e520-4019-843a-0c8698c25688' ], accessKey: '' }) supergraphFetcher.fetch()
createSupergraphSDLFetcheris now deprecated. Please upgrade to usecreateCDNArtifactFetcher.
0.15.1
Patch Changes
0.15.0
Minor Changes
-
#7280
2cc443cThanks @n1ru4l! - Support circuit breaking for usage reporting.Circuit breaking is a fault-tolerance pattern that prevents a system from repeatedly calling a failing service. When errors or timeouts exceed a set threshold, the circuit “opens,” blocking further requests until the service recovers.
This ensures that during a network issue or outage, the service using the Hive SDK remains healthy and is not overwhelmed by failed usage reports or repeated retries.
import { createClient } from '@graphql-hive/core' const client = createClient({ agent: { circuitBreaker: { /** * Count of requests before starting evaluating. * Default: 5 */ volumeThreshold: 5, /** * Percentage of requests failing before the circuit breaker kicks in. * Default: 50 */ errorThresholdPercentage: 1, /** * After what time the circuit breaker is attempting to retry sending requests in milliseconds * Default: 30_000 */ resetTimeout: 10_000 } } })
0.14.0
Minor Changes
-
#7264
582bc0eThanks @n1ru4l! - Introduce debug log level. HTTP retry log pollute the error log. The retries are now logged to the debug level. In order to see debug logs set thedebugoption to true.const hive = createHive({ debug: true })If you are using a custom logger, make sure to provide a
debuglogging method implementation.const hive = createHive({ debug: true, agent: { logger: { info() {}, error() {}, debug() {} } } })
0.13.2
Patch Changes
-
#7253
43920cdThanks @ardatan! - Allow to provideversiontoAgentOptionsin Hive Client integrations.createHive({ agent: { name: 'my-custom-agent', version: '1.2.3' // new field } })Currently you can provide
namebut notversion. This change allows to provide bothnameandversionto better identify the clients connecting to Hive Console. Previously the dependent libraries like Yoga, Envelop and Hive Gateway integrations were incorrectly sending their names with the version of@graphql-hive/corepackage. Now they will be able to send their own versions. -
#7253
43920cdThanks @ardatan! - AcceptnameandversiontocreateSupergraphSDLFetcherto build a more accurate user agent instead of passinghive-clientwith@graphql-hive/core's version
0.13.1
Patch Changes
0.13.0
Minor Changes
- #6876
8d56b98Thanks @n1ru4l! - Add helper functionhashOperationfor generating consistent hashes used within the Hive Console platform.
0.12.0
Minor Changes
- #6764
bbd5643Thanks @jdolle! - Track provided operation arguments/inputs and use them to determine conditional breaking changes; Fix null to non-null argument breaking change edge case"
0.11.0
Minor Changes
-
#6637
5130fc1Thanks @n1ru4l! - Add error logging for invalid combinations of thetargetandtokenconfiguration.- Please make sure to provide the
targetoption for usage reporting when using a token that starts withhvo1/. - Please make sure to not provide a
targetoption for usage reporting when a token does not start withhvo1/
- Please make sure to provide the
0.10.1
Patch Changes
-
#6606
ee70018Thanks @enisdenjo! - Client can be used only for experimental persisted documents -
#6623
a003f78Thanks @ardatan! - Use ranged versions in dependencies to prevent multiple versions of the same package
0.10.0
Minor Changes
-
#6574
494697eThanks @n1ru4l! - Add support for providing a target for usage reporting with organization access tokens. This can either be a slug following the format$organizationSlug/$projectSlug/$targetSlug(e.gthe-guild/graphql-hive/staging) or an UUID (e.g.a0f4c605-6541-4350-8cfe-b31f21a4bf80)import { createHive } from '@graphql-hive/core' const hive = createHive({ enabled: true, token: 'ORGANIZATION_ACCESS_TOKEN', usage: { target: 'my-org/my-project/my-target' } })
0.9.1
Patch Changes
- #6494
ae2d16dThanks @n1ru4l! - Replace usage ofcrypto.randomUUID()with a custom UUID generation for better backwards compatability.
0.9.0
Minor Changes
- #6488
f7d65feThanks @n1ru4l! - Include and log ax-request-idheader for all requests sent to the Hive API. This helps users to share more context with Hive staff when encountering errors.
0.8.4
Patch Changes
- #6383
ec356a7Thanks @kamilkisiela! - Collect custom scalars from arguments and input object fields
0.8.3
Patch Changes
- #6118
039c66bThanks @ardatan! - Remove internal_testing_option to replace the underlyingfetchimplementation, and addfetchoption to do the same as part of the public API.
0.8.2
Patch Changes
- #5676
c728803Thanks @kamilkisiela! - Correct collection of enum values when used in a list
0.8.1
Patch Changes
- #5667
be5d39cThanks @kamilkisiela! - Report enum values when an enum is used as an output type
0.8.0
Minor Changes
- #5401
3ffdb6eThanks @n1ru4l! - Deduplicate persisted document lookups from the registry for reducing the amount of concurrent HTTP requests.
0.7.1
Patch Changes
- #5367
a896642Thanks @kamilkisiela! - Move createSupergraphSDLFetcher to @graphql-hive/core package
0.7.0
Minor Changes
Patch Changes
- #5361
3f03e7bThanks @kamilkisiela! - Fixed issue where usage reports were sent only on app disposal or max batch size, now also sent at set intervals.
0.6.1
Patch Changes
- #5304
f2fef08Thanks @kamilkisiela! - Fixed a logging issue where both initiated requests and successful responses were being recorded. This was causing the logs to be filled with unnecessary information and affectedhive artifact:fetch --artifactcommand.
0.6.0
Minor Changes
0.5.0
Minor Changes
- #5116
f1e43c6Thanks @dotansimha! - AddedcollectRawUsageto Hive Client core package
0.4.0
Minor Changes
- #5097
b8998e7Thanks @kamilkisiela! - Add retry mechanism to the http client
0.3.1
Patch Changes
- #4932
cbc8364Thanks @n1ru4l! - Prevent failing usage reporting when returning an object with additional properties aside fromnameandversionfrom the client info object/factory function.
0.3.0
Minor Changes
-
#4573
06d465eThanks @kamilkisiela! - Moved most of @graphql-hive/client code here -
#4494
c5eeac5Thanks @kamilkisiela! - 🚨 BREAKING CHANGE 🚨 Requires now Node v16+
0.2.4
Patch Changes
- #4328
bb0ff23Thanks @Hebilicious! - Use node specifier for crypto import
0.2.3
Patch Changes
- #668
e116841Thanks @kamilkisiela! - Fix ESM/CJS issue
0.2.2
Patch Changes
ad66973: Bump
0.2.1
Patch Changes
0a5dbeb: Point to graphql-hive.com
0.2.0
Minor Changes
- ac9b868c: Support GraphQL v16
0.1.0
Minor Changes
- d7348a3: Hide literals and remove aliases
Patch Changes
- d7348a3: Pick operation name from DocumentNode
0.0.5
Patch Changes
- c6ef3d2: Bob update
0.0.4
Patch Changes
- 4a7c569: Share operation hashing
0.0.3
Patch Changes
- 6b74355: Fix sorting
0.0.2
Patch Changes
- 094c861: Normalization of operations