UNPKG

@confluentinc/schemaregistry

Version:
45 lines (44 loc) 1.36 kB
"use strict"; 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;