UNPKG

@centinel/nextjs

Version:

Package designed to add Centinel Analytica functionality to Next.js applications

66 lines (65 loc) 2.02 kB
import { NextRequest } from "next/server"; import { CentinelConfig } from "./types"; declare class CentinelApiValidator { private config; constructor(config: CentinelConfig); isBot(request: NextRequest): Promise<boolean>; private extractClientInfo; private buildValidationPayload; private validateRequest; private setCookies; private getRealHost; } /** * Creates a request validation function for manual validation in API routes. * * @param config - Centinel configuration object * @returns Object with verify function * * @example * ```typescript * // app/api/login/route.ts * import { createRequestValidator } from '@centinel/nextjs'; * import { NextRequest, NextResponse } from 'next/server'; * * const { isBot } = createRequestValidator({ * siteKey: process.env.CENTINEL_SITE_KEY!, * secretKey: process.env.CENTINEL_SECRET_KEY! * }); * * export async function POST(request: NextRequest) { * if (await isBot(request)) { * return NextResponse.json({ error: 'You have been blocked' }, { status: 403 }); * } * return handleLogin(request); * } * ``` */ export declare function createRequestValidator(config: CentinelConfig): { isBot: (request: NextRequest) => Promise<boolean>; }; /** * Creates request validation function using environment variables for configuration. * * @returns Object with verify function * * @example * ```typescript * // app/api/login/route.ts * import { createRequestValidatorFromEnv } from '@centinel/nextjs'; * import { NextRequest, NextResponse } from 'next/server'; * * const { isBot } = createRequestValidatorFromEnv(); * * export async function POST(request: NextRequest) { * if (await isBot(request)) { * return NextResponse.json({ error: 'You have been blocked' }, { status: 403 }); * } * return handleLogin(request); * } * ``` */ export declare function createRequestValidatorFromEnv(): { isBot: (request: NextRequest) => Promise<boolean>; }; export { CentinelApiValidator };