@graphql-box/cache-manager 4.1.4 → 5.0.0

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.
Files changed (334) hide show
  1. package/README.md +1 -5
  2. package/dist/cjs/index.cjs +1477 -0
  3. package/dist/cjs/index.cjs.map +1 -0
  4. package/{lib/module/main/index.js → dist/esm/index.mjs} +734 -331
  5. package/dist/esm/index.mjs.map +1 -0
  6. package/dist/types/cjs/constants.d.cts +6 -0
  7. package/dist/types/cjs/constants.d.cts.map +1 -0
  8. package/dist/types/cjs/debug/index.d.cts +4 -0
  9. package/dist/types/cjs/debug/index.d.cts.map +1 -0
  10. package/dist/types/cjs/debug/logCacheEntry.d.cts +8 -0
  11. package/dist/types/cjs/debug/logCacheEntry.d.cts.map +1 -0
  12. package/dist/types/cjs/debug/logCacheQuery.d.cts +8 -0
  13. package/dist/types/cjs/debug/logCacheQuery.d.cts.map +1 -0
  14. package/dist/types/cjs/debug/logPartialCompiled.d.cts +6 -0
  15. package/dist/types/cjs/debug/logPartialCompiled.d.cts.map +1 -0
  16. package/dist/types/cjs/helpers/areOnlyPopulatedFieldsTypeIdKeys.d.cts +3 -0
  17. package/dist/types/cjs/helpers/areOnlyPopulatedFieldsTypeIdKeys.d.cts.map +1 -0
  18. package/dist/types/cjs/helpers/checkFieldPathChecklist.d.cts +3 -0
  19. package/dist/types/cjs/helpers/checkFieldPathChecklist.d.cts.map +1 -0
  20. package/dist/types/cjs/helpers/combineData.d.cts +2 -0
  21. package/dist/types/cjs/helpers/combineData.d.cts.map +1 -0
  22. package/dist/types/cjs/helpers/createFragmentSpreadChecklist.d.cts +9 -0
  23. package/dist/types/cjs/helpers/createFragmentSpreadChecklist.d.cts.map +1 -0
  24. package/dist/types/cjs/helpers/deriveOpCacheability.d.cts +9 -0
  25. package/dist/types/cjs/helpers/deriveOpCacheability.d.cts.map +1 -0
  26. package/dist/types/cjs/helpers/filterField.d.cts +5 -0
  27. package/dist/types/cjs/helpers/filterField.d.cts.map +1 -0
  28. package/dist/types/cjs/helpers/filterFragmentDefinitions.d.cts +5 -0
  29. package/dist/types/cjs/helpers/filterFragmentDefinitions.d.cts.map +1 -0
  30. package/dist/types/cjs/helpers/filterFragmentSpreads.d.cts +5 -0
  31. package/dist/types/cjs/helpers/filterFragmentSpreads.d.cts.map +1 -0
  32. package/dist/types/cjs/helpers/filterIDsAndTypeNames.d.cts +4 -0
  33. package/dist/types/cjs/helpers/filterIDsAndTypeNames.d.cts.map +1 -0
  34. package/dist/types/cjs/helpers/filterInlineFragments.d.cts +4 -0
  35. package/dist/types/cjs/helpers/filterInlineFragments.d.cts.map +1 -0
  36. package/dist/types/cjs/helpers/filterOperationAndFragmentDefinitions.d.cts +3 -0
  37. package/dist/types/cjs/helpers/filterOperationAndFragmentDefinitions.d.cts.map +1 -0
  38. package/dist/types/cjs/helpers/filterOutPropsWithArgsOrDirectives.d.cts +6 -0
  39. package/dist/types/cjs/helpers/filterOutPropsWithArgsOrDirectives.d.cts.map +1 -0
  40. package/dist/types/cjs/helpers/filterQuery.d.cts +4 -0
  41. package/dist/types/cjs/helpers/filterQuery.d.cts.map +1 -0
  42. package/dist/types/cjs/helpers/getDataValue.d.cts +2 -0
  43. package/dist/types/cjs/helpers/getDataValue.d.cts.map +1 -0
  44. package/dist/types/cjs/helpers/hasTypename.d.cts +3 -0
  45. package/dist/types/cjs/helpers/hasTypename.d.cts.map +1 -0
  46. package/dist/types/cjs/helpers/isFirstResponseChunk.d.cts +4 -0
  47. package/dist/types/cjs/helpers/isFirstResponseChunk.d.cts.map +1 -0
  48. package/dist/types/cjs/helpers/isLastResponseChunk.d.cts +4 -0
  49. package/dist/types/cjs/helpers/isLastResponseChunk.d.cts.map +1 -0
  50. package/dist/types/cjs/helpers/isNotLastResponseChunk.d.cts +4 -0
  51. package/dist/types/cjs/helpers/isNotLastResponseChunk.d.cts.map +1 -0
  52. package/dist/types/cjs/helpers/isNotResponseChunk.d.cts +4 -0
  53. package/dist/types/cjs/helpers/isNotResponseChunk.d.cts.map +1 -0
  54. package/dist/types/cjs/helpers/mergeObjects.d.cts +2 -0
  55. package/dist/types/cjs/helpers/mergeObjects.d.cts.map +1 -0
  56. package/dist/types/cjs/helpers/mergeResponseDataSets.d.cts +3 -0
  57. package/dist/types/cjs/helpers/mergeResponseDataSets.d.cts.map +1 -0
  58. package/dist/types/cjs/helpers/normalizePatchResponseData.d.cts +11 -0
  59. package/dist/types/cjs/helpers/normalizePatchResponseData.d.cts.map +1 -0
  60. package/dist/types/cjs/helpers/validTypeIdValue.d.cts +3 -0
  61. package/dist/types/cjs/helpers/validTypeIdValue.d.cts.map +1 -0
  62. package/dist/types/cjs/index.d.cts +3 -0
  63. package/dist/types/cjs/index.d.cts.map +1 -0
  64. package/dist/types/cjs/main.d.cts +63 -0
  65. package/dist/types/cjs/main.d.cts.map +1 -0
  66. package/dist/types/cjs/types.d.cts +131 -0
  67. package/dist/types/cjs/types.d.cts.map +1 -0
  68. package/dist/types/esm/constants.d.ts +6 -0
  69. package/dist/types/esm/constants.d.ts.map +1 -0
  70. package/dist/types/esm/debug/index.d.ts +4 -0
  71. package/dist/types/esm/debug/index.d.ts.map +1 -0
  72. package/dist/types/esm/debug/logCacheEntry.d.ts +8 -0
  73. package/dist/types/esm/debug/logCacheEntry.d.ts.map +1 -0
  74. package/dist/types/esm/debug/logCacheQuery.d.ts +8 -0
  75. package/dist/types/esm/debug/logCacheQuery.d.ts.map +1 -0
  76. package/dist/types/esm/debug/logPartialCompiled.d.ts +6 -0
  77. package/dist/types/esm/debug/logPartialCompiled.d.ts.map +1 -0
  78. package/dist/types/esm/helpers/areOnlyPopulatedFieldsTypeIdKeys.d.ts +3 -0
  79. package/dist/types/esm/helpers/areOnlyPopulatedFieldsTypeIdKeys.d.ts.map +1 -0
  80. package/dist/types/esm/helpers/checkFieldPathChecklist.d.ts +3 -0
  81. package/dist/types/esm/helpers/checkFieldPathChecklist.d.ts.map +1 -0
  82. package/dist/types/esm/helpers/combineData.d.ts +2 -0
  83. package/dist/types/esm/helpers/combineData.d.ts.map +1 -0
  84. package/dist/types/esm/helpers/createFragmentSpreadChecklist.d.ts +9 -0
  85. package/dist/types/esm/helpers/createFragmentSpreadChecklist.d.ts.map +1 -0
  86. package/dist/types/esm/helpers/deriveOpCacheability.d.ts +9 -0
  87. package/dist/types/esm/helpers/deriveOpCacheability.d.ts.map +1 -0
  88. package/dist/types/esm/helpers/filterField.d.ts +5 -0
  89. package/dist/types/esm/helpers/filterField.d.ts.map +1 -0
  90. package/dist/types/esm/helpers/filterFragmentDefinitions.d.ts +5 -0
  91. package/dist/types/esm/helpers/filterFragmentDefinitions.d.ts.map +1 -0
  92. package/dist/types/esm/helpers/filterFragmentSpreads.d.ts +5 -0
  93. package/dist/types/esm/helpers/filterFragmentSpreads.d.ts.map +1 -0
  94. package/dist/types/esm/helpers/filterIDsAndTypeNames.d.ts +4 -0
  95. package/dist/types/esm/helpers/filterIDsAndTypeNames.d.ts.map +1 -0
  96. package/dist/types/esm/helpers/filterInlineFragments.d.ts +4 -0
  97. package/dist/types/esm/helpers/filterInlineFragments.d.ts.map +1 -0
  98. package/dist/types/esm/helpers/filterOperationAndFragmentDefinitions.d.ts +3 -0
  99. package/dist/types/esm/helpers/filterOperationAndFragmentDefinitions.d.ts.map +1 -0
  100. package/dist/types/esm/helpers/filterOutPropsWithArgsOrDirectives.d.ts +6 -0
  101. package/dist/types/esm/helpers/filterOutPropsWithArgsOrDirectives.d.ts.map +1 -0
  102. package/dist/types/esm/helpers/filterQuery.d.ts +4 -0
  103. package/dist/types/esm/helpers/filterQuery.d.ts.map +1 -0
  104. package/dist/types/esm/helpers/getDataValue.d.ts +2 -0
  105. package/dist/types/esm/helpers/getDataValue.d.ts.map +1 -0
  106. package/dist/types/esm/helpers/hasTypename.d.ts +3 -0
  107. package/dist/types/esm/helpers/hasTypename.d.ts.map +1 -0
  108. package/dist/types/esm/helpers/isFirstResponseChunk.d.ts +4 -0
  109. package/dist/types/esm/helpers/isFirstResponseChunk.d.ts.map +1 -0
  110. package/dist/types/esm/helpers/isLastResponseChunk.d.ts +4 -0
  111. package/dist/types/esm/helpers/isLastResponseChunk.d.ts.map +1 -0
  112. package/dist/types/esm/helpers/isNotLastResponseChunk.d.ts +4 -0
  113. package/dist/types/esm/helpers/isNotLastResponseChunk.d.ts.map +1 -0
  114. package/dist/types/esm/helpers/isNotResponseChunk.d.ts +4 -0
  115. package/dist/types/esm/helpers/isNotResponseChunk.d.ts.map +1 -0
  116. package/dist/types/esm/helpers/mergeObjects.d.ts +2 -0
  117. package/dist/types/esm/helpers/mergeObjects.d.ts.map +1 -0
  118. package/dist/types/esm/helpers/mergeResponseDataSets.d.ts +3 -0
  119. package/dist/types/esm/helpers/mergeResponseDataSets.d.ts.map +1 -0
  120. package/dist/types/esm/helpers/normalizePatchResponseData.d.ts +11 -0
  121. package/dist/types/esm/helpers/normalizePatchResponseData.d.ts.map +1 -0
  122. package/dist/types/esm/helpers/validTypeIdValue.d.ts +3 -0
  123. package/dist/types/esm/helpers/validTypeIdValue.d.ts.map +1 -0
  124. package/dist/types/esm/index.d.ts +3 -0
  125. package/dist/types/esm/index.d.ts.map +1 -0
  126. package/{lib/types/main/index.d.ts → dist/types/esm/main.d.ts} +6 -7
  127. package/dist/types/esm/main.d.ts.map +1 -0
  128. package/{lib/types/defs/index.d.ts → dist/types/esm/types.d.ts} +26 -26
  129. package/dist/types/esm/types.d.ts.map +1 -0
  130. package/dist/types/tsconfig.build.tsbuildinfo +1 -0
  131. package/package.json +54 -39
  132. package/src/__snapshots__/index.test.ts.snap +16531 -16531
  133. package/src/constants.ts +6 -0
  134. package/src/debug/index.ts +3 -3
  135. package/src/debug/logCacheEntry.ts +54 -0
  136. package/src/debug/{log-cache-query/index.ts → logCacheQuery.ts} +23 -20
  137. package/src/debug/logPartialCompiled.ts +41 -0
  138. package/src/helpers/areOnlyPopulatedFieldsTypeIdKeys.ts +19 -12
  139. package/src/helpers/checkFieldPathChecklist.ts +9 -7
  140. package/src/helpers/combineData.ts +14 -0
  141. package/src/helpers/createFragmentSpreadChecklist.ts +11 -10
  142. package/src/helpers/deriveOpCacheability.ts +10 -6
  143. package/src/helpers/filterField.ts +28 -21
  144. package/src/helpers/filterFragmentDefinitions.ts +35 -21
  145. package/src/helpers/filterFragmentSpreads.ts +17 -12
  146. package/src/helpers/filterIDsAndTypeNames.ts +15 -11
  147. package/src/helpers/filterInlineFragments.ts +13 -11
  148. package/src/helpers/filterOperationAndFragmentDefinitions.ts +5 -5
  149. package/src/helpers/filterOutPropsWithArgsOrDirectives.ts +10 -10
  150. package/src/helpers/filterQuery.ts +21 -12
  151. package/src/helpers/getDataValue.ts +14 -0
  152. package/src/helpers/hasTypename.ts +11 -0
  153. package/src/helpers/isFirstResponseChunk.ts +6 -4
  154. package/src/helpers/isLastResponseChunk.ts +6 -4
  155. package/src/helpers/isNotLastResponseChunk.ts +6 -4
  156. package/src/helpers/isNotResponseChunk.ts +6 -4
  157. package/src/helpers/mergeObjects.ts +7 -0
  158. package/src/helpers/mergeResponseDataSets.ts +8 -8
  159. package/src/helpers/normalizePatchResponseData.ts +12 -5
  160. package/src/helpers/validTypeIdValue.ts +18 -0
  161. package/src/index.test.ts +479 -450
  162. package/src/index.ts +2 -2
  163. package/src/{main/index.ts → main.ts} +287 -260
  164. package/src/{defs/index.ts → types.ts} +38 -43
  165. package/tsconfig.build.json +10 -0
  166. package/tsconfig.json +17 -0
  167. package/lib/browser/index.js +0 -2
  168. package/lib/browser/index.js.map +0 -1
  169. package/lib/browser/production.analysis.txt +0 -234
  170. package/lib/main/consts/index.js +0 -17
  171. package/lib/main/consts/index.js.map +0 -1
  172. package/lib/main/debug/index.js +0 -32
  173. package/lib/main/debug/index.js.map +0 -1
  174. package/lib/main/debug/log-cache-entry/index.js +0 -57
  175. package/lib/main/debug/log-cache-entry/index.js.map +0 -1
  176. package/lib/main/debug/log-cache-query/index.js +0 -59
  177. package/lib/main/debug/log-cache-query/index.js.map +0 -1
  178. package/lib/main/debug/log-partial-compiled/index.js +0 -50
  179. package/lib/main/debug/log-partial-compiled/index.js.map +0 -1
  180. package/lib/main/defs/index.js +0 -2
  181. package/lib/main/defs/index.js.map +0 -1
  182. package/lib/main/helpers/areOnlyPopulatedFieldsTypeIdKeys.js +0 -53
  183. package/lib/main/helpers/areOnlyPopulatedFieldsTypeIdKeys.js.map +0 -1
  184. package/lib/main/helpers/checkFieldPathChecklist.js +0 -40
  185. package/lib/main/helpers/checkFieldPathChecklist.js.map +0 -1
  186. package/lib/main/helpers/createFragmentSpreadChecklist.js +0 -26
  187. package/lib/main/helpers/createFragmentSpreadChecklist.js.map +0 -1
  188. package/lib/main/helpers/deriveOpCacheability.js +0 -46
  189. package/lib/main/helpers/deriveOpCacheability.js.map +0 -1
  190. package/lib/main/helpers/filterField.js +0 -95
  191. package/lib/main/helpers/filterField.js.map +0 -1
  192. package/lib/main/helpers/filterFragmentDefinitions.js +0 -55
  193. package/lib/main/helpers/filterFragmentDefinitions.js.map +0 -1
  194. package/lib/main/helpers/filterFragmentSpreads.js +0 -36
  195. package/lib/main/helpers/filterFragmentSpreads.js.map +0 -1
  196. package/lib/main/helpers/filterIDsAndTypeNames.js +0 -47
  197. package/lib/main/helpers/filterIDsAndTypeNames.js.map +0 -1
  198. package/lib/main/helpers/filterInlineFragments.js +0 -42
  199. package/lib/main/helpers/filterInlineFragments.js.map +0 -1
  200. package/lib/main/helpers/filterOperationAndFragmentDefinitions.js +0 -15
  201. package/lib/main/helpers/filterOperationAndFragmentDefinitions.js.map +0 -1
  202. package/lib/main/helpers/filterOutPropsWithArgsOrDirectives.js +0 -37
  203. package/lib/main/helpers/filterOutPropsWithArgsOrDirectives.js.map +0 -1
  204. package/lib/main/helpers/filterQuery.js +0 -58
  205. package/lib/main/helpers/filterQuery.js.map +0 -1
  206. package/lib/main/helpers/isFirstResponseChunk.js +0 -11
  207. package/lib/main/helpers/isFirstResponseChunk.js.map +0 -1
  208. package/lib/main/helpers/isLastResponseChunk.js +0 -11
  209. package/lib/main/helpers/isLastResponseChunk.js.map +0 -1
  210. package/lib/main/helpers/isNotLastResponseChunk.js +0 -11
  211. package/lib/main/helpers/isNotLastResponseChunk.js.map +0 -1
  212. package/lib/main/helpers/isNotResponseChunk.js +0 -11
  213. package/lib/main/helpers/isNotResponseChunk.js.map +0 -1
  214. package/lib/main/helpers/mergeResponseDataSets.js +0 -53
  215. package/lib/main/helpers/mergeResponseDataSets.js.map +0 -1
  216. package/lib/main/helpers/normalizePatchResponseData.js +0 -29
  217. package/lib/main/helpers/normalizePatchResponseData.js.map +0 -1
  218. package/lib/main/helpers/validTypeIDValue.js +0 -20
  219. package/lib/main/helpers/validTypeIDValue.js.map +0 -1
  220. package/lib/main/index.js +0 -31
  221. package/lib/main/index.js.map +0 -1
  222. package/lib/main/main/index.js +0 -1090
  223. package/lib/main/main/index.js.map +0 -1
  224. package/lib/module/consts/index.js +0 -6
  225. package/lib/module/consts/index.js.map +0 -1
  226. package/lib/module/debug/index.js +0 -4
  227. package/lib/module/debug/index.js.map +0 -1
  228. package/lib/module/debug/log-cache-entry/index.js +0 -48
  229. package/lib/module/debug/log-cache-entry/index.js.map +0 -1
  230. package/lib/module/debug/log-cache-query/index.js +0 -50
  231. package/lib/module/debug/log-cache-query/index.js.map +0 -1
  232. package/lib/module/debug/log-partial-compiled/index.js +0 -41
  233. package/lib/module/debug/log-partial-compiled/index.js.map +0 -1
  234. package/lib/module/defs/index.js +0 -2
  235. package/lib/module/defs/index.js.map +0 -1
  236. package/lib/module/helpers/areOnlyPopulatedFieldsTypeIdKeys.js +0 -41
  237. package/lib/module/helpers/areOnlyPopulatedFieldsTypeIdKeys.js.map +0 -1
  238. package/lib/module/helpers/checkFieldPathChecklist.js +0 -31
  239. package/lib/module/helpers/checkFieldPathChecklist.js.map +0 -1
  240. package/lib/module/helpers/createFragmentSpreadChecklist.js +0 -14
  241. package/lib/module/helpers/createFragmentSpreadChecklist.js.map +0 -1
  242. package/lib/module/helpers/deriveOpCacheability.js +0 -32
  243. package/lib/module/helpers/deriveOpCacheability.js.map +0 -1
  244. package/lib/module/helpers/filterField.js +0 -80
  245. package/lib/module/helpers/filterField.js.map +0 -1
  246. package/lib/module/helpers/filterFragmentDefinitions.js +0 -43
  247. package/lib/module/helpers/filterFragmentDefinitions.js.map +0 -1
  248. package/lib/module/helpers/filterFragmentSpreads.js +0 -22
  249. package/lib/module/helpers/filterFragmentSpreads.js.map +0 -1
  250. package/lib/module/helpers/filterIDsAndTypeNames.js +0 -36
  251. package/lib/module/helpers/filterIDsAndTypeNames.js.map +0 -1
  252. package/lib/module/helpers/filterInlineFragments.js +0 -32
  253. package/lib/module/helpers/filterInlineFragments.js.map +0 -1
  254. package/lib/module/helpers/filterOperationAndFragmentDefinitions.js +0 -5
  255. package/lib/module/helpers/filterOperationAndFragmentDefinitions.js.map +0 -1
  256. package/lib/module/helpers/filterOutPropsWithArgsOrDirectives.js +0 -24
  257. package/lib/module/helpers/filterOutPropsWithArgsOrDirectives.js.map +0 -1
  258. package/lib/module/helpers/filterQuery.js +0 -43
  259. package/lib/module/helpers/filterQuery.js.map +0 -1
  260. package/lib/module/helpers/isFirstResponseChunk.js +0 -2
  261. package/lib/module/helpers/isFirstResponseChunk.js.map +0 -1
  262. package/lib/module/helpers/isLastResponseChunk.js +0 -2
  263. package/lib/module/helpers/isLastResponseChunk.js.map +0 -1
  264. package/lib/module/helpers/isNotLastResponseChunk.js +0 -2
  265. package/lib/module/helpers/isNotLastResponseChunk.js.map +0 -1
  266. package/lib/module/helpers/isNotResponseChunk.js +0 -2
  267. package/lib/module/helpers/isNotResponseChunk.js.map +0 -1
  268. package/lib/module/helpers/mergeResponseDataSets.js +0 -41
  269. package/lib/module/helpers/mergeResponseDataSets.js.map +0 -1
  270. package/lib/module/helpers/normalizePatchResponseData.js +0 -17
  271. package/lib/module/helpers/normalizePatchResponseData.js.map +0 -1
  272. package/lib/module/helpers/validTypeIDValue.js +0 -8
  273. package/lib/module/helpers/validTypeIDValue.js.map +0 -1
  274. package/lib/module/index.js +0 -3
  275. package/lib/module/index.js.map +0 -1
  276. package/lib/module/main/index.js.map +0 -1
  277. package/lib/types/consts/index.d.ts +0 -6
  278. package/lib/types/consts/index.d.ts.map +0 -1
  279. package/lib/types/debug/index.d.ts +0 -4
  280. package/lib/types/debug/index.d.ts.map +0 -1
  281. package/lib/types/debug/log-cache-entry/index.d.ts +0 -2
  282. package/lib/types/debug/log-cache-entry/index.d.ts.map +0 -1
  283. package/lib/types/debug/log-cache-query/index.d.ts +0 -2
  284. package/lib/types/debug/log-cache-query/index.d.ts.map +0 -1
  285. package/lib/types/debug/log-partial-compiled/index.d.ts +0 -2
  286. package/lib/types/debug/log-partial-compiled/index.d.ts.map +0 -1
  287. package/lib/types/defs/index.d.ts.map +0 -1
  288. package/lib/types/helpers/areOnlyPopulatedFieldsTypeIdKeys.d.ts +0 -4
  289. package/lib/types/helpers/areOnlyPopulatedFieldsTypeIdKeys.d.ts.map +0 -1
  290. package/lib/types/helpers/checkFieldPathChecklist.d.ts +0 -4
  291. package/lib/types/helpers/checkFieldPathChecklist.d.ts.map +0 -1
  292. package/lib/types/helpers/createFragmentSpreadChecklist.d.ts +0 -12
  293. package/lib/types/helpers/createFragmentSpreadChecklist.d.ts.map +0 -1
  294. package/lib/types/helpers/deriveOpCacheability.d.ts +0 -10
  295. package/lib/types/helpers/deriveOpCacheability.d.ts.map +0 -1
  296. package/lib/types/helpers/filterField.d.ts +0 -6
  297. package/lib/types/helpers/filterField.d.ts.map +0 -1
  298. package/lib/types/helpers/filterFragmentDefinitions.d.ts +0 -6
  299. package/lib/types/helpers/filterFragmentDefinitions.d.ts.map +0 -1
  300. package/lib/types/helpers/filterFragmentSpreads.d.ts +0 -6
  301. package/lib/types/helpers/filterFragmentSpreads.d.ts.map +0 -1
  302. package/lib/types/helpers/filterIDsAndTypeNames.d.ts +0 -5
  303. package/lib/types/helpers/filterIDsAndTypeNames.d.ts.map +0 -1
  304. package/lib/types/helpers/filterInlineFragments.d.ts +0 -5
  305. package/lib/types/helpers/filterInlineFragments.d.ts.map +0 -1
  306. package/lib/types/helpers/filterOperationAndFragmentDefinitions.d.ts +0 -4
  307. package/lib/types/helpers/filterOperationAndFragmentDefinitions.d.ts.map +0 -1
  308. package/lib/types/helpers/filterOutPropsWithArgsOrDirectives.d.ts +0 -7
  309. package/lib/types/helpers/filterOutPropsWithArgsOrDirectives.d.ts.map +0 -1
  310. package/lib/types/helpers/filterQuery.d.ts +0 -5
  311. package/lib/types/helpers/filterQuery.d.ts.map +0 -1
  312. package/lib/types/helpers/isFirstResponseChunk.d.ts +0 -5
  313. package/lib/types/helpers/isFirstResponseChunk.d.ts.map +0 -1
  314. package/lib/types/helpers/isLastResponseChunk.d.ts +0 -5
  315. package/lib/types/helpers/isLastResponseChunk.d.ts.map +0 -1
  316. package/lib/types/helpers/isNotLastResponseChunk.d.ts +0 -5
  317. package/lib/types/helpers/isNotLastResponseChunk.d.ts.map +0 -1
  318. package/lib/types/helpers/isNotResponseChunk.d.ts +0 -5
  319. package/lib/types/helpers/isNotResponseChunk.d.ts.map +0 -1
  320. package/lib/types/helpers/mergeResponseDataSets.d.ts +0 -4
  321. package/lib/types/helpers/mergeResponseDataSets.d.ts.map +0 -1
  322. package/lib/types/helpers/normalizePatchResponseData.d.ts +0 -5
  323. package/lib/types/helpers/normalizePatchResponseData.d.ts.map +0 -1
  324. package/lib/types/helpers/validTypeIDValue.d.ts +0 -3
  325. package/lib/types/helpers/validTypeIDValue.d.ts.map +0 -1
  326. package/lib/types/index.d.ts +0 -3
  327. package/lib/types/index.d.ts.map +0 -1
  328. package/lib/types/index.test.d.ts +0 -2
  329. package/lib/types/index.test.d.ts.map +0 -1
  330. package/lib/types/main/index.d.ts.map +0 -1
  331. package/src/consts/index.ts +0 -6
  332. package/src/debug/log-cache-entry/index.ts +0 -45
  333. package/src/debug/log-partial-compiled/index.ts +0 -38
  334. package/src/helpers/validTypeIDValue.ts +0 -11
