{"_id":"@bcoders.gr/eth-provider","_rev":"3-9e450c6f75008469aaa14b277b8b7ade","name":"@bcoders.gr/eth-provider","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@bcoders.gr/eth-provider","version":"1.0.0","keywords":["ethereum","ipc","blockchain","geth","anvil","web3","provider","performance","json-rpc","ethereum-provider","high-performance","caching","batching","modular","optimized","memory-efficient"],"author":{"name":"pagovitsa"},"license":"MIT","_id":"@bcoders.gr/eth-provider@1.0.0","maintainers":[{"name":"pagovitsa","email":"pagovitsa@gmail.com"},{"name":"badjunior91","email":"badjunior91@gmail.com"}],"homepage":"https://github.com/pagovitsa/eth-provider#readme","bugs":{"url":"https://github.com/pagovitsa/eth-provider/issues"},"dist":{"shasum":"3c0aef043553d9911200a94c35368827cc244427","tarball":"https://registry.npmjs.org/@bcoders.gr/eth-provider/-/eth-provider-1.0.0.tgz","fileCount":22,"integrity":"sha512-1cO185RJRUzQcV6FToMWhjkeO/jxPW8Dvu73ipheRQDeKj6K1PPOv0xkiV/Bw198Le1qARYdFlDTkDaJEjSZUg==","signatures":[{"sig":"MEUCIC540zGNm7DHOMFCZFod5itxuKbSk02AfrO49xsX9zqhAiEA4zOpvRd7diPRoJ8zR7+hMwWCSZfa05CH90GcKtVBanU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178426},"main":"index.js","type":"module","types":"index.d.ts","module":"index.js","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"},"./pool":{"import":"./src/request-pool.js"},"./batch":{"import":"./src/batch-processor.js"},"./cache":{"import":"./src/cache-manager.js"},"./parser":{"import":"./src/json-parser.js"},"./metrics":{"import":"./src/metrics-manager.js"},"./connection":{"import":"./src/connection-manager.js"}},"gitHead":"9407513a5920925eb53b90e657258c8ab1398967","scripts":{"test":"node tests/quick-fix-tests.js","check":"node -c index.js && node -c src/ipc-provider.js && node -c src/connection-manager.js && node -c src/cache-manager.js && node -c src/json-parser.js && node -c src/batch-processor.js && node -c src/metrics-manager.js && node -c src/request-pool.js","prepare":"npm run check","demo:evm":"node examples/evm-methods-demo.js","validate":"npm run check && npm run test","benchmark":"node benchmarks/performance-test.js","demo:testing":"node examples/testing-methods-demo.js","test:comprehensive":"node tests/test-runner.js"},"_npmUser":{"name":"pagovitsa","actor":{"name":"pagovitsa","type":"user","email":"pagovitsa@gmail.com"},"email":"pagovitsa@gmail.com"},"repository":{"url":"git+https://github.com/pagovitsa/eth-provider.git","type":"git"},"_npmVersion":"10.9.2","description":"High-Performance IPC Ethereum Provider with Advanced Optimizations - Refactored for Better Performance","directories":{},"_nodeVersion":"22.17.0","dependencies":{"uuid":"^11.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"benchmark":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/eth-provider_1.0.0_1750968843453_0.1569100907369292","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bcoders.gr/eth-provider","version":"1.0.1","keywords":["ethereum","ipc","blockchain","geth","anvil","web3","provider","performance","json-rpc","ethereum-provider","high-performance","caching","batching","modular","optimized","memory-efficient"],"author":{"name":"pagovitsa"},"license":"MIT","_id":"@bcoders.gr/eth-provider@1.0.1","maintainers":[{"name":"pagovitsa","email":"pagovitsa@gmail.com"},{"name":"badjunior91","email":"badjunior91@gmail.com"}],"homepage":"https://github.com/pagovitsa/eth-provider#readme","bugs":{"url":"https://github.com/pagovitsa/eth-provider/issues"},"dist":{"shasum":"05939967757ee9c70ca162d0aa85bd5572e17ce0","tarball":"https://registry.npmjs.org/@bcoders.gr/eth-provider/-/eth-provider-1.0.1.tgz","fileCount":25,"integrity":"sha512-mpKIlDnaHPlEfZlCrNPkbRBQNx9vfkwSGAIJhWAA3tJgkPL1P0iKSJw9QCNxbcK1FB+7OQHOex42agu7wKwh0Q==","signatures":[{"sig":"MEQCIBDXjgtC6z90CEB3z5FKiDWetOSozNhNhEVvR8CQ9NRMAiAyhif3qR027OVIiMFj64rZBRYYE6vxVNQxw6zKPqPcDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172579},"main":"index.js","type":"module","types":"index.d.ts","module":"index.js","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"},"./pool":{"import":"./src/request-pool.js"},"./batch":{"import":"./src/batch-processor.js"},"./cache":{"import":"./src/cache-manager.js"},"./parser":{"import":"./src/json-parser.js"},"./metrics":{"import":"./src/metrics-manager.js"},"./connection":{"import":"./src/connection-manager.js"}},"gitHead":"eccbccd9963f666a0e14dadb87767f5c9df0bca8","scripts":{"test":"node tests/quick-fix-tests.js","check":"node -c index.js && node -c src/ipc-provider.js && node -c src/connection-manager.js && node -c src/cache-manager.js && node -c src/json-parser.js && node -c src/batch-processor.js && node -c src/metrics-manager.js && node -c src/request-pool.js","prepare":"npm run check","demo:evm":"node examples/evm-methods-demo.js","validate":"npm run check && npm run test","benchmark":"node benchmarks/performance-test.js","demo:testing":"node examples/testing-methods-demo.js","test:comprehensive":"node tests/test-runner.js"},"_npmUser":{"name":"pagovitsa","actor":{"name":"pagovitsa","type":"user","email":"pagovitsa@gmail.com"},"email":"pagovitsa@gmail.com"},"repository":{"url":"git+https://github.com/pagovitsa/eth-provider.git","type":"git"},"_npmVersion":"10.9.2","description":"High-Performance IPC Ethereum Provider with Advanced Optimizations - Refactored for Better Performance","directories":{},"_nodeVersion":"22.17.0","dependencies":{"uuid":"^11.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"benchmark":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/eth-provider_1.0.1_1751006906210_0.7418914450438161","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bcoders.gr/eth-provider","version":"1.0.2","description":"High-Performance IPC Ethereum Provider with Advanced Optimizations - Refactored for Better Performance","main":"index.js","module":"index.js","types":"index.d.ts","exports":{".":{"import":"./index.js","require":"./index.js","types":"./index.d.ts"},"./connection":{"import":"./src/connection-manager.js"},"./cache":{"import":"./src/cache-manager.js"},"./parser":{"import":"./src/json-parser.js"},"./batch":{"import":"./src/batch-processor.js"},"./metrics":{"import":"./src/metrics-manager.js"},"./pool":{"import":"./src/request-pool.js"}},"type":"module","scripts":{"test":"node tests/quick-fix-tests.js","test:comprehensive":"node tests/test-runner.js","prepare":"npm run check","check":"node -c index.js && node -c src/ipc-provider.js && node -c src/connection-manager.js && node -c src/cache-manager.js && node -c src/json-parser.js && node -c src/batch-processor.js && node -c src/metrics-manager.js && node -c src/request-pool.js","benchmark":"node benchmarks/performance-test.js","validate":"npm run check && npm run test","demo:evm":"node examples/evm-methods-demo.js","demo:testing":"node examples/testing-methods-demo.js"},"keywords":["ethereum","ipc","blockchain","geth","anvil","web3","provider","performance","json-rpc","ethereum-provider","high-performance","caching","batching","modular","optimized","memory-efficient"],"author":{"name":"pagovitsa"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/pagovitsa/eth-provider.git"},"bugs":{"url":"https://github.com/pagovitsa/eth-provider/issues"},"homepage":"https://github.com/pagovitsa/eth-provider#readme","publishConfig":{"access":"public"},"engines":{"node":">=16.0.0"},"dependencies":{"uuid":"^11.1.0"},"devDependencies":{"benchmark":"^2.1.4"},"_id":"@bcoders.gr/eth-provider@1.0.2","gitHead":"96c6d7987694decf39dbb88fd4d38446121fc951","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-72VyOxvrDKhv/K5bkAHYEStDcKdlA2VWaSE8KcJxZM318KcdG/zzPeyWO803pUCqWZPJEDdMb1sDmgI32MPm2g==","shasum":"7c44364fadf61dbcb6e041ba84dfdfabce19221e","tarball":"https://registry.npmjs.org/@bcoders.gr/eth-provider/-/eth-provider-1.0.2.tgz","fileCount":25,"unpackedSize":172587,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFXvJYTSbsIlaBO/Ce847Mbe4Ev/Jm8AxEvzpntetso0AiBfhJD5YYZ/7QcySUE0tj6U+97LKDMuVR6w5NH53u8BfA=="}]},"_npmUser":{"name":"pagovitsa","email":"pagovitsa@gmail.com","actor":{"name":"pagovitsa","email":"pagovitsa@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"pagovitsa","email":"pagovitsa@gmail.com"},{"name":"badjunior91","email":"badjunior91@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eth-provider_1.0.2_1751067084691_0.18340282764314342"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-26T20:14:03.346Z","modified":"2025-06-27T23:31:25.087Z","1.0.0":"2025-06-26T20:14:03.631Z","1.0.1":"2025-06-27T06:48:26.395Z","1.0.2":"2025-06-27T23:31:24.854Z"},"bugs":{"url":"https://github.com/pagovitsa/eth-provider/issues"},"author":{"name":"pagovitsa"},"license":"MIT","homepage":"https://github.com/pagovitsa/eth-provider#readme","keywords":["ethereum","ipc","blockchain","geth","anvil","web3","provider","performance","json-rpc","ethereum-provider","high-performance","caching","batching","modular","optimized","memory-efficient"],"repository":{"type":"git","url":"git+https://github.com/pagovitsa/eth-provider.git"},"description":"High-Performance IPC Ethereum Provider with Advanced Optimizations - Refactored for Better Performance","maintainers":[{"name":"pagovitsa","email":"pagovitsa@gmail.com"},{"name":"badjunior91","email":"badjunior91@gmail.com"}],"readme":"# High-Performance IPC Ethereum Provider v2.0\n\nA highly optimized, modular IPC Ethereum provider with advanced performance features and comprehensive monitoring capabilities.\n\n## 🚀 Performance Improvements (v2.0)\n\nThis refactored version delivers significant performance improvements through:\n\n- **Modular Architecture**: Split into focused, optimized components\n- **Advanced Memory Management**: Object pooling and efficient buffer operations\n- **Intelligent Caching**: LRU cache with TTL and automatic cleanup\n- **Optimized JSON Parsing**: Fast boundary detection with streaming support\n- **Smart Batch Processing**: Priority-based batching with deduplication\n- **Comprehensive Metrics**: Detailed performance monitoring and profiling\n\n## 📦 Installation\n\n```bash\nnpm install @bcoders.gr/eth-provider\n```\n\n## 🔧 Quick Start\n\n```javascript\nimport { IPCProvider } from '@bcoders.gr/eth-provider';\n\nconst provider = new IPCProvider('/path/to/geth.ipc', {\n  // Performance options\n  cacheEnabled: true,\n  batchRequests: true,\n  poolSize: 100,\n  \n  // Cache configuration\n  cacheSize: 1000,\n  cacheTTL: 5000,\n  \n  // Batch configuration\n  batchSize: 10,\n  batchTimeout: 10,\n  \n  // Connection options\n  requestTimeout: 30000,\n  autoReconnect: true,\n  maxRetries: 3\n});\n\nawait provider.connect();\n\n// Use standard Ethereum JSON-RPC methods\nconst balance = await provider.getBalance('0x...');\nconst blockNumber = await provider.getBlockNumber();\nconst receipt = await provider.getTransactionReceipt('0x...');\n\n// Get performance statistics\nconst stats = provider.getStats();\nprovider.printStats();\n\nawait provider.disconnect();\n```\n\n## 🏗️ Modular Architecture\n\n### Core Components\n\n- **ConnectionManager**: Optimized IPC connection handling with auto-reconnection\n- **CacheManager**: High-performance LRU cache with TTL support\n- **JSONParser**: Fast streaming JSON parser with boundary detection\n- **BatchProcessor**: Intelligent request batching with priority queues\n- **MetricsManager**: Comprehensive performance monitoring\n- **RequestPool**: Memory-efficient object pooling\n\n### Individual Component Usage\n\n```javascript\nimport { \n  ConnectionManager, \n  CacheManager, \n  JSONParser,\n  BatchProcessor,\n  MetricsManager,\n  RequestPool \n} from '@bcoders.gr/provider';\n\n// Use components individually for custom implementations\nconst cache = new CacheManager({ maxSize: 500, defaultTTL: 3000 });\nconst metrics = new MetricsManager({ enabled: true });\n```\n\n## ⚡ Performance Features\n\n### 1. Object Pooling\nReduces garbage collection overhead by reusing request objects:\n\n```javascript\nconst provider = new IPCProvider(ipcPath, {\n  poolSize: 100,        // Initial pool size\n  maxPoolSize: 500      // Maximum pool growth\n});\n```\n\n### 2. Intelligent Caching\nCaches read-only method responses with automatic expiration:\n\n```javascript\nconst provider = new IPCProvider(ipcPath, {\n  cacheEnabled: true,\n  cacheSize: 1000,      // Max cached items\n  cacheTTL: 5000        // Cache TTL in ms\n});\n```\n\n### 3. Batch Processing\nGroups requests for better throughput:\n\n```javascript\nconst provider = new IPCProvider(ipcPath, {\n  batchRequests: true,\n  batchSize: 10,        // Requests per batch\n  batchTimeout: 10      // Max wait time (ms)\n});\n```\n\n### 4. Advanced Metrics\nComprehensive performance monitoring:\n\n```javascript\nconst stats = provider.getStats();\nconsole.log(stats.metrics.derived.requestsPerSecond);\nconsole.log(stats.cache.hitRatio);\nconsole.log(stats.pool.efficiency);\n\n// Print detailed summary\nprovider.printStats();\n```\n\n## 📊 Performance Benchmarks\n\nRun the included benchmarks to see performance improvements:\n\n```bash\nnpm run benchmark\n```\n\nExpected improvements over v1.x:\n- **Object Pooling**: 30-50% reduction in allocation overhead\n- **JSON Parsing**: 40-60% faster for newline-separated responses\n- **Caching**: 80-95% faster for repeated read-only calls\n- **Memory Usage**: 20-40% reduction in heap usage\n\n## 🔧 Configuration Options\n\n```javascript\nconst provider = new IPCProvider(ipcPath, {\n  // Connection settings\n  requestTimeout: 30000,\n  autoReconnect: true,\n  maxRetries: 3,\n  retryDelay: 1000,\n  maxRetryDelay: 10000,\n  backoffMultiplier: 2,\n  \n  // Performance settings\n  bufferSize: 2 * 1024 * 1024,  // 2MB buffer\n  poolSize: 100,\n  maxPoolSize: 500,\n  \n  // Cache settings\n  cacheEnabled: true,\n  cacheSize: 1000,\n  cacheTTL: 5000,\n  \n  // Batch settings\n  batchRequests: true,\n  batchSize: 10,\n  batchTimeout: 10,\n  deduplicationEnabled: true,\n  \n  // Metrics settings\n  metricsEnabled: true,\n  trackResponseTimes: true,\n  trackMemoryUsage: true,\n  \n  // Logging\n  logger: console\n});\n```\n\n## 📈 Monitoring & Metrics\n\n### Real-time Statistics\n\n```javascript\nconst stats = provider.getStats();\n\n// Connection metrics\nconsole.log(stats.connection.connected);\nconsole.log(stats.metrics.connection.uptime);\n\n// Performance metrics\nconsole.log(stats.metrics.derived.requestsPerSecond);\nconsole.log(stats.metrics.derived.successRate);\nconsole.log(stats.metrics.responses.avgTime);\n\n// Cache performance\nconsole.log(stats.cache.hitRatio);\nconsole.log(stats.cache.size);\n\n// Memory usage\nconsole.log(stats.pool.totalPoolSize);\nconsole.log(stats.parser.bufferSize);\n```\n\n### Method-specific Metrics\n\n```javascript\nconst metrics = provider.getStats().metrics;\n\n// Top methods by usage\nconst topMethods = metrics.methods;\nconsole.log(topMethods['eth_blockNumber']);\n\n// Recent errors\nconsole.log(metrics.recentErrors);\n```\n\n## 🛠️ Advanced Usage\n\n### Custom Component Configuration\n\n```javascript\n// Advanced cache configuration\nconst provider = new IPCProvider(ipcPath, {\n  cacheEnabled: true,\n  cacheSize: 2000,\n  cacheTTL: 10000,\n  cleanupInterval: 60000  // Cache cleanup frequency\n});\n\n// Advanced batch configuration\nconst provider = new IPCProvider(ipcPath, {\n  batchRequests: true,\n  batchSize: 20,\n  batchTimeout: 5,\n  maxConcurrentBatches: 10,\n  deduplicationEnabled: true\n});\n```\n\n### Health Monitoring\n\n```javascript\n// Check provider health\nconst health = await provider.healthCheck();\nconsole.log(health.status);      // 'healthy' or 'unhealthy'\nconsole.log(health.latency);     // Response latency\nconsole.log(health.connected);   // Connection status\n```\n\n## 🔄 Migration from v1.x\n\nThe v2.0 API is largely backward compatible:\n\n```javascript\n// v1.x code continues to work\nconst provider = new IPCProvider('/path/to/geth.ipc');\nawait provider.connect();\nconst balance = await provider.getBalance('0x...');\n\n// v2.0 adds new capabilities\nconst stats = provider.getStats();  // New in v2.0\nprovider.printStats();              // New in v2.0\n```\n\n## 🧪 Testing\n\n```bash\n# Validate all modules\nnpm run check\n\n# Run performance benchmarks\nnpm run benchmark\n\n# Full validation\nnpm run validate\n```\n\n## 📝 API Reference\n\n### Core Methods\n\n- `connect()` - Connect to IPC endpoint\n- `disconnect()` - Disconnect and cleanup\n- `request(method, params)` - Make JSON-RPC request\n- `getStats()` - Get comprehensive statistics\n- `printStats()` - Print performance summary\n\n### Ethereum Methods\n\n- `getBalance(address, blockTag)`\n- `getBlockNumber()`\n- `getGasPrice()`\n- `getTransactionCount(address, blockTag)`\n- `sendTransaction(txObject)`\n- `sendRawTransaction(signedTx)`\n- `getTransactionReceipt(txHash)`\n- `call(to, data, blockTag)`\n- `estimateGas(txObject)`\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Run tests and benchmarks\n5. Submit a pull request\n\n## 📄 License\n\nMIT License - see LICENSE file for details.\n\n## 🔗 Links\n\n- [GitHub Repository](https://github.com/pagovitsa/provider)\n- [NPM Package](https://www.npmjs.com/package/@bcoders.gr/provider)\n- [Issues](https://github.com/pagovitsa/provider/issues)\n\n---\n\n**Performance-optimized for production Ethereum applications** 🚀\n","readmeFilename":"README.md"}