simonflex-framework
Version:
A library implements Meter Flex interface
92 lines • 8.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const R = require("./rules");
const V = require("validator-ts");
const MAX_LIMIT = 256;
function newFilter(ctx, kind) {
const filterBody = {
range: {
unit: 'block',
from: 0,
to: Math.pow(2, 32) - 1
},
options: {
offset: 0,
limit: 10
},
criteriaSet: [],
order: 'asc'
};
return {
criteria(set) {
if (kind === 'event') {
R.test(set, [eventCriteriaScheme], 'arg0');
filterBody.criteriaSet = set
.map(c => {
return {
address: c.address ? c.address.toLowerCase() : undefined,
topic0: c.topic0 ? c.topic0.toLowerCase() : undefined,
topic1: c.topic1 ? c.topic1.toLowerCase() : undefined,
topic2: c.topic2 ? c.topic2.toLowerCase() : undefined,
topic3: c.topic3 ? c.topic3.toLowerCase() : undefined,
topic4: c.topic4 ? c.topic4.toLowerCase() : undefined
};
});
}
else {
R.test(set, [transferCriteriaScheme], 'arg0');
filterBody.criteriaSet = set
.map(c => {
return {
txOrigin: c.txOrigin ? c.txOrigin.toLowerCase() : undefined,
sender: c.sender ? c.sender.toLowerCase() : undefined,
recipient: c.recipient ? c.recipient.toLowerCase() : undefined
};
});
}
return this;
},
range(range) {
R.test(range, {
unit: v => (v === 'block' || v === 'time') ? '' : `expected 'block' or 'time'`,
from: R.uint64,
to: R.uint64
}, 'arg0');
R.ensure(range.from <= range.to, 'arg0.from: expected <= arg0.to');
filterBody.range = Object.assign({}, range);
return this;
},
order(order) {
R.ensure(order === 'asc' || order === 'desc', `arg0: expected 'asc' or 'desc'`);
filterBody.order = order;
return this;
},
apply(offset, limit) {
R.test(offset, R.uint64, 'arg0');
R.ensure(limit >= 0 && limit <= MAX_LIMIT && Number.isInteger(limit), `arg1: expected unsigned integer <= ${MAX_LIMIT}`);
filterBody.options.offset = offset;
filterBody.options.limit = limit;
if (kind === 'transfer') {
return ctx.driver.filterTransferLogs(filterBody);
}
else {
return ctx.driver.filterEventLogs(filterBody);
}
}
};
}
exports.newFilter = newFilter;
const eventCriteriaScheme = {
address: V.optional(R.address),
topic0: V.optional(R.bytes32),
topic1: V.optional(R.bytes32),
topic2: V.optional(R.bytes32),
topic3: V.optional(R.bytes32),
topic4: V.optional(R.bytes32)
};
const transferCriteriaScheme = {
sender: V.optional(R.address),
recipient: V.optional(R.address),
txOrigin: V.optional(R.address)
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1ld29yay9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBNEI7QUFDNUIsa0NBQWlDO0FBRWpDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQTtBQUVyQixTQUFnQixTQUFTLENBQ3JCLEdBQVksRUFDWixJQUFPO0lBR1AsTUFBTSxVQUFVLEdBQUc7UUFDZixLQUFLLEVBQUU7WUFDSCxJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxFQUFFLFNBQUEsQ0FBQyxFQUFJLEVBQUUsQ0FBQSxHQUFHLENBQUM7U0FDbEI7UUFDRCxPQUFPLEVBQUU7WUFDTCxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxFQUFFO1NBQ1o7UUFDRCxXQUFXLEVBQUUsRUFBcUU7UUFDbEYsS0FBSyxFQUFFLEtBQUs7S0FDZixDQUFBO0lBRUQsT0FBTztRQUNILFFBQVEsQ0FBQyxHQUFHO1lBQ1IsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQWtDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO2dCQUN6RSxVQUFVLENBQUMsV0FBVyxHQUFJLEdBQW1DO3FCQUN4RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ0wsT0FBTzt3QkFDSCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUzt3QkFDeEQsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7d0JBQ3JELE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO3dCQUNyRCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUzt3QkFDckQsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7d0JBQ3JELE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO3FCQUN4RCxDQUFBO2dCQUNMLENBQUMsQ0FBQyxDQUFBO2FBQ1Q7aUJBQU07Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFxQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTtnQkFDL0UsVUFBVSxDQUFDLFdBQVcsR0FBSSxHQUFzQztxQkFDM0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNMLE9BQU87d0JBQ0gsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7d0JBQzNELE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO3dCQUNyRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztxQkFDakUsQ0FBQTtnQkFDTCxDQUFDLENBQUMsQ0FBQTthQUVUO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsS0FBSyxDQUFDLEtBQUs7WUFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtnQkFDOUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO2dCQUNkLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTTthQUNmLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDVixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFBO1lBRWxFLFVBQVUsQ0FBQyxLQUFLLHFCQUFRLEtBQUssQ0FBRSxDQUFBO1lBQy9CLE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQ3hDLGdDQUFnQyxDQUFDLENBQUE7WUFDckMsVUFBVSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7WUFDeEIsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQ0QsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLO1lBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNoQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUNoRSxzQ0FBc0MsU0FBUyxFQUFFLENBQUMsQ0FBQTtZQUV0RCxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7WUFDbEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1lBRWhDLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRTtnQkFDckIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQWlCLENBQWlCLENBQUE7YUFDMUU7aUJBQU07Z0JBQ0gsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFpQixDQUFpQixDQUFBO2FBQ3ZFO1FBQ0wsQ0FBQztLQUNKLENBQUE7QUFDTCxDQUFDO0FBaEZELDhCQWdGQztBQUVELE1BQU0sbUJBQW1CLEdBQXdDO0lBQzdELE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDOUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM3QixNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDN0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM3QixNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0NBQ2hDLENBQUE7QUFDRCxNQUFNLHNCQUFzQixHQUEyQztJQUNuRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzdCLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDaEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztDQUNsQyxDQUFBIn0=