Function: paginateCursor()
Call Signature
paginateCursor<
T,TCursor>(items,getCursor,config):CursorPaginatedResult<T,TCursor>
Defined in: collection/paginate/index.ts:112
Paginates an array using cursor-based pagination.
More efficient than offset pagination for large datasets and real-time data. Prevents issues with missing/duplicate items during pagination.
Type Parameters
T
T
TCursor
TCursor
Parameters
items
readonly T[]
The array to paginate
getCursor
(item) => TCursor
Function to extract cursor from item
config
CursorPaginationConfig<TCursor>
Cursor pagination configuration
Returns
CursorPaginatedResult<T, TCursor>
A CursorPaginatedResult with items and next cursor
Example
// Data-first
const messages = [
{ id: 'msg_1', text: 'Hello', createdAt: '2024-01-01' },
{ id: 'msg_2', text: 'World', createdAt: '2024-01-02' }
]
paginateCursor(messages, (m) => m.id, { limit: 10 })
// => {
// items: [first 10 messages],
// nextCursor: 'msg_10',
// hasMore: true
// }
// Continue from cursor
paginateCursor(messages, (m) => m.id, { cursor: 'msg_10', limit: 10 })
// Data-last (in pipe)
pipe(
messages,
paginateCursor((m) => m.id, { limit: 10 })
)
See
paginate - for offset-based pagination
Call Signature
paginateCursor<
T,TCursor>(getCursor,config): (items) =>CursorPaginatedResult<T,TCursor>
Defined in: collection/paginate/index.ts:117
Paginates an array using cursor-based pagination.
More efficient than offset pagination for large datasets and real-time data. Prevents issues with missing/duplicate items during pagination.
Type Parameters
T
T
TCursor
TCursor
Parameters
getCursor
(item) => TCursor
Function to extract cursor from item
config
CursorPaginationConfig<TCursor>
Cursor pagination configuration
Returns
A CursorPaginatedResult with items and next cursor
(
items):CursorPaginatedResult<T,TCursor>
Parameters
items
readonly T[]
Returns
CursorPaginatedResult<T, TCursor>
Example
// Data-first
const messages = [
{ id: 'msg_1', text: 'Hello', createdAt: '2024-01-01' },
{ id: 'msg_2', text: 'World', createdAt: '2024-01-02' }
]
paginateCursor(messages, (m) => m.id, { limit: 10 })
// => {
// items: [first 10 messages],
// nextCursor: 'msg_10',
// hasMore: true
// }
// Continue from cursor
paginateCursor(messages, (m) => m.id, { cursor: 'msg_10', limit: 10 })
// Data-last (in pipe)
pipe(
messages,
paginateCursor((m) => m.id, { limit: 10 })
)
See
paginate - for offset-based pagination