UNPKG

mingo

Version:

MongoDB query language for in-memory objects

21 lines (20 loc) 702 B
import { ComputeOptions, computeValue } from "../../../core/_internal"; import { assert, isArray, isNil, truthy } from "../../../util/_internal"; const $filter = (obj, expr, options) => { const input = computeValue(obj, expr.input, null, options); if (isNil(input)) return null; assert(isArray(input), "$filter 'input' expression must resolve to an array"); const copts = ComputeOptions.init(options); const k = expr.as || "this"; const locals = { variables: { [k]: null } }; return input.filter((o) => { locals.variables[k] = o; const b = computeValue(obj, expr.cond, null, copts.update(locals)); return truthy(b, options.useStrictMode); }); }; export { $filter };