{"_id":"@bladcoin/fast-abi","name":"@bladcoin/fast-abi","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.8":{"name":"@bladcoin/fast-abi","version":"0.0.8","description":"Encodes and decodes abi data, fast.","main":"lib/index.js","author":{"name":"Jacob Evans","email":"jacob@dekz.net"},"license":"MIT","dependencies":{"@mapbox/node-pre-gyp":"^1.0.10","cargo-cp-artifact":"0.1.9","uuid":"^8.3.2"},"scripts":{"build":"yarn build:ts && yarn build:rs:release","build:ts":"tsc -b","build:rs":"cargo-cp-artifact -nc bin/index.node -- cargo build --message-format=json-render-diagnostics","build:rs:release":"yarn build:rs --release","install":"node-pre-gyp install --fallback-to-build=false || yarn build:rs:release","watch":"tsc -w -p tsconfig.json","test:fastAbi":"node ./lib/test.js","package":"node-pre-gyp package","test":"jest","upload-binary":"yarn build && yarn node-pre-gyp package && yarn node-pre-gyp-github publish","prepack":"shx rm -rf bin"},"devDependencies":{"@jest/globals":"^29.4.3","@mathquis/node-pre-gyp-github":"1.0.1","@types/jest":"^29.4.0","@types/mocha":"^5.2.7","@types/node":"12.12.54","chai":"^4.0.1","chai-as-promised":"^7.1.0","chai-bignumber":"^3.0.0","ethereum-types":"^3.4.1","ethers":"^6.0.4","jest":"^29.4.3","mocha":"^6.2.0","shx":"^0.3.3","ts-jest":"^29.0.5","tslint":"5.11.0","typescript":"4.9.5"},"repository":{"type":"git","url":"git+https://github.com/0xProject/fast-abi.git"},"binary":{"module_name":"index","host":"https://github.com/0xProject/fast-abi/releases/download/","remote_path":"{version}","package_name":"{node_abi}-{platform}-{arch}.tar.gz","module_path":"bin","pkg_path":"."},"types":"./lib/index.d.ts","gitHead":"4044684cc4f049df2d8873cf4976a30c5842a060","bugs":{"url":"https://github.com/0xProject/fast-abi/issues"},"homepage":"https://github.com/0xProject/fast-abi#readme","_id":"@bladcoin/fast-abi@0.0.8","_nodeVersion":"18.14.1","_npmVersion":"9.3.1","dist":{"integrity":"sha512-hA6zdbVf3wNNWbWAOLlxexoOidYvMJ2jGoWVAlZpRvlrRUNoOTVDPtanBloyWXY9mybOpkFcVFhQoL2S7pAQqA==","shasum":"e754568424bb436db6d01b521fecce6ed8aaf32e","tarball":"https://registry.npmjs.org/@bladcoin/fast-abi/-/fast-abi-0.0.8.tgz","fileCount":25,"unpackedSize":61322,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEkSlLGtIx7een/tL8Vo5B4fgASGu2xK4OFWqVOuASKiAiA0tqrEZo4M4rVUuX31eD3rPZ17tZsjtUXt5jTIPj6KxA=="}]},"_npmUser":{"name":"bladcoin","email":"vladikalaev15@gmail.com"},"directories":{},"maintainers":[{"name":"bladcoin","email":"vladikalaev15@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fast-abi_0.0.8_1746524972432_0.8410262259615704"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-06T09:49:32.338Z","0.0.8":"2025-05-06T09:49:32.626Z","modified":"2025-05-06T09:49:32.918Z"},"maintainers":[{"name":"bladcoin","email":"vladikalaev15@gmail.com"}],"description":"Encodes and decodes abi data, fast.","homepage":"https://github.com/0xProject/fast-abi#readme","repository":{"type":"git","url":"git+https://github.com/0xProject/fast-abi.git"},"author":{"name":"Jacob Evans","email":"jacob@dekz.net"},"bugs":{"url":"https://github.com/0xProject/fast-abi/issues"},"license":"MIT","readme":"# fast-abi\r\n\r\nEncodes and decodes abi data, fast.\r\n\r\n### Usage\r\n\r\n```typescript\r\nconst RUST_ENCODER = new FastABI(ABI as MethodAbi[]);\r\nconst callData = RUST_ENCODER.encodeInput('sampleSellsFromUniswapV2', [...values]);\r\n// 0x.....\r\n\r\n// Decode the output of a method call\r\nconst output = RUST_ENCODER.decodeOutput('sampleSellsFromUniswapV2', callData);\r\n// {\r\n//   router: '0x6b175474e89094c44da98b954eedeac495271d0f',\r\n//   path: [ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' ],\r\n//   takerTokenAmounts: [ 1, 2, 3 ]\r\n// }\r\n```\r\n\r\n### Perf\r\n\r\n```\r\n    Uniswap ABI\r\n      13 input encode\r\n        ✓ ZeroEx - optimized (2579ms)\r\n        p25: 0.223583ms, p50: 0.22825ms, p99: 1.734083ms, p100: 5.321458ms\r\n        ✓ ZeroEx - no optimize (893ms)\r\n        p25: 0.077166ms, p50: 0.077792ms, p99: 0.098417ms, p100: 2.595542ms\r\n        ✓ fast-abi (335ms)\r\n        p25: 0.027958ms, p50: 0.028292ms, p99: 0.032583ms, p100: 2.886333ms\r\n\r\n      13 input decode\r\n        ✓ ZeroEx (1399ms)\r\n        p25: 0.112125ms, p50: 0.113542ms, p99: 0.219583ms, p100: 63.167208ms\r\n        ✓ fast-abi (392ms)\r\n        p25: 0.02975ms, p50: 0.030708ms, p99: 0.046667ms, p100: 4.391958ms\r\n\r\n      13 output decode\r\n        ✓ ZeroEx (1138ms)\r\n        p25: 0.100583ms, p50: 0.101458ms, p99: 0.126875ms, p100: 4.380667ms\r\n        ✓ fast-abi (327ms)\r\n        p25: 0.023709ms, p50: 0.024625ms, p99: 0.049875ms, p100: 8.044291ms\r\n\r\n      130 input encode\r\n        ✓ ZeroEx - optimized (15317ms)\r\n        p25: 1.374375ms, p50: 1.398958ms, p99: 3.235333ms, p100: 9.725875ms\r\n        ✓ ZeroEx - no optimize (6272ms)\r\n        p25: 0.552209ms, p50: 0.560416ms, p99: 1.711958ms, p100: 3.264542ms\r\n        ✓ fast-abi (1569ms)\r\n        p25: 0.140291ms, p50: 0.142292ms, p99: 0.1875ms, p100: 10.919333ms\r\n\r\n      130 input decode\r\n        ✓ ZeroEx (10277ms)\r\n        p25: 0.8775ms, p50: 0.891917ms, p99: 3.149708ms, p100: 211.279542ms\r\n        ✓ fast-abi (2381ms)\r\n        p25: 0.189791ms, p50: 0.192541ms, p99: 0.367417ms, p100: 10.084375ms\r\n\r\n      130 output decode\r\n        ✓ ZeroEx (9743ms)\r\n        p25: 0.872875ms, p50: 0.886042ms, p99: 3.282917ms, p100: 6.403833ms\r\n        ✓ fast-abi (2244ms)\r\n        p25: 0.177959ms, p50: 0.183959ms, p99: 0.230166ms, p100: 6.963125ms\r\n```\r\n\r\n### How to Publish\r\n\r\n#### npm\r\n\r\n```\r\nyarn publish --access public\r\n```\r\n\r\n#### Rust Binary\r\n\r\nNOTE: make sure `package.json` with a new npm package version is merged.\r\n\r\nPush an empty commit with message `[publish binary]`.\r\nThis will trigger a GitHub action step `publish` which will publish the Rust binaries to a new GitHub draft release.\r\n\r\nIn GitHub, update the release notes and publish the release.\r\n\r\n#### arm64 Binaries\r\n\r\nGitHub does not provide an arm64 environment with which to build binaries.\r\nHowever, binaries can be built locally (on an Mx Mac, typically):\r\n\r\n```bash\r\nyarn build\r\nyarn node-pre-gyp package\r\n```\r\n\r\nThis will output the binary to `build/stage/<package version>`. It may then be manually added\r\nto the GitHub release.\r\n","readmeFilename":"README.md","_rev":"1-e99f6e6f386475d65e7ddfe2f5bfaed3"}