type-arango
Version:
ArangoDB Foxx decorators and utilities for TypeScript
36 lines • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Joi = void 0;
var oJoi = require("joi");
// can't import them because of rc
var OPERATORS = ['==', '!=', '<', '<=', '>', '>=', 'IN', 'NOT IN', 'LIKE', '=~', '!~', 'HAS'];
var joiOperators = oJoi.string().valid(OPERATORS);
var operator = {
name: 'operator',
params: {
allow: oJoi.alternatives([joiOperators.required(), oJoi.array().items(joiOperators)])
},
setup: function (_a) {
var allow = _a.allow;
var sep = require('./index').config.paramOperatorSeparator;
allow = typeof allow === 'string' ? [allow] : allow || OPERATORS;
this._flags.operators = allow;
this._flags.regexp = new RegExp('^(' + OPERATORS.join('|') + '){1}[\\' + sep + '|' + encodeURI(sep).split('').join('\\') + ']{1}(.*)$');
},
validate: function (_param, value, state, options) {
var match = value.match(this._flags.regexp);
if (match && !this._flags.operators.includes(match[1])) {
return this.createError('string.operator', { i: match[1], o: this._flags.operators }, state, options);
}
return [match ? match[1] : '==', match ? match[2] : value];
}
};
var Joi = oJoi
.extend({
name: 'string',
base: oJoi.string(),
language: { operator: 'operator "{{i}}" must be one of {{o}}' },
rules: [operator]
});
exports.Joi = Joi;
//# sourceMappingURL=joi.js.map