@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
package/package.json CHANGED
@@ -1,52 +1,70 @@
1
1
  {
2
2
  "name": "@graphql-box/connection-resolver",
3
- "version": "4.1.4",
4
- "description": "The GraphQL Box connection manager module.",
5
- "keywords": [
6
- "graphql-box",
7
- "graphql",
8
- "client",
9
- "server",
10
- "isomorphic"
11
- ],
3
+ "description": "The GraphQL Box connection resolver module.",
4
+ "version": "5.0.1",
5
+ "author": "Dylan Aubrey",
6
+ "license": "MIT",
12
7
  "homepage": "https://github.com/badbatch/graphql-box",
13
- "bugs": {
14
- "url": "https://github.com/badbatch/graphql-box/issues"
15
- },
16
8
  "repository": {
9
+ "directory": "packages/connection-resolver",
17
10
  "type": "git",
18
- "url": "https://github.com/badbatch/graphql-box",
19
- "directory": "packages/connection-resolver"
11
+ "url": "https://github.com/badbatch/graphql-box"
12
+ },
13
+ "bugs": "https://github.com/badbatch/graphql-box/issues",
14
+ "type": "module",
15
+ "main": "./dist/cjs/index.cjs",
16
+ "module": "./dist/esm/index.mjs",
17
+ "types": "./dist/types/cjs/index.d.cts",
18
+ "exports": {
19
+ ".": {
20
+ "types": {
21
+ "import": "./dist/types/esm/index.d.ts",
22
+ "require": "./dist/types/cjs/index.d.cts"
23
+ },
24
+ "import": "./dist/esm/index.mjs",
25
+ "require": "./dist/cjs/index.cjs"
26
+ }
20
27
  },
21
28
  "publishConfig": {
22
29
  "access": "public"
23
30
  },
24
- "license": "MIT",
25
- "author": "Dylan Aubrey <dylanaubrey@gmail.com>",
26
- "main": "lib/main/index.js",
27
- "module": "lib/module/index.mjs",
28
- "browser": "lib/browser/index.js",
29
- "types": "lib/types/index.d.ts",
30
- "scripts": {
31
- "compile": "concurrently npm:compile:*",
32
- "compile-watch": "concurrently npm:compile-watch:*",
33
- "compile-watch:main": "yarn run compile:main --watch",
34
- "compile-watch:types": "yarn run compile:types --watch",
35
- "compile:browser": "cross-env BABEL_ENV=browser rollup -c ../../rollup.config.js",
36
- "compile:main": "cross-env BABEL_ENV=main babel ./src --out-dir ./lib/main --extensions \".ts\" --source-maps --config-file ../../babel.config.js",
37
- "compile:module": "cross-env BABEL_ENV=module babel ./src --out-dir ./lib/module --extensions \".ts\" --out-file-extension \".mjs\" --source-maps --config-file ../../babel.config.js",
38
- "compile:types": "tsc --build",
39
- "docs": "typedoc --includes ./src/main --out ./docs --options ../../typedoc.js"
40
- },
41
31
  "dependencies": {
42
- "js-base64": "3.6.0",
43
- "type-fest": "^1.1.1"
32
+ "@cachemap/core": "^5.0.8",
33
+ "js-base64": "^3.7.5",
34
+ "type-fest": "^4.5.0",
35
+ "@graphql-box/core": "5.0.1"
44
36
  },
45
37
  "peerDependencies": {
46
- "@babel/runtime": "< 8",
47
- "@graphql-box/core": "< 5",
48
- "core-js": "< 4",
49
- "graphql": "< 17",
50
- "lodash": "< 5"
38
+ "@babel/runtime": "<8",
39
+ "core-js": "<4",
40
+ "graphql": "<17",
41
+ "lodash-es": "<5"
42
+ },
43
+ "devDependencies": {
44
+ "@babel/runtime": "^7.20.13",
45
+ "@cachemap/map": "^5.0.6",
46
+ "@jest/globals": "^29.3.1",
47
+ "@types/lodash-es": "^4.14.191",
48
+ "core-js": "^3.27.2",
49
+ "cts-types": "^0.0.6",
50
+ "del-cli": "^5.1.0",
51
+ "graphql": "^16.8.1",
52
+ "lodash-es": "^4.17.21"
53
+ },
54
+ "keywords": [
55
+ "client",
56
+ "graphql",
57
+ "graphql-box",
58
+ "isomorphic",
59
+ "server"
60
+ ],
61
+ "scripts": {
62
+ "build": "pnpm run clean:dist && pnpm run compile",
63
+ "clean:deps": "del-cli ./node_modules",
64
+ "clean:dist": "del-cli ./dist",
65
+ "compile": "pnpm run /^compile:.*/",
66
+ "compile:cjs": "MODULE_SYSTEM=cjs rollup -c ../../rollup.config.cjs",
67
+ "compile:esm": "rollup -c ../../rollup.config.cjs",
68
+ "compile:types": "tsc --project ./tsconfig.build.json && cts-types build dist/types/esm dist/types/cjs"
51
69
  }
52
70
  }
