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
TypeScript
/**
* 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