algebraic-captcha
Version:
NodeJS math captcha package with algebraic formulas
98 lines • 2.72 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Joi = require("joi");
class Config {
constructor(params) {
const result = Joi.validate(params, this.schema);
if (result.error) {
throw result.error;
}
this._validated = result.value;
}
get width() {
return this._validated.width;
}
get height() {
return this._validated.height;
}
get background() {
return this._validated.background;
}
get minValue() {
return this._validated.minValue;
}
get maxValue() {
return this._validated.maxValue;
}
get noise() {
return this._validated.noise;
}
get operandAmount() {
return this._validated.operandAmount;
}
get operandTypes() {
return this._validated.operandTypes;
}
isFormulaMode() {
return this._validated.mode === Config.MODE_FORMULA;
}
get targetSymbol() {
return this._validated.targetSymbol;
}
get schema() {
const colorRegexp = /^
return Joi.object({
background: Joi.string()
.min(3)
.max(7)
.trim()
.regex(colorRegexp)
.default('#ffffff'),
height: Joi.number()
.integer()
.min(20)
.max(1000)
.default(100),
maxValue: Joi.number()
.integer()
.min(1)
.max(10000)
.default(10),
minValue: Joi.number()
.integer()
.min(1)
.max(10000)
.default(1),
mode: Joi.string()
.valid([Config.MODE_FORMULA, Config.MODE_EQUATION])
.default(Config.MODE_FORMULA),
noise: Joi.number()
.integer()
.min(1)
.max(10)
.default(1),
operandAmount: Joi.number()
.integer()
.min(1)
.max(5)
.default(1),
operandTypes: Joi.array()
.items(Joi.string())
.default(['+', '-']),
targetSymbol: Joi.string()
.min(1)
.max(3)
.trim()
.default('?'),
width: Joi.number()
.integer()
.min(20)
.max(1000)
.default(200),
});
}
}
Config.MODE_FORMULA = 'formula';
Config.MODE_EQUATION = 'equation';
exports.Config = Config;
//# sourceMappingURL=config.js.map