Repository: apollographql/apollo-server
Pull request #7880 (2024-05-18 08:34:04)

Update custom-scalars.mdx
`value` should be of type `unknown` instead of `number` with graphql@16.8.1:

```log
Type '(value: number) => number' is not assignable to type 'GraphQLScalarValueParser<number>'.
  Types of parameters 'value' and 'inputValue' are incompatible.
    Type 'unknown' is not assignable to type 'number'.ts(2322)
definition.d.ts(365, 3): The expected type comes from property 'parseValue' which is declared here on type 'Readonly<GraphQLScalarTypeConfig<number, number>>'
```


netlify[bot]: ### <span aria-hidden="true">👷</span> Deploy request for *apollo-server-docs* pending review.
[Visit the deploys page to approve it](https://app.netlify.com/sites/apollo-server-docs/deploys)

|  Name | Link |
|:-:|------------------------|
|<span aria-hidden="true">🔨</span> Latest commit | f9cd7106fbb4fe243ebb80ba30b131da17a5456a |
apollo-cla: @mx-bernhard: Thank you for submitting a pull request! Before we can merge it, you'll need to sign the Apollo Contributor License Agreement here: https://contribute.apollographql.com/
codesandbox-ci[bot]: This pull request is automatically built and testable in [CodeSandbox](https://codesandbox.io).

  To see build info of the built libraries, click [here](https://ci.codesandbox.io/status/apollographql/apollo-server/pr/7880/builds/505897) or the icon next to each commit SHA.

Patch:
diff --git a/.changeset/forty-cherries-wonder.md b/.changeset/forty-cherries-wonder.md
new file mode 100644
index 000000000..a845151cc
--- /dev/null
+++ b/.changeset/forty-cherries-wonder.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/.changeset/four-dogs-brake.md b/.changeset/four-dogs-brake.md
new file mode 100644
index 000000000..a845151cc
--- /dev/null
+++ b/.changeset/four-dogs-brake.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/.changeset/khaki-peas-love.md b/.changeset/khaki-peas-love.md
new file mode 100644
index 000000000..310b8df82
--- /dev/null
+++ b/.changeset/khaki-peas-love.md
@@ -0,0 +1,6 @@
+---
+'@apollo/server-integration-testsuite': patch
+'@apollo/server': patch
+---
+
+Non-major dependency updates
diff --git a/.changeset/ninety-clouds-smile.md b/.changeset/ninety-clouds-smile.md
new file mode 100644
index 000000000..77e953d1b
--- /dev/null
+++ b/.changeset/ninety-clouds-smile.md
@@ -0,0 +1,6 @@
+---
+"@apollo/server-integration-testsuite": patch
+"@apollo/server": patch
+---
+
+Inline a small dependency that was causing build issues for ESM projects
diff --git a/.changeset/red-eagles-pump.md b/.changeset/red-eagles-pump.md
new file mode 100644
index 000000000..a845151cc
--- /dev/null
+++ b/.changeset/red-eagles-pump.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/.changeset/seven-brooms-impress.md b/.changeset/seven-brooms-impress.md
new file mode 100644
index 000000000..a845151cc
--- /dev/null
+++ b/.changeset/seven-brooms-impress.md
@@ -0,0 +1,2 @@
+---
+---
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 44938d685..6798355b2 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -144,6 +144,7 @@ workflows:
                 - "16"
                 - "18"
                 - "20"
+                - "22"
       - "Check for FIXM\x45"
       - Prettier
       - ESLint
diff --git a/cspell-dict.txt b/cspell-dict.txt
index 2515e3a41..71fe67c72 100644
--- a/cspell-dict.txt
+++ b/cspell-dict.txt
@@ -98,7 +98,6 @@ instanceof
 iosapp
 isnodelike
 iteratees
-josephg
 jsdelivr
 keyv
 keyvadapter
diff --git a/docs/source/api/plugin/subscription-callback.mdx b/docs/source/api/plugin/subscription-callback.mdx
index 9ff3eabd2..8a3afc0e2 100644
--- a/docs/source/api/plugin/subscription-callback.mdx
+++ b/docs/source/api/plugin/subscription-callback.mdx
@@ -4,7 +4,7 @@ api_reference: true
 minVersion: 4.9.0
 ---
 
-This document covers the usage of the subscription callback plugin for use in Apollo Federation with Apollo Router. For more information about the protocol itself, see the [subscription callback protocol](/router/executing-operations/subscription-callback-protocol).
+This document covers the usage of the subscription callback plugin for use in Apollo Federation with GraphOS Router. For more information about the protocol itself, see the [subscription callback protocol](/router/executing-operations/subscription-callback-protocol).
 
 > ⚠️ **Note**: The subscription callback protocol is currently in [preview](/resources/product-launch-stages#preview). Breaking changes might be introduced during the preview period.
 
@@ -12,7 +12,7 @@ This document covers the usage of the subscription callback plugin for use in Ap
 
 This article documents the options for the `ApolloServerPluginSubscriptionCallback` plugin, which you can import from `@apollo/server/plugin/subscriptionCallback`.
 
-This plugin enables your GraphQL server to respond to [subscription operations](/apollo-server/data/subscriptions/) using the [subscription callback protocol](https://www.apollographql.com/docs/router/executing-operations/subscription-callback-protocol/#initialization).  Apollo Router uses this protocol to execute subscription operations and receive updates at a URL specified by the router.
+This plugin enables your GraphQL server to respond to [subscription operations](/apollo-server/data/subscriptions/) using the [subscription callback protocol](https://www.apollographql.com/docs/router/executing-operations/subscription-callback-protocol/#initialization).  GraphOS Router uses this protocol to execute subscription operations and receive updates at a URL specified by the router.
 
 This feature can only be enabled by providing an `ApolloServerPluginSubscriptionCallback` instance to your `ApolloServer` constructor:
 
@@ -58,7 +58,7 @@ The subscription plugin implementation inherently bypasses Apollo Server's reque
 </td>
 <td>
 
-Optionally configure the heartbeat interval in milliseconds. The default is 5 seconds, which is the interval that Apollo Router expects. Lengthening this interval may cause Apollo Router to invalidate existing subscriptions frequently and is not recommended. You may want to shorten this interval if you have latency issues between your GraphQL Server and Apollo Router.
+Optionally configure the heartbeat interval in milliseconds. The default is 5 seconds, which is the interval that GraphOS Router expects. Lengthening this interval may cause GraphOS Router to invalidate existing subscriptions frequently and is not recommended. You may want to shorten this interval if you have latency issues between your GraphQL Server and GraphOS Router.
 
 </td>
 </tr>
@@ -86,7 +86,7 @@ Optionally provide a [`Logger`](https://www.npmjs.com/package/@apollo/utils.logg
 </td>
 <td>
 
-This plugin uses the `async-retry` module to retry failed requests to Apollo Router. You can optionally provide an `Options` object to configure the retry behavior. The configuration options for `async-retry` can be found in the [README](https://www.npmjs.com/package/async-retry).
+This plugin uses the `async-retry` module to retry failed requests to GraphOS Router. You can optionally provide an `Options` object to configure the retry behavior. The configuration options for `async-retry` can be found in the [README](https://www.npmjs.com/package/async-retry).
 
 The default configuration provided by this plugin is:
 ```ts
diff --git a/docs/source/api/plugin/usage-reporting.mdx b/docs/source/api/plugin/usage-reporting.mdx
index 02afde9a6..d715f8690 100644
--- a/docs/source/api/plugin/usage-reporting.mdx
+++ b/docs/source/api/plugin/usage-reporting.mdx
@@ -8,7 +8,7 @@ api_reference: true
 
 Apollo Server's built-in usage reporting plugin gathers data on how your clients use the operations and fields in your GraphQL schema. The plugin also handles pushing this usage data to [GraphOS](/graphos/), as described in [Metrics and logging](../../monitoring/metrics/).
 
-This plugin is designed to be used in an Apollo Gateway or in a monolithic server; it is not designed to be used from a subgraph. In a supergraph running Apollo Federation, the Apollo Gateway or Apollo Router will send usage reports to Apollo's cloud. Subgraphs don't need to also send usage reports to Apollo's cloud; instead, they send it to the Router via [inline traces](./inline-trace/) and the Router combines execution information across all subgraphs and sends summarized reports to the cloud.
+This plugin is designed to be used in an Apollo Gateway or in a monolithic server; it is not designed to be used from a subgraph. In a supergraph running Apollo Federation, the Apollo Gateway or GraphOS Router will send usage reports to Apollo's cloud. Subgraphs don't need to also send usage reports to Apollo's cloud; instead, they send it to the Router via [inline traces](./inline-trace/) and the Router combines execution information across all subgraphs and sends summarized reports to the cloud.
 
 ## Default installation
 
diff --git a/docs/source/migration.mdx b/docs/source/migration.mdx
index bc801cb9b..3008fcac0 100644
--- a/docs/source/migration.mdx
+++ b/docs/source/migration.mdx
@@ -1808,7 +1808,7 @@ new ApolloServer({
 
 ### Usage reporting plugin is off by default on subgraphs
 
-In an Apollo Federation supergraph, your Apollo Gateway or Apollo Router sends [usage reports](./api/plugin/usage-reporting/) to Apollo's servers; information about what happens inside individual subgraph servers is sent from the subgraphs to the Gateway or Router via [inline traces](./api/plugin/inline-trace/). That is to say: the usage reporting plugin is *not* designed for use in federated subgraphs.
+In an Apollo Federation supergraph, your Apollo Gateway or GraphOS Router sends [usage reports](./api/plugin/usage-reporting/) to Apollo's servers; information about what happens inside individual subgraph servers is sent from the subgraphs to the Gateway or Router via [inline traces](./api/plugin/inline-trace/). That is to say: the usage reporting plugin is *not* designed for use in federated subgraphs.
 
 In Apollo Server 3, if you provide an Apollo API key and graph ref and do not explicitly install the `ApolloServerPluginUsageReporting` or `ApolloServerPluginUsageReportingDisabled` plugins, the `ApolloServerPluginUsageReporting` plugin will be installed with its default configuration, even if the server is a subgraph.
 
diff --git a/docs/source/schema/custom-scalars.mdx b/docs/source/schema/custom-scalars.mdx
index 85d228035..5c6ebeedd 100644
--- a/docs/source/schema/custom-scalars.mdx
+++ b/docs/source/schema/custom-scalars.mdx
@@ -174,7 +174,7 @@ const typeDefs = `#graphql
 `;
 
 // Validation function for checking "oddness"
-function oddValue(value: number) {
+function oddValue(value: unknown) {
   if (typeof value === 'number' && Number.isInteger(value) && value % 2 !== 0) {
     return value;
   }
diff --git a/docs/source/security/authentication.mdx b/docs/source/security/authentication.mdx
index 0f423650a..93db4777e 100644
--- a/docs/source/security/authentication.mdx
+++ b/docs/source/security/authentication.mdx
@@ -12,7 +12,7 @@ Your GraphQL API probably needs to control which users can see and interact with
 
 <Tip>
 
-Apollo Router can now provide authentication and authorization for your entire supergraph. While it may make sense to re-apply auth checks at a subgraph level or in a monolith graph, the Apollo Router has built and provided standard JWT checks that can be setup with a simple YAML configuration and enforce this in a central location for all subgraphs:
+GraphOS Router can now provide authentication and authorization for your entire supergraph. While it may make sense to re-apply auth checks at a subgraph level or in a monolith graph, the GraphOS Router has built and provided standard JWT checks that can be setup with a simple YAML configuration and enforce this in a central location for all subgraphs:
 
 https://www.apollographql.com/blog/centrally-enforce-policy-as-code-for-graphql-apis
 
diff --git a/docs/source/using-federation/api/apollo-gateway.mdx b/docs/source/using-federation/api/apollo-gateway.mdx
index da5d52c7d..0bfb39183 100644
--- a/docs/source/using-federation/api/apollo-gateway.mdx
+++ b/docs/source/using-federation/api/apollo-gateway.mdx
@@ -5,7 +5,7 @@ api_reference: true
 
 This API reference documents the exports from the `@apollo/gateway` package. This package enables you to use Apollo Server as a gateway for a federated supergraph. For more information, see [Implementing a gateway with Apollo Server](../apollo-gateway-setup).
 
-> We recommend that all supergraphs use the Apollo Router instead of this Node.js-based gateway. See [Choosing a router library](/federation/building-supergraphs/router/#choosing-a-router-library).
+> We recommend that all supergraphs use the GraphOS Router instead of this Node.js-based gateway. See [Choosing a router library](/federation/building-supergraphs/router/#choosing-a-router-library).
 
 ## `class ApolloGateway`
 
diff --git a/docs/source/using-federation/apollo-gateway-setup.mdx b/docs/source/using-federation/apollo-gateway-setup.mdx
index f2f111a02..eff917d02 100644
--- a/docs/source/using-federation/apollo-gateway-setup.mdx
+++ b/docs/source/using-federation/apollo-gateway-setup.mdx
@@ -9,9 +9,9 @@ After you set up at least one federation-ready [subgraph](/federation/building-s
 
 <FederationArchitecture />
 
-> 📣 In the majority of cases, **we recommend using [the Apollo Router](/federation/building-supergraphs/router) as your graph router.** It's faster to configure, it's more performant (especially with high request loads), and it rarely requires writing custom code.
+> 📣 In the majority of cases, **we recommend using [the GraphOS Router](/federation/building-supergraphs/router) as your graph router.** It's faster to configure, it's more performant (especially with high request loads), and it rarely requires writing custom code.
 
-In certain cases, you might need to use Apollo Server as your graph router if your subgraphs use a custom authentication method that is currently difficult to configure with the Apollo Router.
+In certain cases, you might need to use Apollo Server as your graph router if your subgraphs use a custom authentication method that is currently difficult to configure with the GraphOS Router.
 
 Regardless of which graph router library you start with, you can swap to the other without making any changes to other parts of your supergraph.
 
diff --git a/package-lock.json b/package-lock.json
index a28a9cb44..b919c71dc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,36 +10,35 @@
         "packages/*"
       ],
       "devDependencies": {
-        "@apollo/client": "3.8.9",
-        "@apollo/gateway": "2.6.3",
-        "@apollo/subgraph": "2.6.3",
+        "@apollo/client": "3.10.8",
+        "@apollo/gateway": "2.8.3",
+        "@apollo/subgraph": "2.8.3",
         "@apollo/utils.createhash": "2.0.1",
         "@changesets/changelog-github": "0.5.0",
-        "@changesets/cli": "2.27.1",
+        "@changesets/cli": "2.27.7",
         "@graphql-codegen/cli": "3.3.1",
         "@graphql-codegen/typescript-operations": "3.0.4",
         "@graphql-tools/mock": "8.7.20",
         "@graphql-tools/schema": "9.0.19",
-        "@josephg/resolvable": "1.0.1",
-        "@rollup/plugin-commonjs": "25.0.7",
+        "@rollup/plugin-commonjs": "25.0.8",
         "@types/async-retry": "1.4.8",
         "@types/compression": "1.7.5",
         "@types/cors": "2.8.17",
         "@types/express": "4.17.21",
-        "@types/express-serve-static-core": "4.17.41",
-        "@types/lodash": "4.14.202",
+        "@types/express-serve-static-core": "4.19.5",
+        "@types/lodash": "4.17.7",
         "@types/lodash.sumby": "4.6.9",
         "@types/lodash.xorby": "4.7.9",
         "@types/negotiator": "0.6.3",
         "@types/node": "14.18.63",
-        "@types/node-fetch": "2.6.10",
+        "@types/node-fetch": "2.6.11",
         "@types/qs-middleware": "1.0.4",
         "@types/retry": "0.12.5",
         "@types/superagent": "4.1.24",
         "@types/supertest": "2.0.16",
         "@types/test-listen": "1.1.2",
         "@types/type-is": "1.6.6",
-        "@types/uuid": "9.0.7",
+        "@types/uuid": "9.0.8",
         "@types/whatwg-mimetype": "3.0.2",
         "@typescript-eslint/eslint-plugin": "5.62.0",
         "@typescript-eslint/parser": "5.62.0",
@@ -49,10 +48,10 @@
         "compression": "1.7.4",
         "cors": "2.8.5",
         "cspell": "6.31.3",
-        "eslint": "8.56.0",
+        "eslint": "8.57.0",
         "eslint-plugin-import": "2.29.1",
         "express": "4.19.2",
-        "graphql": "16.8.1",
+        "graphql": "16.9.0",
         "graphql-subscriptions": "2.0.0",
         "graphql-tag": "2.12.6",
         "jest": "29.7.0",
@@ -62,16 +61,16 @@
         "jest-mock-random": "1.1.1",
         "jest-serializer-html": "7.1.0",
         "lodash.sumby": "4.6.0",
-        "nock": "13.4.0",
+        "nock": "13.5.4",
         "node-fetch": "2.7.0",
-        "prettier": "3.1.1",
+        "prettier": "3.3.3",
         "prettier-2": "npm:prettier@2.8.8",
         "qs-middleware": "1.0.3",
         "requisition": "1.7.0",
         "rollup": "3.29.4",
-        "supertest": "6.3.3",
+        "supertest": "6.3.4",
         "test-listen": "1.1.0",
-        "ts-jest": "29.1.1",
+        "ts-jest": "29.2.3",
         "typescript": "5.4.2"
       },
       "engines": {
@@ -103,17 +102,20 @@
       "link": true
     },
     "node_modules/@apollo/client": {
-      "version": "3.8.9",
-      "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.8.9.tgz",
-      "integrity": "sha512-IcQDFEEPc9+PEQsxhxQvsoQ04BRarOzi/Ila5PcniRSDeKJWgY22dnp6+V1i1fWXRDVd1ybdvze4sFESDVQUCQ==",
+      "version": "3.10.8",
+      "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.10.8.tgz",
+      "integrity": "sha512-UaaFEitRrPRWV836wY2L7bd3HRCfbMie1jlYMcmazFAK23MVhz/Uq7VG1nwbotPb5xzFsw5RF4Wnp2G3dWPM3g==",
+      "license": "MIT",
       "dependencies": {
         "@graphql-typed-document-node/core": "^3.1.1",
+        "@wry/caches": "^1.0.0",
         "@wry/equality": "^0.5.6",
         "@wry/trie": "^0.5.0",
         "graphql-tag": "^2.12.6",
         "hoist-non-react-statics": "^3.3.2",
         "optimism": "^0.18.0",
         "prop-types": "^15.7.2",
+        "rehackt": "^0.1.0",
         "response-iterator": "^0.2.6",
         "symbol-observable": "^4.0.0",
         "ts-invariant": "^0.10.3",
@@ -121,7 +123,7 @@
         "zen-observable-ts": "^1.2.5"
       },
       "peerDependencies": {
-        "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0",
+        "graphql": "^15.0.0 || ^16.0.0",
         "graphql-ws": "^5.5.5",
         "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
         "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
@@ -146,6 +148,7 @@
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz",
       "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==",
+      "license": "MIT",
       "dependencies": {
         "tslib": "^2.3.0"
       },
@@ -154,13 +157,14 @@
       }
     },
     "node_modules/@apollo/composition": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.6.3.tgz",
-      "integrity": "sha512-7Q6xITvZifAWXPzN1ZkqMss9mBZgCL1hdKmM117UhqOfYrZ331DdUaln4I07Ae7wjXEg0KUb7AElx/1x+gm6qg==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.8.3.tgz",
+      "integrity": "sha512-CpMraUfP9+LB6egE4HAVvShw/toxzb1KTYn175M7WE+lPnq3gclNh6bLUotPEOHQeW9EPttpC8tndMscfpil5A==",
       "dev": true,
+      "license": "Elastic-2.0",
       "dependencies": {
-        "@apollo/federation-internals": "2.6.3",
-        "@apollo/query-graphs": "2.6.3"
+        "@apollo/federation-internals": "2.8.3",
+        "@apollo/query-graphs": "2.8.3"
       },
       "engines": {
         "node": ">=14.15.0"
@@ -170,10 +174,11 @@
       }
     },
     "node_modules/@apollo/federation-internals": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.6.3.tgz",
-      "integrity": "sha512-Motm6p4C4t1lUXOq9kIVyP6jANSymiUgfwc0TYjeSehKRFq6qxv9L2gPSVFvyfm/gI+gLlDscDN63YtxpUzqhQ==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.8.3.tgz",
+      "integrity": "sha512-5GOeQ1I5C7uCU6ob/TbRGqWg2m+9qo8/8qlGhfaMUqN3ukSCmgkKUDdfg1M6sB3lDmIoL5tAoSkmJegKSaDR5A==",
       "dev": true,
+      "license": "Elastic-2.0",
       "dependencies": {
         "@types/uuid": "^9.0.0",
         "chalk": "^4.1.0",
@@ -196,19 +201,21 @@
         "https://github.com/sponsors/broofa",
         "https://github.com/sponsors/ctavan"
       ],
+      "license": "MIT",
       "bin": {
         "uuid": "dist/bin/uuid"
       }
     },
     "node_modules/@apollo/gateway": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.6.3.tgz",
-      "integrity": "sha512-/p1eyRPqWsoVH94/q3tqeLMk7q6CZ5pl7C8lLtANCx/2mYwmLlGcP4RNdKAFyd3K6zR7/VXNdfDIRWZ+AqCkEg==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.8.3.tgz",
+      "integrity": "sha512-pJ99vpF7flKqtwLyFgV0SJF09zlLqlW8YYm34I/1FrFh0Zqc5+Y3VV3Y5nAc9ddiodftGItnUbx4txuVM/KMjA==",
       "dev": true,
+      "license": "Elastic-2.0",
       "dependencies": {
-        "@apollo/composition": "2.6.3",
-        "@apollo/federation-internals": "2.6.3",
-        "@apollo/query-planner": "2.6.3",
+        "@apollo/composition": "2.8.3",
+        "@apollo/federation-internals": "2.8.3",
+        "@apollo/query-planner": "2.8.3",
         "@apollo/server-gateway-interface": "^1.1.0",
         "@apollo/usage-reporting-protobuf": "^4.1.0",
         "@apollo/utils.createhash": "^2.0.0",
@@ -257,12 +264,13 @@
       }
     },
     "node_modules/@apollo/query-graphs": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.6.3.tgz",
-      "integrity": "sha512-h+39kWnVq8GzhSyE2HGg4CKpzTDj1480EcLFuSk11QSN99uXjqwwciY5J83tlaSBONni0TvJ6Efctvp6ag0Xpw==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.8.3.tgz",
+      "integrity": "sha512-AB1Lr8LUr9iXGQIb70EhiSsu+G6AIW9EXkl+YGTCihn/zbsCcGx/UKr/HUsfAOyg2twenjToLcvqX5eRuM8Xag==",
       "dev": true,
+      "license": "Elastic-2.0",
       "dependencies": {
-        "@apollo/federation-internals": "2.6.3",
+        "@apollo/federation-internals": "2.8.3",
         "deep-equal": "^2.0.5",
         "ts-graphviz": "^1.5.4",
         "uuid": "^9.0.0"
@@ -283,18 +291,20 @@
         "https://github.com/sponsors/broofa",
         "https://github.com/sponsors/ctavan"
       ],
+      "license": "MIT",
       "bin": {
         "uuid": "dist/bin/uuid"
       }
     },
     "node_modules/@apollo/query-planner": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.6.3.tgz",
-      "integrity": "sha512-wH7VaIDPhbSs7/UrihvMHWBvfooIoH4WKpyBj50Syf7TOFWmrWWihB+Gf5pdR2Q14pKxM0QihIxGdXK3XABBag==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.8.3.tgz",
+      "integrity": "sha512-dwkschpjwoGziUjYfKwTVHAMuPoRt1Xr2suLEfHK0oSZ0AoDz3RQIBY6Dy8T61hPFB7p/3YvJja7q8jDDDP/og==",
       "dev": true,
+      "license": "Elastic-2.0",
       "dependencies": {
-        "@apollo/federation-internals": "2.6.3",
-        "@apollo/query-graphs": "2.6.3",
+        "@apollo/federation-internals": "2.8.3",
+        "@apollo/query-graphs": "2.8.3",
         "@apollo/utils.keyvaluecache": "^2.1.0",
         "chalk": "^4.1.0",
         "deep-equal": "^2.0.5",
@@ -324,13 +334,14 @@
       "link": true
     },
     "node_modules/@apollo/subgraph": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/subgraph/-/subgraph-2.6.3.tgz",
-      "integrity": "sha512-k4uDJ5QBzisWatxQ/4NJ7d56OJwgPMd0kL1lEXsVJYrfxZhlNd2YSnQrBjp4cmnTK4Z3mDFFoF2viXll7eR2WQ==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/subgraph/-/subgraph-2.8.3.tgz",
+      "integrity": "sha512-n00rjSstDEdD58Ug+9wCzOffrFcx6SAszKkYF/X1ugzBUruKNun+7S7wgd8m3KXImZwwQ5WTLiISBtTC8PRYsg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@apollo/cache-control-types": "^1.0.2",
-        "@apollo/federation-internals": "2.6.3"
+        "@apollo/federation-internals": "2.8.3"
       },
       "engines": {
         "node": ">=14.15.0"
@@ -1649,15 +1660,17 @@
       "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
     },
     "node_modules/@changesets/apply-release-plan": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.0.tgz",
-      "integrity": "sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==",
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.4.tgz",
+      "integrity": "sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.20.1",
-        "@changesets/config": "^3.0.0",
+        "@changesets/config": "^3.0.2",
         "@changesets/get-version-range-type": "^0.4.0",
         "@changesets/git": "^3.0.0",
+        "@changesets/should-skip-package": "^0.1.0",
         "@changesets/types": "^6.0.0",
         "@manypkg/get-packages": "^1.1.3",
         "detect-indent": "^6.0.0",
@@ -1685,14 +1698,16 @@
       }
     },
     "node_modules/@changesets/assemble-release-plan": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.0.tgz",
-      "integrity": "sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==",
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.3.tgz",
+      "integrity": "sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.20.1",
         "@changesets/errors": "^0.2.0",
-        "@changesets/get-dependents-graph": "^2.0.0",
+        "@changesets/get-dependents-graph": "^2.1.1",
+        "@changesets/should-skip-package": "^0.1.0",
         "@changesets/types": "^6.0.0",
         "@manypkg/get-packages": "^1.1.3",
         "semver": "^7.5.3"
@@ -1728,25 +1743,27 @@
       }
     },
     "node_modules/@changesets/cli": {
-      "version": "2.27.1",
-      "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.1.tgz",
-      "integrity": "sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==",
+      "version": "2.27.7",
+      "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.7.tgz",
+      "integrity": "sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.20.1",
-        "@changesets/apply-release-plan": "^7.0.0",
-        "@changesets/assemble-release-plan": "^6.0.0",
+        "@changesets/apply-release-plan": "^7.0.4",
+        "@changesets/assemble-release-plan": "^6.0.3",
         "@changesets/changelog-git": "^0.2.0",
-        "@changesets/config": "^3.0.0",
+        "@changesets/config": "^3.0.2",
         "@changesets/errors": "^0.2.0",
-        "@changesets/get-dependents-graph": "^2.0.0",
-        "@changesets/get-release-plan": "^4.0.0",
+        "@changesets/get-dependents-graph": "^2.1.1",
+        "@changesets/get-release-plan": "^4.0.3",
         "@changesets/git": "^3.0.0",
         "@changesets/logger": "^0.1.0",
         "@changesets/pre": "^2.0.0",
         "@changesets/read": "^0.6.0",
+        "@changesets/should-skip-package": "^0.1.0",
         "@changesets/types": "^6.0.0",
-        "@changesets/write": "^0.3.0",
+        "@changesets/write": "^0.3.1",
         "@manypkg/get-packages": "^1.1.3",
         "@types/semver": "^7.5.0",
         "ansi-colors": "^4.1.3",
@@ -1756,15 +1773,14 @@
         "external-editor": "^3.1.0",
         "fs-extra": "^7.0.1",
         "human-id": "^1.0.2",
-        "meow": "^6.0.0",
+        "mri": "^1.2.0",
         "outdent": "^0.5.0",
         "p-limit": "^2.2.0",
         "preferred-pm": "^3.0.0",
         "resolve-from": "^5.0.0",
         "semver": "^7.5.3",
         "spawndamnit": "^2.0.0",
-        "term-size": "^2.1.0",
-        "tty-table": "^4.1.5"
+        "term-size": "^2.1.0"
       },
       "bin": {
         "changeset": "bin.js"
@@ -1775,6 +1791,7 @@
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "color-convert": "^1.9.0"
       },
@@ -1787,6 +1804,7 @@
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^3.2.1",
         "escape-string-regexp": "^1.0.5",
@@ -1801,6 +1819,7 @@
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "color-name": "1.1.3"
       }
@@ -1809,13 +1828,15 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
       "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@changesets/cli/node_modules/has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
       "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=4"
       }
@@ -1825,6 +1846,7 @@
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
       "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "p-try": "^2.0.0"
       },
@@ -1840,6 +1862,7 @@
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "has-flag": "^3.0.0"
       },
@@ -1848,13 +1871,14 @@
       }
     },
     "node_modules/@changesets/config": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.0.tgz",
-      "integrity": "sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.2.tgz",
+      "integrity": "sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@changesets/errors": "^0.2.0",
-        "@changesets/get-dependents-graph": "^2.0.0",
+        "@changesets/get-dependents-graph": "^2.1.1",
         "@changesets/logger": "^0.1.0",
         "@changesets/types": "^6.0.0",
         "@manypkg/get-packages": "^1.1.3",
@@ -1872,10 +1896,11 @@
       }
     },
     "node_modules/@changesets/get-dependents-graph": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.0.0.tgz",
-      "integrity": "sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.1.tgz",
+      "integrity": "sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@changesets/types": "^6.0.0",
         "@manypkg/get-packages": "^1.1.3",
@@ -1889,6 +1914,7 @@
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "color-convert": "^1.9.0"
       },
@@ -1901,6 +1927,7 @@
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "ansi-styles": "^3.2.1",
         "escape-string-regexp": "^1.0.5",
@@ -1915,6 +1942,7 @@
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "color-name": "1.1.3"
       }
@@ -1923,13 +1951,15 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
       "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@changesets/get-dependents-graph/node_modules/has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
       "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=4"
       }
@@ -1939,6 +1969,7 @@
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "has-flag": "^3.0.0"
       },
@@ -1962,14 +1993,15 @@
       "license": "BSD-3-Clause"
     },
     "node_modules/@changesets/get-release-plan": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.0.tgz",
-      "integrity": "sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.3.tgz",
+      "integrity": "sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.20.1",
-        "@changesets/assemble-release-plan": "^6.0.0",
-        "@changesets/config": "^3.0.0",
+        "@changesets/assemble-release-plan": "^6.0.3",
+        "@changesets/config": "^3.0.2",
         "@changesets/pre": "^2.0.0",
         "@changesets/read": "^0.6.0",
         "@changesets/types": "^6.0.0",
@@ -2191,6 +2223,18 @@
         "node": ">=4"
       }
     },
+    "node_modules/@changesets/should-skip-package": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.0.tgz",
+      "integrity": "sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/runtime": "^7.20.1",
+        "@changesets/types": "^6.0.0",
+        "@manypkg/get-packages": "^1.1.3"
+      }
+    },
     "node_modules/@changesets/types": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.0.0.tgz",
@@ -2198,10 +2242,11 @@
       "dev": true
     },
     "node_modules/@changesets/write": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.0.tgz",
-      "integrity": "sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==",
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.1.tgz",
+      "integrity": "sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.20.1",
         "@changesets/types": "^6.0.0",
@@ -2746,10 +2791,11 @@
       }
     },
     "node_modules/@eslint/js": {
-      "version": "8.56.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
-      "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+      "version": "8.57.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+      "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       }
@@ -3727,13 +3773,15 @@
       }
     },
     "node_modules/@humanwhocodes/config-array": {
-      "version": "0.11.13",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
-      "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
+      "version": "0.11.14",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+      "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+      "deprecated": "Use @eslint/config-array instead",
       "dev": true,
+      "license": "Apache-2.0",
       "dependencies": {
-        "@humanwhocodes/object-schema": "^2.0.1",
-        "debug": "^4.1.1",
+        "@humanwhocodes/object-schema": "^2.0.2",
+        "debug": "^4.3.1",
         "minimatch": "^3.0.5"
       },
       "engines": {
@@ -3765,10 +3813,12 @@
       }
     },
     "node_modules/@humanwhocodes/object-schema": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
-      "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
-      "dev": true
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+      "deprecated": "Use @eslint/object-schema instead",
+      "dev": true,
+      "license": "BSD-3-Clause"
     },
     "node_modules/@iarna/toml": {
       "version": "2.2.5",
@@ -4114,6 +4164,7 @@
     },
     "node_modules/@josephg/resolvable": {
       "version": "1.0.1",
+      "dev": true,
       "license": "ISC"
     },
     "node_modules/@jridgewell/gen-mapping": {
@@ -4388,10 +4439,11 @@
       "dev": true
     },
     "node_modules/@rollup/plugin-commonjs": {
-      "version": "25.0.7",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz",
-      "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==",
+      "version": "25.0.8",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz",
+      "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@rollup/pluginutils": "^5.0.1",
         "commondir": "^1.0.1",
@@ -4417,6 +4469,7 @@
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
       "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "balanced-match": "^1.0.0"
       }
@@ -4425,7 +4478,9 @@
       "version": "8.1.0",
       "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
       "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -4445,6 +4500,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
       "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^2.0.1"
       },
@@ -4635,9 +4691,10 @@
       }
     },
     "node_modules/@types/express-serve-static-core": {
-      "version": "4.17.41",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz",
-      "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==",
+      "version": "4.19.5",
+      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
+      "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
+      "license": "MIT",
       "dependencies": {
         "@types/node": "*",
         "@types/qs": "*",
@@ -4704,10 +4761,11 @@
       }
     },
     "node_modules/@types/lodash": {
-      "version": "4.14.202",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz",
-      "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==",
-      "dev": true
+      "version": "4.17.7",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz",
+      "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/lodash.sumby": {
       "version": "4.6.9",
@@ -4735,11 +4793,6 @@
       "version": "1.3.2",
       "license": "MIT"
     },
-    "node_modules/@types/minimist": {
-      "version": "1.2.2",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/@types/negotiator": {
       "version": "0.6.3",
       "resolved": "https://registry.npmjs.org/@types/negotiator/-/negotiator-0.6.3.tgz",
@@ -4752,9 +4805,10 @@
       "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ=="
     },
     "node_modules/@types/node-fetch": {
-      "version": "2.6.10",
-      "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.10.tgz",
-      "integrity": "sha512-PPpPK6F9ALFTn59Ka3BaL+qGuipRfxNE8qVgkp0bVixeiR2c2/L+IVOiBdu9JhhT22sWnQEp6YyHGI2b2+CMcA==",
+      "version": "2.6.11",
+      "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz",
+      "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
+      "license": "MIT",
       "dependencies": {
         "@types/node": "*",
         "form-data": "^4.0.0"
@@ -4764,6 +4818,7 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
       "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "license": "MIT",
       "dependencies": {
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.8",
@@ -4773,11 +4828,6 @@
         "node": ">= 6"
       }
     },
-    "node_modules/@types/normalize-package-data": {
-      "version": "2.4.1",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/@types/parse-json": {
       "version": "4.0.0",
       "dev": true,
@@ -4873,10 +4923,11 @@
       }
     },
     "node_modules/@types/uuid": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz",
-      "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==",
-      "dev": true
+      "version": "9.0.8",
+      "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
+      "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
+      "dev": true,
+      "license": "MIT"
     },
     "node_modules/@types/whatwg-mimetype": {
       "version": "3.0.2",
@@ -5514,14 +5565,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/arrify": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/asap": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -5550,6 +5593,13 @@
         "node": ">=8"
       }
     },
+    "node_modules/async": {
+      "version": "3.2.5",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+      "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/async-retry": {
       "version": "1.3.3",
       "license": "MIT",
@@ -5820,14 +5870,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/breakword": {
-      "version": "1.0.5",
-      "dev": true,
-      "license": "gpl-2.0",
-      "dependencies": {
-        "wcwidth": "^1.0.1"
-      }
-    },
     "node_modules/browserslist": {
       "version": "4.21.4",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
@@ -6015,13 +6057,19 @@
       }
     },
     "node_modules/call-bind": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
-      "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+      "license": "MIT",
       "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
         "function-bind": "^1.1.2",
-        "get-intrinsic": "^1.2.1",
-        "set-function-length": "^1.1.1"
+        "get-intrinsic": "^1.2.4",
+        "set-function-length": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
       },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -6051,22 +6099,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/camelcase-keys": {
-      "version": "6.2.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "camelcase": "^5.3.1",
-        "map-obj": "^4.0.0",
-        "quick-lru": "^4.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/caniuse-lite": {
       "version": "1.0.30001418",
       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz",
@@ -6901,35 +6933,6 @@
         "node": ">=14"
       }
     },
-    "node_modules/csv": {
-      "version": "5.5.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "csv-generate": "^3.4.3",
-        "csv-parse": "^4.16.3",
-        "csv-stringify": "^5.6.5",
-        "stream-transform": "^2.1.3"
-      },
-      "engines": {
-        "node": ">= 0.1.90"
-      }
-    },
-    "node_modules/csv-generate": {
-      "version": "3.4.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/csv-parse": {
-      "version": "4.16.3",
-      "dev": true,
-      "license": "MIT"
-    },
-    "node_modules/csv-stringify": {
-      "version": "5.6.5",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/dataloader": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz",
@@ -6964,26 +6967,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/decamelize-keys": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "decamelize": "^1.1.0",
-        "map-obj": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/decamelize-keys/node_modules/map-obj": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/dedent": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.3.0.tgz",
@@ -7002,6 +6985,7 @@
       "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
       "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "array-buffer-byte-length": "^1.0.0",
         "call-bind": "^1.0.5",
@@ -7051,24 +7035,30 @@
       }
     },
     "node_modules/define-data-property": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
-      "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+      "license": "MIT",
       "dependencies": {
-        "get-intrinsic": "^1.2.1",
-        "gopd": "^1.0.1",
-        "has-property-descriptors": "^1.0.0"
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.0.1"
       },
       "engines": {
         "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
     "node_modules/define-properties": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
-      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
+        "define-data-property": "^1.0.1",
         "has-property-descriptors": "^1.0.0",
         "object-keys": "^1.1.1"
       },
@@ -7292,6 +7282,22 @@
       "version": "1.1.1",
       "license": "MIT"
     },
+    "node_modules/ejs": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+      "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "jake": "^10.8.5"
+      },
+      "bin": {
+        "ejs": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/electron-to-chromium": {
       "version": "1.4.278",
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.278.tgz",
@@ -7423,11 +7429,33 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/es-define-property": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-errors": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/es-get-iterator": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
       "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.2",
         "get-intrinsic": "^1.1.3",
@@ -7501,16 +7529,17 @@
       }
     },
     "node_modules/eslint": {
-      "version": "8.56.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
-      "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+      "version": "8.57.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+      "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.6.1",
         "@eslint/eslintrc": "^2.1.4",
-        "@eslint/js": "8.56.0",
-        "@humanwhocodes/config-array": "^0.11.13",
+        "@eslint/js": "8.57.0",
+        "@humanwhocodes/config-array": "^0.11.14",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@nodelib/fs.walk": "^1.2.8",
         "@ungap/structured-clone": "^1.2.0",
@@ -7702,6 +7731,7 @@
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=10"
       },
@@ -7714,6 +7744,7 @@
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
       "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
         "esrecurse": "^4.3.0",
         "estraverse": "^5.2.0"
@@ -7730,6 +7761,7 @@
       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
       "dev": true,
+      "license": "BSD-2-Clause",
       "engines": {
         "node": ">=4.0"
       }
@@ -7739,6 +7771,7 @@
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
       "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "locate-path": "^6.0.0",
         "path-exists": "^4.0.0"
@@ -7755,6 +7788,7 @@
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
       "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "is-glob": "^4.0.3"
       },
@@ -7767,6 +7801,7 @@
       "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
       "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "type-fest": "^0.20.2"
       },
@@ -7782,6 +7817,7 @@
       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
       "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "p-locate": "^5.0.0"
       },
@@ -7797,6 +7833,7 @@
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -7809,6 +7846,7 @@
       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
       "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "p-limit": "^3.0.2"
       },
@@ -7824,6 +7862,7 @@
       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
       "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
       "dev": true,
+      "license": "(MIT OR CC0-1.0)",
       "engines": {
         "node": ">=10"
       },
@@ -8212,6 +8251,39 @@
         "node": "^10.12.0 || >=12.0.0"
       }
     },
+    "node_modules/filelist": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+      "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "minimatch": "^5.0.1"
+      }
+    },
+    "node_modules/filelist/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/filelist/node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/fill-range": {
       "version": "7.0.1",
       "license": "MIT",
@@ -8496,15 +8568,20 @@
       }
     },
     "node_modules/get-intrinsic": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
-      "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+      "license": "MIT",
       "dependencies": {
+        "es-errors": "^1.3.0",
         "function-bind": "^1.1.2",
         "has-proto": "^1.0.1",
         "has-symbols": "^1.0.3",
         "hasown": "^2.0.0"
       },
+      "engines": {
+        "node": ">= 0.4"
+      },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
@@ -8663,11 +8740,6 @@
       "version": "4.2.10",
       "license": "ISC"
     },
-    "node_modules/grapheme-splitter": {
-      "version": "1.0.4",
-      "dev": true,
-      "license": "MIT"
-    },
     "node_modules/graphemer": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
@@ -8675,9 +8747,10 @@
       "dev": true
     },
     "node_modules/graphql": {
-      "version": "16.8.1",
-      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz",
-      "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==",
+      "version": "16.9.0",
+      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz",
+      "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==",
+      "license": "MIT",
       "engines": {
         "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
       }
@@ -8812,14 +8885,6 @@
         "graphql": ">=0.11 <=16"
       }
     },
-    "node_modules/hard-rejection": {
-      "version": "2.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/has": {
       "version": "1.0.3",
       "dev": true,
@@ -8857,10 +8922,12 @@
       }
     },
     "node_modules/has-property-descriptors": {
-      "version": "1.0.0",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
       "license": "MIT",
       "dependencies": {
-        "get-intrinsic": "^1.1.1"
+        "es-define-property": "^1.0.0"
       },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -8937,11 +9004,6 @@
         "react-is": "^16.7.0"
       }
     },
-    "node_modules/hosted-git-info": {
-      "version": "2.8.9",
-      "dev": true,
-      "license": "ISC"
-    },
     "node_modules/html-escaper": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -9277,6 +9339,7 @@
       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
       "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "call-bind": "^1.0.2",
         "has-tostringtag": "^1.0.0"
@@ -9430,12 +9493,16 @@
       }
     },
     "node_modules/is-map": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
-      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+      "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
       "dev": true,
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
     "node_modules/is-negative-zero": {
@@ -9490,14 +9557,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/is-plain-obj": {
-      "version": "1.1.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/is-reference": {
       "version": "1.2.1",
       "dev": true,
@@ -9535,10 +9594,14 @@
       }
     },
     "node_modules/is-set": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
-      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+      "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
       "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
@@ -9665,10 +9728,14 @@
       }
     },
     "node_modules/is-weakmap": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
-      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+      "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
       "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
@@ -9686,13 +9753,17 @@
       }
     },
     "node_modules/is-weakset": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
-      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+      "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
+        "call-bind": "^1.0.7",
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
       },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -9822,6 +9893,38 @@
       "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==",
       "dev": true
     },
+    "node_modules/jake": {
+      "version": "10.9.2",
+      "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
+      "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "async": "^3.2.3",
+        "chalk": "^4.0.2",
+        "filelist": "^1.0.4",
+        "minimatch": "^3.1.2"
+      },
+      "bin": {
+        "jake": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/jake/node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/jest": {
       "version": "29.7.0",
       "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
@@ -10526,14 +10629,6 @@
         "safe-buffer": "^5.0.1"
       }
     },
-    "node_modules/kind-of": {
-      "version": "6.0.3",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/kleur": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
@@ -10946,17 +11041,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/map-obj": {
-      "version": "4.3.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/media-typer": {
       "version": "0.3.0",
       "license": "MIT",
@@ -10969,53 +11053,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/meow": {
-      "version": "6.1.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/minimist": "^1.2.0",
-        "camelcase-keys": "^6.2.2",
-        "decamelize-keys": "^1.1.0",
-        "hard-rejection": "^2.1.0",
-        "minimist-options": "^4.0.2",
-        "normalize-package-data": "^2.5.0",
-        "read-pkg-up": "^7.0.1",
-        "redent": "^3.0.0",
-        "trim-newlines": "^3.0.0",
-        "type-fest": "^0.13.1",
-        "yargs-parser": "^18.1.3"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/meow/node_modules/type-fest": {
-      "version": "0.13.1",
-      "dev": true,
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/meow/node_modules/yargs-parser": {
-      "version": "18.1.3",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/merge-descriptors": {
       "version": "1.0.1",
       "license": "MIT"
@@ -11102,14 +11139,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/min-indent": {
-      "version": "1.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/minimatch": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.3.tgz",
@@ -11127,19 +11156,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/minimist-options": {
-      "version": "4.1.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "arrify": "^1.0.1",
-        "is-plain-obj": "^1.1.0",
-        "kind-of": "^6.0.3"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/minipass": {
       "version": "4.2.4",
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz",
@@ -11287,14 +11303,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/mixme": {
-      "version": "0.5.4",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8.0.0"
-      }
-    },
     "node_modules/mkdirp": {
       "version": "1.0.4",
       "dev": true,
@@ -11326,6 +11334,16 @@
         "mkdirp": "bin/cmd.js"
       }
     },
+    "node_modules/mri": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+      "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/ms": {
       "version": "2.1.2",
       "license": "MIT"
@@ -11373,10 +11391,11 @@
       }
     },
     "node_modules/nock": {
-      "version": "13.4.0",
-      "resolved": "https://registry.npmjs.org/nock/-/nock-13.4.0.tgz",
-      "integrity": "sha512-W8NVHjO/LCTNA64yxAPHV/K47LpGYcVzgKd3Q0n6owhwvD0Dgoterc25R4rnZbckJEb6Loxz1f5QMuJpJnbSyQ==",
+      "version": "13.5.4",
+      "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.4.tgz",
+      "integrity": "sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "debug": "^4.1.0",
         "json-stringify-safe": "^5.0.1",
@@ -11455,25 +11474,6 @@
       "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
       "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
     },
-    "node_modules/normalize-package-data": {
-      "version": "2.5.0",
-      "dev": true,
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      }
-    },
-    "node_modules/normalize-package-data/node_modules/semver": {
-      "version": "5.7.1",
-      "dev": true,
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
     "node_modules/normalize-path": {
       "version": "3.0.0",
       "license": "MIT",
@@ -11514,13 +11514,14 @@
       }
     },
     "node_modules/object-is": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+      "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1"
       },
       "engines": {
         "node": ">= 0.4"
@@ -12020,10 +12021,11 @@
       }
     },
     "node_modules/prettier": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz",
-      "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==",
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+      "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
       "dev": true,
+      "license": "MIT",
       "bin": {
         "prettier": "bin/prettier.cjs"
       },
@@ -12255,14 +12257,6 @@
       ],
       "license": "MIT"
     },
-    "node_modules/quick-lru": {
-      "version": "4.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/range-parser": {
       "version": "1.2.1",
       "license": "MIT",
@@ -12288,52 +12282,6 @@
       "version": "16.13.1",
       "license": "MIT"
     },
-    "node_modules/read-pkg": {
-      "version": "5.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "@types/normalize-package-data": "^2.4.0",
-        "normalize-package-data": "^2.5.0",
-        "parse-json": "^5.0.0",
-        "type-fest": "^0.6.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/read-pkg-up": {
-      "version": "7.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "find-up": "^4.1.0",
-        "read-pkg": "^5.2.0",
-        "type-fest": "^0.8.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/read-pkg-up/node_modules/type-fest": {
-      "version": "0.8.1",
-      "dev": true,
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/read-pkg/node_modules/type-fest": {
-      "version": "0.6.0",
-      "dev": true,
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/read-yaml-file": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz",
@@ -12393,26 +12341,6 @@
         "node": ">= 6"
       }
     },
-    "node_modules/redent": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "indent-string": "^4.0.0",
-        "strip-indent": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/redent/node_modules/indent-string": {
-      "version": "4.0.0",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/regenerator-runtime": {
       "version": "0.13.11",
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
@@ -12436,6 +12364,24 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/rehackt": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz",
+      "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "*",
+        "react": "*"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "react": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/relay-runtime": {
       "version": "12.0.0",
       "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz",
@@ -12837,14 +12783,17 @@
       "license": "ISC"
     },
     "node_modules/set-function-length": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
-      "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+      "license": "MIT",
       "dependencies": {
-        "define-data-property": "^1.1.1",
-        "get-intrinsic": "^1.2.1",
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
         "gopd": "^1.0.1",
-        "has-property-descriptors": "^1.0.0"
+        "has-property-descriptors": "^1.0.2"
       },
       "engines": {
         "node": ">= 0.4"
@@ -12937,99 +12886,19 @@
     },
     "node_modules/slash": {
       "version": "3.0.0",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/smart-buffer": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
-      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6.0.0",
-        "npm": ">= 3.0.0"
-      }
-    },
-    "node_modules/smartwrap": {
-      "version": "2.0.2",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "array.prototype.flat": "^1.2.3",
-        "breakword": "^1.0.5",
-        "grapheme-splitter": "^1.0.4",
-        "strip-ansi": "^6.0.0",
-        "wcwidth": "^1.0.1",
-        "yargs": "^15.1.0"
-      },
-      "bin": {
-        "smartwrap": "src/terminal-adapter.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/smartwrap/node_modules/cliui": {
-      "version": "6.0.0",
-      "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^6.2.0"
-      }
-    },
-    "node_modules/smartwrap/node_modules/wrap-ansi": {
-      "version": "6.2.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/smartwrap/node_modules/y18n": {
-      "version": "4.0.3",
-      "dev": true,
-      "license": "ISC"
-    },
-    "node_modules/smartwrap/node_modules/yargs": {
-      "version": "15.4.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "cliui": "^6.0.0",
-        "decamelize": "^1.2.0",
-        "find-up": "^4.1.0",
-        "get-caller-file": "^2.0.1",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^2.0.0",
-        "set-blocking": "^2.0.0",
-        "string-width": "^4.2.0",
-        "which-module": "^2.0.0",
-        "y18n": "^4.0.0",
-        "yargs-parser": "^18.1.2"
-      },
+      "license": "MIT",
       "engines": {
         "node": ">=8"
       }
     },
-    "node_modules/smartwrap/node_modules/yargs-parser": {
-      "version": "18.1.3",
+    "node_modules/smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
       "dev": true,
-      "license": "ISC",
-      "dependencies": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      },
       "engines": {
-        "node": ">=6"
+        "node": ">= 6.0.0",
+        "npm": ">= 3.0.0"
       }
     },
     "node_modules/snake-case": {
@@ -13157,34 +13026,6 @@
       "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
       "dev": true
     },
-    "node_modules/spdx-correct": {
-      "version": "3.1.1",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "node_modules/spdx-exceptions": {
-      "version": "2.3.0",
-      "dev": true,
-      "license": "CC-BY-3.0"
-    },
-    "node_modules/spdx-expression-parse": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "node_modules/spdx-license-ids": {
-      "version": "3.0.11",
-      "dev": true,
-      "license": "CC0-1.0"
-    },
     "node_modules/sponge-case": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz",
@@ -13242,6 +13083,7 @@
       "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
       "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "internal-slot": "^1.0.4"
       },
@@ -13265,14 +13107,6 @@
         "any-promise": "^1.1.0"
       }
     },
-    "node_modules/stream-transform": {
-      "version": "2.1.3",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "mixme": "^0.5.1"
-      }
-    },
     "node_modules/streamsearch": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
@@ -13390,17 +13224,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/strip-indent": {
-      "version": "3.0.0",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "min-indent": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/strip-json-comments": {
       "version": "3.1.1",
       "license": "MIT",
@@ -13417,9 +13240,11 @@
       "license": "MIT"
     },
     "node_modules/superagent": {
-      "version": "8.0.7",
-      "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.7.tgz",
-      "integrity": "sha512-lffxSyqkswW7kzDFkLNyX1GMIfR5TyCKBF4Vdvzn/6d0Q1s+YX1EbbwhyEGx2xzThnwDFmfsIVymZZ2Tk4Nubw==",
+      "version": "8.1.2",
+      "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
+      "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
+      "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net",
+      "license": "MIT",
       "dependencies": {
         "component-emitter": "^1.3.0",
         "cookiejar": "^2.1.4",
@@ -13461,12 +13286,13 @@
       }
     },
     "node_modules/supertest": {
-      "version": "6.3.3",
-      "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz",
-      "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==",
+      "version": "6.3.4",
+      "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz",
+      "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==",
+      "license": "MIT",
       "dependencies": {
         "methods": "^1.1.2",
-        "superagent": "^8.0.5"
+        "superagent": "^8.1.2"
       },
       "engines": {
         "node": ">=6.4.0"
@@ -13711,19 +13537,12 @@
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
       "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
     },
-    "node_modules/trim-newlines": {
-      "version": "3.0.1",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/ts-graphviz": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-1.8.1.tgz",
-      "integrity": "sha512-54/fe5iu0Jb6X0pmDmzsA2UHLfyHjUEUwfHtZcEOR0fZ6Myf+dFoO6eNsyL8CBDMJ9u7WWEewduVaiaXlvjSVw==",
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-1.8.2.tgz",
+      "integrity": "sha512-5YhbFoHmjxa7pgQLkB07MtGnGJ/yhvjmc9uhsnDBEICME6gkPf83SBwLDQqGDoCa3XzUMWLk1AU2Wn1u1naDtA==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=14.16"
       },
@@ -13743,12 +13562,14 @@
       }
     },
     "node_modules/ts-jest": {
-      "version": "29.1.1",
-      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
-      "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
+      "version": "29.2.3",
+      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.3.tgz",
+      "integrity": "sha512-yCcfVdiBFngVz9/keHin9EnsrQtQtEu3nRykNy9RVp+FiPFFbPJ3Sg6Qg4+TkmH0vMP5qsTKgXSsk80HRwvdgQ==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "bs-logger": "0.x",
+        "ejs": "^3.1.10",
         "fast-json-stable-stringify": "2.x",
         "jest-util": "^29.0.0",
         "json5": "^2.2.3",
@@ -13761,10 +13582,11 @@
         "ts-jest": "cli.js"
       },
       "engines": {
-        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+        "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0"
       },
       "peerDependencies": {
         "@babel/core": ">=7.0.0-beta.0 <8",
+        "@jest/transform": "^29.0.0",
         "@jest/types": "^29.0.0",
         "babel-jest": "^29.0.0",
         "jest": "^29.0.0",
@@ -13774,6 +13596,9 @@
         "@babel/core": {
           "optional": true
         },
+        "@jest/transform": {
+          "optional": true
+        },
         "@jest/types": {
           "optional": true
         },
@@ -13889,34 +13714,6 @@
       "dev": true,
       "license": "0BSD"
     },
-    "node_modules/tty-table": {
-      "version": "4.1.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "chalk": "^4.1.2",
-        "csv": "^5.5.0",
-        "kleur": "^4.1.4",
-        "smartwrap": "^2.0.2",
-        "strip-ansi": "^6.0.0",
-        "wcwidth": "^1.0.1",
-        "yargs": "^17.1.1"
-      },
-      "bin": {
-        "tty-table": "adapters/terminal-adapter.js"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/tty-table/node_modules/kleur": {
-      "version": "4.1.5",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/type-check": {
       "version": "0.4.0",
       "dev": true,
@@ -14281,15 +14078,6 @@
         "node": ">=10.12.0"
       }
     },
-    "node_modules/validate-npm-package-license": {
-      "version": "3.0.4",
-      "dev": true,
-      "license": "Apache-2.0",
-      "dependencies": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
     "node_modules/value-or-promise": {
       "version": "1.0.11",
       "dev": true,
@@ -14412,15 +14200,19 @@
       }
     },
     "node_modules/which-collection": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
-      "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+      "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
-        "is-map": "^2.0.1",
-        "is-set": "^2.0.1",
-        "is-weakmap": "^2.0.1",
-        "is-weakset": "^2.0.1"
+        "is-map": "^2.0.3",
+        "is-set": "^2.0.3",
+        "is-weakmap": "^2.0.2",
+        "is-weakset": "^2.0.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
       },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -14647,7 +14439,6 @@
         "@apollo/usage-reporting-protobuf": "^4.1.1",
         "@apollo/utils.createhash": "^2.0.0",
         "@apollo/utils.keyvaluecache": "^2.1.0",
-        "@josephg/resolvable": "^1.0.1",
         "express": "^4.18.1",
         "graphql-http": "1.22.0",
         "graphql-tag": "^2.12.6",
@@ -14665,50 +14456,6 @@
         "jest": "28.x || 29.x"
       }
     },
-    "packages/integration-testsuite/node_modules/form-data": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.8",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "packages/integration-testsuite/node_modules/mime": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
-      "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "packages/integration-testsuite/node_modules/superagent": {
-      "version": "8.0.9",
-      "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz",
-      "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==",
-      "dependencies": {
-        "component-emitter": "^1.3.0",
-        "cookiejar": "^2.1.4",
-        "debug": "^4.3.4",
-        "fast-safe-stringify": "^2.1.1",
-        "form-data": "^4.0.0",
-        "formidable": "^2.1.2",
-        "methods": "^1.1.2",
-        "mime": "2.6.0",
-        "qs": "^6.11.0",
-        "semver": "^7.3.8"
-      },
-      "engines": {
-        "node": ">=6.4.0 <13 || >=14"
-      }
-    },
     "packages/plugin-response-cache": {
       "name": "@apollo/server-plugin-response-cache",
       "version": "4.1.3",
@@ -14741,7 +14488,6 @@
         "@apollo/utils.usagereporting": "^2.1.0",
         "@apollo/utils.withrequired": "^2.0.0",
         "@graphql-tools/schema": "^9.0.0",
-        "@josephg/resolvable": "^1.0.0",
         "@types/express": "^4.17.13",
         "@types/express-serve-static-core": "^4.17.30",
         "@types/node-fetch": "^2.6.1",
@@ -14824,17 +14570,19 @@
       "requires": {}
     },
     "@apollo/client": {
-      "version": "3.8.9",
-      "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.8.9.tgz",
-      "integrity": "sha512-IcQDFEEPc9+PEQsxhxQvsoQ04BRarOzi/Ila5PcniRSDeKJWgY22dnp6+V1i1fWXRDVd1ybdvze4sFESDVQUCQ==",
+      "version": "3.10.8",
+      "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.10.8.tgz",
+      "integrity": "sha512-UaaFEitRrPRWV836wY2L7bd3HRCfbMie1jlYMcmazFAK23MVhz/Uq7VG1nwbotPb5xzFsw5RF4Wnp2G3dWPM3g==",
       "requires": {
         "@graphql-typed-document-node/core": "^3.1.1",
+        "@wry/caches": "^1.0.0",
         "@wry/equality": "^0.5.6",
         "@wry/trie": "^0.5.0",
         "graphql-tag": "^2.12.6",
         "hoist-non-react-statics": "^3.3.2",
         "optimism": "^0.18.0",
         "prop-types": "^15.7.2",
+        "rehackt": "^0.1.0",
         "response-iterator": "^0.2.6",
         "symbol-observable": "^4.0.0",
         "ts-invariant": "^0.10.3",
@@ -14853,19 +14601,19 @@
       }
     },
     "@apollo/composition": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.6.3.tgz",
-      "integrity": "sha512-7Q6xITvZifAWXPzN1ZkqMss9mBZgCL1hdKmM117UhqOfYrZ331DdUaln4I07Ae7wjXEg0KUb7AElx/1x+gm6qg==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.8.3.tgz",
+      "integrity": "sha512-CpMraUfP9+LB6egE4HAVvShw/toxzb1KTYn175M7WE+lPnq3gclNh6bLUotPEOHQeW9EPttpC8tndMscfpil5A==",
       "dev": true,
       "requires": {
-        "@apollo/federation-internals": "2.6.3",
-        "@apollo/query-graphs": "2.6.3"
+        "@apollo/federation-internals": "2.8.3",
+        "@apollo/query-graphs": "2.8.3"
       }
     },
     "@apollo/federation-internals": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.6.3.tgz",
-      "integrity": "sha512-Motm6p4C4t1lUXOq9kIVyP6jANSymiUgfwc0TYjeSehKRFq6qxv9L2gPSVFvyfm/gI+gLlDscDN63YtxpUzqhQ==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.8.3.tgz",
+      "integrity": "sha512-5GOeQ1I5C7uCU6ob/TbRGqWg2m+9qo8/8qlGhfaMUqN3ukSCmgkKUDdfg1M6sB3lDmIoL5tAoSkmJegKSaDR5A==",
       "dev": true,
       "requires": {
         "@types/uuid": "^9.0.0",
@@ -14883,14 +14631,14 @@
       }
     },
     "@apollo/gateway": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.6.3.tgz",
-      "integrity": "sha512-/p1eyRPqWsoVH94/q3tqeLMk7q6CZ5pl7C8lLtANCx/2mYwmLlGcP4RNdKAFyd3K6zR7/VXNdfDIRWZ+AqCkEg==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.8.3.tgz",
+      "integrity": "sha512-pJ99vpF7flKqtwLyFgV0SJF09zlLqlW8YYm34I/1FrFh0Zqc5+Y3VV3Y5nAc9ddiodftGItnUbx4txuVM/KMjA==",
       "dev": true,
       "requires": {
-        "@apollo/composition": "2.6.3",
-        "@apollo/federation-internals": "2.6.3",
-        "@apollo/query-planner": "2.6.3",
+        "@apollo/composition": "2.8.3",
+        "@apollo/federation-internals": "2.8.3",
+        "@apollo/query-planner": "2.8.3",
         "@apollo/server-gateway-interface": "^1.1.0",
         "@apollo/usage-reporting-protobuf": "^4.1.0",
         "@apollo/utils.createhash": "^2.0.0",
@@ -14928,12 +14676,12 @@
       }
     },
     "@apollo/query-graphs": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.6.3.tgz",
-      "integrity": "sha512-h+39kWnVq8GzhSyE2HGg4CKpzTDj1480EcLFuSk11QSN99uXjqwwciY5J83tlaSBONni0TvJ6Efctvp6ag0Xpw==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.8.3.tgz",
+      "integrity": "sha512-AB1Lr8LUr9iXGQIb70EhiSsu+G6AIW9EXkl+YGTCihn/zbsCcGx/UKr/HUsfAOyg2twenjToLcvqX5eRuM8Xag==",
       "dev": true,
       "requires": {
-        "@apollo/federation-internals": "2.6.3",
+        "@apollo/federation-internals": "2.8.3",
         "deep-equal": "^2.0.5",
         "ts-graphviz": "^1.5.4",
         "uuid": "^9.0.0"
@@ -14948,13 +14696,13 @@
       }
     },
     "@apollo/query-planner": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.6.3.tgz",
-      "integrity": "sha512-wH7VaIDPhbSs7/UrihvMHWBvfooIoH4WKpyBj50Syf7TOFWmrWWihB+Gf5pdR2Q14pKxM0QihIxGdXK3XABBag==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.8.3.tgz",
+      "integrity": "sha512-dwkschpjwoGziUjYfKwTVHAMuPoRt1Xr2suLEfHK0oSZ0AoDz3RQIBY6Dy8T61hPFB7p/3YvJja7q8jDDDP/og==",
       "dev": true,
       "requires": {
-        "@apollo/federation-internals": "2.6.3",
-        "@apollo/query-graphs": "2.6.3",
+        "@apollo/federation-internals": "2.8.3",
+        "@apollo/query-graphs": "2.8.3",
         "@apollo/utils.keyvaluecache": "^2.1.0",
         "chalk": "^4.1.0",
         "deep-equal": "^2.0.5",
@@ -14975,7 +14723,6 @@
         "@apollo/utils.usagereporting": "^2.1.0",
         "@apollo/utils.withrequired": "^2.0.0",
         "@graphql-tools/schema": "^9.0.0",
-        "@josephg/resolvable": "^1.0.0",
         "@types/express": "^4.17.13",
         "@types/express-serve-static-core": "^4.17.30",
         "@types/node-fetch": "^2.6.1",
@@ -15021,7 +14768,6 @@
         "@apollo/usage-reporting-protobuf": "^4.1.1",
         "@apollo/utils.createhash": "^2.0.0",
         "@apollo/utils.keyvaluecache": "^2.1.0",
-        "@josephg/resolvable": "^1.0.1",
         "express": "^4.18.1",
         "graphql-http": "1.22.0",
         "graphql-tag": "^2.12.6",
@@ -15029,40 +14775,6 @@
         "node-fetch": "^2.6.7",
         "superagent": "^8.0.9",
         "supertest": "^6.2.3"
-      },
-      "dependencies": {
-        "form-data": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-          "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-          "requires": {
-            "asynckit": "^0.4.0",
-            "combined-stream": "^1.0.8",
-            "mime-types": "^2.1.12"
-          }
-        },
-        "mime": {
-          "version": "2.6.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
-          "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
-        },
-        "superagent": {
-          "version": "8.0.9",
-          "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz",
-          "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==",
-          "requires": {
-            "component-emitter": "^1.3.0",
-            "cookiejar": "^2.1.4",
-            "debug": "^4.3.4",
-            "fast-safe-stringify": "^2.1.1",
-            "form-data": "^4.0.0",
-            "formidable": "^2.1.2",
-            "methods": "^1.1.2",
-            "mime": "2.6.0",
-            "qs": "^6.11.0",
-            "semver": "^7.3.8"
-          }
-        }
       }
     },
     "@apollo/server-plugin-response-cache": {
@@ -15073,13 +14785,13 @@
       }
     },
     "@apollo/subgraph": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/@apollo/subgraph/-/subgraph-2.6.3.tgz",
-      "integrity": "sha512-k4uDJ5QBzisWatxQ/4NJ7d56OJwgPMd0kL1lEXsVJYrfxZhlNd2YSnQrBjp4cmnTK4Z3mDFFoF2viXll7eR2WQ==",
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/@apollo/subgraph/-/subgraph-2.8.3.tgz",
+      "integrity": "sha512-n00rjSstDEdD58Ug+9wCzOffrFcx6SAszKkYF/X1ugzBUruKNun+7S7wgd8m3KXImZwwQ5WTLiISBtTC8PRYsg==",
       "dev": true,
       "requires": {
         "@apollo/cache-control-types": "^1.0.2",
-        "@apollo/federation-internals": "2.6.3"
+        "@apollo/federation-internals": "2.8.3"
       }
     },
     "@apollo/usage-reporting-protobuf": {
@@ -15994,15 +15706,16 @@
       "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw=="
     },
     "@changesets/apply-release-plan": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.0.tgz",
-      "integrity": "sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==",
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.4.tgz",
+      "integrity": "sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.20.1",
-        "@changesets/config": "^3.0.0",
+        "@changesets/config": "^3.0.2",
         "@changesets/get-version-range-type": "^0.4.0",
         "@changesets/git": "^3.0.0",
+        "@changesets/should-skip-package": "^0.1.0",
         "@changesets/types": "^6.0.0",
         "@manypkg/get-packages": "^1.1.3",
         "detect-indent": "^6.0.0",
@@ -16023,14 +15736,15 @@
       }
     },
     "@changesets/assemble-release-plan": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.0.tgz",
-      "integrity": "sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==",
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.3.tgz",
+      "integrity": "sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.20.1",
         "@changesets/errors": "^0.2.0",
-        "@changesets/get-dependents-graph": "^2.0.0",
+        "@changesets/get-dependents-graph": "^2.1.1",
+        "@changesets/should-skip-package": "^0.1.0",
         "@changesets/types": "^6.0.0",
         "@manypkg/get-packages": "^1.1.3",
         "semver": "^7.5.3"
@@ -16065,25 +15779,26 @@
       }
     },
     "@changesets/cli": {
-      "version": "2.27.1",
-      "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.1.tgz",
-      "integrity": "sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==",
+      "version": "2.27.7",
+      "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.7.tgz",
+      "integrity": "sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.20.1",
-        "@changesets/apply-release-plan": "^7.0.0",
-        "@changesets/assemble-release-plan": "^6.0.0",
+        "@changesets/apply-release-plan": "^7.0.4",
+        "@changesets/assemble-release-plan": "^6.0.3",
         "@changesets/changelog-git": "^0.2.0",
-        "@changesets/config": "^3.0.0",
+        "@changesets/config": "^3.0.2",
         "@changesets/errors": "^0.2.0",
-        "@changesets/get-dependents-graph": "^2.0.0",
-        "@changesets/get-release-plan": "^4.0.0",
+        "@changesets/get-dependents-graph": "^2.1.1",
+        "@changesets/get-release-plan": "^4.0.3",
         "@changesets/git": "^3.0.0",
         "@changesets/logger": "^0.1.0",
         "@changesets/pre": "^2.0.0",
         "@changesets/read": "^0.6.0",
+        "@changesets/should-skip-package": "^0.1.0",
         "@changesets/types": "^6.0.0",
-        "@changesets/write": "^0.3.0",
+        "@changesets/write": "^0.3.1",
         "@manypkg/get-packages": "^1.1.3",
         "@types/semver": "^7.5.0",
         "ansi-colors": "^4.1.3",
@@ -16093,15 +15808,14 @@
         "external-editor": "^3.1.0",
         "fs-extra": "^7.0.1",
         "human-id": "^1.0.2",
-        "meow": "^6.0.0",
+        "mri": "^1.2.0",
         "outdent": "^0.5.0",
         "p-limit": "^2.2.0",
         "preferred-pm": "^3.0.0",
         "resolve-from": "^5.0.0",
         "semver": "^7.5.3",
         "spawndamnit": "^2.0.0",
-        "term-size": "^2.1.0",
-        "tty-table": "^4.1.5"
+        "term-size": "^2.1.0"
       },
       "dependencies": {
         "ansi-styles": {
@@ -16166,13 +15880,13 @@
       }
     },
     "@changesets/config": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.0.tgz",
-      "integrity": "sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.2.tgz",
+      "integrity": "sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==",
       "dev": true,
       "requires": {
         "@changesets/errors": "^0.2.0",
-        "@changesets/get-dependents-graph": "^2.0.0",
+        "@changesets/get-dependents-graph": "^2.1.1",
         "@changesets/logger": "^0.1.0",
         "@changesets/types": "^6.0.0",
         "@manypkg/get-packages": "^1.1.3",
@@ -16190,9 +15904,9 @@
       }
     },
     "@changesets/get-dependents-graph": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.0.0.tgz",
-      "integrity": "sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.1.tgz",
+      "integrity": "sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==",
       "dev": true,
       "requires": {
         "@changesets/types": "^6.0.0",
@@ -16271,14 +15985,14 @@
       }
     },
     "@changesets/get-release-plan": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.0.tgz",
-      "integrity": "sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.3.tgz",
+      "integrity": "sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.20.1",
-        "@changesets/assemble-release-plan": "^6.0.0",
-        "@changesets/config": "^3.0.0",
+        "@changesets/assemble-release-plan": "^6.0.3",
+        "@changesets/config": "^3.0.2",
         "@changesets/pre": "^2.0.0",
         "@changesets/read": "^0.6.0",
         "@changesets/types": "^6.0.0",
@@ -16479,6 +16193,17 @@
         }
       }
     },
+    "@changesets/should-skip-package": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.0.tgz",
+      "integrity": "sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==",
+      "dev": true,
+      "requires": {
+        "@babel/runtime": "^7.20.1",
+        "@changesets/types": "^6.0.0",
+        "@manypkg/get-packages": "^1.1.3"
+      }
+    },
     "@changesets/types": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.0.0.tgz",
@@ -16486,9 +16211,9 @@
       "dev": true
     },
     "@changesets/write": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.0.tgz",
-      "integrity": "sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==",
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.1.tgz",
+      "integrity": "sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.20.1",
@@ -16973,9 +16698,9 @@
       }
     },
     "@eslint/js": {
-      "version": "8.56.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
-      "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+      "version": "8.57.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+      "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
       "dev": true
     },
     "@graphql-codegen/cli": {
@@ -17825,13 +17550,13 @@
       "requires": {}
     },
     "@humanwhocodes/config-array": {
-      "version": "0.11.13",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
-      "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
+      "version": "0.11.14",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+      "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
       "dev": true,
       "requires": {
-        "@humanwhocodes/object-schema": "^2.0.1",
-        "debug": "^4.1.1",
+        "@humanwhocodes/object-schema": "^2.0.2",
+        "debug": "^4.3.1",
         "minimatch": "^3.0.5"
       },
       "dependencies": {
@@ -17851,9 +17576,9 @@
       "dev": true
     },
     "@humanwhocodes/object-schema": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
-      "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
       "dev": true
     },
     "@iarna/toml": {
@@ -18127,7 +17852,8 @@
       }
     },
     "@josephg/resolvable": {
-      "version": "1.0.1"
+      "version": "1.0.1",
+      "dev": true
     },
     "@jridgewell/gen-mapping": {
       "version": "0.3.2",
@@ -18348,9 +18074,9 @@
       "dev": true
     },
     "@rollup/plugin-commonjs": {
-      "version": "25.0.7",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz",
-      "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==",
+      "version": "25.0.8",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz",
+      "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==",
       "dev": true,
       "requires": {
         "@rollup/pluginutils": "^5.0.1",
@@ -18561,9 +18287,9 @@
       }
     },
     "@types/express-serve-static-core": {
-      "version": "4.17.41",
-      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz",
-      "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==",
+      "version": "4.19.5",
+      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
+      "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
       "requires": {
         "@types/node": "*",
         "@types/qs": "*",
@@ -18626,9 +18352,9 @@
       }
     },
     "@types/lodash": {
-      "version": "4.14.202",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz",
-      "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==",
+      "version": "4.17.7",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz",
+      "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==",
       "dev": true
     },
     "@types/lodash.sumby": {
@@ -18655,10 +18381,6 @@
     "@types/mime": {
       "version": "1.3.2"
     },
-    "@types/minimist": {
-      "version": "1.2.2",
-      "dev": true
-    },
     "@types/negotiator": {
       "version": "0.6.3",
       "resolved": "https://registry.npmjs.org/@types/negotiator/-/negotiator-0.6.3.tgz",
@@ -18671,9 +18393,9 @@
       "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ=="
     },
     "@types/node-fetch": {
-      "version": "2.6.10",
-      "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.10.tgz",
-      "integrity": "sha512-PPpPK6F9ALFTn59Ka3BaL+qGuipRfxNE8qVgkp0bVixeiR2c2/L+IVOiBdu9JhhT22sWnQEp6YyHGI2b2+CMcA==",
+      "version": "2.6.11",
+      "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz",
+      "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
       "requires": {
         "@types/node": "*",
         "form-data": "^4.0.0"
@@ -18691,10 +18413,6 @@
         }
       }
     },
-    "@types/normalize-package-data": {
-      "version": "2.4.1",
-      "dev": true
-    },
     "@types/parse-json": {
       "version": "4.0.0",
       "dev": true
@@ -18786,9 +18504,9 @@
       }
     },
     "@types/uuid": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz",
-      "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==",
+      "version": "9.0.8",
+      "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
+      "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
       "dev": true
     },
     "@types/whatwg-mimetype": {
@@ -19215,10 +18933,6 @@
         "is-shared-array-buffer": "^1.0.2"
       }
     },
-    "arrify": {
-      "version": "1.0.1",
-      "dev": true
-    },
     "asap": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -19241,6 +18955,12 @@
       "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
       "dev": true
     },
+    "async": {
+      "version": "3.2.5",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+      "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+      "dev": true
+    },
     "async-retry": {
       "version": "1.3.3",
       "requires": {
@@ -19440,13 +19160,6 @@
         "fill-range": "^7.0.1"
       }
     },
-    "breakword": {
-      "version": "1.0.5",
-      "dev": true,
-      "requires": {
-        "wcwidth": "^1.0.1"
-      }
-    },
     "browserslist": {
       "version": "4.21.4",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
@@ -19572,13 +19285,15 @@
       }
     },
     "call-bind": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
-      "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
       "requires": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
         "function-bind": "^1.1.2",
-        "get-intrinsic": "^1.2.1",
-        "set-function-length": "^1.1.1"
+        "get-intrinsic": "^1.2.4",
+        "set-function-length": "^1.2.1"
       }
     },
     "callsites": {
@@ -19597,15 +19312,6 @@
     "camelcase": {
       "version": "5.3.1"
     },
-    "camelcase-keys": {
-      "version": "6.2.2",
-      "dev": true,
-      "requires": {
-        "camelcase": "^5.3.1",
-        "map-obj": "^4.0.0",
-        "quick-lru": "^4.0.1"
-      }
-    },
     "caniuse-lite": {
       "version": "1.0.30001418",
       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz",
@@ -20218,28 +19924,6 @@
         "gensequence": "^5.0.2"
       }
     },
-    "csv": {
-      "version": "5.5.3",
-      "dev": true,
-      "requires": {
-        "csv-generate": "^3.4.3",
-        "csv-parse": "^4.16.3",
-        "csv-stringify": "^5.6.5",
-        "stream-transform": "^2.1.3"
-      }
-    },
-    "csv-generate": {
-      "version": "3.4.3",
-      "dev": true
-    },
-    "csv-parse": {
-      "version": "4.16.3",
-      "dev": true
-    },
-    "csv-stringify": {
-      "version": "5.6.5",
-      "dev": true
-    },
     "dataloader": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.1.0.tgz",
@@ -20260,20 +19944,6 @@
       "version": "1.2.0",
       "dev": true
     },
-    "decamelize-keys": {
-      "version": "1.1.0",
-      "dev": true,
-      "requires": {
-        "decamelize": "^1.1.0",
-        "map-obj": "^1.0.0"
-      },
-      "dependencies": {
-        "map-obj": {
-          "version": "1.0.1",
-          "dev": true
-        }
-      }
-    },
     "dedent": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.3.0.tgz",
@@ -20323,21 +19993,22 @@
       }
     },
     "define-data-property": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
-      "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
       "requires": {
-        "get-intrinsic": "^1.2.1",
-        "gopd": "^1.0.1",
-        "has-property-descriptors": "^1.0.0"
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.0.1"
       }
     },
     "define-properties": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
-      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
       "dev": true,
       "requires": {
+        "define-data-property": "^1.0.1",
         "has-property-descriptors": "^1.0.0",
         "object-keys": "^1.1.1"
       }
@@ -20500,6 +20171,15 @@
     "ee-first": {
       "version": "1.1.1"
     },
+    "ejs": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+      "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+      "dev": true,
+      "requires": {
+        "jake": "^10.8.5"
+      }
+    },
     "electron-to-chromium": {
       "version": "1.4.278",
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.278.tgz",
@@ -20608,6 +20288,19 @@
         "which-typed-array": "^1.1.10"
       }
     },
+    "es-define-property": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "requires": {
+        "get-intrinsic": "^1.2.4"
+      }
+    },
+    "es-errors": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
+    },
     "es-get-iterator": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
@@ -20664,16 +20357,16 @@
       "version": "1.0.5"
     },
     "eslint": {
-      "version": "8.56.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
-      "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+      "version": "8.57.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+      "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
       "dev": true,
       "requires": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.6.1",
         "@eslint/eslintrc": "^2.1.4",
-        "@eslint/js": "8.56.0",
-        "@humanwhocodes/config-array": "^0.11.13",
+        "@eslint/js": "8.57.0",
+        "@humanwhocodes/config-array": "^0.11.14",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@nodelib/fs.walk": "^1.2.8",
         "@ungap/structured-clone": "^1.2.0",
@@ -21206,6 +20899,35 @@
         "flat-cache": "^3.0.4"
       }
     },
+    "filelist": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+      "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+      "dev": true,
+      "requires": {
+        "minimatch": "^5.0.1"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "5.1.6",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+          "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        }
+      }
+    },
     "fill-range": {
       "version": "7.0.1",
       "requires": {
@@ -21406,10 +21128,11 @@
       "version": "2.0.5"
     },
     "get-intrinsic": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
-      "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
       "requires": {
+        "es-errors": "^1.3.0",
         "function-bind": "^1.1.2",
         "has-proto": "^1.0.1",
         "has-symbols": "^1.0.3",
@@ -21512,10 +21235,6 @@
     "graceful-fs": {
       "version": "4.2.10"
     },
-    "grapheme-splitter": {
-      "version": "1.0.4",
-      "dev": true
-    },
     "graphemer": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
@@ -21523,9 +21242,9 @@
       "dev": true
     },
     "graphql": {
-      "version": "16.8.1",
-      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz",
-      "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw=="
+      "version": "16.9.0",
+      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz",
+      "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw=="
     },
     "graphql-config": {
       "version": "4.5.0",
@@ -21614,10 +21333,6 @@
       "devOptional": true,
       "requires": {}
     },
-    "hard-rejection": {
-      "version": "2.1.0",
-      "dev": true
-    },
     "has": {
       "version": "1.0.3",
       "dev": true,
@@ -21641,9 +21356,11 @@
       "dev": true
     },
     "has-property-descriptors": {
-      "version": "1.0.0",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
       "requires": {
-        "get-intrinsic": "^1.1.1"
+        "es-define-property": "^1.0.0"
       }
     },
     "has-proto": {
@@ -21690,10 +21407,6 @@
         "react-is": "^16.7.0"
       }
     },
-    "hosted-git-info": {
-      "version": "2.8.9",
-      "dev": true
-    },
     "html-escaper": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -22030,9 +21743,9 @@
       }
     },
     "is-map": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
-      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+      "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
       "dev": true
     },
     "is-negative-zero": {
@@ -22065,10 +21778,6 @@
       "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
       "dev": true
     },
-    "is-plain-obj": {
-      "version": "1.1.0",
-      "dev": true
-    },
     "is-reference": {
       "version": "1.2.1",
       "dev": true,
@@ -22096,9 +21805,9 @@
       }
     },
     "is-set": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
-      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+      "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
       "dev": true
     },
     "is-shared-array-buffer": {
@@ -22182,9 +21891,9 @@
       }
     },
     "is-weakmap": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
-      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+      "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
       "dev": true
     },
     "is-weakref": {
@@ -22197,13 +21906,13 @@
       }
     },
     "is-weakset": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
-      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+      "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
+        "call-bind": "^1.0.7",
+        "get-intrinsic": "^1.2.4"
       }
     },
     "is-windows": {
@@ -22301,6 +22010,29 @@
       "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==",
       "dev": true
     },
+    "jake": {
+      "version": "10.9.2",
+      "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
+      "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
+      "dev": true,
+      "requires": {
+        "async": "^3.2.3",
+        "chalk": "^4.0.2",
+        "filelist": "^1.0.4",
+        "minimatch": "^3.1.2"
+      },
+      "dependencies": {
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        }
+      }
+    },
     "jest": {
       "version": "29.7.0",
       "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
@@ -22832,10 +22564,6 @@
         "safe-buffer": "^5.0.1"
       }
     },
-    "kind-of": {
-      "version": "6.0.3",
-      "dev": true
-    },
     "kleur": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
@@ -23138,10 +22866,6 @@
       "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
       "dev": true
     },
-    "map-obj": {
-      "version": "4.3.0",
-      "dev": true
-    },
     "media-typer": {
       "version": "0.3.0"
     },
@@ -23149,37 +22873,6 @@
       "version": "1.0.1",
       "dev": true
     },
-    "meow": {
-      "version": "6.1.1",
-      "dev": true,
-      "requires": {
-        "@types/minimist": "^1.2.0",
-        "camelcase-keys": "^6.2.2",
-        "decamelize-keys": "^1.1.0",
-        "hard-rejection": "^2.1.0",
-        "minimist-options": "^4.0.2",
-        "normalize-package-data": "^2.5.0",
-        "read-pkg-up": "^7.0.1",
-        "redent": "^3.0.0",
-        "trim-newlines": "^3.0.0",
-        "type-fest": "^0.13.1",
-        "yargs-parser": "^18.1.3"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.13.1",
-          "dev": true
-        },
-        "yargs-parser": {
-          "version": "18.1.3",
-          "dev": true,
-          "requires": {
-            "camelcase": "^5.0.0",
-            "decamelize": "^1.2.0"
-          }
-        }
-      }
-    },
     "merge-descriptors": {
       "version": "1.0.1"
     },
@@ -23224,10 +22917,6 @@
     "mimic-fn": {
       "version": "2.1.0"
     },
-    "min-indent": {
-      "version": "1.0.1",
-      "dev": true
-    },
     "minimatch": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.3.tgz",
@@ -23241,15 +22930,6 @@
       "version": "1.2.6",
       "dev": true
     },
-    "minimist-options": {
-      "version": "4.1.0",
-      "dev": true,
-      "requires": {
-        "arrify": "^1.0.1",
-        "is-plain-obj": "^1.1.0",
-        "kind-of": "^6.0.3"
-      }
-    },
     "minipass": {
       "version": "4.2.4",
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz",
@@ -23369,10 +23049,6 @@
         }
       }
     },
-    "mixme": {
-      "version": "0.5.4",
-      "dev": true
-    },
     "mkdirp": {
       "version": "1.0.4",
       "dev": true
@@ -23394,6 +23070,12 @@
         }
       }
     },
+    "mri": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+      "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+      "dev": true
+    },
     "ms": {
       "version": "2.1.2"
     },
@@ -23433,9 +23115,9 @@
       }
     },
     "nock": {
-      "version": "13.4.0",
-      "resolved": "https://registry.npmjs.org/nock/-/nock-13.4.0.tgz",
-      "integrity": "sha512-W8NVHjO/LCTNA64yxAPHV/K47LpGYcVzgKd3Q0n6owhwvD0Dgoterc25R4rnZbckJEb6Loxz1f5QMuJpJnbSyQ==",
+      "version": "13.5.4",
+      "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.4.tgz",
+      "integrity": "sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==",
       "dev": true,
       "requires": {
         "debug": "^4.1.0",
@@ -23482,22 +23164,6 @@
       "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
       "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
     },
-    "normalize-package-data": {
-      "version": "2.5.0",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "dev": true
-        }
-      }
-    },
     "normalize-path": {
       "version": "3.0.0"
     },
@@ -23524,13 +23190,13 @@
       "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
     },
     "object-is": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+      "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1"
       }
     },
     "object-keys": {
@@ -23860,9 +23526,9 @@
       "dev": true
     },
     "prettier": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz",
-      "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==",
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+      "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
       "dev": true
     },
     "prettier-2": {
@@ -24009,10 +23675,6 @@
       "version": "1.2.3",
       "dev": true
     },
-    "quick-lru": {
-      "version": "4.0.1",
-      "dev": true
-    },
     "range-parser": {
       "version": "1.2.1"
     },
@@ -24030,37 +23692,6 @@
     "react-is": {
       "version": "16.13.1"
     },
-    "read-pkg": {
-      "version": "5.2.0",
-      "dev": true,
-      "requires": {
-        "@types/normalize-package-data": "^2.4.0",
-        "normalize-package-data": "^2.5.0",
-        "parse-json": "^5.0.0",
-        "type-fest": "^0.6.0"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.6.0",
-          "dev": true
-        }
-      }
-    },
-    "read-pkg-up": {
-      "version": "7.0.1",
-      "dev": true,
-      "requires": {
-        "find-up": "^4.1.0",
-        "read-pkg": "^5.2.0",
-        "type-fest": "^0.8.1"
-      },
-      "dependencies": {
-        "type-fest": {
-          "version": "0.8.1",
-          "dev": true
-        }
-      }
-    },
     "read-yaml-file": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz",
@@ -24109,20 +23740,6 @@
         "util-deprecate": "^1.0.1"
       }
     },
-    "redent": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "indent-string": "^4.0.0",
-        "strip-indent": "^3.0.0"
-      },
-      "dependencies": {
-        "indent-string": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
     "regenerator-runtime": {
       "version": "0.13.11",
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
@@ -24140,6 +23757,12 @@
         "set-function-name": "^2.0.0"
       }
     },
+    "rehackt": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz",
+      "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==",
+      "requires": {}
+    },
     "relay-runtime": {
       "version": "12.0.0",
       "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz",
@@ -24411,14 +24034,16 @@
       "dev": true
     },
     "set-function-length": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
-      "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
       "requires": {
-        "define-data-property": "^1.1.1",
-        "get-intrinsic": "^1.2.1",
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
         "gopd": "^1.0.1",
-        "has-property-descriptors": "^1.0.0"
+        "has-property-descriptors": "^1.0.2"
       }
     },
     "set-function-name": {
@@ -24494,67 +24119,6 @@
       "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
       "dev": true
     },
-    "smartwrap": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "array.prototype.flat": "^1.2.3",
-        "breakword": "^1.0.5",
-        "grapheme-splitter": "^1.0.4",
-        "strip-ansi": "^6.0.0",
-        "wcwidth": "^1.0.1",
-        "yargs": "^15.1.0"
-      },
-      "dependencies": {
-        "cliui": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "string-width": "^4.2.0",
-            "strip-ansi": "^6.0.0",
-            "wrap-ansi": "^6.2.0"
-          }
-        },
-        "wrap-ansi": {
-          "version": "6.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.0.0",
-            "string-width": "^4.1.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "y18n": {
-          "version": "4.0.3",
-          "dev": true
-        },
-        "yargs": {
-          "version": "15.4.1",
-          "dev": true,
-          "requires": {
-            "cliui": "^6.0.0",
-            "decamelize": "^1.2.0",
-            "find-up": "^4.1.0",
-            "get-caller-file": "^2.0.1",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^2.0.0",
-            "set-blocking": "^2.0.0",
-            "string-width": "^4.2.0",
-            "which-module": "^2.0.0",
-            "y18n": "^4.0.0",
-            "yargs-parser": "^18.1.2"
-          }
-        },
-        "yargs-parser": {
-          "version": "18.1.3",
-          "dev": true,
-          "requires": {
-            "camelcase": "^5.0.0",
-            "decamelize": "^1.2.0"
-          }
-        }
-      }
-    },
     "snake-case": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
@@ -24663,30 +24227,6 @@
         }
       }
     },
-    "spdx-correct": {
-      "version": "3.1.1",
-      "dev": true,
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-exceptions": {
-      "version": "2.3.0",
-      "dev": true
-    },
-    "spdx-expression-parse": {
-      "version": "3.0.1",
-      "dev": true,
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-license-ids": {
-      "version": "3.0.11",
-      "dev": true
-    },
     "sponge-case": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz",
@@ -24750,13 +24290,6 @@
         "any-promise": "^1.1.0"
       }
     },
-    "stream-transform": {
-      "version": "2.1.3",
-      "dev": true,
-      "requires": {
-        "mixme": "^0.5.1"
-      }
-    },
     "streamsearch": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
@@ -24840,13 +24373,6 @@
       "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
       "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
     },
-    "strip-indent": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "min-indent": "^1.0.0"
-      }
-    },
     "strip-json-comments": {
       "version": "3.1.1"
     },
@@ -24855,9 +24381,9 @@
       "dev": true
     },
     "superagent": {
-      "version": "8.0.7",
-      "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.7.tgz",
-      "integrity": "sha512-lffxSyqkswW7kzDFkLNyX1GMIfR5TyCKBF4Vdvzn/6d0Q1s+YX1EbbwhyEGx2xzThnwDFmfsIVymZZ2Tk4Nubw==",
+      "version": "8.1.2",
+      "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
+      "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
       "requires": {
         "component-emitter": "^1.3.0",
         "cookiejar": "^2.1.4",
@@ -24889,12 +24415,12 @@
       }
     },
     "supertest": {
-      "version": "6.3.3",
-      "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz",
-      "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==",
+      "version": "6.3.4",
+      "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz",
+      "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==",
       "requires": {
         "methods": "^1.1.2",
-        "superagent": "^8.0.5"
+        "superagent": "^8.1.2"
       }
     },
     "supports-color": {
@@ -25068,14 +24594,10 @@
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
       "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
     },
-    "trim-newlines": {
-      "version": "3.0.1",
-      "dev": true
-    },
     "ts-graphviz": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-1.8.1.tgz",
-      "integrity": "sha512-54/fe5iu0Jb6X0pmDmzsA2UHLfyHjUEUwfHtZcEOR0fZ6Myf+dFoO6eNsyL8CBDMJ9u7WWEewduVaiaXlvjSVw==",
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-1.8.2.tgz",
+      "integrity": "sha512-5YhbFoHmjxa7pgQLkB07MtGnGJ/yhvjmc9uhsnDBEICME6gkPf83SBwLDQqGDoCa3XzUMWLk1AU2Wn1u1naDtA==",
       "dev": true
     },
     "ts-invariant": {
@@ -25085,12 +24607,13 @@
       }
     },
     "ts-jest": {
-      "version": "29.1.1",
-      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
-      "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
+      "version": "29.2.3",
+      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.3.tgz",
+      "integrity": "sha512-yCcfVdiBFngVz9/keHin9EnsrQtQtEu3nRykNy9RVp+FiPFFbPJ3Sg6Qg4+TkmH0vMP5qsTKgXSsk80HRwvdgQ==",
       "dev": true,
       "requires": {
         "bs-logger": "0.x",
+        "ejs": "^3.1.10",
         "fast-json-stable-stringify": "2.x",
         "jest-util": "^29.0.0",
         "json5": "^2.2.3",
@@ -25169,25 +24692,6 @@
         }
       }
     },
-    "tty-table": {
-      "version": "4.1.6",
-      "dev": true,
-      "requires": {
-        "chalk": "^4.1.2",
-        "csv": "^5.5.0",
-        "kleur": "^4.1.4",
-        "smartwrap": "^2.0.2",
-        "strip-ansi": "^6.0.0",
-        "wcwidth": "^1.0.1",
-        "yargs": "^17.1.1"
-      },
-      "dependencies": {
-        "kleur": {
-          "version": "4.1.5",
-          "dev": true
-        }
-      }
-    },
     "type-check": {
       "version": "0.4.0",
       "dev": true,
@@ -25435,14 +24939,6 @@
         "convert-source-map": "^1.6.0"
       }
     },
-    "validate-npm-package-license": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
     "value-or-promise": {
       "version": "1.0.11",
       "dev": true
@@ -25539,15 +25035,15 @@
       }
     },
     "which-collection": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
-      "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+      "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
       "dev": true,
       "requires": {
-        "is-map": "^2.0.1",
-        "is-set": "^2.0.1",
-        "is-weakmap": "^2.0.1",
-        "is-weakset": "^2.0.1"
+        "is-map": "^2.0.3",
+        "is-set": "^2.0.3",
+        "is-weakmap": "^2.0.2",
+        "is-weakset": "^2.0.3"
       }
     },
     "which-module": {
diff --git a/package.json b/package.json
index dfa6f813b..c231c63b7 100644
--- a/package.json
+++ b/package.json
@@ -38,36 +38,35 @@
     "npm": ">=8.5.0"
   },
   "devDependencies": {
-    "@apollo/client": "3.8.9",
-    "@apollo/gateway": "2.6.3",
-    "@apollo/subgraph": "2.6.3",
+    "@apollo/client": "3.10.8",
+    "@apollo/gateway": "2.8.3",
+    "@apollo/subgraph": "2.8.3",
     "@apollo/utils.createhash": "2.0.1",
     "@changesets/changelog-github": "0.5.0",
-    "@changesets/cli": "2.27.1",
+    "@changesets/cli": "2.27.7",
     "@graphql-codegen/cli": "3.3.1",
     "@graphql-codegen/typescript-operations": "3.0.4",
     "@graphql-tools/mock": "8.7.20",
     "@graphql-tools/schema": "9.0.19",
-    "@josephg/resolvable": "1.0.1",
-    "@rollup/plugin-commonjs": "25.0.7",
+    "@rollup/plugin-commonjs": "25.0.8",
     "@types/async-retry": "1.4.8",
     "@types/compression": "1.7.5",
     "@types/cors": "2.8.17",
     "@types/express": "4.17.21",
-    "@types/express-serve-static-core": "4.17.41",
-    "@types/lodash": "4.14.202",
+    "@types/express-serve-static-core": "4.19.5",
+    "@types/lodash": "4.17.7",
     "@types/lodash.sumby": "4.6.9",
     "@types/lodash.xorby": "4.7.9",
     "@types/negotiator": "0.6.3",
     "@types/node": "14.18.63",
-    "@types/node-fetch": "2.6.10",
+    "@types/node-fetch": "2.6.11",
     "@types/qs-middleware": "1.0.4",
     "@types/retry": "0.12.5",
     "@types/superagent": "4.1.24",
     "@types/supertest": "2.0.16",
     "@types/test-listen": "1.1.2",
     "@types/type-is": "1.6.6",
-    "@types/uuid": "9.0.7",
+    "@types/uuid": "9.0.8",
     "@types/whatwg-mimetype": "3.0.2",
     "@typescript-eslint/eslint-plugin": "5.62.0",
     "@typescript-eslint/parser": "5.62.0",
@@ -77,10 +76,10 @@
     "compression": "1.7.4",
     "cors": "2.8.5",
     "cspell": "6.31.3",
-    "eslint": "8.56.0",
+    "eslint": "8.57.0",
     "eslint-plugin-import": "2.29.1",
     "express": "4.19.2",
-    "graphql": "16.8.1",
+    "graphql": "16.9.0",
     "graphql-subscriptions": "2.0.0",
     "graphql-tag": "2.12.6",
     "jest": "29.7.0",
@@ -90,16 +89,16 @@
     "jest-mock-random": "1.1.1",
     "jest-serializer-html": "7.1.0",
     "lodash.sumby": "4.6.0",
-    "nock": "13.4.0",
+    "nock": "13.5.4",
     "node-fetch": "2.7.0",
-    "prettier": "3.1.1",
+    "prettier": "3.3.3",
     "prettier-2": "npm:prettier@2.8.8",
     "qs-middleware": "1.0.3",
     "requisition": "1.7.0",
     "rollup": "3.29.4",
-    "supertest": "6.3.3",
+    "supertest": "6.3.4",
     "test-listen": "1.1.0",
-    "ts-jest": "29.1.1",
+    "ts-jest": "29.2.3",
     "typescript": "5.4.2"
   },
   "jest": {
@@ -108,7 +107,7 @@
     ]
   },
   "volta": {
-    "node": "20.11.0",
-    "npm": "9.9.2"
+    "node": "20.15.1",
+    "npm": "9.9.3"
   }
 }
diff --git a/packages/server/README.md b/packages/server/README.md
index 74f7d5406..a1bdc1b3e 100644
--- a/packages/server/README.md
+++ b/packages/server/README.md
@@ -7,6 +7,13 @@
 [![Join the community](https://img.shields.io/discourse/status?label=Join%20the%20community&server=https%3A%2F%2Fcommunity.apollographql.com)](https://community.apollographql.com)
 [![Join our Discord server](https://img.shields.io/discord/1022972389463687228.svg?color=7389D8&labelColor=6A7EC2&logo=discord&logoColor=ffffff&style=flat-square)](https://discord.gg/graphos)
 
+---
+
+**Announcement:**   
+Join 1000+ engineers at GraphQL Summit for talks, workshops, and office hours, Oct 8-10 in NYC. [Get your pass here ->](https://summit.graphql.com/?utm_campaign=github_federation_readme)
+
+---
+
 ## A TypeScript/JavaScript GraphQL server
 
 **Apollo Server is an [open-source](https://github.com/apollographql/apollo-server), spec-compliant GraphQL server** that's compatible with any GraphQL client, including [Apollo Client](https://www.apollographql.com/docs/react). It's the best way to build a production-ready, self-documenting GraphQL API that can use data from any source.
diff --git a/packages/server/package.json b/packages/server/package.json
index 8b274f10b..d2d33cb25 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -136,7 +136,6 @@
     "@apollo/utils.usagereporting": "^2.1.0",
     "@apollo/utils.withrequired": "^2.0.0",
     "@graphql-tools/schema": "^9.0.0",
-    "@josephg/resolvable": "^1.0.0",
     "@types/express": "^4.17.13",
     "@types/express-serve-static-core": "^4.17.30",
     "@types/node-fetch": "^2.6.1",
diff --git a/packages/server/src/ApolloServer.ts b/packages/server/src/ApolloServer.ts
index a78dceee4..145919e31 100644
--- a/packages/server/src/ApolloServer.ts
+++ b/packages/server/src/ApolloServer.ts
@@ -8,7 +8,7 @@ import {
 import type { Logger } from '@apollo/utils.logger';
 import type { WithRequired } from '@apollo/utils.withrequired';
 import { makeExecutableSchema } from '@graphql-tools/schema';
-import resolvable, { type Resolvable } from '@josephg/resolvable';
+import resolvable, { type Resolvable } from './utils/resolvable.js';
 import {
   GraphQLError,
   assertValidSchema,
@@ -332,8 +332,8 @@ export class ApolloServer<in out TContext extends BaseContext = BaseContext> {
           ? recommendedCsrfPreventionRequestHeaders
           : config.csrfPrevention === false
             ? null
-            : config.csrfPrevention.requestHeaders ??
-              recommendedCsrfPreventionRequestHeaders,
+            : (config.csrfPrevention.requestHeaders ??
+              recommendedCsrfPreventionRequestHeaders),
       status400ForVariableCoercionErrors:
         config.status400ForVariableCoercionErrors ?? false,
       __testing_incrementalExecutionResults:
@@ -507,8 +507,8 @@ export class ApolloServer<in out TContext extends BaseContext = BaseContext> {
 
       try {
         await Promise.all(
-          this.internals.plugins.map(
-            async (plugin) => plugin.startupDidFail?.({ error }),
+          this.internals.plugins.map(async (plugin) =>
+            plugin.startupDidFail?.({ error }),
           ),
         );
       } catch (pluginError) {
@@ -1062,11 +1062,10 @@ export class ApolloServer<in out TContext extends BaseContext = BaseContext> {
         const error = ensureError(maybeError);
         try {
           await Promise.all(
-            this.internals.plugins.map(
-              async (plugin) =>
-                plugin.contextCreationDidFail?.({
-                  error,
-                }),
+            this.internals.plugins.map(async (plugin) =>
+              plugin.contextCreationDidFail?.({
+                error,
+              }),
             ),
           );
         } catch (pluginError) {
@@ -1099,9 +1098,8 @@ export class ApolloServer<in out TContext extends BaseContext = BaseContext> {
       ) {
         try {
           await Promise.all(
-            this.internals.plugins.map(
-              async (plugin) =>
-                plugin.invalidRequestWasReceived?.({ error: maybeError }),
+            this.internals.plugins.map(async (plugin) =>
+              plugin.invalidRequestWasReceived?.({ error: maybeError }),
             ),
           );
         } catch (pluginError) {
@@ -1323,12 +1321,11 @@ export async function internalExecuteOperation<TContext extends BaseContext>(
     // If *these* hooks throw then we'll still get a 500 but won't mask its
     // error.
     await Promise.all(
-      internals.plugins.map(
-        async (plugin) =>
-          plugin.unexpectedErrorProcessingRequest?.({
-            requestContext,
-            error,
-          }),
+      internals.plugins.map(async (plugin) =>
+        plugin.unexpectedErrorProcessingRequest?.({
+          requestContext,
+          error,
+        }),
       ),
     );
     // Mask unexpected error externally.
diff --git a/packages/server/src/plugin/landingPage/default/getEmbeddedHTML.ts b/packages/server/src/plugin/landingPage/default/getEmbeddedHTML.ts
index bc86d5e4a..475a7716a 100644
--- a/packages/server/src/plugin/landingPage/default/getEmbeddedHTML.ts
+++ b/packages/server/src/plugin/landingPage/default/getEmbeddedHTML.ts
@@ -138,7 +138,7 @@ export const getEmbeddedSandboxHTML = (
     runTelemetry: true,
     endpointIsEditable: false,
     initialState: {},
-    ...(typeof config.embed === 'boolean' ? {} : config.embed ?? {}),
+    ...(typeof config.embed === 'boolean' ? {} : (config.embed ?? {})),
   };
   const embeddedSandboxConfig = {
     target: '#embeddableSandbox',
diff --git a/packages/server/src/requestPipeline.ts b/packages/server/src/requestPipeline.ts
index b798cc181..b9b4b5542 100644
--- a/packages/server/src/requestPipeline.ts
+++ b/packages/server/src/requestPipeline.ts
@@ -188,11 +188,10 @@ export async function processGraphQLRequest<TContext extends BaseContext>(
   // syntactically correct, so this string should not be trusted as a valid
   // document until after it's parsed and validated.
   await Promise.all(
-    requestListeners.map(
-      (l) =>
-        l.didResolveSource?.(
-          requestContext as GraphQLRequestContextDidResolveSource<TContext>,
-        ),
+    requestListeners.map((l) =>
+      l.didResolveSource?.(
+        requestContext as GraphQLRequestContextDidResolveSource<TContext>,
+      ),
     ),
   );
 
@@ -323,11 +322,10 @@ export async function processGraphQLRequest<TContext extends BaseContext>(
 
   try {
     await Promise.all(
-      requestListeners.map(
-        (l) =>
-          l.didResolveOperation?.(
-            requestContext as GraphQLRequestContextDidResolveOperation<TContext>,
-          ),
+      requestListeners.map((l) =>
+        l.didResolveOperation?.(
+          requestContext as GraphQLRequestContextDidResolveOperation<TContext>,
+        ),
       ),
     );
   } catch (err: unknown) {
@@ -376,11 +374,10 @@ export async function processGraphQLRequest<TContext extends BaseContext>(
   } else {
     const executionListeners = (
       await Promise.all(
-        requestListeners.map(
-          (l) =>
-            l.executionDidStart?.(
-              requestContext as GraphQLRequestContextExecutionDidStart<TContext>,
-            ),
+        requestListeners.map((l) =>
+          l.executionDidStart?.(
+            requestContext as GraphQLRequestContextExecutionDidStart<TContext>,
+          ),
         ),
       )
     ).filter(isDefined);
@@ -392,9 +389,8 @@ export async function processGraphQLRequest<TContext extends BaseContext>(
       // symbol so it can be invoked by our `wrapField` method during execution.
       const invokeWillResolveField: GraphQLRequestExecutionListener<TContext>['willResolveField'] =
         (...args) =>
-          invokeSyncDidStartHook(
-            executionListeners,
-            (l) => l.willResolveField?.(...args),
+          invokeSyncDidStartHook(executionListeners, (l) =>
+            l.willResolveField?.(...args),
           );
 
       Object.defineProperty(
@@ -583,12 +579,11 @@ export async function processGraphQLRequest<TContext extends BaseContext>(
                   const { errors } = incrementalResult;
                   if (errors) {
                     await Promise.all(
-                      requestListeners.map(
-                        (l) =>
-                          l.didEncounterSubsequentErrors?.(
-                            requestContext as GraphQLRequestContextDidEncounterSubsequentErrors<TContext>,
-                            errors,
-                          ),
+                      requestListeners.map((l) =>
+                        l.didEncounterSubsequentErrors?.(
+                          requestContext as GraphQLRequestContextDidEncounterSubsequentErrors<TContext>,
+                          errors,
+                        ),
                       ),
                     );
 
@@ -608,12 +603,11 @@ export async function processGraphQLRequest<TContext extends BaseContext>(
 
       // Invoke hook, which is allowed to mutate payload if it really wants to.
       await Promise.all(
-        requestListeners.map(
-          (l) =>
-            l.willSendSubsequentPayload?.(
-              requestContext as GraphQLRequestContextWillSendSubsequentPayload<TContext>,
-              payload,
-            ),
+        requestListeners.map((l) =>
+          l.willSendSubsequentPayload?.(
+            requestContext as GraphQLRequestContextWillSendSubsequentPayload<TContext>,
+            payload,
+          ),
         ),
       );
 
@@ -623,11 +617,10 @@ export async function processGraphQLRequest<TContext extends BaseContext>(
 
   async function invokeWillSendResponse() {
     await Promise.all(
-      requestListeners.map(
-        (l) =>
-          l.willSendResponse?.(
-            requestContext as GraphQLRequestContextWillSendResponse<TContext>,
-          ),
+      requestListeners.map((l) =>
+        l.willSendResponse?.(
+          requestContext as GraphQLRequestContextWillSendResponse<TContext>,
+        ),
       ),
     );
   }
@@ -638,11 +631,10 @@ export async function processGraphQLRequest<TContext extends BaseContext>(
     requestContext.errors = errors;
 
     return await Promise.all(
-      requestListeners.map(
-        (l) =>
-          l.didEncounterErrors?.(
-            requestContext as GraphQLRequestContextDidEncounterErrors<TContext>,
-          ),
+      requestListeners.map((l) =>
+        l.didEncounterErrors?.(
+          requestContext as GraphQLRequestContextDidEncounterErrors<TContext>,
+        ),
       ),
     );
   }
diff --git a/packages/server/src/utils/resolvable.ts b/packages/server/src/utils/resolvable.ts
new file mode 100644
index 000000000..f279ed448
--- /dev/null
+++ b/packages/server/src/utils/resolvable.ts
@@ -0,0 +1,30 @@
+// Copyright 2019 Joseph Gentle
+
+// Permission to use, copy, modify, and / or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+// FITNESS.IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+//   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THIS SOFTWARE.
+
+export type Resolvable<T> = Promise<T> & {
+  resolve: (t: T) => void;
+  reject: (e: any) => void;
+};
+
+export default <T = void>(): Resolvable<T> => {
+  let resolve: (val: T) => void;
+  let reject: (err: any) => void;
+  const promise = new Promise<T>((_resolve, _reject) => {
+    resolve = _resolve;
+    reject = _reject;
+  }) as Resolvable<T>;
+  promise.resolve = resolve!;
+  promise.reject = reject!;
+  return promise;
+};


Test patch:
diff --git a/packages/integration-testsuite/package.json b/packages/integration-testsuite/package.json
index a65453fa8..37abe995c 100644
--- a/packages/integration-testsuite/package.json
+++ b/packages/integration-testsuite/package.json
@@ -32,7 +32,6 @@
     "@apollo/usage-reporting-protobuf": "^4.1.1",
     "@apollo/utils.createhash": "^2.0.0",
     "@apollo/utils.keyvaluecache": "^2.1.0",
-    "@josephg/resolvable": "^1.0.1",
     "express": "^4.18.1",
     "graphql-http": "1.22.0",
     "graphql-tag": "^2.12.6",
diff --git a/packages/integration-testsuite/src/apolloServerTests.ts b/packages/integration-testsuite/src/apolloServerTests.ts
index 102db81bb..e57c41e11 100644
--- a/packages/integration-testsuite/src/apolloServerTests.ts
+++ b/packages/integration-testsuite/src/apolloServerTests.ts
@@ -37,7 +37,7 @@ import {
 } from '@apollo/server';
 import fetch, { type Headers } from 'node-fetch';
 
-import resolvable, { type Resolvable } from '@josephg/resolvable';
+import resolvable, { type Resolvable } from './resolvable.js';
 import type { AddressInfo } from 'net';
 import request, { type Response } from 'supertest';
 import { InMemoryLRUCache } from '@apollo/utils.keyvaluecache';
diff --git a/packages/integration-testsuite/src/httpServerTests.ts b/packages/integration-testsuite/src/httpServerTests.ts
index a431901c6..9a1977e78 100644
--- a/packages/integration-testsuite/src/httpServerTests.ts
+++ b/packages/integration-testsuite/src/httpServerTests.ts
@@ -4,7 +4,7 @@
 // function. Newer tests have generally been added to the apolloServerTests.ts
 // file.
 import { createHash } from '@apollo/utils.createhash';
-import resolvable, { type Resolvable } from '@josephg/resolvable';
+import resolvable, { type Resolvable } from './resolvable.js';
 import {
   BREAK,
   type DocumentNode,
diff --git a/packages/integration-testsuite/src/resolvable.ts b/packages/integration-testsuite/src/resolvable.ts
new file mode 100644
index 000000000..f279ed448
--- /dev/null
+++ b/packages/integration-testsuite/src/resolvable.ts
@@ -0,0 +1,30 @@
+// Copyright 2019 Joseph Gentle
+
+// Permission to use, copy, modify, and / or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+// FITNESS.IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+//   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THIS SOFTWARE.
+
+export type Resolvable<T> = Promise<T> & {
+  resolve: (t: T) => void;
+  reject: (e: any) => void;
+};
+
+export default <T = void>(): Resolvable<T> => {
+  let resolve: (val: T) => void;
+  let reject: (err: any) => void;
+  const promise = new Promise<T>((_resolve, _reject) => {
+    resolve = _resolve;
+    reject = _reject;
+  }) as Resolvable<T>;
+  promise.resolve = resolve!;
+  promise.reject = reject!;
+  return promise;
+};
diff --git a/packages/server/src/__tests__/express4/expressSpecific.test.ts b/packages/server/src/__tests__/express4/expressSpecific.test.ts
index 70eddeaad..f175744c0 100644
--- a/packages/server/src/__tests__/express4/expressSpecific.test.ts
+++ b/packages/server/src/__tests__/express4/expressSpecific.test.ts
@@ -4,7 +4,7 @@ import compression, { filter as defaultFilter } from 'compression';
 import { ApolloServer, BaseContext } from '../../index.js';
 import { expressMiddleware } from '../../express4/index.js';
 import { it, expect } from '@jest/globals';
-import resolvable from '@josephg/resolvable';
+import resolvable from '../../utils/resolvable.js';
 import cors from 'cors';
 
 it('gives helpful error if json middleware is not installed', async () => {
diff --git a/packages/server/src/__tests__/plugin/drainHttpServer/stoppable.test.ts b/packages/server/src/__tests__/plugin/drainHttpServer/stoppable.test.ts
index 4f26e35a2..bed9d2dfe 100644
--- a/packages/server/src/__tests__/plugin/drainHttpServer/stoppable.test.ts
+++ b/packages/server/src/__tests__/plugin/drainHttpServer/stoppable.test.ts
@@ -36,7 +36,7 @@ import path from 'path';
 import type { AddressInfo } from 'net';
 import { describe, it, expect, afterEach, beforeEach } from '@jest/globals';
 import { AbortController } from 'node-abort-controller';
-import resolvable, { Resolvable } from '@josephg/resolvable';
+import resolvable, { Resolvable } from '../../../utils/resolvable.js';
 
 function port(s: http.Server) {
   return (s.address() as AddressInfo).port;
@@ -141,11 +141,8 @@ Object.keys(schemes).forEach((schemeName) => {
         // idle connections in these versions. However, `Stopper` _is_ still
         // useful for gracefully finishing in-flight requests within the timeout
         // (and aborting requests beyond the timeout).
-        // Update: Node 18.19+ had this change backported, so the comment from above
-        // applies to Node 18.19+ as well.
-        const isNode18 = !!process.version.match(/^v18\./);
-        const isNode20 = !!process.version.match(/^v20\./);
-        expect(closed).toBe(isNode18 || isNode20 ? 1 : 0);
+        const isNode20orGreater = !!process.version.match(/^v2\d\./);
+        expect(closed).toBe(isNode20orGreater ? 1 : 0);
       });
 
       // This test specifically added for Node 20 fails for Node 14. Just going
diff --git a/smoke-test/package-lock.json b/smoke-test/package-lock.json
index 8a1ea42fa..c4c337246 100644
--- a/smoke-test/package-lock.json
+++ b/smoke-test/package-lock.json
@@ -5,11 +5,11 @@
   "packages": {
     "": {
       "dependencies": {
-        "graphql": "16.8.1",
-        "make-fetch-happen": "13.0.0"
+        "graphql": "16.9.0",
+        "make-fetch-happen": "13.0.1"
       },
       "devDependencies": {
-        "@rollup/plugin-commonjs": "25.0.7",
+        "@rollup/plugin-commonjs": "25.0.8",
         "@rollup/plugin-json": "6.1.0",
         "@rollup/plugin-node-resolve": "15.2.3",
         "@types/make-fetch-happen": "10.0.4",
@@ -73,10 +73,11 @@
       }
     },
     "node_modules/@rollup/plugin-commonjs": {
-      "version": "25.0.7",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz",
-      "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==",
+      "version": "25.0.8",
+      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz",
+      "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@rollup/pluginutils": "^5.0.1",
         "commondir": "^1.0.1",
@@ -564,9 +565,10 @@
       }
     },
     "node_modules/graphql": {
-      "version": "16.8.1",
-      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz",
-      "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==",
+      "version": "16.9.0",
+      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz",
+      "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==",
+      "license": "MIT",
       "engines": {
         "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
       }
@@ -759,9 +761,10 @@
       }
     },
     "node_modules/make-fetch-happen": {
-      "version": "13.0.0",
-      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz",
-      "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==",
+      "version": "13.0.1",
+      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz",
+      "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==",
+      "license": "ISC",
       "dependencies": {
         "@npmcli/agent": "^2.0.0",
         "cacache": "^18.0.0",
@@ -772,6 +775,7 @@
         "minipass-flush": "^1.0.5",
         "minipass-pipeline": "^1.2.4",
         "negotiator": "^0.6.3",
+        "proc-log": "^4.2.0",
         "promise-retry": "^2.0.1",
         "ssri": "^10.0.0"
       },
@@ -1035,6 +1039,15 @@
         "url": "https://github.com/sponsors/jonschlinkert"
       }
     },
+    "node_modules/proc-log": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz",
+      "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==",
+      "license": "ISC",
+      "engines": {
+        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+      }
+    },
     "node_modules/promise-retry": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
diff --git a/smoke-test/package.json b/smoke-test/package.json
index 61702f9a4..044eade78 100644
--- a/smoke-test/package.json
+++ b/smoke-test/package.json
@@ -1,10 +1,10 @@
 {
   "dependencies": {
-    "graphql": "16.8.1",
-    "make-fetch-happen": "13.0.0"
+    "graphql": "16.9.0",
+    "make-fetch-happen": "13.0.1"
   },
   "devDependencies": {
-    "@rollup/plugin-commonjs": "25.0.7",
+    "@rollup/plugin-commonjs": "25.0.8",
     "@rollup/plugin-json": "6.1.0",
     "@rollup/plugin-node-resolve": "15.2.3",
     "@types/make-fetch-happen": "10.0.4",