UNPKG

@future-widget-lab/record-set

Version:

A dedicated data structure for in-memory record collections, offering fluent, immutable APIs for MongoDB-like querying, sorting, and transformation.

34 lines (28 loc) 967 B
import { limit } from '../limit/limit.helper'; import { skip } from '../skip/skip.helper'; type PageOptions<TRecord> = { pageNumber: number; pageSize: number; records: Array<TRecord>; }; /** * @description * Use this helper to return an array containing the records corresponding to the given page number (1-based) and page size. * * This helper calculates the starting index by `(pageNumber - 1) * pageSize`, then skips that many records, and finally limits the result to `pageSize` number of records. * * If either `pageNumber` or `pageSize` is less than 1, this method returns an empty RecordSet. */ export const page = <TRecord>( options: PageOptions<TRecord> ): Array<TRecord> => { const { pageNumber, pageSize, records } = options; if (pageNumber < 1 || pageSize < 1) { return []; } const startIndex = (pageNumber - 1) * pageSize; return limit({ count: pageSize, records: skip({ count: startIndex, records }), }); };