@graphql-box/connection-resolver 4.1.4 → 5.0.1

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 +56 -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,5 +1,6 @@
1
- import { CachedEdges, CursorGroupMetadata, Indexes } from "../defs";
2
- import getIndexesOnLastPage from "./getIndexesOnLastPage";
1
+ import { isNumber } from 'lodash-es';
2
+ import { type CachedEdges, type CursorGroupMetadata, type Indexes } from '../types.ts';
3
+ import { getIndexesOnLastPage } from './getIndexesOnLastPage.ts';
3
4
 
4
5
  export type HasPreviousPageParams = {
5
6
  cachedEdgesByPage: CachedEdges[];
@@ -14,7 +15,7 @@ export type HasNextPageParams = {
14
15
  };
15
16
 
16
17
  export const hasPreviousPage = ({ cachedEdgesByPage, startIndex }: HasPreviousPageParams) =>
17
- cachedEdgesByPage[0].pageNumber !== 1 || startIndex.relative > 0;
18
+ (isNumber(cachedEdgesByPage[0]?.pageNumber) && cachedEdgesByPage[0]?.pageNumber !== 1) || startIndex.relative > 0;
18
19
 
19
20
  export const hasNextPage = ({
20
21
  cachedEdgesByPage,
@@ -22,5 +23,6 @@ export const hasNextPage = ({
22
23
  metadata: { totalPages, totalResults },
23
24
  resultsPerPage,
24
25
  }: HasNextPageParams) =>
25
- cachedEdgesByPage[cachedEdgesByPage.length - 1].pageNumber !== totalPages ||
26
+ (isNumber(cachedEdgesByPage[cachedEdgesByPage.length - 1]?.pageNumber) &&
27
+ cachedEdgesByPage[cachedEdgesByPage.length - 1]?.pageNumber !== totalPages) ||
26
28
  endIndex.relative < getIndexesOnLastPage({ resultsPerPage, totalResults });
@@ -1,14 +1,20 @@
1
- import { CursorCacheEntry } from "../defs";
2
- import isCursorFirst from "./isCursorFirst";
1
+ import { type CursorCacheEntry } from '../types.ts';
2
+ import { isCursorFirst } from './isCursorFirst.ts';
3
3
 
4
- describe("isCursorFirst", () => {
5
- test("when cursor is first", () => {
4
+ describe('isCursorFirst', () => {
5
+ describe('when cursor is first', () => {
6
6
  const entry = { index: 0, page: 1 };
7
- expect(isCursorFirst({ direction: "backward", entry: entry as CursorCacheEntry })).toBe(true);
7
+
8
+ it('should return the correct value', () => {
9
+ expect(isCursorFirst({ direction: 'backward', entry: entry as CursorCacheEntry })).toBe(true);
10
+ });
8
11
  });
9
12
 
10
- test("when cursor is NOT first", () => {
13
+ describe('when cursor is NOT first', () => {
11
14
  const entry = { index: 1, page: 1 };
12
- expect(isCursorFirst({ direction: "backward", entry: entry as CursorCacheEntry })).toBe(false);
15
+
16
+ it('should return the correct value', () => {
17
+ expect(isCursorFirst({ direction: 'backward', entry: entry as CursorCacheEntry })).toBe(false);
18
+ });
13
19
  });
14
20
  });
@@ -1,8 +1,9 @@
1
- import { CursorCacheEntry, Direction } from "../defs";
1
+ import { type CursorCacheEntry, type Direction } from '../types.ts';
2
2
 
3
3
  export type Params = {
4
4
  direction: Direction;
5
5
  entry: CursorCacheEntry;
6
6
  };
7
7
 
8
- export default ({ direction, entry: { index, page } }: Params) => direction === "backward" && page === 1 && index === 0;
8
+ export const isCursorFirst = ({ direction, entry: { index, page } }: Params) =>
9
+ direction === 'backward' && page === 1 && index === 0;
@@ -1,32 +1,36 @@
1
- import { CursorCacheEntry } from "../defs";
2
- import isCursorLast from "./isCursorLast";
1
+ import { type CursorCacheEntry } from '../types.ts';
2
+ import { isCursorLast } from './isCursorLast.ts';
3
3
 
4
- describe("isCursorLast", () => {
5
- test("when cursor is last", () => {
4
+ describe('isCursorLast', () => {
5
+ describe('when cursor is last', () => {
6
6
  const entry = { index: 2, page: 6 };
7
7
 
8
- expect(
9
- isCursorLast({
10
- direction: "forward",
11
- entry: entry as CursorCacheEntry,
12
- resultsPerPage: 10,
13
- totalPages: 6,
14
- totalResults: 53,
15
- }),
16
- ).toBe(true);
8
+ it('should return the correct value', () => {
9
+ expect(
10
+ isCursorLast({
11
+ direction: 'forward',
12
+ entry: entry as CursorCacheEntry,
13
+ resultsPerPage: 10,
14
+ totalPages: 6,
15
+ totalResults: 53,
16
+ })
17
+ ).toBe(true);
18
+ });
17
19
  });
18
20
 
19
- test("when cursor is NOT last", () => {
21
+ describe('when cursor is NOT last', () => {
20
22
  const entry = { index: 0, page: 6 };
21
23
 
22
- expect(
23
- isCursorLast({
24
- direction: "forward",
25
- entry: entry as CursorCacheEntry,
26
- resultsPerPage: 10,
27
- totalPages: 6,
28
- totalResults: 53,
29
- }),
30
- ).toBe(false);
24
+ it('should return the correct value', () => {
25
+ expect(
26
+ isCursorLast({
27
+ direction: 'forward',
28
+ entry: entry as CursorCacheEntry,
29
+ resultsPerPage: 10,
30
+ totalPages: 6,
31
+ totalResults: 53,
32
+ })
33
+ ).toBe(false);
34
+ });
31
35
  });
32
36
  });
@@ -1,5 +1,5 @@
1
- import { CursorCacheEntry, Direction } from "../defs";
2
- import getIndexesOnLastPage from "./getIndexesOnLastPage";
1
+ import { type CursorCacheEntry, type Direction } from '../types.ts';
2
+ import { getIndexesOnLastPage } from './getIndexesOnLastPage.ts';
3
3
 
4
4
  export type Params = {
5
5
  direction: Direction;
@@ -9,5 +9,5 @@ export type Params = {
9
9
  totalResults: number;
10
10
  };
11
11
 
12
- export default ({ direction, entry: { index, page }, resultsPerPage, totalPages, totalResults }: Params) =>
13
- direction === "forward" && page === totalPages && index === getIndexesOnLastPage({ resultsPerPage, totalResults });
12
+ export const isCursorLast = ({ direction, entry: { index, page }, resultsPerPage, totalPages, totalResults }: Params) =>
13
+ direction === 'forward' && page === totalPages && index === getIndexesOnLastPage({ resultsPerPage, totalResults });
@@ -1,19 +1,27 @@
1
- import isCursorSupplied from "./isCursorSupplied";
1
+ import { isCursorSupplied } from './isCursorSupplied.ts';
2
2
 
3
- describe("isCursorSupplied", () => {
4
- test("when neither 'before' nor 'after' are passed in", () => {
5
- expect(isCursorSupplied({})).toBe(false);
3
+ describe('isCursorSupplied', () => {
4
+ describe("when neither 'before' nor 'after' are passed in", () => {
5
+ it('should return the correct value', () => {
6
+ expect(isCursorSupplied({})).toBe(false);
7
+ });
6
8
  });
7
9
 
8
- test("when 'before' is passed in", () => {
9
- expect(isCursorSupplied({ before: "12345" })).toBe(true);
10
+ describe("when 'before' is passed in", () => {
11
+ it('should return the correct value', () => {
12
+ expect(isCursorSupplied({ before: '12345' })).toBe(true);
13
+ });
10
14
  });
11
15
 
12
- test("when 'after' is passed in", () => {
13
- expect(isCursorSupplied({ after: "12345" })).toBe(true);
16
+ describe("when 'after' is passed in", () => {
17
+ it('should return the correct value', () => {
18
+ expect(isCursorSupplied({ after: '12345' })).toBe(true);
19
+ });
14
20
  });
15
21
 
16
- test("when 'before' and 'after' are passed in", () => {
17
- expect(isCursorSupplied({ after: "12345", before: "12345" })).toBe(true);
22
+ describe("when 'before' and 'after' are passed in", () => {
23
+ it('should return the correct value', () => {
24
+ expect(isCursorSupplied({ after: '12345', before: '12345' })).toBe(true);
25
+ });
18
26
  });
19
27
  });
@@ -1,3 +1,4 @@
1
- import { ConnectionInputOptions, PlainObject } from "../defs";
1
+ import type { PlainObject } from '@graphql-box/core';
2
+ import { type ConnectionInputOptions } from '../types.ts';
2
3
 
3
- export default ({ after, before }: PlainObject & ConnectionInputOptions) => !!(after || before);
4
+ export const isCursorSupplied = ({ after, before }: PlainObject & ConnectionInputOptions) => !!(after ?? before);
@@ -1,11 +1,15 @@
1
- import isFirstPage from "./isFirstPage";
1
+ import { isFirstPage } from './isFirstPage.ts';
2
2
 
3
- describe("isFirstPage", () => {
4
- test("when page is first page", () => {
5
- expect(isFirstPage(1)).toBe(true);
3
+ describe('isFirstPage', () => {
4
+ describe('when page is first page', () => {
5
+ it('should return the correct value', () => {
6
+ expect(isFirstPage(1)).toBe(true);
7
+ });
6
8
  });
7
9
 
8
- test("when page is NOT first page", () => {
9
- expect(isFirstPage(5)).toBe(false);
10
+ describe('when page is NOT first page', () => {
11
+ it('should return the correct value', () => {
12
+ expect(isFirstPage(5)).toBe(false);
13
+ });
10
14
  });
11
15
  });
@@ -1 +1 @@
1
- export default (page: number) => page === 1;
1
+ export const isFirstPage = (page: number) => page === 1;
@@ -1,11 +1,15 @@
1
- import isLastPage from "./isLastPage";
1
+ import { isLastPage } from './isLastPage.ts';
2
2
 
3
- describe("isLastPage", () => {
4
- test("when page is last page", () => {
5
- expect(isLastPage({ page: 5, totalPages: 5 })).toBe(true);
3
+ describe('isLastPage', () => {
4
+ describe('when page is last page', () => {
5
+ it('should return the correct value', () => {
6
+ expect(isLastPage({ page: 5, totalPages: 5 })).toBe(true);
7
+ });
6
8
  });
7
9
 
8
- test("when page is NOT last page", () => {
9
- expect(isLastPage({ page: 4, totalPages: 5 })).toBe(false);
10
+ describe('when page is NOT last page', () => {
11
+ it('should return the correct value', () => {
12
+ expect(isLastPage({ page: 4, totalPages: 5 })).toBe(false);
13
+ });
10
14
  });
11
15
  });
@@ -3,4 +3,4 @@ export type Params = {
3
3
  totalPages: number;
4
4
  };
5
5
 
6
- export default ({ page, totalPages }: Params) => page === totalPages;
6
+ export const isLastPage = ({ page, totalPages }: Params) => page === totalPages;
@@ -1,4 +1,4 @@
1
- import { Node } from "../defs";
1
+ import { type Node } from '../types.ts';
2
2
 
3
- export default (nodes: Node[], makeCursor: (node: Node) => string) =>
4
- nodes.map(node => ({ node, cursor: makeCursor(node) }));
3
+ export const makeEdges = (nodes: Node[], makeCursor: (node: Node) => string) =>
4
+ nodes.map(node => ({ cursor: makeCursor(node), node }));
@@ -1,14 +1,17 @@
1
- import { ConnectionInputOptions, CursorGroupMetadata } from "..";
2
- import getDirection from "./getDirection";
3
- import getIndexesOnLastPage from "./getIndexesOnLastPage";
1
+ import { type ConnectionInputOptions, type CursorGroupMetadata } from '../types.ts';
2
+ import { getDirection } from './getDirection.ts';
3
+ import { getIndexesOnLastPage } from './getIndexesOnLastPage.ts';
4
4
 
5
5
  export type Context = {
6
6
  metadata: CursorGroupMetadata;
7
7
  resultsPerPage: number;
8
8
  };
9
9
 
10
- export default (args: ConnectionInputOptions, { metadata: { totalPages, totalResults }, resultsPerPage }: Context) => {
11
- if (getDirection(args.last) === "backward") {
10
+ export const makeEntry = (
11
+ args: ConnectionInputOptions,
12
+ { metadata: { totalPages, totalResults }, resultsPerPage }: Context
13
+ ) => {
14
+ if (getDirection(args.last) === 'backward') {
12
15
  return { index: getIndexesOnLastPage({ resultsPerPage, totalResults }) + 1, page: totalPages };
13
16
  }
14
17
 
@@ -1,8 +1,8 @@
1
- import { CachedEdges } from "../defs";
1
+ import { type CachedEdges } from '../types.ts';
2
2
 
3
- export default (cachedEdges: CachedEdges[], missingCachedEdges: CachedEdges[]) =>
4
- cachedEdges.reduce((mergedCachedEdges, cachedEdge) => {
5
- if (!cachedEdge.edges.length) {
3
+ export const mergeCachedEdges = (cachedEdges: CachedEdges[], missingCachedEdges: CachedEdges[]) =>
4
+ cachedEdges.reduce<CachedEdges[]>((mergedCachedEdges, cachedEdge) => {
5
+ if (cachedEdge.edges.length === 0) {
6
6
  const missingCachedEdge = missingCachedEdges.find(missing => missing.pageNumber === cachedEdge.pageNumber);
7
7
 
8
8
  if (missingCachedEdge) {
@@ -11,4 +11,4 @@ export default (cachedEdges: CachedEdges[], missingCachedEdges: CachedEdges[]) =
11
11
  }
12
12
 
13
13
  return [...mergedCachedEdges, cachedEdge];
14
- }, [] as CachedEdges[]);
14
+ }, []);
@@ -1,17 +1,19 @@
1
- import removeConnectionInputOptions from "./removeConnectionInputOptions";
1
+ import { removeConnectionInputOptions } from './removeConnectionInputOptions.ts';
2
2
 
3
- describe("removeConnectionInputOptions", () => {
4
- test("when connection input options are passed in", () => {
3
+ describe('removeConnectionInputOptions', () => {
4
+ describe('when connection input options are passed in', () => {
5
5
  const args = {
6
- after: "abcdefg",
7
- alpha: "bravo",
8
- before: "higklmn",
6
+ after: 'abcdefg',
7
+ alpha: 'bravo',
8
+ before: 'higklmn',
9
9
  first: 10,
10
10
  last: 5,
11
11
  };
12
12
 
13
- expect(removeConnectionInputOptions(args)).toEqual({
14
- alpha: "bravo",
13
+ it('should return the correct value', () => {
14
+ expect(removeConnectionInputOptions(args)).toEqual({
15
+ alpha: 'bravo',
16
+ });
15
17
  });
16
18
  });
17
19
  });
@@ -1,5 +1,6 @@
1
- import { pickBy } from "lodash";
1
+ import { pickBy } from 'lodash-es';
2
2
 
3
- const connectionInputOptions = ["after", "before", "first", "last"];
3
+ const connectionInputOptions = new Set(['after', 'before', 'first', 'last']);
4
4
 
5
- export default <O extends object>(args: O) => pickBy(args, (_value, key) => !connectionInputOptions.includes(key));
5
+ export const removeConnectionInputOptions = <O extends object>(args: O) =>
6
+ pickBy(args, (_value, key) => !connectionInputOptions.has(key));
@@ -1,25 +1,30 @@
1
- import Cachemap from "@cachemap/core";
2
- import { Getters, Node, PlainObject, ResourceResolver } from "../defs";
3
- import cacheCursors from "./cacheCursors";
4
- import makeEdges from "./makeEdges";
1
+ import { type Core } from '@cachemap/core';
2
+ import type { PlainObject } from '@graphql-box/core';
3
+ import { type Getters, type Node, type ResourceResolver } from '../types.ts';
4
+ import { cacheCursors } from './cacheCursors.ts';
5
+ import { makeEdges } from './makeEdges.ts';
5
6
 
6
7
  export type Context<Resource extends PlainObject, ResourceNode extends Node> = {
7
- cursorCache: Cachemap;
8
+ cursorCache: Core;
8
9
  getters: Getters<Resource, ResourceNode>;
9
10
  groupCursor: string;
10
11
  makeIDCursor: (id: string | number) => string;
11
12
  resourceResolver: ResourceResolver<Resource>;
12
13
  };
13
14
 
14
- const requestAndCachePages = async <Resource extends PlainObject, ResourceNode extends Node>(
15
+ export const requestAndCachePages = async <Resource extends PlainObject, ResourceNode extends Node>(
15
16
  pages: number[],
16
- { cursorCache, getters, groupCursor, makeIDCursor, resourceResolver }: Context<Resource, ResourceNode>,
17
+ { cursorCache, getters, groupCursor, makeIDCursor, resourceResolver }: Context<Resource, ResourceNode>
17
18
  ) => {
18
19
  const errors: Error[] = [];
19
20
 
20
21
  const cachedEdges = await Promise.all(
21
22
  pages.map(async page => {
22
- const { data: pageResultData, errors: pageResultErrors, headers: pageResultHeaders } = await resourceResolver({
23
+ const {
24
+ data: pageResultData,
25
+ errors: pageResultErrors,
26
+ headers: pageResultHeaders,
27
+ } = await resourceResolver({
23
28
  page,
24
29
  });
25
30
 
@@ -43,10 +48,8 @@ const requestAndCachePages = async <Resource extends PlainObject, ResourceNode e
43
48
  }
44
49
 
45
50
  return { edges: [], pageNumber: page };
46
- }),
51
+ })
47
52
  );
48
53
 
49
54
  return { cachedEdges, errors };
50
55
  };
51
-
52
- export default requestAndCachePages;
@@ -1,6 +1,8 @@
1
+ import type { PlainArray } from '@graphql-box/core';
2
+
1
3
  export type RequestMissingPagesParams = {
2
4
  count: number;
3
- direction: "forward" | "backward";
5
+ direction: 'forward' | 'backward';
4
6
  page: number;
5
7
  results: number;
6
8
  resultsPerPage: number;
@@ -8,49 +10,46 @@ export type RequestMissingPagesParams = {
8
10
  totalResults: number;
9
11
  };
10
12
 
11
- export type RequestMissingPagesCallback = (params: { nextPage: number }) => Promise<any>;
13
+ export type RequestMissingPagesCallback = (params: { nextPage: number }) => Promise<unknown>;
12
14
 
13
- export default async (
15
+ export const requestOutstandingPages = async (
14
16
  { count, direction, page, results, resultsPerPage, totalPages, totalResults }: RequestMissingPagesParams,
15
- requestCallback: RequestMissingPagesCallback,
17
+ requestCallback: RequestMissingPagesCallback
16
18
  ) => {
17
19
  const resultsOnLastPage = totalResults % totalPages;
18
20
  const outstanding = count - results;
19
21
  let toRequest: number;
20
22
 
21
- if (direction === "forward") {
23
+ if (direction === 'forward') {
22
24
  toRequest = Math.ceil(outstanding / resultsPerPage);
23
25
  } else {
24
26
  if (page === totalPages) {
25
- if (count <= resultsOnLastPage) {
26
- toRequest = 1;
27
- } else {
28
- toRequest = Math.ceil(count - resultsOnLastPage / resultsPerPage) + 1;
29
- }
27
+ toRequest = count <= resultsOnLastPage ? 1 : Math.ceil(count - resultsOnLastPage / resultsPerPage) + 1;
30
28
  } else {
31
29
  toRequest = Math.ceil(outstanding / resultsPerPage);
32
30
  }
33
31
  }
34
32
 
35
- const promises = [];
33
+ const promises: Promise<unknown>[] = [];
36
34
 
37
- for (let i = 0; i < toRequest; i += 1) {
38
- promises.push(requestCallback({ nextPage: direction === "forward" ? page + i : page - i }));
35
+ for (let index = 0; index < toRequest; index += 1) {
36
+ promises.push(requestCallback({ nextPage: direction === 'forward' ? page + index : page - index }));
39
37
  }
40
38
 
41
39
  const missingPages: number[] = [];
40
+ const settledResults = await Promise.allSettled(promises);
42
41
 
43
- const pageResults = (await Promise.allSettled(promises)).reduce((pages, { status, ...rest }, i) => {
44
- if (status === "fulfilled") {
45
- pages.push((rest as { value: any }).value);
42
+ const pageResults = settledResults.reduce<PlainArray>((pages, result, index) => {
43
+ if (result.status === 'fulfilled') {
44
+ pages.push(result.value);
46
45
  }
47
46
 
48
- if (status === "rejected") {
49
- missingPages.push(direction === "forward" ? page + i : page - i);
47
+ if (result.status === 'rejected') {
48
+ missingPages.push(direction === 'forward' ? page + index : page - index);
50
49
  }
51
50
 
52
51
  return pages;
53
- }, [] as any[]);
52
+ }, []);
54
53
 
55
54
  return {
56
55
  missingPages,
@@ -1,15 +1,16 @@
1
- import Cachemap from "@cachemap/core";
2
- import { ConnectionInputOptions, Getters, Node, PlainObject, ResourceResolver } from "../defs";
3
- import extractEdges from "./extractEdges";
4
- import extractNodes from "./extractNodes";
5
- import getInRangeCachedEdges from "./getInRangeCachedEdges";
6
- import { getEndCursor, getStartCursor } from "./getStartAndEndCursors";
7
- import mergeCachedEdges from "./mergeCachedEdges";
8
- import requestAndCachePages from "./requestAndCachePages";
9
- import retrieveCachedConnection from "./retrieveCachedConnection";
1
+ import { type Core } from '@cachemap/core';
2
+ import type { PlainObject } from '@graphql-box/core';
3
+ import { type ConnectionInputOptions, type Getters, type Node, type ResourceResolver } from '../types.ts';
4
+ import { extractEdges } from './extractEdges.ts';
5
+ import { extractNodes } from './extractNodes.ts';
6
+ import { getInRangeCachedEdges } from './getInRangeCachedEdges.ts';
7
+ import { getEndCursor, getStartCursor } from './getStartAndEndCursors.ts';
8
+ import { mergeCachedEdges } from './mergeCachedEdges.ts';
9
+ import { requestAndCachePages } from './requestAndCachePages.ts';
10
+ import { retrieveCachedConnection } from './retrieveCachedConnection.ts';
10
11
 
11
12
  export type Context<Resource extends PlainObject, ResourceNode extends Node> = {
12
- cursorCache: Cachemap;
13
+ cursorCache: Core;
13
14
  getters: Getters<Resource, ResourceNode>;
14
15
  groupCursor: string;
15
16
  makeIDCursor: (id: string | number) => string;
@@ -17,31 +18,18 @@ export type Context<Resource extends PlainObject, ResourceNode extends Node> = {
17
18
  resultsPerPage: number;
18
19
  };
19
20
 
20
- const resolveConnection = async <Resource extends PlainObject, ResourceNode extends Node>(
21
+ export const resolveConnection = async <Resource extends PlainObject, ResourceNode extends Node>(
21
22
  args: PlainObject & ConnectionInputOptions,
22
- {
23
- cursorCache,
24
- getters,
25
- groupCursor,
26
- makeIDCursor,
27
- resourceResolver,
28
- resultsPerPage,
29
- }: Context<Resource, ResourceNode>,
23
+ { cursorCache, getters, groupCursor, makeIDCursor, resourceResolver, resultsPerPage }: Context<Resource, ResourceNode>
30
24
  ) => {
31
- const {
32
- cachedEdges,
33
- hasNextPage,
34
- hasPreviousPage,
35
- indexes,
36
- missingPages,
37
- totalResults,
38
- } = await retrieveCachedConnection(args, {
39
- cursorCache,
40
- groupCursor,
41
- resultsPerPage,
42
- });
25
+ const { cachedEdges, hasNextPage, hasPreviousPage, indexes, missingPages, totalResults } =
26
+ await retrieveCachedConnection(args, {
27
+ cursorCache,
28
+ groupCursor,
29
+ resultsPerPage,
30
+ });
43
31
 
44
- if (!missingPages.length) {
32
+ if (missingPages.length === 0) {
45
33
  const edges = extractEdges(cachedEdges);
46
34
 
47
35
  return {
@@ -87,5 +75,3 @@ const resolveConnection = async <Resource extends PlainObject, ResourceNode exte
87
75
  totalCount: totalResults,
88
76
  };
89
77
  };
90
-
91
- export default resolveConnection;