UNPKG

type-arango

Version:

ArangoDB Foxx decorators and utilities for TypeScript

36 lines 1.48 kB
"use strict"; 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