UNPKG

mingo

Version:

MongoDB query language for in-memory objects

21 lines (20 loc) 720 B
import { computeValue } from "../../../core/_internal"; import { assert, isArray, isNil, isNumber } from "../../../util"; import { errExpectArray, errInvalidArgs } from "../_internal"; const $pow = (obj, expr, options) => { assert(isArray(expr) && expr.length === 2, "$pow expects array(2)"); const args = computeValue(obj, expr, null, options); const foe = options.failOnError; if (args.some(isNil)) return null; if (!args.every(isNumber)) { return errExpectArray(foe, "$pow", { size: 2, type: "number" }); } const [n, exponent] = args; return n === 0 && exponent < 0 ? errInvalidArgs(foe, "$pow cannot raise 0 to a negative exponent") : Math.pow(n, exponent); }; export { $pow };