From 972422d386743e0ad3f435a1f43e7d2af55e78b8 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Thu, 23 Apr 2020 21:21:10 +0200 Subject: [PATCH] popping debug nodes --- exchanges/graphcache/src/helpers/help.ts | 2 ++ exchanges/graphcache/src/operations/query.ts | 18 ++++++++++++++---- exchanges/graphcache/src/operations/shared.ts | 6 +++++- exchanges/graphcache/src/operations/write.ts | 17 ++++++++++++++++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/exchanges/graphcache/src/helpers/help.ts b/exchanges/graphcache/src/helpers/help.ts index e6bb146e24..39a6004079 100644 --- a/exchanges/graphcache/src/helpers/help.ts +++ b/exchanges/graphcache/src/helpers/help.ts @@ -32,6 +32,8 @@ const cache = new Set(); export const currentDebugStack: string[] = []; +export const popDebugNode = () => currentDebugStack.pop(); + export const pushDebugNode = (typename: void | string, node: DebugNode) => { let identifier = ''; if (node.kind === Kind.INLINE_FRAGMENT) { diff --git a/exchanges/graphcache/src/operations/query.ts b/exchanges/graphcache/src/operations/query.ts index 7807b1a9c4..331fb66b89 100644 --- a/exchanges/graphcache/src/operations/query.ts +++ b/exchanges/graphcache/src/operations/query.ts @@ -34,7 +34,7 @@ import { } from '../store'; import * as InMemoryData from '../store/data'; -import { warn, pushDebugNode } from '../helpers/help'; +import { warn, pushDebugNode, popDebugNode } from '../helpers/help'; import { Context, @@ -94,6 +94,10 @@ export const read = ( ? readRoot(ctx, rootKey, rootSelect, data) : readSelection(ctx, rootKey, rootSelect, data); + if (process.env.NODE_ENV !== 'production') { + popDebugNode(); + } + return { dependencies: getCurrentDependencies(), partial: data === undefined ? false : ctx.partial, @@ -209,9 +213,15 @@ export const readFragment = ( entityKey ); - return ( - readSelection(ctx, entityKey, getSelectionSet(fragment), {} as Data) || null - ); + const result = + readSelection(ctx, entityKey, getSelectionSet(fragment), {} as Data) || + null; + + if (process.env.NODE_ENV !== 'production') { + popDebugNode(); + } + + return result; }; const readSelection = ( diff --git a/exchanges/graphcache/src/operations/shared.ts b/exchanges/graphcache/src/operations/shared.ts index da7c8f4771..30e5992c70 100644 --- a/exchanges/graphcache/src/operations/shared.ts +++ b/exchanges/graphcache/src/operations/shared.ts @@ -7,7 +7,7 @@ import { SelectionSet, isFieldNode, } from '../ast'; -import { warn, pushDebugNode } from '../helpers/help'; +import { warn, pushDebugNode, popDebugNode } from '../helpers/help'; import { hasField } from '../store/data'; import { Store, keyOfField } from '../store'; @@ -151,6 +151,10 @@ export class SelectionIterator { this.indexStack.push(0); this.selectionStack.push(getSelectionSet(fragmentNode)); } + + if (process.env.NODE_ENV !== 'production') { + popDebugNode(); + } } continue; diff --git a/exchanges/graphcache/src/operations/write.ts b/exchanges/graphcache/src/operations/write.ts index 912647fcf6..8296fab2bf 100644 --- a/exchanges/graphcache/src/operations/write.ts +++ b/exchanges/graphcache/src/operations/write.ts @@ -13,7 +13,7 @@ import { getFieldAlias, } from '../ast'; -import { invariant, warn, pushDebugNode } from '../helpers/help'; +import { invariant, warn, pushDebugNode, popDebugNode } from '../helpers/help'; import { NullArray, Variables, Data, Link, OperationRequest } from '../types'; @@ -75,6 +75,11 @@ export const startWrite = ( } writeSelection(ctx, operationName, getSelectionSet(operation), data); + + if (process.env.NODE_ENV !== 'production') { + popDebugNode(); + } + return result; }; @@ -113,6 +118,11 @@ export const writeOptimistic = ( ); writeSelection(ctx, operationName, getSelectionSet(operation), result.data!); + + if (process.env.NODE_ENV !== 'production') { + popDebugNode(); + } + clearDataState(); return result; }; @@ -160,6 +170,10 @@ export const writeFragment = ( ); writeSelection(ctx, entityKey, getSelectionSet(fragment), writeData); + + if (process.env.NODE_ENV !== 'production') { + popDebugNode(); + } }; const writeSelection = ( @@ -221,6 +235,7 @@ const writeSelection = ( if (ctx.optimistic && isRoot) { const resolver = ctx.store.optimisticMutations[fieldName]; + if (!resolver) continue; // We have to update the context to reflect up-to-date ResolveInfo updateContext(ctx, typename, typename, fieldKey, fieldName);