@graphql-box/cache-manager 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../cache-manager/src//constants.ts","../cache-manager/src//debug/logCacheEntry.ts","../cache-manager/src//debug/logCacheQuery.ts","../cache-manager/src//debug/logPartialCompiled.ts","../cache-manager/src//helpers/areOnlyPopulatedFieldsTypeIdKeys.ts","../cache-manager/src//helpers/mergeObjects.ts","../cache-manager/src//helpers/combineData.ts","../cache-manager/src//helpers/deriveOpCacheability.ts","../cache-manager/src//helpers/filterOutPropsWithArgsOrDirectives.ts","../cache-manager/src//helpers/createFragmentSpreadChecklist.ts","../cache-manager/src//helpers/checkFieldPathChecklist.ts","../cache-manager/src//helpers/filterFragmentSpreads.ts","../cache-manager/src//helpers/filterIDsAndTypeNames.ts","../cache-manager/src//helpers/filterInlineFragments.ts","../cache-manager/src//helpers/filterField.ts","../cache-manager/src//helpers/filterFragmentDefinitions.ts","../cache-manager/src//helpers/filterQuery.ts","../cache-manager/src//helpers/getDataValue.ts","../cache-manager/src//helpers/hasTypename.ts","../cache-manager/src//helpers/isLastResponseChunk.ts","../cache-manager/src//helpers/isNotLastResponseChunk.ts","../cache-manager/src//helpers/isNotResponseChunk.ts","../cache-manager/src//helpers/mergeResponseDataSets.ts","../cache-manager/src//helpers/normalizePatchResponseData.ts","../cache-manager/src//helpers/validTypeIdValue.ts","../cache-manager/src//main.ts"],"sourcesContent":["export const METADATA = 'metadata' as const;\nexport const CACHE_CONTROL = 'cacheControl' as const;\nexport const NO_CACHE = 'noCache' as const;\n\nexport const HEADER_CACHE_CONTROL = 'cache-control' as const;\nexport const HEADER_NO_CACHE = 'no-cache' as const;\n","import { CACHE_ENTRY_ADDED, type CacheTypes, type CachemapOptions, type RequestOptions } from '@graphql-box/core';\nimport type { CacheManagerContext, CacheManagerDef } from '../types.ts';\n\ntype Descriptor = (\n cacheType: CacheTypes,\n hash: string,\n value: unknown,\n cachemapOptions: CachemapOptions,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string }\n) => Promise<void>;\n\nexport const logCacheEntry = () => {\n return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {\n const method = descriptor.value;\n\n if (!method) {\n return;\n }\n\n descriptor.value = async function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {\n return new Promise<void>(resolve => {\n void (async () => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[5];\n\n if (!debugManager) {\n await method.apply(this, args);\n resolve();\n return;\n }\n\n const startTime = debugManager.now();\n await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve();\n\n const payload = {\n cacheType: args[0],\n cachemapOptions: args[3],\n context: otherContext,\n options: args[4],\n requestHash: args[1],\n stats: { duration, endTime, startTime },\n value: args[2],\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.log(CACHE_ENTRY_ADDED, payload);\n })();\n });\n };\n };\n};\n","import { CACHE_ENTRY_QUERIED, type CacheTypes, type RequestOptions } from '@graphql-box/core';\nimport type { CacheManagerContext, CacheManagerDef } from '../types.ts';\n\ntype Descriptor = (\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string }\n) => Promise<never | undefined>;\n\nexport const logCacheQuery = () => {\n return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {\n const method = descriptor.value;\n\n if (!method) {\n return;\n }\n\n descriptor.value = async function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {\n return new Promise(resolve => {\n void (async () => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[3];\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n const payload = {\n cacheType: args[0],\n context: otherContext,\n options: args[2],\n requestHash: args[1],\n result,\n stats: { duration, endTime, startTime },\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.log(CACHE_ENTRY_QUERIED, payload);\n })();\n });\n };\n };\n};\n","import { PARTIAL_QUERY_COMPILED, type RequestOptions } from '@graphql-box/core';\nimport type { CacheManagerContext, CacheManagerDef, PartialQueryResponse } from '../types.ts';\n\ntype Descriptor = (\n hash: string,\n partialQueryResponse: PartialQueryResponse,\n options: RequestOptions,\n context: CacheManagerContext\n) => void;\n\nexport const logPartialCompiled = () => {\n return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {\n const method = descriptor.value;\n\n if (!method) {\n return;\n }\n\n descriptor.value = function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {\n const { debugManager, ...otherContext } = args[3];\n\n if (!debugManager) {\n method.apply(this, args);\n return;\n }\n\n const startTime = debugManager.now();\n method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n\n debugManager.log(PARTIAL_QUERY_COMPILED, {\n context: otherContext,\n options: args[2],\n requestHash: args[0],\n result: args[1],\n stats: { duration, endTime, startTime },\n });\n };\n };\n};\n","import type { PlainData } from '@graphql-box/core';\nimport { isArray, isPlainObject } from '@graphql-box/helpers';\nimport { isNumber, isString } from 'lodash-es';\n\nconst checkValue = (value: unknown, typeIDKey: string): boolean => {\n if (isArray(value)) {\n return value.reduce<boolean>((acc, entry) => {\n if (!acc) {\n return false;\n }\n\n return checkValue(entry, typeIDKey);\n }, true);\n }\n\n if (isPlainObject(value)) {\n return recursivelyCheckProps(value, typeIDKey);\n }\n\n return false;\n};\n\nconst recursivelyCheckProps = (data: PlainData, typeIDKey: string): boolean => {\n const keys = isPlainObject(data) ? Object.keys(data) : [...data.keys()];\n\n if (keys.length === 1 && isPlainObject(data) && !!data[typeIDKey]) {\n return true;\n }\n\n return keys.reduce<boolean>((acc, key) => {\n if (!acc) {\n return false;\n }\n\n if (isNumber(key) && isArray(data)) {\n return checkValue(data[key], typeIDKey);\n } else if (isString(key) && isPlainObject(data)) {\n return checkValue(data[key], typeIDKey);\n }\n\n return acc;\n }, true);\n};\n\nexport const areOnlyPopulatedFieldsTypeIdKeys = (data: PlainData, typeIDKey: string) => {\n return recursivelyCheckProps(data, typeIDKey);\n};\n","import { isPlainObject, mergeObjects } from '@graphql-box/helpers';\n\nexport const mergeDataSets = <T extends object>(obj: T, source: T, typeIDKey: string): T => {\n return mergeObjects<T>(obj, source, (_key: string, value: unknown): string | number | undefined => {\n return isPlainObject(value) && value[typeIDKey] ? (value[typeIDKey] as string | number) : undefined;\n });\n};\n","import { isObjectLike } from '@graphql-box/helpers';\nimport { mergeDataSets } from './mergeObjects.ts';\n\nexport const combineDataSets = (dataSetA: unknown, dataSetB: unknown, typeIDKey: string) => {\n if (!dataSetA && dataSetB) {\n return dataSetB;\n }\n\n if (isObjectLike(dataSetA) && isObjectLike(dataSetB)) {\n return mergeDataSets(dataSetA, dataSetB, typeIDKey);\n }\n\n return dataSetA;\n};\n","import { type DehydratedCacheMetadata } from '@graphql-box/core';\nimport { Cacheability } from 'cacheability';\nimport { isEmpty } from 'lodash-es';\nimport { HEADER_CACHE_CONTROL } from '../constants.ts';\n\nexport type Params = {\n _cacheMetadata?: DehydratedCacheMetadata;\n fallback: string;\n headers?: Headers;\n};\n\nexport const deriveOpCacheability = ({ _cacheMetadata, fallback, headers }: Params): Cacheability => {\n if (_cacheMetadata && !isEmpty(_cacheMetadata)) {\n const [first, ...rest] = Object.values(_cacheMetadata);\n\n return new Cacheability({\n metadata: rest.reduce((acc, metadata) => {\n if (!acc) {\n return metadata;\n }\n\n if (metadata.ttl < acc.ttl) {\n return metadata;\n }\n\n return acc;\n }, first),\n });\n }\n\n if (headers?.has(HEADER_CACHE_CONTROL)) {\n return new Cacheability({ headers });\n }\n\n return new Cacheability({ cacheControl: fallback });\n};\n","import { type PlainObject } from '@graphql-box/core';\nimport { type KeysAndPaths, buildFieldKeysAndPaths, getName, resolveFragments } from '@graphql-box/helpers';\nimport { type SelectionNode } from 'graphql';\nimport { keys } from 'lodash-es';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const filterOutPropsWithArgsOrDirectives = (\n fieldData: PlainObject,\n selectionNodes: readonly SelectionNode[],\n ancestorKeysAndPaths: KeysAndPaths,\n context: CacheManagerContext\n) => {\n const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);\n\n return keys(fieldData).reduce<PlainObject>((acc, key) => {\n const match = fieldAndTypeName.find(({ fieldNode }) => getName(fieldNode) === key);\n\n if (match) {\n const { requestFieldPath } = buildFieldKeysAndPaths(match.fieldNode, ancestorKeysAndPaths, context);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!fieldTypeInfo?.hasArguments && !fieldTypeInfo?.hasDirectives) {\n acc[key] = fieldData[key];\n }\n }\n\n return acc;\n }, {});\n};\n","import { type RequestData } from '@graphql-box/core';\nimport { keys } from 'lodash-es';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport type FragmentSpreadCheckist = Record<\n string,\n {\n deleted: number;\n paths: string[];\n total: number;\n }\n>;\n\nexport const createFragmentSpreadChecklist = ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>\n keys(fragmentDefinitions ?? {}).reduce<FragmentSpreadCheckist>((acc, name) => {\n acc[name] = { deleted: 0, paths: [], total: (request.match(new RegExp(`\\\\.\\\\.\\\\.${name}`, 'g')) ?? []).length };\n return acc;\n }, {});\n","import { type CheckFieldPathChecklistResult, type FieldPathChecklistValue } from '../types.ts';\n\nexport const checkFieldPathChecklist = (\n fieldPathChecklistValues: FieldPathChecklistValue[] | undefined,\n fieldTypeName: string | undefined\n): CheckFieldPathChecklistResult => {\n if (!fieldPathChecklistValues || fieldPathChecklistValues.length === 0) {\n return { hasData: false, typeUnused: !!fieldTypeName };\n }\n\n const [fieldPathChecklistValue] = fieldPathChecklistValues;\n\n if (fieldPathChecklistValue) {\n const { hasData, typeName } = fieldPathChecklistValue;\n const typeUnused = typeName ? typeName !== fieldTypeName : undefined;\n return { hasData, typeUnused };\n }\n\n return {\n hasData: fieldPathChecklistValues.some(({ hasData, typeName }) => typeName === fieldTypeName && hasData),\n typeUnused: !fieldPathChecklistValues.every(({ typeName }) => typeName === fieldTypeName),\n };\n};\n","import { deleteFragmentSpreads } from '@graphql-box/helpers';\nimport { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';\nimport { isEmpty } from 'lodash-es';\nimport { type FragmentSpreadFieldCounter } from '../types.ts';\nimport { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';\n\nexport const filterFragmentSpreads = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string\n) => {\n if (isEmpty(fragmentSpreadFieldCounter)) {\n return;\n }\n\n for (const key of Object.keys(fragmentSpreadFieldCounter)) {\n const checklist = fragmentSpreadChecklist[key];\n\n if (!checklist) {\n continue;\n }\n\n checklist.paths.push(ancestorRequestFieldPath);\n const { hasData, total } = fragmentSpreadFieldCounter[key]!;\n\n if (hasData === total) {\n deleteFragmentSpreads(field, key);\n checklist.deleted += 1;\n }\n }\n};\n","import { TYPE_NAME_KEY } from '@graphql-box/core';\nimport { deleteChildFields, getChildFields, getName } from '@graphql-box/helpers';\nimport { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const filterIDsAndTypeNames = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext\n) => {\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length > 3) {\n return false;\n }\n\n const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode)!);\n\n if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {\n deleteChildFields(\n field,\n fieldsAndTypeNames.map(({ fieldNode }) => fieldNode)\n );\n\n return true;\n }\n\n if ((fieldNames.length === 1 && fieldNames[0] === typeIDKey) || fieldNames[0] === TYPE_NAME_KEY) {\n const [fieldAndTypeName] = fieldsAndTypeNames;\n\n if (fieldAndTypeName) {\n const { fieldNode } = fieldAndTypeName;\n deleteChildFields(field, fieldNode);\n return true;\n }\n }\n\n return false;\n};\n","import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from '@graphql-box/helpers';\nimport { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const filterInlineFragments = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext\n) => {\n const inlineFragments = getInlineFragments(field);\n let filtered = false;\n\n for (const fragment of inlineFragments) {\n const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length === 0) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n continue;\n }\n\n const [fieldAndTypeName] = fieldsAndTypeNames;\n\n if (fieldAndTypeName) {\n const { fieldNode } = fieldAndTypeName;\n\n if (getName(fieldNode) === typeIDKey) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n }\n }\n }\n\n return filtered;\n};\n","import { TYPE_NAME_KEY } from '@graphql-box/core';\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getName,\n hasChildFields,\n} from '@graphql-box/helpers';\nimport { type FieldNode, type FragmentDefinitionNode, Kind, type OperationDefinitionNode } from 'graphql';\nimport { type CacheManagerContext, type FieldPathChecklist, type FragmentSpreadFieldCounter } from '../types.ts';\nimport { checkFieldPathChecklist } from './checkFieldPathChecklist.ts';\nimport { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';\nimport { filterFragmentSpreads } from './filterFragmentSpreads.ts';\nimport { filterIDsAndTypeNames } from './filterIDsAndTypeNames.ts';\nimport { filterInlineFragments } from './filterInlineFragments.ts';\n\nexport const filterField = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n context: CacheManagerContext\n): boolean => {\n const { fragmentDefinitions, typeIDKey } = context;\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return false;\n }\n\n const fragmentSpreadFieldCounter: FragmentSpreadFieldCounter = {};\n\n for (let index = fieldsAndTypeNames.length - 1; index >= 0; index -= 1) {\n const fieldAndTypeName = fieldsAndTypeNames[index];\n\n if (!fieldAndTypeName) {\n continue;\n }\n\n const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldAndTypeName;\n\n if (fragmentKind === Kind.FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {\n fragmentSpreadFieldCounter[fragmentName] = {\n hasData: 0,\n total: fragmentDefinitions?.[fragmentName]\n ? getChildFields(fragmentDefinitions[fragmentName]!, { fragmentDefinitions })?.length ?? 0\n : 0,\n };\n }\n\n const childFieldName = getName(childField);\n\n if (childFieldName === typeIDKey || childFieldName === TYPE_NAME_KEY) {\n continue;\n }\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n childField,\n {\n requestFieldPath: ancestorRequestFieldPath,\n },\n context\n );\n\n const { hasData, typeUnused } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);\n\n if (hasData || typeUnused) {\n if (fragmentKind === Kind.FRAGMENT_SPREAD && fragmentName) {\n const counter = fragmentSpreadFieldCounter[fragmentName];\n\n if (counter) {\n counter.hasData += 1;\n }\n } else if (!hasChildFields(childField, { fragmentDefinitions })) {\n deleteChildFields(field, childField);\n } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(field, childField);\n }\n }\n }\n\n filterFragmentSpreads(field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath);\n filterInlineFragments(field, context);\n filterIDsAndTypeNames(field, context);\n return !hasChildFields(field, { fragmentDefinitions });\n};\n","import { deleteFragmentDefinitions } from '@graphql-box/helpers';\nimport { type DocumentNode } from 'graphql';\nimport { keys } from 'lodash-es';\nimport { type CacheManagerContext, type FieldPathChecklist } from '../types.ts';\nimport { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';\nimport { filterField } from './filterField.ts';\n\nexport const filterFragmentDefinitions = (\n ast: DocumentNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n context: CacheManagerContext\n) => {\n const definitionsToFilter = keys(fragmentSpreadChecklist).reduce<{ name: string; path: string }[]>(\n (namesAndPaths, key) => {\n const checklist = fragmentSpreadChecklist[key];\n\n if (!checklist) {\n return namesAndPaths;\n }\n\n const { deleted, paths, total } = checklist;\n return deleted === 0 && total === 1 ? [...namesAndPaths, { name: key, path: paths[0]! }] : namesAndPaths;\n },\n []\n );\n\n const { fragmentDefinitions = {} } = context;\n\n for (const { name, path } of definitionsToFilter) {\n const fragmentDefinition = fragmentDefinitions[name];\n\n if (!fragmentDefinition) {\n continue;\n }\n\n filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);\n }\n\n const definitionsToDelete = keys(fragmentSpreadChecklist).reduce<string[]>((names, key) => {\n const checklist = fragmentSpreadChecklist[key];\n\n if (!checklist) {\n return names;\n }\n\n const { deleted, total } = checklist;\n return deleted > 0 && deleted === total ? [...names, key] : names;\n }, []);\n\n if (definitionsToDelete.length === 0) {\n return ast;\n }\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n","import { type RequestData } from '@graphql-box/core';\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getOperationDefinitions,\n} from '@graphql-box/helpers';\nimport { type CacheManagerContext, type CachedResponseData } from '../types.ts';\nimport { createFragmentSpreadChecklist } from './createFragmentSpreadChecklist.ts';\nimport { filterField } from './filterField.ts';\nimport { filterFragmentDefinitions } from './filterFragmentDefinitions.ts';\n\nexport const filterQuery = (\n requestData: RequestData,\n { fieldPathChecklist }: CachedResponseData,\n context: CacheManagerContext\n) => {\n const { ast } = requestData;\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n\n if (!queryNode) {\n return ast;\n }\n\n const { fragmentDefinitions, operation } = context;\n const fieldsAndTypeNames = getChildFields(queryNode, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return ast;\n }\n\n const fragmentSpreadChecklist = createFragmentSpreadChecklist(requestData, context);\n\n for (let index = fieldsAndTypeNames.length - 1; index >= 0; index -= 1) {\n const { fieldNode } = fieldsAndTypeNames[index]!;\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n fieldNode,\n {\n requestFieldPath: operation,\n },\n context\n );\n\n if (filterField(fieldNode, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(queryNode, fieldNode);\n }\n }\n\n context.queryFiltered = true;\n return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);\n};\n","import { isArray, isPlainObject } from '@graphql-box/helpers';\nimport { isNumber, isString } from 'lodash-es';\n\nexport const getDataValue = <T>(value: unknown, key: string | number): T | undefined => {\n if (isArray(value) && isNumber(key)) {\n return value[key] as T;\n }\n\n if (isPlainObject(value) && isString(key)) {\n return value[key] as T;\n }\n\n return;\n};\n","import { TYPE_NAME_KEY, type TypedData } from '@graphql-box/core';\nimport { isObjectLike } from '@graphql-box/helpers';\nimport { isString } from 'lodash-es';\n\nexport const hasTypename = (value: unknown): value is TypedData => {\n if (!isObjectLike(value)) {\n return false;\n }\n\n return TYPE_NAME_KEY in value && isString(value[TYPE_NAME_KEY]);\n};\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const isLastResponseChunk = (\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n) => context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths;\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const isNotLastResponseChunk = (\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n) => context.hasDeferOrStream && rawResponseData.hasNext;\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const isNotResponseChunk = (\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n) => !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths;\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { merge } from 'lodash-es';\n\nexport const mergeResponseDataSets = (responseDataSets: RawResponseDataWithMaybeCacheMetadata[]) => {\n return responseDataSets.reduce<RawResponseDataWithMaybeCacheMetadata>(\n (acc, dataSet, index) => {\n const { _cacheMetadata, data, hasNext, headers, paths } = dataSet;\n\n if (_cacheMetadata) {\n acc._cacheMetadata = acc._cacheMetadata ? { ...acc._cacheMetadata, ..._cacheMetadata } : _cacheMetadata;\n }\n\n acc.data = merge(acc.data, data);\n\n if (index === 0) {\n acc.headers = headers;\n }\n\n if (index === responseDataSets.length - 1) {\n acc.hasNext = hasNext;\n }\n\n if (paths) {\n if (!acc.paths) {\n acc.paths = [];\n }\n\n acc.paths.push(...paths);\n }\n\n return acc;\n },\n { data: {} }\n );\n};\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { isString, set } from 'lodash-es';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const normalizePatchResponseData = (\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n) => {\n if (!context.normalizePatchResponseData) {\n return rawResponseData;\n }\n\n const { data, paths, ...rest } = rawResponseData;\n\n if (!paths?.length || !isString(paths[0])) {\n return rawResponseData;\n }\n\n return {\n ...rest,\n data: set({}, paths[0], data),\n paths,\n };\n};\n","import { type FieldTypeInfo } from '@graphql-box/core';\nimport { isPlainObject } from '@graphql-box/helpers';\n\nexport const getValidTypeIdValue = (\n requestFieldPathData: unknown,\n { typeIDValue }: FieldTypeInfo,\n typeIDKey: string\n): string | number | undefined => {\n if (typeIDValue) {\n return typeIDValue;\n }\n\n if (isPlainObject(requestFieldPathData)) {\n return requestFieldPathData[typeIDKey] as string | number | undefined;\n }\n\n return;\n};\n","import { type Core } from '@cachemap/core';\nimport {\n type CacheMetadata,\n type CacheTypes,\n type CachemapOptions,\n DATA_ENTITIES,\n DEFAULT_TYPE_ID_KEY,\n type EntityData,\n type FieldTypeInfo,\n type PlainData,\n QUERY_RESPONSES,\n REQUEST_FIELD_PATHS,\n type RawResponseDataWithMaybeCacheMetadata,\n type RequestContext,\n type RequestData,\n type RequestOptions,\n type ResponseData,\n TYPE_NAME_KEY,\n} from '@graphql-box/core';\nimport {\n ArgsError,\n GroupedError,\n type KeysAndPaths,\n buildFieldKeysAndPaths,\n dehydrateCacheMetadata,\n getChildFields,\n getFragmentDefinitions,\n getOperationDefinitions,\n hasChildFields,\n hashRequest,\n isArray,\n isObjectLike,\n isPlainObject,\n iterateChildFields,\n rehydrateCacheMetadata,\n} from '@graphql-box/helpers';\nimport { Cacheability } from 'cacheability';\nimport { type FieldNode, Kind, OperationTypeNode, print } from 'graphql';\nimport { assign, cloneDeep, get, isEqual, isNumber, isUndefined, set, unset } from 'lodash-es';\nimport { CACHE_CONTROL, HEADER_NO_CACHE, METADATA, NO_CACHE } from './constants.ts';\nimport { logCacheEntry, logCacheQuery, logPartialCompiled } from './debug/index.ts';\nimport { areOnlyPopulatedFieldsTypeIdKeys } from './helpers/areOnlyPopulatedFieldsTypeIdKeys.ts';\nimport { combineDataSets } from './helpers/combineData.ts';\nimport { deriveOpCacheability } from './helpers/deriveOpCacheability.ts';\nimport { filterOutPropsWithArgsOrDirectives } from './helpers/filterOutPropsWithArgsOrDirectives.ts';\nimport { filterQuery } from './helpers/filterQuery.ts';\nimport { getDataValue } from './helpers/getDataValue.ts';\nimport { hasTypename } from './helpers/hasTypename.ts';\nimport { isLastResponseChunk } from './helpers/isLastResponseChunk.ts';\nimport { isNotLastResponseChunk } from './helpers/isNotLastResponseChunk.ts';\nimport { isNotResponseChunk } from './helpers/isNotResponseChunk.ts';\nimport { mergeDataSets } from './helpers/mergeObjects.ts';\nimport { mergeResponseDataSets } from './helpers/mergeResponseDataSets.ts';\nimport { normalizePatchResponseData } from './helpers/normalizePatchResponseData.ts';\nimport { getValidTypeIdValue } from './helpers/validTypeIdValue.ts';\nimport {\n type AnalyzeQueryResult,\n type AncestorKeysAndPaths,\n type CacheManagerContext,\n type CacheManagerDef,\n type CachedAncestorFieldData,\n type CachedResponseData,\n type CheckCacheEntryResult,\n type DataForCachingEntry,\n type FieldCount,\n type FieldPathChecklist,\n type MergedCachedFieldData,\n type PartialQueryResponse,\n type PartialQueryResponses,\n type QueryResponseCacheEntry,\n type ResponseDataForCaching,\n type TypenamesAndKind,\n type UserOptions,\n} from './types.ts';\n\nexport class CacheManager implements CacheManagerDef {\n private static _countFieldPathChecklist(fieldPathChecklist: FieldPathChecklist): FieldCount {\n const fieldCount: FieldCount = { missing: 0, total: 0 };\n\n for (const [, checklistValues] of fieldPathChecklist) {\n fieldCount.total += checklistValues.length;\n const missing = checklistValues.filter(({ hasData }) => !hasData);\n fieldCount.missing += missing.length;\n }\n\n return fieldCount;\n }\n\n private static _getFieldDataFromAncestor<T>(ancestorFieldData: unknown, propNameOrIndex: string | number) {\n const dataValue = getDataValue<T>(ancestorFieldData, propNameOrIndex);\n return isObjectLike(dataValue) ? cloneDeep(dataValue) : dataValue;\n }\n\n private static _getOperationCacheControl(cacheMetadata: CacheMetadata | undefined, operation: string): string {\n const defaultCacheControl = HEADER_NO_CACHE;\n\n if (!cacheMetadata) {\n return defaultCacheControl;\n }\n\n const cacheability = cacheMetadata.get(operation);\n return cacheability ? cacheability.printCacheControl() : defaultCacheControl;\n }\n\n private static _isNodeEntity(fieldTypeInfo?: FieldTypeInfo): boolean {\n if (!fieldTypeInfo) {\n return false;\n }\n\n const { isEntity, possibleTypes } = fieldTypeInfo;\n return isEntity || possibleTypes.some(type => !!type.isEntity);\n }\n\n private static _isNodeRequestFieldPath(fieldTypeInfo?: FieldTypeInfo): boolean {\n return (\n !!fieldTypeInfo &&\n (this._isNodeEntity(fieldTypeInfo) || fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives)\n );\n }\n\n private static _isValid(cacheability: Cacheability): boolean {\n const noCache = get(cacheability, [METADATA, CACHE_CONTROL, NO_CACHE], false);\n return !noCache && cacheability.checkTTL();\n }\n\n private static _mergeResponseCacheMetadata(\n cacheMetadata: CacheMetadata,\n partialQueryResponse?: PartialQueryResponse\n ): CacheMetadata {\n if (!partialQueryResponse) {\n return cacheMetadata;\n }\n\n return new Map([...partialQueryResponse.cacheMetadata, ...cacheMetadata]);\n }\n\n private static _setCachedData(\n responseData: unknown,\n { data }: MergedCachedFieldData,\n propNameOrIndex: string | number\n ): void {\n const setData = (value: unknown) => {\n if (isArray(responseData) && isNumber(propNameOrIndex)) {\n responseData[propNameOrIndex] = value;\n } else if (isPlainObject(responseData)) {\n responseData[propNameOrIndex] = value;\n }\n };\n\n if (!isObjectLike(data) && !isUndefined(data)) {\n setData(data);\n } else if (isArray(data)) {\n setData([]);\n } else if (isPlainObject(data)) {\n setData({});\n }\n }\n\n private static _setCachedResponseData(\n cachedFieldData: MergedCachedFieldData,\n { cacheMetadata, data, fieldPathChecklist }: CachedResponseData,\n { propNameOrIndex, requestFieldPath }: KeysAndPaths,\n typeNamesAndKind: TypenamesAndKind,\n _options: RequestOptions,\n { operation }: CacheManagerContext\n ) {\n CacheManager._setCacheMetadata(cacheMetadata, cachedFieldData.cacheability, requestFieldPath, operation);\n CacheManager._setFieldPathChecklist(fieldPathChecklist, cachedFieldData, requestFieldPath, typeNamesAndKind);\n CacheManager._setCachedData(data, cachedFieldData, propNameOrIndex);\n }\n\n private static _setCacheMetadata(\n cacheMetadata: CacheMetadata,\n cacheability: Cacheability | undefined,\n requestFieldPath: string,\n operation: string\n ): void {\n if (!cacheability) {\n return;\n }\n\n cacheMetadata.set(requestFieldPath, cacheability);\n const operationCacheability = cacheMetadata.get(operation);\n\n if (!operationCacheability || operationCacheability.metadata.ttl > cacheability.metadata.ttl) {\n cacheMetadata.set(operation, cacheability);\n }\n }\n\n private static _setFieldPathChecklist(\n fieldPathChecklist: FieldPathChecklist,\n { data }: MergedCachedFieldData,\n requestFieldPath: string,\n { dataTypename: dataTypeName, fieldTypename: fieldTypeName, fragmentKind, fragmentName }: TypenamesAndKind\n ): void {\n if (isUndefined(fieldTypeName) || fragmentKind === Kind.FRAGMENT_SPREAD) {\n if (fieldPathChecklist.has(requestFieldPath)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [{ fragmentKind, fragmentName, hasData: !isUndefined(data) }]);\n return;\n }\n\n if (dataTypeName !== fieldTypeName) {\n return;\n }\n\n const entry = fieldPathChecklist.get(requestFieldPath);\n const checklistValues = entry ?? [];\n\n if (checklistValues.some(({ typeName }) => typeName === dataTypeName)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [\n ...checklistValues,\n { fragmentKind, fragmentName, hasData: !isUndefined(data), typeName: dataTypeName },\n ]);\n }\n\n private _cache: Core;\n private _cascadeCacheControl: boolean;\n private _fallbackOperationCacheability: string;\n private _partialQueryResponses: PartialQueryResponses = new Map();\n private _responseChunksAwaitingCaching = new Map<string, RawResponseDataWithMaybeCacheMetadata[]>();\n private _typeCacheDirectives: Record<string, string>;\n private _typeIDKey: string;\n\n constructor(options: UserOptions) {\n const errors: ArgsError[] = [];\n\n if (!('cache' in options)) {\n errors.push(new ArgsError('@graphql-box/cache-manager expected cache to be in options.'));\n }\n\n if (!!options.typeCacheDirectives && !isPlainObject(options.typeCacheDirectives)) {\n const message = '@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object.';\n errors.push(new ArgsError(message));\n }\n\n if (errors.length > 0) {\n throw new GroupedError('@graphql-box/cache-manager argument validation errors.', errors);\n }\n\n this._cache = options.cache;\n this._cascadeCacheControl = options.cascadeCacheControl ?? false;\n this._fallbackOperationCacheability = options.fallbackOperationCacheability ?? NO_CACHE;\n this._typeCacheDirectives = options.typeCacheDirectives ?? {};\n this._typeIDKey = options.typeIDKey ?? DEFAULT_TYPE_ID_KEY;\n }\n\n public async analyzeQuery(\n requestData: RequestData,\n options: RequestOptions,\n context: RequestContext\n ): Promise<AnalyzeQueryResult> {\n const { ast, hash } = requestData;\n\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(ast),\n typeIDKey: this._typeIDKey,\n };\n\n const cachedResponseData = await this._retrieveCachedResponseData(requestData, options, cacheManagerContext);\n const { cacheMetadata, data, fieldCount } = cachedResponseData;\n\n /**\n * Second half of check is required for the scenario where the only matching data is\n * the typeIDKey field, i.e. \"id\", in which case there is no point settings a partial\n * query reponse because we request the typeIDKey field with every request.\n */\n if (fieldCount.missing === fieldCount.total || areOnlyPopulatedFieldsTypeIdKeys(data, this._typeIDKey)) {\n return { updated: requestData };\n }\n\n if (!fieldCount.missing) {\n const dataCaching = this._setQueryResponseCacheEntry(hash, { cacheMetadata, data }, options, cacheManagerContext);\n\n if (options.awaitDataCaching) {\n await dataCaching;\n }\n\n return { response: { cacheMetadata, data } };\n }\n\n const filteredAST = filterQuery(requestData, cachedResponseData, cacheManagerContext);\n const filteredRequest = print(filteredAST);\n const { fragmentDefinitions, typeIDKey, ...rest } = cacheManagerContext;\n assign(context, { ...rest, filteredRequest });\n this._setPartialQueryResponse(hash, { cacheMetadata, data }, options, context);\n\n return {\n updated: { ast: filteredAST, hash: hashRequest(filteredRequest), request: filteredRequest },\n };\n }\n\n get cache(): Core {\n return this._cache;\n }\n\n public async cacheQuery(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions((updatedRequestData ?? requestData).ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, updatedRequestData, rawResponseData, options, cacheManagerContext);\n }\n\n public async cacheResponse(\n requestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(requestData.ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, undefined, rawResponseData, options, cacheManagerContext);\n }\n\n public async checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: RequestContext & { requestFieldCacheKey?: string }\n ): Promise<CheckCacheEntryResult | false> {\n return this._checkCacheEntry(cacheType, hash, options, context);\n }\n\n public async checkQueryResponseCacheEntry(\n hash: string,\n options: RequestOptions,\n context: RequestContext\n ): Promise<ResponseData | false> {\n const result = await this._checkCacheEntry(QUERY_RESPONSES, hash, options, context);\n\n if (!result) {\n return false;\n }\n\n const { cacheMetadata, data } = result.entry as QueryResponseCacheEntry;\n\n return {\n cacheMetadata: rehydrateCacheMetadata(cacheMetadata),\n data,\n };\n }\n\n public deletePartialQueryResponse(hash: string): void {\n this._partialQueryResponses.delete(hash);\n }\n\n public async setQueryResponseCacheEntry(\n requestData: RequestData,\n responseData: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n return this._setQueryResponseCacheEntry(requestData.hash, responseData, options, context);\n }\n\n private async _analyzeFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData & { data: unknown },\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n await (hasChildFields(fieldNode, { fragmentDefinitions: context.fragmentDefinitions })\n ? this._analyzeParentFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context)\n : this._analyzeLeafFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context));\n }\n\n private async _analyzeLeafFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData & { data: unknown },\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const { entityData, fragmentKind, fragmentName, requestFieldPathData, typeName } = cachedAncestorFieldData;\n\n const dataTypename = hasTypename(entityData)\n ? entityData.__typename\n : hasTypename(requestFieldPathData)\n ? requestFieldPathData.__typename\n : undefined;\n\n const typenamesAndKind = {\n dataTypename,\n fieldTypename: typeName,\n fragmentKind,\n fragmentName,\n };\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context\n );\n\n CacheManager._setCachedResponseData(\n { cacheability, data: entry },\n cachedResponseData,\n keysAndPaths,\n typenamesAndKind,\n options,\n context\n );\n } else {\n const cachedFieldData =\n CacheManager._getFieldDataFromAncestor(entityData, propNameOrIndex) ??\n CacheManager._getFieldDataFromAncestor(requestFieldPathData, propNameOrIndex);\n\n CacheManager._setFieldPathChecklist(\n cachedResponseData.fieldPathChecklist,\n { data: cachedFieldData },\n requestFieldPath,\n typenamesAndKind\n );\n\n CacheManager._setCachedData(cachedResponseData.data, { data: cachedFieldData }, propNameOrIndex);\n }\n }\n\n private async _analyzeParentFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath)!;\n\n const { cacheability, data, entityData, requestFieldPathData } = await this._retrieveCachedParentNodeData(\n cachedAncestorFieldData,\n keysAndPaths,\n fieldTypeInfo,\n options,\n context\n );\n\n const { fragmentKind, fragmentName, typeName } = cachedAncestorFieldData;\n\n CacheManager._setCachedResponseData(\n { cacheability, data },\n cachedResponseData,\n keysAndPaths,\n { dataTypename: get(data, TYPE_NAME_KEY), fieldTypename: typeName, fragmentKind, fragmentName },\n options,\n context\n );\n\n if (!isObjectLike(data)) {\n return;\n }\n\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n fieldNode,\n data,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n childTypeName: string | undefined,\n childFragmentKind: string | undefined,\n childFragmentName: string | undefined,\n childIndex?: number\n ) => {\n promises.push(\n this._analyzeFieldNode(\n childField,\n {\n cacheability,\n entityData,\n fragmentKind: childFragmentKind,\n fragmentName: childFragmentName,\n index: childIndex,\n requestFieldCacheKey,\n requestFieldPath,\n requestFieldPathData,\n typeName: childTypeName,\n },\n {\n ...cachedResponseData,\n /**\n * `cachedResponseData.data[propNameOrIndex]` will always be either an empty array\n * or an empty object at this point as based on whether `data` is object-like\n * `cachedResponseData.data[propNameOrIndex]` is set accordingly in\n * _setCachedResponseData > _setCachedData\n */\n data: getDataValue<PlainData>(cachedResponseData.data, propNameOrIndex)!,\n },\n options,\n context\n )\n );\n }\n );\n\n await Promise.all(promises);\n }\n\n private _buildCacheMetadata(\n { ast }: RequestData,\n { data, ...otherProps }: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext\n ): CacheMetadata {\n const cacheMetadata = this._createCacheMetadata({ data, ...otherProps }, context);\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n\n if (!queryNode) {\n return cacheMetadata;\n }\n\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cacheMetadata;\n }\n\n for (const { fieldNode } of fieldsAndTypeNames)\n this._setFieldCacheability(\n fieldNode,\n { requestFieldPath: context.operation },\n { cacheMetadata, data },\n options,\n context\n );\n\n return cacheMetadata;\n }\n\n private async _cacheResponse(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<ResponseData> {\n const normalizedResponseData = normalizePatchResponseData(rawResponseData, context);\n let responseDataForCaching: RawResponseDataWithMaybeCacheMetadata | undefined = normalizedResponseData;\n\n if (isNotLastResponseChunk(rawResponseData, context)) {\n this._setResponseChunksAwaitingCaching(normalizedResponseData, context);\n responseDataForCaching = undefined;\n }\n\n if (isLastResponseChunk(rawResponseData, context)) {\n responseDataForCaching = this._retrieveResponseDataForCaching(normalizedResponseData, context);\n }\n\n const dataCaching: Promise<void>[] = [];\n\n if (responseDataForCaching) {\n const { data } = responseDataForCaching;\n const cacheMetadata = this._buildCacheMetadata(requestData, responseDataForCaching, options, context);\n\n dataCaching.push(\n this._setEntityAndRequestFieldPathCacheEntries(\n requestData,\n {\n cacheMetadata,\n entityData: cloneDeep(data),\n requestFieldPathData: cloneDeep(data),\n },\n options,\n context\n )\n );\n\n let queryCacheMetadata: CacheMetadata | undefined;\n let queryData: PlainData | undefined;\n\n if (context.operation === OperationTypeNode.QUERY) {\n let partialQueryResponse: PartialQueryResponse | undefined;\n\n if (context.queryFiltered && updatedRequestData) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(updatedRequestData.hash, { cacheMetadata, data }, options, context)\n );\n\n partialQueryResponse = this._getPartialQueryResponse(requestData.hash);\n }\n\n queryCacheMetadata = CacheManager._mergeResponseCacheMetadata(cacheMetadata, partialQueryResponse);\n queryData = this._mergeResponseData(data, partialQueryResponse);\n\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n requestData.hash,\n { cacheMetadata: queryCacheMetadata, data: queryData },\n options,\n context\n )\n );\n }\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n if (isNotResponseChunk(normalizedResponseData, context) && queryCacheMetadata && queryData) {\n return {\n cacheMetadata: queryCacheMetadata,\n data: queryData,\n };\n }\n }\n\n const { data, hasNext, paths } = normalizedResponseData;\n\n return {\n cacheMetadata: this._buildCacheMetadata(requestData, normalizedResponseData, options, context),\n data,\n hasNext,\n paths,\n };\n }\n\n private async _checkCacheEntry<T>(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string }\n ): Promise<CheckCacheEntryResult<T> | false> {\n try {\n const cacheability = await this._hasCacheEntry(cacheType, hash);\n\n if (!cacheability || !CacheManager._isValid(cacheability)) {\n return false;\n }\n\n const entry = await this._getCacheEntry<T>(cacheType, hash, options, context);\n\n if (isUndefined(entry)) {\n return false;\n }\n\n return { cacheability, entry };\n } catch {\n return false;\n }\n }\n\n private _createCacheMetadata(\n { _cacheMetadata, headers }: RawResponseDataWithMaybeCacheMetadata,\n { operation }: CacheManagerContext\n ): CacheMetadata {\n const cacheMetadata = new Map<string, Cacheability>();\n\n const cacheability = deriveOpCacheability({\n _cacheMetadata,\n fallback: this._fallbackOperationCacheability,\n headers,\n });\n\n cacheMetadata.set(operation, cacheability);\n\n if (_cacheMetadata) {\n rehydrateCacheMetadata(_cacheMetadata, cacheMetadata);\n }\n\n return cacheMetadata;\n }\n\n @logCacheQuery()\n private async _getCacheEntry<T>(\n cacheType: CacheTypes,\n hash: string,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string }\n ): Promise<T | undefined> {\n return this._cache.get<T>(`${cacheType}::${hash}`);\n }\n\n private _getPartialQueryResponse(hash: string): PartialQueryResponse | undefined {\n const partialQueryResponse = this._partialQueryResponses.get(hash);\n this._partialQueryResponses.delete(hash);\n return partialQueryResponse;\n }\n\n private async _hasCacheEntry(cacheType: CacheTypes, hash: string): Promise<Cacheability | false> {\n try {\n return await this._cache.has(`${cacheType}::${hash}`);\n } catch {\n return false;\n }\n }\n\n private _isFieldEntity(fieldData: unknown, { isEntity, possibleTypes }: FieldTypeInfo): boolean {\n if (!isPlainObject(fieldData) || !(this._typeIDKey in fieldData)) {\n return false;\n }\n\n if (isEntity) {\n return true;\n }\n\n if (possibleTypes.length === 0) {\n return false;\n }\n\n return possibleTypes.some(type => type.typeName === fieldData.__typename);\n }\n\n private _mergeResponseData(responseData: PlainData, partialQueryResponse?: PartialQueryResponse): PlainData {\n if (!partialQueryResponse) {\n return responseData;\n }\n\n return mergeDataSets(partialQueryResponse.data, responseData, this._typeIDKey);\n }\n\n private async _parseEntityAndRequestFieldPathCacheEntryData(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldCacheKey, requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(requestFieldPathData, responseDataPath) as unknown;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n if (isObjectLike(fieldData)) {\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n field,\n fieldData,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number\n ) => {\n promises.push(\n this._parseEntityAndRequestFieldPathCacheEntryData(\n childField,\n { index: childIndex, requestFieldCacheKey, requestFieldPath, responseDataPath },\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context\n )\n );\n }\n );\n\n await Promise.all(promises);\n }\n\n await this._setEntityAndRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context\n );\n }\n\n private async _retrieveCachedEntityData(\n validTypeIDValue: string | number,\n { possibleTypes, typeName }: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<Partial<CheckCacheEntryResult<EntityData>>> {\n const typeNames = [...possibleTypes.map(type => type.typeName), typeName];\n\n const checkResults = await Promise.all(\n typeNames.map(name =>\n this._checkCacheEntry<EntityData>(DATA_ENTITIES, `${name}::${validTypeIDValue}`, options, context)\n )\n );\n\n const validResults = checkResults.filter(result => !!result) as CheckCacheEntryResult<EntityData>[];\n let validResult: CheckCacheEntryResult<EntityData> | undefined;\n\n if (validResults.length === 1) {\n validResult = validResults[0];\n } else if (validResults.length > 1) {\n validResults.sort(({ cacheability: a }, { cacheability: b }) => a.metadata.ttl - b.metadata.ttl);\n\n validResult = {\n cacheability: validResults[0]!.cacheability,\n entry: validResults.reduce<Partial<EntityData>>(\n (obj, { entry }) => mergeDataSets(obj, entry, this._typeIDKey),\n {}\n ) as EntityData,\n };\n }\n\n return validResult ?? {};\n }\n\n private async _retrieveCachedParentNodeData(\n { entityData: ancestorEntityData, requestFieldPathData: ancestorRequestFieldPathData }: CachedAncestorFieldData,\n { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey }: KeysAndPaths,\n fieldTypeInfo: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext\n ) {\n let entityData = CacheManager._getFieldDataFromAncestor(ancestorEntityData, propNameOrIndex);\n let requestFieldPathData = CacheManager._getFieldDataFromAncestor(ancestorRequestFieldPathData, propNameOrIndex);\n let cacheability: Cacheability | undefined;\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context\n );\n\n requestFieldPathData = combineDataSets(requestFieldPathData, entry, this._typeIDKey);\n\n if (entryCacheability) {\n cacheability = entryCacheability;\n }\n }\n\n const validTypeIDValue = getValidTypeIdValue(requestFieldPathData, fieldTypeInfo, this._typeIDKey);\n\n if (CacheManager._isNodeEntity(fieldTypeInfo) && validTypeIDValue) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedEntityData(\n validTypeIDValue,\n fieldTypeInfo,\n options,\n context\n );\n\n entityData = combineDataSets(entityData, entry, this._typeIDKey);\n\n if (entryCacheability && (!cacheability || entryCacheability.metadata.ttl > cacheability.metadata.ttl)) {\n cacheability = entryCacheability;\n }\n }\n\n const data = isEqual(entityData, requestFieldPathData)\n ? entityData\n : combineDataSets(entityData, requestFieldPathData, this._typeIDKey);\n\n return {\n cacheability,\n data,\n entityData,\n requestFieldPathData,\n };\n }\n\n private async _retrieveCachedRequestFieldPathData(\n hash: string,\n requestFieldCacheKey: string,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<Partial<CheckCacheEntryResult>> {\n return (\n (await this._checkCacheEntry(REQUEST_FIELD_PATHS, hash, options, { ...context, requestFieldCacheKey })) || {}\n );\n }\n\n private async _retrieveCachedResponseData(\n { ast }: RequestData,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<CachedResponseData> {\n const cachedResponseData: CachedResponseData = {\n cacheMetadata: new Map(),\n data: {},\n fieldCount: { missing: 0, total: 0 },\n fieldPathChecklist: new Map(),\n };\n\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n\n if (!queryNode) {\n return cachedResponseData;\n }\n\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cachedResponseData;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) =>\n this._analyzeFieldNode(fieldNode, { requestFieldPath: context.operation }, cachedResponseData, options, context)\n )\n );\n\n cachedResponseData.fieldCount = CacheManager._countFieldPathChecklist(cachedResponseData.fieldPathChecklist);\n return cachedResponseData;\n }\n\n private _retrieveResponseDataForCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(context.requestID)!;\n\n this._responseChunksAwaitingCaching.delete(context.requestID);\n return mergeResponseDataSets([...responseChunks, normalizedResponseData]);\n }\n\n @logCacheEntry()\n private async _setCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n value: unknown,\n cachemapOptions: CachemapOptions,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string }\n ): Promise<void> {\n try {\n await this._cache.set(`${cacheType}::${hash}`, cloneDeep(value), cachemapOptions);\n } catch {\n // no catch\n }\n }\n\n private async _setEntityAndRequestFieldPathCacheEntries(\n requestData: RequestData,\n responseData: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const operationNode = getOperationDefinitions(requestData.ast, context.operation)[0];\n\n if (!operationNode) {\n return;\n }\n\n const fieldsAndTypeNames = getChildFields(operationNode);\n\n if (!fieldsAndTypeNames) {\n return;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) => {\n return this._parseEntityAndRequestFieldPathCacheEntryData(\n fieldNode,\n { requestFieldPath: context.operation },\n responseData,\n options,\n context\n );\n })\n );\n }\n\n private async _setEntityAndRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext\n ) {\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(entityData, responseDataPath) as unknown;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const cacheability = cacheMetadata.get(requestFieldPath);\n\n if (isUndefined(fieldData) || !fieldTypeInfo || !cacheability) {\n return;\n }\n\n const promises: Promise<void>[] = [];\n\n promises.push(\n this._setRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheability, data: requestFieldPathData, fieldTypeInfo },\n options,\n context\n )\n );\n\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n\n if (!isEntity && fieldTypeInfo.hasArguments) {\n unset(entityData, responseDataPath);\n }\n\n if (isEntity) {\n promises.push(\n this._setEntityCacheEntry(keysAndPaths, { cacheability, data: entityData, fieldTypeInfo }, options, context)\n );\n }\n\n await Promise.all(promises);\n }\n\n private async _setEntityCacheEntry(\n { responseDataPath }: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext\n ) {\n let fieldData = get(data, responseDataPath) as EntityData;\n const fieldTypeName = fieldTypeInfo.isEntity ? fieldTypeInfo.typeName : fieldData.__typename;\n const entityDataKey = `${fieldTypeName}::${String(fieldData[this._typeIDKey])}`;\n const result = await this._checkCacheEntry<EntityData>(DATA_ENTITIES, entityDataKey, options, context);\n\n if (result) {\n fieldData = mergeDataSets(result.entry, fieldData, this._typeIDKey);\n }\n\n await this._setCacheEntry(\n DATA_ENTITIES,\n entityDataKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n context\n );\n\n set(data, responseDataPath, { __cacheKey: `${DATA_ENTITIES}::${entityDataKey}` });\n }\n\n private _setFieldCacheability(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext\n ): void {\n const { requestFieldPath: ancestorRequestFieldPath } = ancestorKeysAndPaths;\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n\n if (!isObjectLike(data)) {\n return;\n }\n\n const fieldData = get(data, responseDataPath) as unknown;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n this._setFieldTypeCacheDirective(cacheMetadata, { ancestorRequestFieldPath, requestFieldPath }, context);\n\n if (isObjectLike(fieldData)) {\n iterateChildFields(\n field,\n fieldData,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number\n ) => {\n this._setFieldCacheability(\n childField,\n { index: childIndex, requestFieldPath, responseDataPath },\n { cacheMetadata, data },\n options,\n context\n );\n }\n );\n }\n }\n\n private _setFieldTypeCacheDirective(\n cacheMetadata: CacheMetadata,\n { ancestorRequestFieldPath, requestFieldPath }: { ancestorRequestFieldPath?: string; requestFieldPath: string },\n { fieldTypeMap, operation }: CacheManagerContext\n ): void {\n if (cacheMetadata.has(requestFieldPath)) {\n return;\n }\n\n const fieldTypeInfo = fieldTypeMap.get(requestFieldPath);\n\n if (fieldTypeInfo && this._typeCacheDirectives[fieldTypeInfo.typeName]) {\n const cacheability = new Cacheability({ cacheControl: this._typeCacheDirectives[fieldTypeInfo.typeName] });\n CacheManager._setCacheMetadata(cacheMetadata, cacheability, requestFieldPath, operation);\n } else if (this._cascadeCacheControl && ancestorRequestFieldPath) {\n CacheManager._setCacheMetadata(\n cacheMetadata,\n cacheMetadata.get(ancestorRequestFieldPath),\n requestFieldPath,\n operation\n );\n }\n }\n\n @logPartialCompiled()\n private _setPartialQueryResponse(\n hash: string,\n partialQueryResponse: PartialQueryResponse,\n _options: RequestOptions,\n _context: CacheManagerContext\n ): void {\n this._partialQueryResponses.set(hash, partialQueryResponse);\n }\n\n private async _setQueryResponseCacheEntry(\n hash: string,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const dehydratedCacheMetadata = dehydrateCacheMetadata(cacheMetadata);\n const cacheControl = CacheManager._getOperationCacheControl(cacheMetadata, context.operation);\n\n await this._setCacheEntry(\n QUERY_RESPONSES,\n hash,\n { cacheMetadata: dehydratedCacheMetadata, data },\n { cacheHeaders: { cacheControl }, tag: options.tag },\n options,\n context\n );\n }\n\n private async _setRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const { hashedRequestFieldCacheKey, requestFieldCacheKey, responseDataPath } = keysAndPaths;\n let fieldData = get(data, responseDataPath) as unknown;\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n const hasArgsOrDirectives = fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives;\n\n if (context.operation === OperationTypeNode.QUERY && (isEntity || hasArgsOrDirectives)) {\n if (isPlainObject(fieldData) && field.selectionSet?.selections) {\n fieldData = filterOutPropsWithArgsOrDirectives(fieldData, field.selectionSet.selections, keysAndPaths, context);\n }\n\n const result = await this._checkCacheEntry(REQUEST_FIELD_PATHS, hashedRequestFieldCacheKey, options, {\n ...context,\n requestFieldCacheKey,\n });\n\n if (result && isObjectLike(result.entry) && isObjectLike(fieldData)) {\n fieldData = mergeDataSets(result.entry, fieldData, this._typeIDKey);\n }\n\n await this._setCacheEntry(\n REQUEST_FIELD_PATHS,\n hashedRequestFieldCacheKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n { ...context, requestFieldCacheKey }\n );\n\n if (hasChildFields(field, { fragmentDefinitions: context.fragmentDefinitions })) {\n if (isEntity) {\n set(data, responseDataPath, { __cacheKey: `${REQUEST_FIELD_PATHS}::${hashedRequestFieldCacheKey}` });\n } else {\n unset(data, responseDataPath);\n }\n }\n }\n }\n\n private _setResponseChunksAwaitingCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(context.requestID);\n\n if (responseChunks) {\n this._responseChunksAwaitingCaching.set(context.requestID, [...responseChunks, normalizedResponseData]);\n } else {\n this._responseChunksAwaitingCaching.set(context.requestID, [normalizedResponseData]);\n }\n }\n}\n"],"names":["METADATA","CACHE_CONTROL","NO_CACHE","HEADER_CACHE_CONTROL","HEADER_NO_CACHE","logCacheEntry","_target","_propertyName","descriptor","method","value","descriptorValue","args","Promise","resolve","debugManager","requestFieldCacheKey","otherContext","apply","startTime","now","endTime","duration","payload","cacheType","cachemapOptions","context","options","requestHash","stats","decryptedCacheKey","log","CACHE_ENTRY_ADDED","logCacheQuery","result","CACHE_ENTRY_QUERIED","logPartialCompiled","PARTIAL_QUERY_COMPILED","checkValue","typeIDKey","isArray","reduce","acc","entry","isPlainObject","recursivelyCheckProps","data","keys","Object","length","key","isNumber","isString","areOnlyPopulatedFieldsTypeIdKeys","mergeDataSets","obj","source","mergeObjects","_key","undefined","combineDataSets","dataSetA","dataSetB","isObjectLike","deriveOpCacheability","_cacheMetadata","fallback","headers","isEmpty","first","rest","values","Cacheability","metadata","ttl","has","cacheControl","filterOutPropsWithArgsOrDirectives","fieldData","selectionNodes","ancestorKeysAndPaths","fieldAndTypeName","resolveFragments","fragmentDefinitions","match","find","fieldNode","getName","requestFieldPath","buildFieldKeysAndPaths","fieldTypeInfo","fieldTypeMap","get","hasArguments","hasDirectives","createFragmentSpreadChecklist","request","name","deleted","paths","total","RegExp","checkFieldPathChecklist","fieldPathChecklistValues","fieldTypeName","hasData","typeUnused","fieldPathChecklistValue","typeName","some","every","filterFragmentSpreads","field","fragmentSpreadFieldCounter","fragmentSpreadChecklist","ancestorRequestFieldPath","checklist","push","deleteFragmentSpreads","filterIDsAndTypeNames","fieldsAndTypeNames","getChildFields","fieldNames","map","TYPE_NAME_KEY","deleteChildFields","filterInlineFragments","inlineFragments","getInlineFragments","filtered","fragment","deleteInlineFragments","filterField","fieldPathChecklist","index","childField","fragmentKind","fragmentName","childTypeName","Kind","FRAGMENT_SPREAD","childFieldName","counter","hasChildFields","filterFragmentDefinitions","ast","definitionsToFilter","namesAndPaths","path","fragmentDefinition","definitionsToDelete","names","deleteFragmentDefinitions","include","filterQuery","requestData","queryNode","getOperationDefinitions","operation","queryFiltered","getDataValue","hasTypename","isLastResponseChunk","rawResponseData","hasDeferOrStream","hasNext","isNotLastResponseChunk","isNotResponseChunk","mergeResponseDataSets","responseDataSets","dataSet","merge","normalizePatchResponseData","set","getValidTypeIdValue","requestFieldPathData","typeIDValue","CacheManager","_dec","_dec2","_dec3","_class","_countFieldPathChecklist","fieldCount","missing","checklistValues","filter","_getFieldDataFromAncestor","ancestorFieldData","propNameOrIndex","dataValue","cloneDeep","_getOperationCacheControl","cacheMetadata","defaultCacheControl","cacheability","printCacheControl","_isNodeEntity","isEntity","possibleTypes","type","_isNodeRequestFieldPath","_isValid","noCache","checkTTL","_mergeResponseCacheMetadata","partialQueryResponse","Map","_setCachedData","responseData","setData","isUndefined","_setCachedResponseData","cachedFieldData","typeNamesAndKind","_options","_setCacheMetadata","_setFieldPathChecklist","operationCacheability","dataTypename","dataTypeName","fieldTypename","constructor","_defineProperty","errors","ArgsError","typeCacheDirectives","message","GroupedError","_cache","cache","_cascadeCacheControl","cascadeCacheControl","_fallbackOperationCacheability","fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","DEFAULT_TYPE_ID_KEY","analyzeQuery","hash","cacheManagerContext","getFragmentDefinitions","cachedResponseData","_retrieveCachedResponseData","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","filteredAST","filteredRequest","print","assign","_setPartialQueryResponse","hashRequest","cacheQuery","updatedRequestData","_cacheResponse","cacheResponse","checkCacheEntry","_checkCacheEntry","checkQueryResponseCacheEntry","QUERY_RESPONSES","rehydrateCacheMetadata","deletePartialQueryResponse","_partialQueryResponses","delete","setQueryResponseCacheEntry","_analyzeFieldNode","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","hashedRequestFieldCacheKey","entityData","__typename","typenamesAndKind","_retrieveCachedRequestFieldPathData","_retrieveCachedParentNodeData","promises","iterateChildFields","childFragmentKind","childFragmentName","childIndex","all","_buildCacheMetadata","otherProps","_createCacheMetadata","_setFieldCacheability","normalizedResponseData","responseDataForCaching","_setResponseChunksAwaitingCaching","_retrieveResponseDataForCaching","_setEntityAndRequestFieldPathCacheEntries","queryCacheMetadata","queryData","OperationTypeNode","QUERY","_getPartialQueryResponse","_mergeResponseData","_hasCacheEntry","_getCacheEntry","_context","_isFieldEntity","_parseEntityAndRequestFieldPathCacheEntryData","responseDataPath","_typeName","_fragmentKind","_fragmentName","_setEntityAndRequestFieldPathCacheEntry","_retrieveCachedEntityData","validTypeIDValue","typeNames","checkResults","DATA_ENTITIES","validResults","validResult","sort","a","b","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","isEqual","REQUEST_FIELD_PATHS","responseChunks","_responseChunksAwaitingCaching","requestID","_setCacheEntry","operationNode","_setRequestFieldPathCacheEntry","unset","_setEntityCacheEntry","entityDataKey","String","cacheHeaders","tag","__cacheKey","_setFieldTypeCacheDirective","dehydratedCacheMetadata","dehydrateCacheMetadata","hasArgsOrDirectives","selectionSet","selections","_applyDecoratedDescriptor","prototype","getOwnPropertyDescriptor"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../cache-manager/src//constants.ts","../cache-manager/src//helpers/areOnlyPopulatedFieldsTypeIdKeys.ts","../cache-manager/src//helpers/mergeObjects.ts","../cache-manager/src//helpers/combineData.ts","../cache-manager/src//helpers/checkFieldPathChecklist.ts","../cache-manager/src//helpers/filterField.ts","../cache-manager/src//helpers/filterFragmentSpreads.ts","../cache-manager/src//helpers/filterInlineFragments.ts","../cache-manager/src//helpers/filterIDsAndTypeNames.ts","../cache-manager/src//helpers/filterQuery.ts","../cache-manager/src//helpers/createFragmentSpreadChecklist.ts","../cache-manager/src//helpers/filterFragmentDefinitions.ts","../cache-manager/src//helpers/getDataValue.ts","../cache-manager/src//helpers/hasTypename.ts","../cache-manager/src//main.ts","../cache-manager/src//debug/logCacheQuery.ts","../cache-manager/src//debug/logCacheEntry.ts","../cache-manager/src//debug/logPartialCompiled.ts","../cache-manager/src//helpers/normalizePatchResponseData.ts","../cache-manager/src//helpers/isNotLastResponseChunk.ts","../cache-manager/src//helpers/isLastResponseChunk.ts","../cache-manager/src//helpers/isNotResponseChunk.ts","../cache-manager/src//helpers/deriveOpCacheability.ts","../cache-manager/src//helpers/validTypeIdValue.ts","../cache-manager/src//helpers/mergeResponseDataSets.ts","../cache-manager/src//helpers/filterOutPropsWithArgsOrDirectives.ts"],"sourcesContent":["export const METADATA = 'metadata' as const;\nexport const CACHE_CONTROL = 'cacheControl' as const;\nexport const NO_CACHE = 'noCache' as const;\n\nexport const HEADER_CACHE_CONTROL = 'cache-control' as const;\nexport const HEADER_NO_CACHE = 'no-cache' as const;\n","import type { PlainData } from '@graphql-box/core';\nimport { isArray, isPlainObject } from '@graphql-box/helpers';\nimport { isNumber, isString } from 'lodash-es';\n\nconst checkValue = (value: unknown, typeIDKey: string): boolean => {\n if (isArray(value)) {\n return value.reduce<boolean>((acc, entry) => {\n if (!acc) {\n return false;\n }\n\n return checkValue(entry, typeIDKey);\n }, true);\n }\n\n if (isPlainObject(value)) {\n return recursivelyCheckProps(value, typeIDKey);\n }\n\n return false;\n};\n\nconst recursivelyCheckProps = (data: PlainData, typeIDKey: string): boolean => {\n const keys = isPlainObject(data) ? Object.keys(data) : [...data.keys()];\n\n if (keys.length === 1 && isPlainObject(data) && !!data[typeIDKey]) {\n return true;\n }\n\n return keys.reduce<boolean>((acc, key) => {\n if (!acc) {\n return false;\n }\n\n if (isNumber(key) && isArray(data)) {\n return checkValue(data[key], typeIDKey);\n } else if (isString(key) && isPlainObject(data)) {\n return checkValue(data[key], typeIDKey);\n }\n\n return acc;\n }, true);\n};\n\nexport const areOnlyPopulatedFieldsTypeIdKeys = (data: PlainData, typeIDKey: string) => {\n return recursivelyCheckProps(data, typeIDKey);\n};\n","import { isPlainObject, mergeObjects } from '@graphql-box/helpers';\n\nexport const mergeDataSets = <T extends object>(obj: T, source: T, typeIDKey: string): T => {\n return mergeObjects<T>(obj, source, (_key: string, value: unknown): string | number | undefined => {\n return isPlainObject(value) && value[typeIDKey] ? (value[typeIDKey] as string | number) : undefined;\n });\n};\n","import { isObjectLike } from '@graphql-box/helpers';\nimport { mergeDataSets } from './mergeObjects.ts';\n\nexport const combineDataSets = (dataSetA: unknown, dataSetB: unknown, typeIDKey: string) => {\n if (!dataSetA && dataSetB) {\n return dataSetB;\n }\n\n if (isObjectLike(dataSetA) && isObjectLike(dataSetB)) {\n return mergeDataSets(dataSetA, dataSetB, typeIDKey);\n }\n\n return dataSetA;\n};\n","import { type CheckFieldPathChecklistResult, type FieldPathChecklistValue } from '../types.ts';\n\nexport const checkFieldPathChecklist = (\n fieldPathChecklistValues: FieldPathChecklistValue[] | undefined,\n fieldTypeName: string | undefined\n): CheckFieldPathChecklistResult => {\n if (!fieldPathChecklistValues || fieldPathChecklistValues.length === 0) {\n return { hasData: false, typeUnused: !!fieldTypeName };\n }\n\n const [fieldPathChecklistValue] = fieldPathChecklistValues;\n\n if (fieldPathChecklistValue) {\n const { hasData, typeName } = fieldPathChecklistValue;\n const typeUnused = typeName ? typeName !== fieldTypeName : undefined;\n return { hasData, typeUnused };\n }\n\n return {\n hasData: fieldPathChecklistValues.some(({ hasData, typeName }) => typeName === fieldTypeName && hasData),\n typeUnused: !fieldPathChecklistValues.every(({ typeName }) => typeName === fieldTypeName),\n };\n};\n","import { TYPE_NAME_KEY } from '@graphql-box/core';\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getName,\n hasChildFields,\n} from '@graphql-box/helpers';\nimport { type FieldNode, type FragmentDefinitionNode, Kind, type OperationDefinitionNode } from 'graphql';\nimport { type CacheManagerContext, type FieldPathChecklist, type FragmentSpreadFieldCounter } from '../types.ts';\nimport { checkFieldPathChecklist } from './checkFieldPathChecklist.ts';\nimport { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';\nimport { filterFragmentSpreads } from './filterFragmentSpreads.ts';\nimport { filterIDsAndTypeNames } from './filterIDsAndTypeNames.ts';\nimport { filterInlineFragments } from './filterInlineFragments.ts';\n\nexport const filterField = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n context: CacheManagerContext\n): boolean => {\n const { fragmentDefinitions, typeIDKey } = context;\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return false;\n }\n\n const fragmentSpreadFieldCounter: FragmentSpreadFieldCounter = {};\n\n for (let index = fieldsAndTypeNames.length - 1; index >= 0; index -= 1) {\n const fieldAndTypeName = fieldsAndTypeNames[index];\n\n if (!fieldAndTypeName) {\n continue;\n }\n\n const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldAndTypeName;\n\n if (fragmentKind === Kind.FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {\n fragmentSpreadFieldCounter[fragmentName] = {\n hasData: 0,\n total: fragmentDefinitions?.[fragmentName]\n ? getChildFields(fragmentDefinitions[fragmentName]!, { fragmentDefinitions })?.length ?? 0\n : 0,\n };\n }\n\n const childFieldName = getName(childField);\n\n if (childFieldName === typeIDKey || childFieldName === TYPE_NAME_KEY) {\n continue;\n }\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n childField,\n {\n requestFieldPath: ancestorRequestFieldPath,\n },\n context\n );\n\n const { hasData, typeUnused } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);\n\n if (hasData || typeUnused) {\n if (fragmentKind === Kind.FRAGMENT_SPREAD && fragmentName) {\n const counter = fragmentSpreadFieldCounter[fragmentName];\n\n if (counter) {\n counter.hasData += 1;\n }\n } else if (!hasChildFields(childField, { fragmentDefinitions })) {\n deleteChildFields(field, childField);\n } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(field, childField);\n }\n }\n }\n\n filterFragmentSpreads(field, fragmentSpreadFieldCounter, fragmentSpreadChecklist, ancestorRequestFieldPath);\n filterInlineFragments(field, context);\n filterIDsAndTypeNames(field, context);\n return !hasChildFields(field, { fragmentDefinitions });\n};\n","import { deleteFragmentSpreads } from '@graphql-box/helpers';\nimport { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';\nimport { isEmpty } from 'lodash-es';\nimport { type FragmentSpreadFieldCounter } from '../types.ts';\nimport { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';\n\nexport const filterFragmentSpreads = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string\n) => {\n if (isEmpty(fragmentSpreadFieldCounter)) {\n return;\n }\n\n for (const key of Object.keys(fragmentSpreadFieldCounter)) {\n const checklist = fragmentSpreadChecklist[key];\n\n if (!checklist) {\n continue;\n }\n\n checklist.paths.push(ancestorRequestFieldPath);\n const { hasData, total } = fragmentSpreadFieldCounter[key]!;\n\n if (hasData === total) {\n deleteFragmentSpreads(field, key);\n checklist.deleted += 1;\n }\n }\n};\n","import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from '@graphql-box/helpers';\nimport { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const filterInlineFragments = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext\n) => {\n const inlineFragments = getInlineFragments(field);\n let filtered = false;\n\n for (const fragment of inlineFragments) {\n const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length === 0) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n continue;\n }\n\n const [fieldAndTypeName] = fieldsAndTypeNames;\n\n if (fieldAndTypeName) {\n const { fieldNode } = fieldAndTypeName;\n\n if (getName(fieldNode) === typeIDKey) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n }\n }\n }\n\n return filtered;\n};\n","import { TYPE_NAME_KEY } from '@graphql-box/core';\nimport { deleteChildFields, getChildFields, getName } from '@graphql-box/helpers';\nimport { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const filterIDsAndTypeNames = (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext\n) => {\n const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || fieldsAndTypeNames.length > 3) {\n return false;\n }\n\n const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode)!);\n\n if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {\n deleteChildFields(\n field,\n fieldsAndTypeNames.map(({ fieldNode }) => fieldNode)\n );\n\n return true;\n }\n\n if ((fieldNames.length === 1 && fieldNames[0] === typeIDKey) || fieldNames[0] === TYPE_NAME_KEY) {\n const [fieldAndTypeName] = fieldsAndTypeNames;\n\n if (fieldAndTypeName) {\n const { fieldNode } = fieldAndTypeName;\n deleteChildFields(field, fieldNode);\n return true;\n }\n }\n\n return false;\n};\n","import { type RequestData } from '@graphql-box/core';\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getOperationDefinitions,\n} from '@graphql-box/helpers';\nimport { type CacheManagerContext, type CachedResponseData } from '../types.ts';\nimport { createFragmentSpreadChecklist } from './createFragmentSpreadChecklist.ts';\nimport { filterField } from './filterField.ts';\nimport { filterFragmentDefinitions } from './filterFragmentDefinitions.ts';\n\nexport const filterQuery = (\n requestData: RequestData,\n { fieldPathChecklist }: CachedResponseData,\n context: CacheManagerContext\n) => {\n const { ast } = requestData;\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n\n if (!queryNode) {\n return ast;\n }\n\n const { fragmentDefinitions, operation } = context;\n const fieldsAndTypeNames = getChildFields(queryNode, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames) {\n return ast;\n }\n\n const fragmentSpreadChecklist = createFragmentSpreadChecklist(requestData, context);\n\n for (let index = fieldsAndTypeNames.length - 1; index >= 0; index -= 1) {\n const { fieldNode } = fieldsAndTypeNames[index]!;\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n fieldNode,\n {\n requestFieldPath: operation,\n },\n context\n );\n\n if (filterField(fieldNode, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {\n deleteChildFields(queryNode, fieldNode);\n }\n }\n\n context.queryFiltered = true;\n return filterFragmentDefinitions(ast, fieldPathChecklist, fragmentSpreadChecklist, context);\n};\n","import { type RequestData } from '@graphql-box/core';\nimport { keys } from 'lodash-es';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport type FragmentSpreadCheckist = Record<\n string,\n {\n deleted: number;\n paths: string[];\n total: number;\n }\n>;\n\nexport const createFragmentSpreadChecklist = ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>\n keys(fragmentDefinitions ?? {}).reduce<FragmentSpreadCheckist>((acc, name) => {\n acc[name] = { deleted: 0, paths: [], total: (request.match(new RegExp(`\\\\.\\\\.\\\\.${name}`, 'g')) ?? []).length };\n return acc;\n }, {});\n","import { deleteFragmentDefinitions } from '@graphql-box/helpers';\nimport { type DocumentNode } from 'graphql';\nimport { keys } from 'lodash-es';\nimport { type CacheManagerContext, type FieldPathChecklist } from '../types.ts';\nimport { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';\nimport { filterField } from './filterField.ts';\n\nexport const filterFragmentDefinitions = (\n ast: DocumentNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n context: CacheManagerContext\n) => {\n const definitionsToFilter = keys(fragmentSpreadChecklist).reduce<{ name: string; path: string }[]>(\n (namesAndPaths, key) => {\n const checklist = fragmentSpreadChecklist[key];\n\n if (!checklist) {\n return namesAndPaths;\n }\n\n const { deleted, paths, total } = checklist;\n return deleted === 0 && total === 1 ? [...namesAndPaths, { name: key, path: paths[0]! }] : namesAndPaths;\n },\n []\n );\n\n const { fragmentDefinitions = {} } = context;\n\n for (const { name, path } of definitionsToFilter) {\n const fragmentDefinition = fragmentDefinitions[name];\n\n if (!fragmentDefinition) {\n continue;\n }\n\n filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);\n }\n\n const definitionsToDelete = keys(fragmentSpreadChecklist).reduce<string[]>((names, key) => {\n const checklist = fragmentSpreadChecklist[key];\n\n if (!checklist) {\n return names;\n }\n\n const { deleted, total } = checklist;\n return deleted > 0 && deleted === total ? [...names, key] : names;\n }, []);\n\n if (definitionsToDelete.length === 0) {\n return ast;\n }\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n","import { isArray, isPlainObject } from '@graphql-box/helpers';\nimport { isNumber, isString } from 'lodash-es';\n\nexport const getDataValue = <T>(value: unknown, key: string | number): T | undefined => {\n if (isArray(value) && isNumber(key)) {\n return value[key] as T;\n }\n\n if (isPlainObject(value) && isString(key)) {\n return value[key] as T;\n }\n\n return;\n};\n","import { TYPE_NAME_KEY, type TypedData } from '@graphql-box/core';\nimport { isObjectLike } from '@graphql-box/helpers';\nimport { isString } from 'lodash-es';\n\nexport const hasTypename = (value: unknown): value is TypedData => {\n if (!isObjectLike(value)) {\n return false;\n }\n\n return TYPE_NAME_KEY in value && isString(value[TYPE_NAME_KEY]);\n};\n","import { type Core } from '@cachemap/core';\nimport {\n type CacheMetadata,\n type CacheTypes,\n type CachemapOptions,\n DATA_ENTITIES,\n DEFAULT_TYPE_ID_KEY,\n type EntityData,\n type FieldTypeInfo,\n type PlainData,\n QUERY_RESPONSES,\n REQUEST_FIELD_PATHS,\n type RawResponseDataWithMaybeCacheMetadata,\n type RequestContext,\n type RequestData,\n type RequestOptions,\n type ResponseData,\n TYPE_NAME_KEY,\n} from '@graphql-box/core';\nimport {\n ArgsError,\n GroupedError,\n type KeysAndPaths,\n buildFieldKeysAndPaths,\n dehydrateCacheMetadata,\n getChildFields,\n getFragmentDefinitions,\n getOperationDefinitions,\n hasChildFields,\n hashRequest,\n isArray,\n isObjectLike,\n isPlainObject,\n iterateChildFields,\n rehydrateCacheMetadata,\n} from '@graphql-box/helpers';\nimport { Cacheability } from 'cacheability';\nimport { type FieldNode, Kind, OperationTypeNode, print } from 'graphql';\nimport { assign, cloneDeep, get, isEqual, isNumber, isUndefined, set, unset } from 'lodash-es';\nimport { CACHE_CONTROL, HEADER_NO_CACHE, METADATA, NO_CACHE } from './constants.ts';\nimport { logCacheEntry, logCacheQuery, logPartialCompiled } from './debug/index.ts';\nimport { areOnlyPopulatedFieldsTypeIdKeys } from './helpers/areOnlyPopulatedFieldsTypeIdKeys.ts';\nimport { combineDataSets } from './helpers/combineData.ts';\nimport { deriveOpCacheability } from './helpers/deriveOpCacheability.ts';\nimport { filterOutPropsWithArgsOrDirectives } from './helpers/filterOutPropsWithArgsOrDirectives.ts';\nimport { filterQuery } from './helpers/filterQuery.ts';\nimport { getDataValue } from './helpers/getDataValue.ts';\nimport { hasTypename } from './helpers/hasTypename.ts';\nimport { isLastResponseChunk } from './helpers/isLastResponseChunk.ts';\nimport { isNotLastResponseChunk } from './helpers/isNotLastResponseChunk.ts';\nimport { isNotResponseChunk } from './helpers/isNotResponseChunk.ts';\nimport { mergeDataSets } from './helpers/mergeObjects.ts';\nimport { mergeResponseDataSets } from './helpers/mergeResponseDataSets.ts';\nimport { normalizePatchResponseData } from './helpers/normalizePatchResponseData.ts';\nimport { getValidTypeIdValue } from './helpers/validTypeIdValue.ts';\nimport {\n type AnalyzeQueryResult,\n type AncestorKeysAndPaths,\n type CacheManagerContext,\n type CacheManagerDef,\n type CachedAncestorFieldData,\n type CachedResponseData,\n type CheckCacheEntryResult,\n type DataForCachingEntry,\n type FieldCount,\n type FieldPathChecklist,\n type MergedCachedFieldData,\n type PartialQueryResponse,\n type PartialQueryResponses,\n type QueryResponseCacheEntry,\n type ResponseDataForCaching,\n type TypenamesAndKind,\n type UserOptions,\n} from './types.ts';\n\nexport class CacheManager implements CacheManagerDef {\n private static _countFieldPathChecklist(fieldPathChecklist: FieldPathChecklist): FieldCount {\n const fieldCount: FieldCount = { missing: 0, total: 0 };\n\n for (const [, checklistValues] of fieldPathChecklist) {\n fieldCount.total += checklistValues.length;\n const missing = checklistValues.filter(({ hasData }) => !hasData);\n fieldCount.missing += missing.length;\n }\n\n return fieldCount;\n }\n\n private static _getFieldDataFromAncestor<T>(ancestorFieldData: unknown, propNameOrIndex: string | number) {\n const dataValue = getDataValue<T>(ancestorFieldData, propNameOrIndex);\n return isObjectLike(dataValue) ? cloneDeep(dataValue) : dataValue;\n }\n\n private static _getOperationCacheControl(cacheMetadata: CacheMetadata | undefined, operation: string): string {\n const defaultCacheControl = HEADER_NO_CACHE;\n\n if (!cacheMetadata) {\n return defaultCacheControl;\n }\n\n const cacheability = cacheMetadata.get(operation);\n return cacheability ? cacheability.printCacheControl() : defaultCacheControl;\n }\n\n private static _isNodeEntity(fieldTypeInfo?: FieldTypeInfo): boolean {\n if (!fieldTypeInfo) {\n return false;\n }\n\n const { isEntity, possibleTypes } = fieldTypeInfo;\n return isEntity || possibleTypes.some(type => !!type.isEntity);\n }\n\n private static _isNodeRequestFieldPath(fieldTypeInfo?: FieldTypeInfo): boolean {\n return (\n !!fieldTypeInfo &&\n (this._isNodeEntity(fieldTypeInfo) || fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives)\n );\n }\n\n private static _isValid(cacheability: Cacheability): boolean {\n const noCache = get(cacheability, [METADATA, CACHE_CONTROL, NO_CACHE], false);\n return !noCache && cacheability.checkTTL();\n }\n\n private static _mergeResponseCacheMetadata(\n cacheMetadata: CacheMetadata,\n partialQueryResponse?: PartialQueryResponse\n ): CacheMetadata {\n if (!partialQueryResponse) {\n return cacheMetadata;\n }\n\n return new Map([...partialQueryResponse.cacheMetadata, ...cacheMetadata]);\n }\n\n private static _setCachedData(\n responseData: unknown,\n { data }: MergedCachedFieldData,\n propNameOrIndex: string | number\n ): void {\n const setData = (value: unknown) => {\n if (isArray(responseData) && isNumber(propNameOrIndex)) {\n responseData[propNameOrIndex] = value;\n } else if (isPlainObject(responseData)) {\n responseData[propNameOrIndex] = value;\n }\n };\n\n if (!isObjectLike(data) && !isUndefined(data)) {\n setData(data);\n } else if (isArray(data)) {\n setData([]);\n } else if (isPlainObject(data)) {\n setData({});\n }\n }\n\n private static _setCachedResponseData(\n cachedFieldData: MergedCachedFieldData,\n { cacheMetadata, data, fieldPathChecklist }: CachedResponseData,\n { propNameOrIndex, requestFieldPath }: KeysAndPaths,\n typeNamesAndKind: TypenamesAndKind,\n _options: RequestOptions,\n { operation }: CacheManagerContext\n ) {\n CacheManager._setCacheMetadata(cacheMetadata, cachedFieldData.cacheability, requestFieldPath, operation);\n CacheManager._setFieldPathChecklist(fieldPathChecklist, cachedFieldData, requestFieldPath, typeNamesAndKind);\n CacheManager._setCachedData(data, cachedFieldData, propNameOrIndex);\n }\n\n private static _setCacheMetadata(\n cacheMetadata: CacheMetadata,\n cacheability: Cacheability | undefined,\n requestFieldPath: string,\n operation: string\n ): void {\n if (!cacheability) {\n return;\n }\n\n cacheMetadata.set(requestFieldPath, cacheability);\n const operationCacheability = cacheMetadata.get(operation);\n\n if (!operationCacheability || operationCacheability.metadata.ttl > cacheability.metadata.ttl) {\n cacheMetadata.set(operation, cacheability);\n }\n }\n\n private static _setFieldPathChecklist(\n fieldPathChecklist: FieldPathChecklist,\n { data }: MergedCachedFieldData,\n requestFieldPath: string,\n { dataTypename: dataTypeName, fieldTypename: fieldTypeName, fragmentKind, fragmentName }: TypenamesAndKind\n ): void {\n if (isUndefined(fieldTypeName) || fragmentKind === Kind.FRAGMENT_SPREAD) {\n if (fieldPathChecklist.has(requestFieldPath)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [{ fragmentKind, fragmentName, hasData: !isUndefined(data) }]);\n return;\n }\n\n if (dataTypeName !== fieldTypeName) {\n return;\n }\n\n const entry = fieldPathChecklist.get(requestFieldPath);\n const checklistValues = entry ?? [];\n\n if (checklistValues.some(({ typeName }) => typeName === dataTypeName)) {\n return;\n }\n\n fieldPathChecklist.set(requestFieldPath, [\n ...checklistValues,\n { fragmentKind, fragmentName, hasData: !isUndefined(data), typeName: dataTypeName },\n ]);\n }\n\n private _cache: Core;\n private _cascadeCacheControl: boolean;\n private _fallbackOperationCacheability: string;\n private _partialQueryResponses: PartialQueryResponses = new Map();\n private _responseChunksAwaitingCaching = new Map<string, RawResponseDataWithMaybeCacheMetadata[]>();\n private _typeCacheDirectives: Record<string, string>;\n private _typeIDKey: string;\n\n constructor(options: UserOptions) {\n const errors: ArgsError[] = [];\n\n if (!('cache' in options)) {\n errors.push(new ArgsError('@graphql-box/cache-manager expected cache to be in options.'));\n }\n\n if (!!options.typeCacheDirectives && !isPlainObject(options.typeCacheDirectives)) {\n const message = '@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object.';\n errors.push(new ArgsError(message));\n }\n\n if (errors.length > 0) {\n throw new GroupedError('@graphql-box/cache-manager argument validation errors.', errors);\n }\n\n this._cache = options.cache;\n this._cascadeCacheControl = options.cascadeCacheControl ?? false;\n this._fallbackOperationCacheability = options.fallbackOperationCacheability ?? NO_CACHE;\n this._typeCacheDirectives = options.typeCacheDirectives ?? {};\n this._typeIDKey = options.typeIDKey ?? DEFAULT_TYPE_ID_KEY;\n }\n\n public async analyzeQuery(\n requestData: RequestData,\n options: RequestOptions,\n context: RequestContext\n ): Promise<AnalyzeQueryResult> {\n const { ast, hash } = requestData;\n\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(ast),\n typeIDKey: this._typeIDKey,\n };\n\n const cachedResponseData = await this._retrieveCachedResponseData(requestData, options, cacheManagerContext);\n const { cacheMetadata, data, fieldCount } = cachedResponseData;\n\n /**\n * Second half of check is required for the scenario where the only matching data is\n * the typeIDKey field, i.e. \"id\", in which case there is no point settings a partial\n * query reponse because we request the typeIDKey field with every request.\n */\n if (fieldCount.missing === fieldCount.total || areOnlyPopulatedFieldsTypeIdKeys(data, this._typeIDKey)) {\n return { updated: requestData };\n }\n\n if (!fieldCount.missing) {\n const dataCaching = this._setQueryResponseCacheEntry(hash, { cacheMetadata, data }, options, cacheManagerContext);\n\n if (options.awaitDataCaching) {\n await dataCaching;\n }\n\n return { response: { cacheMetadata, data } };\n }\n\n const filteredAST = filterQuery(requestData, cachedResponseData, cacheManagerContext);\n const filteredRequest = print(filteredAST);\n const { fragmentDefinitions, typeIDKey, ...rest } = cacheManagerContext;\n assign(context, { ...rest, filteredRequest });\n this._setPartialQueryResponse(hash, { cacheMetadata, data }, options, context);\n\n return {\n updated: { ast: filteredAST, hash: hashRequest(filteredRequest), request: filteredRequest },\n };\n }\n\n get cache(): Core {\n return this._cache;\n }\n\n public async cacheQuery(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions((updatedRequestData ?? requestData).ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, updatedRequestData, rawResponseData, options, cacheManagerContext);\n }\n\n public async cacheResponse(\n requestData: RequestData,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: RequestContext\n ): Promise<ResponseData> {\n const cacheManagerContext: CacheManagerContext = {\n ...context,\n fragmentDefinitions: getFragmentDefinitions(requestData.ast),\n typeIDKey: this._typeIDKey,\n };\n\n return this._cacheResponse(requestData, undefined, rawResponseData, options, cacheManagerContext);\n }\n\n public async checkCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: RequestContext & { requestFieldCacheKey?: string }\n ): Promise<CheckCacheEntryResult | false> {\n return this._checkCacheEntry(cacheType, hash, options, context);\n }\n\n public async checkQueryResponseCacheEntry(\n hash: string,\n options: RequestOptions,\n context: RequestContext\n ): Promise<ResponseData | false> {\n const result = await this._checkCacheEntry(QUERY_RESPONSES, hash, options, context);\n\n if (!result) {\n return false;\n }\n\n const { cacheMetadata, data } = result.entry as QueryResponseCacheEntry;\n\n return {\n cacheMetadata: rehydrateCacheMetadata(cacheMetadata),\n data,\n };\n }\n\n public deletePartialQueryResponse(hash: string): void {\n this._partialQueryResponses.delete(hash);\n }\n\n public async setQueryResponseCacheEntry(\n requestData: RequestData,\n responseData: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n return this._setQueryResponseCacheEntry(requestData.hash, responseData, options, context);\n }\n\n private async _analyzeFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData & { data: unknown },\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n await (hasChildFields(fieldNode, { fragmentDefinitions: context.fragmentDefinitions })\n ? this._analyzeParentFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context)\n : this._analyzeLeafFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context));\n }\n\n private async _analyzeLeafFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData & { data: unknown },\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const { entityData, fragmentKind, fragmentName, requestFieldPathData, typeName } = cachedAncestorFieldData;\n\n const dataTypename = hasTypename(entityData)\n ? entityData.__typename\n : hasTypename(requestFieldPathData)\n ? requestFieldPathData.__typename\n : undefined;\n\n const typenamesAndKind = {\n dataTypename,\n fieldTypename: typeName,\n fragmentKind,\n fragmentName,\n };\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context\n );\n\n CacheManager._setCachedResponseData(\n { cacheability, data: entry },\n cachedResponseData,\n keysAndPaths,\n typenamesAndKind,\n options,\n context\n );\n } else {\n const cachedFieldData =\n CacheManager._getFieldDataFromAncestor(entityData, propNameOrIndex) ??\n CacheManager._getFieldDataFromAncestor(requestFieldPathData, propNameOrIndex);\n\n CacheManager._setFieldPathChecklist(\n cachedResponseData.fieldPathChecklist,\n { data: cachedFieldData },\n requestFieldPath,\n typenamesAndKind\n );\n\n CacheManager._setCachedData(cachedResponseData.data, { data: cachedFieldData }, propNameOrIndex);\n }\n }\n\n private async _analyzeParentFieldNode(\n fieldNode: FieldNode,\n cachedAncestorFieldData: CachedAncestorFieldData,\n cachedResponseData: CachedResponseData,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(fieldNode, cachedAncestorFieldData, context);\n const { propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath)!;\n\n const { cacheability, data, entityData, requestFieldPathData } = await this._retrieveCachedParentNodeData(\n cachedAncestorFieldData,\n keysAndPaths,\n fieldTypeInfo,\n options,\n context\n );\n\n const { fragmentKind, fragmentName, typeName } = cachedAncestorFieldData;\n\n CacheManager._setCachedResponseData(\n { cacheability, data },\n cachedResponseData,\n keysAndPaths,\n { dataTypename: get(data, TYPE_NAME_KEY), fieldTypename: typeName, fragmentKind, fragmentName },\n options,\n context\n );\n\n if (!isObjectLike(data)) {\n return;\n }\n\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n fieldNode,\n data,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n childTypeName: string | undefined,\n childFragmentKind: string | undefined,\n childFragmentName: string | undefined,\n childIndex?: number\n ) => {\n promises.push(\n this._analyzeFieldNode(\n childField,\n {\n cacheability,\n entityData,\n fragmentKind: childFragmentKind,\n fragmentName: childFragmentName,\n index: childIndex,\n requestFieldCacheKey,\n requestFieldPath,\n requestFieldPathData,\n typeName: childTypeName,\n },\n {\n ...cachedResponseData,\n /**\n * `cachedResponseData.data[propNameOrIndex]` will always be either an empty array\n * or an empty object at this point as based on whether `data` is object-like\n * `cachedResponseData.data[propNameOrIndex]` is set accordingly in\n * _setCachedResponseData > _setCachedData\n */\n data: getDataValue<PlainData>(cachedResponseData.data, propNameOrIndex)!,\n },\n options,\n context\n )\n );\n }\n );\n\n await Promise.all(promises);\n }\n\n private _buildCacheMetadata(\n { ast }: RequestData,\n { data, ...otherProps }: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext\n ): CacheMetadata {\n const cacheMetadata = this._createCacheMetadata({ data, ...otherProps }, context);\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n\n if (!queryNode) {\n return cacheMetadata;\n }\n\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cacheMetadata;\n }\n\n for (const { fieldNode } of fieldsAndTypeNames)\n this._setFieldCacheability(\n fieldNode,\n { requestFieldPath: context.operation },\n { cacheMetadata, data },\n options,\n context\n );\n\n return cacheMetadata;\n }\n\n private async _cacheResponse(\n requestData: RequestData,\n updatedRequestData: RequestData | undefined,\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<ResponseData> {\n const normalizedResponseData = normalizePatchResponseData(rawResponseData, context);\n let responseDataForCaching: RawResponseDataWithMaybeCacheMetadata | undefined = normalizedResponseData;\n\n if (isNotLastResponseChunk(rawResponseData, context)) {\n this._setResponseChunksAwaitingCaching(normalizedResponseData, context);\n responseDataForCaching = undefined;\n }\n\n if (isLastResponseChunk(rawResponseData, context)) {\n responseDataForCaching = this._retrieveResponseDataForCaching(normalizedResponseData, context);\n }\n\n const dataCaching: Promise<void>[] = [];\n\n if (responseDataForCaching) {\n const { data } = responseDataForCaching;\n const cacheMetadata = this._buildCacheMetadata(requestData, responseDataForCaching, options, context);\n\n dataCaching.push(\n this._setEntityAndRequestFieldPathCacheEntries(\n requestData,\n {\n cacheMetadata,\n entityData: cloneDeep(data),\n requestFieldPathData: cloneDeep(data),\n },\n options,\n context\n )\n );\n\n let queryCacheMetadata: CacheMetadata | undefined;\n let queryData: PlainData | undefined;\n\n if (context.operation === OperationTypeNode.QUERY) {\n let partialQueryResponse: PartialQueryResponse | undefined;\n\n if (context.queryFiltered && updatedRequestData) {\n dataCaching.push(\n this._setQueryResponseCacheEntry(updatedRequestData.hash, { cacheMetadata, data }, options, context)\n );\n\n partialQueryResponse = this._getPartialQueryResponse(requestData.hash);\n }\n\n queryCacheMetadata = CacheManager._mergeResponseCacheMetadata(cacheMetadata, partialQueryResponse);\n queryData = this._mergeResponseData(data, partialQueryResponse);\n\n dataCaching.push(\n this._setQueryResponseCacheEntry(\n requestData.hash,\n { cacheMetadata: queryCacheMetadata, data: queryData },\n options,\n context\n )\n );\n }\n\n if (options.awaitDataCaching) {\n await Promise.all(dataCaching);\n }\n\n if (isNotResponseChunk(normalizedResponseData, context) && queryCacheMetadata && queryData) {\n return {\n cacheMetadata: queryCacheMetadata,\n data: queryData,\n };\n }\n }\n\n const { data, hasNext, paths } = normalizedResponseData;\n\n return {\n cacheMetadata: this._buildCacheMetadata(requestData, normalizedResponseData, options, context),\n data,\n hasNext,\n paths,\n };\n }\n\n private async _checkCacheEntry<T>(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string }\n ): Promise<CheckCacheEntryResult<T> | false> {\n try {\n const cacheability = await this._hasCacheEntry(cacheType, hash);\n\n if (!cacheability || !CacheManager._isValid(cacheability)) {\n return false;\n }\n\n const entry = await this._getCacheEntry<T>(cacheType, hash, options, context);\n\n if (isUndefined(entry)) {\n return false;\n }\n\n return { cacheability, entry };\n } catch {\n return false;\n }\n }\n\n private _createCacheMetadata(\n { _cacheMetadata, headers }: RawResponseDataWithMaybeCacheMetadata,\n { operation }: CacheManagerContext\n ): CacheMetadata {\n const cacheMetadata = new Map<string, Cacheability>();\n\n const cacheability = deriveOpCacheability({\n _cacheMetadata,\n fallback: this._fallbackOperationCacheability,\n headers,\n });\n\n cacheMetadata.set(operation, cacheability);\n\n if (_cacheMetadata) {\n rehydrateCacheMetadata(_cacheMetadata, cacheMetadata);\n }\n\n return cacheMetadata;\n }\n\n @logCacheQuery()\n private async _getCacheEntry<T>(\n cacheType: CacheTypes,\n hash: string,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string }\n ): Promise<T | undefined> {\n return this._cache.get<T>(`${cacheType}::${hash}`);\n }\n\n private _getPartialQueryResponse(hash: string): PartialQueryResponse | undefined {\n const partialQueryResponse = this._partialQueryResponses.get(hash);\n this._partialQueryResponses.delete(hash);\n return partialQueryResponse;\n }\n\n private async _hasCacheEntry(cacheType: CacheTypes, hash: string): Promise<Cacheability | false> {\n try {\n return await this._cache.has(`${cacheType}::${hash}`);\n } catch {\n return false;\n }\n }\n\n private _isFieldEntity(fieldData: unknown, { isEntity, possibleTypes }: FieldTypeInfo): boolean {\n if (!isPlainObject(fieldData) || !(this._typeIDKey in fieldData)) {\n return false;\n }\n\n if (isEntity) {\n return true;\n }\n\n if (possibleTypes.length === 0) {\n return false;\n }\n\n return possibleTypes.some(type => type.typeName === fieldData.__typename);\n }\n\n private _mergeResponseData(responseData: PlainData, partialQueryResponse?: PartialQueryResponse): PlainData {\n if (!partialQueryResponse) {\n return responseData;\n }\n\n return mergeDataSets(partialQueryResponse.data, responseData, this._typeIDKey);\n }\n\n private async _parseEntityAndRequestFieldPathCacheEntryData(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldCacheKey, requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(requestFieldPathData, responseDataPath) as unknown;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n if (isObjectLike(fieldData)) {\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n field,\n fieldData,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number\n ) => {\n promises.push(\n this._parseEntityAndRequestFieldPathCacheEntryData(\n childField,\n { index: childIndex, requestFieldCacheKey, requestFieldPath, responseDataPath },\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context\n )\n );\n }\n );\n\n await Promise.all(promises);\n }\n\n await this._setEntityAndRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData },\n options,\n context\n );\n }\n\n private async _retrieveCachedEntityData(\n validTypeIDValue: string | number,\n { possibleTypes, typeName }: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<Partial<CheckCacheEntryResult<EntityData>>> {\n const typeNames = [...possibleTypes.map(type => type.typeName), typeName];\n\n const checkResults = await Promise.all(\n typeNames.map(name =>\n this._checkCacheEntry<EntityData>(DATA_ENTITIES, `${name}::${validTypeIDValue}`, options, context)\n )\n );\n\n const validResults = checkResults.filter(result => !!result) as CheckCacheEntryResult<EntityData>[];\n let validResult: CheckCacheEntryResult<EntityData> | undefined;\n\n if (validResults.length === 1) {\n validResult = validResults[0];\n } else if (validResults.length > 1) {\n validResults.sort(({ cacheability: a }, { cacheability: b }) => a.metadata.ttl - b.metadata.ttl);\n\n validResult = {\n cacheability: validResults[0]!.cacheability,\n entry: validResults.reduce<Partial<EntityData>>(\n (obj, { entry }) => mergeDataSets(obj, entry, this._typeIDKey),\n {}\n ) as EntityData,\n };\n }\n\n return validResult ?? {};\n }\n\n private async _retrieveCachedParentNodeData(\n { entityData: ancestorEntityData, requestFieldPathData: ancestorRequestFieldPathData }: CachedAncestorFieldData,\n { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey }: KeysAndPaths,\n fieldTypeInfo: FieldTypeInfo,\n options: RequestOptions,\n context: CacheManagerContext\n ) {\n let entityData = CacheManager._getFieldDataFromAncestor(ancestorEntityData, propNameOrIndex);\n let requestFieldPathData = CacheManager._getFieldDataFromAncestor(ancestorRequestFieldPathData, propNameOrIndex);\n let cacheability: Cacheability | undefined;\n\n if (CacheManager._isNodeRequestFieldPath(fieldTypeInfo)) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedRequestFieldPathData(\n hashedRequestFieldCacheKey,\n requestFieldCacheKey,\n options,\n context\n );\n\n requestFieldPathData = combineDataSets(requestFieldPathData, entry, this._typeIDKey);\n\n if (entryCacheability) {\n cacheability = entryCacheability;\n }\n }\n\n const validTypeIDValue = getValidTypeIdValue(requestFieldPathData, fieldTypeInfo, this._typeIDKey);\n\n if (CacheManager._isNodeEntity(fieldTypeInfo) && validTypeIDValue) {\n const { cacheability: entryCacheability, entry } = await this._retrieveCachedEntityData(\n validTypeIDValue,\n fieldTypeInfo,\n options,\n context\n );\n\n entityData = combineDataSets(entityData, entry, this._typeIDKey);\n\n if (entryCacheability && (!cacheability || entryCacheability.metadata.ttl > cacheability.metadata.ttl)) {\n cacheability = entryCacheability;\n }\n }\n\n const data = isEqual(entityData, requestFieldPathData)\n ? entityData\n : combineDataSets(entityData, requestFieldPathData, this._typeIDKey);\n\n return {\n cacheability,\n data,\n entityData,\n requestFieldPathData,\n };\n }\n\n private async _retrieveCachedRequestFieldPathData(\n hash: string,\n requestFieldCacheKey: string,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<Partial<CheckCacheEntryResult>> {\n return (\n (await this._checkCacheEntry(REQUEST_FIELD_PATHS, hash, options, { ...context, requestFieldCacheKey })) || {}\n );\n }\n\n private async _retrieveCachedResponseData(\n { ast }: RequestData,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<CachedResponseData> {\n const cachedResponseData: CachedResponseData = {\n cacheMetadata: new Map(),\n data: {},\n fieldCount: { missing: 0, total: 0 },\n fieldPathChecklist: new Map(),\n };\n\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n\n if (!queryNode) {\n return cachedResponseData;\n }\n\n const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cachedResponseData;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) =>\n this._analyzeFieldNode(fieldNode, { requestFieldPath: context.operation }, cachedResponseData, options, context)\n )\n );\n\n cachedResponseData.fieldCount = CacheManager._countFieldPathChecklist(cachedResponseData.fieldPathChecklist);\n return cachedResponseData;\n }\n\n private _retrieveResponseDataForCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(context.requestID)!;\n\n this._responseChunksAwaitingCaching.delete(context.requestID);\n return mergeResponseDataSets([...responseChunks, normalizedResponseData]);\n }\n\n @logCacheEntry()\n private async _setCacheEntry(\n cacheType: CacheTypes,\n hash: string,\n value: unknown,\n cachemapOptions: CachemapOptions,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string }\n ): Promise<void> {\n try {\n await this._cache.set(`${cacheType}::${hash}`, cloneDeep(value), cachemapOptions);\n } catch {\n // no catch\n }\n }\n\n private async _setEntityAndRequestFieldPathCacheEntries(\n requestData: RequestData,\n responseData: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const operationNode = getOperationDefinitions(requestData.ast, context.operation)[0];\n\n if (!operationNode) {\n return;\n }\n\n const fieldsAndTypeNames = getChildFields(operationNode);\n\n if (!fieldsAndTypeNames) {\n return;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) => {\n return this._parseEntityAndRequestFieldPathCacheEntryData(\n fieldNode,\n { requestFieldPath: context.operation },\n responseData,\n options,\n context\n );\n })\n );\n }\n\n private async _setEntityAndRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheMetadata, entityData, requestFieldPathData }: ResponseDataForCaching,\n options: RequestOptions,\n context: CacheManagerContext\n ) {\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n const fieldData = get(entityData, responseDataPath) as unknown;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const cacheability = cacheMetadata.get(requestFieldPath);\n\n if (isUndefined(fieldData) || !fieldTypeInfo || !cacheability) {\n return;\n }\n\n const promises: Promise<void>[] = [];\n\n promises.push(\n this._setRequestFieldPathCacheEntry(\n field,\n keysAndPaths,\n { cacheability, data: requestFieldPathData, fieldTypeInfo },\n options,\n context\n )\n );\n\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n\n if (!isEntity && fieldTypeInfo.hasArguments) {\n unset(entityData, responseDataPath);\n }\n\n if (isEntity) {\n promises.push(\n this._setEntityCacheEntry(keysAndPaths, { cacheability, data: entityData, fieldTypeInfo }, options, context)\n );\n }\n\n await Promise.all(promises);\n }\n\n private async _setEntityCacheEntry(\n { responseDataPath }: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext\n ) {\n let fieldData = get(data, responseDataPath) as EntityData;\n const fieldTypeName = fieldTypeInfo.isEntity ? fieldTypeInfo.typeName : fieldData.__typename;\n const entityDataKey = `${fieldTypeName}::${String(fieldData[this._typeIDKey])}`;\n const result = await this._checkCacheEntry<EntityData>(DATA_ENTITIES, entityDataKey, options, context);\n\n if (result) {\n fieldData = mergeDataSets(result.entry, fieldData, this._typeIDKey);\n }\n\n await this._setCacheEntry(\n DATA_ENTITIES,\n entityDataKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n context\n );\n\n set(data, responseDataPath, { __cacheKey: `${DATA_ENTITIES}::${entityDataKey}` });\n }\n\n private _setFieldCacheability(\n field: FieldNode,\n ancestorKeysAndPaths: AncestorKeysAndPaths,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext\n ): void {\n const { requestFieldPath: ancestorRequestFieldPath } = ancestorKeysAndPaths;\n const keysAndPaths = buildFieldKeysAndPaths(field, ancestorKeysAndPaths, context);\n const { requestFieldPath, responseDataPath } = keysAndPaths;\n\n if (!isObjectLike(data)) {\n return;\n }\n\n const fieldData = get(data, responseDataPath) as unknown;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!isObjectLike(fieldData) && !fieldTypeInfo?.hasDirectives) {\n return;\n }\n\n this._setFieldTypeCacheDirective(cacheMetadata, { ancestorRequestFieldPath, requestFieldPath }, context);\n\n if (isObjectLike(fieldData)) {\n iterateChildFields(\n field,\n fieldData,\n context.fragmentDefinitions,\n (\n childField: FieldNode,\n _typeName: string | undefined,\n _fragmentKind: string | undefined,\n _fragmentName: string | undefined,\n childIndex?: number\n ) => {\n this._setFieldCacheability(\n childField,\n { index: childIndex, requestFieldPath, responseDataPath },\n { cacheMetadata, data },\n options,\n context\n );\n }\n );\n }\n }\n\n private _setFieldTypeCacheDirective(\n cacheMetadata: CacheMetadata,\n { ancestorRequestFieldPath, requestFieldPath }: { ancestorRequestFieldPath?: string; requestFieldPath: string },\n { fieldTypeMap, operation }: CacheManagerContext\n ): void {\n if (cacheMetadata.has(requestFieldPath)) {\n return;\n }\n\n const fieldTypeInfo = fieldTypeMap.get(requestFieldPath);\n\n if (fieldTypeInfo && this._typeCacheDirectives[fieldTypeInfo.typeName]) {\n const cacheability = new Cacheability({ cacheControl: this._typeCacheDirectives[fieldTypeInfo.typeName] });\n CacheManager._setCacheMetadata(cacheMetadata, cacheability, requestFieldPath, operation);\n } else if (this._cascadeCacheControl && ancestorRequestFieldPath) {\n CacheManager._setCacheMetadata(\n cacheMetadata,\n cacheMetadata.get(ancestorRequestFieldPath),\n requestFieldPath,\n operation\n );\n }\n }\n\n @logPartialCompiled()\n private _setPartialQueryResponse(\n hash: string,\n partialQueryResponse: PartialQueryResponse,\n _options: RequestOptions,\n _context: CacheManagerContext\n ): void {\n this._partialQueryResponses.set(hash, partialQueryResponse);\n }\n\n private async _setQueryResponseCacheEntry(\n hash: string,\n { cacheMetadata, data }: ResponseData,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const dehydratedCacheMetadata = dehydrateCacheMetadata(cacheMetadata);\n const cacheControl = CacheManager._getOperationCacheControl(cacheMetadata, context.operation);\n\n await this._setCacheEntry(\n QUERY_RESPONSES,\n hash,\n { cacheMetadata: dehydratedCacheMetadata, data },\n { cacheHeaders: { cacheControl }, tag: options.tag },\n options,\n context\n );\n }\n\n private async _setRequestFieldPathCacheEntry(\n field: FieldNode,\n keysAndPaths: KeysAndPaths,\n { cacheability, data, fieldTypeInfo }: DataForCachingEntry,\n options: RequestOptions,\n context: CacheManagerContext\n ): Promise<void> {\n const { hashedRequestFieldCacheKey, requestFieldCacheKey, responseDataPath } = keysAndPaths;\n let fieldData = get(data, responseDataPath) as unknown;\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n const hasArgsOrDirectives = fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives;\n\n if (context.operation === OperationTypeNode.QUERY && (isEntity || hasArgsOrDirectives)) {\n if (isPlainObject(fieldData) && field.selectionSet?.selections) {\n fieldData = filterOutPropsWithArgsOrDirectives(fieldData, field.selectionSet.selections, keysAndPaths, context);\n }\n\n const result = await this._checkCacheEntry(REQUEST_FIELD_PATHS, hashedRequestFieldCacheKey, options, {\n ...context,\n requestFieldCacheKey,\n });\n\n if (result && isObjectLike(result.entry) && isObjectLike(fieldData)) {\n fieldData = mergeDataSets(result.entry, fieldData, this._typeIDKey);\n }\n\n await this._setCacheEntry(\n REQUEST_FIELD_PATHS,\n hashedRequestFieldCacheKey,\n fieldData,\n { cacheHeaders: { cacheControl: cacheability.printCacheControl() }, tag: options.tag },\n options,\n { ...context, requestFieldCacheKey }\n );\n\n if (hasChildFields(field, { fragmentDefinitions: context.fragmentDefinitions })) {\n if (isEntity) {\n set(data, responseDataPath, { __cacheKey: `${REQUEST_FIELD_PATHS}::${hashedRequestFieldCacheKey}` });\n } else {\n unset(data, responseDataPath);\n }\n }\n }\n }\n\n private _setResponseChunksAwaitingCaching(\n normalizedResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n ) {\n const responseChunks = this._responseChunksAwaitingCaching.get(context.requestID);\n\n if (responseChunks) {\n this._responseChunksAwaitingCaching.set(context.requestID, [...responseChunks, normalizedResponseData]);\n } else {\n this._responseChunksAwaitingCaching.set(context.requestID, [normalizedResponseData]);\n }\n }\n}\n","import { CACHE_ENTRY_QUERIED, type CacheTypes, type RequestOptions } from '@graphql-box/core';\nimport type { CacheManagerContext, CacheManagerDef } from '../types.ts';\n\ntype Descriptor = (\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string }\n) => Promise<never | undefined>;\n\nexport const logCacheQuery = () => {\n return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {\n const method = descriptor.value;\n\n if (!method) {\n return;\n }\n\n descriptor.value = async function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {\n return new Promise(resolve => {\n void (async () => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[3];\n\n if (!debugManager) {\n resolve(await method.apply(this, args));\n return;\n }\n\n const startTime = debugManager.now();\n const result = await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve(result);\n\n const payload = {\n cacheType: args[0],\n context: otherContext,\n options: args[2],\n requestHash: args[1],\n result,\n stats: { duration, endTime, startTime },\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.log(CACHE_ENTRY_QUERIED, payload);\n })();\n });\n };\n };\n};\n","import { CACHE_ENTRY_ADDED, type CacheTypes, type CachemapOptions, type RequestOptions } from '@graphql-box/core';\nimport type { CacheManagerContext, CacheManagerDef } from '../types.ts';\n\ntype Descriptor = (\n cacheType: CacheTypes,\n hash: string,\n value: unknown,\n cachemapOptions: CachemapOptions,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string }\n) => Promise<void>;\n\nexport const logCacheEntry = () => {\n return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {\n const method = descriptor.value;\n\n if (!method) {\n return;\n }\n\n descriptor.value = async function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {\n return new Promise<void>(resolve => {\n void (async () => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[5];\n\n if (!debugManager) {\n await method.apply(this, args);\n resolve();\n return;\n }\n\n const startTime = debugManager.now();\n await method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n resolve();\n\n const payload = {\n cacheType: args[0],\n cachemapOptions: args[3],\n context: otherContext,\n options: args[4],\n requestHash: args[1],\n stats: { duration, endTime, startTime },\n value: args[2],\n ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),\n };\n\n debugManager.log(CACHE_ENTRY_ADDED, payload);\n })();\n });\n };\n };\n};\n","import { PARTIAL_QUERY_COMPILED, type RequestOptions } from '@graphql-box/core';\nimport type { CacheManagerContext, CacheManagerDef, PartialQueryResponse } from '../types.ts';\n\ntype Descriptor = (\n hash: string,\n partialQueryResponse: PartialQueryResponse,\n options: RequestOptions,\n context: CacheManagerContext\n) => void;\n\nexport const logPartialCompiled = () => {\n return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {\n const method = descriptor.value;\n\n if (!method) {\n return;\n }\n\n descriptor.value = function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {\n const { debugManager, ...otherContext } = args[3];\n\n if (!debugManager) {\n method.apply(this, args);\n return;\n }\n\n const startTime = debugManager.now();\n method.apply(this, args);\n const endTime = debugManager.now();\n const duration = endTime - startTime;\n\n debugManager.log(PARTIAL_QUERY_COMPILED, {\n context: otherContext,\n options: args[2],\n requestHash: args[0],\n result: args[1],\n stats: { duration, endTime, startTime },\n });\n };\n };\n};\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { isString, set } from 'lodash-es';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const normalizePatchResponseData = (\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n) => {\n if (!context.normalizePatchResponseData) {\n return rawResponseData;\n }\n\n const { data, paths, ...rest } = rawResponseData;\n\n if (!paths?.length || !isString(paths[0])) {\n return rawResponseData;\n }\n\n return {\n ...rest,\n data: set({}, paths[0], data),\n paths,\n };\n};\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const isNotLastResponseChunk = (\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n) => context.hasDeferOrStream && rawResponseData.hasNext;\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const isLastResponseChunk = (\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n) => context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths;\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const isNotResponseChunk = (\n rawResponseData: RawResponseDataWithMaybeCacheMetadata,\n context: CacheManagerContext\n) => !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths;\n","import { type DehydratedCacheMetadata } from '@graphql-box/core';\nimport { Cacheability } from 'cacheability';\nimport { isEmpty } from 'lodash-es';\nimport { HEADER_CACHE_CONTROL } from '../constants.ts';\n\nexport type Params = {\n _cacheMetadata?: DehydratedCacheMetadata;\n fallback: string;\n headers?: Headers;\n};\n\nexport const deriveOpCacheability = ({ _cacheMetadata, fallback, headers }: Params): Cacheability => {\n if (_cacheMetadata && !isEmpty(_cacheMetadata)) {\n const [first, ...rest] = Object.values(_cacheMetadata);\n\n return new Cacheability({\n metadata: rest.reduce((acc, metadata) => {\n if (!acc) {\n return metadata;\n }\n\n if (metadata.ttl < acc.ttl) {\n return metadata;\n }\n\n return acc;\n }, first),\n });\n }\n\n if (headers?.has(HEADER_CACHE_CONTROL)) {\n return new Cacheability({ headers });\n }\n\n return new Cacheability({ cacheControl: fallback });\n};\n","import { type FieldTypeInfo } from '@graphql-box/core';\nimport { isPlainObject } from '@graphql-box/helpers';\n\nexport const getValidTypeIdValue = (\n requestFieldPathData: unknown,\n { typeIDValue }: FieldTypeInfo,\n typeIDKey: string\n): string | number | undefined => {\n if (typeIDValue) {\n return typeIDValue;\n }\n\n if (isPlainObject(requestFieldPathData)) {\n return requestFieldPathData[typeIDKey] as string | number | undefined;\n }\n\n return;\n};\n","import { type RawResponseDataWithMaybeCacheMetadata } from '@graphql-box/core';\nimport { merge } from 'lodash-es';\n\nexport const mergeResponseDataSets = (responseDataSets: RawResponseDataWithMaybeCacheMetadata[]) => {\n return responseDataSets.reduce<RawResponseDataWithMaybeCacheMetadata>(\n (acc, dataSet, index) => {\n const { _cacheMetadata, data, hasNext, headers, paths } = dataSet;\n\n if (_cacheMetadata) {\n acc._cacheMetadata = acc._cacheMetadata ? { ...acc._cacheMetadata, ..._cacheMetadata } : _cacheMetadata;\n }\n\n acc.data = merge(acc.data, data);\n\n if (index === 0) {\n acc.headers = headers;\n }\n\n if (index === responseDataSets.length - 1) {\n acc.hasNext = hasNext;\n }\n\n if (paths) {\n if (!acc.paths) {\n acc.paths = [];\n }\n\n acc.paths.push(...paths);\n }\n\n return acc;\n },\n { data: {} }\n );\n};\n","import { type PlainObject } from '@graphql-box/core';\nimport { type KeysAndPaths, buildFieldKeysAndPaths, getName, resolveFragments } from '@graphql-box/helpers';\nimport { type SelectionNode } from 'graphql';\nimport { keys } from 'lodash-es';\nimport { type CacheManagerContext } from '../types.ts';\n\nexport const filterOutPropsWithArgsOrDirectives = (\n fieldData: PlainObject,\n selectionNodes: readonly SelectionNode[],\n ancestorKeysAndPaths: KeysAndPaths,\n context: CacheManagerContext\n) => {\n const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);\n\n return keys(fieldData).reduce<PlainObject>((acc, key) => {\n const match = fieldAndTypeName.find(({ fieldNode }) => getName(fieldNode) === key);\n\n if (match) {\n const { requestFieldPath } = buildFieldKeysAndPaths(match.fieldNode, ancestorKeysAndPaths, context);\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n\n if (!fieldTypeInfo?.hasArguments && !fieldTypeInfo?.hasDirectives) {\n acc[key] = fieldData[key];\n }\n }\n\n return acc;\n }, {});\n};\n"],"names":["NO_CACHE","checkValue","value","typeIDKey","isArray","reduce","acc","entry","isPlainObject","recursivelyCheckProps","data","keys","Object","length","key","isNumber","isString","mergeDataSets","obj","source","mergeObjects","_key","undefined","combineDataSets","dataSetA","dataSetB","isObjectLike","checkFieldPathChecklist","fieldPathChecklistValues","fieldTypeName","hasData","typeUnused","fieldPathChecklistValue","typeName","some","every","filterField","field","fieldPathChecklist","fragmentSpreadChecklist","ancestorRequestFieldPath","context","fragmentDefinitions","fieldsAndTypeNames","getChildFields","fragmentSpreadFieldCounter","index","fieldAndTypeName","fieldNode","childField","fragmentKind","fragmentName","childTypeName","Kind","FRAGMENT_SPREAD","total","childFieldName","getName","TYPE_NAME_KEY","requestFieldPath","buildFieldKeysAndPaths","get","counter","hasChildFields","deleteChildFields","filterFragmentSpreads","isEmpty","checklist","paths","push","deleteFragmentSpreads","deleted","filterInlineFragments","inlineFragments","getInlineFragments","filtered","fragment","deleteInlineFragments","filterIDsAndTypeNames","fieldNames","map","name","filterQuery","requestData","ast","queryNode","getOperationDefinitions","operation","createFragmentSpreadChecklist","request","match","RegExp","queryFiltered","filterFragmentDefinitions","definitionsToFilter","namesAndPaths","path","fragmentDefinition","definitionsToDelete","names","deleteFragmentDefinitions","include","getDataValue","hasTypename","CacheManager","_dec","_target","_propertyName","descriptor","method","async","args","Promise","resolve","debugManager","requestFieldCacheKey","otherContext","apply","this","startTime","now","result","endTime","duration","payload","cacheType","options","requestHash","stats","decryptedCacheKey","log","CACHE_ENTRY_QUERIED","_dec2","cachemapOptions","CACHE_ENTRY_ADDED","_dec3","PARTIAL_QUERY_COMPILED","_class","_countFieldPathChecklist","fieldCount","missing","checklistValues","filter","_getFieldDataFromAncestor","ancestorFieldData","propNameOrIndex","dataValue","cloneDeep","_getOperationCacheControl","cacheMetadata","defaultCacheControl","cacheability","printCacheControl","_isNodeEntity","fieldTypeInfo","isEntity","possibleTypes","type","_isNodeRequestFieldPath","hasArguments","hasDirectives","_isValid","checkTTL","_mergeResponseCacheMetadata","partialQueryResponse","Map","_setCachedData","responseData","setData","isUndefined","_setCachedResponseData","cachedFieldData","typeNamesAndKind","_options","_setCacheMetadata","_setFieldPathChecklist","set","operationCacheability","metadata","ttl","dataTypename","dataTypeName","fieldTypename","has","constructor","_defineProperty","errors","ArgsError","typeCacheDirectives","message","GroupedError","_cache","cache","_cascadeCacheControl","cascadeCacheControl","_fallbackOperationCacheability","fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","DEFAULT_TYPE_ID_KEY","analyzeQuery","hash","cacheManagerContext","getFragmentDefinitions","cachedResponseData","_retrieveCachedResponseData","areOnlyPopulatedFieldsTypeIdKeys","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","filteredAST","filteredRequest","print","rest","assign","_setPartialQueryResponse","hashRequest","cacheQuery","updatedRequestData","rawResponseData","_cacheResponse","cacheResponse","checkCacheEntry","_checkCacheEntry","checkQueryResponseCacheEntry","QUERY_RESPONSES","rehydrateCacheMetadata","deletePartialQueryResponse","_partialQueryResponses","delete","setQueryResponseCacheEntry","_analyzeFieldNode","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","hashedRequestFieldCacheKey","fieldTypeMap","entityData","requestFieldPathData","typenamesAndKind","__typename","_retrieveCachedRequestFieldPathData","_retrieveCachedParentNodeData","promises","iterateChildFields","childFragmentKind","childFragmentName","childIndex","all","_buildCacheMetadata","otherProps","_createCacheMetadata","_setFieldCacheability","normalizedResponseData","normalizePatchResponseData","responseDataForCaching","isNotLastResponseChunk","hasDeferOrStream","hasNext","_setResponseChunksAwaitingCaching","isLastResponseChunk","_retrieveResponseDataForCaching","queryCacheMetadata","queryData","_setEntityAndRequestFieldPathCacheEntries","OperationTypeNode","QUERY","_getPartialQueryResponse","_mergeResponseData","isNotResponseChunk","_hasCacheEntry","_getCacheEntry","_cacheMetadata","headers","deriveOpCacheability","fallback","first","values","Cacheability","cacheControl","_context","_isFieldEntity","fieldData","_parseEntityAndRequestFieldPathCacheEntryData","ancestorKeysAndPaths","responseDataPath","_typeName","_fragmentKind","_fragmentName","_setEntityAndRequestFieldPathCacheEntry","_retrieveCachedEntityData","validTypeIDValue","typeNames","validResults","DATA_ENTITIES","validResult","sort","a","b","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","getValidTypeIdValue","typeIDValue","isEqual","REQUEST_FIELD_PATHS","responseChunks","_responseChunksAwaitingCaching","requestID","responseDataSets","dataSet","merge","_setCacheEntry","operationNode","_setRequestFieldPathCacheEntry","unset","_setEntityCacheEntry","entityDataKey","String","cacheHeaders","tag","__cacheKey","_setFieldTypeCacheDirective","dehydratedCacheMetadata","dehydrateCacheMetadata","hasArgsOrDirectives","selectionSet","selections","filterOutPropsWithArgsOrDirectives","selectionNodes","resolveFragments","find","_applyDecoratedDescriptor","prototype","getOwnPropertyDescriptor"],"mappings":"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"}