UNPKG

mongo-dot-notation

Version:
37 lines (36 loc) 1.14 kB
"use strict"; 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;