@graphql-box/connection-resolver 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 (490) hide show
  1. package/README.md +1 -5
  2. package/dist/cjs/index.cjs +703 -0
  3. package/dist/cjs/index.cjs.map +1 -0
  4. package/dist/esm/index.mjs +700 -0
  5. package/dist/esm/index.mjs.map +1 -0
  6. package/dist/types/cjs/__testUtils__/generateCursorCache.d.cts +10 -0
  7. package/dist/types/cjs/__testUtils__/generateCursorCache.d.cts.map +1 -0
  8. package/dist/types/cjs/__testUtils__/generatePageResponse.d.cts +9 -0
  9. package/dist/types/cjs/__testUtils__/generatePageResponse.d.cts.map +1 -0
  10. package/dist/types/cjs/__testUtils__/generatePages.d.cts +2 -0
  11. package/dist/types/cjs/__testUtils__/generatePages.d.cts.map +1 -0
  12. package/dist/types/cjs/helpers/cacheCursors.d.cts +12 -0
  13. package/dist/types/cjs/helpers/cacheCursors.d.cts.map +1 -0
  14. package/dist/types/cjs/helpers/extractEdges.d.cts +3 -0
  15. package/dist/types/cjs/helpers/extractEdges.d.cts.map +1 -0
  16. package/dist/types/cjs/helpers/extractNodes.d.cts +3 -0
  17. package/dist/types/cjs/helpers/extractNodes.d.cts.map +1 -0
  18. package/dist/types/cjs/helpers/getCount.d.cts +3 -0
  19. package/dist/types/cjs/helpers/getCount.d.cts.map +1 -0
  20. package/dist/types/cjs/helpers/getCurrentPageStartAndEndIndexes.d.cts +14 -0
  21. package/dist/types/cjs/helpers/getCurrentPageStartAndEndIndexes.d.cts.map +1 -0
  22. package/dist/types/cjs/helpers/getCursor.d.cts +3 -0
  23. package/dist/types/cjs/helpers/getCursor.d.cts.map +1 -0
  24. package/dist/types/cjs/helpers/getDirection.d.cts +3 -0
  25. package/dist/types/cjs/helpers/getDirection.d.cts.map +1 -0
  26. package/dist/types/cjs/helpers/getInRangeCachedEdges.d.cts +8 -0
  27. package/dist/types/cjs/helpers/getInRangeCachedEdges.d.cts.map +1 -0
  28. package/dist/types/cjs/helpers/getIndexesOnCurrentPage.d.cts +10 -0
  29. package/dist/types/cjs/helpers/getIndexesOnCurrentPage.d.cts.map +1 -0
  30. package/dist/types/cjs/helpers/getIndexesOnLastPage.d.cts +3 -0
  31. package/dist/types/cjs/helpers/getIndexesOnLastPage.d.cts.map +1 -0
  32. package/dist/types/cjs/helpers/getPageNumbersToRequest.d.cts +12 -0
  33. package/dist/types/cjs/helpers/getPageNumbersToRequest.d.cts.map +1 -0
  34. package/dist/types/cjs/helpers/getPagesMissingFromCache.d.cts +3 -0
  35. package/dist/types/cjs/helpers/getPagesMissingFromCache.d.cts.map +1 -0
  36. package/dist/types/cjs/helpers/getResultsOnLastPage.d.cts +6 -0
  37. package/dist/types/cjs/helpers/getResultsOnLastPage.d.cts.map +1 -0
  38. package/dist/types/cjs/helpers/getStartAndEndCursors.d.cts +4 -0
  39. package/dist/types/cjs/helpers/getStartAndEndCursors.d.cts.map +1 -0
  40. package/dist/types/cjs/helpers/getStartAndEndIndexes.d.cts +15 -0
  41. package/dist/types/cjs/helpers/getStartAndEndIndexes.d.cts.map +1 -0
  42. package/dist/types/cjs/helpers/getStartAndEndPageNumbers.d.cts +13 -0
  43. package/dist/types/cjs/helpers/getStartAndEndPageNumbers.d.cts.map +1 -0
  44. package/dist/types/cjs/helpers/hasPreviousNextPage.d.cts +14 -0
  45. package/dist/types/cjs/helpers/hasPreviousNextPage.d.cts.map +1 -0
  46. package/dist/types/cjs/helpers/isCursorFirst.d.cts +7 -0
  47. package/dist/types/cjs/helpers/isCursorFirst.d.cts.map +1 -0
  48. package/dist/types/cjs/helpers/isCursorLast.d.cts +10 -0
  49. package/dist/types/cjs/helpers/isCursorLast.d.cts.map +1 -0
  50. package/dist/types/cjs/helpers/isCursorSupplied.d.cts +4 -0
  51. package/dist/types/cjs/helpers/isCursorSupplied.d.cts.map +1 -0
  52. package/dist/types/cjs/helpers/isFirstPage.d.cts +2 -0
  53. package/dist/types/cjs/helpers/isFirstPage.d.cts.map +1 -0
  54. package/dist/types/cjs/helpers/isLastPage.d.cts +6 -0
  55. package/dist/types/cjs/helpers/isLastPage.d.cts.map +1 -0
  56. package/dist/types/cjs/helpers/makeEdges.d.cts +6 -0
  57. package/dist/types/cjs/helpers/makeEdges.d.cts.map +1 -0
  58. package/dist/types/cjs/helpers/makeEntry.d.cts +10 -0
  59. package/dist/types/cjs/helpers/makeEntry.d.cts.map +1 -0
  60. package/dist/types/cjs/helpers/mergeCachedEdges.d.cts +3 -0
  61. package/dist/types/cjs/helpers/mergeCachedEdges.d.cts.map +1 -0
  62. package/dist/types/cjs/helpers/removeConnectionInputOptions.d.cts +2 -0
  63. package/dist/types/cjs/helpers/removeConnectionInputOptions.d.cts.map +1 -0
  64. package/dist/types/cjs/helpers/requestAndCachePages.d.cts +21 -0
  65. package/dist/types/cjs/helpers/requestAndCachePages.d.cts.map +1 -0
  66. package/dist/types/cjs/helpers/requestOutstandingPages.d.cts +18 -0
  67. package/dist/types/cjs/helpers/requestOutstandingPages.d.cts.map +1 -0
  68. package/dist/types/cjs/helpers/resolveConnection.d.cts +24 -0
  69. package/dist/types/cjs/helpers/resolveConnection.d.cts.map +1 -0
  70. package/dist/types/cjs/helpers/retrieveCachedConnection.d.cts +25 -0
  71. package/dist/types/cjs/helpers/retrieveCachedConnection.d.cts.map +1 -0
  72. package/dist/types/cjs/helpers/retrieveCachedEdgesByPage.d.cts +11 -0
  73. package/dist/types/cjs/helpers/retrieveCachedEdgesByPage.d.cts.map +1 -0
  74. package/dist/types/cjs/helpers/retrieveEntry.d.cts +8 -0
  75. package/dist/types/cjs/helpers/retrieveEntry.d.cts.map +1 -0
  76. package/dist/types/cjs/helpers/validateCursor.d.cts +10 -0
  77. package/dist/types/cjs/helpers/validateCursor.d.cts.map +1 -0
  78. package/dist/types/cjs/index.d.cts +4 -0
  79. package/dist/types/cjs/index.d.cts.map +1 -0
  80. package/dist/types/cjs/main/index.d.cts +5 -0
  81. package/dist/types/cjs/main/index.d.cts.map +1 -0
  82. package/{lib/types/defs/index.d.ts → dist/types/cjs/types.d.cts} +22 -27
  83. package/dist/types/cjs/types.d.cts.map +1 -0
  84. package/dist/types/esm/__testUtils__/generateCursorCache.d.ts +10 -0
  85. package/dist/types/esm/__testUtils__/generateCursorCache.d.ts.map +1 -0
  86. package/dist/types/esm/__testUtils__/generatePageResponse.d.ts +9 -0
  87. package/dist/types/esm/__testUtils__/generatePageResponse.d.ts.map +1 -0
  88. package/dist/types/esm/__testUtils__/generatePages.d.ts +2 -0
  89. package/dist/types/esm/__testUtils__/generatePages.d.ts.map +1 -0
  90. package/dist/types/esm/helpers/cacheCursors.d.ts +12 -0
  91. package/dist/types/esm/helpers/cacheCursors.d.ts.map +1 -0
  92. package/dist/types/esm/helpers/extractEdges.d.ts +3 -0
  93. package/dist/types/esm/helpers/extractEdges.d.ts.map +1 -0
  94. package/dist/types/esm/helpers/extractNodes.d.ts +3 -0
  95. package/dist/types/esm/helpers/extractNodes.d.ts.map +1 -0
  96. package/dist/types/esm/helpers/getCount.d.ts +3 -0
  97. package/dist/types/esm/helpers/getCount.d.ts.map +1 -0
  98. package/{lib/types → dist/types/esm}/helpers/getCurrentPageStartAndEndIndexes.d.ts +3 -3
  99. package/dist/types/esm/helpers/getCurrentPageStartAndEndIndexes.d.ts.map +1 -0
  100. package/dist/types/esm/helpers/getCursor.d.ts +3 -0
  101. package/dist/types/esm/helpers/getCursor.d.ts.map +1 -0
  102. package/dist/types/esm/helpers/getDirection.d.ts +3 -0
  103. package/dist/types/esm/helpers/getDirection.d.ts.map +1 -0
  104. package/dist/types/esm/helpers/getInRangeCachedEdges.d.ts +8 -0
  105. package/dist/types/esm/helpers/getInRangeCachedEdges.d.ts.map +1 -0
  106. package/dist/types/esm/helpers/getIndexesOnCurrentPage.d.ts +10 -0
  107. package/dist/types/esm/helpers/getIndexesOnCurrentPage.d.ts.map +1 -0
  108. package/dist/types/esm/helpers/getIndexesOnLastPage.d.ts +3 -0
  109. package/dist/types/esm/helpers/getIndexesOnLastPage.d.ts.map +1 -0
  110. package/dist/types/esm/helpers/getPageNumbersToRequest.d.ts +12 -0
  111. package/dist/types/esm/helpers/getPageNumbersToRequest.d.ts.map +1 -0
  112. package/dist/types/esm/helpers/getPagesMissingFromCache.d.ts +3 -0
  113. package/dist/types/esm/helpers/getPagesMissingFromCache.d.ts.map +1 -0
  114. package/dist/types/esm/helpers/getResultsOnLastPage.d.ts +6 -0
  115. package/dist/types/esm/helpers/getResultsOnLastPage.d.ts.map +1 -0
  116. package/dist/types/esm/helpers/getStartAndEndCursors.d.ts +4 -0
  117. package/dist/types/esm/helpers/getStartAndEndCursors.d.ts.map +1 -0
  118. package/dist/types/esm/helpers/getStartAndEndIndexes.d.ts +15 -0
  119. package/dist/types/esm/helpers/getStartAndEndIndexes.d.ts.map +1 -0
  120. package/dist/types/esm/helpers/getStartAndEndPageNumbers.d.ts +13 -0
  121. package/dist/types/esm/helpers/getStartAndEndPageNumbers.d.ts.map +1 -0
  122. package/{lib/types → dist/types/esm}/helpers/hasPreviousNextPage.d.ts +3 -3
  123. package/dist/types/esm/helpers/hasPreviousNextPage.d.ts.map +1 -0
  124. package/dist/types/esm/helpers/isCursorFirst.d.ts +7 -0
  125. package/dist/types/esm/helpers/isCursorFirst.d.ts.map +1 -0
  126. package/dist/types/esm/helpers/isCursorLast.d.ts +10 -0
  127. package/dist/types/esm/helpers/isCursorLast.d.ts.map +1 -0
  128. package/dist/types/esm/helpers/isCursorSupplied.d.ts +4 -0
  129. package/dist/types/esm/helpers/isCursorSupplied.d.ts.map +1 -0
  130. package/dist/types/esm/helpers/isFirstPage.d.ts +2 -0
  131. package/dist/types/esm/helpers/isFirstPage.d.ts.map +1 -0
  132. package/dist/types/esm/helpers/isLastPage.d.ts +6 -0
  133. package/dist/types/esm/helpers/isLastPage.d.ts.map +1 -0
  134. package/dist/types/esm/helpers/makeEdges.d.ts +6 -0
  135. package/dist/types/esm/helpers/makeEdges.d.ts.map +1 -0
  136. package/dist/types/esm/helpers/makeEntry.d.ts +10 -0
  137. package/dist/types/esm/helpers/makeEntry.d.ts.map +1 -0
  138. package/dist/types/esm/helpers/mergeCachedEdges.d.ts +3 -0
  139. package/dist/types/esm/helpers/mergeCachedEdges.d.ts.map +1 -0
  140. package/dist/types/esm/helpers/removeConnectionInputOptions.d.ts +2 -0
  141. package/dist/types/esm/helpers/removeConnectionInputOptions.d.ts.map +1 -0
  142. package/dist/types/esm/helpers/requestAndCachePages.d.ts +21 -0
  143. package/dist/types/esm/helpers/requestAndCachePages.d.ts.map +1 -0
  144. package/dist/types/esm/helpers/requestOutstandingPages.d.ts +18 -0
  145. package/dist/types/esm/helpers/requestOutstandingPages.d.ts.map +1 -0
  146. package/dist/types/esm/helpers/resolveConnection.d.ts +24 -0
  147. package/dist/types/esm/helpers/resolveConnection.d.ts.map +1 -0
  148. package/{lib/types → dist/types/esm}/helpers/retrieveCachedConnection.d.ts +5 -6
  149. package/dist/types/esm/helpers/retrieveCachedConnection.d.ts.map +1 -0
  150. package/dist/types/esm/helpers/retrieveCachedEdgesByPage.d.ts +11 -0
  151. package/dist/types/esm/helpers/retrieveCachedEdgesByPage.d.ts.map +1 -0
  152. package/dist/types/esm/helpers/retrieveEntry.d.ts +8 -0
  153. package/dist/types/esm/helpers/retrieveEntry.d.ts.map +1 -0
  154. package/dist/types/esm/helpers/validateCursor.d.ts +10 -0
  155. package/dist/types/esm/helpers/validateCursor.d.ts.map +1 -0
  156. package/dist/types/esm/index.d.ts +4 -0
  157. package/dist/types/esm/index.d.ts.map +1 -0
  158. package/dist/types/esm/main/index.d.ts +5 -0
  159. package/dist/types/esm/main/index.d.ts.map +1 -0
  160. package/dist/types/esm/types.d.ts +77 -0
  161. package/dist/types/esm/types.d.ts.map +1 -0
  162. package/dist/types/tsconfig.build.tsbuildinfo +1 -0
  163. package/package.json +54 -38
  164. package/src/__testUtils__/generateCursorCache.ts +20 -14
  165. package/src/__testUtils__/generatePageResponse.ts +17 -12
  166. package/src/__testUtils__/generatePages.ts +5 -5
  167. package/src/helpers/cacheCursors.ts +10 -7
  168. package/src/helpers/extractEdges.ts +3 -3
  169. package/src/helpers/extractNodes.ts +2 -2
  170. package/src/helpers/getCount.test.ts +10 -6
  171. package/src/helpers/getCount.ts +2 -2
  172. package/src/helpers/getCurrentPageStartAndEndIndexes.ts +1 -1
  173. package/src/helpers/getCursor.test.ts +10 -6
  174. package/src/helpers/getCursor.ts +2 -2
  175. package/src/helpers/getDirection.test.ts +10 -6
  176. package/src/helpers/getDirection.ts +3 -1
  177. package/src/helpers/getInRangeCachedEdges.ts +10 -7
  178. package/src/helpers/getIndexesOnCurrentPage.test.ts +14 -10
  179. package/src/helpers/getIndexesOnCurrentPage.ts +11 -6
  180. package/src/helpers/getIndexesOnLastPage.test.ts +10 -6
  181. package/src/helpers/getIndexesOnLastPage.ts +3 -2
  182. package/src/helpers/getPageNumbersToRequest.test.ts +15 -11
  183. package/src/helpers/getPageNumbersToRequest.ts +17 -6
  184. package/src/helpers/getPagesMissingFromCache.ts +5 -5
  185. package/src/helpers/getResultsOnLastPage.test.ts +10 -6
  186. package/src/helpers/getResultsOnLastPage.ts +1 -1
  187. package/src/helpers/getStartAndEndCursors.ts +1 -1
  188. package/src/helpers/getStartAndEndIndexes.test.ts +77 -57
  189. package/src/helpers/getStartAndEndIndexes.ts +28 -22
  190. package/src/helpers/getStartAndEndPageNumbers.test.ts +46 -28
  191. package/src/helpers/getStartAndEndPageNumbers.ts +12 -12
  192. package/src/helpers/hasPreviousNextPage.test.ts +17 -8
  193. package/src/helpers/hasPreviousNextPage.ts +6 -4
  194. package/src/helpers/isCursorFirst.test.ts +13 -7
  195. package/src/helpers/isCursorFirst.ts +3 -2
  196. package/src/helpers/isCursorLast.test.ts +27 -23
  197. package/src/helpers/isCursorLast.ts +4 -4
  198. package/src/helpers/isCursorSupplied.test.ts +18 -10
  199. package/src/helpers/isCursorSupplied.ts +3 -2
  200. package/src/helpers/isFirstPage.test.ts +10 -6
  201. package/src/helpers/isFirstPage.ts +1 -1
  202. package/src/helpers/isLastPage.test.ts +10 -6
  203. package/src/helpers/isLastPage.ts +1 -1
  204. package/src/helpers/makeEdges.ts +3 -3
  205. package/src/helpers/makeEntry.ts +8 -5
  206. package/src/helpers/mergeCachedEdges.ts +5 -5
  207. package/src/helpers/removeConnectionInputOptions.test.ts +10 -8
  208. package/src/helpers/removeConnectionInputOptions.ts +4 -3
  209. package/src/helpers/requestAndCachePages.ts +14 -11
  210. package/src/helpers/requestOutstandingPages.ts +18 -19
  211. package/src/helpers/resolveConnection.ts +20 -34
  212. package/src/helpers/retrieveCachedConnection.test.ts +703 -338
  213. package/src/helpers/retrieveCachedConnection.ts +28 -20
  214. package/src/helpers/retrieveCachedEdgesByPage.ts +10 -10
  215. package/src/helpers/retrieveEntry.ts +32 -0
  216. package/src/helpers/validateCursor.test.ts +88 -61
  217. package/src/helpers/validateCursor.ts +30 -26
  218. package/src/index.ts +3 -3
  219. package/src/main/__snapshots__/index.test.ts.snap +258 -258
  220. package/src/main/index.test.ts +405 -287
  221. package/src/main/index.ts +37 -35
  222. package/src/{defs/index.ts → types.ts} +12 -18
  223. package/tsconfig.build.json +10 -0
  224. package/tsconfig.json +11 -0
  225. package/lib/browser/index.js +0 -2
  226. package/lib/browser/index.js.map +0 -1
  227. package/lib/browser/production.analysis.txt +0 -314
  228. package/lib/main/__testUtils__/generateCursorCache.js +0 -88
  229. package/lib/main/__testUtils__/generateCursorCache.js.map +0 -1
  230. package/lib/main/__testUtils__/generatePageResponse.js +0 -33
  231. package/lib/main/__testUtils__/generatePageResponse.js.map +0 -1
  232. package/lib/main/__testUtils__/generatePages.js +0 -23
  233. package/lib/main/__testUtils__/generatePages.js.map +0 -1
  234. package/lib/main/defs/index.js +0 -2
  235. package/lib/main/defs/index.js.map +0 -1
  236. package/lib/main/helpers/cacheCursors.js +0 -40
  237. package/lib/main/helpers/cacheCursors.js.map +0 -1
  238. package/lib/main/helpers/extractEdges.js +0 -11
  239. package/lib/main/helpers/extractEdges.js.map +0 -1
  240. package/lib/main/helpers/extractNodes.js +0 -11
  241. package/lib/main/helpers/extractNodes.js.map +0 -1
  242. package/lib/main/helpers/getCount.js +0 -14
  243. package/lib/main/helpers/getCount.js.map +0 -1
  244. package/lib/main/helpers/getCurrentPageStartAndEndIndexes.js +0 -23
  245. package/lib/main/helpers/getCurrentPageStartAndEndIndexes.js.map +0 -1
  246. package/lib/main/helpers/getCursor.js +0 -14
  247. package/lib/main/helpers/getCursor.js.map +0 -1
  248. package/lib/main/helpers/getDirection.js +0 -11
  249. package/lib/main/helpers/getDirection.js.map +0 -1
  250. package/lib/main/helpers/getInRangeCachedEdges.js +0 -36
  251. package/lib/main/helpers/getInRangeCachedEdges.js.map +0 -1
  252. package/lib/main/helpers/getIndexesOnCurrentPage.js +0 -30
  253. package/lib/main/helpers/getIndexesOnCurrentPage.js.map +0 -1
  254. package/lib/main/helpers/getIndexesOnLastPage.js +0 -21
  255. package/lib/main/helpers/getIndexesOnLastPage.js.map +0 -1
  256. package/lib/main/helpers/getPageNumbersToRequest.js +0 -43
  257. package/lib/main/helpers/getPageNumbersToRequest.js.map +0 -1
  258. package/lib/main/helpers/getPagesMissingFromCache.js +0 -19
  259. package/lib/main/helpers/getPagesMissingFromCache.js.map +0 -1
  260. package/lib/main/helpers/getResultsOnLastPage.js +0 -17
  261. package/lib/main/helpers/getResultsOnLastPage.js.map +0 -1
  262. package/lib/main/helpers/getStartAndEndCursors.js +0 -22
  263. package/lib/main/helpers/getStartAndEndCursors.js.map +0 -1
  264. package/lib/main/helpers/getStartAndEndIndexes.js +0 -105
  265. package/lib/main/helpers/getStartAndEndIndexes.js.map +0 -1
  266. package/lib/main/helpers/getStartAndEndPageNumbers.js +0 -51
  267. package/lib/main/helpers/getStartAndEndPageNumbers.js.map +0 -1
  268. package/lib/main/helpers/hasPreviousNextPage.js +0 -33
  269. package/lib/main/helpers/hasPreviousNextPage.js.map +0 -1
  270. package/lib/main/helpers/isCursorFirst.js +0 -17
  271. package/lib/main/helpers/isCursorFirst.js.map +0 -1
  272. package/lib/main/helpers/isCursorLast.js +0 -27
  273. package/lib/main/helpers/isCursorLast.js.map +0 -1
  274. package/lib/main/helpers/isCursorSupplied.js +0 -14
  275. package/lib/main/helpers/isCursorSupplied.js.map +0 -1
  276. package/lib/main/helpers/isFirstPage.js +0 -11
  277. package/lib/main/helpers/isFirstPage.js.map +0 -1
  278. package/lib/main/helpers/isLastPage.js +0 -14
  279. package/lib/main/helpers/isLastPage.js.map +0 -1
  280. package/lib/main/helpers/makeEdges.js +0 -14
  281. package/lib/main/helpers/makeEdges.js.map +0 -1
  282. package/lib/main/helpers/makeEntry.js +0 -38
  283. package/lib/main/helpers/makeEntry.js.map +0 -1
  284. package/lib/main/helpers/mergeCachedEdges.js +0 -21
  285. package/lib/main/helpers/mergeCachedEdges.js.map +0 -1
  286. package/lib/main/helpers/removeConnectionInputOptions.js +0 -17
  287. package/lib/main/helpers/removeConnectionInputOptions.js.map +0 -1
  288. package/lib/main/helpers/requestAndCachePages.js +0 -66
  289. package/lib/main/helpers/requestAndCachePages.js.map +0 -1
  290. package/lib/main/helpers/requestOutstandingPages.js +0 -67
  291. package/lib/main/helpers/requestOutstandingPages.js.map +0 -1
  292. package/lib/main/helpers/resolveConnection.js +0 -95
  293. package/lib/main/helpers/resolveConnection.js.map +0 -1
  294. package/lib/main/helpers/retrieveCachedConnection.js +0 -90
  295. package/lib/main/helpers/retrieveCachedConnection.js.map +0 -1
  296. package/lib/main/helpers/retrieveCachedEdgesByPage.js +0 -45
  297. package/lib/main/helpers/retrieveCachedEdgesByPage.js.map +0 -1
  298. package/lib/main/helpers/validateCursor.js +0 -88
  299. package/lib/main/helpers/validateCursor.js.map +0 -1
  300. package/lib/main/index.js +0 -52
  301. package/lib/main/index.js.map +0 -1
  302. package/lib/main/main/index.js +0 -100
  303. package/lib/main/main/index.js.map +0 -1
  304. package/lib/module/__testUtils__/generateCursorCache.mjs +0 -71
  305. package/lib/module/__testUtils__/generateCursorCache.mjs.map +0 -1
  306. package/lib/module/__testUtils__/generatePageResponse.mjs +0 -23
  307. package/lib/module/__testUtils__/generatePageResponse.mjs.map +0 -1
  308. package/lib/module/__testUtils__/generatePages.mjs +0 -11
  309. package/lib/module/__testUtils__/generatePages.mjs.map +0 -1
  310. package/lib/module/defs/index.mjs +0 -2
  311. package/lib/module/defs/index.mjs.map +0 -1
  312. package/lib/module/helpers/cacheCursors.mjs +0 -30
  313. package/lib/module/helpers/cacheCursors.mjs.map +0 -1
  314. package/lib/module/helpers/extractEdges.mjs +0 -2
  315. package/lib/module/helpers/extractEdges.mjs.map +0 -1
  316. package/lib/module/helpers/extractNodes.mjs +0 -2
  317. package/lib/module/helpers/extractNodes.mjs.map +0 -1
  318. package/lib/module/helpers/getCount.mjs +0 -5
  319. package/lib/module/helpers/getCount.mjs.map +0 -1
  320. package/lib/module/helpers/getCurrentPageStartAndEndIndexes.mjs +0 -11
  321. package/lib/module/helpers/getCurrentPageStartAndEndIndexes.mjs.map +0 -1
  322. package/lib/module/helpers/getCursor.mjs +0 -5
  323. package/lib/module/helpers/getCursor.mjs.map +0 -1
  324. package/lib/module/helpers/getDirection.mjs +0 -2
  325. package/lib/module/helpers/getDirection.mjs.map +0 -1
  326. package/lib/module/helpers/getInRangeCachedEdges.mjs +0 -26
  327. package/lib/module/helpers/getInRangeCachedEdges.mjs.map +0 -1
  328. package/lib/module/helpers/getIndexesOnCurrentPage.mjs +0 -17
  329. package/lib/module/helpers/getIndexesOnCurrentPage.mjs.map +0 -1
  330. package/lib/module/helpers/getIndexesOnLastPage.mjs +0 -9
  331. package/lib/module/helpers/getIndexesOnLastPage.mjs.map +0 -1
  332. package/lib/module/helpers/getPageNumbersToRequest.mjs +0 -30
  333. package/lib/module/helpers/getPageNumbersToRequest.mjs.map +0 -1
  334. package/lib/module/helpers/getPagesMissingFromCache.mjs +0 -10
  335. package/lib/module/helpers/getPagesMissingFromCache.mjs.map +0 -1
  336. package/lib/module/helpers/getResultsOnLastPage.mjs +0 -8
  337. package/lib/module/helpers/getResultsOnLastPage.mjs.map +0 -1
  338. package/lib/module/helpers/getStartAndEndCursors.mjs +0 -10
  339. package/lib/module/helpers/getStartAndEndCursors.mjs.map +0 -1
  340. package/lib/module/helpers/getStartAndEndIndexes.mjs +0 -86
  341. package/lib/module/helpers/getStartAndEndIndexes.mjs.map +0 -1
  342. package/lib/module/helpers/getStartAndEndPageNumbers.mjs +0 -35
  343. package/lib/module/helpers/getStartAndEndPageNumbers.mjs.map +0 -1
  344. package/lib/module/helpers/hasPreviousNextPage.mjs +0 -18
  345. package/lib/module/helpers/hasPreviousNextPage.mjs.map +0 -1
  346. package/lib/module/helpers/isCursorFirst.mjs +0 -8
  347. package/lib/module/helpers/isCursorFirst.mjs.map +0 -1
  348. package/lib/module/helpers/isCursorLast.mjs +0 -15
  349. package/lib/module/helpers/isCursorLast.mjs.map +0 -1
  350. package/lib/module/helpers/isCursorSupplied.mjs +0 -5
  351. package/lib/module/helpers/isCursorSupplied.mjs.map +0 -1
  352. package/lib/module/helpers/isFirstPage.mjs +0 -2
  353. package/lib/module/helpers/isFirstPage.mjs.map +0 -1
  354. package/lib/module/helpers/isLastPage.mjs +0 -5
  355. package/lib/module/helpers/isLastPage.mjs.map +0 -1
  356. package/lib/module/helpers/makeEdges.mjs +0 -5
  357. package/lib/module/helpers/makeEdges.mjs.map +0 -1
  358. package/lib/module/helpers/makeEntry.mjs +0 -25
  359. package/lib/module/helpers/makeEntry.mjs.map +0 -1
  360. package/lib/module/helpers/mergeCachedEdges.mjs +0 -12
  361. package/lib/module/helpers/mergeCachedEdges.mjs.map +0 -1
  362. package/lib/module/helpers/removeConnectionInputOptions.mjs +0 -4
  363. package/lib/module/helpers/removeConnectionInputOptions.mjs.map +0 -1
  364. package/lib/module/helpers/requestAndCachePages.mjs +0 -54
  365. package/lib/module/helpers/requestAndCachePages.mjs.map +0 -1
  366. package/lib/module/helpers/requestOutstandingPages.mjs +0 -57
  367. package/lib/module/helpers/requestOutstandingPages.mjs.map +0 -1
  368. package/lib/module/helpers/resolveConnection.mjs +0 -78
  369. package/lib/module/helpers/resolveConnection.mjs.map +0 -1
  370. package/lib/module/helpers/retrieveCachedConnection.mjs +0 -70
  371. package/lib/module/helpers/retrieveCachedConnection.mjs.map +0 -1
  372. package/lib/module/helpers/retrieveCachedEdgesByPage.mjs +0 -35
  373. package/lib/module/helpers/retrieveCachedEdgesByPage.mjs.map +0 -1
  374. package/lib/module/helpers/validateCursor.mjs +0 -71
  375. package/lib/module/helpers/validateCursor.mjs.map +0 -1
  376. package/lib/module/index.mjs +0 -4
  377. package/lib/module/index.mjs.map +0 -1
  378. package/lib/module/main/index.mjs +0 -83
  379. package/lib/module/main/index.mjs.map +0 -1
  380. package/lib/types/__testUtils__/generateCursorCache.d.ts +0 -11
  381. package/lib/types/__testUtils__/generateCursorCache.d.ts.map +0 -1
  382. package/lib/types/__testUtils__/generatePageResponse.d.ts +0 -18
  383. package/lib/types/__testUtils__/generatePageResponse.d.ts.map +0 -1
  384. package/lib/types/__testUtils__/generatePages.d.ts +0 -3
  385. package/lib/types/__testUtils__/generatePages.d.ts.map +0 -1
  386. package/lib/types/defs/index.d.ts.map +0 -1
  387. package/lib/types/helpers/cacheCursors.d.ts +0 -13
  388. package/lib/types/helpers/cacheCursors.d.ts.map +0 -1
  389. package/lib/types/helpers/extractEdges.d.ts +0 -4
  390. package/lib/types/helpers/extractEdges.d.ts.map +0 -1
  391. package/lib/types/helpers/extractNodes.d.ts +0 -4
  392. package/lib/types/helpers/extractNodes.d.ts.map +0 -1
  393. package/lib/types/helpers/getCount.d.ts +0 -4
  394. package/lib/types/helpers/getCount.d.ts.map +0 -1
  395. package/lib/types/helpers/getCount.test.d.ts +0 -2
  396. package/lib/types/helpers/getCount.test.d.ts.map +0 -1
  397. package/lib/types/helpers/getCurrentPageStartAndEndIndexes.d.ts.map +0 -1
  398. package/lib/types/helpers/getCursor.d.ts +0 -4
  399. package/lib/types/helpers/getCursor.d.ts.map +0 -1
  400. package/lib/types/helpers/getCursor.test.d.ts +0 -2
  401. package/lib/types/helpers/getCursor.test.d.ts.map +0 -1
  402. package/lib/types/helpers/getDirection.d.ts +0 -3
  403. package/lib/types/helpers/getDirection.d.ts.map +0 -1
  404. package/lib/types/helpers/getDirection.test.d.ts +0 -2
  405. package/lib/types/helpers/getDirection.test.d.ts.map +0 -1
  406. package/lib/types/helpers/getInRangeCachedEdges.d.ts +0 -9
  407. package/lib/types/helpers/getInRangeCachedEdges.d.ts.map +0 -1
  408. package/lib/types/helpers/getIndexesOnCurrentPage.d.ts +0 -7
  409. package/lib/types/helpers/getIndexesOnCurrentPage.d.ts.map +0 -1
  410. package/lib/types/helpers/getIndexesOnCurrentPage.test.d.ts +0 -2
  411. package/lib/types/helpers/getIndexesOnCurrentPage.test.d.ts.map +0 -1
  412. package/lib/types/helpers/getIndexesOnLastPage.d.ts +0 -4
  413. package/lib/types/helpers/getIndexesOnLastPage.d.ts.map +0 -1
  414. package/lib/types/helpers/getIndexesOnLastPage.test.d.ts +0 -2
  415. package/lib/types/helpers/getIndexesOnLastPage.test.d.ts.map +0 -1
  416. package/lib/types/helpers/getPageNumbersToRequest.d.ts +0 -8
  417. package/lib/types/helpers/getPageNumbersToRequest.d.ts.map +0 -1
  418. package/lib/types/helpers/getPageNumbersToRequest.test.d.ts +0 -2
  419. package/lib/types/helpers/getPageNumbersToRequest.test.d.ts.map +0 -1
  420. package/lib/types/helpers/getPagesMissingFromCache.d.ts +0 -4
  421. package/lib/types/helpers/getPagesMissingFromCache.d.ts.map +0 -1
  422. package/lib/types/helpers/getResultsOnLastPage.d.ts +0 -7
  423. package/lib/types/helpers/getResultsOnLastPage.d.ts.map +0 -1
  424. package/lib/types/helpers/getResultsOnLastPage.test.d.ts +0 -2
  425. package/lib/types/helpers/getResultsOnLastPage.test.d.ts.map +0 -1
  426. package/lib/types/helpers/getStartAndEndCursors.d.ts +0 -4
  427. package/lib/types/helpers/getStartAndEndCursors.d.ts.map +0 -1
  428. package/lib/types/helpers/getStartAndEndIndexes.d.ts +0 -10
  429. package/lib/types/helpers/getStartAndEndIndexes.d.ts.map +0 -1
  430. package/lib/types/helpers/getStartAndEndIndexes.test.d.ts +0 -2
  431. package/lib/types/helpers/getStartAndEndIndexes.test.d.ts.map +0 -1
  432. package/lib/types/helpers/getStartAndEndPageNumbers.d.ts +0 -9
  433. package/lib/types/helpers/getStartAndEndPageNumbers.d.ts.map +0 -1
  434. package/lib/types/helpers/getStartAndEndPageNumbers.test.d.ts +0 -2
  435. package/lib/types/helpers/getStartAndEndPageNumbers.test.d.ts.map +0 -1
  436. package/lib/types/helpers/hasPreviousNextPage.d.ts.map +0 -1
  437. package/lib/types/helpers/hasPreviousNextPage.test.d.ts +0 -2
  438. package/lib/types/helpers/hasPreviousNextPage.test.d.ts.map +0 -1
  439. package/lib/types/helpers/isCursorFirst.d.ts +0 -8
  440. package/lib/types/helpers/isCursorFirst.d.ts.map +0 -1
  441. package/lib/types/helpers/isCursorFirst.test.d.ts +0 -2
  442. package/lib/types/helpers/isCursorFirst.test.d.ts.map +0 -1
  443. package/lib/types/helpers/isCursorLast.d.ts +0 -11
  444. package/lib/types/helpers/isCursorLast.d.ts.map +0 -1
  445. package/lib/types/helpers/isCursorLast.test.d.ts +0 -2
  446. package/lib/types/helpers/isCursorLast.test.d.ts.map +0 -1
  447. package/lib/types/helpers/isCursorSupplied.d.ts +0 -4
  448. package/lib/types/helpers/isCursorSupplied.d.ts.map +0 -1
  449. package/lib/types/helpers/isCursorSupplied.test.d.ts +0 -2
  450. package/lib/types/helpers/isCursorSupplied.test.d.ts.map +0 -1
  451. package/lib/types/helpers/isFirstPage.d.ts +0 -3
  452. package/lib/types/helpers/isFirstPage.d.ts.map +0 -1
  453. package/lib/types/helpers/isFirstPage.test.d.ts +0 -2
  454. package/lib/types/helpers/isFirstPage.test.d.ts.map +0 -1
  455. package/lib/types/helpers/isLastPage.d.ts +0 -7
  456. package/lib/types/helpers/isLastPage.d.ts.map +0 -1
  457. package/lib/types/helpers/isLastPage.test.d.ts +0 -2
  458. package/lib/types/helpers/isLastPage.test.d.ts.map +0 -1
  459. package/lib/types/helpers/makeEdges.d.ts +0 -7
  460. package/lib/types/helpers/makeEdges.d.ts.map +0 -1
  461. package/lib/types/helpers/makeEntry.d.ts +0 -11
  462. package/lib/types/helpers/makeEntry.d.ts.map +0 -1
  463. package/lib/types/helpers/mergeCachedEdges.d.ts +0 -4
  464. package/lib/types/helpers/mergeCachedEdges.d.ts.map +0 -1
  465. package/lib/types/helpers/removeConnectionInputOptions.d.ts +0 -3
  466. package/lib/types/helpers/removeConnectionInputOptions.d.ts.map +0 -1
  467. package/lib/types/helpers/removeConnectionInputOptions.test.d.ts +0 -2
  468. package/lib/types/helpers/removeConnectionInputOptions.test.d.ts.map +0 -1
  469. package/lib/types/helpers/requestAndCachePages.d.ts +0 -21
  470. package/lib/types/helpers/requestAndCachePages.d.ts.map +0 -1
  471. package/lib/types/helpers/requestOutstandingPages.d.ts +0 -18
  472. package/lib/types/helpers/requestOutstandingPages.d.ts.map +0 -1
  473. package/lib/types/helpers/resolveConnection.d.ts +0 -24
  474. package/lib/types/helpers/resolveConnection.d.ts.map +0 -1
  475. package/lib/types/helpers/retrieveCachedConnection.d.ts.map +0 -1
  476. package/lib/types/helpers/retrieveCachedConnection.test.d.ts +0 -2
  477. package/lib/types/helpers/retrieveCachedConnection.test.d.ts.map +0 -1
  478. package/lib/types/helpers/retrieveCachedEdgesByPage.d.ts +0 -12
  479. package/lib/types/helpers/retrieveCachedEdgesByPage.d.ts.map +0 -1
  480. package/lib/types/helpers/validateCursor.d.ts +0 -11
  481. package/lib/types/helpers/validateCursor.d.ts.map +0 -1
  482. package/lib/types/helpers/validateCursor.test.d.ts +0 -2
  483. package/lib/types/helpers/validateCursor.test.d.ts.map +0 -1
  484. package/lib/types/index.d.ts +0 -4
  485. package/lib/types/index.d.ts.map +0 -1
  486. package/lib/types/main/index.d.ts +0 -5
  487. package/lib/types/main/index.d.ts.map +0 -1
  488. package/lib/types/main/index.test.d.ts +0 -2
  489. package/lib/types/main/index.test.d.ts.map +0 -1
  490. package/package-lock.json +0 -18
