UNPKG

@paradeum/burrow

Version:

TypeScript library that calls a Hyperledger Burrow server over GRPC.

72 lines 3.07 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; exports.__esModule = true; exports.SolidityEvent = void 0; var utils = __importStar(require("../utils/utils")); var coder = __importStar(require("ethereumjs-abi")); var convert = __importStar(require("../utils/convert")); var SHA3 = __importStar(require("../utils/sha3")); var types = function (abi, indexed) { return abi.filter(function (i) { return i.indexed === indexed; }).map(function (i) { return i.type; }); }; var decode = function (abi, data) { if (!data) return; var argTopics = abi.anonymous ? data.getTopicsList_asU8() : data.getTopicsList_asU8().slice(1); var indexedParamsABI = types(abi.inputs, true); var nonIndexedParamsABI = types(abi.inputs, false); var indexedData = Buffer.concat(argTopics); var indexedParams = convert.abiToBurrow(indexedParamsABI, coder.rawDecode(indexedParamsABI, indexedData)); var nonIndexedParams = convert.abiToBurrow(nonIndexedParamsABI, coder.rawDecode(nonIndexedParamsABI, Buffer.from(data.getData_asU8()))); return { event: utils.transformToFullName(abi), address: data.getAddress_asU8(), args: abi.inputs.reduce(function (acc, current) { acc[current.name] = current.indexed ? indexedParams.shift() : nonIndexedParams.shift(); return acc; }, {}) }; }; exports.SolidityEvent = function (abi, burrow) { var name = utils.transformToFullName(abi); var displayName = utils.extractDisplayName(name); var typeName = utils.extractTypeName(name); var signature = SHA3.str(name); var call = function (address, callback) { address = address || this.address; if (!callback) throw new Error('Can not subscribe to an event without a callback.'); return burrow.pipe.eventSub(address, signature, function (err, event) { if (err) callback(err, null); var decoded; try { decoded = decode(abi, event); } catch (err) { return callback(err, null); } callback(null, decoded); }); }; return { displayName: displayName, typeName: typeName, call: call }; }; //# sourceMappingURL=event.js.map