@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.
- package/dist/cjs/index.cjs +1 -1476
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.mjs +1 -1474
- package/dist/esm/index.mjs.map +1 -1
- package/dist/production.analysis.txt +250 -0
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -15
- package/tsconfig.build.json +2 -2
- package/tsconfig.json +1 -1
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","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.cjs","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/deriveOpCacheability.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/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 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 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 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","deriveOpCacheability","_cacheMetadata","fallback","headers","isEmpty","first","rest","values","Cacheability","metadata","ttl","has","cacheControl","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","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","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","areOnlyPopulatedFieldsTypeIdKeys","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","filteredAST","filteredRequest","print","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","_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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"}
|