@dbs-portal/tool-mock
Version:
API mocking toolkit using MSW for DBS Portal development workflows
98 lines • 2.84 kB
TypeScript
/**
* Pagination utilities for mock responses
*/
import type { PaginatedResponse, PaginatedMockOptions } from './types';
/**
* Create a paginated response from items
*/
export declare function createPaginatedResponse<T = any>(options: PaginatedMockOptions<T>): {
data: PaginatedResponse<T>;
items: T[];
};
/**
* Create pagination metadata only
*/
export declare function createPaginationMeta(page: number, pageSize: number, total: number): PaginatedResponse<any>['meta'];
/**
* Parse pagination parameters from URL search params
*/
export declare function parsePaginationParams(searchParams: URLSearchParams, defaults?: {
page: number;
pageSize: number;
maxPageSize: number;
}): {
page: number;
pageSize: number;
};
/**
* Create cursor-based pagination response
*/
export declare function createCursorPaginatedResponse<T = any>(items: T[], cursor: string | null, limit: number, getCursor: (item: T) => string): {
data: T[];
meta: {
hasNextPage: boolean;
hasPreviousPage: boolean;
nextCursor: string | null;
previousCursor: string | null;
limit: number;
};
};
/**
* Create offset-based pagination response
*/
export declare function createOffsetPaginatedResponse<T = any>(items: T[], offset: number, limit: number): {
data: T[];
meta: {
offset: number;
limit: number;
total: number;
hasMore: boolean;
};
};
/**
* Create infinite scroll pagination response
*/
export declare function createInfiniteScrollResponse<T = any>(items: T[], page: number, pageSize: number): {
data: T[];
meta: {
page: number;
pageSize: number;
hasMore: boolean;
nextPage: number | null;
};
};
/**
* Validate pagination parameters
*/
export declare function validatePaginationParams(page: number, pageSize: number, maxPageSize?: number): {
valid: boolean;
errors: string[];
};
/**
* Calculate pagination ranges for UI
*/
export declare function calculatePaginationRanges(currentPage: number, totalPages: number, maxVisible?: number): {
pages: number[];
showFirst: boolean;
showLast: boolean;
showPrevious: boolean;
showNext: boolean;
};
/**
* Create pagination links for API responses
*/
export declare function createPaginationLinks(baseUrl: string, page: number, pageSize: number, totalPages: number): {
first?: string;
previous?: string;
next?: string;
last?: string;
};
/**
* Create search and filter pagination
*/
export declare function createSearchPaginatedResponse<T = any>(items: T[], searchQuery: string, searchFields: (keyof T)[], filters: Record<string, any>, page: number, pageSize: number): {
data: PaginatedResponse<T>;
filteredCount: number;
totalCount: number;
};
//# sourceMappingURL=pagination.d.ts.map