@meterio/flex-framework
Version:
A library implements Meter Flex interface
66 lines • 4.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.newEventVisitor = void 0;
const filter_1 = require("./filter");
const rules_1 = require("./rules");
function newEventVisitor(ctx, addr, coder) {
const encode = (indexed) => {
const topics = coder.encode(indexed);
return {
address: addr,
topic0: topics[0] || undefined,
topic1: topics[1] || undefined,
topic2: topics[2] || undefined,
topic3: topics[3] || undefined,
topic4: topics[4] || undefined
};
};
return {
asCriteria: indexed => {
try {
return encode(indexed);
}
catch (err) {
throw new rules_1.BadParameter(`arg0: can not be encoded (${err.message})`);
}
},
filter: (indexed) => {
rules_1.test(indexed, [{}], 'arg0');
if (indexed.length === 0) {
indexed = [{}];
}
const criteriaSet = indexed.map((o, i) => {
try {
return encode(o);
}
catch (err) {
throw new rules_1.BadParameter(`arg0.#${i}: can not be encoded (${err.message})`);
}
});
const filter = filter_1.newFilter(ctx, 'event').criteria(criteriaSet);
return {
criteria(set) {
filter.criteria(set);
return this;
},
range(range) {
filter.range(range);
return this;
},
order(order) {
filter.order(order);
return this;
},
apply(offset, limit) {
return filter.apply(offset, limit)
.then(events => events.map(event => {
const decoded = coder.decode(event.data, event.topics);
return Object.assign(Object.assign({}, event), { decoded });
}));
}
};
}
};
}
exports.newEventVisitor = newEventVisitor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mcmFtZXdvcmsvZXZlbnQtdmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FBb0M7QUFDcEMsbUNBQTRDO0FBRTVDLFNBQWdCLGVBQWUsQ0FDM0IsR0FBWSxFQUNaLElBQVksRUFDWixLQUFnQjtJQUdoQixNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO1FBQy9CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDcEMsT0FBTztZQUNILE9BQU8sRUFBRSxJQUFJO1lBQ2IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTO1lBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztZQUM5QixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7WUFDOUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTO1lBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztTQUNqQyxDQUFBO0lBQ0wsQ0FBQyxDQUFBO0lBRUQsT0FBTztRQUNILFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNsQixJQUFJO2dCQUNBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ3pCO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsTUFBTSxJQUFJLG9CQUFZLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFBO2FBQ3RFO1FBQ0wsQ0FBQztRQUNELE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLFlBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUUzQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTthQUNqQjtZQUVELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUk7b0JBQ0EsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7aUJBQ25CO2dCQUFDLE9BQU8sR0FBRyxFQUFFO29CQUNWLE1BQU0sSUFBSSxvQkFBWSxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUE7aUJBQzVFO1lBQ0wsQ0FBQyxDQUFDLENBQUE7WUFDRixNQUFNLE1BQU0sR0FBRyxrQkFBUyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDNUQsT0FBTztnQkFDSCxRQUFRLENBQUMsR0FBRztvQkFDUixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO29CQUNwQixPQUFPLElBQUksQ0FBQTtnQkFDZixDQUFDO2dCQUNELEtBQUssQ0FBQyxLQUE4QjtvQkFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFDbkIsT0FBTyxJQUFJLENBQUE7Z0JBQ2YsQ0FBQztnQkFDRCxLQUFLLENBQUMsS0FBSztvQkFDUCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUNuQixPQUFPLElBQUksQ0FBQTtnQkFDZixDQUFDO2dCQUNELEtBQUssQ0FBQyxNQUFjLEVBQUUsS0FBYTtvQkFDL0IsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7eUJBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQy9CLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7d0JBQ3RELHVDQUFZLEtBQUssS0FBRSxPQUFPLElBQUU7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ1gsQ0FBQzthQUNKLENBQUE7UUFDTCxDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUFoRUQsMENBZ0VDIn0=
;