UNPKG

openapi-directory-mcp

Version:

Model Context Protocol server for accessing enhanced triple-source OpenAPI directory (APIs.guru + additional APIs + custom imports)

80 lines 2.47 kB
/** * Pagination utilities for handling large data fetches efficiently */ export interface PaginationOptions { chunkSize?: number; maxTotal?: number; concurrency?: number; } export interface PaginatedResult<T> { data: T[]; totalFetched: number; totalAvailable?: number; chunksProcessed: number; } /** * Fetch data in chunks to avoid overwhelming APIs and memory */ export declare class PaginationHelper { /** * Fetch all data using chunked pagination */ static fetchAllPaginated<T>(fetchFn: (page: number, limit: number) => Promise<{ data: T[]; total?: number; hasMore?: boolean; }>, options?: PaginationOptions): Promise<PaginatedResult<T>>; /** * Fetch data with parallel chunk processing (use with caution) */ static fetchParallelChunks<T>(fetchFn: (page: number, limit: number) => Promise<{ data: T[]; total?: number; }>, options?: PaginationOptions): Promise<PaginatedResult<T>>; /** * Smart pagination that chooses the best strategy based on estimated data size */ static smartFetch<T>(fetchFn: (page: number, limit: number) => Promise<{ data: T[]; total?: number; hasMore?: boolean; }>, options?: PaginationOptions): Promise<PaginatedResult<T>>; /** * Validate pagination parameters */ static validatePagination(page: number, limit: number): { page: number; limit: number; }; /** * Calculate pagination metadata */ static calculatePagination(totalItems: number, page: number, limit: number): { totalPages: number; hasNext: boolean; hasPrevious: boolean; startIndex: number; endIndex: number; }; /** * Simple delay utility */ private static delay; } /** * Memory-efficient data processor for large datasets */ export declare class DataProcessor { /** * Process data in batches to avoid memory issues */ static processBatches<T, R>(data: T[], processor: (batch: T[]) => Promise<R[]> | R[], batchSize?: number): Promise<R[]>; /** * Stream-like processing for very large datasets */ static streamProcess<T, R>(dataProvider: () => AsyncIterableIterator<T>, processor: (item: T) => Promise<R> | R, options?: { bufferSize?: number; onProgress?: (processed: number) => void; }): Promise<R[]>; } //# sourceMappingURL=pagination.d.ts.map