{"_id":"@bradthomasbrown/75bb14","_rev":"3-621c84d780e2716f8e0cf9d4a478c72c","name":"@bradthomasbrown/75bb14","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"@bradthomasbrown/75bb14","version":"1.0.0","author":{"name":"Brad Brown","email":"https://t.me/bradthomasbrown"},"_id":"@bradthomasbrown/75bb14@1.0.0","maintainers":[{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"}],"dist":{"shasum":"0d529823f41b85955c00fc3a3d8f1e0185f4947d","tarball":"https://registry.npmjs.org/@bradthomasbrown/75bb14/-/75bb14-1.0.0.tgz","fileCount":8,"integrity":"sha512-jLVUd7tIszXUruwAIM2217QtTaf2rEQYd79UJXPcseXmPtzrBQbtnOQkNqlBLlZ+s7CsNzaLFM3zgqnGAtdkKQ==","signatures":[{"sig":"MEQCIHNk3u35FEhO4gu2QVgbStBsLDAybzjP9BUeyXAo+rd7AiBpZ/8YIrxS1WR5U3csF17eEIdbAaLoqoJNdYzkrGAGwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22769},"type":"module","exports":{".":"./dist/75bb14.js","./e4e1df":"./dist/concrete/e4e1df.js"},"gitHead":"695a979f435979ddcf0f89464eadf3ab3f847ce2","_npmUser":{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"},"_npmVersion":"10.9.2","description":"A light, flexible, convenience layer library for `EvmEntity`s and (EVM) Nodes in JavaScript/TypeScript.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@bradthomasbrown/rlp":"^1.0.0","@bradthomasbrown/ejra":"^1.0.6","@bradthomasbrown/ecdsa":"^2.0.1","@bradthomasbrown/entity":"^1.0.1","@bradthomasbrown/keccak":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.5","@bradthomasbrown/900ef2":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/75bb14_1.0.0_1767285654359_0.09387030940801577","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bradthomasbrown/75bb14","version":"1.0.1","author":{"name":"Brad Brown","email":"https://t.me/bradthomasbrown"},"_id":"@bradthomasbrown/75bb14@1.0.1","maintainers":[{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"}],"dist":{"shasum":"19fe9115845ec6bc9b74509c9120e073d2f53aff","tarball":"https://registry.npmjs.org/@bradthomasbrown/75bb14/-/75bb14-1.0.1.tgz","fileCount":8,"integrity":"sha512-MbZrFwNJE3xGtqHSiuZ7Ydrd+MOuJuMmPRnR4bPeslCLy9ndBgMmnKtv3qOmY4PZw/AYe1aSwsEoAVUEclXVyQ==","signatures":[{"sig":"MEQCID97pDXS6TZORYuCyWjdGwB38fD6Hf4VqKKvcuTPOp0yAiBWoy6fL8NFC7Nrf/QjC6JWf+Y+gaiGL9GQ/AGLnCGZtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22842},"type":"module","exports":{".":"./dist/75bb14.js","./e4e1df":"./dist/concrete/e4e1df.js"},"gitHead":"713389ea1eb53c77084afb1bd13c22a8a2c63c9e","_npmUser":{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"},"_npmVersion":"10.9.2","description":"A light, flexible, convenience layer library for `EvmEntity`s and (EVM) Nodes in JavaScript/TypeScript.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@bradthomasbrown/rlp":"^1.0.0","@bradthomasbrown/ejra":"^1.0.6","@bradthomasbrown/ecdsa":"^2.0.2","@bradthomasbrown/entity":"^1.0.2","@bradthomasbrown/keccak":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.5","@noble/curves":"^2.0.1","@noble/secp256k1":"^3.0.0","@bradthomasbrown/900ef2":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/75bb14_1.0.1_1767442822224_0.9024118275664921","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@bradthomasbrown/75bb14","description":"A light, flexible, convenience layer library for `EvmEntity`s and (EVM) Nodes in JavaScript/TypeScript.","version":"2.0.0","author":{"name":"Brad Brown","email":"https://t.me/bradthomasbrown"},"type":"module","exports":{".":"./dist/75bb14.js","./e4e1df":"./dist/concrete/e4e1df.js","./dd2554":"./dist/concrete/dd2554.js"},"dependencies":{"@bradthomasbrown/ecdsa":"^2.0.2","@bradthomasbrown/ejra":"^1.0.6","@bradthomasbrown/entity":"^1.0.2","@bradthomasbrown/keccak":"^1.0.2","@bradthomasbrown/rlp":"^1.0.0"},"devDependencies":{"@bradthomasbrown/900ef2":"^1.0.0","@noble/curves":"^2.0.1","@noble/secp256k1":"^3.0.0","@types/bun":"^1.3.5"},"gitHead":"93e00cbb50bd6abe2419e4b5d13bb122a3abf2f8","_id":"@bradthomasbrown/75bb14@2.0.0","_nodeVersion":"22.16.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-iFPvXymTqSHECKXfzhSRuIXUvWwzQYfy4Ff87cJEzOZ8Q28CsDGXvcvgbqVVVh9iyiCciAltc5tHm2eGj0R/mA==","shasum":"4af9d16c3cb523b113938ebbf3c462664f80adbb","tarball":"https://registry.npmjs.org/@bradthomasbrown/75bb14/-/75bb14-2.0.0.tgz","fileCount":14,"unpackedSize":27282,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDylJZwSgX8UuBVh4U7dcn28xUCUEO3yzKOtmbtIH5wsAiEAssl1ZNqUrkn5MCJYl69r12kCUfgQZI7hzliSsuw83hk="}]},"_npmUser":{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"},"directories":{},"maintainers":[{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/75bb14_2.0.0_1768771660307_0.8669571878221263"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-01T16:40:54.204Z","modified":"2026-01-18T21:27:40.579Z","1.0.0":"2026-01-01T16:40:54.510Z","1.0.1":"2026-01-03T12:20:22.374Z","2.0.0":"2026-01-18T21:27:40.449Z"},"author":{"name":"Brad Brown","email":"https://t.me/bradthomasbrown"},"description":"A light, flexible, convenience layer library for `EvmEntity`s and (EVM) Nodes in JavaScript/TypeScript.","maintainers":[{"name":"bradthomasbrown","email":"bradthomasbrown@outlook.com"}],"readme":"# 75bb14\r\nThis is a simple, convenience library for combining an EvmEntity and a Node in TypeScript/JavaScript. \r\n\r\n## Why?\r\nAn EvmEntity, to us, is just an EVM-flavored secpk256k1-and-keccak256 powered ECDSA thin wrapper.\r\nA Node is, to us, a wrapper over some EVM node (via JSON RPC API).\r\nIt would seem natural then that to make these things more convenient to use together, that we combine the ideas, but somewhere separate (here).\r\nAn ECDSA-focused concept like EvmEntity shouldn't be working in terms of EVM chain primitives like the `from`, `to`, `input` fields of some `transaction`, so this library bridges that gap so those simpler EVM chain primitives can be used.\r\nIt also is a place for putting features like the ability to \"wait\" for a transaction (or to define what that means) and to define behaviors for how transacting should be done.\r\nFor example, how do we want to manage the nonce? How do we want to manage the gas price? How do we want a consumer of a `75bb14`-generated class instance to specify how much gas they want to use?\r\nOne can use the `75bb14` function to generate classes whose instances act in simple or complex ways, handling these matters.\r\n\r\n## Installation\r\n```sh\r\nnpm i @bradthomasbrown/75bb14\r\n```\r\n\r\n## Usage\r\n```js\r\nimport { _e4e1df_ } from \"@bradthomasbrown/75bb14/e4e1df\";\r\nimport { _900ef2_ } from \"@bradthomasbrown/900ef2\";\r\nimport { EvmEntity } from \"@bradthomasbrown/entity/evm\";\r\n\r\nconst port = 8545;\r\n// 900ef2 is a sort of \"containerized EVM node manager\". can work with anvil, geth, etc.\r\nconst Anvil = _900ef2_(\"ghcr.io/foundry-rs/foundry:v1.5.1\", `anvil -b 1 -p ${port} --host 0.0.0.0`);\r\nconst node = await Anvil.make(port);\r\nconst alice = EvmEntity.random();\r\nconst bob = EvmEntity.random();\r\n// e4e1df is a sort of \"combining layer of an EvmEntity (itself just a light layer of secp256k1 and keccak256 over ECDSA\r\n// it knows nothing about transactions, just raw data) and a node (JSON RPC convenience)\r\nconst _d5_ = new _e4e1df_(alice, node, null);\r\nawait node.client.request(\"anvil_setBalance\", [alice.address, \"0x10000000000000\"]);\r\nconst [aliceStartBalance, bobStartBalance] = await Promise.all([alice, bob].map(entity => node.getBalance(entity.address, \"latest\")));\r\n// \"promise\" here is just the promise that the node has received and accepted our request, not necessarily a sign that the tranasction is in the blockhain at all\r\nconst [txhash, promise] = await _d5_.send(bob.address, null, 1000000000000n);\r\nawait Promise.all([promise, _d5_.wait(txhash)]);\r\nconst [aliceEndBalance, bobEndBalance] = await Promise.all([alice, bob].map(entity => node.getBalance(entity.address, \"latest\")));\r\nconsole.log({ aliceStartBalance, bobStartBalance, aliceEndBalance, bobEndBalance });\r\n/* {\r\n  aliceStartBalance: 4503599627370496n,\r\n  bobStartBalance: 0n,\r\n  aliceEndBalance: 4460599627370496n,\r\n  bobEndBalance: 1000000000000n,\r\n} */\r\n```","readmeFilename":"README.md"}