UNPKG

graphql-mocks

Version:

Tools for setting up graphql test resolvers

48 lines (47 loc) 1.49 kB
import { applyCursorsToEdges } from './apply-cursor-to-edges.mjs'; import { createEdge } from './create-edge.mjs'; function paginateNodes(nodes, args, cursorForNode) { var _edges$, _edges; var { first, last, before, after } = args; var allEdges = nodes.map(node => createEdge(node, cursorForNode(node))); // eslint-disable-next-line prefer-const var { edges, frontCut, backCut } = applyCursorsToEdges(allEdges, cursorForNode, before, after); var hasNextPage = backCut; var hasPreviousPage = frontCut; if (first) { if (first < 0) throw new Error('`first` argument must be greater than or equal to 0'); if (edges.length > first) { edges = edges.slice(0, first); hasNextPage = true; } } if (last) { if (last < 0) throw new Error('`last` argument must be greater than or equal to 0'); if (edges.length > last) { edges = edges.slice(edges.length - last, edges.length); hasPreviousPage = true; } } var startNode = (_edges$ = edges[0]) === null || _edges$ === void 0 ? void 0 : _edges$.node; var endNode = (_edges = edges[edges.length - 1]) === null || _edges === void 0 ? void 0 : _edges.node; return { edges: edges, pageInfo: { hasNextPage, hasPreviousPage, startCursor: startNode ? cursorForNode(startNode) : null, endCursor: endNode ? cursorForNode(endNode) : null } }; } export { paginateNodes }; //# sourceMappingURL=paginate-nodes.mjs.map