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