UNPKG

mingo

Version:

MongoDB query language for in-memory objects

26 lines (25 loc) 750 B
import { evalExpr } 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 = evalExpr(obj, expr, options); const foe = options.failOnError; let t_num = true; for (const v of args) { if (isNil(v)) return null; t_num &&= isNumber(v); } if (!t_num) { return errExpectArray(foe, "$pow", { size: 2, type: "number" }); } if (args[0] === 0 && args[1] < 0) errInvalidArgs(foe, "$pow cannot raise 0 to a negative exponent"); return Math.pow(args[0], args[1]); }; export { $pow };