UNPKG

simonflex-framework

Version:

A library implements Meter Flex interface

65 lines 4.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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({}, event, { decoded }); })); } }; } }; } exports.newEventVisitor = newEventVisitor; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mcmFtZXdvcmsvZXZlbnQtdmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHFDQUFvQztBQUNwQyxtQ0FBNEM7QUFFNUMsU0FBZ0IsZUFBZSxDQUMzQixHQUFZLEVBQ1osSUFBWSxFQUNaLEtBQWdCO0lBR2hCLE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7UUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwQyxPQUFPO1lBQ0gsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7WUFDOUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTO1lBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztZQUM5QixNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVM7WUFDOUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTO1NBQ2pDLENBQUE7SUFDTCxDQUFDLENBQUE7SUFFRCxPQUFPO1FBQ0gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ2xCLElBQUk7Z0JBQ0EsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7YUFDekI7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDVixNQUFNLElBQUksb0JBQVksQ0FBQyw2QkFBNkIsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUE7YUFDdEU7UUFDTCxDQUFDO1FBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEIsWUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBRTNCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2FBQ2pCO1lBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSTtvQkFDQSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtpQkFDbkI7Z0JBQUMsT0FBTyxHQUFHLEVBQUU7b0JBQ1YsTUFBTSxJQUFJLG9CQUFZLENBQUMsU0FBUyxDQUFDLHlCQUF5QixHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQTtpQkFDNUU7WUFDTCxDQUFDLENBQUMsQ0FBQTtZQUNGLE1BQU0sTUFBTSxHQUFHLGtCQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUM1RCxPQUFPO2dCQUNILFFBQVEsQ0FBQyxHQUFHO29CQUNSLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7b0JBQ3BCLE9BQU8sSUFBSSxDQUFBO2dCQUNmLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLEtBQThCO29CQUNoQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUNuQixPQUFPLElBQUksQ0FBQTtnQkFDZixDQUFDO2dCQUNELEtBQUssQ0FBQyxLQUFLO29CQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7b0JBQ25CLE9BQU8sSUFBSSxDQUFBO2dCQUNmLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLE1BQWMsRUFBRSxLQUFhO29CQUMvQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQzt5QkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDL0IsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTt3QkFDdEQseUJBQVksS0FBSyxJQUFFLE9BQU8sSUFBRTtvQkFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDWCxDQUFDO2FBQ0osQ0FBQTtRQUNMLENBQUM7S0FDSixDQUFBO0FBQ0wsQ0FBQztBQWhFRCwwQ0FnRUMifQ==