@@ -1,48 +1,43 @@
1
- import Cachemap from "@cachemap/core";
2
- import { Metadata } from "@cachemap/types";
1
+ import { type Core } from '@cachemap/core';
2
+ import { type Metadata } from '@cachemap/types';
3
3
  import {
4
- CacheMetadata,
5
- CacheTypes,
6
- DehydratedCacheMetadata,
7
- FieldTypeInfo,
8
- FragmentDefinitionNodeMap,
9
- PlainObjectMap,
10
- PlainObjectStringMap,
11
- RawResponseDataWithMaybeCacheMetadata,
12
- RequestContext,
13
- RequestData,
14
- RequestOptions,
15
- ResponseData,
16
- } from "@graphql-box/core";
17
- import Cacheability from "cacheability";
4
+ type CacheMetadata,
5
+ type CacheTypes,
6
+ type DehydratedCacheMetadata,
7
+ type FieldTypeInfo,
8
+ type FragmentDefinitionNodeMap,
9
+ type PlainData,
10
+ type RawResponseDataWithMaybeCacheMetadata,
11
+ type RequestContext,
12
+ type RequestData,
13
+ type RequestOptions,
14
+ type ResponseData,
15
+ } from '@graphql-box/core';
16
+ import { type Cacheability } from 'cacheability';
18
17
 
