UNPKG

@kanadi/core

Version:

Multi-Layer CAPTCHA Framework with customizable validators and challenge bundles

47 lines (39 loc) 1.1 kB
import { type DynamicModule, Global, Module } from "@nestjs/common"; import { KanadiClient } from "./client"; import { KanadiGatewayController } from "./gateway.controller"; import { KanadiGatewayService } from "./gateway.service"; import type { KanadiGatewayOptions } from "./types"; @Global() @Module({}) export class KanadiGatewayModule { static forRoot( options: KanadiGatewayOptions, gatewayHandler?: any, ): DynamicModule { const client = new KanadiClient(options.namespace); const validatorInstances = options.validators.map( (ValidatorClass) => new ValidatorClass(), ); client.registerValidators(validatorInstances); if (options.config) { client.registerDatabaseConfigs(options.config); } const providers = [ { provide: KanadiClient, useValue: client, }, KanadiGatewayService, ]; if (gatewayHandler) { providers.push(gatewayHandler); } return { module: KanadiGatewayModule, controllers: [KanadiGatewayController], providers, exports: [KanadiClient, KanadiGatewayService], imports: options.modules || [], }; } }