5 дней назад
История
README.md
@cutticat/math-extras
Numeric utilities and pagination library.
Table of Contents
Overview
The library provides:
- Numbers —
clamp/clamp2d,inRange/inRange2d,mod,wrap,roundToStep/floorToStep/ceilToStep,lerp/inverseLerp/remap,percentage; typesRange,Range2d,Point2d - Pagination — three contexts (
page+limit+ optionaltotalPages/totalCount), normalization, page window, “showing X–Y” range
Installation
pnpm i @cutticat/math-extras
Quick Start
import {
clamp,
normalizePaginationContext,
normalizeWindowPaginationContext,
calculatePaginationWindow,
calculateItemRange,
defaultPaginationWindowLimit,
} from "@cutticat/math-extras"
normalizePaginationContext({ page: -1, limit: 0 }) // { page: 0, limit: 1 }
const windowContext = normalizeWindowPaginationContext({
page: 4,
totalPages: 9,
limit: defaultPaginationWindowLimit,
})
calculatePaginationWindow(windowContext).indices // [2, 3, 4, 5, 6]
calculateItemRange({ page: 1, limit: 20, totalCount: 100 }) // { start: 21, end: 40 }
API
Numbers
clamp(value, range?)— clamp byRangeclamp2d(point, range?)— clamp byRange2dinRange(value, range)/inRange2d(point, range)mod(dividend, divisor)/wrap(index, length)roundToStep/floorToStep/ceilToSteplerp/inverseLerp/remap/percentage- Types:
Range,Range2d,Point2d
Pagination
Common fields: page (0-based), limit.
| Type | Fields | Purpose |
|---|---|---|
PaginationContext |
page, limit |
DB / offset (page * limit) |
WindowPaginationContext |
page, limit, totalPages |
sliding window of page indices |
RangePaginationContext |
page, limit, totalCount |
“showing 21–40 of 100” |
Functions:
normalizePaginationContext—page ≥ 0,limit ≥ 1normalizeWindowPaginationContext— forWindowPaginationContextnormalizeRangePaginationContext— forRangePaginationContextcalculatePaginationWindow(context, noNormalization?)— page indices in windowcalculateItemRange(context, noNormalization?)— 1-based{ start, end }defaultPaginationWindowLimit— defaultlimitfor page window (5)
Aligns with PaginationSchema from @cutticat/zod-extras (limit, page); normalization lives here.
Documentation
Requirements
- Node.js >= 22.0.0
- pnpm >= 10.17.0
- TypeScript >= 5.9.0
Описание
A library with various useful mathematical functions
Конвейеры
4
успешных
2
с ошибкой