{"bugs":{"url":"https://github.com/BitskiCo/provider-engine/issues"},"dist":{"shasum":"960f65a87eede863eb472db2719482771c7b51b5","tarball":"https://registry.npmjs.org/@bitski/provider-engine/-/provider-engine-0.2.0-beta.7.tgz","fileCount":113,"integrity":"sha512-0cob6dMVu2dXvNFiwlD04Ts7VfF2QxkxDv0gh3eSFTBTkQROvXPaogLW+RC/6D0V3kVfd98p8Bpstvw+u5cFrw==","signatures":[{"sig":"MEQCIHnPlycg+WffYiSE1957GTjsXSZ78KdK+q9ki/PwXyQcAiAPUXqq6OszUd9TlKpQw+sI+eqyTGTWU1ASlxFeVjq9GQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":191115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5GiyCRA9TVsSAnZWagAAbkQP/341cst2mpOl/2XJuf0K\n9l6KPphLI6rRKBj9Le9vO8+9iYbNjOho0Gz8XmEMYnX2WR3cT8aqrQ2GsOgR\nPjkF5PyY+47G9huvVKb86Klc1riH4ySJ02CMdYtOGWSvPl6k7MmXnjS4hXjK\naAPBvEMUj7CHolRwoqBgTp6rSgHJljwgvZzQWS1o23zHrBqZQGuV1uEUX9iu\ngfqapLh395yZHHZmANmb8j82HpVvqk1ceTdc7bSkKl+Rz8fQ7T2n5hrH3A6K\nnJniU8o/Gnh1IHMxui80lR6svr66PV0IIx1TNieBKPAvwtgy+wWxw2SPpzky\nQI5WKN6ukeOq3G0i1omrCdrxH7nOzBXYCyN+ABdiaqRVJS5JRBCZqEAniu3p\n+3YYRmn4U586+YjzC6tbP0ApjXforQGQOBS4YnO9C6L7xitipx1dstXPTQsj\n4Ix/5sgqfHnE33hV411F7u83OqJrUWxDKdha96Y55y3Xu6Q84RcUy5nsSJQu\nM4ApKhNV2rI6laAVSXSXYUQYzITaqX2W15zoFfNqqyZOYRcqNdD/FK3lbeEz\nlWPA/BNpDLbMav3qyxSb+f3bNops40qYKSDUrF7/vcRdgJjKdME9bWf2AQ4Q\ncf4i3rLC2AlV7DpC7iP3WsWFZmkHZ7TIQF1EdDj3XzpTJ6S3tkH5g9FvVz0p\nzulT\r\n=pEhs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/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":"4553ccc5bb3e66320d22d31b16879487847d561c","license":"MIT","scripts":{"test":"ts-node node_modules/tape/bin/tape test/index.ts","build":"tsc","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":{"async":"^3.0.0","bn.js":"^4.11.8","clone":"^2.0.0","xtend":"^4.0.1","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.7_1558472881639_0.9355055163070742","host":"s3://npm-registry-packages"},"_id":"@bitski/provider-engine@0.2.0-beta.7","version":"0.2.0-beta.7"}