@@ -1,434 +1,653 @@
1
- import { decode, encode } from "js-base64";
2
- import generateCursorCache from "../__testUtils__/generateCursorCache";
3
- import extractEdges from "./extractEdges";
4
- import retrieveCachedConnection from "./retrieveCachedConnection";
5
-
6
- describe("retrieveCachedConnection", () => {
7
- const groupCursor = encode("123456789");
1
+ import { expect } from '@jest/globals';
2
+ import { decode, encode } from 'js-base64';
3
+ import { generateCursorCache } from '../__testUtils__/generateCursorCache.ts';
4
+ import { extractEdges } from './extractEdges.ts';
5
+ import { retrieveCachedConnection } from './retrieveCachedConnection.ts';
6
+
7
+ describe('retrieveCachedConnection', () => {
8
+ const groupCursor = encode('123456789');
8
9
  const resultsPerPage = 10;
9
10
 
10
- describe("retrieving edges after a cursor", () => {
11
- test("when 5 cursors on the same page are requested", async () => {
12
- const cursorCache = await generateCursorCache({
13
- group: groupCursor,
14
- pageRanges: ["1-10"],
15
- resultsPerPage,
16
- totalPages: 10,
17
- totalResults: 100,
18
- });
19
-
20
- const args = {
21
- after: `${encode(`0::1`)}::${groupCursor}`,
22
- first: 5,
23
- };
24
-
25
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
26
- cursorCache,
27
- groupCursor,
28
- resultsPerPage,
29
- });
30
-
31
- const edges = extractEdges(cachedEdges);
32
- expect(edges.length).toBe(5);
33
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("1::1");
34
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("5::1");
35
- expect(hasPreviousPage).toBe(true);
36
- expect(hasNextPage).toBe(true);
37
- expect(missingPages.length).toBe(0);
38
- });
39
-
40
- test("when 15 cursors covering multiple pages are requested", async () => {
41
- const cursorCache = await generateCursorCache({
42
- group: groupCursor,
43
- pageRanges: ["1-10"],
44
- resultsPerPage,
45
- totalPages: 10,
46
- totalResults: 100,
47
- });
48
-
49
- const args = {
50
- after: `${encode(`5::1`)}::${groupCursor}`,
51
- first: 15,
52
- };
53
-
54
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
55
- cursorCache,
56
- groupCursor,
57
- resultsPerPage,
58
- });
59
-
60
- const edges = extractEdges(cachedEdges);
61
- expect(edges.length).toBe(15);
62
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("6::1");
63
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("0::3");
64
- expect(hasPreviousPage).toBe(true);
65
- expect(hasNextPage).toBe(true);
66
- expect(missingPages.length).toBe(0);
67
- });
68
-
69
- test("when 15 cursors going over the last page are requested", async () => {
70
- const cursorCache = await generateCursorCache({
71
- group: groupCursor,
72
- pageRanges: ["1-10"],
73
- resultsPerPage,
74
- totalPages: 10,
75
- totalResults: 100,
76
- });
77
-
78
- const args = {
79
- after: `${encode(`0::10`)}::${groupCursor}`,
80
- first: 15,
81
- };
82
-
83
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
84
- cursorCache,
85
- groupCursor,
86
- resultsPerPage,
87
- });
88
-
89
- const edges = extractEdges(cachedEdges);
90
- expect(edges.length).toBe(9);
91
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("1::10");
92
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("9::10");
93
- expect(hasPreviousPage).toBe(true);
94
- expect(hasNextPage).toBe(false);
95
- expect(missingPages.length).toBe(0);
96
- });
11
+ describe('retrieving edges after a cursor', () => {
12
+ describe('when 5 cursors on the same page are requested', () => {
13
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
97
14
 
98
- describe("when 35 cursors covering multiple pages and going OVER the last page are requested", () => {
99
- test("when last page has full page of results", async () => {
15
+ beforeAll(async () => {
100
16
  const cursorCache = await generateCursorCache({
101
17
  group: groupCursor,
102
- pageRanges: ["1-10"],
18
+ pageRanges: ['1-10'],
103
19
  resultsPerPage,
104
20
  totalPages: 10,
105
21
  totalResults: 100,
106
22
  });
107
23
 
108
24
  const args = {
109
- after: `${encode(`0::8`)}::${groupCursor}`,
110
- first: 35,
25
+ after: `${encode(`0::1`)}::${groupCursor}`,
26
+ first: 5,
111
27
  };
112
28
 
113
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
29
+ result = await retrieveCachedConnection(args, {
114
30
  cursorCache,
115
31
  groupCursor,
116
32
  resultsPerPage,
117
33
  });
34
+ });
35
+
36
+ it('should return the correct number of edges', () => {
37
+ const edges = extractEdges(result.cachedEdges);
38
+ expect(edges).toHaveLength(5);
39
+ });
40
+
41
+ it('should return the correct first edge', () => {
42
+ const edges = extractEdges(result.cachedEdges);
43
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('1::1');
44
+ });
45
+
46
+ it('should return the correct last edge', () => {
47
+ const edges = extractEdges(result.cachedEdges);
48
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('5::1');
49
+ });
50
+
51
+ it('should return hasPreviousPage as true', () => {
52
+ expect(result.hasPreviousPage).toBe(true);
53
+ });
118
54
 
119
- const edges = extractEdges(cachedEdges);
120
- expect(edges.length).toBe(29);
121
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("1::8");
122
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("9::10");
123
- expect(hasPreviousPage).toBe(true);
124
- expect(hasNextPage).toBe(false);
125
- expect(missingPages.length).toBe(0);
55
+ it('should return hasNextPage as true', () => {
56
+ expect(result.hasNextPage).toBe(true);
126
57
  });
127
58
 
128
- test("when last page has partial page of results", async () => {
59
+ it('should return no missing pages', () => {
60
+ expect(result.missingPages).toHaveLength(0);
61
+ });
62
+ });
63
+
64
+ describe('when 15 cursors covering multiple pages are requested', () => {
65
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
66
+
67
+ beforeAll(async () => {
129
68
  const cursorCache = await generateCursorCache({
130
69
  group: groupCursor,
131
- pageRanges: ["1-10"],
70
+ pageRanges: ['1-10'],
132
71
  resultsPerPage,
133
72
  totalPages: 10,
134
- totalResults: 96,
73
+ totalResults: 100,
135
74
  });
136
75
 
137
76
  const args = {
138
- after: `${encode(`0::8`)}::${groupCursor}`,
139
- first: 35,
77
+ after: `${encode(`5::1`)}::${groupCursor}`,
78
+ first: 15,
140
79
  };
141
80
 
142
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
81
+ result = await retrieveCachedConnection(args, {
143
82
  cursorCache,
144
83
  groupCursor,
145
84
  resultsPerPage,
146
85
  });
86
+ });
87
+
88
+ it('should return the correct number of edges', () => {
89
+ const edges = extractEdges(result.cachedEdges);
90
+ expect(edges).toHaveLength(15);
91
+ });
147
92
 
148
- const edges = extractEdges(cachedEdges);
149
- expect(edges.length).toBe(25);
150
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("1::8");
151
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("5::10");
152
- expect(hasPreviousPage).toBe(true);
153
- expect(hasNextPage).toBe(false);
154
- expect(missingPages.length).toBe(0);
93
+ it('should return the correct first edge', () => {
94
+ const edges = extractEdges(result.cachedEdges);
95
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('6::1');
96
+ });
97
+
98
+ it('should return the correct last edge', () => {
99
+ const edges = extractEdges(result.cachedEdges);
100
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('0::3');
101
+ });
102
+
103
+ it('should return hasPreviousPage as true', () => {
104
+ expect(result.hasPreviousPage).toBe(true);
105
+ });
106
+
107
+ it('should return hasNextPage as true', () => {
108
+ expect(result.hasNextPage).toBe(true);
109
+ });
110
+
111
+ it('should return no missing pages', () => {
112
+ expect(result.missingPages).toHaveLength(0);
155
113
  });
156
114
  });
157
115
 
158
- describe("when 25 cursors covering multiple pages and going UP TO the last page are requested", () => {
159
- test("when last page has full page of results", async () => {
116
+ describe('when 15 cursors going over the last page are requested', () => {
117
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
118
+
119
+ beforeAll(async () => {
160
120
  const cursorCache = await generateCursorCache({
161
121
  group: groupCursor,
162
- pageRanges: ["1-10"],
122
+ pageRanges: ['1-10'],
163
123
  resultsPerPage,
164
124
  totalPages: 10,
165
125
  totalResults: 100,
166
126
  });
167
127
 
168
128
  const args = {
169
- after: `${encode(`0::8`)}::${groupCursor}`,
170
- first: 25,
129
+ after: `${encode(`0::10`)}::${groupCursor}`,
130
+ first: 15,
171
131
  };
172
132
 
173
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
133
+ result = await retrieveCachedConnection(args, {
174
134
  cursorCache,
175
135
  groupCursor,
176
136
  resultsPerPage,
177
137
  });
138
+ });
139
+
140
+ it('should return the correct number of edges', () => {
141
+ const edges = extractEdges(result.cachedEdges);
142
+ expect(edges).toHaveLength(9);
143
+ });
144
+
145
+ it('should return the correct first edge', () => {
146
+ const edges = extractEdges(result.cachedEdges);
147
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('1::10');
148
+ });
178
149
 
179
- const edges = extractEdges(cachedEdges);
180
- expect(edges.length).toBe(25);
181
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("1::8");
182
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("5::10");
183
- expect(hasPreviousPage).toBe(true);
184
- expect(hasNextPage).toBe(true);
185
- expect(missingPages.length).toBe(0);
150
+ it('should return the correct last edge', () => {
151
+ const edges = extractEdges(result.cachedEdges);
152
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('9::10');
153
+ });
154
+
155
+ it('should return hasPreviousPage as true', () => {
156
+ expect(result.hasPreviousPage).toBe(true);
157
+ });
158
+
159
+ it('should return hasNextPage as false', () => {
160
+ expect(result.hasNextPage).toBe(false);
161
+ });
162
+
163
+ it('should return no missing pages', () => {
164
+ expect(result.missingPages).toHaveLength(0);
165
+ });
166
+ });
167
+
168
+ describe('when 35 cursors covering multiple pages and going OVER the last page are requested', () => {
169
+ describe('when last page has full page of results', () => {
170
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
171
+
172
+ beforeAll(async () => {
173
+ const cursorCache = await generateCursorCache({
174
+ group: groupCursor,
175
+ pageRanges: ['1-10'],
176
+ resultsPerPage,
177
+ totalPages: 10,
178
+ totalResults: 100,
179
+ });
180
+
181
+ const args = {
182
+ after: `${encode(`0::8`)}::${groupCursor}`,
183
+ first: 35,
184
+ };
185
+
186
+ result = await retrieveCachedConnection(args, {
187
+ cursorCache,
188
+ groupCursor,
189
+ resultsPerPage,
190
+ });
191
+ });
192
+
193
+ it('should return the correct number of edges', () => {
194
+ const edges = extractEdges(result.cachedEdges);
195
+ expect(edges).toHaveLength(29);
196
+ });
197
+
198
+ it('should return the correct first edge', () => {
199
+ const edges = extractEdges(result.cachedEdges);
200
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('1::8');
201
+ });
202
+
203
+ it('should return the correct last edge', () => {
204
+ const edges = extractEdges(result.cachedEdges);
205
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('9::10');
206
+ });
207
+
208
+ it('should return hasPreviousPage as true', () => {
209
+ expect(result.hasPreviousPage).toBe(true);
210
+ });
211
+
212
+ it('should return hasNextPage as false', () => {
213
+ expect(result.hasNextPage).toBe(false);
214
+ });
215
+
216
+ it('should return no missing pages', () => {
217
+ expect(result.missingPages).toHaveLength(0);
218
+ });
186
219
  });
187
220
 
188
- test("when last page has partial page of results", async () => {
221
+ describe('when last page has partial page of results', () => {
222
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
223
+
224
+ beforeAll(async () => {
225
+ const cursorCache = await generateCursorCache({
226
+ group: groupCursor,
227
+ pageRanges: ['1-10'],
228
+ resultsPerPage,
229
+ totalPages: 10,
230
+ totalResults: 96,
231
+ });
232
+
233
+ const args = {
234
+ after: `${encode(`0::8`)}::${groupCursor}`,
235
+ first: 35,
236
+ };
237
+
238
+ result = await retrieveCachedConnection(args, {
239
+ cursorCache,
240
+ groupCursor,
241
+ resultsPerPage,
242
+ });
243
+ });
244
+
245
+ it('should return the correct number of edges', () => {
246
+ const edges = extractEdges(result.cachedEdges);
247
+ expect(edges).toHaveLength(25);
248
+ });
249
+
250
+ it('should return the correct first edge', () => {
251
+ const edges = extractEdges(result.cachedEdges);
252
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('1::8');
253
+ });
254
+
255
+ it('should return the correct last edge', () => {
256
+ const edges = extractEdges(result.cachedEdges);
257
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('5::10');
258
+ });
259
+
260
+ it('should return hasPreviousPage as true', () => {
261
+ expect(result.hasPreviousPage).toBe(true);
262
+ });
263
+
264
+ it('should return hasNextPage as false', () => {
265
+ expect(result.hasNextPage).toBe(false);
266
+ });
267
+
268
+ it('should return no missing pages', () => {
269
+ expect(result.missingPages).toHaveLength(0);
270
+ });
271
+ });
272
+ });
273
+
274
+ describe('when 25 cursors covering multiple pages and going UP TO the last page are requested', () => {
275
+ describe('when last page has full page of results', () => {
276
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
277
+
278
+ beforeAll(async () => {
279
+ const cursorCache = await generateCursorCache({
280
+ group: groupCursor,
281
+ pageRanges: ['1-10'],
282
+ resultsPerPage,
283
+ totalPages: 10,
284
+ totalResults: 100,
285
+ });
286
+
287
+ const args = {
288
+ after: `${encode(`0::8`)}::${groupCursor}`,
289
+ first: 25,
290
+ };
291
+
292
+ result = await retrieveCachedConnection(args, {
293
+ cursorCache,
294
+ groupCursor,
295
+ resultsPerPage,
296
+ });
297
+ });
298
+
299
+ it('should return the correct number of edges', () => {
300
+ const edges = extractEdges(result.cachedEdges);
301
+ expect(edges).toHaveLength(25);
302
+ });
303
+
304
+ it('should return the correct first edge', () => {
305
+ const edges = extractEdges(result.cachedEdges);
306
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('1::8');
307
+ });
308
+
309
+ it('should return the correct last edge', () => {
310
+ const edges = extractEdges(result.cachedEdges);
311
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('5::10');
312
+ });
313
+
314
+ it('should return hasPreviousPage as true', () => {
315
+ expect(result.hasPreviousPage).toBe(true);
316
+ });
317
+
318
+ it('should return hasNextPage as true', () => {
319
+ expect(result.hasNextPage).toBe(true);
320
+ });
321
+
322
+ it('should return no missing pages', () => {
323
+ expect(result.missingPages).toHaveLength(0);
324
+ });
325
+ });
326
+
327
+ describe('when last page has partial page of results', () => {
328
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
329
+
330
+ beforeAll(async () => {
331
+ const cursorCache = await generateCursorCache({
332
+ group: groupCursor,
333
+ pageRanges: ['1-10'],
334
+ resultsPerPage,
335
+ totalPages: 10,
336
+ totalResults: 96,
337
+ });
338
+
339
+ const args = {
340
+ after: `${encode(`0::8`)}::${groupCursor}`,
341
+ first: 25,
342
+ };
343
+
344
+ result = await retrieveCachedConnection(args, {
345
+ cursorCache,
346
+ groupCursor,
347
+ resultsPerPage,
348
+ });
349
+ });
350
+
351
+ it('should return the correct number of edges', () => {
352
+ const edges = extractEdges(result.cachedEdges);
353
+ expect(edges).toHaveLength(25);
354
+ });
355
+
356
+ it('should return the correct first edge', () => {
357
+ const edges = extractEdges(result.cachedEdges);
358
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('1::8');
359
+ });
360
+
361
+ it('should return the correct last edge', () => {
362
+ const edges = extractEdges(result.cachedEdges);
363
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('5::10');
364
+ });
365
+
366
+ it('should return hasPreviousPage as true', () => {
367
+ expect(result.hasPreviousPage).toBe(true);
368
+ });
369
+
370
+ it('should return hasNextPage as false', () => {
371
+ expect(result.hasNextPage).toBe(false);
372
+ });
373
+
374
+ it('should return no missing pages', () => {
375
+ expect(result.missingPages).toHaveLength(0);
376
+ });
377
+ });
378
+ });
379
+
380
+ describe('when there are missing pages', () => {
381
+ describe('when 35 cursors covering multiple pages and going OVER the last page are requested', () => {
382
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
383
+
384
+ beforeAll(async () => {
385
+ const cursorCache = await generateCursorCache({
386
+ group: groupCursor,
387
+ pageRanges: ['1-8', '10'],
388
+ resultsPerPage,
389
+ totalPages: 10,
390
+ totalResults: 100,
391
+ });
392
+
393
+ const args = {
394
+ after: `${encode(`0::8`)}::${groupCursor}`,
395
+ first: 35,
396
+ };
397
+
398
+ result = await retrieveCachedConnection(args, {
399
+ cursorCache,
400
+ groupCursor,
401
+ resultsPerPage,
402
+ });
403
+ });
404
+
405
+ it('should return the correct number of edges', () => {
406
+ const edges = extractEdges(result.cachedEdges);
407
+ expect(edges).toHaveLength(20);
408
+ });
409
+
410
+ it('should return the correct first edge', () => {
411
+ const edges = extractEdges(result.cachedEdges);
412
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('0::8');
413
+ });
414
+
415
+ it('should return the correct last edge', () => {
416
+ const edges = extractEdges(result.cachedEdges);
417
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('9::10');
418
+ });
419
+
420
+ it('should return hasPreviousPage as true', () => {
421
+ expect(result.hasPreviousPage).toBe(true);
422
+ });
423
+
424
+ it('should return hasNextPage as false', () => {
425
+ expect(result.hasNextPage).toBe(false);
426
+ });
427
+
428
+ it('should return the missing pages', () => {
429
+ expect(result.missingPages).toEqual([9]);
430
+ });
431
+ });
432
+
433
+ describe('when 25 cursors covering multiple pages and going UP TO the last page are requested', () => {
434
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
435
+
436
+ beforeAll(async () => {
437
+ const cursorCache = await generateCursorCache({
438
+ group: groupCursor,
439
+ pageRanges: ['1-8', '10'],
440
+ resultsPerPage,
441
+ totalPages: 10,
442
+ totalResults: 100,
443
+ });
444
+
445
+ const args = {
446
+ after: `${encode(`0::8`)}::${groupCursor}`,
447
+ first: 25,
448
+ };
449
+
450
+ result = await retrieveCachedConnection(args, {
451
+ cursorCache,
452
+ groupCursor,
453
+ resultsPerPage,
454
+ });
455
+ });
456
+
457
+ it('should return the correct number of edges', () => {
458
+ const edges = extractEdges(result.cachedEdges);
459
+ expect(edges).toHaveLength(20);
460
+ });
461
+
462
+ it('should return the correct first edge', () => {
463
+ const edges = extractEdges(result.cachedEdges);
464
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('0::8');
465
+ });
466
+
467
+ it('should return the correct last edge', () => {
468
+ const edges = extractEdges(result.cachedEdges);
469
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('9::10');
470
+ });
471
+
472
+ it('should return hasPreviousPage as true', () => {
473
+ expect(result.hasPreviousPage).toBe(true);
474
+ });
475
+
476
+ it('should return hasNextPage as true', () => {
477
+ expect(result.hasNextPage).toBe(true);
478
+ });
479
+
480
+ it('should return the missing pages', () => {
481
+ expect(result.missingPages).toEqual([9]);
482
+ });
483
+ });
484
+ });
485
+ });
486
+
487
+ describe('retrieving edges before a cursor', () => {
488
+ describe('when 5 cursors on the same page are requested', () => {
489
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
490
+
491
+ beforeAll(async () => {
189
492
  const cursorCache = await generateCursorCache({
190
493
  group: groupCursor,
191
- pageRanges: ["1-10"],
494
+ pageRanges: ['1-10'],
192
495
  resultsPerPage,
193
496
  totalPages: 10,
194
- totalResults: 96,
497
+ totalResults: 100,
195
498
  });
196
499
 
197
500
  const args = {
198
- after: `${encode(`0::8`)}::${groupCursor}`,
199
- first: 25,
501
+ before: `${encode(`9::10`)}::${groupCursor}`,
502
+ last: 5,
200
503
  };
201
504
 
202
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
505
+ result = await retrieveCachedConnection(args, {
203
506
  cursorCache,
204
507
  groupCursor,
205
508
  resultsPerPage,
206
509
  });
510
+ });
511
+
512
+ it('should return the correct number of edges', () => {
513
+ const edges = extractEdges(result.cachedEdges);
514
+ expect(edges).toHaveLength(5);
515
+ });
516
+
517
+ it('should return the correct first edge', () => {
518
+ const edges = extractEdges(result.cachedEdges);
519
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('4::10');
520
+ });
521
+
522
+ it('should return the correct last edge', () => {
523
+ const edges = extractEdges(result.cachedEdges);
524
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('8::10');
525
+ });
526
+
527
+ it('should return hasPreviousPage as true', () => {
528
+ expect(result.hasPreviousPage).toBe(true);
529
+ });
530
+
531
+ it('should return hasNextPage as true', () => {
532
+ expect(result.hasNextPage).toBe(true);
533
+ });
207
534
 
208
- const edges = extractEdges(cachedEdges);
209
- expect(edges.length).toBe(25);
210
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("1::8");
211
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("5::10");
212
- expect(hasPreviousPage).toBe(true);
213
- expect(hasNextPage).toBe(false);
214
- expect(missingPages.length).toBe(0);
535
+ it('should return no missing pages', () => {
536
+ expect(result.missingPages).toHaveLength(0);
215
537
  });
216
538
  });
217
539
 
218
- describe("when there are missing pages", () => {
219
- test("when 35 cursors covering multiple pages and going OVER the last page are requested", async () => {
540
+ describe('when 15 cursors covering multiple pages are requested', () => {
541
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
542
+
543
+ beforeAll(async () => {
220
544
  const cursorCache = await generateCursorCache({
221
545
  group: groupCursor,
222
- pageRanges: ["1-8", "10"],
546
+ pageRanges: ['1-10'],
223
547
  resultsPerPage,
224
548
  totalPages: 10,
225
549
  totalResults: 100,
226
550
  });
227
551
 
228
552
  const args = {
229
- after: `${encode(`0::8`)}::${groupCursor}`,
230
- first: 35,
553
+ before: `${encode(`9::10`)}::${groupCursor}`,
554
+ last: 15,
231
555
  };
232
556
 
233
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
557
+ result = await retrieveCachedConnection(args, {
234
558
  cursorCache,
235
559
  groupCursor,
236
560
  resultsPerPage,
237
561
  });
562
+ });
563
+
564
+ it('should return the correct number of edges', () => {
565
+ const edges = extractEdges(result.cachedEdges);
566
+ expect(edges).toHaveLength(15);
567
+ });
568
+
569
+ it('should return the correct first edge', () => {
570
+ const edges = extractEdges(result.cachedEdges);
571
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('4::9');
572
+ });
573
+
574
+ it('should return the correct last edge', () => {
575
+ const edges = extractEdges(result.cachedEdges);
576
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('8::10');
577
+ });
578
+
579
+ it('should return hasPreviousPage as true', () => {
580
+ expect(result.hasPreviousPage).toBe(true);
581
+ });
238
582
 
239
- const edges = extractEdges(cachedEdges);
240
- expect(edges.length).toBe(20);
241
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("0::8");
242
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("9::10");
243
- expect(hasPreviousPage).toBe(true);
244
- expect(hasNextPage).toBe(false);
245
- expect(missingPages.length).toBe(1);
246
- expect(missingPages[0]).toBe(9);
583
+ it('should return hasNextPage as true', () => {
584
+ expect(result.hasNextPage).toBe(true);
247
585
  });
248
586
 
249
- test("when 25 cursors covering multiple pages and going UP TO the last page are requested", async () => {
587
+ it('should return no missing pages', () => {
588
+ expect(result.missingPages).toHaveLength(0);
589
+ });
590
+ });
591
+
592
+ describe('when 15 cursors going under the first page are requested', () => {
593
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
594
+
595
+ beforeAll(async () => {
250
596
  const cursorCache = await generateCursorCache({
251
597
  group: groupCursor,
252
- pageRanges: ["1-8", "10"],
598
+ pageRanges: ['1-10'],
253
599
  resultsPerPage,
254
600
  totalPages: 10,
255
601
  totalResults: 100,
256
602
  });
257
603
 
258
604
  const args = {
259
- after: `${encode(`0::8`)}::${groupCursor}`,
260
- first: 25,
605
+ before: `${encode(`9::1`)}::${groupCursor}`,
606
+ last: 15,
261
607
  };
262
608
 
263
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
609
+ result = await retrieveCachedConnection(args, {
264
610
  cursorCache,
265
611
  groupCursor,
266
612
  resultsPerPage,
267
613
  });
614
+ });
268
615
 
269
- const edges = extractEdges(cachedEdges);
270
- expect(edges.length).toBe(20);
271
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("0::8");
272
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("9::10");
273
- expect(hasPreviousPage).toBe(true);
274
- expect(hasNextPage).toBe(true);
275
- expect(missingPages.length).toBe(1);
276
- expect(missingPages[0]).toBe(9);
616
+ it('should return the correct number of edges', () => {
617
+ const edges = extractEdges(result.cachedEdges);
618
+ expect(edges).toHaveLength(9);
277
619
  });
278
- });
279
- });
280
620
 
281
- describe("retrieving edges before a cursor", () => {
282
- test("when 5 cursors on the same page are requested", async () => {
283
- const cursorCache = await generateCursorCache({
284
- group: groupCursor,
285
- pageRanges: ["1-10"],
286
- resultsPerPage,
287
- totalPages: 10,
288
- totalResults: 100,
289
- });
290
-
291
- const args = {
292
- before: `${encode(`9::10`)}::${groupCursor}`,
293
- last: 5,
294
- };
295
-
296
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
297
- cursorCache,
298
- groupCursor,
299
- resultsPerPage,
300
- });
301
-
302
- const edges = extractEdges(cachedEdges);
303
- expect(edges.length).toBe(5);
304
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("4::10");
305
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("8::10");
306
- expect(hasPreviousPage).toBe(true);
307
- expect(hasNextPage).toBe(true);
308
- expect(missingPages.length).toBe(0);
309
- });
621
+ it('should return the correct first edge', () => {
622
+ const edges = extractEdges(result.cachedEdges);
623
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('0::1');
624
+ });
310
625
 
311
- test("when 15 cursors covering multiple pages are requested", async () => {
312
- const cursorCache = await generateCursorCache({
313
- group: groupCursor,
314
- pageRanges: ["1-10"],
315
- resultsPerPage,
316
- totalPages: 10,
317
- totalResults: 100,
318
- });
319
-
320
- const args = {
321
- before: `${encode(`9::10`)}::${groupCursor}`,
322
- last: 15,
323
- };
324
-
325
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
326
- cursorCache,
327
- groupCursor,
328
- resultsPerPage,
329
- });
330
-
331
- const edges = extractEdges(cachedEdges);
332
- expect(edges.length).toBe(15);
333
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("4::9");
334
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("8::10");
335
- expect(hasPreviousPage).toBe(true);
336
- expect(hasNextPage).toBe(true);
337
- expect(missingPages.length).toBe(0);
338
- });
626
+ it('should return the correct last edge', () => {
627
+ const edges = extractEdges(result.cachedEdges);
628
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('8::1');
629
+ });
339
630
 
340
- test("when 15 cursors going under the first page are requested", async () => {
341
- const cursorCache = await generateCursorCache({
342
- group: groupCursor,
343
- pageRanges: ["1-10"],
344
- resultsPerPage,
345
- totalPages: 10,
346
- totalResults: 100,
347
- });
348
-
349
- const args = {
350
- before: `${encode(`9::1`)}::${groupCursor}`,
351
- last: 15,
352
- };
353
-
354
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
355
- cursorCache,
356
- groupCursor,
357
- resultsPerPage,
358
- });
359
-
360
- const edges = extractEdges(cachedEdges);
361
- expect(edges.length).toBe(9);
362
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("0::1");
363
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("8::1");
364
- expect(hasPreviousPage).toBe(false);
365
- expect(hasNextPage).toBe(true);
366
- expect(missingPages.length).toBe(0);
367
- });
631
+ it('should return hasPreviousPage as false', () => {
632
+ expect(result.hasPreviousPage).toBe(false);
633
+ });
368
634
 
369
- test("when 35 cursors covering multiple pages and going UNDER the first page are requested", async () => {
370
- const cursorCache = await generateCursorCache({
371
- group: groupCursor,
372
- pageRanges: ["1-10"],
373
- resultsPerPage,
374
- totalPages: 10,
375
- totalResults: 100,
376
- });
377
-
378
- const args = {
379
- before: `${encode(`7::3`)}::${groupCursor}`,
380
- last: 35,
381
- };
382
-
383
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
384
- cursorCache,
385
- groupCursor,
386
- resultsPerPage,
387
- });
388
-
389
- const edges = extractEdges(cachedEdges);
390
- expect(edges.length).toBe(27);
391
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("0::1");
392
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("6::3");
393
- expect(hasPreviousPage).toBe(false);
394
- expect(hasNextPage).toBe(true);
395
- expect(missingPages.length).toBe(0);
396
- });
635
+ it('should return hasNextPage as true', () => {
636
+ expect(result.hasNextPage).toBe(true);
637
+ });
397
638
 
398
- test("when 25 cursors covering multiple pages and going DOWN TO the first page are requested", async () => {
399
- const cursorCache = await generateCursorCache({
400
- group: groupCursor,
401
- pageRanges: ["1-10"],
402
- resultsPerPage,
403
- totalPages: 10,
404
- totalResults: 100,
405
- });
406
-
407
- const args = {
408
- before: `${encode(`7::3`)}::${groupCursor}`,
409
- last: 25,
410
- };
411
-
412
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
413
- cursorCache,
414
- groupCursor,
415
- resultsPerPage,
416
- });
417
-
418
- const edges = extractEdges(cachedEdges);
419
- expect(edges.length).toBe(25);
420
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("2::1");
421
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("6::3");
422
- expect(hasPreviousPage).toBe(true);
423
- expect(hasNextPage).toBe(true);
424
- expect(missingPages.length).toBe(0);
639
+ it('should return no missing pages', () => {
640
+ expect(result.missingPages).toHaveLength(0);
641
+ });
425
642
  });
426
643
 
427
- describe("when there are missing pages", () => {
428
- test("when 35 cursors covering multiple pages and going UNDER the first page are requested", async () => {
644
+ describe('when 35 cursors covering multiple pages and going UNDER the first page are requested', () => {
645
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
646
+
647
+ beforeAll(async () => {
429
648
  const cursorCache = await generateCursorCache({
430
649
  group: groupCursor,
431
- pageRanges: ["1", "3-10"],
650
+ pageRanges: ['1-10'],
432
651
  resultsPerPage,
433
652
  totalPages: 10,
434
653
  totalResults: 100,
@@ -439,26 +658,48 @@ describe("retrieveCachedConnection", () => {
439
658
  last: 35,
440
659
  };
441
660
 
442
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
661
+ result = await retrieveCachedConnection(args, {
443
662
  cursorCache,
444
663
  groupCursor,
445
664
  resultsPerPage,
446
665
  });
666
+ });
667
+
668
+ it('should return the correct number of edges', () => {
669
+ const edges = extractEdges(result.cachedEdges);
670
+ expect(edges).toHaveLength(27);
671
+ });
672
+
673
+ it('should return the correct first edge', () => {
674
+ const edges = extractEdges(result.cachedEdges);
675
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('0::1');
676
+ });
447
677
 
448
- const edges = extractEdges(cachedEdges);
449
- expect(edges.length).toBe(20);
450
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("0::1");
451
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("9::3");
452
- expect(hasPreviousPage).toBe(false);
453
- expect(hasNextPage).toBe(true);
454
- expect(missingPages.length).toBe(1);
455
- expect(missingPages[0]).toBe(2);
678
+ it('should return the correct last edge', () => {
679
+ const edges = extractEdges(result.cachedEdges);
680
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('6::3');
456
681
  });
457
682
 
458
- test("when 25 cursors covering multiple pages and going DOWN TO the first page are requested", async () => {
683
+ it('should return hasPreviousPage as false', () => {
684
+ expect(result.hasPreviousPage).toBe(false);
685
+ });
686
+
687
+ it('should return hasNextPage as true', () => {
688
+ expect(result.hasNextPage).toBe(true);
689
+ });
690
+
691
+ it('should return no missing pages', () => {
692
+ expect(result.missingPages).toHaveLength(0);
693
+ });
694
+ });
695
+
696
+ describe('when 25 cursors covering multiple pages and going DOWN TO the first page are requested', () => {
697
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
698
+
699
+ beforeAll(async () => {
459
700
  const cursorCache = await generateCursorCache({
460
701
  group: groupCursor,
461
- pageRanges: ["1", "3-10"],
702
+ pageRanges: ['1-10'],
462
703
  resultsPerPage,
463
704
  totalPages: 10,
464
705
  totalResults: 100,
@@ -469,20 +710,144 @@ describe("retrieveCachedConnection", () => {
469
710
  last: 25,
470
711
  };
471
712
 
472
- const { cachedEdges, hasNextPage, hasPreviousPage, missingPages } = await retrieveCachedConnection(args, {
713
+ result = await retrieveCachedConnection(args, {
473
714
  cursorCache,
474
715
  groupCursor,
475
716
  resultsPerPage,
476
717
  });
718
+ });
719
+
720
+ it('should return the correct number of edges', () => {
721
+ const edges = extractEdges(result.cachedEdges);
722
+ expect(edges).toHaveLength(25);
723
+ });
724
+
725
+ it('should return the correct first edge', () => {
726
+ const edges = extractEdges(result.cachedEdges);
727
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('2::1');
728
+ });
729
+
730
+ it('should return the correct last edge', () => {
731
+ const edges = extractEdges(result.cachedEdges);
732
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('6::3');
733
+ });
734
+
735
+ it('should return hasPreviousPage as true', () => {
736
+ expect(result.hasPreviousPage).toBe(true);
737
+ });
738
+
739
+ it('should return hasNextPage as true', () => {
740
+ expect(result.hasNextPage).toBe(true);
741
+ });
742
+
743
+ it('should return no missing pages', () => {
744
+ expect(result.missingPages).toHaveLength(0);
745
+ });
746
+ });
747
+
748
+ describe('when there are missing pages', () => {
749
+ describe('when 35 cursors covering multiple pages and going UNDER the first page are requested', () => {
750
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
751
+
752
+ beforeAll(async () => {
753
+ const cursorCache = await generateCursorCache({
754
+ group: groupCursor,
755
+ pageRanges: ['1', '3-10'],
756
+ resultsPerPage,
757
+ totalPages: 10,
758
+ totalResults: 100,
759
+ });
760
+
761
+ const args = {
762
+ before: `${encode(`7::3`)}::${groupCursor}`,
763
+ last: 35,
764
+ };
765
+
766
+ result = await retrieveCachedConnection(args, {
767
+ cursorCache,
768
+ groupCursor,
769
+ resultsPerPage,
770
+ });
771
+ });
772
+
773
+ it('should return the correct number of edges', () => {
774
+ const edges = extractEdges(result.cachedEdges);
775
+ expect(edges).toHaveLength(20);
776
+ });
777
+
778
+ it('should return the correct first edge', () => {
779
+ const edges = extractEdges(result.cachedEdges);
780
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('0::1');
781
+ });
477
782
 
478
- const edges = extractEdges(cachedEdges);
479
- expect(edges.length).toBe(20);
480
- expect(decode((edges[0].node.id as string).split("::")[0])).toBe("0::1");
481
- expect(decode((edges[edges.length - 1].node.id as string).split("::")[0])).toBe("9::3");
482
- expect(hasPreviousPage).toBe(true);
483
- expect(hasNextPage).toBe(true);
484
- expect(missingPages.length).toBe(1);
485
- expect(missingPages[0]).toBe(2);
783
+ it('should return the correct last edge', () => {
784
+ const edges = extractEdges(result.cachedEdges);
785
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('9::3');
786
+ });
787
+
788
+ it('should return hasPreviousPage as false', () => {
789
+ expect(result.hasPreviousPage).toBe(false);
790
+ });
791
+
792
+ it('should return hasNextPage as true', () => {
793
+ expect(result.hasNextPage).toBe(true);
794
+ });
795
+
796
+ it('should return the missing pages', () => {
797
+ expect(result.missingPages).toEqual([2]);
798
+ });
799
+ });
800
+
801
+ describe('when 25 cursors covering multiple pages and going DOWN TO the first page are requested', () => {
802
+ let result: Awaited<ReturnType<typeof import('./retrieveCachedConnection.ts')['retrieveCachedConnection']>>;
803
+
804
+ beforeAll(async () => {
805
+ const cursorCache = await generateCursorCache({
806
+ group: groupCursor,
807
+ pageRanges: ['1', '3-10'],
808
+ resultsPerPage,
809
+ totalPages: 10,
810
+ totalResults: 100,
811
+ });
812
+
813
+ const args = {
814
+ before: `${encode(`7::3`)}::${groupCursor}`,
815
+ last: 25,
816
+ };
817
+
818
+ result = await retrieveCachedConnection(args, {
819
+ cursorCache,
820
+ groupCursor,
821
+ resultsPerPage,
822
+ });
823
+ });
824
+
825
+ it('should return the correct number of edges', () => {
826
+ const edges = extractEdges(result.cachedEdges);
827
+ expect(edges).toHaveLength(20);
828
+ });
829
+
830
+ it('should return the correct first edge', () => {
831
+ const edges = extractEdges(result.cachedEdges);
832
+ expect(decode((edges[0]!.node.id as string).split('::')[0]!)).toBe('0::1');
833
+ });
834
+
835
+ it('should return the correct last edge', () => {
836
+ const edges = extractEdges(result.cachedEdges);
837
+ expect(decode((edges[edges.length - 1]!.node.id as string).split('::')[0]!)).toBe('9::3');
838
+ });
839
+
840
+ it('should return hasPreviousPage as true', () => {
841
+ expect(result.hasPreviousPage).toBe(true);
842
+ });
843
+
844
+ it('should return hasNextPage as true', () => {
845
+ expect(result.hasNextPage).toBe(true);
846
+ });
847
+
848
+ it('should return the missing pages', () => {
849
+ expect(result.missingPages).toEqual([2]);
850
+ });
486
851
  });
487
852
  });
488
853
  });