graphql-microservices icon indicating copy to clipboard operation
graphql-microservices copied to clipboard

Update Apollo GraphQL packages (major)

Open renovate[bot] opened this issue 4 years ago • 1 comments

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@apollo/gateway ^0.29.0 -> ^2.0.0 age adoption passing confidence
apollo-server ^2.25.3 -> ^3.0.0 age adoption passing confidence
apollo-server ^2.6.3 -> ^3.0.0 age adoption passing confidence

Release Notes

apollographql/federation

v2.4.0

Compare Source

Minor Changes
  • This change introduces a configurable query plan cache. This option allows (#​2385) developers to provide their own query plan cache like so:

    new ApolloGateway({
      queryPlannerConfig: {
        cache: new MyCustomQueryPlanCache(),
      },
    });
    

    The current default implementation is effectively as follows:

    import { InMemoryLRUCache } from "@​apollo/utils.keyvaluecache";
    
    const cache = new InMemoryLRUCache<string>({
      maxSize: Math.pow(2, 20) * 30,
      sizeCalculation<T>(obj: T): number {
        return Buffer.byteLength(JSON.stringify(obj), "utf8");
      },
    });
    

    TypeScript users should implement the QueryPlanCache type which is now exported by @apollo/query-planner:

    import { QueryPlanCache } from '@&#8203;apollo/query-planner';
    
    class MyCustomQueryPlanCache implements QueryPlanCache {
      // ...
    }
    
  • Adds debug/testing query planner options (debug.bypassPlannerForSingleSubgraph) to bypass the query planning (#​2441) process for federated supergraph having only a single subgraph. The option is disabled by default, is not recommended for production, and is not supported (it may be removed later). It is meant for debugging/testing purposes.

Patch Changes

v2.3.5

Compare Source

Patch Changes

v2.3.4

Compare Source

Patch Changes
  • Handle defaulted variables correctly during post-processing. (#​2443)

    Users who tried to use built-in conditional directives (skip/include) with defaulted variables and no variable provided would encounter an error thrown by operation post-processing saying that the variables weren't provided. The defaulted values went unaccounted for, so the operation would validate but then fail an assertion while resolving the conditional.

    With this change, defaulted variable values are now collected and provided to post-processing (with defaults being overwritten by variables that are actually provided).

  • Updated dependencies [6e2d24b5]:

v2.3.3

Compare Source

Patch Changes
  • Update @​apollo/utils.logger typings dependency (#​2269)

  • Exposes, for each subgraph request, the path in the overall gateway operation at which that subgraph request gets inserted. This path is now available as the pathInIncomingRequest field in the arguments of RemoteGraphQLDataSource.willSendRequest and RemoteGraphQLDataSource.didReceiveResponse. (#​2384)

  • Previously the queryPlanStoreKey was a hash of the query concatenated with an unhashed operationName if it was present. This resulted in variable length cache keys that could become unnecessarily long, occupying additional space in the query plan cache. (#​2310)

    This change incorporates the operationName into the hash itself (if operationName is present).

  • Update @​apollo/utils.createhash package, which drops support for node 12 (#​2266)

  • Update @​apollo/utils.isnodelike package, which dropped support for node 12 (#​2268)

  • Update @​apollo/utils.fetcher package, which drops support for node 12 (#​2267)

  • Updated dependencies [71a07f30]:

v2.3.2

Compare Source

Patch Changes
  • Move gateway post-processing errors from errors into extensions.valueCompletion of the response (#​2380)

    [https://github.com/apollographql/federation/pull/2335](https://togithub.com/apollographql/federation/pull/2335)5](PR #​2335) introduced a breaking change that broke existing usages with respect to nullability and gateway error handling. In response to [https://github.com/apollographql/federation/issues/2374](https://togithub.com/apollographql/federation/issues/2374)4](Issue #​2374), we are reverting the breaking portion of this change by continuing to swallow post processing errors as the gateway did prior to v2.3.0. Instead, those errors will now be included on the extensions.valueCompletion object in the response object.

    Gateway v2.3.0 and v2.3.1 are both affected by this change in behavior.

  • Updated dependencies []:

v2.3.1

Compare Source

Patch Changes

This CHANGELOG pertains only to Apollo Federation packages in the 2.x range. The Federation v0.x equivalent for this package can be found here on the version-0.x branch of this repo.

v2.3.0

Compare Source

  • Fix unexpected composition error about @shareable field when @external is on a type in a fed1 schema (one without @link) PR #​2343.
  • Fix issue with some @interfaceObject queries due to missing "input rewrites" PR #​2346.

v2.2.3

Compare Source

v2.2.2

Compare Source

  • Fix issue with path in query plan's deferred nodes PR #​2281.

v2.2.1

Compare Source

  • Fix federation spec always being expanded to the last version PR #​2274.

v2.2.0

Compare Source

  • BREAKING: Disable exposing full document to sub-query by default (introduced 2.1.0):
    • This change decreases memory consumption in general (which is the reason for disabling this by default), but users that have custom code making use of GraphQLDataSourceProcessOptions.document will now need to explicitly set GatewayConfig.queryPlannerConfig.exposeDocumentNodeInFetchNode.
  • BREAKING: composition now rejects @shareable on interface fields. The @shareable directive is about controlling if multiple subgraphs can resolve a particular field, and as interface field are never directly resolved (it's their implementation that are), having @shareable on interface fields is not completely meaningful and was never meant to be supported. If an existing subgraph does have a @shareable on an interface field, this will now be rejected, but the @shareable can simply and safely be removed since it previously was ignored.
  • Allows @shareable to be repeatable so it can be allowed on both a type definition and its extensions PR #​2175.
    • Note that this require the use of the new 2.2 version of the federation spec introduced in this change.
  • Preserve default values of input object fields PR #​2218.
  • Drop support for node12 PR #​2202
  • Fix issue where QP was generating invalid plan missing some data #​361.
  • Avoid reusing named fragments that are invalid for the subgraph PR #​2255.
  • Fix QP not always type-exploding interface when necessary PR #​2246.
  • Fix potential QP issue with shareable root fields PR #​2239.
  • Correctly reject field names starting with __ PR #​2237.
  • Fix error when a skipped enum value had directives applied PR #​2232.
  • Preserve default values of input object fields PR #​2218.

v2.1.4

Compare Source

  • Ensures supergraph @defer/@stream definitions of supergraph are not included in the API schema PR #​2212.
  • Optimize plan for defer where only keys are fetched PR #​2182.
  • Improves error message to help with misspelled source of an @override PR #​2181.
  • Fix validation of variable on input field not taking default into account PR #​2176.

v2.1.3

Compare Source

  • Fix building subgraph selections using the wrong underlying schema PR #​2155.

v2.1.2

Compare Source

  • Allow fields with arguments in @requires PR #​2120.
  • Fix potential inefficient planning due to __typename PR #​2137.
  • Fix potential assertion during query planning PR #​2133.
  • Fix some defer query plans having invalid result sets (with empty branches) PR #​2125.
  • Fix defer information lost when cloning fetch group (resulting in non-deferred parts) PR #​2129.
  • Fix directives on fragment spread being lost PR #​2126.

v2.1.1

Compare Source

v2.1.0

Compare Source

  • The method RemoteGraphQLDataSource.errorFromResponse now returns a GraphQLError (as defined by graphql) rather than an ApolloError (as defined by apollo-server-errors). PR #​2028
    • BREAKING: If you call RemoteGraphQLDataSource.errorFromResponse manually and expect its return value to be a particular subclass of GraphQLError, or if you expect the error received by didEncounterError to be a particular subclass of GraphQLError, then this change may affect you. We recommend checking error.extensions.code instead.
  • The LocalGraphQLDataSource class no longer supports the undocumented __resolveObject Apollo Server feature. PR #​2007
    • BREAKING: If you relied on the undocumented __resolveObject feature with LocalGraphQLDataSource, it will no longer work. If this affects you, file an issue and we can help you find a workaround.
  • Fix issue when using a type condition on an inaccessible type in @require #​1873.
    • BREAKING: this fix required passing a new argument to the executeQueryPlan method, which is technically exported by the gateway. Most users of the gateway should not call this method directly (which is exported mainly for testing purposes in the first place) and will thus be unaffected, but if you do call this method directly, you will have to pass the new argument when upgrading. See the method documentation for details.
  • Reject directive applications within fields of @key, @provides and @requiresPR #​1975.
    • BREAKING: previously, directive applications within a @key, @provides or @requires were parsed but not honored in any way. As this change reject such applications (at composition time), it could theoretically require to remove some existing (ignored) directive applications within a @key, @provides or @requires.
  • Fix issue where fragment expansion can erase applied directives (most notably @defer) PR #​2093.
  • Fix abnormally high memory usage when extracting subgraphs for some fed1 supergraphs (and small other memory footprint improvements) PR #​2089.
  • Fix issue with fragment reusing code something mistakenly re-expanding fragments PR #​2098.
  • Fix issue when type is only reachable through a @​provides PR #​2083.
  • Fix case where some key field necessary to a @require fetch were not previously fetched PR #​2075.
  • Add type definitions to schema extensions PR #​2081
  • Update peer dependency graphql to ^16.5.0 to use GraphQLErrorOptions PR #​2060
  • Upgrade underlying @apollo/utils.fetcher to support aborting a request. This is a type-only change, and will not impact the underlying runtime. PR #​2017.
  • Some TypeScript types, such as the arguments and return value of GraphQLDataSource.process, are defined using types from the @apollo/server-gateway-interface package instead of from apollo-server-types and apollo-server-core. This is intended to be fully backwards-compatible; please file an issue if this leads to TypeScript compilation issues. PR #​2044
  • Don't require @link when using @composeDirective PR #​2046
  • Don't do debug logging by default PR #​2048
  • Add @composeDirective directive to specify directives that should be merged to the supergraph during composition PR #​1996.
  • Fix fragment reuse in subgraph fetches PR #​1911.
  • Custom fetchers should now accept a Request object which has a signal: AbortSignal property https://fetch.spec.whatwg.org/#requestinit for request timeout purposes. PR #​2017
  • Expose document representation of sub-query request within GraphQLDataSourceProcessOptions so that it is available to RemoteGraphQLDataSource.process and RemoteGraphQLDataSource.willSendRequest PR#​1878
  • Cleanup error related code, adding missing error code to a few errors PR #​1914.
  • Fix issue generating plan for a "diamond-shaped" dependency PR #​1900.
  • Fix issue computing query plan costs that can lead to extra unnecessary fetches PR #​1937.
  • Move DEFAULT_UPLINK_ENDPOINTS to static member of UplinkSupergraphManager PR #​1977.
  • Add node-fetch as a runtime dependency PR #​1970.
  • Add timeouts when making requests to Apollo Uplink PR #​1950.
  • Avoid type-explosion with fed1 supergraphs using a fed2 query planner PR #​1994.
  • Add callback when fetching a supergraph from Apollo Uplink fails PR #​1812.
  • Expand support for Node.js v18 PR #​1884

v2.0.5

Compare Source

  • Fix bug with unsatisfiable query branch when handling federation 1 supergraph PR #​1908.

v2.0.4

Compare Source

  • Fix issue when all root operations were defined in an extend schema PR #​1875.

v2.0.3

Compare Source

  • Fix bug with type extension of empty type definition PR #​1821
  • Fix output of printSubgraphSchema method, ensuring it can be read back by composition and buildSubgraphSchema PR #​1831.
  • Fix issue with @requires and conditional queries (@include/@skip) 1835.
  • Fix bug with field covariance when the underlying plan use type-explosion 1859.

v2.0.2

Compare Source

  • BREAKING: We no longer export a getDefaultFetcher function. This function returned the default fetch implementation used to talk to Uplink (which is distinct from the default fetch implementation used by RemoteGraphQLDataSource to talk to subgraphs). It was the fetcher from make-fetch-happen v8 with some preset configuration relating to caching and request headers. However, the caching configuration was not actually being used when talking to Uplink (as we talk to Uplink over POST requests, and the Uplink protocol has an application-level mechanism for avoiding unnecessary large responses), and the request headers were already being provided explicitly by the Uplink client code. Since this release is also upgrading make-fetch-happen, it is impossible to promise that there would be no behavior change at all to the fetcher returned from make-fetch-happen, and as none of the preset configuration is actually relevant to the internal use of getDefaultFetcher (which now just uses make-fetch-happens without extra configuration), we have removed the function. If you were using this function, you can replace const fetcher = getDefaultFetcher() with import fetcher from 'make-fetch-happen'. PR #​1805
  • The fetch implementation used by default by UplinkFetcher and RemoteGraphQLDataSource is now imported from make-fetch-happen v10 instead of v8. The fetcher used by RemoteGraphQLDataSource no longer limits the number of simultaneous requests per subgraph (or specifically, per host/port pair) to 15 by default; instead, there is no limit. (If you want to restore the previous behavior, install make-fetch-happen, import fetcher from it, and pass new RemoteGraphQLDataSource({ fetcher: fetcher.defaults(maxSockets: 15)})) in your buildService option.) Note that if you invoke the fetcher yourself in a RemoteGraphQLDataSource subclass, you should ensure that you pass "plain" objects rather than Headers or Request objects, as the newer version has slightly different logic about how to recognize Headers and Request objects. We have adjusted the TypeScript types for fetcher so that only these "plain" objects (which result in consistent behavior across all fetcher implementations) are permitted. PR #​1805
  • Fix Schema.clone when directive application happens before definition PR #​1785
  • More helpful error message for errors encountered while reading supergraphs generated pre-federation 2 PR #​1796
  • Fix handling of @​require "chains" (a @​require whose fields have @​require themselves) PR #​1790
  • Fix bug applying an imported federation directive on another directive definition PR #​1797.
  • Fix bug where planning a query with @require impacts the plans of followup queries PR #​1783.
  • Improve fed1 schema support during composition PR #​1735
  • Add missing @​apollo/federation-internals dependency to gateway PR #​1721
  • Improve merging of groups during @require handling in query planning PR #​1732
  • Move __resolveReference resolvers on to extensions PR #​1746
  • Add gateway version to schema extensions PR #​1751
  • Honor directive imports when directive name is spec name PR #​1720
  • Migrate to @apollo/utils packages for createSHA and isNodeLike PR #​1765

v2.0.1

Compare Source

  • Use for: SECURITY in the core/link directive application in the supergraph for @inaccessible PR #​1715

v2.0.0

Compare Source

  • Previous preview release promoted to general availability! Please see previous changelog entries for full info.

v0.54.1

Compare Source

v0.52.1

Compare Source

v0.52.0

Compare Source

v0.51.0

Compare Source

v0.50.2

Compare Source

v0.50.1

Compare Source

v0.50.0

Compare Source

v0.49.0

Compare Source

v0.48.3

Compare Source

v0.48.1

Compare Source

v0.48.0

Compare Source

v0.47.0

Compare Source

v0.46.0

Compare Source

v0.45.1

Compare Source

v0.45.0

Compare Source

v0.44.1

Compare Source

v0.44.0

Compare Source

v0.43.1

Compare Source

v0.43.0

Compare Source

v0.42.3

Compare Source

v0.42.2

Compare Source

v0.42.1

Compare Source

v0.42.0

Compare Source

v0.41.0

Compare Source

v0.40.0

Compare Source

v0.39.0

Compare Source

v0.38.2

Compare Source

v0.38.1

Compare Source

v0.38.0

Compare Source

v0.37.0

Compare Source

v0.36.0

Compare Source

v0.35.1

Compare Source

v0.35.0

Compare Source

v0.34.0

Compare Source

v0.33.0

Compare Source

v0.32.0

Compare Source

v0.31.1

Compare Source

v0.31.0

Compare Source

v0.30.0

Compare Source

v0.29.1

Compare Source

apollographql/apollo-server

v3.12.0

Compare Source

v3.11.1

Compare Source

v3.11.0

Compare Source

v3.10.4

Compare Source

v3.10.3

Compare Source

v3.10.2

Compare Source

v3.10.1

Compare Source

v3.10.0

Compare Source

v3.9.0

Compare Source

v3.8.2

Compare Source

v3.8.1

Compare Source

v3.8.0

Compare Source

v3.7.0

Compare Source

v3.6.8

Compare Source

v3.6.7

Compare Source

v3.6.6

Compare Source

v3.6.5

Compare Source

v3.6.4

Compare Source

v3.6.3

Compare Source

v3.6.2

Compare Source

v3.6.1

Compare Source

v3.6.0

Compare Source

v3.5.0

Compare Source

v3.4.1

Compare Source

v3.4.0

Compare Source

v3.3.0

Compare Source

v3.2.0

Compare Source

v3.1.2

Compare Source

v3.1.1

Compare Source

v3.1.0

Compare Source

v3.0.2

Compare Source

v3.0.1

Compare Source

v3.0.0

Compare Source

v2.26.1

Compare Source

v2.26.0

Compare Source

v2.25.4

Compare Source


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • [ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

renovate[bot] avatar Dec 01 '21 20:12 renovate[bot]

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

renovate[bot] avatar Mar 24 '23 22:03 renovate[bot]