@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.
- 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 +56 -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.mjs +0 -71
- package/lib/module/__testUtils__/generateCursorCache.mjs.map +0 -1
- package/lib/module/__testUtils__/generatePageResponse.mjs +0 -23
- package/lib/module/__testUtils__/generatePageResponse.mjs.map +0 -1
- package/lib/module/__testUtils__/generatePages.mjs +0 -11
- package/lib/module/__testUtils__/generatePages.mjs.map +0 -1
- package/lib/module/defs/index.mjs +0 -2
- package/lib/module/defs/index.mjs.map +0 -1
- package/lib/module/helpers/cacheCursors.mjs +0 -30
- package/lib/module/helpers/cacheCursors.mjs.map +0 -1
- package/lib/module/helpers/extractEdges.mjs +0 -2
- package/lib/module/helpers/extractEdges.mjs.map +0 -1
- package/lib/module/helpers/extractNodes.mjs +0 -2
- package/lib/module/helpers/extractNodes.mjs.map +0 -1
- package/lib/module/helpers/getCount.mjs +0 -5
- package/lib/module/helpers/getCount.mjs.map +0 -1
- package/lib/module/helpers/getCurrentPageStartAndEndIndexes.mjs +0 -11
- package/lib/module/helpers/getCurrentPageStartAndEndIndexes.mjs.map +0 -1
- package/lib/module/helpers/getCursor.mjs +0 -5
- package/lib/module/helpers/getCursor.mjs.map +0 -1
- package/lib/module/helpers/getDirection.mjs +0 -2
- package/lib/module/helpers/getDirection.mjs.map +0 -1
- package/lib/module/helpers/getInRangeCachedEdges.mjs +0 -26
- package/lib/module/helpers/getInRangeCachedEdges.mjs.map +0 -1
- package/lib/module/helpers/getIndexesOnCurrentPage.mjs +0 -17
- package/lib/module/helpers/getIndexesOnCurrentPage.mjs.map +0 -1
- package/lib/module/helpers/getIndexesOnLastPage.mjs +0 -9
- package/lib/module/helpers/getIndexesOnLastPage.mjs.map +0 -1
- package/lib/module/helpers/getPageNumbersToRequest.mjs +0 -30
- package/lib/module/helpers/getPageNumbersToRequest.mjs.map +0 -1
- package/lib/module/helpers/getPagesMissingFromCache.mjs +0 -10
- package/lib/module/helpers/getPagesMissingFromCache.mjs.map +0 -1
- package/lib/module/helpers/getResultsOnLastPage.mjs +0 -8
- package/lib/module/helpers/getResultsOnLastPage.mjs.map +0 -1
- package/lib/module/helpers/getStartAndEndCursors.mjs +0 -10
- package/lib/module/helpers/getStartAndEndCursors.mjs.map +0 -1
- package/lib/module/helpers/getStartAndEndIndexes.mjs +0 -86
- package/lib/module/helpers/getStartAndEndIndexes.mjs.map +0 -1
- package/lib/module/helpers/getStartAndEndPageNumbers.mjs +0 -35
- package/lib/module/helpers/getStartAndEndPageNumbers.mjs.map +0 -1
- package/lib/module/helpers/hasPreviousNextPage.mjs +0 -18
- package/lib/module/helpers/hasPreviousNextPage.mjs.map +0 -1
- package/lib/module/helpers/isCursorFirst.mjs +0 -8
- package/lib/module/helpers/isCursorFirst.mjs.map +0 -1
- package/lib/module/helpers/isCursorLast.mjs +0 -15
- package/lib/module/helpers/isCursorLast.mjs.map +0 -1
- package/lib/module/helpers/isCursorSupplied.mjs +0 -5
- package/lib/module/helpers/isCursorSupplied.mjs.map +0 -1
- package/lib/module/helpers/isFirstPage.mjs +0 -2
- package/lib/module/helpers/isFirstPage.mjs.map +0 -1
- package/lib/module/helpers/isLastPage.mjs +0 -5
- package/lib/module/helpers/isLastPage.mjs.map +0 -1
- package/lib/module/helpers/makeEdges.mjs +0 -5
- package/lib/module/helpers/makeEdges.mjs.map +0 -1
- package/lib/module/helpers/makeEntry.mjs +0 -25
- package/lib/module/helpers/makeEntry.mjs.map +0 -1
- package/lib/module/helpers/mergeCachedEdges.mjs +0 -12
- package/lib/module/helpers/mergeCachedEdges.mjs.map +0 -1
- package/lib/module/helpers/removeConnectionInputOptions.mjs +0 -4
- package/lib/module/helpers/removeConnectionInputOptions.mjs.map +0 -1
- package/lib/module/helpers/requestAndCachePages.mjs +0 -54
- package/lib/module/helpers/requestAndCachePages.mjs.map +0 -1
- package/lib/module/helpers/requestOutstandingPages.mjs +0 -57
- package/lib/module/helpers/requestOutstandingPages.mjs.map +0 -1
- package/lib/module/helpers/resolveConnection.mjs +0 -78
- package/lib/module/helpers/resolveConnection.mjs.map +0 -1
- package/lib/module/helpers/retrieveCachedConnection.mjs +0 -70
- package/lib/module/helpers/retrieveCachedConnection.mjs.map +0 -1
- package/lib/module/helpers/retrieveCachedEdgesByPage.mjs +0 -35
- package/lib/module/helpers/retrieveCachedEdgesByPage.mjs.map +0 -1
- package/lib/module/helpers/validateCursor.mjs +0 -71
- package/lib/module/helpers/validateCursor.mjs.map +0 -1
- package/lib/module/index.mjs +0 -4
- package/lib/module/index.mjs.map +0 -1
- package/lib/module/main/index.mjs +0 -83
- package/lib/module/main/index.mjs.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
@@ -3,7 +3,7 @@ export type Params = {
|
|
3
3
|
totalResults: number;
|
4
4
|
};
|
5
5
|
|
6
|
-
export
|
6
|
+
export const getResultsOnLastPage = ({ resultsPerPage, totalResults }: Params) => {
|
7
7
|
const remainder = totalResults % resultsPerPage;
|
8
8
|
return remainder === 0 ? resultsPerPage : remainder;
|
9
9
|
};
|
@@ -1,17 +1,17 @@
|
|
1
|
-
import { getEndIndex, getStartIndex } from
|
1
|
+
import { getEndIndex, getStartIndex } from './getStartAndEndIndexes.ts';
|
2
2
|
|
3
|
-
describe(
|
4
|
-
|
3
|
+
describe('getStartIndex', () => {
|
4
|
+
describe('when the direction is forward', () => {
|
5
5
|
const args = {
|
6
|
-
after:
|
6
|
+
after: 'abcdefg',
|
7
7
|
first: 5,
|
8
8
|
};
|
9
9
|
|
10
10
|
const ctx = {
|
11
11
|
entry: {
|
12
|
-
group:
|
12
|
+
group: 'qwerty',
|
13
13
|
index: 5,
|
14
|
-
node: { id:
|
14
|
+
node: { id: '123' },
|
15
15
|
page: 3,
|
16
16
|
},
|
17
17
|
metadata: {
|
@@ -21,21 +21,23 @@ describe("getStartIndex", () => {
|
|
21
21
|
resultsPerPage: 10,
|
22
22
|
};
|
23
23
|
|
24
|
-
|
24
|
+
it('should return the correct value', () => {
|
25
|
+
expect(getStartIndex(args, ctx)).toEqual({ absolute: 6, relative: 6 });
|
26
|
+
});
|
25
27
|
});
|
26
28
|
|
27
|
-
describe(
|
28
|
-
|
29
|
+
describe('when the direction is backward', () => {
|
30
|
+
describe('when on first page and count takes the start index negative', () => {
|
29
31
|
const args = {
|
30
|
-
before:
|
32
|
+
before: 'abcdefg',
|
31
33
|
last: 5,
|
32
34
|
};
|
33
35
|
|
34
36
|
const ctx = {
|
35
37
|
entry: {
|
36
|
-
group:
|
38
|
+
group: 'qwerty',
|
37
39
|
index: 3,
|
38
|
-
node: { id:
|
40
|
+
node: { id: '123' },
|
39
41
|
page: 1,
|
40
42
|
},
|
41
43
|
metadata: {
|
@@ -45,20 +47,22 @@ describe("getStartIndex", () => {
|
|
45
47
|
resultsPerPage: 10,
|
46
48
|
};
|
47
49
|
|
48
|
-
|
50
|
+
it('should return the correct value', () => {
|
51
|
+
expect(getStartIndex(args, ctx)).toEqual({ absolute: 0, relative: 0 });
|
52
|
+
});
|
49
53
|
});
|
50
54
|
|
51
|
-
|
55
|
+
describe('when on first page and count DOES NOT takes the start index negative', () => {
|
52
56
|
const args = {
|
53
|
-
before:
|
57
|
+
before: 'abcdefg',
|
54
58
|
last: 2,
|
55
59
|
};
|
56
60
|
|
57
61
|
const ctx = {
|
58
62
|
entry: {
|
59
|
-
group:
|
63
|
+
group: 'qwerty',
|
60
64
|
index: 4,
|
61
|
-
node: { id:
|
65
|
+
node: { id: '123' },
|
62
66
|
page: 1,
|
63
67
|
},
|
64
68
|
metadata: {
|
@@ -68,21 +72,23 @@ describe("getStartIndex", () => {
|
|
68
72
|
resultsPerPage: 10,
|
69
73
|
};
|
70
74
|
|
71
|
-
|
75
|
+
it('should return the correct value', () => {
|
76
|
+
expect(getStartIndex(args, ctx)).toEqual({ absolute: 2, relative: 2 });
|
77
|
+
});
|
72
78
|
});
|
73
79
|
|
74
|
-
describe(
|
75
|
-
|
80
|
+
describe('when NOT on first page', () => {
|
81
|
+
describe('when the start index is more than than or equal to 0', () => {
|
76
82
|
const args = {
|
77
|
-
before:
|
83
|
+
before: 'abcdefg',
|
78
84
|
last: 4,
|
79
85
|
};
|
80
86
|
|
81
87
|
const ctx = {
|
82
88
|
entry: {
|
83
|
-
group:
|
89
|
+
group: 'qwerty',
|
84
90
|
index: 7,
|
85
|
-
node: { id:
|
91
|
+
node: { id: '123' },
|
86
92
|
page: 3,
|
87
93
|
},
|
88
94
|
metadata: {
|
@@ -92,20 +98,22 @@ describe("getStartIndex", () => {
|
|
92
98
|
resultsPerPage: 10,
|
93
99
|
};
|
94
100
|
|
95
|
-
|
101
|
+
it('should return the correct value', () => {
|
102
|
+
expect(getStartIndex(args, ctx)).toEqual({ absolute: 3, relative: 3 });
|
103
|
+
});
|
96
104
|
});
|
97
105
|
|
98
|
-
|
106
|
+
describe('when the start index is less than 0', () => {
|
99
107
|
const args = {
|
100
|
-
before:
|
108
|
+
before: 'abcdefg',
|
101
109
|
last: 15,
|
102
110
|
};
|
103
111
|
|
104
112
|
const ctx = {
|
105
113
|
entry: {
|
106
|
-
group:
|
114
|
+
group: 'qwerty',
|
107
115
|
index: 4,
|
108
|
-
node: { id:
|
116
|
+
node: { id: '123' },
|
109
117
|
page: 3,
|
110
118
|
},
|
111
119
|
metadata: {
|
@@ -115,24 +123,26 @@ describe("getStartIndex", () => {
|
|
115
123
|
resultsPerPage: 10,
|
116
124
|
};
|
117
125
|
|
118
|
-
|
126
|
+
it('should return the correct value', () => {
|
127
|
+
expect(getStartIndex(args, ctx)).toEqual({ absolute: -11, relative: 9 });
|
128
|
+
});
|
119
129
|
});
|
120
130
|
});
|
121
131
|
});
|
122
132
|
});
|
123
133
|
|
124
|
-
describe(
|
125
|
-
|
134
|
+
describe('getEndIndex', () => {
|
135
|
+
describe('when the direction is backward', () => {
|
126
136
|
const args = {
|
127
|
-
before:
|
137
|
+
before: 'abcdefg',
|
128
138
|
last: 5,
|
129
139
|
};
|
130
140
|
|
131
141
|
const ctx = {
|
132
142
|
entry: {
|
133
|
-
group:
|
143
|
+
group: 'qwerty',
|
134
144
|
index: 5,
|
135
|
-
node: { id:
|
145
|
+
node: { id: '123' },
|
136
146
|
page: 3,
|
137
147
|
},
|
138
148
|
metadata: {
|
@@ -142,21 +152,23 @@ describe("getEndIndex", () => {
|
|
142
152
|
resultsPerPage: 10,
|
143
153
|
};
|
144
154
|
|
145
|
-
|
155
|
+
it('should return the correct value', () => {
|
156
|
+
expect(getEndIndex(args, ctx)).toEqual({ absolute: 4, relative: 4 });
|
157
|
+
});
|
146
158
|
});
|
147
159
|
|
148
|
-
describe(
|
149
|
-
|
160
|
+
describe('when the direction is forward', () => {
|
161
|
+
describe('when on last page and count takes end index over last index', () => {
|
150
162
|
const args = {
|
151
|
-
after:
|
163
|
+
after: 'abcdefg',
|
152
164
|
first: 15,
|
153
165
|
};
|
154
166
|
|
155
167
|
const ctx = {
|
156
168
|
entry: {
|
157
|
-
group:
|
169
|
+
group: 'qwerty',
|
158
170
|
index: 2,
|
159
|
-
node: { id:
|
171
|
+
node: { id: '123' },
|
160
172
|
page: 6,
|
161
173
|
},
|
162
174
|
metadata: {
|
@@ -166,20 +178,22 @@ describe("getEndIndex", () => {
|
|
166
178
|
resultsPerPage: 10,
|
167
179
|
};
|
168
180
|
|
169
|
-
|
181
|
+
it('should return the correct value', () => {
|
182
|
+
expect(getEndIndex(args, ctx)).toEqual({ absolute: 6, relative: 6 });
|
183
|
+
});
|
170
184
|
});
|
171
185
|
|
172
|
-
|
186
|
+
describe('when on last page and count DOES NOT take end index over last index', () => {
|
173
187
|
const args = {
|
174
|
-
after:
|
188
|
+
after: 'abcdefg',
|
175
189
|
first: 2,
|
176
190
|
};
|
177
191
|
|
178
192
|
const ctx = {
|
179
193
|
entry: {
|
180
|
-
group:
|
194
|
+
group: 'qwerty',
|
181
195
|
index: 2,
|
182
|
-
node: { id:
|
196
|
+
node: { id: '123' },
|
183
197
|
page: 6,
|
184
198
|
},
|
185
199
|
metadata: {
|
@@ -189,21 +203,23 @@ describe("getEndIndex", () => {
|
|
189
203
|
resultsPerPage: 10,
|
190
204
|
};
|
191
205
|
|
192
|
-
|
206
|
+
it('should return the correct value', () => {
|
207
|
+
expect(getEndIndex(args, ctx)).toEqual({ absolute: 4, relative: 4 });
|
208
|
+
});
|
193
209
|
});
|
194
210
|
|
195
|
-
describe(
|
196
|
-
|
211
|
+
describe('when NOT on last page', () => {
|
212
|
+
describe('when the end index is less than or equal to indexes per page', () => {
|
197
213
|
const args = {
|
198
|
-
after:
|
214
|
+
after: 'abcdefg',
|
199
215
|
first: 7,
|
200
216
|
};
|
201
217
|
|
202
218
|
const ctx = {
|
203
219
|
entry: {
|
204
|
-
group:
|
220
|
+
group: 'qwerty',
|
205
221
|
index: 2,
|
206
|
-
node: { id:
|
222
|
+
node: { id: '123' },
|
207
223
|
page: 4,
|
208
224
|
},
|
209
225
|
metadata: {
|
@@ -213,20 +229,22 @@ describe("getEndIndex", () => {
|
|
213
229
|
resultsPerPage: 10,
|
214
230
|
};
|
215
231
|
|
216
|
-
|
232
|
+
it('should return the correct value', () => {
|
233
|
+
expect(getEndIndex(args, ctx)).toEqual({ absolute: 9, relative: 9 });
|
234
|
+
});
|
217
235
|
});
|
218
236
|
|
219
|
-
|
237
|
+
describe('when end index is greater than indexes per page', () => {
|
220
238
|
const args = {
|
221
|
-
after:
|
239
|
+
after: 'abcdefg',
|
222
240
|
first: 20,
|
223
241
|
};
|
224
242
|
|
225
243
|
const ctx = {
|
226
244
|
entry: {
|
227
|
-
group:
|
245
|
+
group: 'qwerty',
|
228
246
|
index: 2,
|
229
|
-
node: { id:
|
247
|
+
node: { id: '123' },
|
230
248
|
page: 4,
|
231
249
|
},
|
232
250
|
metadata: {
|
@@ -236,7 +254,9 @@ describe("getEndIndex", () => {
|
|
236
254
|
resultsPerPage: 10,
|
237
255
|
};
|
238
256
|
|
239
|
-
|
257
|
+
it('should return the correct value', () => {
|
258
|
+
expect(getEndIndex(args, ctx)).toEqual({ absolute: 22, relative: 2 });
|
259
|
+
});
|
240
260
|
});
|
241
261
|
});
|
242
262
|
});
|
@@ -1,61 +1,67 @@
|
|
1
|
-
import { ConnectionInputOptions,
|
2
|
-
import getCount from
|
3
|
-
import getDirection from
|
4
|
-
import getIndexesOnLastPage from
|
5
|
-
import isFirstPage from
|
6
|
-
import isLastPage from
|
1
|
+
import { type ConnectionInputOptions, type CursorGroupMetadata, type PartialCursorCacheEntry } from '../types.ts';
|
2
|
+
import { getCount } from './getCount.ts';
|
3
|
+
import { getDirection } from './getDirection.ts';
|
4
|
+
import { getIndexesOnLastPage } from './getIndexesOnLastPage.ts';
|
5
|
+
import { isFirstPage } from './isFirstPage.ts';
|
6
|
+
import { isLastPage } from './isLastPage.ts';
|
7
|
+
|
8
|
+
export type Context = {
|
9
|
+
entry: PartialCursorCacheEntry;
|
10
|
+
metadata: CursorGroupMetadata;
|
11
|
+
resultsPerPage: number;
|
12
|
+
};
|
7
13
|
|
8
14
|
export const getStartIndex = (
|
9
15
|
args: ConnectionInputOptions,
|
10
|
-
{ entry: { index, page }, resultsPerPage }: Pick<Context,
|
16
|
+
{ entry: { index, page }, resultsPerPage }: Pick<Context, 'entry' | 'resultsPerPage'>
|
11
17
|
) => {
|
12
18
|
const count = getCount(args);
|
13
19
|
|
14
|
-
return getDirection(args.last) ===
|
20
|
+
return getDirection(args.last) === 'forward'
|
15
21
|
? { absolute: index + 1, relative: index + 1 }
|
16
22
|
: isFirstPage(page) && index - count < 0
|
17
23
|
? { absolute: 0, relative: 0 }
|
18
24
|
: (() => {
|
19
|
-
const
|
25
|
+
const absoluteStartIndex = index - count;
|
20
26
|
|
21
|
-
if (
|
22
|
-
return { absolute:
|
27
|
+
if (absoluteStartIndex >= 0) {
|
28
|
+
return { absolute: absoluteStartIndex, relative: absoluteStartIndex };
|
23
29
|
}
|
24
30
|
|
25
|
-
const indexesRemainingAfterLastPage = Math.abs(
|
31
|
+
const indexesRemainingAfterLastPage = Math.abs(absoluteStartIndex);
|
26
32
|
const pagesRemaining = indexesRemainingAfterLastPage / resultsPerPage + 1;
|
27
33
|
const remainder = indexesRemainingAfterLastPage % resultsPerPage;
|
28
|
-
const
|
29
|
-
return { absolute:
|
34
|
+
const relativeStartIndex = remainder === 0 ? 0 : page - pagesRemaining < 0 ? 0 : resultsPerPage - remainder;
|
35
|
+
return { absolute: absoluteStartIndex, relative: relativeStartIndex };
|
30
36
|
})();
|
31
37
|
};
|
32
38
|
|
33
39
|
export const getEndIndex = (
|
34
40
|
args: ConnectionInputOptions,
|
35
|
-
{ entry: { index, page }, metadata: { totalPages, totalResults }, resultsPerPage }: Context
|
41
|
+
{ entry: { index, page }, metadata: { totalPages, totalResults }, resultsPerPage }: Context
|
36
42
|
) => {
|
37
43
|
const count = getCount(args);
|
38
44
|
const indexesOnLastPage = getIndexesOnLastPage({ resultsPerPage, totalResults });
|
39
45
|
|
40
|
-
return getDirection(args.last) ===
|
46
|
+
return getDirection(args.last) === 'backward'
|
41
47
|
? { absolute: index - 1, relative: index - 1 }
|
42
48
|
: isLastPage({ page, totalPages }) && index + count > indexesOnLastPage
|
43
49
|
? { absolute: indexesOnLastPage, relative: indexesOnLastPage }
|
44
50
|
: (() => {
|
45
|
-
const
|
51
|
+
const absoluteEndIndex = index + count;
|
46
52
|
const indexesPerPage = resultsPerPage - 1;
|
47
53
|
|
48
|
-
if (
|
49
|
-
return { absolute:
|
54
|
+
if (absoluteEndIndex <= indexesPerPage) {
|
55
|
+
return { absolute: absoluteEndIndex, relative: absoluteEndIndex };
|
50
56
|
}
|
51
57
|
|
52
|
-
const indexesRemainingAfterFirstPage =
|
58
|
+
const indexesRemainingAfterFirstPage = absoluteEndIndex - indexesPerPage;
|
53
59
|
const pagesRemaining = indexesRemainingAfterFirstPage / resultsPerPage;
|
54
60
|
const remainder = indexesRemainingAfterFirstPage % resultsPerPage;
|
55
61
|
|
56
|
-
const
|
62
|
+
const relativeEndIndex =
|
57
63
|
remainder === 0 ? indexesPerPage : page + pagesRemaining > totalPages ? indexesOnLastPage : remainder - 1;
|
58
64
|
|
59
|
-
return { absolute:
|
65
|
+
return { absolute: absoluteEndIndex, relative: relativeEndIndex };
|
60
66
|
})();
|
61
67
|
};
|
@@ -1,9 +1,9 @@
|
|
1
|
-
import { getEndPageNumber, getStartPageNumber } from
|
1
|
+
import { getEndPageNumber, getStartPageNumber } from './getStartAndEndPageNumbers.ts';
|
2
2
|
|
3
|
-
describe(
|
4
|
-
|
3
|
+
describe('getStartPageNumber', () => {
|
4
|
+
describe('when the direction is forward', () => {
|
5
5
|
const args = {
|
6
|
-
after:
|
6
|
+
after: 'abcdefg',
|
7
7
|
};
|
8
8
|
|
9
9
|
const ctx = {
|
@@ -16,11 +16,13 @@ describe("getStartPageNumber", () => {
|
|
16
16
|
startIndex: { absolute: 5, relative: 5 },
|
17
17
|
};
|
18
18
|
|
19
|
-
|
19
|
+
it('should return the correct value', () => {
|
20
|
+
expect(getStartPageNumber(args, ctx)).toBe(3);
|
21
|
+
});
|
20
22
|
});
|
21
23
|
|
22
|
-
describe(
|
23
|
-
|
24
|
+
describe('when the direction is backward', () => {
|
25
|
+
describe('when start index is greater or equal to zero', () => {
|
24
26
|
const args = {
|
25
27
|
last: 5,
|
26
28
|
};
|
@@ -35,10 +37,12 @@ describe("getStartPageNumber", () => {
|
|
35
37
|
startIndex: { absolute: 1, relative: 1 },
|
36
38
|
};
|
37
39
|
|
38
|
-
|
40
|
+
it('should return the correct value', () => {
|
41
|
+
expect(getStartPageNumber(args, ctx)).toBe(3);
|
42
|
+
});
|
39
43
|
});
|
40
44
|
|
41
|
-
|
45
|
+
describe('when start page number is less than or equal to 1', () => {
|
42
46
|
const args = {
|
43
47
|
last: 5,
|
44
48
|
};
|
@@ -53,10 +57,12 @@ describe("getStartPageNumber", () => {
|
|
53
57
|
startIndex: { absolute: -35, relative: 5 },
|
54
58
|
};
|
55
59
|
|
56
|
-
|
60
|
+
it('should return the correct value', () => {
|
61
|
+
expect(getStartPageNumber(args, ctx)).toBe(1);
|
62
|
+
});
|
57
63
|
});
|
58
64
|
|
59
|
-
|
65
|
+
describe('when start page number is NOT less than or equal to 1', () => {
|
60
66
|
const args = {
|
61
67
|
last: 5,
|
62
68
|
};
|
@@ -71,13 +77,15 @@ describe("getStartPageNumber", () => {
|
|
71
77
|
startIndex: { absolute: -15, relative: 5 },
|
72
78
|
};
|
73
79
|
|
74
|
-
|
80
|
+
it('should return the correct value', () => {
|
81
|
+
expect(getStartPageNumber(args, ctx)).toBe(2);
|
82
|
+
});
|
75
83
|
});
|
76
84
|
});
|
77
85
|
});
|
78
86
|
|
79
|
-
describe(
|
80
|
-
|
87
|
+
describe('getEndPageNumber', () => {
|
88
|
+
describe('when the direction is backward', () => {
|
81
89
|
const args = {
|
82
90
|
last: 5,
|
83
91
|
};
|
@@ -92,13 +100,15 @@ describe("getEndPageNumber", () => {
|
|
92
100
|
resultsPerPage: 10,
|
93
101
|
};
|
94
102
|
|
95
|
-
|
103
|
+
it('should return the correct value', () => {
|
104
|
+
expect(getEndPageNumber(args, ctx)).toBe(3);
|
105
|
+
});
|
96
106
|
});
|
97
107
|
|
98
|
-
describe(
|
99
|
-
|
108
|
+
describe('when the direction is forward', () => {
|
109
|
+
describe('when the page is the last page', () => {
|
100
110
|
const args = {
|
101
|
-
after:
|
111
|
+
after: 'abcdefg',
|
102
112
|
};
|
103
113
|
|
104
114
|
const ctx = {
|
@@ -111,12 +121,14 @@ describe("getEndPageNumber", () => {
|
|
111
121
|
resultsPerPage: 10,
|
112
122
|
};
|
113
123
|
|
114
|
-
|
124
|
+
it('should return the correct value', () => {
|
125
|
+
expect(getEndPageNumber(args, ctx)).toBe(5);
|
126
|
+
});
|
115
127
|
});
|
116
128
|
|
117
|
-
|
129
|
+
describe('when the end index is less than the indexes per page', () => {
|
118
130
|
const args = {
|
119
|
-
after:
|
131
|
+
after: 'abcdefg',
|
120
132
|
};
|
121
133
|
|
122
134
|
const ctx = {
|
@@ -129,12 +141,14 @@ describe("getEndPageNumber", () => {
|
|
129
141
|
resultsPerPage: 10,
|
130
142
|
};
|
131
143
|
|
132
|
-
|
144
|
+
it('should return the correct value', () => {
|
145
|
+
expect(getEndPageNumber(args, ctx)).toBe(3);
|
146
|
+
});
|
133
147
|
});
|
134
148
|
|
135
|
-
|
149
|
+
describe('when the end page number is greater or equal to total pages', () => {
|
136
150
|
const args = {
|
137
|
-
after:
|
151
|
+
after: 'abcdefg',
|
138
152
|
};
|
139
153
|
|
140
154
|
const ctx = {
|
@@ -147,12 +161,14 @@ describe("getEndPageNumber", () => {
|
|
147
161
|
resultsPerPage: 10,
|
148
162
|
};
|
149
163
|
|
150
|
-
|
164
|
+
it('should return the correct value', () => {
|
165
|
+
expect(getEndPageNumber(args, ctx)).toBe(5);
|
166
|
+
});
|
151
167
|
});
|
152
168
|
|
153
|
-
|
169
|
+
describe('when the end page number is NOT greater or equal to total pages', () => {
|
154
170
|
const args = {
|
155
|
-
after:
|
171
|
+
after: 'abcdefg',
|
156
172
|
};
|
157
173
|
|
158
174
|
const ctx = {
|
@@ -165,7 +181,9 @@ describe("getEndPageNumber", () => {
|
|
165
181
|
resultsPerPage: 10,
|
166
182
|
};
|
167
183
|
|
168
|
-
|
184
|
+
it('should return the correct value', () => {
|
185
|
+
expect(getEndPageNumber(args, ctx)).toBe(4);
|
186
|
+
});
|
169
187
|
});
|
170
188
|
});
|
171
189
|
});
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { ConnectionInputOptions,
|
2
|
-
import getDirection from
|
3
|
-
import isLastPage from
|
1
|
+
import { type ConnectionInputOptions, type CursorGroupMetadata, type Indexes } from '../types.ts';
|
2
|
+
import { getDirection } from './getDirection.ts';
|
3
|
+
import { isLastPage } from './isLastPage.ts';
|
4
4
|
|
5
5
|
export type PageNumberContext = {
|
6
6
|
endIndex: Indexes;
|
@@ -8,11 +8,16 @@ export type PageNumberContext = {
|
|
8
8
|
startIndex: Indexes;
|
9
9
|
};
|
10
10
|
|
11
|
+
export type Context = {
|
12
|
+
metadata: CursorGroupMetadata;
|
13
|
+
resultsPerPage: number;
|
14
|
+
};
|
15
|
+
|
11
16
|
export const getStartPageNumber = (
|
12
17
|
args: ConnectionInputOptions,
|
13
|
-
{ page,
|
18
|
+
{ page, resultsPerPage, startIndex }: Omit<PageNumberContext, 'endIndex'> & Omit<Context, 'metadata'>
|
14
19
|
) => {
|
15
|
-
if (getDirection(args.last) ===
|
20
|
+
if (getDirection(args.last) === 'forward' || startIndex.absolute >= 0) {
|
16
21
|
return page;
|
17
22
|
}
|
18
23
|
|
@@ -22,17 +27,12 @@ export const getStartPageNumber = (
|
|
22
27
|
|
23
28
|
export const getEndPageNumber = (
|
24
29
|
args: ConnectionInputOptions,
|
25
|
-
{
|
26
|
-
endIndex,
|
27
|
-
metadata: { totalPages },
|
28
|
-
page,
|
29
|
-
resultsPerPage,
|
30
|
-
}: Omit<PageNumberContext, "startIndex"> & Omit<Context, "entry">,
|
30
|
+
{ endIndex, metadata: { totalPages }, page, resultsPerPage }: Omit<PageNumberContext, 'startIndex'> & Context
|
31
31
|
) => {
|
32
32
|
const indexesPerPage = resultsPerPage - 1;
|
33
33
|
|
34
34
|
if (
|
35
|
-
getDirection(args.last) ===
|
35
|
+
getDirection(args.last) === 'backward' ||
|
36
36
|
isLastPage({ page, totalPages }) ||
|
37
37
|
endIndex.absolute <= indexesPerPage
|
38
38
|
) {
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import { hasPreviousPage } from
|
1
|
+
import { hasPreviousPage } from './hasPreviousNextPage.ts';
|
2
2
|
|
3
|
-
describe(
|
4
|
-
|
3
|
+
describe('hasPreviousPage', () => {
|
4
|
+
describe('when first page number is 1 and start index is 0', () => {
|
5
5
|
const cachedEdgesByPage = [
|
6
6
|
{
|
7
7
|
edges: [],
|
@@ -10,10 +10,13 @@ describe("hasPreviousPage", () => {
|
|
10
10
|
];
|
11
11
|
|
12
12
|
const startIndex = { absolute: 0, relative: 0 };
|
13
|
-
|
13
|
+
|
14
|
+
it('should return the correct value', () => {
|
15
|
+
expect(hasPreviousPage({ cachedEdgesByPage, startIndex })).toBe(false);
|
16
|
+
});
|
14
17
|
});
|
15
18
|
|
16
|
-
|
19
|
+
describe('when start index is NOT 0', () => {
|
17
20
|
const cachedEdgesByPage = [
|
18
21
|
{
|
19
22
|
edges: [],
|
@@ -22,10 +25,13 @@ describe("hasPreviousPage", () => {
|
|
22
25
|
];
|
23
26
|
|
24
27
|
const startIndex = { absolute: 5, relative: 5 };
|
25
|
-
|
28
|
+
|
29
|
+
it('should return the correct value', () => {
|
30
|
+
expect(hasPreviousPage({ cachedEdgesByPage, startIndex })).toBe(true);
|
31
|
+
});
|
26
32
|
});
|
27
33
|
|
28
|
-
|
34
|
+
describe('when first page number is NOT 1', () => {
|
29
35
|
const cachedEdgesByPage = [
|
30
36
|
{
|
31
37
|
edges: [],
|
@@ -34,6 +40,9 @@ describe("hasPreviousPage", () => {
|
|
34
40
|
];
|
35
41
|
|
36
42
|
const startIndex = { absolute: 0, relative: 0 };
|
37
|
-
|
43
|
+
|
44
|
+
it('should return the correct value', () => {
|
45
|
+
expect(hasPreviousPage({ cachedEdgesByPage, startIndex })).toBe(true);
|
46
|
+
});
|
38
47
|
});
|
39
48
|
});
|