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