UNPKG

pretur.validation

Version:
115 lines 12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); function combineValidators() { var validators = []; for (var _i = 0; _i < arguments.length; _i++) { validators[_i] = arguments[_i]; } return function combinedValidator(value) { return tslib_1.__awaiter(this, void 0, void 0, function () { var result, _i, validators_1, validator, error; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: result = undefined; _i = 0, validators_1 = validators; _a.label = 1; case 1: if (!(_i < validators_1.length)) return [3 /*break*/, 4]; validator = validators_1[_i]; if (!(typeof validator === 'function')) return [3 /*break*/, 3]; return [4 /*yield*/, validator(value)]; case 2: error = _a.sent(); if (error) { if (!result) { result = []; } if (Array.isArray(error)) { result.push.apply(result, error); } else { result.push(error); } } _a.label = 3; case 3: _i++; return [3 /*break*/, 1]; case 4: return [2 /*return*/, result]; } }); }); }; } exports.combineValidators = combineValidators; function formatValidationError(formatter, error, join) { if (join === void 0) { join = ', '; } if (!error) { return ''; } if (!Array.isArray(error)) { return formatter(error); } return error.map(function (bundle) { return formatter(bundle); }).filter(Boolean).join(join); } exports.formatValidationError = formatValidationError; function buildValidation(name, server, validate) { if (server) { return { name: name, server: true, validate: function (requester, data) { return tslib_1.__awaiter(this, void 0, void 0, function () { var error; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!(validate && typeof validate === 'object' && typeof validate.catchEarly === 'function')) return [3 /*break*/, 2]; return [4 /*yield*/, validate.catchEarly(data)]; case 1: error = _a.sent(); if (error) { return [2 /*return*/, { name: name, type: 'validate', errors: Array.isArray(error) ? error : [error], }]; } _a.label = 2; case 2: return [2 /*return*/, requester.validate(name, data)]; } }); }); }, }; } return { name: name, server: false, validate: function (_requester, data) { return tslib_1.__awaiter(this, void 0, void 0, function () { var error; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!validate || typeof validate !== 'function') { return [2 /*return*/, { name: name, type: 'validate', errors: [] }]; } return [4 /*yield*/, validate(data)]; case 1: error = _a.sent(); return [2 /*return*/, { name: name, type: 'validate', errors: Array.isArray(error) ? error : error ? [error] : [], }]; } }); }); }, }; } exports.buildValidation = buildValidation; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1CQTtJQUFxQyxvQkFBNkI7U0FBN0IsVUFBNkIsRUFBN0IscUJBQTZCLEVBQTdCLElBQTZCO1FBQTdCLCtCQUE2Qjs7SUFDaEUsTUFBTSxDQUFDLDJCQUFpQyxLQUFROzs7Ozs7d0JBQzFDLE1BQU0sR0FBeUIsU0FBUyxDQUFDOzhCQUNYLEVBQVYseUJBQVU7Ozs2QkFBVixDQUFBLHdCQUFVLENBQUE7d0JBQXZCLFNBQVM7NkJBQ2QsQ0FBQSxPQUFPLFNBQVMsS0FBSyxVQUFVLENBQUEsRUFBL0Isd0JBQStCO3dCQUNuQixxQkFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUE7O3dCQUE5QixLQUFLLEdBQUcsU0FBc0I7d0JBQ3BDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7NEJBQ1YsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dDQUNaLE1BQU0sR0FBRyxFQUFFLENBQUM7NEJBQ2QsQ0FBQzs0QkFDRCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQ0FDekIsTUFBTSxDQUFDLElBQUksT0FBWCxNQUFNLEVBQVMsS0FBSyxFQUFFOzRCQUN4QixDQUFDOzRCQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3JCLENBQUM7d0JBQ0gsQ0FBQzs7O3dCQVptQixJQUFVLENBQUE7OzRCQWVsQyxzQkFBTyxNQUFNLEVBQUM7Ozs7S0FDZixDQUFDO0FBQ0osQ0FBQztBQXBCRCw4Q0FvQkM7QUFFRCwrQkFDRSxTQUF5QixFQUN6QixLQUFzQixFQUN0QixJQUFXO0lBQVgscUJBQUEsRUFBQSxXQUFXO0lBRVgsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1gsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFqQixDQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBZEQsc0RBY0M7QUFZRCx5QkFDRSxJQUFZLEVBQ1osTUFBZSxFQUNmLFFBQTBDO0lBRTFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDWCxNQUFNLENBQUM7WUFDTCxJQUFJLE1BQUE7WUFDSixNQUFNLEVBQUUsSUFBSTtZQUNOLFFBQVEsWUFBQyxTQUFvQixFQUFFLElBQU87Ozs7OztxQ0FDdEMsQ0FBQSxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLE9BQU8sUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUEsRUFBckYsd0JBQXFGO2dDQUN6RSxxQkFBTSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFBOztnQ0FBdkMsS0FBSyxHQUFHLFNBQStCO2dDQUM3QyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29DQUNWLE1BQU0sZ0JBQUM7NENBQ0wsSUFBSSxNQUFBOzRDQUNKLElBQUksRUFBRSxVQUFVOzRDQUNoQixNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzt5Q0FDL0MsRUFBQztnQ0FDSixDQUFDOztvQ0FFSCxzQkFBTyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBQzs7OzthQUN2QztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDO1FBQ0wsSUFBSSxNQUFBO1FBQ0osTUFBTSxFQUFFLEtBQUs7UUFDUCxRQUFRLFlBQUMsVUFBcUIsRUFBRSxJQUFPOzs7Ozs7NEJBQzNDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0NBQ2hELE1BQU0sZ0JBQUMsRUFBRSxJQUFJLE1BQUEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBQzs0QkFDaEQsQ0FBQzs0QkFFYSxxQkFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUE7OzRCQUE1QixLQUFLLEdBQUcsU0FBb0I7NEJBRWxDLHNCQUFPO29DQUNMLElBQUksTUFBQTtvQ0FDSixJQUFJLEVBQUUsVUFBVTtvQ0FDaEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2lDQUM1RCxFQUFDOzs7O1NBQ0g7S0FDRixDQUFDO0FBQ0osQ0FBQztBQTFDRCwwQ0EwQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdW5kbGUsIEZvcm1hdHRlciB9IGZyb20gJ3ByZXR1ci5pMThuJztcclxuaW1wb3J0IHsgUmVxdWVzdGVyLCBWYWxpZGF0ZVJlc3VsdCB9IGZyb20gJ3ByZXR1ci5zeW5jJztcclxuXHJcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvciA9IHVuZGVmaW5lZCB8IEJ1bmRsZSB8IEJ1bmRsZVtdO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0b3I8VD4ge1xyXG4gICh2YWx1ZTogVCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9yPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uPFQ+IHtcclxuICBzZXJ2ZXI6IGJvb2xlYW47XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHZhbGlkYXRlKHJlcXVlc3RlcjogUmVxdWVzdGVyLCBkYXRhOiBUKTogUHJvbWlzZTxWYWxpZGF0ZVJlc3VsdD47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyT3B0aW9uczxUPiB7XHJcbiAgY2F0Y2hFYXJseT86IFZhbGlkYXRvcjxUPjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVWYWxpZGF0b3JzPFQ+KC4uLnZhbGlkYXRvcnM6IFZhbGlkYXRvcjxUPltdKTogVmFsaWRhdG9yPFQ+IHtcclxuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gY29tYmluZWRWYWxpZGF0b3IodmFsdWU6IFQpIHtcclxuICAgIGxldCByZXN1bHQ6IEJ1bmRsZVtdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xyXG4gICAgICBpZiAodHlwZW9mIHZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgdmFsaWRhdG9yKHZhbHVlKTtcclxuICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3IpKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmVycm9yKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFZhbGlkYXRpb25FcnJvcihcclxuICBmb3JtYXR0ZXI6IEZvcm1hdHRlcjxhbnk+LFxyXG4gIGVycm9yOiBWYWxpZGF0aW9uRXJyb3IsXHJcbiAgam9pbiA9ICcsICcsXHJcbik6IHN0cmluZyB7XHJcbiAgaWYgKCFlcnJvcikge1xyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFBcnJheS5pc0FycmF5KGVycm9yKSkge1xyXG4gICAgcmV0dXJuIGZvcm1hdHRlcihlcnJvcik7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZXJyb3IubWFwKGJ1bmRsZSA9PiBmb3JtYXR0ZXIoYnVuZGxlKSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oam9pbik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZFZhbGlkYXRpb248VD4oXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIHNlcnZlcjogdHJ1ZSxcclxuICBvcHRpb25zPzogU2VydmVyT3B0aW9uczxUPixcclxuKTogVmFsaWRhdGlvbjxUPjtcclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVmFsaWRhdGlvbjxUPihcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgc2VydmVyOiBmYWxzZSxcclxuICB2YWxpZGF0ZTogVmFsaWRhdG9yPFQ+LFxyXG4pOiBWYWxpZGF0aW9uPFQ+O1xyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRWYWxpZGF0aW9uPFQ+KFxyXG4gIG5hbWU6IHN0cmluZyxcclxuICBzZXJ2ZXI6IGJvb2xlYW4sXHJcbiAgdmFsaWRhdGU/OiBWYWxpZGF0b3I8VD4gfCBTZXJ2ZXJPcHRpb25zPFQ+LFxyXG4pOiBWYWxpZGF0aW9uPFQ+IHtcclxuICBpZiAoc2VydmVyKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lLFxyXG4gICAgICBzZXJ2ZXI6IHRydWUsXHJcbiAgICAgIGFzeW5jIHZhbGlkYXRlKHJlcXVlc3RlcjogUmVxdWVzdGVyLCBkYXRhOiBUKSB7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRlICYmIHR5cGVvZiB2YWxpZGF0ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbGlkYXRlLmNhdGNoRWFybHkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGNvbnN0IGVycm9yID0gYXdhaXQgdmFsaWRhdGUuY2F0Y2hFYXJseShkYXRhKTtcclxuICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgICAgdHlwZTogJ3ZhbGlkYXRlJyxcclxuICAgICAgICAgICAgICBlcnJvcnM6IEFycmF5LmlzQXJyYXkoZXJyb3IpID8gZXJyb3IgOiBbZXJyb3JdLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVxdWVzdGVyLnZhbGlkYXRlKG5hbWUsIGRhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBuYW1lLFxyXG4gICAgc2VydmVyOiBmYWxzZSxcclxuICAgIGFzeW5jIHZhbGlkYXRlKF9yZXF1ZXN0ZXI6IFJlcXVlc3RlciwgZGF0YTogVCkge1xyXG4gICAgICBpZiAoIXZhbGlkYXRlIHx8IHR5cGVvZiB2YWxpZGF0ZSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiB7IG5hbWUsIHR5cGU6ICd2YWxpZGF0ZScsIGVycm9yczogW10gfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCB2YWxpZGF0ZShkYXRhKTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZSxcclxuICAgICAgICB0eXBlOiAndmFsaWRhdGUnLFxyXG4gICAgICAgIGVycm9yczogQXJyYXkuaXNBcnJheShlcnJvcikgPyBlcnJvciA6IGVycm9yID8gW2Vycm9yXSA6IFtdLFxyXG4gICAgICB9O1xyXG4gICAgfSxcclxuICB9O1xyXG59XHJcbiJdfQ==