From ff923971e296092eb06737f8cd847a794e37ad23 Mon Sep 17 00:00:00 2001 From: Phil Pluckthun Date: Thu, 16 Mar 2023 02:25:36 +0000 Subject: [PATCH 1/4] Remove getOperationName export from @urql/core --- packages/core/src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 8a3ac1e9ca..aa6efbb488 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -14,5 +14,4 @@ export { formatDocument, maskTypename, makeOperation, - getOperationName, } from './utils'; From 3cc2ccb5bbf446be3081c7dd74fd8ac142f01590 Mon Sep 17 00:00:00 2001 From: Phil Pluckthun Date: Thu, 16 Mar 2023 02:26:08 +0000 Subject: [PATCH 2/4] Remove getOperationName usage in @urql/exchange-execute --- exchanges/execute/src/execute.test.ts | 7 ++----- exchanges/execute/src/execute.ts | 12 ++++++++++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/exchanges/execute/src/execute.test.ts b/exchanges/execute/src/execute.test.ts index c4070fd165..bae9ad0158 100644 --- a/exchanges/execute/src/execute.test.ts +++ b/exchanges/execute/src/execute.test.ts @@ -33,7 +33,6 @@ import { makeErrorResult, makeOperation, Client, - getOperationName, OperationResult, } from '@urql/core'; @@ -45,10 +44,8 @@ const exchangeArgs = { client: {}, } as any; -const expectedQueryOperationName = getOperationName(queryOperation.query); -const expectedSubscribeOperationName = getOperationName( - subscriptionOperation.query -); +const expectedQueryOperationName = 'getUser'; +const expectedSubscribeOperationName = 'subscribeToUser'; const fetchMock = (global as any).fetch as Mock; const mockHttpResponseData = { key: 'value' }; diff --git a/exchanges/execute/src/execute.ts b/exchanges/execute/src/execute.ts index ef7121a6a4..9eb41f550d 100644 --- a/exchanges/execute/src/execute.ts +++ b/exchanges/execute/src/execute.ts @@ -17,6 +17,7 @@ import { subscribe, ExecutionArgs, SubscriptionArgs, + Kind, } from 'graphql'; import { @@ -27,7 +28,6 @@ import { mergeResultPatch, Operation, OperationResult, - getOperationName, } from '@urql/core'; export interface ExecuteExchangeArgs { @@ -150,6 +150,14 @@ export const executeExchange = ({ } } + let operationName: string | undefined; + for (const node of operation.query.definitions) { + if (node.kind === Kind.OPERATION_DEFINITION) { + operationName = node.name ? node.name.value : undefined; + break; + } + } + return pipe( makeExecuteSource(operation, { schema, @@ -157,7 +165,7 @@ export const executeExchange = ({ rootValue, contextValue, variableValues, - operationName: getOperationName(operation.query), + operationName, fieldResolver, typeResolver, subscribeFieldResolver, From 6b921de766d35ae3b6fe48e6f21b522256c29c57 Mon Sep 17 00:00:00 2001 From: Phil Pluckthun Date: Thu, 16 Mar 2023 02:27:57 +0000 Subject: [PATCH 3/4] Add changeset --- .changeset/young-lamps-help.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/young-lamps-help.md diff --git a/.changeset/young-lamps-help.md b/.changeset/young-lamps-help.md new file mode 100644 index 0000000000..a1880c877f --- /dev/null +++ b/.changeset/young-lamps-help.md @@ -0,0 +1,6 @@ +--- +'@urql/core': major +'@urql/exchange-execute': minor +--- + +Remove `getOperationName` export from `@urql/core` From af5b90b7bb9aec77638a44671e9cddff531c16e1 Mon Sep 17 00:00:00 2001 From: Phil Pluckthun Date: Thu, 16 Mar 2023 02:28:47 +0000 Subject: [PATCH 4/4] Fix getOperationName implementation --- .changeset/quick-seahorses-cross.md | 5 +++++ packages/core/src/utils/request.ts | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/quick-seahorses-cross.md diff --git a/.changeset/quick-seahorses-cross.md b/.changeset/quick-seahorses-cross.md new file mode 100644 index 0000000000..1353a1e7b4 --- /dev/null +++ b/.changeset/quick-seahorses-cross.md @@ -0,0 +1,5 @@ +--- +'@urql/core': patch +--- + +Fix incorrect operation name being picked from queries that contain multiple operations. diff --git a/packages/core/src/utils/request.ts b/packages/core/src/utils/request.ts index 468b2cf804..740576671b 100644 --- a/packages/core/src/utils/request.ts +++ b/packages/core/src/utils/request.ts @@ -169,8 +169,8 @@ export const createRequest = < */ export const getOperationName = (query: DocumentNode): string | undefined => { for (const node of query.definitions) { - if (node.kind === Kind.OPERATION_DEFINITION && node.name) { - return node.name.value; + if (node.kind === Kind.OPERATION_DEFINITION) { + return node.name ? node.name.value : undefined; } } };