{"bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"dist":{"shasum":"7187a1fdbee6b2d644726fcfa578a2c11445d19e","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.2.tgz","fileCount":168,"integrity":"sha512-KMs84ufrCbf/QkeqEZlGUww96GEGWeMMayOy4HAaPQgG0fM9IOhV6/zJX8dlpkXO0hFMM5STtZOlv/mON3q6jQ==","signatures":[{"sig":"MEUCIQDR8WDw+1jcqUfl6sun7eRzcNQR6BDOS6r0EfcbJQtu2wIgUNvTWv4F6skTm4j/loNepb77w1tJn85h0hvD7+bhCoI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":684988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5FDKCRA9TVsSAnZWagAAK5oP/09EqAXDPxB0I/eCme4k\nnlwTxXLK2iIJMyDo+SMdCfryOOlff5M9UYala1h1pB980KormfDEfIWafOiK\n2nsN0M1m8/1PGFmKoy4IbhfGGGW9n0KXjqU44Mjm8fSvZjeIHRnJrveJUD0L\n2S1uAii1YSFVPth9l55CCsuUT9B4ccF0ep0rWcUzyyQT8jjeIkTYWAxcPXQ9\npInL/uNmi3E5vpK+0xvTImKUdXq32FHeHBoYPuWM7zD+cV8H3GWf6tCF8yk2\nLPNeF5cpbGlAsNNKbWA/bdVV2DGCA5uMHGOBD1azYX791E6YY0uFv2F54HYY\nhSIAa7j8FOl6toW4FhBHj/cTtPw4ntIW+CrtlJAMheRmSJoeleUAysJd5X3h\nUuQmXFoQKQuDpn6NELVjsEzAa4GM76V7RIj5BPL0uqmjlarul44sr6TolvHZ\n/pLxXBqNwHhTKovKyj9fLB0805nFTKEc3vA/xs5iAwV4Fi7ZLmmVhLYHORGS\nNi4QQqWBDwcvhWQWlQhl3kEax9NFNm9WCN62/JVItQ8PlMQYP4e9qYWXoQST\nWHJXgHMf+jGgiQ3L/0N7HXyTVKE3keP9g7DeQLFami5U3BHNWCXva7bepMRw\nw6hRo1YWab+N7V7xEATx+VLukGnx8ttzxT0TqzMf/quiXAxuK0Ns6XFdMOJ2\npM03\r\n=G+x6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/es6/index.js","name":"@bitski/provider-engine","author":"","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. `eth_call` may trigger `eth_getAccountBalance`, `eth_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  eth_hashrate: '0x00',\n  eth_mining: false,\n  eth_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\n\n### Current RPC method support:\n\n##### static\n- [x] web3_clientVersion\n- [x] net_version\n- [x] net_listening\n- [x] net_peerCount\n- [x] eth_protocolVersion\n- [x] eth_hashrate\n- [x] eth_mining\n- [x] eth_syncing\n\n##### filters\n- [x] eth_newBlockFilter\n- [x] eth_newPendingTransactionFilter\n- [x] eth_newFilter\n- [x] eth_uninstallFilter\n- [x] eth_getFilterLogs\n- [x] eth_getFilterChanges\n\n##### accounts manager\n- [x] eth_coinbase\n- [x] eth_accounts\n- [x] eth_sendTransaction\n- [x] eth_sign\n- [x] [eth_signTypedData](https://github.com/ethereum/EIPs/pull/712)\n\n##### vm\n- [x] eth_call\n- [x] eth_estimateGas\n\n##### db source\n- [ ] db_putString\n- [ ] db_getString\n- [ ] db_putHex\n- [ ] db_getHex\n\n##### compiler\n- [ ] eth_getCompilers\n- [ ] eth_compileLLL\n- [ ] eth_compileSerpent\n- [ ] eth_compileSolidity\n\n##### shh gateway\n- [ ] shh_version\n- [ ] shh_post\n- [ ] shh_newIdentity\n- [ ] shh_hasIdentity\n- [ ] shh_newGroup\n- [ ] shh_addToGroup\n\n##### data source ( fallback to rpc )\n* eth_gasPrice\n* eth_blockNumber\n* eth_getBalance\n* eth_getBlockByHash\n* eth_getBlockByNumber\n* eth_getBlockTransactionCountByHash\n* eth_getBlockTransactionCountByNumber\n* eth_getCode\n* eth_getStorageAt\n* eth_getTransactionByBlockHashAndIndex\n* eth_getTransactionByBlockNumberAndIndex\n* eth_getTransactionByHash\n* eth_getTransactionCount\n* eth_getTransactionReceipt\n* eth_getUncleByBlockHashAndIndex\n* eth_getUncleByBlockNumberAndIndex\n* eth_getUncleCountByBlockHash\n* eth_getUncleCountByBlockNumber\n* eth_sendRawTransaction\n* eth_getLogs ( not used in web3.js )\n\n##### ( not supported )\n* eth_getWork\n* eth_submitWork\n* eth_submitHashrate ( not used in web3.js )\n","browser":{"ws":false,"request":false},"gitHead":"93a3591aaa099e3dbc1c6f517730dc7dcf78e7b0","license":"MIT","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","build":"tsc && babel dist/es6 -d dist/es5","prepublish":"npm run build"},"_npmUser":{"name":"joshpyles","email":"josh@outtherelabs.com"},"homepage":"https://github.com/BitskiCo/provider-engine#readme","repository":{"url":"git+https://github.com/BitskiCo/provider-engine.git","type":"git"},"_npmVersion":"6.4.1","description":"[![Greenkeeper badge](https://badges.greenkeeper.io/MetaMask/provider-engine.svg)](https://greenkeeper.io/)","directories":{},"maintainers":[{"name":"jatescher","email":"jatescher@gmail.com"},{"name":"joshpyles","email":"josh@outtherelabs.com"},{"name":"pat2man","email":"pat2man@gmail.com"}],"_nodeVersion":"10.15.3","dependencies":{"ws":"^5.1.1","rlp":"^2.2.3","async":"^2.5.0","bn.js":"^4.11.8","clone":"^2.0.0","xtend":"^4.0.1","buffer":"^5.2.1","backoff":"^2.5.0","ethjs-util":"^0.1.6","cross-fetch":"^2.1.0","json-rpc-error":"^2.0.0","eth-block-tracker":"^4.4.1","promise-to-callback":"^1.0.0","json-stable-stringify":"^1.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.4.0","ethjs":"^0.3.6","ts-node":"^8.1.0","babelify":"^8.0.0","babel-cli":"^6.26.0","browserify":"^16.1.1","typescript":"^3.4.5","@types/node":"^12.0.2","@types/events":"^3.0.0","babel-preset-env":"^1.7.0","babel-tape-runner":"^2.0.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-0":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/provider-engine_0.2.0-beta.2_1558466761732_0.17548766204869715","host":"s3://npm-registry-packages"},"_id":"@bitski/provider-engine@0.2.0-beta.2","version":"0.2.0-beta.2"}