UNPKG

@snehal96/unimail

Version:

Unified email fetching & document extraction layer for modern web apps

77 lines (76 loc) 2.7 kB
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;