{"bugs":{"url":"https://github.com/trufflesuite/provider-engine/issues"},"dist":{"shasum":"3dbd5db0ced613afced2739cce46e8850c101bd4","tarball":"https://registry.npmjs.org/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.13-3.beta.tgz","fileCount":98,"integrity":"sha512-YfekttkBEiTvdjCRJfGcbB8ST8ouX7geBRGYOQ9DWNoljVHCALPXn0F0nweClVrARUAKTYN0ka/mS1StZJF4xQ==","signatures":[{"sig":"MEUCIQDFzhWrtpfhlheSJhyk0dywh0igxBXi9W3C9MAP74bbSgIgHMZPNWT814CHqTV6kijUHIixn9vIQULcpfhIbK7ynpo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3422772},"main":"index.js","name":"@trufflesuite/web3-provider-engine","author":"","readme":"# Web3 ProviderEngine\n\nWeb3 ProviderEngine is a tool for composing your own [web3 providers](https://github.com/ethereum/wiki/wiki/JavaScript-API#web3).\n\nOriginally created for MetaMask, but has been superceded by [json-rpc-engine](https://www.npmjs.com/package/json-rpc-engine) in combination with our [eth-json-rpc-middleware](https://www.npmjs.com/package/eth-json-rpc-middleware). This module is not very actively maintained, so we recommend using that one instead.\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##### 15.0.0\n\n- uses eth-block-tracker@4, but still provides block body on ('block', 'latest', and 'rawBlock'). Other events ('sync') provide block number hex string instead of block body.\n- SubscriptionsSubprovider automatically forwards events to provider\n- replacing subprovider implementations with those in [`eth-json-rpc-engine`](https://github.com/MetaMask/eth-json-rpc-middleware)\n- browserify: moved to `babelify@10` + `@babel/core@7`\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","browser":{"ws":false,"request":false},"gitHead":"75260672607c6cf289d4e8fe5ce8d3b4e31651b8","license":"MIT","scripts":{"lint":"eslint --quiet --ignore-path .gitignore .","test":"node test/index.js && yarn lint","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 && yarn bundle-engine && yarn bundle-zero","bundle-zero":"browserify -s ZeroClientProvider -e zero.js -t [ babelify --presets [ @babel/preset-env ] ] > dist/ZeroClientProvider.js","bundle-engine":"browserify -s ProviderEngine -e index.js -t [ babelify --presets [ @babel/preset-env ] ] > dist/ProviderEngine.js","prepublishOnly":"yarn build && yarn bundle"},"_npmUser":{"name":"eggplantzzz","email":"pobol234@gmail.com"},"homepage":"https://github.com/trufflesuite/provider-engine#readme","repository":{"url":"git+https://github.com/trufflesuite/provider-engine.git","type":"git"},"_npmVersion":"6.14.14","description":"Fork of https://github.com/MetaMask/web3-provider-engine","directories":{},"maintainers":[{"name":"kevinweaver","email":"kevinweaver2@gmail.com"},{"name":"leeftk","email":"leandro.faria@consensys.net"},{"name":"tcoulter","email":"tim@timothyjcoulter.com"},{"name":"gnidan","email":"nick@gnidan.org"},{"name":"davidmurdoch","email":"david@davidmurdoch.com"},{"name":"eggplantzzz","email":"pobol234@gmail.com"},{"name":"fainashalts","email":"fainashalts@gmail.com"},{"name":"haltman","email":"harry.j.altman@gmail.com"},{"name":"rkalis","email":"roscokalis@gmail.com"},{"name":"cds-amal","email":"cds.sudama@gmail.com"},{"name":"micaiahreid","email":"micaiahreid@gmail.com"}],"_nodeVersion":"12.22.0","dependencies":{"ws":"^5.1.1","xhr":"^2.2.0","async":"^2.5.0","clone":"^2.0.0","xtend":"^4.0.1","backoff":"^2.5.0","request":"^2.85.0","semaphore":"^1.0.3","cross-fetch":"^2.1.0","ethereumjs-vm":"^2.3.4","@ethereumjs/tx":"^3.3.0","ethereumjs-util":"^5.1.5","readable-stream":"^2.2.9","ethereumjs-block":"^1.2.2","eth-block-tracker":"^4.4.2","eth-json-rpc-errors":"^2.0.2","promise-to-callback":"^1.0.0","json-stable-stringify":"^1.0.1","@trufflesuite/eth-sig-util":"^1.4.2","@trufflesuite/eth-json-rpc-infura":"^4.0.3-0","@trufflesuite/eth-json-rpc-filters":"^4.1.2-1","@trufflesuite/eth-json-rpc-middleware":"^4.4.2-1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tape":"^4.4.0","ethjs":"^0.3.6","eslint":"^6.2.0","babelify":"^10.0.0","@babel/cli":"^7.5.5","browserify":"^16.5.0","@babel/core":"^7.5.5","ganache-core":"^2.7.0","@babel/preset-env":"^7.5.5"},"_npmOperationalInternal":{"tmp":"tmp/web3-provider-engine_15.0.13-3.beta_1634329731211_0.5431239576763851","host":"s3://npm-registry-packages"},"_id":"@trufflesuite/web3-provider-engine@15.0.13-3.beta","version":"15.0.13-3.beta"}