Mirror: The highly customizable and versatile GraphQL client with which you add on features like normalized caching as you grow.
at main 998 B view raw
1import * as InMemoryData from '../store/data'; 2import { keyOfField } from '../store/keys'; 3import type { FieldArgs } from '../types'; 4 5interface PartialFieldInfo { 6 fieldKey: string; 7} 8 9export const invalidateEntity = ( 10 entityKey: string, 11 field?: string, 12 args?: FieldArgs 13) => { 14 const fields: PartialFieldInfo[] = field 15 ? [{ fieldKey: keyOfField(field, args) }] 16 : InMemoryData.inspectFields(entityKey); 17 18 for (let i = 0, l = fields.length; i < l; i++) { 19 const { fieldKey } = fields[i]; 20 if (InMemoryData.readLink(entityKey, fieldKey) !== undefined) { 21 InMemoryData.writeLink(entityKey, fieldKey, undefined); 22 } else { 23 InMemoryData.writeRecord(entityKey, fieldKey, undefined); 24 } 25 } 26}; 27 28export const invalidateType = ( 29 typename: string, 30 excludedEntities: string[] 31) => { 32 const types = InMemoryData.getEntitiesForType(typename); 33 for (const entity of types) { 34 if (excludedEntities.includes(entity)) continue; 35 invalidateEntity(entity); 36 } 37};