@lowerdeck/pagination
v1.0.4
Published
Cursor-based pagination utilities with support for Prisma and custom data providers. Provides type-safe pagination with configurable limits and ordering.
Downloads
556
Readme
@lowerdeck/pagination
Cursor-based pagination utilities with support for Prisma and custom data providers. Provides type-safe pagination with configurable limits and ordering.
Installation
npm install @lowerdeck/pagination
yarn add @lowerdeck/pagination
bun add @lowerdeck/pagination
pnpm add @lowerdeck/paginationUsage
import { Paginator } from '@lowerdeck/pagination';
// Create a paginator with a data provider
const usersPaginator = Paginator.create(
({ prisma }) => prisma.user.findMany,
{
defaultLimit: 20,
defaultOrder: 'asc'
}
);
// Fetch paginated results
const page1 = await usersPaginator.run({
limit: 10,
order: 'asc'
});
// Navigate using cursors
const page2 = await usersPaginator.run({
limit: 10,
after: page1.items[page1.items.length - 1].id
});
console.log(page2.pagination.hasNextPage); // true/false
console.log(page2.pagination.hasPreviousPage); // true/false
// Present paginated data
const presented = await Paginator.presentLight(page1, (user) => ({
id: user.id,
name: user.name
}));
console.log(presented); // { __typename: 'list', items: [...], pagination: {...} }License
This project is licensed under the Apache License 2.0.
