UNPKG

personalization-middleware

Version:

Next.js middleware for request-based personalization

96 lines (90 loc) 2.53 kB
import { NextRequest, NextResponse } from 'next/server'; interface MiddlewareConfig { /** * The API endpoint that evaluates segments based on context */ apiEndpoint: string; /** * API key for authentication */ apiKey: string; /** * Custom header name for segments (default: 'x-user-segments') */ headerName?: string; } declare function createMiddleware(config: MiddlewareConfig): (request: NextRequest) => Promise<NextResponse<unknown>>; declare const createPersonalizationMiddleware: typeof createMiddleware; declare const config: { matcher: string[]; }; interface DeviceInfo { browser: { name?: string; version?: string; }; os: { name?: string; version?: string; }; device: { type?: string; model?: string; vendor?: string; }; } interface UtmParams { source?: string; medium?: string; campaign?: string; term?: string; content?: string; } interface GeolocationInfo { country?: string; region?: string; city?: string; } interface CustomAttributes { [key: string]: string | number | boolean | null; } interface RequestContext { utm: UtmParams; geolocation?: GeolocationInfo; device: { deviceType?: string; browser?: string; os?: string; }; userId?: string; sessionId?: string; referrer?: string; customAttributes?: CustomAttributes; } interface Segment { id: string; name: string; description?: string; active?: boolean; ruleCount?: number; } interface SegmentEvaluationResult { segments: Segment[]; context: RequestContext; timestamp: number; requestId: string; } interface SegmentEvaluatorConfig { apiEndpoint: string; apiKey: string; timeout?: number; maxRetries?: number; } declare function collectRequestContext(request: NextRequest): RequestContext; declare class SegmentEvaluator { private config; constructor(config: SegmentEvaluatorConfig); evaluateSegments(context: RequestContext): Promise<SegmentEvaluationResult>; } declare function createSegmentEvaluator(config: SegmentEvaluatorConfig): SegmentEvaluator; export { type CustomAttributes, type DeviceInfo, type GeolocationInfo, type MiddlewareConfig, type RequestContext, type Segment, type SegmentEvaluationResult, type SegmentEvaluatorConfig, type UtmParams, collectRequestContext, config, createMiddleware, createPersonalizationMiddleware, createSegmentEvaluator };