@kanadi/core
Version:
Multi-Layer CAPTCHA Framework with customizable validators and challenge bundles
81 lines (68 loc) • 1.79 kB
text/typescript
import { Schema } from "redis-om";
export interface KanadiContextEntity {
sessionId: string;
userId: string;
bundleId?: string;
ip: string;
userAgent: string;
referrer?: string;
}
export const kanadiContextSchema = new Schema("KanadiContext", {
sessionId: { type: "string" },
userId: { type: "string" },
bundleId: { type: "string" },
ip: { type: "string" },
userAgent: { type: "string" },
referrer: { type: "string" },
});
export interface KanadiBundleSessionEntity {
bundleId: string;
validatorIds: string[];
totalScore: number;
}
export const kanadiBundleSessionSchema = new Schema("KanadiBundleSession", {
bundleId: { type: "string" },
validatorIds: { type: "string[]" },
totalScore: { type: "number" },
});
export interface KanadiValidatorSessionEntity {
validatorId: string;
data: string; // JSON serialized
}
export const kanadiValidatorSessionSchema = new Schema(
"KanadiValidatorSession",
{
validatorId: { type: "string" },
data: { type: "string" },
},
);
export interface KanadiUserEntity {
deviceIds: string[];
activeDeviceId: string;
}
export const kanadiUserSchema = new Schema("KanadiUser", {
deviceIds: { type: "string[]" },
activeDeviceId: { type: "string" },
});
export interface KanadiDeviceEntity {
sessionId: string;
ip: string;
userAgent: string;
referrer?: string;
createdAt: Date;
historyIds: string[];
}
export const kanadiDeviceSchema = new Schema("KanadiDevice", {
sessionId: { type: "string" },
ip: { type: "string" },
userAgent: { type: "string" },
referrer: { type: "string" },
createdAt: { type: "date" },
historyIds: { type: "string[]" },
});
export interface KanadiHistoryEntity {
sessionId: string;
}
export const kanadiHistorySchema = new Schema("KanadiHistory", {
sessionId: { type: "string" },
});