UNPKG

@react-awesome-query-builder/core

Version:
72 lines (71 loc) 2.78 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; export var mongoEmptyValue = function mongoEmptyValue(fieldDef) { var v = ""; var type = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.type; if (type == "number") { v = 0; } return v; }; // helpers for mongo format export var mongoFormatOp1 = function mongoFormatOp1(mop, mc, opNot, field, _op, value, not, useExpr, valueSrc, valueType, opDef, operatorOptions, fieldDef) { var $field = typeof field == "string" && !field.startsWith("$") ? "$" + field : field; var mv = mc(value, fieldDef); if (mv === undefined) return undefined; var neg = not ^ opNot; if (useExpr && mop == "$nin") { // There is only `$in` aggregation operator but not `$nin` (`$nin` is only a query operator) // https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/ neg = !neg; mop = "$in"; } if (useExpr && mop == "$regex") { // https://stackoverflow.com/questions/35750920/regex-as-filter-in-projection var e = { "$regexFind": { input: $field, regex: mv } }; if (neg) { e = { "$not": e }; } return e; } if (neg) { // if (!useExpr && (!mop || mop == "$eq")) // return { [field]: { "$ne": mv } }; // short form return !useExpr ? _defineProperty({}, field, { "$not": _defineProperty({}, mop, mv) }) : { "$not": _defineProperty({}, mop, [$field, mv]) }; } else { if (!useExpr && (!mop || mop == "$eq")) return _defineProperty({}, field, mv); // short form return !useExpr ? _defineProperty({}, field, _defineProperty({}, mop, mv)) : _defineProperty({}, mop, [$field, mv]); } }; export var mongoFormatOp2 = function mongoFormatOp2(mops, opNot, field, _op, values, not, useExpr, valueSrcs, valueTypes, opDef, operatorOptions, fieldDef) { var $field = typeof field == "string" && !field.startsWith("$") ? "$" + field : field; if (not ^ opNot) { return !useExpr ? _defineProperty({}, field, { "$not": _defineProperty(_defineProperty({}, mops[0], values[0]), mops[1], values[1]) }) : { "$not": { "$and": [_defineProperty({}, mops[0], [$field, values[0]]), _defineProperty({}, mops[1], [$field, values[1]])] } }; } else { return !useExpr ? _defineProperty({}, field, _defineProperty(_defineProperty({}, mops[0], values[0]), mops[1], values[1])) : { "$and": [_defineProperty({}, mops[0], [$field, values[0]]), _defineProperty({}, mops[1], [$field, values[1]])] }; } }; export var mongoFieldEscape = function mongoFieldEscape(input) { return input.replace(/\$/g, "\uFF04"); }; export var mongoFieldUnescape = function mongoFieldUnescape(input) { return input.replace(/\uFF04/g, "$"); };