@noggin/elastic-noggin-sdk
Version:
Elastic Noggin SDK
45 lines (44 loc) • 1.97 kB
JavaScript
;
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;