@berish/validate
Version:
Validation of complex objects with support for validation maps, rules and decorators
57 lines • 2.95 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const berish_guid_1 = require("berish-guid");
const createRule_1 = require("./createRule");
const createRuleFlag_1 = require("./createRuleFlag");
const flags_1 = require("./flags");
function createSimpleRule(params) {
const ruleName = params.name || `rule-simple-${berish_guid_1.default.generateId()}`;
let cacheFlags = [];
return createRule_1.createRule({
name: ruleName,
conditionSync: params.conditionSync &&
(obj => {
const result = params.conditionSync(obj);
if (!result)
return flags_1.FLAG_CONDITION_FALSY;
if (result === true)
return flags_1.FLAG_CONDITION_TRUTHY;
const flagId = createRuleFlag_1.createRuleFlag(`ruleSimple-flagId-${berish_guid_1.default.generateId()}`);
cacheFlags.push([flagId, result]);
return flagId;
}),
conditionAsync: (params.conditionAsync || params.conditionSync) &&
((obj) => __awaiter(this, void 0, void 0, function* () {
const result = params.conditionAsync ? yield params.conditionAsync(obj) : params.conditionSync(obj);
if (!result)
return flags_1.FLAG_CONDITION_FALSY;
if (result === true)
return flags_1.FLAG_CONDITION_TRUTHY;
const flagId = createRuleFlag_1.createRuleFlag(`ruleSimple-flagId-${berish_guid_1.default.generateId()}`);
cacheFlags.push([flagId, result]);
return flagId;
})),
errorText: obj => {
const flag = obj.flag;
if (!flag || flag === flags_1.FLAG_CONDITION_FALSY)
return createRule_1.SYMBOL_ERROR_TEXT_DEFAULT;
const cacheResult = cacheFlags.filter(m => m[0] === flag)[0];
if (!cacheResult)
return createRule_1.SYMBOL_ERROR_TEXT_DEFAULT;
const errorText = cacheResult[1];
cacheFlags = cacheFlags.filter(m => m[0] !== flag);
return errorText;
},
});
}
exports.createSimpleRule = createSimpleRule;
//# sourceMappingURL=createSimpleRule.js.map