{"_id":"@alayanetwork/web3-provider-engine","_rev":"1-61066a3f97695814c71e3c79cdba4584","name":"@alayanetwork/web3-provider-engine","dist-tags":{"latest":"14.2.1"},"versions":{"14.2.1":{"name":"@alayanetwork/web3-provider-engine","version":"14.2.1","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","repository":{"type":"git","url":"git+https://github.com/MetaMask/provider-engine.git"},"main":"index.js","scripts":{"test":"node test/index.js && npm run lint","prepublish":"npm run build && npm run bundle","build":"babel zero.js index.js -d dist/es5 && babel subproviders -d dist/es5/subproviders && babel util -d dist/es5/util","bundle":"mkdir -p ./dist && npm run bundle-engine && npm run bundle-zero","bundle-zero":"browserify -s ZeroClientProvider -e zero.js -t [ babelify --presets [ es2015 ] ] > dist/ZeroClientProvider.js","bundle-engine":"browserify -s ProviderEngine -e index.js -t [ babelify --presets [ es2015 ] ] > dist/ProviderEngine.js","lint":"eslint --quiet --ignore-path .gitignore ."},"author":"","license":"MIT","dependencies":{"async":"^2.5.0","backoff":"^2.5.0","clone":"^2.0.0","cross-fetch":"^2.1.0","eth-block-tracker":"^3.0.0","eth-json-rpc-infura":"^3.1.0","eth-sig-util":"^1.4.2","ethereumjs-block":"^1.2.2","ethereumjs-tx":"^1.2.0","ethereumjs-util":"^5.1.5","ethereumjs-vm":"^2.3.4","json-rpc-error":"^2.0.0","json-stable-stringify":"^1.0.1","promise-to-callback":"^1.0.0","readable-stream":"^2.2.9","request":"^2.85.0","semaphore":"^1.0.3","xhr":"^2.2.0","ws":"^5.1.1","xtend":"^4.0.1"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1","browserify":"^16.1.1","eslint":"^5.15.1","tape":"^4.4.0","ethjs":"^0.3.6"},"browser":{"request":false,"ws":false},"gitHead":"84492f1bfb0a33cd8787084c6499ec5345131b29","bugs":{"url":"https://github.com/MetaMask/provider-engine/issues"},"homepage":"https://github.com/MetaMask/provider-engine#readme","_id":"@alayanetwork/web3-provider-engine@14.2.1","_nodeVersion":"14.12.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AD2K5zEk9J5xI8ZxMN3aa4sCXGJ0rm3YT3piw8CpXoMYB1AruCBQTQEcmFsjqJJOrV+0T26HOJMnouRsDpvYEw==","shasum":"f0abaf228c1c39accb21cf28d6844ca66f1c6b60","tarball":"https://registry.npmjs.org/@alayanetwork/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz","fileCount":95,"unpackedSize":2001130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjpLXCRA9TVsSAnZWagAAFDUP/1Kr8iLPb5F8jEMcsZI/\nRVd/NMHZE4D/mkhr8DHoUtFOpCe22wiDoAstf1w7+5Rrym/SW4ng/xUlSbPe\nhqvoJXaOR0MUF0dwQASowINSTBCHcHfdnjKSzo5Giqo9vg0GW2+NaDt5652B\nm69tUhCJGDGwpliQ4wIdUL7/Z8hviYwewK+T/cFzusmh2YgqtUYodNL7LKRp\nfcSfkBW+U01h4/1uXJBgzJLlEhUT0QesvK+rihzcAkNaJatmz8sppcPvd+wW\nf/vXoMZSDPlx1PvOwzaR9inPjmpRIl1gi2rybchhS7aPB5VUqnb1Uzam8mK1\nDq5Y6lHu5XxemOVHLpgY26VoikG2WwM1rarno2O8kJS5WUJqhXwqGlP3/ecA\nmv+zKxHrBLwhk86GdudGEkypoq5fDZo1+WYpnbFhsR3n1Ka4kR6Lijav828s\nXo3uqL5xP5gS1rT0nD/NqHfGEOcbT45g++Eah5L8TWex9cqYeMzNeMByDaEn\nMsIkzmwGxB3Gg/4R9VdcTdiTluBDmqfzJSt+5pWSJbPlksLPlDyltQpRh0hJ\n51rMQLJ0VoUd8VDWTfgVaZf3y0b5jZuSxBix24roCWJoe6Cxj+c9yX6ku5hP\nEqpKhHQ8fVCfjjWNHDmp/Uhj/yIKfHW/G/+GcRV2tKx+V9/BqUlj4DfSahbq\nTyRA\r\n=e32P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNylCo38g9HCnC7K8x3Zu4vU1eb6ujRf9p7GUjXIMxfgIgfey8tzLbnPQ7RC9+F4dMtX3yKXGPRqEvlOBPJLlStyY="}]},"maintainers":[{"name":"alayanetwork","email":"npm@latticex.foundation"}],"_npmUser":{"name":"alayanetwork","email":"npm@latticex.foundation"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web3-provider-engine_14.2.1_1603179222845_0.282450259759802"},"_hasShrinkwrap":false}},"time":{"created":"2020-10-20T07:33:42.798Z","14.2.1":"2020-10-20T07:33:43.030Z","modified":"2022-04-04T12:34:01.974Z"},"maintainers":[{"name":"alayanetwork","email":"npm@latticex.foundation"}],"description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","homepage":"https://github.com/MetaMask/provider-engine#readme","repository":{"type":"git","url":"git+https://github.com/MetaMask/provider-engine.git"},"bugs":{"url":"https://github.com/MetaMask/provider-engine/issues"},"license":"MIT","readme":"# Web3 ProviderEngine\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\n\n### Composable\n\nBuilt to be modular - works via a stack of 'sub-providers' which are like normal web3 providers but only handle a subset of rpc methods.\n\nThe subproviders can emit new rpc requests in order to handle their own;  e.g. `platon_call` may trigger `platon_getAccountBalance`, `platon_getCode`, and others.\nThe provider engine also handles caching of rpc request results.\n\n```js\nconst ProviderEngine = require('web3-provider-engine')\nconst CacheSubprovider = require('web3-provider-engine/subproviders/cache.js')\nconst FixtureSubprovider = require('web3-provider-engine/subproviders/fixture.js')\nconst FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')\nconst VmSubprovider = require('web3-provider-engine/subproviders/vm.js')\nconst HookedWalletSubprovider = require('web3-provider-engine/subproviders/hooked-wallet.js')\nconst NonceSubprovider = require('web3-provider-engine/subproviders/nonce-tracker.js')\nconst RpcSubprovider = require('web3-provider-engine/subproviders/rpc.js')\n\nvar engine = new ProviderEngine()\nvar web3 = new Web3(engine)\n\n// static results\nengine.addProvider(new FixtureSubprovider({\n  web3_clientVersion: 'ProviderEngine/v0.0.0/javascript',\n  net_listening: true,\n  platon_hashrate: '0x00',\n  platon_mining: false,\n  platon_syncing: true,\n}))\n\n// cache layer\nengine.addProvider(new CacheSubprovider())\n\n// filters\nengine.addProvider(new FilterSubprovider())\n\n// pending nonce\nengine.addProvider(new NonceSubprovider())\n\n// vm\nengine.addProvider(new VmSubprovider())\n\n// id mgmt\nengine.addProvider(new HookedWalletSubprovider({\n  getAccounts: function(cb){ ... },\n  approveTransaction: function(cb){ ... },\n  signTransaction: function(cb){ ... },\n}))\n\n// data source\nengine.addProvider(new RpcSubprovider({\n  rpcUrl: 'https://testrpc.metamask.io/',\n}))\n\n// log new blocks\nengine.on('block', function(block){\n  console.log('================================')\n  console.log('BLOCK CHANGED:', '#'+block.number.toString('hex'), '0x'+block.hash.toString('hex'))\n  console.log('================================')\n})\n\n// network connectivity error\nengine.on('error', function(err){\n  // report connectivity errors\n  console.error(err.stack)\n})\n\n// start polling for blocks\nengine.start()\n```\n\nWhen importing in webpack:\n```js\nimport * as Web3ProviderEngine  from 'web3-provider-engine';\nimport * as RpcSource  from 'web3-provider-engine/subproviders/rpc';\nimport * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';\n```\n\n### Built For Zero-Clients\n\nThe [Ethereum JSON RPC](https://github.com/ethereum/wiki/wiki/JSON-RPC) was not designed to have one node service many clients.\nHowever a smaller, lighter subset of the JSON RPC can be used to provide the blockchain data that an Ethereum 'zero-client' node would need to function.\nWe handle as many types of requests locally as possible, and just let data lookups fallback to some data source ( hosted rpc, blockchain api, etc ).\nCategorically, we don’t want / can’t have the following types of RPC calls go to the network:\n* id mgmt + tx signing (requires private data)\n* filters (requires a stateful data api)\n* vm (expensive, hard to scale)\n\n### Change Log\n\n##### 14.0.0\n\n- default dataProvider for zero is Infura mainnet REST api\n- websocket support\n- subscriptions support\n- remove solc subprovider\n- removed `dist` from git (but published in npm module)\n- es5 builds in `dist/es5`\n- zero + ProviderEngine bundles are es5\n- web3 subprovider renamed to provider subprovider\n- error if provider subprovider is missing a proper provider\n- removed need to supply getAccounts hook\n- fixed `hooked-wallet-ethtx` message signing\n- fixed `hooked-wallet` default txParams\n\n##### 13.0.0\n\n- txs included in blocks via [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker)@2.0.0\n\n##### 12.0.0\n\n- moved block polling to [`eth-block-tracker`](https://github.com/kumavis/eth-block-tracker).\n\n##### 11.0.0\n\n- zero.js - replaced http subprovider with fetch provider (includes polyfill for node).\n\n##### 10.0.0\n\n- renamed HookedWalletSubprovider `personalRecoverSigner` to `recoverPersonalSignature`\n\n##### 9.0.0\n\n- `pollingShouldUnref` option now defaults to false\n","readmeFilename":"README.md"}