Implement paginate(arr, options)
Write a single paginate(arr, options) that supports both pagination strategies real APIs use:
Offset mode, options = { page, pageSize } (1-indexed page). Returns:
{ items, page, pageSize, totalItems, totalPages }.
Cursor mode, options = { cursor, limit, idKey = "id" } (present when cursor is a key on options, even if its value is null for "give me the first page"). Returns { items, nextCursor }, where nextCursor is the idKey of the last returned item, or null if there's no more data.
paginate(users, { page: 2, pageSize: 10 });
paginate(users, { cursor: null, limit: 10 }); // first page
paginate(users, { cursor: lastNextCursor, limit: 10 }); // next page