@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
@@ -0,0 +1,6 @@
1
+ export const METADATA = 'metadata' as const;
2
+ export const CACHE_CONTROL = 'cacheControl' as const;
3
+ export const NO_CACHE = 'noCache' as const;
4
+
5
+ export const HEADER_CACHE_CONTROL = 'cache-control' as const;
6
+ export const HEADER_NO_CACHE = 'no-cache' as const;
@@ -1,3 +1,3 @@
1
- export { default as logCacheEntry } from "../debug/log-cache-entry";
2
- export { default as logCacheQuery } from "../debug/log-cache-query";
3
- export { default as logPartialCompiled } from "../debug/log-partial-compiled";
1
+ export * from './logCacheEntry.ts';
2
+ export * from './logCacheQuery.ts';
3
+ export * from './logPartialCompiled.ts';
@@ -0,0 +1,54 @@
1
+ import { CACHE_ENTRY_ADDED, type CacheTypes, type CachemapOptions, type RequestOptions } from '@graphql-box/core';
2
+ import type { CacheManagerContext, CacheManagerDef } from '../types.ts';
3
+
4
+ type Descriptor = (
5
+ cacheType: CacheTypes,
6
+ hash: string,
7
+ value: unknown,
8
+ cachemapOptions: CachemapOptions,
9
+ options: RequestOptions,
10
+ context: CacheManagerContext & { requestFieldCacheKey?: string }
11
+ ) => Promise<void>;
12
+
13
+ export const logCacheEntry = () => {
14
+ return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {
15
+ const method = descriptor.value;
16
+
17
+ if (!method) {
18
+ return;
19
+ }
20
+
21
+ descriptor.value = async function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {
22
+ return new Promise<void>(resolve => {
23
+ void (async () => {
24
+ const { debugManager, requestFieldCacheKey, ...otherContext } = args[5];
25
+
26
+ if (!debugManager) {
27
+ await method.apply(this, args);
28
+ resolve();
29
+ return;
30
+ }
31
+
32
+ const startTime = debugManager.now();
33
+ await method.apply(this, args);
34
+ const endTime = debugManager.now();
35
+ const duration = endTime - startTime;
36
+ resolve();
37
+
38
+ const payload = {
39
+ cacheType: args[0],
40
+ cachemapOptions: args[3],
41
+ context: otherContext,
42
+ options: args[4],
43
+ requestHash: args[1],
44
+ stats: { duration, endTime, startTime },
45
+ value: args[2],
46
+ ...(requestFieldCacheKey ? { decryptedCacheKey: requestFieldCacheKey } : {}),
47
+ };
48
+
49
+ debugManager.log(CACHE_ENTRY_ADDED, payload);
50
+ })();
51
+ });
52
+ };
53
+ };
54
+ };
@@ -1,20 +1,25 @@
1
- import { CACHE_ENTRY_QUERIED, RequestContext } from "@graphql-box/core";
2
-
3
- export default function logCacheQuery() {
4
- return (
5
- _target: any,
6
- _propertyName: string,
7
- descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise<any>>,
8
- ): void => {
1
+ import { CACHE_ENTRY_QUERIED, type CacheTypes, type RequestOptions } from '@graphql-box/core';
2
+ import type { CacheManagerContext, CacheManagerDef } from '../types.ts';
3
+
4
+ type Descriptor = (
5
+ cacheType: CacheTypes,
6
+ hash: string,
7
+ options: RequestOptions,
8
+ context: CacheManagerContext & { requestFieldCacheKey?: string }
9
+ ) => Promise<never | undefined>;
10
+
11
+ export const logCacheQuery = () => {
12
+ return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {
9
13
  const method = descriptor.value;
10
- if (!method) return;
11
14
 
12
- descriptor.value = async function descriptorValue(...args: any[]): Promise<any> {
13
- try {
14
- return new Promise(async resolve => {
15
- const { debugManager, requestFieldCacheKey, ...otherContext } = args[3] as RequestContext & {
16
- requestFieldCacheKey?: string;
17
- };
15
+ if (!method) {
16
+ return;
17
+ }
18
+
19
+ descriptor.value = async function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {
20
+ return new Promise(resolve => {
21
+ void (async () => {
22
+ const { debugManager, requestFieldCacheKey, ...otherContext } = args[3];
18
23
 
19
24
  if (!debugManager) {
20
25
  resolve(await method.apply(this, args));
@@ -38,10 +43,8 @@ export default function logCacheQuery() {
38
43
  };
39
44
 
40
45
  debugManager.log(CACHE_ENTRY_QUERIED, payload);
41
- });
42
- } catch (error) {
43
- return Promise.reject(error);
44
- }
46
+ })();
47
+ });
45
48
  };
46
49
  };
47
- }
50
+ };
@@ -0,0 +1,41 @@
1
+ import { PARTIAL_QUERY_COMPILED, type RequestOptions } from '@graphql-box/core';
2
+ import type { CacheManagerContext, CacheManagerDef, PartialQueryResponse } from '../types.ts';
3
+
4
+ type Descriptor = (
5
+ hash: string,
6
+ partialQueryResponse: PartialQueryResponse,
7
+ options: RequestOptions,
8
+ context: CacheManagerContext
9
+ ) => void;
10
+
11
+ export const logPartialCompiled = () => {
12
+ return (_target: CacheManagerDef, _propertyName: string, descriptor: TypedPropertyDescriptor<Descriptor>): void => {
13
+ const method = descriptor.value;
14
+
15
+ if (!method) {
16
+ return;
17
+ }
18
+
19
+ descriptor.value = function descriptorValue(...args: Parameters<Descriptor>): ReturnType<Descriptor> {
20
+ const { debugManager, ...otherContext } = args[3];
21
+
22
+ if (!debugManager) {
23
+ method.apply(this, args);
24
+ return;
25
+ }
26
+
27
+ const startTime = debugManager.now();
28
+ method.apply(this, args);
29
+ const endTime = debugManager.now();
30
+ const duration = endTime - startTime;
31
+
32
+ debugManager.log(PARTIAL_QUERY_COMPILED, {
33
+ context: otherContext,
34
+ options: args[2],
35
+ requestHash: args[0],
36
+ result: args[1],
37
+ stats: { duration, endTime, startTime },
38
+ });
39
+ };
40
+ };
41
+ };
@@ -1,10 +1,11 @@
1
- import { PlainObjectMap } from "@graphql-box/core";
2
- import { isArray, isPlainObject } from "lodash";
1
+ import type { PlainData } from '@graphql-box/core';
2
+ import { isArray, isPlainObject } from '@graphql-box/helpers';
3
+ import { isNumber, isString } from 'lodash-es';
3
4
 
4
- const checkValue = (value: any, typeIDKey: string): boolean => {
5
+ const checkValue = (value: unknown, typeIDKey: string): boolean => {
5
6
  if (isArray(value)) {
6
- return value.reduce((accB: boolean, entry) => {
7
- if (!accB) {
7
+ return value.reduce<boolean>((acc, entry) => {
8
+ if (!acc) {
8
9
  return false;
9
10
  }
10
11
 
@@ -19,22 +20,28 @@ const checkValue = (value: any, typeIDKey: string): boolean => {
19
20
  return false;
20
21
  };
21
22
 
22
- const recursivelyCheckProps = (data: PlainObjectMap, typeIDKey: string): boolean => {
23
- const keys = Object.keys(data);
23
+ const recursivelyCheckProps = (data: PlainData, typeIDKey: string): boolean => {
24
+ const keys = isPlainObject(data) ? Object.keys(data) : [...data.keys()];
24
25
 
25
- if (keys.length === 1 && !!data[typeIDKey]) {
26
+ if (keys.length === 1 && isPlainObject(data) && !!data[typeIDKey]) {
26
27
  return true;
27
28
  }
28
29
 
29
- return keys.reduce((accA: boolean, key) => {
30
- if (!accA) {
30
+ return keys.reduce<boolean>((acc, key) => {
31
+ if (!acc) {
31
32
  return false;
32
33
  }
33
34
 
34
- return checkValue(data[key], typeIDKey);
35
+ if (isNumber(key) && isArray(data)) {
36
+ return checkValue(data[key], typeIDKey);
37
+ } else if (isString(key) && isPlainObject(data)) {
38
+ return checkValue(data[key], typeIDKey);
39
+ }
40
+
41
+ return acc;
35
42
  }, true);
36
43
  };
37
44
 
38
- export default (data: PlainObjectMap, typeIDKey: string) => {
45
+ export const areOnlyPopulatedFieldsTypeIdKeys = (data: PlainData, typeIDKey: string) => {
39
46
  return recursivelyCheckProps(data, typeIDKey);
40
47
  };
@@ -1,16 +1,18 @@
1
- import { CheckFieldPathChecklistResult, FieldPathChecklistValue } from "../defs";
1
+ import { type CheckFieldPathChecklistResult, type FieldPathChecklistValue } from '../types.ts';
2
2
 
3
- export default (
3
+ export const checkFieldPathChecklist = (
4
4
  fieldPathChecklistValues: FieldPathChecklistValue[] | undefined,
5
- fieldTypeName: string | undefined,
5
+ fieldTypeName: string | undefined
6
6
  ): CheckFieldPathChecklistResult => {
7
- if (!fieldPathChecklistValues || !fieldPathChecklistValues.length) {
7
+ if (!fieldPathChecklistValues || fieldPathChecklistValues.length === 0) {
8
8
  return { hasData: false, typeUnused: !!fieldTypeName };
9
9
  }
10
10
 
11
- if (fieldPathChecklistValues.length === 1) {
12
- const { hasData, typeName } = fieldPathChecklistValues[0];
13
- const typeUnused = !typeName ? undefined : typeName !== fieldTypeName;
11
+ const [fieldPathChecklistValue] = fieldPathChecklistValues;
12
+
13
+ if (fieldPathChecklistValue) {
14
+ const { hasData, typeName } = fieldPathChecklistValue;
15
+ const typeUnused = typeName ? typeName !== fieldTypeName : undefined;
14
16
  return { hasData, typeUnused };
15
17
  }
16
18
 
@@ -0,0 +1,14 @@
1
+ import { isObjectLike } from '@graphql-box/helpers';
2
+ import { mergeDataSets } from './mergeObjects.ts';
3
+
4
+ export const combineDataSets = (dataSetA: unknown, dataSetB: unknown, typeIDKey: string) => {
5
+ if (!dataSetA && dataSetB) {
6
+ return dataSetB;
7
+ }
8
+
9
+ if (isObjectLike(dataSetA) && isObjectLike(dataSetB)) {
10
+ return mergeDataSets(dataSetA, dataSetB, typeIDKey);
11
+ }
12
+
13
+ return dataSetA;
14
+ };
@@ -1,17 +1,18 @@
1
- import { RequestData } from "@graphql-box/core";
2
- import { keys } from "lodash";
3
- import { CacheManagerContext } from "../defs";
1
+ import { type RequestData } from '@graphql-box/core';
2
+ import { keys } from 'lodash-es';
3
+ import { type CacheManagerContext } from '../types.ts';
4
4
 
5
- export type FragmentSpreadCheckist = {
6
- [key: string]: {
5
+ export type FragmentSpreadCheckist = Record<
6
+ string,
7
+ {
7
8
  deleted: number;
8
9
  paths: string[];
9
10
  total: number;
10
- };
11
- };
11
+ }
12
+ >;
12
13
 
13
- export default ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>
14
- keys(fragmentDefinitions ?? {}).reduce((acc: FragmentSpreadCheckist, name) => {
15
- acc[name] = { deleted: 0, paths: [], total: (request.match(new RegExp(`\\.\\.\\.${name}`, "g")) || []).length };
14
+ export const createFragmentSpreadChecklist = ({ request }: RequestData, { fragmentDefinitions }: CacheManagerContext) =>
15
+ keys(fragmentDefinitions ?? {}).reduce<FragmentSpreadCheckist>((acc, name) => {
16
+ acc[name] = { deleted: 0, paths: [], total: (request.match(new RegExp(`\\.\\.\\.${name}`, 'g')) ?? []).length };
16
17
  return acc;
17
18
  }, {});
@@ -1,7 +1,7 @@
1
- import { DehydratedCacheMetadata } from "@graphql-box/core";
2
- import Cacheability from "cacheability";
3
- import { isEmpty } from "lodash";
4
- import { HEADER_CACHE_CONTROL } from "../consts";
1
+ import { type DehydratedCacheMetadata } from '@graphql-box/core';
2
+ import { Cacheability } from 'cacheability';
3
+ import { isEmpty } from 'lodash-es';
4
+ import { HEADER_CACHE_CONTROL } from '../constants.ts';
5
5
 
6
6
  export type Params = {
7
7
  _cacheMetadata?: DehydratedCacheMetadata;
@@ -9,12 +9,16 @@ export type Params = {
9
9
  headers?: Headers;
10
10
  };
11
11
 
12
- export default ({ _cacheMetadata, fallback, headers }: Params): Cacheability => {
12
+ export const deriveOpCacheability = ({ _cacheMetadata, fallback, headers }: Params): Cacheability => {
13
13
  if (_cacheMetadata && !isEmpty(_cacheMetadata)) {
14
14
  const [first, ...rest] = Object.values(_cacheMetadata);
15
15
 
16
16
  return new Cacheability({
17
17
  metadata: rest.reduce((acc, metadata) => {
18
+ if (!acc) {
19
+ return metadata;
20
+ }
21
+
18
22
  if (metadata.ttl < acc.ttl) {
19
23
  return metadata;
20
24
  }
@@ -24,7 +28,7 @@ export default ({ _cacheMetadata, fallback, headers }: Params): Cacheability =>
24
28
  });
25
29
  }
26
30
 
27
- if (headers && headers.has(HEADER_CACHE_CONTROL)) {
31
+ if (headers?.has(HEADER_CACHE_CONTROL)) {
28
32
  return new Cacheability({ headers });
29
33
  }
30
34
 
@@ -1,26 +1,25 @@
1
- import { TYPE_NAME_KEY } from "@graphql-box/core";
1
+ import { TYPE_NAME_KEY } from '@graphql-box/core';
2
2
  import {
3
- FRAGMENT_SPREAD,
4
3
  buildFieldKeysAndPaths,
5
4
  deleteChildFields,
6
5
  getChildFields,
7
6
  getName,
8
7
  hasChildFields,
9
- } from "@graphql-box/helpers";
10
- import { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from "graphql";
11
- import { CacheManagerContext, FieldPathChecklist, FragmentSpreadFieldCounter } from "../defs";
12
- import checkFieldPathChecklist from "./checkFieldPathChecklist";
13
- import { FragmentSpreadCheckist } from "./createFragmentSpreadChecklist";
14
- import filterFragmentSpreads from "./filterFragmentSpreads";
15
- import filterIDsAndTypeNames from "./filterIDsAndTypeNames";
16
- import filterInlineFragments from "./filterInlineFragments";
8
+ } from '@graphql-box/helpers';
9
+ import { type FieldNode, type FragmentDefinitionNode, Kind, type OperationDefinitionNode } from 'graphql';
10
+ import { type CacheManagerContext, type FieldPathChecklist, type FragmentSpreadFieldCounter } from '../types.ts';
11
+ import { checkFieldPathChecklist } from './checkFieldPathChecklist.ts';
12
+ import { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';
13
+ import { filterFragmentSpreads } from './filterFragmentSpreads.ts';
14
+ import { filterIDsAndTypeNames } from './filterIDsAndTypeNames.ts';
15
+ import { filterInlineFragments } from './filterInlineFragments.ts';
17
16
 
18
- const filterField = (
17
+ export const filterField = (
19
18
  field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,
20
19
  fieldPathChecklist: FieldPathChecklist,
21
20
  fragmentSpreadChecklist: FragmentSpreadCheckist,
22
21
  ancestorRequestFieldPath: string,
23
- context: CacheManagerContext,
22
+ context: CacheManagerContext
24
23
  ): boolean => {
25
24
  const { fragmentDefinitions, typeIDKey } = context;
26
25
  const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });
@@ -31,14 +30,20 @@ const filterField = (
31
30
 
32
31
  const fragmentSpreadFieldCounter: FragmentSpreadFieldCounter = {};
33
32
 
34
- for (let i = fieldsAndTypeNames.length - 1; i >= 0; i -= 1) {
35
- const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldsAndTypeNames[i];
33
+ for (let index = fieldsAndTypeNames.length - 1; index >= 0; index -= 1) {
34
+ const fieldAndTypeName = fieldsAndTypeNames[index];
36
35
 
37
- if (fragmentKind === FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {
36
+ if (!fieldAndTypeName) {
37
+ continue;
38
+ }
39
+
40
+ const { fieldNode: childField, fragmentKind, fragmentName, typeName: childTypeName } = fieldAndTypeName;
41
+
42
+ if (fragmentKind === Kind.FRAGMENT_SPREAD && fragmentName && !fragmentSpreadFieldCounter[fragmentName]) {
38
43
  fragmentSpreadFieldCounter[fragmentName] = {
39
44
  hasData: 0,
40
45
  total: fragmentDefinitions?.[fragmentName]
41
- ? getChildFields(fragmentDefinitions?.[fragmentName], { fragmentDefinitions })?.length ?? 0
46
+ ? getChildFields(fragmentDefinitions[fragmentName]!, { fragmentDefinitions })?.length ?? 0
42
47
  : 0,
43
48
  };
44
49
  }
@@ -54,14 +59,18 @@ const filterField = (
54
59
  {
55
60
  requestFieldPath: ancestorRequestFieldPath,
56
61
  },
57
- context,
62
+ context
58
63
  );
59
64
 
60
65
  const { hasData, typeUnused } = checkFieldPathChecklist(fieldPathChecklist.get(requestFieldPath), childTypeName);
61
66
 
62
67
  if (hasData || typeUnused) {
63
- if (fragmentKind === FRAGMENT_SPREAD) {
64
- fragmentSpreadFieldCounter[fragmentName as string].hasData += 1;
68
+ if (fragmentKind === Kind.FRAGMENT_SPREAD && fragmentName) {
69
+ const counter = fragmentSpreadFieldCounter[fragmentName];
70
+
71
+ if (counter) {
72
+ counter.hasData += 1;
73
+ }
65
74
  } else if (!hasChildFields(childField, { fragmentDefinitions })) {
66
75
  deleteChildFields(field, childField);
67
76
  } else if (filterField(childField, fieldPathChecklist, fragmentSpreadChecklist, requestFieldPath, context)) {
@@ -75,5 +84,3 @@ const filterField = (
75
84
  filterIDsAndTypeNames(field, context);
76
85
  return !hasChildFields(field, { fragmentDefinitions });
77
86
  };
78
-
79
- export default filterField;
@@ -1,40 +1,54 @@
1
- import { deleteFragmentDefinitions } from "@graphql-box/helpers";
2
- import { DocumentNode } from "graphql";
3
- import { keys } from "lodash";
4
- import { CacheManagerContext, FieldPathChecklist } from "../defs";
5
- import { FragmentSpreadCheckist } from "./createFragmentSpreadChecklist";
6
- import filterField from "./filterField";
7
-
8
- export default (
1
+ import { deleteFragmentDefinitions } from '@graphql-box/helpers';
2
+ import { type DocumentNode } from 'graphql';
3
+ import { keys } from 'lodash-es';
4
+ import { type CacheManagerContext, type FieldPathChecklist } from '../types.ts';
5
+ import { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';
6
+ import { filterField } from './filterField.ts';
7
+
8
+ export const filterFragmentDefinitions = (
9
9
  ast: DocumentNode,
10
10
  fieldPathChecklist: FieldPathChecklist,
11
11
  fragmentSpreadChecklist: FragmentSpreadCheckist,
12
- context: CacheManagerContext,
12
+ context: CacheManagerContext
13
13
  ) => {
14
- const definitionsToFilter = keys(fragmentSpreadChecklist).reduce(
15
- (namesAndPaths: { name: string; path: string }[], key) => {
16
- const { deleted, total } = fragmentSpreadChecklist[key];
14
+ const definitionsToFilter = keys(fragmentSpreadChecklist).reduce<{ name: string; path: string }[]>(
15
+ (namesAndPaths, key) => {
16
+ const checklist = fragmentSpreadChecklist[key];
17
+
18
+ if (!checklist) {
19
+ return namesAndPaths;
20
+ }
17
21
 
18
- return deleted === 0 && total === 1
19
- ? [...namesAndPaths, { name: key, path: fragmentSpreadChecklist[key].paths[0] as string }]
20
- : namesAndPaths;
22
+ const { deleted, paths, total } = checklist;
23
+ return deleted === 0 && total === 1 ? [...namesAndPaths, { name: key, path: paths[0]! }] : namesAndPaths;
21
24
  },
22
- [],
25
+ []
23
26
  );
24
27
 
25
28
  const { fragmentDefinitions = {} } = context;
26
29
 
27
- definitionsToFilter.forEach(({ name, path }) => {
30
+ for (const { name, path } of definitionsToFilter) {
28
31
  const fragmentDefinition = fragmentDefinitions[name];
32
+
33
+ if (!fragmentDefinition) {
34
+ continue;
35
+ }
36
+
29
37
  filterField(fragmentDefinition, fieldPathChecklist, fragmentSpreadChecklist, path, context);
30
- });
38
+ }
39
+
40
+ const definitionsToDelete = keys(fragmentSpreadChecklist).reduce<string[]>((names, key) => {
41
+ const checklist = fragmentSpreadChecklist[key];
42
+
43
+ if (!checklist) {
44
+ return names;
45
+ }
31
46
 
32
- const definitionsToDelete = keys(fragmentSpreadChecklist).reduce((names: string[], key) => {
33
- const { deleted, total } = fragmentSpreadChecklist[key];
47
+ const { deleted, total } = checklist;
34
48
  return deleted > 0 && deleted === total ? [...names, key] : names;
35
49
  }, []);
36
50
 
37
- if (!definitionsToDelete.length) {
51
+ if (definitionsToDelete.length === 0) {
38
52
  return ast;
39
53
  }
40
54
 
@@ -1,27 +1,32 @@
1
- import { deleteFragmentSpreads } from "@graphql-box/helpers";
2
- import { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from "graphql";
3
- import { isEmpty, keys } from "lodash";
4
- import { FragmentSpreadFieldCounter } from "../defs";
5
- import { FragmentSpreadCheckist } from "./createFragmentSpreadChecklist";
1
+ import { deleteFragmentSpreads } from '@graphql-box/helpers';
2
+ import { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';
3
+ import { isEmpty } from 'lodash-es';
4
+ import { type FragmentSpreadFieldCounter } from '../types.ts';
5
+ import { type FragmentSpreadCheckist } from './createFragmentSpreadChecklist.ts';
6
6
 
7
- export default (
7
+ export const filterFragmentSpreads = (
8
8
  field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,
9
9
  fragmentSpreadFieldCounter: FragmentSpreadFieldCounter,
10
10
  fragmentSpreadChecklist: FragmentSpreadCheckist,
11
- ancestorRequestFieldPath: string,
11
+ ancestorRequestFieldPath: string
12
12
  ) => {
13
13
  if (isEmpty(fragmentSpreadFieldCounter)) {
14
14
  return;
15
15
  }
16
16
 
17
- keys(fragmentSpreadFieldCounter).forEach(key => {
18
- fragmentSpreadChecklist[key].paths.push(ancestorRequestFieldPath);
17
+ for (const key of Object.keys(fragmentSpreadFieldCounter)) {
18
+ const checklist = fragmentSpreadChecklist[key];
19
19
 
20
- const { hasData, total } = fragmentSpreadFieldCounter[key];
20
+ if (!checklist) {
21
+ continue;
22
+ }
23
+
24
+ checklist.paths.push(ancestorRequestFieldPath);
25
+ const { hasData, total } = fragmentSpreadFieldCounter[key]!;
21
26
 
22
27
  if (hasData === total) {
23
28
  deleteFragmentSpreads(field, key);
24
- fragmentSpreadChecklist[key].deleted += 1;
29
+ checklist.deleted += 1;
25
30
  }
26
- });
31
+ }
27
32
  };
@@ -1,11 +1,11 @@
1
- import { TYPE_NAME_KEY } from "@graphql-box/core";
2
- import { deleteChildFields, getChildFields, getName } from "@graphql-box/helpers";
3
- import { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from "graphql";
4
- import { CacheManagerContext } from "../defs";
1
+ import { TYPE_NAME_KEY } from '@graphql-box/core';
2
+ import { deleteChildFields, getChildFields, getName } from '@graphql-box/helpers';
3
+ import { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';
4
+ import { type CacheManagerContext } from '../types.ts';
5
5
 
6
- export default (
6
+ export const filterIDsAndTypeNames = (
7
7
  field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,
8
- { fragmentDefinitions, typeIDKey }: CacheManagerContext,
8
+ { fragmentDefinitions, typeIDKey }: CacheManagerContext
9
9
  ) => {
10
10
  const fieldsAndTypeNames = getChildFields(field, { fragmentDefinitions });
11
11
 
@@ -13,21 +13,25 @@ export default (
13
13
  return false;
14
14
  }
15
15
 
16
- const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode) as FieldNode["name"]["value"]);
16
+ const fieldNames = fieldsAndTypeNames.map(({ fieldNode }) => getName(fieldNode)!);
17
17
 
18
18
  if (fieldNames.length === 2 && fieldNames.every(name => name === typeIDKey || name === TYPE_NAME_KEY)) {
19
19
  deleteChildFields(
20
20
  field,
21
- fieldsAndTypeNames.map(({ fieldNode }) => fieldNode),
21
+ fieldsAndTypeNames.map(({ fieldNode }) => fieldNode)
22
22
  );
23
23
 
24
24
  return true;
25
25
  }
26
26
 
27
27
  if ((fieldNames.length === 1 && fieldNames[0] === typeIDKey) || fieldNames[0] === TYPE_NAME_KEY) {
28
- const { fieldNode } = fieldsAndTypeNames[0];
29
- deleteChildFields(field, fieldNode);
30
- return true;
28
+ const [fieldAndTypeName] = fieldsAndTypeNames;
29
+
30
+ if (fieldAndTypeName) {
31
+ const { fieldNode } = fieldAndTypeName;
32
+ deleteChildFields(field, fieldNode);
33
+ return true;
34
+ }
31
35
  }
32
36
 
33
37
  return false;
@@ -1,32 +1,34 @@
1
- import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from "@graphql-box/helpers";
2
- import { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from "graphql";
3
- import { CacheManagerContext } from "..";
1
+ import { deleteInlineFragments, getChildFields, getInlineFragments, getName } from '@graphql-box/helpers';
2
+ import { type FieldNode, type FragmentDefinitionNode, type OperationDefinitionNode } from 'graphql';
3
+ import { type CacheManagerContext } from '../types.ts';
4
4
 
5
- export default (
5
+ export const filterInlineFragments = (
6
6
  field: FieldNode | FragmentDefinitionNode | OperationDefinitionNode,
7
- { fragmentDefinitions, typeIDKey }: CacheManagerContext,
7
+ { fragmentDefinitions, typeIDKey }: CacheManagerContext
8
8
  ) => {
9
9
  const inlineFragments = getInlineFragments(field);
10
10
  let filtered = false;
11
11
 
12
- inlineFragments.forEach(fragment => {
12
+ for (const fragment of inlineFragments) {
13
13
  const fieldsAndTypeNames = getChildFields(fragment, { fragmentDefinitions });
14
14
 
15
- if (!fieldsAndTypeNames || !fieldsAndTypeNames.length) {
15
+ if (!fieldsAndTypeNames || fieldsAndTypeNames.length === 0) {
16
16
  deleteInlineFragments(field, fragment);
17
17
  filtered = true;
18
- return;
18
+ continue;
19
19
  }
20
20
 
21
- if (fieldsAndTypeNames.length === 1) {
22
- const { fieldNode } = fieldsAndTypeNames[0];
21
+ const [fieldAndTypeName] = fieldsAndTypeNames;
22
+
23
+ if (fieldAndTypeName) {
24
+ const { fieldNode } = fieldAndTypeName;
23
25
 
24
26
  if (getName(fieldNode) === typeIDKey) {
25
27
  deleteInlineFragments(field, fragment);
26
28
  filtered = true;
27
29
  }
28
30
  }
29
- });
31
+ }
30
32
 
31
33
  return filtered;
32
34
  };