UNPKG

unomi-node

Version:
53 lines (52 loc) 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function queryBuilder(query) { var validatorRegex = /^(\w\.?)*[\s?]*[=|<|>|>=|<=|\!=|@contains|@!contains|\$|\^|@regex|@in|@!in|@all][\s?]*(".+"|\d+|true|false)$/i; var key = /^(\w\.?)*/i; var value = /(".+"|\d+|true|false)$/i; var operator = /[=|<|>|>=|<=|\!=|@contains|@!contains|\$|\^|@regex|@in|@!in|@all][\s?]/i; if (!validatorRegex.test(query)) { throw new Error("Invalid query: " + query); } var parseOperator = function () { switch (query.match(operator)[0].toLowerCase()) { case "=": return "equals"; case "!=": return "notEquals"; case ">=": return "greaterThanOrEqualTo"; case ">": return "greaterThan"; case "<=": return "lessThanOrEqualTo"; case "<": return "lessThan"; case "@contains": return "contains"; case "@!contains": return "notContains"; case "^": return "startsWith"; case "$": return "endsWith"; case "@regex": return "matchesRegex"; case "@in": return "in"; case "@!in": return "notIn"; case "@all": return "all"; } }; var parseValue = query.match(value)[0] .replace(/^"/, "") .replace(/"$/, ""); return { key: query.match(key)[0], value: parseValue, operator: parseOperator() }; } exports.queryBuilder = queryBuilder;