/** * Deep Pagination Service * * ARCHITECTURE: 2025-10-08 * Implements Elasticsearch search_after for infinite scroll/pagination. * Deterministic sorting with createdAt + _id fallback ensures consistency. */ import { Client } from '@elastic/elasticsearch'; import { RequestContext } from '@vendure/core'; import { CursorSearchInput, CursorSearchResult } from './types'; export declare class DeepPaginationService { private client; private indexPrefix; constructor(client: Client, indexPrefix: string); /** * Execute cursor-based search using Elasticsearch search_after */ cursorSearch(ctx: RequestContext, input: CursorSearchInput): Promise>; /** * Build Elasticsearch query from input */ private buildQuery; /** * Build deterministic sort for search_after * CRITICAL: Must always include a unique tiebreaker * * ROOT CAUSE ANALYSIS: 2025-10-08 * - Vendure variant index doesn't have createdAt field * - _id fielddata is disabled in ES 9.x (requires expensive fielddata) * - sku is TEXT field (not KEYWORD) - cannot sort without fielddata * - productVariantId is KEYWORD field and unique per variant ✅ */ private buildSort; /** * Encode search_after values as base64 cursor */ private encodeCursor; /** * Decode base64 cursor to search_after values */ private decodeCursor; } //# sourceMappingURL=deep-pagination.service.d.ts.map