@@ -1,8 +1,8 @@
1
- import Cachemap from "@cachemap/core";
2
- import map from "@cachemap/map";
3
- import { encode } from "js-base64";
4
- import cacheCursors from "../helpers/cacheCursors";
5
- import generatePages from "./generatePages";
1
+ import { Core } from '@cachemap/core';
2
+ import { init as map } from '@cachemap/map';
3
+ import { encode } from 'js-base64';
4
+ import { cacheCursors } from '../helpers/cacheCursors.ts';
5
+ import { generatePages } from './generatePages.ts';
6
6
 
7
7
  export type Params = {
8
8
  group: string;
@@ -12,16 +12,22 @@ export type Params = {
12
12
  totalResults: number;
13
13
  };
14
14
 
15
- export default async ({ group, pageRanges = [], resultsPerPage, totalPages, totalResults }: Params) => {
16
- const cursorCache = new Cachemap({
17
- name: "cursorCache",
15
+ export const generateCursorCache = async ({
16
+ group,
17
+ pageRanges = [],
18
+ resultsPerPage,
19
+ totalPages,
20
+ totalResults,
21
+ }: Params) => {
22
+ const cursorCache = new Core({
23
+ name: 'cursorCache',
18
24
  store: map(),
19
- type: "someType",
25
+ type: 'someType',
20
26
  });
21
27
 
22
- const headers = new Headers({ "Cache-Control": "max-age=60" });
28
+ const headers = new Headers({ 'Cache-Control': 'max-age=60' });
23
29
 
24
- if (pageRanges.length && resultsPerPage) {
30
+ if (pageRanges.length > 0 && resultsPerPage) {
25
31
  const pages = generatePages(pageRanges);
26
32
 
27
33
  await Promise.all(
@@ -36,19 +42,19 @@ export default async ({ group, pageRanges = [], resultsPerPage, totalPages, tota
36
42
  resultsOnCurrentPage = resultsPerPage;
37
43
  }
38
44
 
39
- const edges = Array.from({ length: resultsOnCurrentPage }, (_v, i) => i).map(index => {
45
+ const edges = Array.from({ length: resultsOnCurrentPage }, (_v, index) => index).map(index => {
40
46
  const id = encode(`${index}::${page}`);
41
47
  return { cursor: `${id}::${group}`, node: { id } };
42
48
  });
43
49
 
44
50
  await cacheCursors(cursorCache, { edges, group, headers, page, totalPages, totalResults });
45
- }),
51
+ })
46
52
  );
47
53
  } else {
48
54
  await cursorCache.set(
49
55
  `${group}-metadata`,
50
56
  { totalPages, totalResults },
51
- { cacheHeaders: { cacheControl: headers.get("cache-control") ?? undefined } },
57
+ { cacheHeaders: { cacheControl: headers.get('cache-control') ?? undefined } }
52
58
  );
53
59
  }
54
60
 
@@ -1,4 +1,6 @@
1
- import { encode } from "js-base64";
1
+ import type { PlainObject } from '@graphql-box/core';
2
+ import { encode } from 'js-base64';
3
+ import type { ResourceResponse } from '../types.ts';
2
4
 
3
5
  export type Params = {
4
6
  resultsPerPage: number;
@@ -6,14 +8,17 @@ export type Params = {
6
8
  totalResults: number;
7
9
  };
8
10
 
9
- export default ({ resultsPerPage, totalPages, totalResults }: Params) => (page: number) => ({
10
- data: {
11
- page,
12
- results: Array.from({ length: resultsPerPage }, (_v, i) => i).map(index => {
13
- return { id: encode(`${index}::${page}`) };
14
- }),
15
- totalPages,
16
- totalResults,
17
- },
18
- headers: new Headers({ "Cache-Control": "max-age=60" }),
19
- });
11
+ export const generatePageResponse =
12
+ ({ resultsPerPage, totalPages, totalResults }: Params) =>
13
+ (page: number) =>
14
+ Promise.resolve({
15
+ data: {
16
+ page,
17
+ results: Array.from({ length: resultsPerPage }, (_v, index) => index).map(index => {
18
+ return { id: encode(`${index}::${page}`) };
19
+ }),
20
+ totalPages,
21
+ totalResults,
22
+ },
23
+ headers: new Headers({ 'Cache-Control': 'max-age=60' }),
24
+ }) as unknown as Promise<ResourceResponse<PlainObject>>;
@@ -1,12 +1,12 @@
1
- import { range } from "lodash";
1
+ import { range } from 'lodash-es';
2
2
 
3
- export default (pageRanges: string[]) =>
4
- pageRanges.reduce((pages, pageRange) => {
5
- const [start, end] = pageRange.split("-");
3
+ export const generatePages = (pageRanges: string[]) =>
4
+ pageRanges.reduce<number[]>((pages, pageRange) => {
5
+ const [start, end] = pageRange.split('-');
6
6
 
7
7
  if (!end) {
8
8
  return [...pages, Number(start)];
9
9
  }
10
10
 
11
11
  return [...pages, ...range(Number(start), Number(end)), Number(end)];
12
- }, [] as number[]);
12
+ }, []);
@@ -1,5 +1,5 @@
1
- import Cachemap from "@cachemap/core";
2
- import { Edge } from "../defs";
1
+ import { type Core } from '@cachemap/core';
2
+ import { type Edge } from '../types.ts';
3
3
 
4
4
  export type Params = {
5
5
  edges: Edge[];
@@ -10,13 +10,16 @@ export type Params = {
10
10
  totalResults: number;
11
11
  };
12
12
 
13
- export default async (cursorCache: Cachemap, { edges, group, headers, page, totalPages, totalResults }: Params) => {
14
- const cacheControl = headers.get("cache-control");
15
- const opts = cacheControl ? { cacheHeaders: { cacheControl } } : undefined;
13
+ export const cacheCursors = async (
14
+ cursorCache: Core,
15
+ { edges, group, headers, page, totalPages, totalResults }: Params
16
+ ) => {
17
+ const cacheControl = headers.get('cache-control');
18
+ const options = cacheControl ? { cacheHeaders: { cacheControl } } : undefined;
16
19
 
17
20
  await Promise.all(
18
- edges.map(async ({ cursor, node }, index) => cursorCache.set(cursor, { node, index, group, page }, opts)),
21
+ edges.map(async ({ cursor, node }, index) => cursorCache.set(cursor, { group, index, node, page }, options))
19
22
  );
20
23
 
21
- await cursorCache.set(`${group}-metadata`, { totalPages, totalResults }, opts);
24
+ await cursorCache.set(`${group}-metadata`, { totalPages, totalResults }, options);
22
25
  };
@@ -1,4 +1,4 @@
1
- import { CachedEdges, Edge } from "../defs";
1
+ import { type CachedEdges, type Edge } from '../types.ts';
2
2
 
3
- export default (cachedEdges: CachedEdges[]) =>
4
- cachedEdges.reduce((edges, cachedEdge) => [...edges, ...cachedEdge.edges], [] as Edge[]);
3
+ export const extractEdges = (cachedEdges: CachedEdges[]) =>
4
+ cachedEdges.reduce<Edge[]>((edges, cachedEdge) => [...edges, ...cachedEdge.edges], []);
@@ -1,3 +1,3 @@
1
- import { Edge } from "../defs";
1
+ import { type Edge } from '../types.ts';
2
2
 
3
- export default (edges: Edge[]) => edges.map(edge => edge.node);
3
+ export const extractNodes = (edges: Edge[]) => edges.map(edge => edge.node);
@@ -1,11 +1,15 @@
1
- import getCount from "./getCount";
1
+ import { getCount } from './getCount.ts';
2
2
 
3
- describe("getCount", () => {
4
- test("when `first` is provided", () => {
5
- expect(getCount({ first: 5 })).toBe(5);
3
+ describe('getCount', () => {
4
+ describe('when `first` is provided', () => {
5
+ it('should return the correct value', () => {
6
+ expect(getCount({ first: 5 })).toBe(5);
7
+ });
6
8
  });
7
9
 
8
- test("when `last` is provided", () => {
9
- expect(getCount({ last: 5 })).toBe(5);
10
+ describe('when `last` is provided', () => {
11
+ it('should return the correct value', () => {
12
+ expect(getCount({ last: 5 })).toBe(5);
13
+ });
10
14
  });
11
15
  });
@@ -1,3 +1,3 @@
1
- import { ConnectionInputOptions } from "../defs";
1
+ import { type ConnectionInputOptions } from '../types.ts';
2
2
 
3
- export default ({ first, last }: ConnectionInputOptions) => (first || last) as number;
3
+ export const getCount = ({ first, last }: ConnectionInputOptions) => first ?? last!;
@@ -1,4 +1,4 @@
1
- import { Indexes } from "../defs";
1
+ import { type Indexes } from '../types.ts';
2
2
 
3
3
  export type StartIndexContext = {
4
4
  pageIndex: number;
@@ -1,11 +1,15 @@
1
- import getCursor from "./getCursor";
1
+ import { getCursor } from './getCursor.ts';
2
2
 
3
- describe("getCursor", () => {
4
- test("when `before` is provided", () => {
5
- expect(getCursor({ before: "abcdefg" })).toBe("abcdefg");
3
+ describe('getCursor', () => {
4
+ describe('when `before` is provided', () => {
5
+ it('should return the correct value', () => {
6
+ expect(getCursor({ before: 'abcdefg' })).toBe('abcdefg');
7
+ });
6
8
  });
7
9
 
8
- test("when `after` is provided", () => {
9
- expect(getCursor({ after: "abcdefg" })).toBe("abcdefg");
10
+ describe('when `after` is provided', () => {
11
+ it('should return the correct value', () => {
12
+ expect(getCursor({ after: 'abcdefg' })).toBe('abcdefg');
13
+ });
10
14
  });
11
15
  });
@@ -1,3 +1,3 @@
1
- import { ConnectionInputOptions } from "../defs";
1
+ import { type ConnectionInputOptions } from '../types.ts';
2
2
 
3
- export default ({ after, before }: ConnectionInputOptions) => before || after;
3
+ export const getCursor = ({ after, before }: ConnectionInputOptions) => before ?? after;
@@ -1,11 +1,15 @@
1
- import getDirection from "./getDirection";
1
+ import { getDirection } from './getDirection.ts';
2
2
 
3
- describe("getDirection", () => {
4
- test("when last is provided", () => {
5
- expect(getDirection(5)).toBe("backward");
3
+ describe('getDirection', () => {
4
+ describe('when last is provided', () => {
5
+ it('should return "backward"', () => {
6
+ expect(getDirection(5)).toBe('backward');
7
+ });
6
8
  });
7
9
 
8
- test("when last is NOT provided", () => {
9
- expect(getDirection(undefined)).toBe("forward");
10
+ describe('when last is NOT provided', () => {
11
+ it('should return "forward"', () => {
12
+ expect(getDirection()).toBe('forward');
13
+ });
10
14
  });
11
15
  });
@@ -1 +1,3 @@
1
- export default (last: number | undefined) => (last ? "backward" : "forward");
1
+ import type { Direction } from '../types.ts';
2
+
3
+ export const getDirection = (last?: number): Direction => (last ? 'backward' : 'forward');
@@ -1,5 +1,5 @@
1
- import { CachedEdges, Indexes } from "../defs";
2
- import { getCurrentPageEndIndex, getCurrentPageStartIndex } from "./getCurrentPageStartAndEndIndexes";
1
+ import { type CachedEdges, type Indexes } from '../types.ts';
2
+ import { getCurrentPageEndIndex, getCurrentPageStartIndex } from './getCurrentPageStartAndEndIndexes.ts';
3
3
 
4
4
  export type Context = {
5
5
  endIndex: Indexes;
@@ -7,13 +7,16 @@ export type Context = {
7
7
  startIndex: Indexes;
8
8
  };
9
9
 
10
- export default (cachedEdgesByPage: CachedEdges[], { endIndex, resultsPerPage, startIndex }: Context) => {
11
- return cachedEdgesByPage.reduce((inRange, cachedEdgesPage, i) => {
12
- const currentPageStartIndex = getCurrentPageStartIndex({ startIndex, pageIndex: i });
10
+ export const getInRangeCachedEdges = (
11
+ cachedEdgesByPage: CachedEdges[],
12
+ { endIndex, resultsPerPage, startIndex }: Context
13
+ ) => {
14
+ return cachedEdgesByPage.reduce<CachedEdges[]>((inRange, cachedEdgesPage, index) => {
15
+ const currentPageStartIndex = getCurrentPageStartIndex({ pageIndex: index, startIndex });
13
16
 
14
17
  const currentPageEndIndex = getCurrentPageEndIndex({
15
18
  endIndex,
16
- pageIndex: i,
19
+ pageIndex: index,
17
20
  resultsPerPage,
18
21
  totalCachedPages: cachedEdgesByPage.length,
19
22
  });
@@ -21,5 +24,5 @@ export default (cachedEdgesByPage: CachedEdges[], { endIndex, resultsPerPage, st
21
24
  const cachedEdges = cachedEdgesPage.edges.slice(currentPageStartIndex, currentPageEndIndex + 1);
22
25
  inRange.push({ edges: cachedEdges, pageNumber: cachedEdgesPage.pageNumber });
23
26
  return inRange;
24
- }, [] as CachedEdges[]);
27
+ }, []);
25
28
  };
@@ -1,15 +1,19 @@
1
- import getIndexesOnCurrentPage from "./getIndexesOnCurrentPage";
1
+ import { getIndexesOnCurrentPage } from './getIndexesOnCurrentPage.ts';
2
2
 
3
- describe("getIndexesOnCurrentPage", () => {
4
- test("when current page is last page", () => {
5
- expect(
6
- getIndexesOnCurrentPage({ metadata: { totalPages: 6, totalResults: 53 }, page: 6, resultsPerPage: 10 }),
7
- ).toBe(2);
3
+ describe('getIndexesOnCurrentPage', () => {
4
+ describe('when current page is last page', () => {
5
+ it('should return the correct value', () => {
6
+ expect(
7
+ getIndexesOnCurrentPage({ metadata: { totalPages: 6, totalResults: 53 }, page: 6, resultsPerPage: 10 })
8
+ ).toBe(2);
9
+ });
8
10
  });
9
11
 
10
- test("when current page is NOT last page", () => {
11
- expect(
12
- getIndexesOnCurrentPage({ metadata: { totalPages: 6, totalResults: 53 }, page: 5, resultsPerPage: 10 }),
13
- ).toBe(9);
12
+ describe('when current page is NOT last page', () => {
13
+ it('should return the correct value', () => {
14
+ expect(
15
+ getIndexesOnCurrentPage({ metadata: { totalPages: 6, totalResults: 53 }, page: 5, resultsPerPage: 10 })
16
+ ).toBe(9);
17
+ });
14
18
  });
15
19
  });
@@ -1,14 +1,19 @@
1
- import { Context } from "../defs";
2
- import getResultsOnLastPage from "./getResultsOnLastPage";
3
- import isLastPage from "./isLastPage";
1
+ import type { CursorGroupMetadata } from '../types.ts';
2
+ import { getResultsOnLastPage } from './getResultsOnLastPage.ts';
3
+ import { isLastPage } from './isLastPage.ts';
4
4
 
5
5
  export type IndexesOnCurrentPageContext = {
6
6
  page: number;
7
7
  };
8
8
 
9
- export default ({
10
- page,
9
+ export type Context = {
10
+ metadata: CursorGroupMetadata;
11
+ resultsPerPage: number;
12
+ };
13
+
14
+ export const getIndexesOnCurrentPage = ({
11
15
  metadata: { totalPages, totalResults },
16
+ page,
12
17
  resultsPerPage,
13
- }: IndexesOnCurrentPageContext & Omit<Context, "entry">) =>
18
+ }: IndexesOnCurrentPageContext & Context) =>
14
19
  (isLastPage({ page, totalPages }) ? getResultsOnLastPage({ resultsPerPage, totalResults }) : resultsPerPage) - 1;
@@ -1,11 +1,15 @@
1
- import getIndexesOnLastPage from "./getIndexesOnLastPage";
1
+ import { getIndexesOnLastPage } from './getIndexesOnLastPage.ts';
2
2
 
3
- describe("getIndexesOnLastPage", () => {
4
- test("when results on last page equal results per page", () => {
5
- expect(getIndexesOnLastPage({ resultsPerPage: 10, totalResults: 50 })).toBe(9);
3
+ describe('getIndexesOnLastPage', () => {
4
+ describe('when results on last page equal results per page', () => {
5
+ it('should return the correct value', () => {
6
+ expect(getIndexesOnLastPage({ resultsPerPage: 10, totalResults: 50 })).toBe(9);
7
+ });
6
8
  });
7
9
 
8
- test("when results on last page do NOT equal results per page", () => {
9
- expect(getIndexesOnLastPage({ resultsPerPage: 10, totalResults: 53 })).toBe(2);
10
+ describe('when results on last page do NOT equal results per page', () => {
11
+ it('should return the correct value', () => {
12
+ expect(getIndexesOnLastPage({ resultsPerPage: 10, totalResults: 53 })).toBe(2);
13
+ });
10
14
  });
11
15
  });
@@ -1,3 +1,4 @@
1
- import getResultsOnLastPage, { Params } from "./getResultsOnLastPage";
1
+ import { type Params, getResultsOnLastPage } from './getResultsOnLastPage.ts';
2
2
 
3
- export default ({ resultsPerPage, totalResults }: Params) => getResultsOnLastPage({ resultsPerPage, totalResults }) - 1;
3
+ export const getIndexesOnLastPage = ({ resultsPerPage, totalResults }: Params) =>
4
+ getResultsOnLastPage({ resultsPerPage, totalResults }) - 1;
@@ -1,17 +1,17 @@
1
- import getPageNumbersToRequest from "./getPageNumbersToRequest";
1
+ import { getPageNumbersToRequest } from './getPageNumbersToRequest.ts';
2
2
 
3
- describe("getPageNumbersToRequest", () => {
4
- test("when direction is forward", () => {
3
+ describe('getPageNumbersToRequest', () => {
4
+ describe('when direction is forward', () => {
5
5
  const args = {
6
- after: "abcdefg",
6
+ after: 'abcdefg',
7
7
  };
8
8
 
9
9
  const ctx = {
10
10
  endIndex: { absolute: 22, relative: 5 },
11
11
  entry: {
12
- group: "group",
12
+ group: 'group',
13
13
  index: 2,
14
- node: { id: "123" },
14
+ node: { id: '123' },
15
15
  page: 2,
16
16
  },
17
17
  metadata: {
@@ -22,10 +22,12 @@ describe("getPageNumbersToRequest", () => {
22
22
  startIndex: { absolute: 3, relative: 3 },
23
23
  };
24
24
 
25
- expect(getPageNumbersToRequest(args, ctx)).toEqual([2, 3, 4]);
25
+ it('should return the correct value', () => {
26
+ expect(getPageNumbersToRequest(args, ctx)).toEqual([2, 3, 4]);
27
+ });
26
28
  });
27
29
 
28
- test("when direction is backward", () => {
30
+ describe('when direction is backward', () => {
29
31
  const args = {
30
32
  last: 5,
31
33
  };
@@ -33,9 +35,9 @@ describe("getPageNumbersToRequest", () => {
33
35
  const ctx = {
34
36
  endIndex: { absolute: 4, relative: 4 },
35
37
  entry: {
36
- group: "group",
38
+ group: 'group',
37
39
  index: 3,
38
- node: { id: "123" },
40
+ node: { id: '123' },
39
41
  page: 4,
40
42
  },
41
43
  metadata: {
@@ -47,6 +49,8 @@ describe("getPageNumbersToRequest", () => {
47
49
  startIndex: { absolute: -5, relative: 6 },
48
50
  };
49
51
 
50
- expect(getPageNumbersToRequest(args, ctx)).toEqual([3, 4]);
52
+ it('should return the correct value', () => {
53
+ expect(getPageNumbersToRequest(args, ctx)).toEqual([3, 4]);
54
+ });
51
55
  });
52
56
  });
@@ -1,17 +1,28 @@
1
- import { range } from "lodash";
2
- import { ConnectionInputOptions, Context, Indexes } from "../defs";
3
- import { getEndPageNumber, getStartPageNumber } from "./getStartAndEndPageNumbers";
1
+ import { range } from 'lodash-es';
2
+ import {
3
+ type ConnectionInputOptions,
4
+ type CursorGroupMetadata,
5
+ type Indexes,
6
+ type PartialCursorCacheEntry,
7
+ } from '../types.ts';
8
+ import { getEndPageNumber, getStartPageNumber } from './getStartAndEndPageNumbers.ts';
4
9
 
5
10
  export type GetPageNumbersToRequestContext = {
6
11
  endIndex: Indexes;
7
12
  startIndex: Indexes;
8
13
  };
9
14
 
10
- export default (
15
+ export type Context = {
16
+ entry: PartialCursorCacheEntry;
17
+ metadata: CursorGroupMetadata;
18
+ resultsPerPage: number;
19
+ };
20
+
21
+ export const getPageNumbersToRequest = (
11
22
  args: ConnectionInputOptions,
12
- { endIndex, entry: { page }, metadata, resultsPerPage, startIndex }: GetPageNumbersToRequestContext & Context,
23
+ { endIndex, entry: { page }, metadata, resultsPerPage, startIndex }: GetPageNumbersToRequestContext & Context
13
24
  ) => {
14
- const startPageNumber = getStartPageNumber(args, { page, startIndex, resultsPerPage });
25
+ const startPageNumber = getStartPageNumber(args, { page, resultsPerPage, startIndex });
15
26
  const endPageNumber = getEndPageNumber(args, { endIndex, metadata, page, resultsPerPage });
16
27
 
17
28
  if (startPageNumber === endPageNumber) {
@@ -1,11 +1,11 @@
1
- import { CachedEdges } from "../defs";
1
+ import { type CachedEdges } from '../types.ts';
2
2
 
3
- export default (cachedEdgesByPage: CachedEdges[]) => {
4
- return cachedEdgesByPage.reduce((missing, cachedEdgesPage) => {
5
- if (!cachedEdgesPage.edges.length) {
3
+ export const getPagesMissingFromCache = (cachedEdgesByPage: CachedEdges[]) => {
4
+ return cachedEdgesByPage.reduce<number[]>((missing, cachedEdgesPage) => {
5
+ if (cachedEdgesPage.edges.length === 0) {
6
6
  missing.push(cachedEdgesPage.pageNumber);
7
7
  }
8
8
 
9
9
  return missing;
10
- }, [] as number[]);
10
+ }, []);
11
11
  };
@@ -1,11 +1,15 @@
1
- import getResultsOnLastPage from "./getResultsOnLastPage";
1
+ import { getResultsOnLastPage } from './getResultsOnLastPage.ts';
2
2
 
3
- describe("getResultsOnLastPage", () => {
4
- test("when results on last page equal results per page", () => {
5
- expect(getResultsOnLastPage({ resultsPerPage: 10, totalResults: 50 })).toBe(10);
3
+ describe('getResultsOnLastPage', () => {
4
+ describe('when results on last page equal results per page', () => {
5
+ it('should return the correct value', () => {
6
+ expect(getResultsOnLastPage({ resultsPerPage: 10, totalResults: 50 })).toBe(10);
7
+ });
6
8
  });
7
9
 
8
- test("when results on last page do NOT equal results per page", () => {
9
- expect(getResultsOnLastPage({ resultsPerPage: 10, totalResults: 53 })).toBe(3);
10
+ describe('when results on last page do NOT equal results per page', () => {
11
+ it('should return the correct value', () => {
12
+ expect(getResultsOnLastPage({ resultsPerPage: 10, totalResults: 53 })).toBe(3);
13
+ });
10
14
  });
11
15
  });