@paradeum/burrow
Version:
TypeScript library that calls a Hyperledger Burrow server over GRPC.
72 lines • 3.07 kB
JavaScript
;
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