This repo contains a set of tools for pagination.
It is build with:
- node:
v14.x.x( ~lts/fermium) - npm:
6.14.11
For a complete list of packages and their version check out the package.json file.
You can install this package by doing:
$ npm install @studiohyperdrive/paginationor if you use Yarn:
$ yarn add @studiohyperdrive/paginationIn your code, you can use this package and it's interfaces like this:
import { Pagination, IPagination } from '@studiohyperdrive/pagination';
class ItemController {
public async findAll(page: number, size: number, query: Record<string, unknown>): Promise<IPagination<IItem>> {
const [items, total]: [IItem[], number] = await this.itemRepository.findAndCount(page, size);
return Pagination<IItem>({
items,
page,
path,
query,
size,
total,
});
}
}This will transform your items and total to a formatted pagination response which you can return to the client. Adding a path and query is optional. If specified, links to the current, first, last, next and previous page are added to the response.
This package exposes the following functions:
calculateTotalPages: Calculate the total amount of pages based on the total amount of elements and the page sizeformatQuerystring: Format the querystring based on the page, the size and the current request querystringformatLink: Format a link based on the path, the page, the size and the current request querystringPagination: This function is the main one which will use the above and your input to transform your input to a pagination object
And the following interfaces:
IPagination: An interface for the formatted pagination object
To setup this project, clone the repo and run yarn to install the dependencies.
The available commands for building the project are:
| command | runs |
|---|---|
| build | This script runs rollup to compile your code (target to the dist folder) |
The available commands for testing the project are:
| command | runs |
|---|---|
| lint | This script will run linting |
| lint:fix | This script will run linting and fix what it can |
| test | This script will run your Jest tests for the library and create a coverage report |
| test:watch | This script will run your Jest tests but with the --watch flag. It does not create a coverage report |
This project can be published to the npm registry. To do so follow these steps:
- Run
npm version <major | minor | patch>to create a new version and commit + tag it. - Open a Merge Request on Github.
- Once your changes have been commited to the main-branch, you can publish to the repo.
- Run
npm publish.
Due to historic reasons v2.0.0 has been unpublished, meaning this version cannot be used for a new release. Make sure to bump to at least v2.0.1 to continue development.
This project has been created by:
- Niels Bril: [email protected]
It is currently maintained by:
- Niels Bril: [email protected]