datatypes-validation
Version:
     
49 lines • 2.33 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const Rules_1 = require("../Rules");
const ObjectOfRules_1 = require("../types/ObjectOfRules");
function arrayOf(arrayOfArg) {
return (field, globalFields) => __awaiter(this, void 0, void 0, function* () {
const isNull = field.value !== undefined && field.value !== null;
if (!field.error && isNull) {
if (Array.isArray(field.value)) {
let fields = { [field.path]: field };
let rules;
if (arrayOfArg instanceof Rules_1.Rules) {
rules = arrayOfArg;
}
else if (arrayOfArg instanceof Object) {
rules = new ObjectOfRules_1.ObjectOfRules().objectOf(arrayOfArg);
}
else {
throw new Error('arrayOf accept just object or Rules class instance');
}
const loop = field.value.map((value, index) => __awaiter(this, void 0, void 0, function* () {
const schema = { [index]: rules };
const result = yield Rules_1.Rules.checkRules(schema, { [index]: value }, {
globalFields,
prefix: field.path
});
fields = Object.assign({}, fields, result);
}));
yield Promise.all(loop);
return fields;
}
else {
field.applyError('invalidValue');
return { [field.path]: field };
}
}
return { [field.path]: field };
});
}
exports.arrayOf = arrayOf;
//# sourceMappingURL=arrayOf.js.map