{"_id":"@cyberhorsey/web3-provider-engine","_rev":"1-e4b93770f8533d737682ec2d6524bcb5","name":"@cyberhorsey/web3-provider-engine","dist-tags":{"latest":"16.0.6"},"versions":{"16.0.5":{"name":"@cyberhorsey/web3-provider-engine","version":"16.0.5","description":"A JavaScript library for composing Ethereum provider objects using middleware modules","repository":{"type":"git","url":"git+https://github.com/cyberhorsey/web3-provider-engine.git"},"main":"index.js","engines":{"node":">=12.0.0"},"scripts":{"test":"node test/index.js && yarn lint","prepublishOnly":"yarn build && yarn 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 && 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","lint":"eslint --quiet --ignore-path .gitignore ."},"license":"MIT","resolutions":{"ganache-core/**/elliptic":"^6.5.2"},"dependencies":{"@ethereumjs/block":"3.6.2","@ethereumjs/tx":"^3.3.0","async":"^2.5.0","backoff":"^2.5.0","clone":"^2.0.0","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.2.1","eth-json-rpc-infura":"^5.1.0","eth-json-rpc-middleware":"^6.0.0","eth-rpc-errors":"^3.0.0","eth-sig-util":"^1.4.2","ethereumjs-util":"^5.1.5","@ethereumjs/vm":"^5.9.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","ws":"^5.1.1","xhr":"^2.2.0","xtend":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^6.2.0","ethjs":"^0.3.6","tape":"^4.4.0"},"browser":{"request":false,"ws":false},"gitHead":"27f9cb876951c3300e7c1036db453dce57524da1","bugs":{"url":"https://github.com/cyberhorsey/web3-provider-engine/issues"},"homepage":"https://github.com/cyberhorsey/web3-provider-engine#readme","_id":"@cyberhorsey/web3-provider-engine@16.0.5","_nodeVersion":"14.17.0","_npmVersion":"8.1.1","dist":{"integrity":"sha512-uVvytQthoWyUlMsvi5Fo3A7yMb1hDUXLFvUZgzt4j3o0irGlK6QgROwZsEfsmd0HKyZ4+FXAWXvpUF2Z8FlGsw==","shasum":"1c92a7ca0203774b464148db798d5437ed0f6197","tarball":"https://registry.npmjs.org/@cyberhorsey/web3-provider-engine/-/web3-provider-engine-16.0.5.tgz","fileCount":74,"unpackedSize":3022973,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGSiQdopShMbYiJ66b5yYqvYEdFGKQAYwSleqHE/mnZyAiBi/cIBDFyKBAn/Qph4DtU6rnByL7LkoHLd6nhtHLZqzg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJibg8cACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpvvQ/+P/5CHm0G4WytrSmU+lNtE2j2TPyH4UKFkRzEJtpnMfO0WHlW\r\nUjlPHrwssdET4cadcPUyne/OPCXtLrAiyU4SZG8TdPrJlAoGwvNTcBTKIvFU\r\nJxze1tVc8rydOF/rkufMXTBp8Jr7G57yCpFl/yAX+qHFx07XKrG1EsObmVUX\r\nmKmS7tNGT0XRuGO5rZaIy/iU5M4ZLkTb4Xl1fCN8VRdSiZev66EBuR9ZiOO+\r\nn2MyYYGg0DRlOtX+WZj9wZty9uf9qBSDE8qe94oxfj9eCfWLEMhZxQdArZHw\r\n0dThlvB3d0NHPEBbLVRq+jj77L3mAvlschprttbI7sYGWqdZ+xhVo9UJLmy1\r\n6+ctrI9xRxboTIqtRF28SKz+CvQDEzh6v5XW/GplYTfCNMHJ8Trx/otKJb1y\r\nyk2SP6mz9fRCBcRmQkkB4TV81NktFN5LIq7UhSLsKdU3sDUZc+8hfrNLTu74\r\nE33VGq1qLedYyXfDzqUaRhuTKNlvi5P/uz1lq3EPiyms+0rbOn26Yv3lAE+6\r\nH31zAEahUtK5UjVkomu1v175F3zOfCzY+T/m8bFjbD8KmpsSoJjILf5XMSgP\r\nTdP7dyGZKmxTwZp7x8l47Zd0RM/iROKgXCigIWHj76lbAfKrz4lXPi/y5ipQ\r\nfCqUgDq0b7kUBimnpsKB1p5gg9CsF3ufziI=\r\n=HqiQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cyberhorsey","email":"rlxrlps@gmail.com"},"directories":{},"maintainers":[{"name":"cyberhorsey","email":"rlxrlps@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web3-provider-engine_16.0.5_1651379995795_0.6853506000065579"},"_hasShrinkwrap":false},"16.0.6":{"name":"@cyberhorsey/web3-provider-engine","version":"16.0.6","description":"A JavaScript library for composing Ethereum provider objects using middleware modules","repository":{"type":"git","url":"git+https://github.com/cyberhorsey/web3-provider-engine.git"},"main":"index.js","engines":{"node":">=12.0.0"},"scripts":{"test":"node test/index.js && yarn lint","prepublishOnly":"yarn build && yarn 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 && 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","lint":"eslint --quiet --ignore-path .gitignore ."},"license":"MIT","resolutions":{"ganache-core/**/elliptic":"^6.5.2"},"dependencies":{"@ethereumjs/block":"3.6.2","@ethereumjs/tx":"^3.3.0","async":"^2.5.0","backoff":"^2.5.0","clone":"^2.0.0","eth-block-tracker":"^4.4.2","eth-json-rpc-filters":"^4.2.1","eth-json-rpc-infura":"^5.1.0","eth-json-rpc-middleware":"^6.0.0","eth-rpc-errors":"^3.0.0","eth-sig-util":"^1.4.2","ethereumjs-util":"^5.1.5","@ethereumjs/vm":"^5.9.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","ws":"^5.1.1","xhr":"^2.2.0","xtend":"^4.0.1"},"devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.5.5","@babel/preset-env":"^7.5.5","babelify":"^10.0.0","browserify":"^16.5.0","eslint":"^6.2.0","ethjs":"^0.3.6","tape":"^4.4.0"},"browser":{"request":false,"ws":false},"gitHead":"27f9cb876951c3300e7c1036db453dce57524da1","bugs":{"url":"https://github.com/cyberhorsey/web3-provider-engine/issues"},"homepage":"https://github.com/cyberhorsey/web3-provider-engine#readme","_id":"@cyberhorsey/web3-provider-engine@16.0.6","_nodeVersion":"14.17.0","_npmVersion":"7.22.0","dist":{"integrity":"sha512-eUaTT0MkP5JMW5bsulyk7jTYzKnAfVK9wL2FsRIH63GmVmEi69g7AozN46h04vK6/JX1hs5CBZk+wcUZ79lMgA==","shasum":"2d29bd07cd1085da3c111020f93af0a3fe0db6e4","tarball":"https://registry.npmjs.org/@cyberhorsey/web3-provider-engine/-/web3-provider-engine-16.0.6.tgz","fileCount":74,"unpackedSize":3023258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTH/GEw2Yk13lJ7wzhjSCNQWVno9VvrDBqEak9Df0hwQIgWL8u+WaIDf8PQeOLcbUYmOTSd+zz2jczhNkm+X/w5RI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigoWHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqeaA/+PCB1ND1BMDHgghJG4Kg6YWMrdtXxK7EQWHh/pmK2l3HRqU3/\r\n8ueBoWI6y9adRh3N0SFtDzVv8RFSZwV4JAhWtFMMMRhoVvuUhhYbX/LpKZxm\r\nAWE5Aqxek5k9u9GC7UPF5i8fZUPn7M5wppf1SJURUqloL7iJcgRgkGoZeri9\r\nCfpSERSrjR9AwQvCos5j0zjRKaizvZjNpM+iBh1gUPwm60/GCYKx56bs8Sdx\r\nMFtXMzFbpUPeNTFeKZ8S/s+zOpKdMyfHLYgQ+h91T1J7CrBfx+y4/Vd/KqQ8\r\nmYXA6mcCmhZCSZ9RBN6+uyTknao6BJcp7q+Qi0PPhEcWSg3YW2LO4/4gRlXf\r\nA6WxC5nl4bEXCbiwo1snHNwui0bpzuJQERsGMOiS1K9WiQrQukpm/v+EzHFW\r\nx5dcmyPx+6DkNrixiCN4+j09Wno4aRAgTRwB6LFUoYR3Xq3qHuU6hUnMm+0a\r\nSbn7yTNjsmjpf1mkaLOMA+kTkZjJTfXH1CkqortlGau5g8C/YdOsq6iVY9sI\r\nUZIbqjrvnUmCd+AXeEWqcexXwiSw0pBodcoWWy+xixobOfiyqzCE5KuiCZC1\r\nQwZFKygtwzNELMqQsvRQ9QCdvLhAomvCfuhEyCwL/CEyvMj0QjHRD4+Q5m24\r\n4KuvAMb1RF5FwMIRqYIAFOH5xz6G+s0IecA=\r\n=QMdO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cyberhorsey","email":"rlxrlps@gmail.com"},"directories":{},"maintainers":[{"name":"cyberhorsey","email":"rlxrlps@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web3-provider-engine_16.0.6_1652721030871_0.27721530214526613"},"_hasShrinkwrap":false}},"time":{"created":"2022-05-01T04:39:55.744Z","16.0.5":"2022-05-01T04:39:56.028Z","modified":"2022-05-16T17:10:31.193Z","16.0.6":"2022-05-16T17:10:31.118Z"},"maintainers":[{"name":"cyberhorsey","email":"rlxrlps@gmail.com"}],"description":"A JavaScript library for composing Ethereum provider objects using middleware modules","homepage":"https://github.com/cyberhorsey/web3-provider-engine#readme","repository":{"type":"git","url":"git+https://github.com/cyberhorsey/web3-provider-engine.git"},"bugs":{"url":"https://github.com/cyberhorsey/web3-provider-engine/issues"},"license":"MIT","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## Running tests\n\n```bash\nyarn test\n```\n","readmeFilename":"README.md"}