mongo-dot-notation
Version:
Transform objects to MongoDB update instructions
37 lines (36 loc) • 1.14 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.create = exports.getValue = exports.getType = exports.isOperator = void 0;
const OPERATOR_TYPE = Symbol('type');
const OPERATOR_VALUE = Symbol('value');
/**
* Checks if a given object is an operator.
* @example
* ```ts
* isOperator($set(1)); // true
* isOperator({}); // false
* ```
* @param obj the object to check
* @returns `true` if the objects is an operator
*/
const isOperator = (obj) => typeof obj === 'object' && !!obj && OPERATOR_TYPE in obj;
exports.isOperator = isOperator;
const getType = (operator) => operator[OPERATOR_TYPE];
exports.getType = getType;
const getValue = (operator) => operator[OPERATOR_VALUE];
exports.getValue = getValue;
const create = (type, value, obj) => Object.defineProperties(obj !== null && obj !== void 0 ? obj : {}, {
[OPERATOR_TYPE]: {
configurable: false,
enumerable: false,
writable: false,
value: type,
},
[OPERATOR_VALUE]: {
configurable: false,
enumerable: false,
writable: false,
value,
},
});
exports.create = create;
;