UNPKG

@noggin/elastic-noggin-sdk

Version:
45 lines (44 loc) 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.evalFormula = void 0; const operators_1 = require("rxjs/operators"); const EnoFactory_1 = require("./EnoFactory"); const send_1 = require("./send"); const error_1 = require("./error"); const lodash_1 = require("lodash"); const locale_1 = require("./locale"); function evalFormula(formulaStr, enSrvOptions, formulaOptions) { const enoFactory = new EnoFactory_1.EnoFactory("op/formula", "security/policy/op"); enoFactory.setField("op/formula:formula", [formulaStr]); if (formulaOptions) { if (formulaOptions.context) { enoFactory.setField("op/formula:context", [formulaOptions.context]); if (formulaOptions.contextBranch) { enoFactory.setField("op/formula:context-branch", [ formulaOptions.contextBranch, ]); } } if (formulaOptions.vars) { enoFactory.setField("op/formula:vars", [ JSON.stringify(formulaOptions.vars), ]); } } return (0, locale_1.getLangs)(enSrvOptions, (0, lodash_1.get)(formulaOptions, "lang")).pipe((0, operators_1.map)((langs) => { enoFactory.setField("op/formula:lang", langs); return enoFactory.makeEno(); }), (0, operators_1.switchMap)((formulaOp) => { return (0, send_1.send)([formulaOp], enSrvOptions).pipe((0, operators_1.tap)(error_1.checkBatchForError), (0, operators_1.map)((batch) => { for (let i = 0; i < batch.length; i++) { const eno = batch[i]; if (eno.getType() === "response/formula" && eno.getFieldStringValue("response/formula:op") === formulaOp.tip) { return eno.getFieldValues("response/formula:result"); } } throw new Error("error/message/server/internal"); })); })); } exports.evalFormula = evalFormula;