UNPKG

paginate-arrays-js

Version:

A library to paginate arrays in javascript

100 lines (99 loc) 2.79 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { cursorPaginate: () => cursorPaginate, paginate: () => paginate }); module.exports = __toCommonJS(src_exports); function paginate({ data, page, perPage, url }) { const offset = (page - 1) * perPage; const paginatedItems = data.slice(offset, page * perPage); const totalPage = Math.ceil(data.length / perPage); const nextPage = page < totalPage ? page + 1 : null; const prevPage = page > 1 ? page - 1 : null; const firstPage = 1; const lastPage = totalPage; const from = offset + 1; const to = offset + paginatedItems.length; const urlWithPage = (page2) => `${url}?page=${page2}`; const pagination = { totalPage, nextPage, prevPage, firstPage, lastPage, from, to, perPage, total: data.length, currentPage: page, hasPrevPage: page > 1, hasNextPage: page < totalPage, url: urlWithPage(page) }; return { data: paginatedItems, pagination }; } function cursorPaginate({ data, perPage, identifier, after, before }) { var _a, _b; let offset = 0; if (after) { offset = data.findIndex((item) => item[identifier] === after) + 1; } if (before) { offset = data.findIndex((item) => item[identifier] === before); } const paginatedItems = data.slice(offset, offset + perPage); const totalPages = Math.ceil(data.length / perPage); const hasNextPage = offset + perPage < data.length; const hasPrevPage = offset > 0; const startCursor = (_a = paginatedItems[0]) == null ? void 0 : _a[identifier]; const endCursor = (_b = paginatedItems[paginatedItems.length - 1]) == null ? void 0 : _b[identifier]; const pagination = { hasNextPage, hasPrevPage, startCursor, endCursor, totalPages }; return { data: paginatedItems, pagination }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { cursorPaginate, paginate }); //# sourceMappingURL=index.cjs.map