UNPKG

web3-provider-engine

Version:

A JavaScript library for composing Ethereum provider objects using middleware modules

59 lines (56 loc) 1.94 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } /* Sanitization Subprovider * For Parity compatibility * removes irregular keys */ var inherits = require('util').inherits; var Subprovider = require('./subprovider.js'); var extend = require('xtend'); var ethUtil = require('@ethereumjs/util'); module.exports = SanitizerSubprovider; inherits(SanitizerSubprovider, Subprovider); function SanitizerSubprovider(opts) { var self = this; } SanitizerSubprovider.prototype.handleRequest = function (payload, next, end) { var txParams = payload.params[0]; if (_typeof(txParams) === 'object' && !Array.isArray(txParams)) { var sanitized = cloneTxParams(txParams); payload.params[0] = sanitized; } next(); }; // we use this to clean any custom params from the txParams var permitted = ['from', 'to', 'value', 'data', 'gas', 'gasPrice', 'nonce', 'fromBlock', 'toBlock', 'address', 'topics']; function cloneTxParams(txParams) { var sanitized = permitted.reduce(function (copy, permitted) { if (permitted in txParams) { if (Array.isArray(txParams[permitted])) { copy[permitted] = txParams[permitted].map(function (item) { return sanitize(item); }); } else { copy[permitted] = sanitize(txParams[permitted]); } } return copy; }, {}); return sanitized; } function sanitize(value) { switch (value) { case 'latest': return value; case 'pending': return value; case 'earliest': return value; default: if (typeof value === 'string') { return ethUtil.addHexPrefix(value.toLowerCase()); } else { return value; } } }