@kanadi/core
Version:
Multi-Layer CAPTCHA Framework with customizable validators and challenge bundles
19 lines (15 loc) • 607 B
text/typescript
import "reflect-metadata";
import type { BanRuleMetadata } from "./types";
export function BanRule(metadata: BanRuleMetadata) {
return <T extends { new (...args: any[]): {} }>(constructor: T) => {
Reflect.defineMetadata("ban:metadata", metadata, constructor);
Reflect.defineMetadata("ban:registered", true, constructor);
return constructor;
};
}
export function getBanRuleMetadata(target: any): BanRuleMetadata | undefined {
return Reflect.getMetadata("ban:metadata", target);
}
export function isBanRule(target: any): boolean {
return Reflect.getMetadata("ban:registered", target) === true;
}