diff options
Diffstat (limited to 'cmd/mist/assets/ext/ethereum.js/lib/event.js')
-rw-r--r-- | cmd/mist/assets/ext/ethereum.js/lib/event.js | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/event.js b/cmd/mist/assets/ext/ethereum.js/lib/event.js deleted file mode 100644 index 0c41e0a39..000000000 --- a/cmd/mist/assets/ext/ethereum.js/lib/event.js +++ /dev/null @@ -1,135 +0,0 @@ -/* - This file is part of ethereum.js. - - ethereum.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - ethereum.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with ethereum.js. If not, see <http://www.gnu.org/licenses/>. -*/ -/** @file event.js - * @authors: - * Marek Kotewicz <marek@ethdev.com> - * @date 2014 - */ - -var abi = require('./abi'); -var utils = require('./utils'); - -/// filter inputs array && returns only indexed (or not) inputs -/// @param inputs array -/// @param bool if result should be an array of indexed params on not -/// @returns array of (not?) indexed params -var filterInputs = function (inputs, indexed) { - return inputs.filter(function (current) { - return current.indexed === indexed; - }); -}; - -var inputWithName = function (inputs, name) { - var index = utils.findIndex(inputs, function (input) { - return input.name === name; - }); - - if (index === -1) { - console.error('indexed param with name ' + name + ' not found'); - return undefined; - } - return inputs[index]; -}; - -var indexedParamsToTopics = function (event, indexed) { - // sort keys? - return Object.keys(indexed).map(function (key) { - var inputs = [inputWithName(filterInputs(event.inputs, true), key)]; - - var value = indexed[key]; - if (value instanceof Array) { - return value.map(function (v) { - return abi.formatInput(inputs, [v]); - }); - } - return abi.formatInput(inputs, [value]); - }); -}; - -var inputParser = function (address, signature, event) { - - // valid options are 'earliest', 'latest', 'offset' and 'max', as defined for 'eth.watch' - return function (indexed, options) { - var o = options || {}; - o.address = address; - o.topic = []; - o.topic.push(signature); - if (indexed) { - o.topic = o.topic.concat(indexedParamsToTopics(event, indexed)); - } - return o; - }; -}; - -var getArgumentsObject = function (inputs, indexed, notIndexed) { - var indexedCopy = indexed.slice(); - var notIndexedCopy = notIndexed.slice(); - return inputs.reduce(function (acc, current) { - var value; - if (current.indexed) - value = indexed.splice(0, 1)[0]; - else - value = notIndexed.splice(0, 1)[0]; - - acc[current.name] = value; - return acc; - }, {}); -}; - -var outputParser = function (event) { - - return function (output) { - var result = { - event: utils.extractDisplayName(event.name), - number: output.number, - args: {} - }; - - if (!output.topic) { - return result; - } - - var indexedOutputs = filterInputs(event.inputs, true); - var indexedData = "0x" + output.topic.slice(1, output.topic.length).map(function (topic) { return topic.slice(2); }).join(""); - var indexedRes = abi.formatOutput(indexedOutputs, indexedData); - - var notIndexedOutputs = filterInputs(event.inputs, false); - var notIndexedRes = abi.formatOutput(notIndexedOutputs, output.data); - - result.args = getArgumentsObject(event.inputs, indexedRes, notIndexedRes); - - return result; - }; -}; - -var getMatchingEvent = function (events, payload) { - for (var i = 0; i < events.length; i++) { - var signature = abi.eventSignatureFromAscii(events[i].name); - if (signature === payload.topic[0]) { - return events[i]; - } - } - return undefined; -}; - - -module.exports = { - inputParser: inputParser, - outputParser: outputParser, - getMatchingEvent: getMatchingEvent -}; - |