UNPKG

@meterio/flex-framework

Version:

A library implements Meter Flex interface

66 lines 4.9 kB
"use strict"; 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=