UNPKG

@react-awesome-query-builder/core

Version:
79 lines (77 loc) 3.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.mongoFormatOp2 = exports.mongoFormatOp1 = exports.mongoFieldUnescape = exports.mongoFieldEscape = exports.mongoEmptyValue = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var mongoEmptyValue = exports.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 var mongoFormatOp1 = exports.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 ? (0, _defineProperty2["default"])({}, field, { "$not": (0, _defineProperty2["default"])({}, mop, mv) }) : { "$not": (0, _defineProperty2["default"])({}, mop, [$field, mv]) }; } else { if (!useExpr && (!mop || mop == "$eq")) return (0, _defineProperty2["default"])({}, field, mv); // short form return !useExpr ? (0, _defineProperty2["default"])({}, field, (0, _defineProperty2["default"])({}, mop, mv)) : (0, _defineProperty2["default"])({}, mop, [$field, mv]); } }; var mongoFormatOp2 = exports.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 ? (0, _defineProperty2["default"])({}, field, { "$not": (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, mops[0], values[0]), mops[1], values[1]) }) : { "$not": { "$and": [(0, _defineProperty2["default"])({}, mops[0], [$field, values[0]]), (0, _defineProperty2["default"])({}, mops[1], [$field, values[1]])] } }; } else { return !useExpr ? (0, _defineProperty2["default"])({}, field, (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, mops[0], values[0]), mops[1], values[1])) : { "$and": [(0, _defineProperty2["default"])({}, mops[0], [$field, values[0]]), (0, _defineProperty2["default"])({}, mops[1], [$field, values[1]])] }; } }; var mongoFieldEscape = exports.mongoFieldEscape = function mongoFieldEscape(input) { return input.replace(/\$/g, "\uFF04"); }; var mongoFieldUnescape = exports.mongoFieldUnescape = function mongoFieldUnescape(input) { return input.replace(/\uFF04/g, "$"); };