UNPKG

hikma-engine

Version:

Code Knowledge Graph Indexer - A sophisticated TypeScript-based indexer that transforms Git repositories into multi-dimensional knowledge stores for AI agents

172 lines 4.72 kB
/** * @file Pagination utilities for API responses. * Provides comprehensive pagination support for large result sets. */ import { Request } from 'express'; import { PaginationMetadata } from '../types/responses'; /** * Pagination configuration interface. */ export interface PaginationConfig { defaultLimit: number; maxLimit: number; defaultPage: number; } /** * Pagination parameters extracted from request. */ export interface PaginationParams { page: number; limit: number; offset: number; } /** * Pagination result interface. */ export interface PaginationResult<T> { items: T[]; metadata: PaginationMetadata; hasMore: boolean; } /** * Cursor-based pagination parameters. */ export interface CursorPaginationParams { cursor?: string; limit: number; direction: 'forward' | 'backward'; } /** * Cursor pagination result interface. */ export interface CursorPaginationResult<T> { items: T[]; nextCursor?: string; previousCursor?: string; hasNext: boolean; hasPrevious: boolean; } /** * Pagination utility class for handling different pagination strategies. */ export declare class PaginationUtil { private config; constructor(config?: Partial<PaginationConfig>); /** * Extracts pagination parameters from request query. */ extractParams(req: Request): PaginationParams; /** * Creates pagination metadata. */ createMetadata(params: PaginationParams, totalResults?: number): PaginationMetadata; /** * Paginates an array of items. */ paginate<T>(items: T[], params: PaginationParams, totalCount?: number): PaginationResult<T>; /** * Creates pagination info for database queries. */ getDatabaseParams(params: PaginationParams): { limit: number; offset: number; }; /** * Validates pagination parameters. */ validateParams(params: Partial<PaginationParams>): { valid: boolean; errors: string[]; }; } /** * Cursor-based pagination utility for large datasets. */ export declare class CursorPagination { /** * Extracts cursor pagination parameters from request. */ static extractParams(req: Request, defaultLimit?: number): CursorPaginationParams; /** * Encodes a cursor from an object. */ static encodeCursor(data: Record<string, any>): string; /** * Decodes a cursor back to an object. */ static decodeCursor(cursor: string): Record<string, any> | null; /** * Creates a cursor pagination result. */ static createResult<T>(items: T[], limit: number, getCursorData: (item: T) => Record<string, any>): CursorPaginationResult<T>; } /** * Search-specific pagination utility. */ export declare class SearchPagination extends PaginationUtil { constructor(); /** * Creates pagination for search results with relevance sorting. */ paginateSearchResults<T>(results: T[], params: PaginationParams, totalCount?: number, searchMetadata?: { query: string; processingTime: number; totalIndexed: number; }): PaginationResult<T> & { searchMetadata?: typeof searchMetadata; }; /** * Calculates relevance-based pagination offsets. */ getRelevanceParams(params: PaginationParams, minRelevanceScore?: number): { limit: number; offset: number; minScore: number; }; } /** * Pagination link generator for HAL-style pagination. */ export declare class PaginationLinkGenerator { private baseUrl; constructor(baseUrl: string); /** * Generates pagination links for HAL responses. */ generateLinks(req: Request, metadata: PaginationMetadata, preserveQuery?: boolean): Record<string, { href: string; }>; } /** * Default pagination utility instance. */ export declare const pagination: PaginationUtil; /** * Default search pagination utility instance. */ export declare const searchPagination: SearchPagination; /** * Utility functions for common pagination operations. */ export declare const paginationUtils: { /** * Quick pagination parameter extraction. */ getParams: (req: Request) => PaginationParams; /** * Quick pagination for arrays. */ paginate: <T>(items: T[], req: Request, total?: number) => PaginationResult<T>; /** * Quick search pagination. */ paginateSearch: <T>(items: T[], req: Request, total?: number) => PaginationResult<T>; /** * Validates pagination query parameters. */ validate: (req: Request) => { valid: boolean; errors: string[]; }; }; //# sourceMappingURL=pagination.d.ts.map