@confluentinc/schemaregistry
Version:
Node.js client for Confluent Schema Registry
45 lines (44 loc) • 1.36 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JsonataExecutor = void 0;
const rule_registry_1 = require("../../serde/rule-registry");
const lru_cache_1 = require("lru-cache");
const jsonata_1 = __importDefault(require("jsonata"));
class JsonataExecutor {
constructor() {
this.config = null;
this.cache = new lru_cache_1.LRUCache({ max: 1000 });
}
/**
* Register the JSONata rule executor with the rule registry.
*/
static register() {
const executor = new JsonataExecutor();
rule_registry_1.RuleRegistry.registerRuleExecutor(executor);
return executor;
}
configure(clientConfig, config) {
this.config = config;
}
type() {
return "JSONATA";
}
async transform(ctx, msg) {
let expr = ctx.rule.expr;
if (expr == null) {
return msg;
}
let jsonataExpr = this.cache.get(expr);
if (jsonataExpr == null) {
jsonataExpr = (0, jsonata_1.default)(expr);
this.cache.set(expr, jsonataExpr);
}
return jsonataExpr.evaluate(msg);
}
async close() {
}
}
exports.JsonataExecutor = JsonataExecutor;