19
18
  export interface UserOptions {
20
19
  /**
21
20
  * The cache to use for storing query responses, data entities,
22
21
  * and request field paths.
23
22
  */
24
- cache: Cachemap;
25
-
23
+ cache: Core;
26
24
  /**
27
25
  * Whether to cascade cache control directives down to
28
26
  * child nodes if a child node does not have its down
29
27
  * cache control directives.
30
28
  */
31
29
  cascadeCacheControl?: boolean;
32
-
33
30
  /**
34
31
  * The cache control directive to apply to an operation
35
32
  * when none is provided in the response headers or the
36
33
  * operation's cache metadata.
37
34
  */
38
35
  fallbackOperationCacheability?: string;
39
-
40
36
  /**
41
37
  * An object map of GraphQL schema types to cache-control
42
38
  * directives used for caching object types.
43
39
  */
44
- typeCacheDirectives?: PlainObjectStringMap;
45
-
40
+ typeCacheDirectives?: Record<string, string>;
46
41
  /**
47
42
  * The name of the property thats value is used as the unique
48
43
  * identifier for each type in the GraphQL schema.
@@ -57,7 +52,7 @@ export interface CacheManagerContext extends RequestContext {
57
52
 
58
53
  export interface PartialQueryResponse {
59
54
  cacheMetadata: CacheMetadata;
60
- data: PlainObjectMap;
55
+ data: PlainData;
61
56
  }
62
57
 
63
58
  export type PartialQueryResponses = Map<string, PartialQueryResponse>;
@@ -83,7 +78,7 @@ export type FieldPathChecklist = Map<string, FieldPathChecklistValue[]>;
83
78
 
84
79
  export interface CachedResponseData {
85
80
  cacheMetadata: CacheMetadata;
86
- data: PlainObjectMap;
81
+ data: PlainData;
87
82
  fieldCount: FieldCount;
88
83
  fieldPathChecklist: FieldPathChecklist;
89
84
  }
@@ -97,24 +92,24 @@ export interface AncestorKeysAndPaths {
97
92
 
98
93
  export interface MergedCachedFieldData {
99
94
  cacheability?: Cacheability;
100
- data: any;
95
+ data: unknown;
101
96
  }
102
97
 
103
98
  export interface CachedAncestorFieldData {
104
99
  cacheability?: Cacheability;
105
- entityData?: any;
100
+ entityData?: unknown;
106
101
  fragmentKind?: string;
107
102
  fragmentName?: string;
108
103
  index?: number;
109
104
  requestFieldCacheKey?: string;
110
105
  requestFieldPath?: string;
111
- requestFieldPathData?: any;
106
+ requestFieldPathData?: unknown;
112
107
  typeName?: string;
113
108
  }
114
109
 
115
- export interface TypeNamesAndKind {
116
- dataTypeName: string | undefined;
117
- fieldTypeName: string | undefined;
110
+ export interface TypenamesAndKind {
111
+ dataTypename: string | undefined;
112
+ fieldTypename: string | undefined;
118
113
  fragmentKind: string | undefined;
119
114
  fragmentName: string | undefined;
120
115
  }
@@ -123,18 +118,18 @@ export type FragmentSpreadFieldCounter = Record<string, { hasData: number; total
123
118
 
124
119
  export interface ResponseDataForCaching {
125
120
  cacheMetadata: CacheMetadata;
126
- entityData: PlainObjectMap;
127
- requestFieldPathData: PlainObjectMap;
121
+ entityData: PlainData;
122
+ requestFieldPathData: PlainData;
128
123
  }
129
124
 
130
125
  export interface DataForCachingEntry {
131
126
  cacheability: Cacheability;
132
- data: PlainObjectMap;
127
+ data: PlainData;
133
128
  fieldTypeInfo: FieldTypeInfo;
134
129
  }
135
130
 
136
131
  export interface ExportCacheResult {
137
- entries: [string, any][];
132
+ entries: [string, unknown][];
138
133
  metadata: Metadata[];
139
134
  }
140
135
 
@@ -143,48 +138,48 @@ export interface AnalyzeQueryResult {
143
138
  updated?: RequestData;
144
139
  }
145
140
 
146
- export interface CheckCacheEntryResult {
141
+ export interface CheckCacheEntryResult<T = unknown> {
147
142
  cacheability: Cacheability;
148
- entry: any;
143
+ entry: T;
149
144
  }
150
145
 
151
146
  export interface QueryResponseCacheEntry {
152
147
  cacheMetadata: DehydratedCacheMetadata;
153
- data: PlainObjectMap;
148
+ data: PlainData;
154
149
  }
155
150
 
156
151
  export interface CacheManagerDef {
157
- cache: Cachemap;
158
152
  analyzeQuery(requestData: RequestData, options: RequestOptions, context: RequestContext): Promise<AnalyzeQueryResult>;
153
+ cache: Core;
159
154
  cacheQuery(
160
155
  requestData: RequestData,
161
156
  updatedRequestData: RequestData | undefined,
162
157
  responseData: RawResponseDataWithMaybeCacheMetadata,
163
158
  options: RequestOptions,
164
- context: RequestContext,
159
+ context: RequestContext
165
160
  ): Promise<ResponseData>;
166
161
  cacheResponse(
167
162
  requestData: RequestData,
168
163
  responseData: RawResponseDataWithMaybeCacheMetadata,
169
164
  options: RequestOptions,
170
- context: RequestContext,
165
+ context: RequestContext
171
166
  ): Promise<ResponseData>;
172
167
  checkCacheEntry(
173
168
  cacheType: CacheTypes,
174
169
  hash: string,
175
170
  options: RequestOptions,
176
- context: RequestContext,
171
+ context: RequestContext
177
172
  ): Promise<CheckCacheEntryResult | false>;
178
173
  checkQueryResponseCacheEntry(
179
174
  hash: string,
180
175
  options: RequestOptions,
181
- context: RequestContext,
176
+ context: RequestContext
182
177
  ): Promise<ResponseData | false>;
183
178
  deletePartialQueryResponse(hash: string): void;
184
179
  setQueryResponseCacheEntry(
185
180
  requestData: RequestData,
186
181
  responseData: ResponseData,
187
182
  options: RequestOptions,
188
- context: CacheManagerContext,
183
+ context: CacheManagerContext
189
184
  ): Promise<void>;
190
185
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "dist/types/esm"
6
+ },
7
+ "exclude": [
8
+ "**/*.test.*"
9
+ ]
10
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "@repodog/ts-config/build.json",
3
+ "include": [
4
+ "src/**/*"
5
+ ],
6
+ "references": [
7
+ {
8
+ "path": "../core"
9
+ },
10
+ {
11
+ "path": "../helpers"
12
+ },
13
+ {
14
+ "path": "../test-utils"
15
+ }
16
+ ]
17
+ }
@@ -1,2 +0,0 @@
1
- import"core-js/modules/es.object.keys.js";import"core-js/modules/es.symbol.js";import"core-js/modules/es.object.get-own-property-descriptors.js";import e from"@babel/runtime/helpers/toConsumableArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import r from"@babel/runtime/helpers/asyncToGenerator";import a from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";import i from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/applyDecoratedDescriptor";import c from"lodash/unset";import o from"lodash/set";import u from"lodash/isUndefined";import h from"lodash/isPlainObject";import p from"lodash/isObjectLike";import l from"lodash/isArray";import f from"lodash/get";import d from"lodash/cloneDeep";import y from"lodash/assign";import m from"@babel/runtime/regenerator";import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.map.js";import"core-js/modules/es.object.to-string.js";import"core-js/modules/es.string.iterator.js";import"core-js/modules/web.dom-collections.iterator.js";import"core-js/modules/es.promise.js";import"core-js/modules/web.dom-collections.for-each.js";import"core-js/modules/es.array.concat.js";import"core-js/modules/es.array.map.js";import"core-js/modules/es.array.filter.js";import"core-js/modules/es.object.get-own-property-descriptor.js";import{CACHE_ENTRY_ADDED as v,CACHE_ENTRY_QUERIED as b,PARTIAL_QUERY_COMPILED as g,TYPE_NAME_KEY as _,QUERY_RESPONSES as D,QUERY as C,DATA_ENTITIES as k,REQUEST_FIELD_PATHS as w,DEFAULT_TYPE_ID_KEY as P}from"@graphql-box/core";import{resolveFragments as j,getName as x,buildFieldKeysAndPaths as O,deleteFragmentSpreads as F,getChildFields as q,deleteChildFields as E,getInlineFragments as N,deleteInlineFragments as M,FRAGMENT_SPREAD as R,hasChildFields as K,deleteFragmentDefinitions as T,getOperationDefinitions as I,hashRequest as A,getFragmentDefinitions as Q,rehydrateCacheMetadata as S,iterateChildFields as z,mergeObjects as H,dehydrateCacheMetadata as U}from"@graphql-box/helpers";import L from"cacheability";import{print as V}from"graphql";import G from"@babel/runtime/helpers/toArray";import W from"lodash/isEmpty";import"core-js/modules/es.object.values.js";import"core-js/modules/es.array.slice.js";import B from"lodash/keys";import"core-js/modules/es.array.find.js";import"core-js/modules/es.regexp.exec.js";import"core-js/modules/es.string.match.js";import"core-js/modules/es.regexp.constructor.js";import"core-js/modules/es.regexp.to-string.js";import"core-js/modules/es.function.name.js";import J from"lodash/merge";function X(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function Y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?X(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):X(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function $(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Z(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Z(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var ee=function e(t,r){return l(t)?t.reduce((function(t,a){return!!t&&e(a,r)}),!0):!!h(t)&&te(t,r)},te=function(e,t){var r=Object.keys(e);return!(1!==r.length||!e[t])||r.reduce((function(r,a){return!!r&&ee(e[a],t)}),!0)},re=function(e,t){return te(e,t)},ae=function(e,t,r,a){var n=j(t,a.fragmentDefinitions);return B(e).reduce((function(t,i){var s=n.find((function(e){var t=e.fieldNode;return x(t)===i}));if(s){var c=O(s.fieldNode,r,a).requestFieldPath,o=a.fieldTypeMap.get(c);null!=o&&o.hasArguments||null!=o&&o.hasDirectives||(t[i]=e[i])}return t}),{})},ne=function(e,t){if(!e||!e.length)return{hasData:!1,typeUnused:!!t};if(1===e.length){var r=e[0],a=r.hasData,n=r.typeName;return{hasData:a,typeUnused:n?n!==t:void 0}}return{hasData:e.some((function(e){var r=e.hasData;return e.typeName===t&&r})),typeUnused:!e.every((function(e){return e.typeName===t}))}},ie=function e(t,r,a,n,i){var s=i.fragmentDefinitions,c=i.typeIDKey,o=q(t,{fragmentDefinitions:s});if(!o)return!1;for(var u={},h=o.length-1;h>=0;h-=1){var p,l,f=o[h],d=f.fieldNode,y=f.fragmentKind,m=f.fragmentName,v=f.typeName;if(y===R&&m&&!u[m])u[m]={hasData:0,total:null!=s&&s[m]&&null!==(p=null===(l=q(null==s?void 0:s[m],{fragmentDefinitions:s}))||void 0===l?void 0:l.length)&&void 0!==p?p:0};var b=x(d);if(b!==c&&b!==_){var g=O(d,{requestFieldPath:n},i).requestFieldPath,D=ne(r.get(g),v),C=D.hasData,k=D.typeUnused;(C||k)&&(y===R?u[m].hasData+=1:K(d,{fragmentDefinitions:s})?e(d,r,a,g,i)&&E(t,d):E(t,d))}}return function(e,t,r,a){W(t)||B(t).forEach((function(n){r[n].paths.push(a);var i=t[n];i.hasData===i.total&&(F(e,n),r[n].deleted+=1)}))}(t,u,a,n),function(e,t){var r=t.fragmentDefinitions,a=t.typeIDKey,n=N(e),i=!1;n.forEach((function(t){var n=q(t,{fragmentDefinitions:r});if(!n||!n.length)return M(e,t),void(i=!0);if(1===n.length){var s=n[0].fieldNode;x(s)===a&&(M(e,t),i=!0)}}))}(t,i),function(e,t){var r=t.fragmentDefinitions,a=t.typeIDKey,n=q(e,{fragmentDefinitions:r});if(!n||n.length>3)return!1;var i=n.map((function(e){var t=e.fieldNode;return x(t)}));if(2===i.length&&i.every((function(e){return e===a||e===_})))return E(e,n.map((function(e){return e.fieldNode}))),!0;if(1===i.length&&i[0]===a||i[0]===_){var s=n[0].fieldNode;return E(e,s),!0}}(t,i),!K(t,{fragmentDefinitions:s})},se=function(t,r,a){var n=r.fieldPathChecklist,i=t.ast,s=I(i,a.operation)[0],c=a.fragmentDefinitions,o=q(s,{fragmentDefinitions:c});if(!o)return i;for(var u=function(e,t){var r=e.request,a=t.fragmentDefinitions;return B(null!=a?a:{}).reduce((function(e,t){return e[t]={deleted:0,paths:[],total:(r.match(new RegExp("\\.\\.\\.".concat(t),"g"))||[]).length},e}),{})}(t,a),h=o.length-1;h>=0;h-=1){var p=o[h].fieldNode,l=O(p,{requestFieldPath:a.operation},a).requestFieldPath;ie(p,n,u,l,a)&&E(s,p)}return a.queryFiltered=!0,function(t,r,a,n){var i=B(a).reduce((function(t,r){var n=a[r],i=n.deleted,s=n.total;return 0===i&&1===s?[].concat(e(t),[{name:r,path:a[r].paths[0]}]):t}),[]),s=n.fragmentDefinitions,c=void 0===s?{}:s;i.forEach((function(e){var t=e.name,i=e.path,s=c[t];ie(s,r,a,i,n)}));var o=B(a).reduce((function(t,r){var n=a[r],i=n.deleted,s=n.total;return i>0&&i===s?[].concat(e(t),[r]):t}),[]);return o.length?T(t,{include:o}):t}(i,n,u,a)},ce=function(e,t){return t.hasDeferOrStream&&!e.hasNext&&e.paths},oe=function(e,t){return t.hasDeferOrStream&&e.hasNext},ue=function(e,t){return!t.hasDeferOrStream&&!e.hasNext&&!e.paths};function he(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function pe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?he(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):he(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function le(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function fe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?le(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):le(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var de,ye,me,ve,be=function(e,r){if(!r.normalizePatchResponseData)return e;var a=e.data,n=e.paths;return fe(fe({},t(e,["data","paths"])),{},{data:o({},n[0],a),paths:n})},ge=function(e,t,r){var a=t.typeIDValue,n=h(e)?e[r]:void 0;return a||n};function _e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function De(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_e(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_e(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var Ce=(de=function(e,a,n){var i,s=n.value;s&&(n.value=(i=r(m.mark((function e(){var a,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=o.length,n=new Array(a),i=0;i<a;i++)n[i]=o[i];return e.prev=1,e.abrupt("return",new Promise(function(){var e=r(m.mark((function e(r){var a,i,o,u,h,p,l,f,d;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n[3],i=a.debugManager,o=a.requestFieldCacheKey,u=t(a,["debugManager","requestFieldCacheKey"]),i){e.next=8;break}return e.t0=r,e.next=5,s.apply(c,n);case 5:return e.t1=e.sent,(0,e.t0)(e.t1),e.abrupt("return");case 8:return h=i.now(),e.next=11,s.apply(c,n);case 11:p=e.sent,l=i.now(),f=l-h,r(p),d=$({cacheType:n[0],context:u,options:n[2],requestHash:n[1],result:p,stats:{duration:f,endTime:l,startTime:h}},o?{decryptedCacheKey:o}:{}),i.log(b,d);case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 5:return e.prev=5,e.t0=e.catch(1),e.abrupt("return",Promise.reject(e.t0));case 8:case"end":return e.stop()}}),e,null,[[1,5]])}))),function(){return i.apply(this,arguments)}))},ye=function(e,a,n){var i,s=n.value;s&&(n.value=(i=r(m.mark((function e(){var a,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=o.length,n=new Array(a),i=0;i<a;i++)n[i]=o[i];return e.abrupt("return",new Promise(function(){var e=r(m.mark((function e(r){var a,i,o,u,h,p,l,f;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n[5],i=a.debugManager,o=a.requestFieldCacheKey,u=t(a,["debugManager","requestFieldCacheKey"]),i){e.next=6;break}return e.next=4,s.apply(c,n);case 4:return r(),e.abrupt("return");case 6:return h=i.now(),e.next=9,s.apply(c,n);case 9:p=i.now(),l=p-h,r(),f=Y({cachemapOptions:n[3],cacheType:n[0],context:u,options:n[4],requestHash:n[1],stats:{duration:l,endTime:p,startTime:h},value:n[2]},o?{decryptedCacheKey:o}:{}),i.log(v,f);case 14:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(){return i.apply(this,arguments)}))},me=function(e,a,n){var i,s=n.value;s&&(n.value=(i=r(m.mark((function e(){var a,n,i,c=this,o=arguments;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=o.length,n=new Array(a),i=0;i<a;i++)n[i]=o[i];return e.abrupt("return",new Promise(function(){var e=r(m.mark((function e(r){var a,i,o,u,h,p;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n[3],i=a.debugManager,o=t(a,["debugManager"]),i){e.next=6;break}return e.next=4,s.apply(c,n);case 4:return r(),e.abrupt("return");case 6:return u=i.now(),e.next=9,s.apply(c,n);case 9:h=i.now(),p=h-u,r(),i.log(g,{context:o,options:n[2],requestHash:n[0],result:n[1],stats:{duration:p,endTime:h,startTime:u}});case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(){return i.apply(this,arguments)}))},s((ve=function(){function s(e){var t;a(this,s),i(this,"_cache",void 0),i(this,"_cascadeCacheControl",void 0),i(this,"_fallbackOperationCacheability",void 0),i(this,"_partialQueryResponses",new Map),i(this,"_responseChunksAwaitingCaching",new Map),i(this,"_typeCacheDirectives",void 0),i(this,"_typeIDKey",void 0);var r=[];if(e.cache||r.push(new TypeError("@graphql-box/cache-manager expected options.cache.")),e.typeCacheDirectives&&!h(e.typeCacheDirectives)){r.push(new TypeError("@graphql-box/cache-manager expected options.typeCacheDirectives to be a plain object."))}if(r.length)throw r;this._cache=e.cache,this._cascadeCacheControl=e.cascadeCacheControl||!1,this._fallbackOperationCacheability=e.fallbackOperationCacheability||"noCache",this._typeCacheDirectives=e.typeCacheDirectives||{},this._typeIDKey=null!==(t=e.typeIDKey)&&void 0!==t?t:P}var v,b,g,j,x,F,E,N,M,T,B,X,Y,Z,$,ee,te,ne,ie,he,le,fe,de,ye,me;return n(s,[{key:"cache",get:function(){return this._cache}},{key:"analyzeQuery",value:(me=r(m.mark((function e(r,a,n){var i,s,c,o,u,h,p,l,f,d,v;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=r.ast,s=r.hash,i){e.next=3;break}return e.abrupt("return",Promise.reject(new TypeError("@graphql-box/cache-manager expected an AST.")));case 3:return c=De(De({},n),{},{fragmentDefinitions:Q(i),typeIDKey:this._typeIDKey}),e.next=6,this._retrieveCachedResponseData(r,a,c);case 6:if(o=e.sent,u=o.cacheMetadata,h=o.data,(p=o.fieldCount).missing!==p.total&&!re(h,this._typeIDKey)){e.next=10;break}return e.abrupt("return",{updated:r});case 10:if(p.missing){e.next=16;break}if(l=this._setQueryResponseCacheEntry(s,{cacheMetadata:u,data:h},a,c),!a.awaitDataCaching){e.next=15;break}return e.next=15,l;case 15:return e.abrupt("return",{response:{cacheMetadata:u,data:h}});case 16:return f=se(r,o,c),d=V(f),c.fragmentDefinitions,c.typeIDKey,v=t(c,["fragmentDefinitions","typeIDKey"]),y(n,De(De({},v),{},{filteredRequest:d})),this._setPartialQueryResponse(s,{cacheMetadata:u,data:h},a,n),e.abrupt("return",{updated:{ast:f,hash:A(d),request:d}});case 22:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return me.apply(this,arguments)})},{key:"cacheQuery",value:(ye=r(m.mark((function e(t,r,a,n,i){var s;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=De(De({},i),{},{fragmentDefinitions:Q((null!=r?r:t).ast),typeIDKey:this._typeIDKey}),e.abrupt("return",this._cacheResponse(t,r,a,n,s));case 2:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return ye.apply(this,arguments)})},{key:"cacheResponse",value:(de=r(m.mark((function e(t,r,a,n){var i;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=De(De({},n),{},{fragmentDefinitions:Q(t.ast),typeIDKey:this._typeIDKey}),e.abrupt("return",this._cacheResponse(t,void 0,r,a,i));case 2:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return de.apply(this,arguments)})},{key:"checkCacheEntry",value:(fe=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._checkCacheEntry(t,r,a,n));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return fe.apply(this,arguments)})},{key:"checkQueryResponseCacheEntry",value:(le=r(m.mark((function e(t,r,a){var n,i,s,c;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._checkCacheEntry(D,t,r,a);case 2:if(n=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return i=n.entry,s=i.cacheMetadata,c=i.data,e.abrupt("return",{cacheMetadata:S(s),data:c});case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return le.apply(this,arguments)})},{key:"deletePartialQueryResponse",value:function(e){this._partialQueryResponses.delete(e)}},{key:"setQueryResponseCacheEntry",value:(he=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._setQueryResponseCacheEntry(t.hash,r,a,n));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return he.apply(this,arguments)})},{key:"_analyzeFieldNode",value:(ie=r(m.mark((function e(t,r,a,n,i){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!K(t,{fragmentDefinitions:i.fragmentDefinitions})){e.next=5;break}return e.next=3,this._analyzeParentFieldNode(t,r,a,n,i);case 3:e.next=7;break;case 5:return e.next=7,this._analyzeLeafFieldNode(t,r,a,n,i);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return ie.apply(this,arguments)})},{key:"_analyzeLeafFieldNode",value:(ne=r(m.mark((function e(t,r,a,n,i){var c,o,u,h,p,l,f,d,y,v,b,g,_,D,C,k;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=O(t,r,i),o=c.hashedRequestFieldCacheKey,u=c.propNameOrIndex,h=c.requestFieldCacheKey,p=c.requestFieldPath,l=i.fieldTypeMap.get(p),f=r.entityData,d=r.fragmentKind,y=r.fragmentName,v=r.requestFieldPathData,b=r.typeName,g={dataTypeName:(null==f?void 0:f.__typename)||(null==v?void 0:v.__typename),fieldTypeName:b,fragmentKind:d,fragmentName:y},!s._isNodeRequestFieldPath(l)){e.next=14;break}return e.next=8,this._retrieveCachedRequestFieldPathData(o,h,n,i);case 8:_=e.sent,D=_.cacheability,C=_.entry,s._setCachedResponseData({cacheability:D,data:C},a,c,g,n,i),e.next=17;break;case 14:k=s._getFieldDataFromAncestor(f,u)||s._getFieldDataFromAncestor(v,u),s._setFieldPathChecklist(a.fieldPathChecklist,{data:k},p,g),s._setCachedData(a.data,{data:k},u);case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return ne.apply(this,arguments)})},{key:"_analyzeParentFieldNode",value:(te=r(m.mark((function e(t,r,a,n,i){var c,o,u,h,l,d,y,v,b,g,D,C,k,w,P=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=O(t,r,i),o=c.propNameOrIndex,u=c.requestFieldCacheKey,h=c.requestFieldPath,l=i.fieldTypeMap.get(h),e.next=5,this._retrieveCachedParentNodeData(r,c,l,n,i);case 5:if(d=e.sent,y=d.cacheability,v=d.data,b=d.entityData,g=d.requestFieldPathData,D=r.fragmentKind,C=r.fragmentName,k=r.typeName,s._setCachedResponseData({cacheability:y,data:v},a,c,{dataTypeName:f(v,_),fieldTypeName:k,fragmentKind:D,fragmentName:C},n,i),p(v)){e.next=14;break}return e.abrupt("return");case 14:return w=[],z(t,v,i.fragmentDefinitions,(function(e,t,r,s,c){w.push(P._analyzeFieldNode(e,{cacheability:y,entityData:b,fragmentKind:r,fragmentName:s,index:c,requestFieldCacheKey:u,requestFieldPath:h,requestFieldPathData:g,typeName:t},De(De({},a),{},{data:a.data[o]}),n,i))})),e.next=19,Promise.all(w);case 19:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return te.apply(this,arguments)})},{key:"_buildCacheMetadata",value:function(e,r,a,n){var i=this,s=e.ast,c=r.data,o=t(r,["data"]),u=this._createCacheMetadata(De({data:c},o),n),h=I(s,n.operation)[0],p=q(h);return p?(p.forEach((function(e){var t=e.fieldNode;return i._setFieldCacheability(t,{requestFieldPath:n.operation},{cacheMetadata:u,data:c},a,n)})),u):u}},{key:"_cacheResponse",value:(ee=r(m.mark((function e(t,r,a,n,i){var c,o,u,h,p,l,f,y,v,b,g;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=be(a,i),o=c,oe(a,i)&&(this._setResponseChunksAwaitingCaching(c,i),o=void 0),ce(a,i)&&(o=this._retrieveResponseDataForCaching(c,i)),u=[],!o){e.next=15;break}if(h=o.data,p=this._buildCacheMetadata(t,o,n,i),u.push(this._setEntityAndRequestFieldPathCacheEntries(t,{cacheMetadata:p,entityData:d(h),requestFieldPathData:d(h)},n,i)),i.operation===C&&(i.queryFiltered&&r&&(u.push(this._setQueryResponseCacheEntry(r.hash,{cacheMetadata:p,data:h},n,i)),y=this._getPartialQueryResponse(t.hash)),l=s._mergeResponseCacheMetadata(p,y),f=this._mergeResponseData(h,y),u.push(this._setQueryResponseCacheEntry(t.hash,{cacheMetadata:l,data:f},n,i))),!n.awaitDataCaching){e.next=13;break}return e.next=13,Promise.all(u);case 13:if(!(ue(c,i)&&l&&f)){e.next=15;break}return e.abrupt("return",{cacheMetadata:l,data:f});case 15:return v=c.data,b=c.hasNext,g=c.paths,e.abrupt("return",{cacheMetadata:this._buildCacheMetadata(t,c,n,i),data:v,hasNext:b,paths:g});case 17:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return ee.apply(this,arguments)})},{key:"_checkCacheEntry",value:($=r(m.mark((function e(t,r,a,n){var i,c;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._hasCacheEntry(t,r);case 3:if((i=e.sent)&&s._isValid(i)){e.next=6;break}return e.abrupt("return",!1);case 6:return e.next=8,this._getCacheEntry(t,r,a,n);case 8:if(c=e.sent,!u(c)){e.next=11;break}return e.abrupt("return",!1);case 11:return e.abrupt("return",{cacheability:i,entry:c});case 14:return e.prev=14,e.t0=e.catch(0),e.abrupt("return",!1);case 17:case"end":return e.stop()}}),e,this,[[0,14]])}))),function(e,t,r,a){return $.apply(this,arguments)})},{key:"_createCacheMetadata",value:function(e,t){var r=e._cacheMetadata,a=e.headers,n=t.operation,i=new Map,s=function(e){var t=e._cacheMetadata,r=e.fallback,a=e.headers;if(t&&!W(t)){var n=Object.values(t),i=G(n),s=i[0],c=i.slice(1);return new L({metadata:c.reduce((function(e,t){return t.ttl<e.ttl?t:e}),s)})}return a&&a.has("cache-control")?new L({headers:a}):new L({cacheControl:r})}({_cacheMetadata:r,fallback:this._fallbackOperationCacheability,headers:a});return i.set(n,s),r&&S(r,i),i}},{key:"_getCacheEntry",value:(Z=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.get("".concat(t,"::").concat(r));case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t,r,a){return Z.apply(this,arguments)})},{key:"_getPartialQueryResponse",value:function(e){var t=this._partialQueryResponses.get(e);return this._partialQueryResponses.delete(e),t}},{key:"_hasCacheEntry",value:(Y=r(m.mark((function e(t,r){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.has("".concat(t,"::").concat(r));case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),e.abrupt("return",!1);case 9:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,t){return Y.apply(this,arguments)})},{key:"_isFieldEntity",value:function(e,t){var r=t.isEntity,a=t.possibleTypes;return!!f(e,this._typeIDKey,null)&&(!!r||!!a.length&&a.some((function(t){return t.typeName===e.__typename})))}},{key:"_mergeObjects",value:function(e,t){var r=this;return H(e,t,(function(e,t){return h(t)&&t[r._typeIDKey]?t[r._typeIDKey]:void 0}))}},{key:"_mergeResponseData",value:function(e,t){return t?this._mergeObjects(t.data,e):e}},{key:"_parseEntityAndRequestFieldPathCacheEntryData",value:(X=r(m.mark((function e(t,r,a,n,i){var s,c,o,u,h,l,d,y,v,b,g=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=a.cacheMetadata,c=a.entityData,o=a.requestFieldPathData,u=O(t,r,i),h=u.requestFieldCacheKey,l=u.requestFieldPath,d=u.responseDataPath,y=f(o,d),v=i.fieldTypeMap.get(l),p(y)||null!=v&&v.hasDirectives){e.next=7;break}return e.abrupt("return");case 7:if(!p(y)){e.next=12;break}return b=[],z(t,y,i.fragmentDefinitions,(function(e,t,r,a,u){b.push(g._parseEntityAndRequestFieldPathCacheEntryData(e,{index:u,requestFieldCacheKey:h,requestFieldPath:l,responseDataPath:d},{cacheMetadata:s,entityData:c,requestFieldPathData:o},n,i))})),e.next=12,Promise.all(b);case 12:return e.next=14,this._setEntityAndRequestFieldPathCacheEntry(t,u,{cacheMetadata:s,entityData:c,requestFieldPathData:o},n,i);case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return X.apply(this,arguments)})},{key:"_retrieveCachedEntityData",value:(B=r(m.mark((function t(r,a,n,i){var s,c,o,u,h,p,l=this;return m.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s=a.possibleTypes,c=a.typeName,o=[].concat(e(s.map((function(e){return e.typeName}))),[c]),t.next=4,Promise.all(o.map((function(e){return l._checkCacheEntry(k,"".concat(e,"::").concat(r),n,i)})));case 4:return u=t.sent,1===(h=u.filter((function(e){return!!e}))).length?p=h[0]:h.length>1&&(h.sort((function(e,t){var r=e.cacheability,a=t.cacheability;return r.metadata.ttl-a.metadata.ttl})),p={cacheability:h[0].cacheability,entry:h.reduce((function(e,t){var r=t.entry;return l._mergeObjects(e,r)}),{})}),t.abrupt("return",p||{});case 8:case"end":return t.stop()}}),t)}))),function(e,t,r,a){return B.apply(this,arguments)})},{key:"_retrieveCachedParentNodeData",value:(T=r(m.mark((function e(t,r,a,n,i){var c,o,h,p,l,f,d,y,v,b,g,_,D,C,k,w,P,j;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.entityData,h=t.requestFieldPathData,p=r.hashedRequestFieldCacheKey,l=r.propNameOrIndex,f=r.requestFieldCacheKey,d=s._getFieldDataFromAncestor(o,l),y=s._getFieldDataFromAncestor(h,l),!s._isNodeRequestFieldPath(a)){e.next=12;break}return e.next=7,this._retrieveCachedRequestFieldPathData(p,f,n,i);case 7:b=e.sent,g=b.cacheability,(_=b.entry)&&(y=this._mergeObjects(y,_)),g&&(v=g);case 12:if(D=ge(y,a,this._typeIDKey),!s._isNodeEntity(a)||!D){e.next=21;break}return e.next=16,this._retrieveCachedEntityData(D,a,n,i);case 16:k=e.sent,w=k.cacheability,(P=k.entry)&&(d=this._mergeObjects(d,P)),w&&(!v||w.metadata.ttl>(null===(C=v)||void 0===C?void 0:C.metadata.ttl))&&(v=w);case 21:return j=u(y)&&u(d)?null!==(c=d)&&void 0!==c?c:y:this._mergeObjects(y,d),e.abrupt("return",{cacheability:v,data:j,entityData:d,requestFieldPathData:y});case 23:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return T.apply(this,arguments)})},{key:"_retrieveCachedRequestFieldPathData",value:(M=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._checkCacheEntry(w,t,a,De(De({},n),{},{requestFieldCacheKey:r}))||{});case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return M.apply(this,arguments)})},{key:"_retrieveCachedResponseData",value:(N=r(m.mark((function e(t,r,a){var n,i,c,o,u=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.ast,i={cacheMetadata:new Map,data:{},fieldCount:{missing:0,total:0},fieldPathChecklist:new Map},c=I(n,a.operation)[0],o=q(c)){e.next=6;break}return e.abrupt("return",i);case 6:return e.next=8,Promise.all(o.map((function(e){var t=e.fieldNode;return u._analyzeFieldNode(t,{requestFieldPath:a.operation},i,r,a)})));case 8:return i.fieldCount=s._countFieldPathChecklist(i.fieldPathChecklist),e.abrupt("return",i);case 10:case"end":return e.stop()}}),e)}))),function(e,t,r){return N.apply(this,arguments)})},{key:"_retrieveResponseDataForCaching",value:function(t,r){var a,n=this._responseChunksAwaitingCaching.get(r.requestID);return this._responseChunksAwaitingCaching.delete(r.requestID),(a=[].concat(e(n),[t])).reduce((function(e,t,r){var n=t._cacheMetadata,i=t.data,s=t.hasNext,c=t.headers,o=t.paths;return n&&(e._cacheMetadata=e._cacheMetadata?pe(pe({},e._cacheMetadata),n):n),e.data=e.data?J(e.data,i):i,0===r&&(e.headers=c),r===a.length-1&&(e.hasNext=s),o&&(e.paths||(e.paths=[]),e.paths.push(o[0])),e}),{data:{}})}},{key:"_setCacheEntry",value:(E=r(m.mark((function e(t,r,a,n,i,s){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._cache.set("".concat(t,"::").concat(r),d(a),n);case 3:e.next=7;break;case 5:e.prev=5,e.t0=e.catch(0);case 7:case"end":return e.stop()}}),e,this,[[0,5]])}))),function(e,t,r,a,n,i){return E.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntries",value:(F=r(m.mark((function e(t,r,a,n){var i,s,c=this;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=I(t.ast,n.operation)[0],s=q(i)){e.next=4;break}return e.abrupt("return");case 4:return e.next=6,Promise.all(s.map((function(e){var t=e.fieldNode;return c._parseEntityAndRequestFieldPathCacheEntryData(t,{requestFieldPath:n.operation},r,a,n)})));case 6:case"end":return e.stop()}}),e)}))),function(e,t,r,a){return F.apply(this,arguments)})},{key:"_setEntityAndRequestFieldPathCacheEntry",value:(x=r(m.mark((function e(t,r,a,n,i){var s,o,h,p,l,d,y,v,b,g;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=a.cacheMetadata,o=a.entityData,h=a.requestFieldPathData,p=r.requestFieldPath,l=r.responseDataPath,d=f(o,l),y=i.fieldTypeMap.get(p),v=s.get(p),!u(d)&&y&&v){e.next=7;break}return e.abrupt("return");case 7:return(b=[]).push(this._setRequestFieldPathCacheEntry(t,r,{cacheability:v,data:h,fieldTypeInfo:y},n,i)),!(g=this._isFieldEntity(d,y))&&y.hasArguments&&c(o,l),g&&b.push(this._setEntityCacheEntry(r,{cacheability:v,data:o,fieldTypeInfo:y},n,i)),e.next=14,Promise.all(b);case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return x.apply(this,arguments)})},{key:"_setEntityCacheEntry",value:(j=r(m.mark((function e(t,r,a,n){var i,s,c,u,h,p,l,d;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.responseDataPath,s=r.cacheability,c=r.data,u=r.fieldTypeInfo,h=f(c,i),p=u.isEntity?u.typeName:h.__typename,l="".concat(p,"::").concat(h[this._typeIDKey]),e.next=7,this._checkCacheEntry(k,l,a,n);case 7:return(d=e.sent)&&(h=this._mergeObjects(d.entry,h)),e.next=11,this._setCacheEntry(k,l,h,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:a.tag},a,n);case 11:o(c,i,{__cacheKey:"".concat(k,"::").concat(l)});case 12:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return j.apply(this,arguments)})},{key:"_setFieldCacheability",value:function(e,t,r,a,n){var i=this,s=r.cacheMetadata,c=r.data,o=t.requestFieldPath,u=O(e,t,n),h=u.requestFieldPath,l=u.responseDataPath,d=f(c,l),y=n.fieldTypeMap.get(h);(p(d)||null!=y&&y.hasDirectives)&&(this._setFieldTypeCacheDirective(s,{ancestorRequestFieldPath:o,requestFieldPath:h},n),p(d)&&z(e,d,n.fragmentDefinitions,(function(e,t,r,o,u){i._setFieldCacheability(e,{index:u,requestFieldPath:h,responseDataPath:l},{cacheMetadata:s,data:c},a,n)})))}},{key:"_setFieldTypeCacheDirective",value:function(e,t,r){var a=t.ancestorRequestFieldPath,n=t.requestFieldPath,i=r.fieldTypeMap,c=r.operation;if(!e.has(n)){var o=i.get(n);if(o&&this._typeCacheDirectives[o.typeName]){var u=new L({cacheControl:this._typeCacheDirectives[o.typeName]});s._setCacheMetadata(e,u,n,c)}else this._cascadeCacheControl&&a&&s._setCacheMetadata(e,e.get(a),n,c)}}},{key:"_setPartialQueryResponse",value:(g=r(m.mark((function e(t,r,a,n){return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._partialQueryResponses.set(t,r);case 1:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return g.apply(this,arguments)})},{key:"_setQueryResponseCacheEntry",value:(b=r(m.mark((function e(t,r,a,n){var i,c,o,u;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=r.cacheMetadata,c=r.data,o=U(i),u=s._getOperationCacheControl(i,n.operation),e.next=5,this._setCacheEntry(D,t,{cacheMetadata:o,data:c},{cacheHeaders:{cacheControl:u},tag:a.tag},a,n);case 5:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a){return b.apply(this,arguments)})},{key:"_setRequestFieldPathCacheEntry",value:(v=r(m.mark((function e(t,r,a,n,i){var s,u,l,d,y,v,b,g,_,D,k;return m.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=a.cacheability,u=a.data,l=a.fieldTypeInfo,d=r.hashedRequestFieldCacheKey,y=r.requestFieldCacheKey,v=r.responseDataPath,b=f(u,v),g=this._isFieldEntity(b,l),_=l.hasArguments||l.hasDirectives,i.operation!==C||!g&&!_){e.next=14;break}return h(b)&&null!==(D=t.selectionSet)&&void 0!==D&&D.selections&&(b=ae(b,t.selectionSet.selections,r,i)),e.next=9,this._checkCacheEntry(w,d,n,De(De({},i),{},{requestFieldCacheKey:y}));case 9:return(k=e.sent)&&p(b)&&(b=this._mergeObjects(k.entry,b)),e.next=13,this._setCacheEntry(w,d,b,{cacheHeaders:{cacheControl:s.printCacheControl()},tag:n.tag},n,De(De({},i),{},{requestFieldCacheKey:y}));case 13:K(t,{fragmentDefinitions:i.fragmentDefinitions})&&(g?o(u,v,{__cacheKey:"".concat(w,"::").concat(d)}):c(u,v));case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,r,a,n){return v.apply(this,arguments)})},{key:"_setResponseChunksAwaitingCaching",value:function(t,r){var a=this._responseChunksAwaitingCaching.get(r.requestID);a?this._responseChunksAwaitingCaching.set(r.requestID,[].concat(e(a),[t])):this._responseChunksAwaitingCaching.set(r.requestID,[t])}}],[{key:"_countFieldPathChecklist",value:function(e){var t={missing:0,total:0};return e.forEach((function(e){t.total+=e.length;var r=e.filter((function(e){return!e.hasData}));t.missing+=r.length})),t}},{key:"_getFieldDataFromAncestor",value:function(e,t){return p(e)?d(e[t]):void 0}},{key:"_getOperationCacheControl",value:function(e,t){if(!e)return"no-cache";var r=e.get(t);return r?r.printCacheControl():"no-cache"}},{key:"_isNodeEntity",value:function(e){if(!e)return!1;var t=e.isEntity,r=e.possibleTypes;return t||r.some((function(e){return!!e.isEntity}))}},{key:"_isNodeRequestFieldPath",value:function(e){return!!e&&(this._isNodeEntity(e)||e.hasArguments||e.hasDirectives)}},{key:"_isValid",value:function(e){return!f(e,["metadata","cacheControl","noCache"],!1)&&e.checkTTL()}},{key:"_mergeResponseCacheMetadata",value:function(t,r){return r?new Map([].concat(e(r.cacheMetadata),e(t))):t}},{key:"_setCachedData",value:function(e,t,r){var a=t.data;if(p(a)||u(a)){if(p(a)){var n=a;e[r]=l(n)?[]:{}}}else e[r]=a}},{key:"_setCachedResponseData",value:function(e,t,r,a,n,i){var c=t.cacheMetadata,o=t.data,u=t.fieldPathChecklist,h=r.propNameOrIndex,p=r.requestFieldPath,l=i.operation;s._setCacheMetadata(c,e.cacheability,p,l),s._setFieldPathChecklist(u,e,p,a),s._setCachedData(o,e,h)}},{key:"_setCacheMetadata",value:function(e,t,r,a){if(t){e.set(r,t);var n=e.get(a);(!n||n.metadata.ttl>t.metadata.ttl)&&e.set(a,t)}}},{key:"_setFieldPathChecklist",value:function(t,r,a,n){var i=r.data,s=n.dataTypeName,c=n.fieldTypeName,o=n.fragmentKind,h=n.fragmentName;if(u(c)||o===R){if(t.has(a))return;t.set(a,[{fragmentKind:o,fragmentName:h,hasData:!u(i)}])}else if(s===c){var p=t.get(a),l=p||[];l.some((function(e){return e.typeName===s}))||t.set(a,[].concat(e(l),[{fragmentKind:o,fragmentName:h,hasData:!u(i),typeName:s}]))}}}]),s}()).prototype,"_getCacheEntry",[de],Object.getOwnPropertyDescriptor(ve.prototype,"_getCacheEntry"),ve.prototype),s(ve.prototype,"_setCacheEntry",[ye],Object.getOwnPropertyDescriptor(ve.prototype,"_setCacheEntry"),ve.prototype),s(ve.prototype,"_setPartialQueryResponse",[me],Object.getOwnPropertyDescriptor(ve.prototype,"_setPartialQueryResponse"),ve.prototype),ve);export default Ce;
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../cache-manager/src/helpers/areOnlyPopulatedFieldsTypeIdKeys.ts","../cache-manager/src/helpers/filterOutPropsWithArgsOrDirectives.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/isLastResponseChunk.ts","../cache-manager/src/helpers/isNotLastResponseChunk.ts","../cache-manager/src/helpers/isNotResponseChunk.ts","../cache-manager/src/helpers/normalizePatchResponseData.ts","../cache-manager/src/helpers/validTypeIDValue.ts","../cache-manager/src/main/index.ts","../cache-manager/src/debug/log-cache-query/index.ts","../cache-manager/src/debug/log-cache-entry/index.ts","../cache-manager/src/debug/log-partial-compiled/index.ts","../cache-manager/src/consts/index.ts","../cache-manager/src/helpers/deriveOpCacheability.ts","../cache-manager/src/helpers/mergeResponseDataSets.ts"],"sourcesContent":["import { PlainObjectMap } from \"@graphql-box/core\";\nimport { isArray, isPlainObject } from \"lodash\";\n\nconst checkValue = (value: any, typeIDKey: string): boolean => {\n if (isArray(value)) {\n return value.reduce((accB: boolean, entry) => {\n if (!accB) {\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: PlainObjectMap, typeIDKey: string): boolean => {\n const keys = Object.keys(data);\n\n if (keys.length === 1 && !!data[typeIDKey]) {\n return true;\n }\n\n return keys.reduce((accA: boolean, key) => {\n if (!accA) {\n return false;\n }\n\n return checkValue(data[key], typeIDKey);\n }, true);\n};\n\nexport default (data: PlainObjectMap, typeIDKey: string) => {\n return recursivelyCheckProps(data, typeIDKey);\n};\n","import { PlainObjectMap } from \"@graphql-box/core\";\nimport { KeysAndPaths, buildFieldKeysAndPaths, getName, resolveFragments } from \"@graphql-box/helpers\";\nimport { FieldNode, SelectionNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (\n fieldData: PlainObjectMap,\n selectionNodes: readonly SelectionNode[],\n ancestorKeysAndPaths: KeysAndPaths,\n context: CacheManagerContext,\n) => {\n const fieldAndTypeName = resolveFragments(selectionNodes, context.fragmentDefinitions);\n\n return keys(fieldData).reduce((acc: PlainObjectMap, key) => {\n const match = fieldAndTypeName.find(({ fieldNode }) => (getName(fieldNode) as FieldNode[\"name\"][\"value\"]) === 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 { CheckFieldPathChecklistResult, FieldPathChecklistValue } from \"../defs\";\n\nexport default (\n fieldPathChecklistValues: FieldPathChecklistValue[] | undefined,\n fieldTypeName: string | undefined,\n): CheckFieldPathChecklistResult => {\n if (!fieldPathChecklistValues || !fieldPathChecklistValues.length) {\n return { hasData: false, typeUnused: !!fieldTypeName };\n }\n\n if (fieldPathChecklistValues.length === 1) {\n const { hasData, typeName } = fieldPathChecklistValues[0];\n const typeUnused = !typeName ? undefined : typeName !== fieldTypeName;\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 FRAGMENT_SPREAD,\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getName,\n hasChildFields,\n} from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from \"../defs\";\nimport checkFieldPathChecklist from \"./checkFieldPathChecklist\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterFragmentSpreads from \"./filterFragmentSpreads\";\nimport filterIDsAndTypeNames from \"./filterIDsAndTypeNames\";\nimport filterInlineFragments from \"./filterInlineFragments\";\n\nconst 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 i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldsAndTypeNames[i];\n\n if (fragmentKind === 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 === FRAGMENT_SPREAD) {\n fragmentSpreadFieldCounter[fragmentName as string].hasData += 1;\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\nexport default filterField;\n","import { deleteFragmentSpreads } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { isEmpty, keys } from \"lodash\";\nimport { FragmentSpreadFieldCounter } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n ancestorRequestFieldPath: string,\n) => {\n if (isEmpty(fragmentSpreadFieldCounter)) {\n return;\n }\n\n keys(fragmentSpreadFieldCounter).forEach(key => {\n fragmentSpreadChecklist[key].paths.push(ancestorRequestFieldPath);\n\n const { hasData, total } = fragmentSpreadFieldCounter[key];\n\n if (hasData === total) {\n deleteFragmentSpreads(field, key);\n fragmentSpreadChecklist[key].deleted += 1;\n }\n });\n};\n","import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from \"@graphql-box/helpers\";\nimport { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (\n field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,\n { fragmentDefinitions, typeIDKey }: CacheManagerContext,\n) => {\n const inlineFragments = getInlineFragments(field);\n let filtered = false;\n\n inlineFragments.forEach(fragment => {\n const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });\n\n if (!fieldsAndTypeNames || !fieldsAndTypeNames.length) {\n deleteInlineFragments(field, fragment);\n filtered = true;\n return;\n }\n\n if (fieldsAndTypeNames.length === 1) {\n const { fieldNode } = fieldsAndTypeNames[0];\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 { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from \"graphql\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport default (\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) as FieldNode[\"name\"][\"value\"]);\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 { fieldNode } = fieldsAndTypeNames[0];\n deleteChildFields(field, fieldNode);\n return true;\n }\n\n return false;\n};\n","import { RequestData } from \"@graphql-box/core\";\nimport {\n buildFieldKeysAndPaths,\n deleteChildFields,\n getChildFields,\n getOperationDefinitions,\n} from \"@graphql-box/helpers\";\nimport { CacheManagerContext, CachedResponseData } from \"../defs\";\nimport createFragmentSpreadChecklist from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\nimport filterFragmentDefinitions from \"./filterFragmentDefinitions\";\n\nexport default (requestData: RequestData, { fieldPathChecklist }: CachedResponseData, context: CacheManagerContext) => {\n const { ast } = requestData;\n const queryNode = getOperationDefinitions(ast, context.operation)[0];\n const { fragmentDefinitions } = 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 i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {\n const { fieldNode } = fieldsAndTypeNames[i];\n\n const { requestFieldPath } = buildFieldKeysAndPaths(\n fieldNode,\n {\n requestFieldPath: context.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 { RequestData } from \"@graphql-box/core\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext } from \"../defs\";\n\nexport type FragmentSpreadCheckist = {\n [key: string]: {\n deleted: number;\n paths: string[];\n total: number;\n };\n};\n\nexport default ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>\n keys(fragmentDefinitions ?? {}).reduce((acc: FragmentSpreadCheckist, 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 { DocumentNode } from \"graphql\";\nimport { keys } from \"lodash\";\nimport { CacheManagerContext, FieldPathChecklist } from \"../defs\";\nimport { FragmentSpreadCheckist } from \"./createFragmentSpreadChecklist\";\nimport filterField from \"./filterField\";\n\nexport default (\n ast: DocumentNode,\n fieldPathChecklist: FieldPathChecklist,\n fragmentSpreadChecklist: FragmentSpreadCheckist,\n context: CacheManagerContext,\n) => {\n const definitionsToFilter = keys(fragmentSpreadChecklist).reduce(\n (namesAndPaths: { name: string; path: string }[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n\n return deleted === 0 && total === 1\n ? [...namesAndPaths, { name: key, path: fragmentSpreadChecklist[key].paths[0] as string }]\n : namesAndPaths;\n },\n [],\n );\n\n const { fragmentDefinitions = {} } = context;\n\n definitionsToFilter.forEach(({ name, path }) => {\n const fragmentDefinition = fragmentDefinitions[name];\n filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);\n });\n\n const definitionsToDelete = keys(fragmentSpreadChecklist).reduce((names: string[], key) => {\n const { deleted, total } = fragmentSpreadChecklist[key];\n return deleted > 0 && deleted === total ? [...names, key] : names;\n }, []);\n\n if (!definitionsToDelete.length) {\n return ast;\n }\n\n return deleteFragmentDefinitions(ast, {\n include: definitionsToDelete,\n });\n};\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && !rawResponseData.hasNext && rawResponseData.paths;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n context.hasDeferOrStream && rawResponseData.hasNext;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) =>\n !context.hasDeferOrStream && !rawResponseData.hasNext && !rawResponseData.paths;\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { set } from \"lodash\";\nimport { CacheManagerContext } from \"..\";\n\nexport default (rawResponseData: RawResponseDataWithMaybeCacheMetadata, context: CacheManagerContext) => {\n if (!context.normalizePatchResponseData) {\n return rawResponseData;\n }\n\n const { data, paths, ...rest } = rawResponseData;\n\n return {\n ...rest,\n data: set({}, (paths as string[])[0], data),\n paths,\n };\n};\n","import { FieldTypeInfo } from \"@graphql-box/core\";\nimport { isPlainObject } from \"lodash\";\n\nexport const getValidTypeIDValue = (\n requestFieldPathData: any,\n { typeIDValue }: FieldTypeInfo,\n typeIDKey: string,\n): string | number | undefined => {\n const requestFieldPathDataIDValue = isPlainObject(requestFieldPathData) ? requestFieldPathData[typeIDKey] : undefined;\n return typeIDValue || requestFieldPathDataIDValue;\n};\n","import Cachemap from \"@cachemap/core\";\nimport {\n CacheMetadata,\n CacheTypes,\n CachemapOptions,\n DATA_ENTITIES,\n DEFAULT_TYPE_ID_KEY,\n FieldTypeInfo,\n PlainObjectMap,\n PlainObjectStringMap,\n QUERY,\n QUERY_RESPONSES,\n REQUEST_FIELD_PATHS,\n RawResponseDataWithMaybeCacheMetadata,\n RequestContext,\n RequestData,\n RequestOptions,\n ResponseData,\n TYPE_NAME_KEY,\n} from \"@graphql-box/core\";\nimport {\n FRAGMENT_SPREAD,\n KeysAndPaths,\n buildFieldKeysAndPaths,\n dehydrateCacheMetadata,\n getChildFields,\n getFragmentDefinitions,\n getOperationDefinitions,\n hasChildFields,\n hashRequest,\n iterateChildFields,\n mergeObjects,\n rehydrateCacheMetadata,\n} from \"@graphql-box/helpers\";\nimport Cacheability from \"cacheability\";\nimport { FieldNode, print } from \"graphql\";\nimport { assign, cloneDeep, get, isArray, isObjectLike, isPlainObject, isUndefined, set, unset } from \"lodash\";\nimport { CACHE_CONTROL, HEADER_NO_CACHE, METADATA, NO_CACHE } from \"../consts\";\nimport { logCacheEntry, logCacheQuery, logPartialCompiled } from \"../debug\";\nimport {\n AnalyzeQueryResult,\n AncestorKeysAndPaths,\n CacheManagerContext,\n CacheManagerDef,\n CachedAncestorFieldData,\n CachedResponseData,\n CheckCacheEntryResult,\n DataForCachingEntry,\n FieldCount,\n FieldPathChecklist,\n FieldPathChecklistValue,\n MergedCachedFieldData,\n PartialQueryResponse,\n PartialQueryResponses,\n QueryResponseCacheEntry,\n ResponseDataForCaching,\n TypeNamesAndKind,\n UserOptions,\n} from \"../defs\";\nimport areOnlyPopulatedFieldsTypeIdKeys from \"../helpers/areOnlyPopulatedFieldsTypeIdKeys\";\nimport deriveOpCacheability from \"../helpers/deriveOpCacheability\";\nimport filterOutPropsWithArgsOrDirectives from \"../helpers/filterOutPropsWithArgsOrDirectives\";\nimport filterQuery from \"../helpers/filterQuery\";\nimport isLastResponseChunk from \"../helpers/isLastResponseChunk\";\nimport isNotLastResponseChunk from \"../helpers/isNotLastResponseChunk\";\nimport isNotResponseChunk from \"../helpers/isNotResponseChunk\";\nimport mergeResponseDataSets from \"../helpers/mergeResponseDataSets\";\nimport normalizePatchResponseData from \"../helpers/normalizePatchResponseData\";\nimport { getValidTypeIDValue } from \"../helpers/validTypeIDValue\";\n\nexport default class CacheManager implements CacheManagerDef {\n private static _countFieldPathChecklist(fieldPathChecklist: FieldPathChecklist): FieldCount {\n const fieldCount: FieldCount = { missing: 0, total: 0 };\n\n fieldPathChecklist.forEach(checklistValues => {\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(ancestorFieldData: any, propNameOrIndex: string | number): any {\n return isObjectLike(ancestorFieldData) ? cloneDeep(ancestorFieldData[propNameOrIndex]) : undefined;\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 requestData: PlainObjectMap,\n { data }: MergedCachedFieldData,\n propNameOrIndex: string | number,\n ): void {\n if (!isObjectLike(data) && !isUndefined(data)) {\n requestData[propNameOrIndex] = data as string | number | boolean | null;\n } else if (isObjectLike(data)) {\n const objectLikeData = data as PlainObjectMap | any[];\n requestData[propNameOrIndex] = isArray(objectLikeData) ? [] : {};\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, fieldTypeName, fragmentKind, fragmentName }: TypeNamesAndKind,\n ): void {\n if (isUndefined(fieldTypeName) || fragmentKind === 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 ? (entry as FieldPathChecklistValue[]) : [];\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 as string },\n ]);\n }\n\n private _cache: Cachemap;\n private _cascadeCacheControl: boolean;\n private _fallbackOperationCacheability: string;\n private _partialQueryResponses: PartialQueryResponses = new Map();\n private _responseChunksAwaitingCaching: Map<string, RawResponseDataWithMaybeCacheMetadata[]> = new Map();\n private _typeCacheDirectives: PlainObjectStringMap;\n private _typeIDKey: string;\n\n constructor(options: UserOptions) {\n const errors: TypeError[] = [];\n\n if (!options.cache) {\n errors.push(new TypeError(\"@graphql-box/cache-manager expected options.cache.\"));\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 TypeError(message));\n }\n\n if (errors.length) {\n throw 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 get cache(): Cachemap {\n return this._cache;\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 if (!ast) {\n return Promise.reject(new TypeError(\"@graphql-box/cache-manager expected an AST.\"));\n }\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 // 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 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 return { updated: { ast: filteredAST, hash: hashRequest(filteredRequest), request: filteredRequest } };\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,\n options: RequestOptions,\n context: CacheManagerContext,\n ): Promise<void> {\n if (hasChildFields(fieldNode, { fragmentDefinitions: context.fragmentDefinitions })) {\n await this._analyzeParentFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n } else {\n await this._analyzeLeafFieldNode(fieldNode, cachedAncestorFieldData, cachedResponseData, options, context);\n }\n }\n\n private async _analyzeLeafFieldNode(\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 { hashedRequestFieldCacheKey, propNameOrIndex, requestFieldCacheKey, requestFieldPath } = keysAndPaths;\n const fieldTypeInfo = context.fieldTypeMap.get(requestFieldPath);\n const { entityData, fragmentKind, fragmentName, requestFieldPathData, typeName } = cachedAncestorFieldData;\n\n const typeNamesAndKind = {\n dataTypeName: entityData?.__typename || requestFieldPathData?.__typename,\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) as FieldTypeInfo;\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 objectLikeData = data as PlainObjectMap | any[];\n const promises: Promise<void>[] = [];\n\n iterateChildFields(\n fieldNode,\n objectLikeData,\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 { ...cachedResponseData, data: cachedResponseData.data[propNameOrIndex] },\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 const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cacheMetadata;\n }\n\n fieldsAndTypeNames.forEach(({ fieldNode }) =>\n this._setFieldCacheability(\n fieldNode,\n { requestFieldPath: context.operation },\n { cacheMetadata, data },\n options,\n context,\n ),\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: PlainObjectMap | undefined;\n\n if (context.operation === 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(\n cacheType: CacheTypes,\n hash: string,\n options: RequestOptions,\n context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<CheckCacheEntryResult | 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(cacheType, hash, options, context);\n\n if (isUndefined(entry)) {\n return false;\n }\n\n return { cacheability, entry };\n } catch (error) {\n return false;\n }\n }\n\n private _createCacheMetadata(\n { _cacheMetadata, headers }: RawResponseDataWithMaybeCacheMetadata,\n { operation }: CacheManagerContext,\n ): CacheMetadata {\n const cacheMetadata = new Map();\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(\n cacheType: CacheTypes,\n hash: string,\n _options: RequestOptions,\n _context: CacheManagerContext & { requestFieldCacheKey?: string },\n ): Promise<any> {\n try {\n return await this._cache.get(`${cacheType}::${hash}`);\n } catch (errors) {\n return Promise.reject(errors);\n }\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 (error) {\n return false;\n }\n }\n\n private _isFieldEntity(fieldData: any, { isEntity, possibleTypes }: FieldTypeInfo): boolean {\n if (!get(fieldData, this._typeIDKey, null)) {\n return false;\n }\n\n if (isEntity) {\n return true;\n }\n\n if (!possibleTypes.length) {\n return false;\n }\n\n return possibleTypes.some(type => type.typeName === fieldData.__typename);\n }\n\n private _mergeObjects<T>(obj: T, src: T): T {\n return mergeObjects(obj, src, (_key: string, val: any): string | number | undefined => {\n return isPlainObject(val) && val[this._typeIDKey] ? val[this._typeIDKey] : undefined;\n });\n }\n\n private _mergeResponseData(\n responseData: PlainObjectMap,\n partialQueryResponse?: PartialQueryResponse,\n ): PlainObjectMap {\n if (!partialQueryResponse) {\n return responseData;\n }\n\n return this._mergeObjects(partialQueryResponse.data, responseData);\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);\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 as PlainObjectMap | any[],\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 ) {\n const typeNames = [...possibleTypes.map(type => type.typeName), typeName];\n\n const checkResults = await Promise.all(\n typeNames.map(name => this._checkCacheEntry(DATA_ENTITIES, `${name}::${validTypeIDValue}`, options, context)),\n );\n\n const validResults = checkResults.filter(result => !!result) as CheckCacheEntryResult[];\n let validResult: CheckCacheEntryResult | 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((obj, { entry }) => this._mergeObjects(obj, entry), {}),\n };\n }\n\n return (validResult || {}) as Partial<CheckCacheEntryResult>;\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 if (entry) {\n requestFieldPathData = this._mergeObjects(requestFieldPathData, entry);\n }\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 if (entry) {\n entityData = this._mergeObjects(entityData, entry);\n }\n\n if (entryCacheability && (!cacheability || entryCacheability.metadata.ttl > cacheability?.metadata.ttl)) {\n cacheability = entryCacheability;\n }\n }\n\n const data =\n !isUndefined(requestFieldPathData) || !isUndefined(entityData)\n ? this._mergeObjects(requestFieldPathData, entityData)\n : entityData ?? requestFieldPathData;\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 ) {\n return (this._checkCacheEntry(REQUEST_FIELD_PATHS, hash, options, { ...context, requestFieldCacheKey }) ||\n {}) as Partial<CheckCacheEntryResult>;\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 const fieldsAndTypeNames = getChildFields(queryNode);\n\n if (!fieldsAndTypeNames) {\n return cachedResponseData;\n }\n\n await Promise.all(\n fieldsAndTypeNames.map(({ fieldNode }) =>\n this._analyzeFieldNode(\n fieldNode,\n { requestFieldPath: context.operation },\n cachedResponseData,\n options,\n context,\n ),\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(\n context.requestID,\n ) as RawResponseDataWithMaybeCacheMetadata[];\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: any,\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 (error) {\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 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);\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);\n const fieldTypeName = fieldTypeInfo.isEntity ? fieldTypeInfo.typeName : fieldData.__typename;\n const entityDataKey = `${fieldTypeName}::${fieldData[this._typeIDKey]}`;\n const result = await this._checkCacheEntry(DATA_ENTITIES, entityDataKey, options, context);\n\n if (result) {\n fieldData = this._mergeObjects(result.entry, fieldData);\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 const fieldData = get(data, responseDataPath);\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 as PlainObjectMap | any[],\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 async _setPartialQueryResponse(\n hash: string,\n partialQueryResponse: PartialQueryResponse,\n _options: RequestOptions,\n _context: CacheManagerContext,\n ): Promise<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);\n const isEntity = this._isFieldEntity(fieldData, fieldTypeInfo);\n const hasArgsOrDirectives = fieldTypeInfo.hasArguments || fieldTypeInfo.hasDirectives;\n\n if (context.operation === 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(fieldData)) {\n fieldData = this._mergeObjects(result.entry, fieldData);\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, RequestContext } from \"@graphql-box/core\";\n\nexport default function logCacheQuery() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n try {\n return new Promise(async resolve => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[3] as RequestContext & {\n requestFieldCacheKey?: string;\n };\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 } catch (error) {\n return Promise.reject(error);\n }\n };\n };\n}\n","import { CACHE_ENTRY_ADDED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logCacheEntry() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n return new Promise<void>(async resolve => {\n const { debugManager, requestFieldCacheKey, ...otherContext } = args[5] as RequestContext & {\n requestFieldCacheKey?: string;\n };\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 cachemapOptions: args[3],\n cacheType: args[0],\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","import { PARTIAL_QUERY_COMPILED, RequestContext } from \"@graphql-box/core\";\n\nexport default function logPartialCompiled() {\n return (\n _target: any,\n _propertyName: string,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,\n ): void => {\n const method = descriptor.value;\n if (!method) return;\n\n descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {\n return new Promise<void>(async resolve => {\n const { debugManager, ...otherContext } = args[3] as RequestContext;\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 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}\n","export const METADATA = \"metadata\";\nexport const CACHE_CONTROL = \"cacheControl\";\nexport const NO_CACHE = \"noCache\";\n\nexport const HEADER_CACHE_CONTROL = \"cache-control\";\nexport const HEADER_NO_CACHE = \"no-cache\";\n","import { DehydratedCacheMetadata } from \"@graphql-box/core\";\nimport Cacheability from \"cacheability\";\nimport { isEmpty } from \"lodash\";\nimport { HEADER_CACHE_CONTROL } from \"../consts\";\n\nexport type Params = {\n _cacheMetadata?: DehydratedCacheMetadata;\n fallback: string;\n headers?: Headers;\n};\n\nexport default ({ _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 (metadata.ttl < acc.ttl) {\n return metadata;\n }\n\n return acc;\n }, first),\n });\n }\n\n if (headers && headers.has(HEADER_CACHE_CONTROL)) {\n return new Cacheability({ headers });\n }\n\n return new Cacheability({ cacheControl: fallback });\n};\n","import { RawResponseDataWithMaybeCacheMetadata } from \"@graphql-box/core\";\nimport { merge } from \"lodash\";\n\nexport default (responseDataSets: RawResponseDataWithMaybeCacheMetadata[]) => {\n return responseDataSets.reduce(\n (acc: RawResponseDataWithMaybeCacheMetadata, 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 = acc.data ? merge(acc.data, 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[0]);\n }\n\n return acc;\n },\n { data: {} },\n );\n};\n"],"names":["checkValue","value","typeIDKey","_isArray","reduce","accB","entry","_isPlainObject","recursivelyCheckProps","data","keys","Object","length","accA","key","fieldData","selectionNodes","ancestorKeysAndPaths","context","fieldAndTypeName","resolveFragments","fragmentDefinitions","_keys","acc","match","find","fieldNode","getName","requestFieldPath","buildFieldKeysAndPaths","fieldTypeInfo","fieldTypeMap","get","hasArguments","hasDirectives","fieldPathChecklistValues","fieldTypeName","hasData","typeUnused","typeName","undefined","some","every","filterField","field","fieldPathChecklist","fragmentSpreadChecklist","ancestorRequestFieldPath","fieldsAndTypeNames","getChildFields","fragmentSpreadFieldCounter","i","childField","fragmentKind","fragmentName","childTypeName","FRAGMENT_SPREAD","total","_getChildFields","childFieldName","TYPE_NAME_KEY","checkFieldPathChecklist","hasChildFields","deleteChildFields","_isEmpty","forEach","paths","push","deleteFragmentSpreads","deleted","filterFragmentSpreads","inlineFragments","getInlineFragments","filtered","fragment","deleteInlineFragments","filterInlineFragments","fieldNames","map","name","filterIDsAndTypeNames","requestData","ast","queryNode","getOperationDefinitions","operation","request","RegExp","createFragmentSpreadChecklist","queryFiltered","definitionsToFilter","namesAndPaths","path","fragmentDefinition","definitionsToDelete","names","deleteFragmentDefinitions","include","filterFragmentDefinitions","rawResponseData","hasDeferOrStream","hasNext","normalizePatchResponseData","_set","getValidTypeIDValue","requestFieldPathData","typeIDValue","requestFieldPathDataIDValue","CacheManager","_target","_propertyName","descriptor","method","args","Promise","resolve","debugManager","requestFieldCacheKey","otherContext","apply","_this","startTime","now","result","endTime","duration","payload","cacheType","options","requestHash","stats","decryptedCacheKey","log","CACHE_ENTRY_QUERIED","reject","cachemapOptions","CACHE_ENTRY_ADDED","PARTIAL_QUERY_COMPILED","Map","errors","cache","TypeError","typeCacheDirectives","_cache","_cascadeCacheControl","cascadeCacheControl","_fallbackOperationCacheability","fallbackOperationCacheability","_typeCacheDirectives","_typeIDKey","DEFAULT_TYPE_ID_KEY","this","hash","cacheManagerContext","getFragmentDefinitions","_retrieveCachedResponseData","cachedResponseData","cacheMetadata","fieldCount","missing","areOnlyPopulatedFieldsTypeIdKeys","updated","dataCaching","_setQueryResponseCacheEntry","awaitDataCaching","response","filteredAST","filterQuery","filteredRequest","print","rest","_setPartialQueryResponse","hashRequest","updatedRequestData","_cacheResponse","_checkCacheEntry","QUERY_RESPONSES","rehydrateCacheMetadata","_partialQueryResponses","delete","responseData","cachedAncestorFieldData","_analyzeParentFieldNode","_analyzeLeafFieldNode","keysAndPaths","hashedRequestFieldCacheKey","propNameOrIndex","entityData","typeNamesAndKind","dataTypeName","__typename","_isNodeRequestFieldPath","_retrieveCachedRequestFieldPathData","cacheability","_setCachedResponseData","cachedFieldData","_getFieldDataFromAncestor","_setFieldPathChecklist","_setCachedData","_retrieveCachedParentNodeData","_get","_isObjectLike","promises","iterateChildFields","childFragmentKind","childFragmentName","childIndex","_analyzeFieldNode","index","all","otherProps","_createCacheMetadata","_this2","_setFieldCacheability","normalizedResponseData","responseDataForCaching","isNotLastResponseChunk","_setResponseChunksAwaitingCaching","isLastResponseChunk","_retrieveResponseDataForCaching","_buildCacheMetadata","_setEntityAndRequestFieldPathCacheEntries","_cloneDeep","QUERY","partialQueryResponse","_getPartialQueryResponse","queryCacheMetadata","_mergeResponseCacheMetadata","queryData","_mergeResponseData","isNotResponseChunk","_hasCacheEntry","_isValid","_getCacheEntry","_isUndefined","_cacheMetadata","headers","fallback","values","first","Cacheability","metadata","ttl","has","cacheControl","deriveOpCacheability","set","_options","_context","isEntity","possibleTypes","type","obj","src","mergeObjects","_key","val","_this3","_mergeObjects","responseDataPath","_typeName","_fragmentKind","_fragmentName","_this4","_parseEntityAndRequestFieldPathCacheEntryData","_setEntityAndRequestFieldPathCacheEntry","validTypeIDValue","typeNames","_this5","DATA_ENTITIES","checkResults","validResults","filter","validResult","sort","a","b","ancestorEntityData","ancestorRequestFieldPathData","entryCacheability","_isNodeEntity","_retrieveCachedEntityData","_cacheability","REQUEST_FIELD_PATHS","_this6","_countFieldPathChecklist","responseDataSets","responseChunks","_responseChunksAwaitingCaching","requestID","dataSet","_merge","operationNode","_this7","_setRequestFieldPathCacheEntry","_isFieldEntity","_setEntityCacheEntry","entityDataKey","_setCacheEntry","cacheHeaders","printCacheControl","tag","__cacheKey","_setFieldTypeCacheDirective","_this8","_setCacheMetadata","dehydratedCacheMetadata","dehydrateCacheMetadata","_getOperationCacheControl","hasArgsOrDirectives","selectionSet","_field$selectionSet","selections","filterOutPropsWithArgsOrDirectives","checklistValues","ancestorFieldData","checkTTL","objectLikeData","operationCacheability"],"mappings":"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"}