From fa18b0a36b67a26479cad4fad63cabcaf58e1c1b Mon Sep 17 00:00:00 2001 From: Kamil Kisiela Date: Fri, 29 Sep 2023 12:35:41 +0200 Subject: [PATCH] Detect missing DocumentNode in Apollo Server (#2979) --- .changeset/fair-beds-beg.md | 5 +++++ packages/libraries/client/src/apollo.ts | 20 +++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .changeset/fair-beds-beg.md diff --git a/.changeset/fair-beds-beg.md b/.changeset/fair-beds-beg.md new file mode 100644 index 0000000000..d666bf3f22 --- /dev/null +++ b/.changeset/fair-beds-beg.md @@ -0,0 +1,5 @@ +--- +'@graphql-hive/client': patch +--- + +Detect missing DocumentNode in Apollo Server diff --git a/packages/libraries/client/src/apollo.ts b/packages/libraries/client/src/apollo.ts index fd681ec59d..7da1e5e0db 100644 --- a/packages/libraries/client/src/apollo.ts +++ b/packages/libraries/client/src/apollo.ts @@ -176,6 +176,15 @@ export function hiveApollo(clientOrOptions: HiveClient | HivePluginOptions): Apo if (isLegacyV3) { return Promise.resolve({ async willSendResponse(ctx) { + if (!ctx.document) { + const details = ctx.operationName ? `operationName: ${ctx.operationName}` : ''; + complete(args, { + action: 'abort', + reason: 'Document is not available' + (details ? ` (${details})` : ''), + }); + return; + } + doc = ctx.document!; complete(args, ctx.response as any); }, @@ -185,7 +194,16 @@ export function hiveApollo(clientOrOptions: HiveClient | HivePluginOptions): Apo // v4 return Promise.resolve({ async willSendResponse(ctx) { - doc = ctx.document!; + if (!ctx.document) { + const details = ctx.operationName ? `operationName: ${ctx.operationName}` : ''; + complete(args, { + action: 'abort', + reason: 'Document is not available' + (details ? ` (${details})` : ''), + }); + return; + } + + doc = ctx.document; if (ctx.response.body.kind === 'incremental') { complete(args, { action: 'abort',