UNPKG

@kanadi/core

Version:

Multi-Layer CAPTCHA Framework with customizable validators and challenge bundles

53 lines (43 loc) 1.28 kB
import type { DatabaseConfig } from "../database/types"; import type { IChallengeValidator } from "../middleware/types"; import { KanadiContext } from "./context"; export class KanadiClient { private validators: Map<string, IChallengeValidator> = new Map(); private databaseConfigs: DatabaseConfig[] = []; private namespace: string; constructor(namespace: string) { this.namespace = namespace; } registerValidators(validators: IChallengeValidator[]): void { for (const validator of validators) { const metadata = Reflect.getMetadata( "middleware:metadata", validator.constructor, ); if (metadata) { this.validators.set(metadata.id, validator); } } } registerDatabaseConfigs(configs: DatabaseConfig[]): void { this.databaseConfigs = configs; } createContext( sessionId: string, metadata?: Record<string, any>, ): KanadiContext { return new KanadiContext(sessionId, this.validators, metadata); } getValidator(validatorId: string): IChallengeValidator | undefined { return this.validators.get(validatorId); } getValidators(): Map<string, IChallengeValidator> { return this.validators; } getNamespace(): string { return this.namespace; } getDatabaseConfigs(): DatabaseConfig[] { return this.databaseConfigs; } }