@snehal96/unimail
Version:
Unified email fetching & document extraction layer for modern web apps
77 lines (76 loc) • 2.7 kB
TypeScript
import { FetchOptions, NormalizedEmail, PaginationMetadata, PaginationState, PaginatedResponse } from '../interfaces.js';
import { IAdapter } from '../adapters/IAdapter.js';
/**
* Pagination helper utility class that provides convenient methods for managing
* email pagination state and fetching emails across multiple pages.
*/
export declare class PaginationHelper {
private state;
private adapter;
constructor(adapter: IAdapter, initialOptions?: FetchOptions);
/**
* Fetch the current page of emails
*/
fetchCurrentPage(): Promise<PaginatedResponse<NormalizedEmail>>;
/**
* Fetch the next page of emails
*/
fetchNextPage(): Promise<PaginatedResponse<NormalizedEmail> | null>;
/**
* Fetch the previous page of emails
*/
fetchPreviousPage(): Promise<PaginatedResponse<NormalizedEmail> | null>;
/**
* Navigate to the next page
*/
goToNextPage(): Promise<PaginatedResponse<NormalizedEmail>>;
/**
* Navigate to the previous page
*/
goToPreviousPage(): Promise<PaginatedResponse<NormalizedEmail>>;
/**
* Reset pagination to the first page
*/
goToFirstPage(): Promise<PaginatedResponse<NormalizedEmail>>;
/**
* Fetch all pages up to a specified limit
*/
fetchAllPages(maxEmails?: number): Promise<PaginatedResponse<NormalizedEmail>>;
/**
* Create an async generator for iterating through all pages
*/
iterateAllPages(): AsyncGenerator<PaginatedResponse<NormalizedEmail>, void, unknown>;
/**
* Update pagination options
*/
updateOptions(newOptions: Partial<FetchOptions>): void;
/**
* Get current pagination state
*/
getCurrentState(): PaginationState;
/**
* Create pagination metadata from adapter response
*/
private createPaginationMetadata;
}
/**
* Static utility functions for pagination
*/
export declare class PaginationUtils {
/**
* Calculate pagination metadata from basic parameters
*/
static calculatePaginationMetadata(currentPage: number, pageSize: number, totalCount?: number, hasNextPage?: boolean, hasPreviousPage?: boolean): PaginationMetadata;
/**
* Create a simple paginated response wrapper
*/
static createPaginatedResponse<T>(data: T[], pagination: PaginationMetadata, query?: string): PaginatedResponse<T>;
/**
* Extract page number from page token (if it's numeric)
*/
static extractPageFromToken(token: string): number | null;
}
/**
* Convenient factory function to create a pagination helper
*/
export declare function createPaginationHelper(adapter: IAdapter, options?: FetchOptions): PaginationHelper;