@centinel/nextjs
Version:
Package designed to add Centinel Analytica functionality to Next.js applications
66 lines (65 loc) • 2.02 kB
TypeScript
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 };