{"_id":"@felipe-lib/stream-http-event","_rev":"46-dd59551e65183834d9fcb9651e80103e","name":"@felipe-lib/stream-http-event","dist-tags":{"latest":"2.3.2"},"versions":{"1.0.0":{"name":"@felipe-lib/stream-http-event","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.0.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"4e09aab507c9bc9bd5f4b55eea6650799620bf0d","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.0.0.tgz","fileCount":3,"integrity":"sha512-rJHea5rfWS9YDhIx3CZcXu8dyD4kS+2uLb+SywC0zzzU29kehmc77HjjycnxXYmUaI8uUxlIhz3bxQQHKXtckA==","signatures":[{"sig":"MEUCIQDSEsfRYcgm2njeTp9J8CMOhqy4+diUl0mbE5KAkau8uQIgJFfu8V5anGMwznn7xX4Dkd3VNCXepWz3/z7fGIr6O74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5210},"main":"index.js","gitHead":"41812f995c8703f9b09774d5601d958d16dee021","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@felipe-lib/schema-local":"^1.7.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.0.0_1779770142893_0.2752480744813337","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@felipe-lib/stream-http-event","version":"1.1.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.1.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"4f98ba21af12cc2e33b00708f325b28571256b07","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.1.0.tgz","fileCount":13,"integrity":"sha512-RZ2nTTi8dcoJ0s5NidMqVZk9az7MxhQaCb9j242Veq3N/c6P4n9OwtmdtIx3Y1Uvgpjv9RxSmFk0RP3IL1SyxQ==","signatures":[{"sig":"MEUCIQDhsxs2nJBs7QFDqlO7VZIvzm3/bfRuurB/tmKE9sW4swIgXUoccsUzFgyfnFWTlAns9Q3hB1xZwuLyYjJNZQ2i1wQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22702},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"1a602d1872352d8e86670c8dbe33d681d94daaac","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[English](#english) | [Português](#português)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.1.0_1779772486122_0.3999921825274959","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@felipe-lib/stream-http-event","version":"1.2.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.2.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"9516c947afb8b3d23bfbba724db87e7e41950309","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.2.0.tgz","fileCount":10,"integrity":"sha512-esnQVUm0ebZh1YcawNwLgG/1PsDYHMP2WNsmfhC6YztK1ryo7ln7+yo8qowgeL4e9Dp79oIK2o4s12pFHcC3QQ==","signatures":[{"sig":"MEUCIBYeJr3ydQxXVBw6Ut6qnej2N3FBXEHto+xr3fioXzo6AiEA3FO1vYTnCm+UNuzyPZZKS29O5I8TuJ9SktT8eAJ4rEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52213},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"5a907963ac4866b4afcdfa350904c9ff63d87afc","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[English](#english) | [Português](#português)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.2.0_1779856670853_0.20440662135930543","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@felipe-lib/stream-http-event","version":"1.2.1","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.2.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"840100ebaac93268a2c73a305b80b7254a72997d","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.2.1.tgz","fileCount":10,"integrity":"sha512-sD5YH21rblJ1FYraczMlLPzL1R5+ZUQOUBnomVGOS+HyoGOWwELq+nCsYGPp87YrKdQ+omz+Fg+adUDl81xO5A==","signatures":[{"sig":"MEYCIQD504kxzLsjN+dyZu/klvt3o08GTXWcPuo/6uUVekrL4AIhAOPRsQpy4GdVTRduws1zG9fxQrSwUb703tEiTs1F9x+r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64419},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"a20e1e3924ed5062165e0a9d3f5235a2b3439d10","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[English](#english) | [Português](#português)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.2.1_1779858051703_0.3409169694291878","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@felipe-lib/stream-http-event","version":"1.2.2","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.2.2","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"9172b0dbd6b07e13521bf370c3c73a1491272aac","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.2.2.tgz","fileCount":10,"integrity":"sha512-2MZQ/2vw9ai/wGGvjXkAbev5anPEDlRmmnRD/qkkejtdq795iPZT6XBvhPLCw3A5MWeXxhMhfHbqUQ910ZsxUw==","signatures":[{"sig":"MEQCIEn9fpGn0zCcKiu4yP8kZNEZWMPNQs2NKW2qVjxOLMuGAiABMu1wUYjxpI/A/U3venNdCEkjj5M7QJnsoKH5o0haog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73602},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"3d450bdca7614c3ba06348818d87377578cd4036","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[English](#english) | [Português](#português)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.2.2_1779859207606_0.022479535531513717","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@felipe-lib/stream-http-event","version":"1.2.3","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.2.3","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"03f9464f683894f3169c5e81ace8998af7bb7a60","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.2.3.tgz","fileCount":10,"integrity":"sha512-GKX0Sf7DZcxGW2+zyIvjo2CENFrZ0YAj4jijI6WvA6/Dyeu6XELUbAYKhrgZ0dOmJL0Y2bJSpVMwdN9/gXDnYw==","signatures":[{"sig":"MEQCIF5Zcuh+SdzcHmPelmYHxzT3ouxIFED0UfqHYvR7ReCMAiA59VH52u9x+unQf5N/ciojwdG0wPoro6+CZ8rlYTz/tA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57272},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"97db02686621eb82d8c09210466b13c9e249de45","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[Português](#português) | [English](#english)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.2.3_1779861936947_0.2811807000620936","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@felipe-lib/stream-http-event","version":"1.2.5","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.2.5","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"3883f7869bcdccff1d168ac1250603b35d49d48e","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.2.5.tgz","fileCount":10,"integrity":"sha512-D9255APNAqdR70P74Gs9VdScsYx3osOUDS+CTHQro4HbjQ49SfPwXDzuWrOlZYO/M+Go6KNFrB4zS7ZHBpb3lA==","signatures":[{"sig":"MEYCIQCfHQu4fIv0Lx1WTxrygaDcoWT+hL8DQIUTs7MgxPrWvwIhANvkNOkuKg9DlG0cZ9EFC2AtbzW8IyI/2v7EIcek4V+5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59603},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"97db02686621eb82d8c09210466b13c9e249de45","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[Português](#português) | [English](#english)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.2.5_1779934417380_0.6878973732049656","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@felipe-lib/stream-http-event","version":"1.3.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.3.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"d26b977065142f72a46fef124d522187f96c59b7","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.3.0.tgz","fileCount":10,"integrity":"sha512-6Sff2auJwYLMngkRhgG4IL93eoZA8NTycest7Rf7dX60xcUWaLcUf5/uA3/I+3suyHf7//PULIT9y1wgXvi5dQ==","signatures":[{"sig":"MEYCIQD2wjW/jigrYc6MV2SSRQTWjhfF02TtrBaYFP9c2j4OswIhAKi/vME0VL6V6N5NA4Vu543gojTjsnYK/J3Bln9kWQTo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61018},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"0b571a7a6089ef2e77c46936214dc672a6304c1d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[Português](#português) | [English](#english)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.3.0_1780019101094_0.5415650642405316","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@felipe-lib/stream-http-event","version":"1.3.1","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.3.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"8cc5d8dee67cb1be598c8d96ae48388d7d6bfad8","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.3.1.tgz","fileCount":10,"integrity":"sha512-OnVluq3pvA6eY7jhymwjFpHATuNcDhFFdBWqBkAA+kC/dHWR2Vc2+wBGh9H0NCSjTJk1NkrB6cuDZ0+p+JDzNQ==","signatures":[{"sig":"MEYCIQCniyeB6GfbDQTm0YbFTHkEflkXW5ziUa9900d6xxHFEgIhALU3J/K8LMZ6QdWy3ZgGFXSp3og1S2XxwTkotkaTCCDS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61928},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"31a4750b974824a752baa0813dd64bf535b576c8","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[Português](#português) | [English](#english)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.3.1_1780019834009_0.4462739494511989","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"@felipe-lib/stream-http-event","version":"1.3.5","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.3.5","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"20a4d6a6a83533fe399a5e3111298f1481b13281","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.3.5.tgz","fileCount":10,"integrity":"sha512-FE5otafc/APLG5MBMDUhV8p3KQNbi7LYt8hxaCeYE+uPEQQk5CBJWBw1m8D55V032ku3oP2U+g6zvQhqPqM+yw==","signatures":[{"sig":"MEYCIQDpoGA3v6do/pA1O+idk4WYVPT0zwvEwAqLBQp9MLSnRwIhAPZS3DihijpsM06fkU5WfqJ1kmNe9n9ZUwT+NxYgt5Qk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66454},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"d5a9a96244e03d522b746905b0cdc700f0050b2a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[Português](#português) | [English](#english)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.3.5_1780065911782_0.33465070228085314","host":"s3://npm-registry-packages-npm-production"}},"1.3.6":{"name":"@felipe-lib/stream-http-event","version":"1.3.6","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.3.6","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"24dd6eb8c13a0073fafa005b7aafef421dec1ff9","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.3.6.tgz","fileCount":10,"integrity":"sha512-ZdN8l2zNkn/5aY/bn0QvM2NnbWtgrPq58ThbwTqhA7Ik5lrqNNRjrUI/B98vXzBde2YILbAxAQsrYXxdZ2X/kQ==","signatures":[{"sig":"MEYCIQD3r4W121knwR09yzAq3Pd4tRK7w2hKrIFMgDwbp0EfhgIhALe4JK3ECAxNN0W/uLI0JiQegMnstaMq1So4KdTKi+X3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66782},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"d4dcd90021d816687ec1a6a434829e6914a06d06","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"*[Português](#português) | [English](#english)*","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.3.6_1780067224317_0.2816881218985179","host":"s3://npm-registry-packages-npm-production"}},"1.3.7":{"name":"@felipe-lib/stream-http-event","version":"1.3.7","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.3.7","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"b004e993e2ee20f8aa383b876a5f5e61f45a2cc7","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.3.7.tgz","fileCount":10,"integrity":"sha512-UpUOtbKTeNBGLFUiUspmDjabP8ndpXPR09bIve+ESl0kDVGJiBVpKYJvI/gZEXuKi+E1513TPL/LRQj3+Zoi7w==","signatures":[{"sig":"MEUCIQDDUoVqyGiytGw/L8W+/1rGrRssmK7Kej+SjQSqCRjEeAIgcyXeaY78lr+Avsych1SMVv/cDTVKcZqtWrYplC3ZgWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56753},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"4ef9b71ec2b6f6be4b1be3c6d4ad2134f8e4f12c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"---","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.3.7_1780069481993_0.6371333679877245","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@felipe-lib/stream-http-event","version":"1.4.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.4.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"00d822d75c6430e5c62de55a46e7e71a7e7c3d8e","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.4.0.tgz","fileCount":10,"integrity":"sha512-JhK4hVNe6NuJvbVtEcClAm3AfA3OFYhsyk1xgULoNLRbpSpeENFrQ+NmBnyfnz1WLNHPUs9Jbf5OcyQd03dwfw==","signatures":[{"sig":"MEQCIAiGReqxJ+QogrhjNjItAmZhFHi74mYArwYnJ1y/l3OgAiBYJDwD/jBeVpRhIar6xaBUpdYUx2+jbRzBly3PzGZTVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58266},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"ac27e51dd3a3cfa9ebec4c01393c677157fc6ac4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"---","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.4.0_1780446547071_0.4771394382368266","host":"s3://npm-registry-packages-npm-production"}},"1.4.5":{"name":"@felipe-lib/stream-http-event","version":"1.4.5","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.4.5","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"70b6f06c557efcdd0bb323aecbe22e87329935ba","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.4.5.tgz","fileCount":10,"integrity":"sha512-vwjen3e4cp/zg5m3kSPnn6T+Xc+ahWRXMJk2y2ZGfF9P7IQ8Q99LC2mRRYbAyb2G7bBcXv4GA+rPaHG9W/QLEw==","signatures":[{"sig":"MEQCID4L8BFBlJA07VwS9LkbzKHgRaOJD6mVyjpjjkF4Z41GAiAEMOl8F6UvZvp9/0ToxTT5N/G4U4C+h6ctKhDy0023LQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38788},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"9b2b9777d3f409387a876f32742d889a554442a6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.4.5-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.4.5_1780537943580_0.92169481010976","host":"s3://npm-registry-packages-npm-production"}},"1.4.6":{"name":"@felipe-lib/stream-http-event","version":"1.4.6","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.4.6","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"629c8fdc2c1e2bbdd42f71e883c69cd7238f87a0","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.4.6.tgz","fileCount":10,"integrity":"sha512-8OC/j7szNpJe+zOslbePxUX4bIOsu3Rk2cJkMaN6+5meVXM+fQfYKxCoUVUDJjn/7FwF+A8uHHic80J/Q1cb8Q==","signatures":[{"sig":"MEYCIQDtiPSfH/7e2W0LseZZtA5EEkhZcJfQwGMAwl3jZdn2NwIhALeBGzu/zMR3CKpQEkqeKwleESTVhVmUc2HBHyLVxJH9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53447},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"9b2b9777d3f409387a876f32742d889a554442a6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.4.6-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.4.6_1780538365118_0.07353165811369045","host":"s3://npm-registry-packages-npm-production"}},"1.4.7":{"name":"@felipe-lib/stream-http-event","version":"1.4.7","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.4.7","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"9199c2fae2e0ee4d19e49850d2557da051456a75","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.4.7.tgz","fileCount":10,"integrity":"sha512-E/nJW1C0PkQnTfGPrJuk4gOus93Xq71I81qPdRKm6YDC7NAg99ZjQxZZF7ZwAX41aRbrRX3J4+w1TKIrLV4cZw==","signatures":[{"sig":"MEUCIQC+0lF5LwLkWkA/Lx7DYB3fT8BMWd/k/v9aP4GaHW91CwIgAq5+RsXdOZhVNnexq+akjINipK+OaKebyCtUI/KmxBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55585},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"63b6f5818f2ec61fed2ff9852e454cf50cee994d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.4.6-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.4.7_1781097244347_0.16113626260771974","host":"s3://npm-registry-packages-npm-production"}},"1.4.8":{"name":"@felipe-lib/stream-http-event","version":"1.4.8","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.4.8","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"7f50afede2e75ceed6c630dc496d14ea09d65581","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.4.8.tgz","fileCount":14,"integrity":"sha512-SCkCAoIn6DuvmBkvRHS74sC6KDR/TU5Q853g2f2xxspz40n0b38NeWkiZT3Qiqhb6NgxI52ue6jyoFVj4iNbWg==","signatures":[{"sig":"MEUCIH52AQJf4XzFiOOSnksoEIr4PF/FuGNc77aWJ8m/fVJfAiEAhKfc1wdw/IowQgOTW+gjrSPDZUs4fYwciT9neDG/KoI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53711},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"63b6f5818f2ec61fed2ff9852e454cf50cee994d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.4.6-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.4.8_1781497831184_0.6032482408806796","host":"s3://npm-registry-packages-npm-production"}},"1.4.9":{"name":"@felipe-lib/stream-http-event","version":"1.4.9","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.4.9","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"22f51a8aad506fe90c5e15667303b7fd7bdd46b9","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.4.9.tgz","fileCount":50,"integrity":"sha512-5BXZzumoIKoriTemWpKT0wDf7bWWsua4jzTkCMhI4txaBmBmbfdbKsZdtJ+BmPHE6K3NrSb2zFqyu+IL/sCW9A==","signatures":[{"sig":"MEYCIQDFwmX9ugLviCXC2UXqS3NExW0H18cfB4/WPxY6IFa7iwIhAO5j85AeYiJQwccS+OhRoAFy3JRN5ZVzvpeha6gWqmuV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88720},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"434e70f7cd7fe68d6b31ea6f5229ca1491a56118","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.4.6-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.4.9_1781554253786_0.8126707958664385","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@felipe-lib/stream-http-event","version":"1.5.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.5.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"1bfd290876ae51b2607617dc5ed267ae4cab5798","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.5.0.tgz","fileCount":50,"integrity":"sha512-WjDAlrtyjf4yS05dJHVMT1T8KlVoREvxjZ+8ycESc6SLuDnLgDlmusIAY0HTT0xZ/q243RIkVuPpISDBt0n3gQ==","signatures":[{"sig":"MEUCIQCKDH2sXVf2bC4xD1rHC4Sm5shGwmDM71ppObWBwDTfhAIgVOifAC8JhEcqG2VBe6TMi9zTJyOdXh9v+YTXT6L+oZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96276},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"b59158f31b5e22e4570a280d1fe3b0c86e900e03","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.4.6-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.5.0_1781556184206_0.9038362631889385","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@felipe-lib/stream-http-event","version":"1.5.1","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.5.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"4902608be506549efe77e32a5cd3371cb16d8fba","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.5.1.tgz","fileCount":50,"integrity":"sha512-MZkWkxfgPDUqAZyVgx1k1PwU2b/y247ttsQ2M3w+dn94Ag+Xi2pnQQdK5RN+T7LEFiVvp1ud75NMBXp+tncX5g==","signatures":[{"sig":"MEUCIDeIaprnsNS/2sNc4L/ZHZLE5fh9u/nrGxjyK8kBmW8OAiEA2WdqLsqS6qLetMA4H02Vw3NghhP6mgnIg07Z77hKlzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97269},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"b59158f31b5e22e4570a280d1fe3b0c86e900e03","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.4.6-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.5.1_1781564782904_0.9154743989434875","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@felipe-lib/stream-http-event","version":"1.5.2","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.5.2","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"fdb533c6b278988b083d81d08c36859d88999e10","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.5.2.tgz","fileCount":74,"integrity":"sha512-qceR/zfjqJmByXFRoqZFPA7aLyrzzHZWEdBLizqpLOX3w0UAUTqhMTHNG3SGVPmfBw6zQm+V09b7QCGq+EJBkQ==","signatures":[{"sig":"MEUCIG0hhIxWsABZIXoV/00CRmYOZhNYc5NtLxcl1TB+bb8bAiEA93irEth3t6N1t75gvP4YJ80Wc5jSVFYCDdK5elRlLPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133966},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"7fddc532b1f69f973bb07a95999ab7f469a7c4ff","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.4.6-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.5.2_1781652062405_0.407851653872209","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@felipe-lib/stream-http-event","version":"1.5.3","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.5.3","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"f6ad9761acfdb51a02f2608331a309c4d19adb48","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.5.3.tgz","fileCount":74,"integrity":"sha512-3YGiKCbzzyHPDii2CoQYnNxPBARusrucjQaT9SY3AlhvN1PpxZY3qWxn68JE8dwV9+keF7lpENg91QzJlZFULQ==","signatures":[{"sig":"MEQCIA8G7bIhRwqAQpK7/h2wY4LueXwSI7QmQAF10lR49moqAiAhNDDyGHym+MB/Uj11LoOalIeslT6U4BL4MAKpMRlDmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133604},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"7b0845bbe516c8fc86dcc977be32f75f65dd554d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.5.3-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.5.3_1781799815013_0.9603788085775189","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"@felipe-lib/stream-http-event","version":"1.5.4","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.5.4","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"bc4e21a709657285c384cedfbec34adce9e079a8","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.5.4.tgz","fileCount":74,"integrity":"sha512-EGCAALOSm54nqt4JcowpLVaPN2dy+7C+MiuTO02w84hdUvlFfS+ZeF5bRgrZdylxzpoNieDERnteM/7qnFJvVA==","signatures":[{"sig":"MEYCIQCa0jcMtQuZRZx88oaq5C9fx860zaIzDkap/e8xJDiWKAIhAIMJ8jLfQcpoToktpDpO5lQrjQgUnP4nE+vQyCpMHUCy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134032},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"08e2b905b859e11ce3183150255d807edb699c0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.5.3-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.5.4_1781877898410_0.21601238711316628","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"@felipe-lib/stream-http-event","version":"1.5.5","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.5.5","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"f6a042a21a71e2941d40fdc5c44566e04206f478","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.5.5.tgz","fileCount":74,"integrity":"sha512-aYzS8+Mjhiippyka2r+bFcLMOzlTHDczvvBSpmsqMt6LV1bvBtNqvGCGfAz1g5LlavUQVBioW9z+9jRDi/XyxQ==","signatures":[{"sig":"MEUCIA1lN1AJTqKQQA/I3MFQtVOOduV5kPmL3tFrUXfc10+nAiEAiH5nL/kRrN6c21isQ1e6Y/9PoR2kCKmZcQhx4/sQLbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138388},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"d9652e4862c62528d03b5b631ebf4f967a8b24a1","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.5.5-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.5.5_1781878953331_0.09118694292070018","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"@felipe-lib/stream-http-event","version":"1.5.6","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.5.6","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"7e77a412c8c59d41ba7de3553393fa504c7bba3e","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.5.6.tgz","fileCount":74,"integrity":"sha512-nN32ApIykvu9URBxpjhHS8dAMGtFBn0DGSaW5zVVFS6EPAyPSgtS4zNwiBATkuvEDgAcsojxqYShlJP+gp5bcg==","signatures":[{"sig":"MEUCIQC4LfhE/zNJ2W5I9FT/++OUZx+Y5gQpURMCbN8rnfOEyQIgDA1Uj8M9EuWwqbSuG0ECA61P3EYSGx6bClJenw3PETs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136968},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"c979b6cc031830b52409d64b855c4795f776458f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.5.5-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.5.6_1781879249892_0.024912694856651374","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@felipe-lib/stream-http-event","version":"1.6.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.6.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"be1b15183953f71739a024a412da45339952533d","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.6.0.tgz","fileCount":74,"integrity":"sha512-5jfqrfGskTEkzyg67xl6pT3K3gYAKj6CPFxuWYkQpRPPtKVx2oQIT5iRaKxuqfvDMSrfL/OIKjq5n6qaMbP6BQ==","signatures":[{"sig":"MEUCIQCoJ0NArinkLMTn0VIBdvjs2tVOIFPZnP8aIjOh+LfKVAIgPTgjZXMnWnB3KK+bIwFNJmdt+QsIFT7FFXFRQ0Y9WS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136753},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"d26e2ed9a04a0e5b3bd141ba220975d34473dfa3","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.5.5-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.6.0_1781881486962_0.3528704253615389","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@felipe-lib/stream-http-event","version":"1.6.1","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.6.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"4114fe9642acd5b2863f089580a22436981f49df","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.6.1.tgz","fileCount":74,"integrity":"sha512-WVKgpjQN5ooiyDjp4qloPOmuyACKEGjLiwzB5RabJyo4qfbYNz5q1cW7kxZHZRslQpQy5wUoeUSIDKeq3S5D7Q==","signatures":[{"sig":"MEUCIQDsznfOZKL5WFHF58DsGn9x+zK+PehwJHuujhZON/DvOgIgJsV1KioTBS2ovFz/pFPJ1hFeq+M+g+VMQfK406UGiTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137020},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"1aed9284c1a0e0e6b71d9a9f57854a1883510d6d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.5.5-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.6.1_1781881903231_0.32662624275485297","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@felipe-lib/stream-http-event","version":"1.6.2","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.6.2","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"79509becd459e8aac323bca0ea852d91e7c5ad11","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.6.2.tgz","fileCount":74,"integrity":"sha512-BupTdqZU7C/8PPp/T1IDIgfIk2O4PYrrRzffJqJZtcSFg7wRYSd4FvgAuZIgu2RabwiNlWv2oaq2gKhbJsq9yQ==","signatures":[{"sig":"MEUCIGMTbZhQmhf1Pa09EnCwN0ZgIosbuApb3lFDZ72aXtjjAiEAr2d1ak8FXznB1b5fDwPcrh9MyUzGZyN17Xs3LaezwJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138009},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"0e8df776d8fde718e97841efce2831d315bab401","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.5.5-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.6.2_1781882402682_0.5320278331563473","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"@felipe-lib/stream-http-event","version":"1.6.3","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@1.6.3","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"5ba7f90c1926fc2a85e6a09805fa2b10b9bc2f1a","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-1.6.3.tgz","fileCount":74,"integrity":"sha512-AdKA5T2VP9ESF2bA7PbuFf6vyo4kHUbOeN2K2lHR/mMICfMcCTb2/v8plpR7/UU59jXo10Vt/rZtEnK3FhQ2Nw==","signatures":[{"sig":"MEUCICX/kbX0LV2g7c9lgyCGmVwrPs7hQ5TX7JInnUB+FSuNAiEAk88Pnwr4JgD8lEm733kTHfwwA061xq8C8cMcJunPNig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133534},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"c85c7ea8ab0c54833c896e946d2b0a4d8a4c0f63","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v1.5.5-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_1.6.3_1781883241440_0.45914993193655507","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@felipe-lib/stream-http-event","version":"2.0.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.0.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"1401cbd238b0ef7e75ef846ed6eb434f95285a17","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.0.0.tgz","fileCount":74,"integrity":"sha512-oHjHURj68PL+2FKDJhOB/oIXC95hpq3i0QtUXxUU3Np7VHEOOF0OO6BZnWeUVlL5JarZuYXP30J40/0DnGz6iQ==","signatures":[{"sig":"MEUCIQD880S2MvbifTdwm5xXvO2GWWdrcvYvkI8o7Pn7tjm/iAIgUUDNzuhxea7YJ6keF2f7e9cYsAtimVYUUag45hkVu10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130047},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"c85c7ea8ab0c54833c896e946d2b0a4d8a4c0f63","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.0.0-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.0.0_1782143234259_0.1111250932758221","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@felipe-lib/stream-http-event","version":"2.0.1","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.0.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"ecb463369b37918ac5527a9ce2296e89a34c5db4","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.0.1.tgz","fileCount":74,"integrity":"sha512-8T1p0NVzsSJeoaw6wloEd4D8jkldUc0dkyXOprZ8LEMZPmxb9AqTbCQsO97TiYOG4V2J86/81b4LMxWkjckfcQ==","signatures":[{"sig":"MEUCIGeTR9w05uiLntHil3XguHDHE3I2Z912pmoOyjlFrA57AiEA2F02ohAhsnLeNCFwGY1i1g1Uh3DNo3oRjkg1GlMp2KE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129792},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"680108836ea72cc110dabbdddfb02444bb7ea938","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.0.1-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.0.1_1782176643276_0.028359334835905248","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@felipe-lib/stream-http-event","version":"2.0.2","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.0.2","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"4b71eb2c37dd02aeed9687dda039c9cca68e7349","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.0.2.tgz","fileCount":74,"integrity":"sha512-pK+W/9YyxtT6MTRwqNUA1IBbyqPSkD63vZ2H5VzYBQDLlMQKH4oD74Cc/UIuQpZPFHQwsS/fEEGp4iMvdEwj+Q==","signatures":[{"sig":"MEYCIQDLKPZZsmSB5Qd7hxqGqqM+IFtpwpSZZJlprz7nT77gBgIhANrEmYOnuvfs5EsMRW3pOVquEt94G2CFQHEUg3rWxGyZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130364},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"1ef2da5b59fb5384f9480ab0243d6a1e5e428e6f","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.0.2-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.0.2_1782182776934_0.7157238902372602","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@felipe-lib/stream-http-event","version":"2.0.3","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.0.3","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"d6d6fe7f1d9dd172e1013515f4a4779118f6b189","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.0.3.tgz","fileCount":74,"integrity":"sha512-FN78hmN9yDx7MPIZiqkD/MxxXOl+tiORPhbV14TXrYEuToOIEqDUGxewgRLvH48dKogQA78HaK+z+RCyatxVmQ==","signatures":[{"sig":"MEUCIDqea2jLGOVwEl6/y75YJtJ9RZUxPsurCiPo/mHatmHEAiEA5TTlbQx30E8V1kI2sw9M6qqq17JZ0KgNQTktE7yLByg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132230},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"9a5cbeb2baeb692d7226105f42c5bdf1ee0651d0","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.0.2-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.0.3_1782183676088_0.8645435280256017","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@felipe-lib/stream-http-event","version":"2.1.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.1.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"5620d4c1b775cab8f0d724cec66388c398784d2d","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.1.0.tgz","fileCount":74,"integrity":"sha512-FoSqKgf1bZt/mHz0BYC6CRQp1SfUOOyJuP10Ot6rjzbhmF4KCk8awoqu/e40UitBFKIn/TFxfD+SFnU5aaw4IQ==","signatures":[{"sig":"MEYCIQCuLYjzf9mcqv3G7urQ9Qq/oojbly//avgoHVgaSNmvHwIhAJgmzZu/v9QYXxB47/5N5lyKjAKu3sKikP5rqPFuuLIY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132230},"main":"dist/streamHttpEvent.js","types":"dist/streamHttpEvent.d.ts","gitHead":"8c1f02c18e8606599e1fbb02a8bb648a25870fd3","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.0.2-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.1.0_1782198473192_0.42619722889881584","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@felipe-lib/stream-http-event","version":"2.1.1","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.1.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"5f50acdb30d33c7a0290cef3e1e35500b1638dd3","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.1.1.tgz","fileCount":74,"integrity":"sha512-LcX1oyjLzEHgsD8obY/g4pCN7hapCU9T28BeWZ8bw79BIYSm/2iVOz2dQZpYJP+t90RLWMLAZP3DOS5HJiXe/A==","signatures":[{"sig":"MEQCIH7GLrGw2isShy0LjbSpVv1Tmio7MZDmFBCWI6w8BlLeAiBE9GIZJCNfAGBzGjLRIcyy0Gi5spXEpiR+9x2GB4vgxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137301},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/*":{"types":"./dist/builders-providers/*/index.d.ts","default":"./dist/builders-providers/*/index.js"}},"gitHead":"deee6b43a3f1611280e0d33a4ebb2a0c3d4788a0","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.0.2-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.1.1_1782245716431_0.6962181072291662","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@felipe-lib/stream-http-event","version":"2.1.2","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.1.2","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"04a1cd1ba00f2673c32231d1852aa95cf570b779","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.1.2.tgz","fileCount":74,"integrity":"sha512-ll2VmfTVOV5h3MddE3AFb97Fxhf42sykd/CYmYrQqwii3QGcC/iqeIce5RA+D3zf0FWB7rSg8Ncp9tkj5Mf7+g==","signatures":[{"sig":"MEYCIQChMz90eAaWhzKn9inHmrq/hcJmCthPv7wU2+uOer6C7gIhAL9wRndyV02RsMjAfOkPYGqM/NMmT7U3DVm31HicdgOX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137289},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/*":{"types":"./dist/builders-providers/*/index.d.ts","default":"./dist/builders-providers/*/index.js"}},"gitHead":"deee6b43a3f1611280e0d33a4ebb2a0c3d4788a0","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.0.2-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.1.2_1782246239038_0.8055701229825951","host":"s3://npm-registry-packages-npm-production"}},"2.1.25":{"name":"@felipe-lib/stream-http-event","version":"2.1.25","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.1.25","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"f9993622162ddfaafa66cd56e3da2bb419933fa7","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.1.25.tgz","fileCount":74,"integrity":"sha512-wb7Bjnoc/WD22KscOV90ujcgx6HBF5895jDiCrsrnaI58q81Ef5pgjENiqaNquhRZ10d/zdB1iT7v2xL/BVA5Q==","signatures":[{"sig":"MEUCIQCPQlMXSqKGXACrwy6OFGLp3r83oNUYZ9r6xuPVbhI3tQIgXvOqG+a40FhpTn4lCsZVbLHEJ8luxJcPTo1dPSNzLyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137291},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/*":{"types":"./dist/builders-providers/*/index.d.ts","default":"./dist/builders-providers/*/index.js"}},"gitHead":"a3f34abe1b72ca64d4d4098e6008fd8da59ac627","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.1.25-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.1.25_1782246388386_0.5853262733054794","host":"s3://npm-registry-packages-npm-production"}},"2.1.30":{"name":"@felipe-lib/stream-http-event","version":"2.1.30","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.1.30","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"a275be00cac1ea7aef0e77531126a88fe201e389","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.1.30.tgz","fileCount":74,"integrity":"sha512-SkGxTm8moRyO10XTEsBsyn0T5YyOs2lvx5NOIrZvDNEZVlSmb19WGh9/tId3t01MuQ4kRgrhH5jKiqePHa8oGA==","signatures":[{"sig":"MEQCIGRirSqF+5Ax/h2tTqAuMmcp9pofcAfvO01LjWeWLFsKAiAKYBNBrYMl9M9F+UJjVyXhoO8CiThaNhJlLAb7FuQovw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137508},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"}},"gitHead":"62a6006cacefc2f98f48b40063e095461afc0f31","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.1.25-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.1.30_1782254559603_0.2700778655742946","host":"s3://npm-registry-packages-npm-production"}},"2.1.35":{"name":"@felipe-lib/stream-http-event","version":"2.1.35","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.1.35","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"e53a477bc987a38b35ba95bf3b497676be452dea","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.1.35.tgz","fileCount":74,"integrity":"sha512-rbRuaZ2agGdNFAl+a2r57d9WFwV2wb1rtjmhDunHcFPRL+jGE03Pt6a0G3TnUIOeqyByZVEBTWJdkKENcydJDg==","signatures":[{"sig":"MEUCIQCDUWUBRhjDqNH+efe9Y4e69uJW5C209UsNP/TlMJcxcwIgcw6x8sBSVduJKBB8rVTcUk3ZNqfwJ1j4rOIIr35JB0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137616},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"}},"gitHead":"40d3711491827931ba92f4c8f5e69172e451881d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.1.35-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.1.35_1782254699237_0.5842170300592338","host":"s3://npm-registry-packages-npm-production"}},"2.1.51":{"name":"@felipe-lib/stream-http-event","version":"2.1.51","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.1.51","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"26cd8c187b3b8ce31765c4e278d99f05ba1c80ae","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.1.51.tgz","fileCount":70,"integrity":"sha512-5KhQWWsLHatZ+P5QPyHNAWhkbpVnOZxspe9vCTgo7Jjr1KpwEXhKyG1ml+eKQLjnDcEbCyaNn2Fvuk3XW0qC1A==","signatures":[{"sig":"MEQCIDhiLzmWSC8wCtiEBWS94NR5zGSF6GceYn3PLzFfKOxfAiAH/UFYPnHEedaJe/61Wab0k8KHiwLl+isV7FC7d2p+ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140794},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"}},"gitHead":"fbc5fe01001c66cc04550d504eda7a67b056af76","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.1.51-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.1.51_1782255967670_0.8610379101320131","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@felipe-lib/stream-http-event","version":"2.2.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.2.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"33fee8200673c40c2b7a55390a60aa08e962693b","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.2.0.tgz","fileCount":70,"integrity":"sha512-M6gFiyOPeVcBp/9ABMHa/y+8piSSIxUdVVhkHTK1P+9Oc7kQCCSv4Ea6D3BQepkIORsyeLWAjICksDrfU7ossQ==","signatures":[{"sig":"MEUCIB5ntRTOahMkYsVXV/qPWmvFJeBkAoxIsWmXCiIP9js2AiEAlVCZ5/IXboAMr7HATdV6trk5eoMrce/5uo0BHLmLVhc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147404},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"}},"gitHead":"fbc5fe01001c66cc04550d504eda7a67b056af76","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.2.0-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.2.0_1782666217269_0.74934439699386","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@felipe-lib/stream-http-event","version":"2.2.2","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.2.2","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"cddc359a8c635e5df3ac7f2660bab238f48f9ad5","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.2.2.tgz","fileCount":70,"integrity":"sha512-0p6HjkNTztyFEp8MLggoLPJJlxM8RAPeJlAtcAVm2mXbztYm4wq1A6RK1RgM8vVd1+tZTB7I/5BtMBjnWeHemw==","signatures":[{"sig":"MEUCIGbAFTHEF+T0ksIJIkyITMgAjGetLj+AKIkxteKNA9s8AiEA78ZxIeDIK/19YFYdh7mMUO53+4uZkMmaT8Jvf1H/vgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147404},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"}},"gitHead":"a9b785f803f24b2ea25e018e844a22eddb3a2001","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.2.2-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.2.2_1782667162667_0.343092627648923","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"@felipe-lib/stream-http-event","version":"2.2.3","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.2.3","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"a87c3197395b321d186e4d0aa4abe7f9579c0f83","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.2.3.tgz","fileCount":70,"integrity":"sha512-xl71UbbckW5Pnn3KG4MyKcy3PYskMlk2XpdaguSGjlbSRhjaD9ipCu6q1LOk5LVqQiZ3PVxchWkw3rOe6mP1uQ==","signatures":[{"sig":"MEUCIFTy7eAqb11gge/RFFUjXG5mcjHex3kZK7vwQ0f5Mb6QAiEAovEp8kqEVLwyS/DgXNBPkw1LVnXmEhPf4fQ3QLUUw10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150645},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"}},"gitHead":"ad63ad43e3cf536b5760ba2aedd2a162f96b389a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.7.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.2.3-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.2.3_1783399430789_0.9232287008793598","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@felipe-lib/stream-http-event","version":"2.3.0","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.3.0","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"b6f21978bb7127b9a8e8a09936df64404234c71a","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.3.0.tgz","fileCount":78,"integrity":"sha512-jw0CONxmd+1t8DwNnoTsf0Aii3gQuWJ65PhobhkEMbRmZ0WjSK59O4UX8nJkJzZbmKdJUZKYemMEei88Q5paOQ==","signatures":[{"sig":"MEUCIHGVQxPmrNGKQsE5BE1hK6SWAojxwGeb7ay1UDZp6sANAiEAgGCqqNwZedwks1FZG2m19KRVSLHxfdTks4f/mTbfdts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188235},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"}},"gitHead":"b40d03f37634c16ba77bdd1057f302a8e6c5181b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.16.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.3.0-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.3.0_1785102263576_0.040359353050637425","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@felipe-lib/stream-http-event","version":"2.3.1","keywords":[],"author":"","license":"ISC","_id":"@felipe-lib/stream-http-event@2.3.1","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"dist":{"shasum":"5c17c8c2003b419869c3d5abafe6553f3cbb3bfb","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.3.1.tgz","fileCount":78,"integrity":"sha512-dFKkWvd787CWV8CmR2VMZf114X7PWVPi7dqH+pPcP6xpWZkmj+zmzrImXgjvzy8RlIxKveWkX0YPH91i9U4vNw==","signatures":[{"sig":"MEYCIQC8yjOd35XQKY/HwSn3faouJPyaUZyPAehhv6l8RaklUAIhAJd/Fc60dIIpMuqeILzlJ6IfkjNmzJgbflcFqaPM/Yr1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188235},"exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"}},"gitHead":"7962df8102c25b26e86d17adbaf2d2417bb0c5e0","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc"},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"_npmVersion":"11.16.0","description":"[![npm version](https://img.shields.io/badge/npm-v2.3.0-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/stream-http-event_2.3.1_1785103060562_0.30576232372558687","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"@felipe-lib/stream-http-event","version":"2.3.2","description":"[![npm version](https://img.shields.io/badge/npm-v2.3.0-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","exports":{".":{"types":"./dist/streamHttpEvent.d.ts","default":"./dist/streamHttpEvent.js"},"./type":{"types":"./dist/type.d.ts","default":"./dist/type.js"},"./builders-providers/anthropic":{"types":"./dist/builders-providers/anthropic/index.d.ts","default":"./dist/builders-providers/anthropic/index.js"},"./builders-providers/deepseek":{"types":"./dist/builders-providers/deepseek/index.d.ts","default":"./dist/builders-providers/deepseek/index.js"},"./types-providers/*":{"types":"./dist/types-providers/*.d.ts","default":"./dist/types-providers/*.js"}},"scripts":{"build":"tsc","test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":"","license":"ISC","packageManager":"pnpm@10.20.0","devDependencies":{"typescript":"^6.0.3"},"gitHead":"18be7866520213c24e5b6e54e8b61b9359b7a594","_id":"@felipe-lib/stream-http-event@2.3.2","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-2gEBpKLc7+gcgSJ4iZDUd+YrtuHumlN3tvPsxKG7ByH/TdH9LOh/wfdef5kwP087AW4/KoVHXh9Ff7LmNGaQ6Q==","shasum":"9ff400b291ee80ce2d0ddc7cf67c9fde2343bc93","tarball":"https://registry.npmjs.org/@felipe-lib/stream-http-event/-/stream-http-event-2.3.2.tgz","fileCount":78,"unpackedSize":190253,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICB1B6JFo8QS16oMczC58hYrwnzM+Z0ItK4wKifG6QayAiEA8Erk+NdBDCPVkvdEiDPWp+2gx0lv86juQoUFL8f0ujY="}]},"_npmUser":{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"},"directories":{},"maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/stream-http-event_2.3.2_1785162983319_0.07733107579044352"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-26T04:35:42.749Z","modified":"2026-07-27T14:36:23.645Z","1.0.0":"2026-05-26T04:35:43.028Z","1.1.0":"2026-05-26T05:14:46.270Z","1.2.0":"2026-05-27T04:37:51.013Z","1.2.1":"2026-05-27T05:00:51.845Z","1.2.2":"2026-05-27T05:20:07.729Z","1.2.3":"2026-05-27T06:05:37.091Z","1.2.5":"2026-05-28T02:13:37.553Z","1.3.0":"2026-05-29T01:45:01.234Z","1.3.1":"2026-05-29T01:57:14.154Z","1.3.5":"2026-05-29T14:45:11.926Z","1.3.6":"2026-05-29T15:07:04.471Z","1.3.7":"2026-05-29T15:44:42.143Z","1.4.0":"2026-06-03T00:29:07.423Z","1.4.5":"2026-06-04T01:52:23.713Z","1.4.6":"2026-06-04T01:59:25.305Z","1.4.7":"2026-06-10T13:14:04.483Z","1.4.8":"2026-06-15T04:30:31.307Z","1.4.9":"2026-06-15T20:10:53.958Z","1.5.0":"2026-06-15T20:43:04.358Z","1.5.1":"2026-06-15T23:06:23.041Z","1.5.2":"2026-06-16T23:21:02.550Z","1.5.3":"2026-06-18T16:23:35.168Z","1.5.4":"2026-06-19T14:04:58.575Z","1.5.5":"2026-06-19T14:22:33.489Z","1.5.6":"2026-06-19T14:27:30.048Z","1.6.0":"2026-06-19T15:04:47.097Z","1.6.1":"2026-06-19T15:11:43.382Z","1.6.2":"2026-06-19T15:20:02.829Z","1.6.3":"2026-06-19T15:34:01.585Z","2.0.0":"2026-06-22T15:47:14.403Z","2.0.1":"2026-06-23T01:04:03.415Z","2.0.2":"2026-06-23T02:46:17.064Z","2.0.3":"2026-06-23T03:01:16.216Z","2.1.0":"2026-06-23T07:07:53.327Z","2.1.1":"2026-06-23T20:15:16.603Z","2.1.2":"2026-06-23T20:23:59.203Z","2.1.25":"2026-06-23T20:26:28.514Z","2.1.30":"2026-06-23T22:42:39.734Z","2.1.35":"2026-06-23T22:44:59.386Z","2.1.51":"2026-06-23T23:06:07.805Z","2.2.0":"2026-06-28T17:03:37.411Z","2.2.2":"2026-06-28T17:19:22.796Z","2.2.3":"2026-07-07T04:43:50.927Z","2.3.0":"2026-07-26T21:44:23.715Z","2.3.1":"2026-07-26T21:57:40.722Z","2.3.2":"2026-07-27T14:36:23.474Z"},"license":"ISC","keywords":[],"description":"[![npm version](https://img.shields.io/badge/npm-v2.3.0-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event) [![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)","maintainers":[{"name":"felipe.dev","email":"felcarvalho54321@gmail.com"}],"readme":"# @felipe-lib/stream-http-event\n\n[![npm version](https://img.shields.io/badge/npm-v2.3.0-blue)](https://www.npmjs.com/package/@felipe-lib/stream-http-event)\n[![license](https://img.shields.io/badge/license-ISC-green)](./LICENSE)\n\n**Zero dependências em runtime.** Consuma respostas HTTP em streaming de provedores de IA (OpenAI, Anthropic, Groq, DeepSeek, etc.) via o protocolo [Server-Sent Events (SSE)](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events).\n\nFunciona em qualquer runtime com `fetch`, `AsyncGenerator`, `TextDecoder` e `TextEncoder` — navegadores, Node.js 18+, Deno, Bun, Cloudflare Workers.\n\n---\n\n# Português\n\n---\n\n## Índice\n\n- [Instalação](#instalação)\n- [Início Rápido](#início-rápido)\n- [O que mudou?](#o-que-mudou)\n- [Referência da API](#referência-da-api)\n    - [`dataFetch()`](#datafetch)\n    - [`ExtractorsType`](#extractortype)\n    - [`fetchIA()`](#fetchia)\n    - [`start()` e `abort()`](#start-e-abort)\n- [Exemplos](#exemplos)\n    - [Streaming OpenAI](#streaming-openai)\n    - [DeepSeek com builders](#deepseek-com-builders)\n    - [Anthropic](#anthropic)\n    - [Cancelamento](#cancelamento)\n    - [Salvando resposta completa (onDone)](#salvando-resposta-completa-ondon)\n    - [Pipe para arquivo](#pipe-para-arquivo)\n    - [Fallback não-streaming](#fallback-não-streaming)\n    - [Múltiplos provedores](#múltiplos-provedores)\n- [Como funciona internamente](#como-funciona-internamente)\n- [Builders por Provedor](#builders-por-provedor)\n    - [DeepSeek](#deepseek)\n    - [Anthropic](#anthropic-1)\n- [Tipos TypeScript públicos](#tipos-typescript-públicos)\n- [Projeto Estudantil](#projeto-estudantil)\n\n---\n\n## Instalação\n\n```bash\nnpm install @felipe-lib/stream-http-event\n# ou\npnpm add @felipe-lib/stream-http-event\n```\n\n---\n\n## Início Rápido\n\n```typescript\nimport { StreamHttpEvent } from \"@felipe-lib/stream-http-event\";\n\nconst stream = new StreamHttpEvent();\n\nstream.dataFetch({\n    url: \"https://api.openai.com/v1/chat/completions\",\n    headers: { Authorization: \"Bearer sk-seu-token\" },\n    body: {\n        model: \"gpt-4o\",\n        messages: [{ role: \"user\", content: \"Olá!\" }],\n        stream: true,\n    },\n    extractors: {\n        defaultExtract: [\n            { key: \"content\", forExtract: \"data.choices[0].delta.content\" },\n        ],\n    },\n});\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    process.stdout.write(chunk);\n}\n```\n\nA saída de cada chunk será algo como:\n\n```\ndata: {\"content\":\"Olá\"}\n\n```\n\n---\n\n## O que mudou?\n\nEsta seção documenta as principais alterações em relação à versão anterior da API.\n\n### Extractors\n\n| Antes                                                   | Depois                                                                                              |\n| ------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |\n| `extractor: [{ fn: ({ data }) => ({ content: ... }) }]` | `extractors: { defaultExtract: [{ key: \"content\", forExtract: \"data.choices[0].delta.content\" }] }` |\n\nA API antiga usava funções JavaScript para extrair dados. A nova usa **paths** (strings que navegam pelo objeto JSON), tornando a configuração declarativa e serializável.\n\n### Busca de chaves no stream\n\n| Antes                                                                                               | Depois                                                                                                                                 |\n| --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |\n| Hardcoded `state.getStateOne(\"extracted\")` — só funcionava se a key do extrator fosse `\"extracted\"` | **Loop dinâmico** — percorre **todas** as keys configuradas em `defaultExtract` e `conditionalxtractor`, montando a saída com cada uma |\n\n### Formato de saída\n\n| Antes                                                     | Depois                                                                    |\n| --------------------------------------------------------- | ------------------------------------------------------------------------- |\n| Sempre `data: {...}\\nevent: ...\\n\\n` (formato SSE padrão) | Sempre `data: { \"chave\": \"valor\" }\\n\\n` (JSON do objeto extraído inteiro) |\n\n### Código removido\n\n- `onData` e `onEvent` — declarados mas nunca chamados\n- `try { ... } catch (e) { throw e }` — blocos redundantes\n\n### Bugs corrigidos\n\n- `if (value)` agora é `if (value !== undefined)` — valores `0`, `\"\"`, `false` não são mais ignorados\n- `types.anthropic.ts`: campo `ccontent` corrigido para `content` (typo)\n- `types.anthropic.ts`: duplicata removida de union type\n\n### v2.2.1\n\n**`accumulate`** — nova flag de acumulação de valores extraídos. Disponível em três níveis:\n\n- **Global** (`dataFetchType.accumulate`): acumula todos os chunks em uma string contínua no output final\n- **Extract padrão** (`extract.accumulate`): quando ativado, os valores de **todas as chaves** do `defaultExtract` são concatenados em uma única string compartilhada entre elas\n- **Extract condicional** (`condicionalExtract.accumulate`): quando ativado, os valores de **todas as chaves** do `conditionalxtractor` são concatenados em uma única string compartilhada entre elas\n\n**`start()` e `abort()`** — novos métodos públicos para gerenciar o ciclo de vida da requisição. Use `start()` para obter o `AbortController` interno e `abort()` para cancelar a requisição.\n\n**`extractors` opcional** — o campo `extractors` em `dataFetchType` agora é opcional, permitindo usar `fetchIA()` para chamadas não-streaming sem configurar extratores.\n\n### v2.3.0\n\n**`AnthropicInputSchemaBuilder`** e **`AnthropicToolBuilder`** — novos builders para criação de ferramentas (tools) no provedor Anthropic, análogos aos existentes no DeepSeek.\n\n**`tools()`** e **`toolChoice()`** — novos métodos no `AnthropicBodyBuilder` para configurar ferramentas e escolha de tool no corpo da requisição.\n\n**`AnthropicToolUnion`** — novo type alias exportado que une todos os tipos de ferramenta Anthropic (custom + server tools).\n\n**`tools`** — adicionado a `MessageCreateParamsBase` como `AnthropicToolUnion[]`.\n\n### v2.2.3\n\nCorreção do typo `acumullate` para `accumulate` em toda a codebase (propriedade privada, parâmetro de `dataFetch()`, interfaces `extract` e `condicionalExtract`, e tipo `dataFetchType`).\n\n---\n\n## Referência da API\n\n### `dataFetch()`\n\nConfigura a instância. Deve ser chamado antes de `fetchIA()`.\n\n```typescript\nstream.dataFetch<H, B>(config: dataFetchType<H, B>): void\n```\n\n| Parâmetro       | Tipo                                                      | Obrigatório | Descrição                                                                                                  |\n| --------------- | --------------------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------- |\n| `url`           | `string`                                                  | Sim         | Endpoint do provedor de IA                                                                                 |\n| `headers`       | `Record<string, string>`                                  | Não         | Headers HTTP. Pode ser tipado via builder de provedor                                                      |\n| `body`          | `Record<string, unknown>`                                 | Não         | Corpo da requisição (serializado como JSON)                                                                |\n| `timeOut`       | `number`                                                  | Não         | Timeout de inatividade em milissegundos. Reseta a cada chunk                                               |\n| `onDone`        | `(finalData: { chunks: Record<string, unknown>[] }) => void` | Não      | Callback disparado quando o stream termina. Recebe `{ chunks }` — array de objetos extraídos chunk a chunk |\n| `extractors`    | `ExtractorsType`                                          | Não         | Configuração dos extratores de dados                                                                       |\n| `beforeRequest` | `BeforeRequestFn`                                         | Não         | Função assíncrona executada antes do fetch. Recebe `{ url, headers, body }` e pode modificar cada campo. Se retornar `void`, os valores originais são mantidos |\n| `accumulate`    | `boolean`                                                 | Não         | Se `true`, acumula os valores extraídos de todos os chunks em uma string contínua no output final           |\n\n---\n\n### `ExtractorsType`\n\n```typescript\ninterface ExtractorsType {\n    defaultExtract: extract[];\n    conditionalxtractor?: condicionalExtract[];\n}\n\ninterface extract {\n    key: string;\n    forExtract: string;\n    accumulate?: boolean;\n}\n\ninterface condicionalExtract {\n    key: string;\n    path: string;\n    accumulate?: boolean;\n    condition: string;\n}\n```\n\n**`defaultExtract`** — sempre aplicado em cada mensagem SSE:\n\n- `key`: nome da chave que será usada na saída e no state interno\n- `forExtract`: caminho JSON para navegar até o valor desejado (ex: `\"data.choices[0].delta.content\"`)\n- `accumulate`: se `true`, o valor extraído é concatenado a um acumulador **compartilhado entre todas as chaves** do `defaultExtract`\n- Suporta navegação por pontos e colchetes: `\"data.choices[0].delta.content\"`\n\n**`conditionalxtractor`** — aplicado apenas se a condição for satisfeita:\n\n- `key`: nome da chave de saída\n- `path`: caminho JSON para navegar até o valor\n- `accumulate`: se `true`, o valor extraído é concatenado a um acumulador **compartilhado entre todas as chaves** do `conditionalxtractor`\n- `condition`: valor esperado. Se o valor no `path` for igual a `condition`, o valor é extraído\n\n**Mesclagem de keys:** as keys de `defaultExtract` e `conditionalxtractor` são combinadas. Se ambos os arrays tiverem entries, **todas** as keys são usadas na saída.\n\n---\n\n### `fetchIA()`\n\nExecuta a requisição HTTP e retorna um `AsyncGenerator` ou um objeto JSON parseado.\n\n```typescript\nstream.fetchIA(options: FetchOptions): Promise<any>\n```\n\n| Parâmetro     | Tipo      | Padrão   | Descrição                                                             |\n| ------------- | --------- | -------- | --------------------------------------------------------------------- |\n| `method`      | `string`  | `\"POST\"` | Método HTTP                                                           |\n| `encodeBytes` | `boolean` | `false`  | Se `true`, chunks yieldados são `Uint8Array`. Se `false`, são strings |\n\n**Retorna:**\n\n- `AsyncGenerator<string | Uint8Array, void, unknown>` — se `Content-Type` for `text/event-stream`\n- `Record<string, unknown>` — o JSON parseado para respostas não-streaming\n\n---\n\n## Exemplos\n\n### Streaming OpenAI\n\n```typescript\nconst stream = new StreamHttpEvent();\n\nstream.dataFetch({\n    url: \"https://api.openai.com/v1/chat/completions\",\n    headers: {\n        Authorization: \"Bearer sk-seu-token\",\n        \"Content-Type\": \"application/json\",\n    },\n    timeOut: 30000,\n    body: {\n        model: \"gpt-4o\",\n        messages: [{ role: \"user\", content: \"Explique SSE\" }],\n        stream: true,\n    },\n    extractors: {\n        defaultExtract: [\n            { key: \"content\", forExtract: \"data.choices[0].delta.content\" },\n        ],\n    },\n});\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    process.stdout.write(chunk);\n}\n```\n\n### DeepSeek com builders\n\n```typescript\nimport { StreamHttpEvent } from \"@felipe-lib/stream-http-event\";\nimport {\n    DeepSeekHeadersBuilder,\n    DeepSeekBodyBuilder,\n    DeepSeekMessageBuilder,\n} from \"@felipe-lib/stream-http-event/builders-providers/deepseek\";\n\nconst stream = new StreamHttpEvent();\n\nstream.dataFetch({\n    url: \"https://api.deepseek.com/chat/completions\",\n    headers: new DeepSeekHeadersBuilder().apiKey(\"sk-seu-token\").build(),\n    body: new DeepSeekBodyBuilder()\n        .model(\"deepseek-v4-pro\")\n        .messages([new DeepSeekMessageBuilder().content(\"Olá!\").build()])\n        .stream(true)\n        .build(),\n    extractors: {\n        defaultExtract: [\n            { key: \"content\", forExtract: \"data.choices[0].delta.content\" },\n        ],\n    },\n});\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    process.stdout.write(chunk);\n}\n```\n\n### Anthropic\n\nO Anthropic usa um formato SSE diferente. Exemplo com `defaultExtract` + `conditionalxtractor`:\n\n```typescript\nconst stream = new StreamHttpEvent();\n\nstream.dataFetch({\n    url: \"https://api.anthropic.com/v1/messages\",\n    headers: {\n        \"x-api-key\": \"sk-ant-seu-token\",\n        \"anthropic-version\": \"2023-06-01\",\n        \"Content-Type\": \"application/json\",\n    },\n    timeOut: 30000,\n    body: {\n        model: \"claude-sonnet-4-20250514\",\n        max_tokens: 1024,\n        messages: [{ role: \"user\", content: \"Olá\" }],\n        stream: true,\n    },\n    extractors: {\n        defaultExtract: [{ key: \"text\", forExtract: \"data.delta.text\" }],\n        conditionalxtractor: [\n            {\n                key: \"eventType\",\n                path: \"data.type\",\n                condition: \"content_block_delta\",\n            },\n        ],\n    },\n});\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    process.stdout.write(chunk);\n}\n```\n\n### Cancelamento\n\nUse `start()` para obter o `AbortController` e `abort()` para cancelar:\n\n```typescript\nconst controller = stream.start();\nsetTimeout(() => stream.abort(), 5000);\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    console.log(chunk);\n}\n```\n\nVia `break` no loop:\n\n```typescript\nconst generator = await stream.fetchIA();\n\nlet count = 0;\nfor await (const chunk of generator) {\n    console.log(chunk);\n    count++;\n    if (count >= 10) break;\n}\n```\n\n### `start()` e `abort()`\n\nGerenciam o ciclo de vida da requisição:\n\n```typescript\nstream.start(): AbortController\n```\n\nChame `start()` antes de `fetchIA()` para obter o `AbortController` interno. Use `abort()` para cancelar a requisição em andamento:\n\n```typescript\nstream.abort(): void\n```\n\n> **Nota:** `start()` reseta o controller a cada chamada. Se você chamar `fetchIA()` sem `start()`, o controller é `undefined` e a requisição não poderá ser cancelada via `abort()`.\n\n### Salvando resposta completa (onDone)\n\n```typescript\nstream.dataFetch({\n    // ... config ...\n    onDone: (finalData) => {\n        console.log(\"Resposta completa:\", finalData.chunks);\n        // finalData.chunks → [{ content: \"Olá\" }, { content: \" mundo\" }, { content: \"!\" }]\n        // Salve em banco de dados, arquivo, etc.\n    },\n});\n```\n\n### Pipe para arquivo\n\n```typescript\nimport { createWriteStream } from \"node:fs\";\n\nconst generator = await stream.fetchIA({ encodeBytes: true });\n\nconst fileStream = createWriteStream(\"response.jsonl\");\nfor await (const chunk of generator) {\n    fileStream.write(chunk);\n}\nfileStream.end();\n```\n\n### Fallback não-streaming\n\nSe a resposta não for `text/event-stream`, `fetchIA()` retorna o JSON parseado diretamente. Extratores **não** são aplicados — o objeto retornado é o JSON bruto:\n\n```typescript\nstream.dataFetch({\n    url: \"https://api.openai.com/v1/chat/completions\",\n    headers: { Authorization: \"Bearer sk-seu-token\" },\n    body: {\n        model: \"gpt-4o\",\n        messages: [{ role: \"user\", content: \"Olá\" }],\n        stream: false,\n    },\n});\n\nconst result = await stream.fetchIA();\nconsole.log(result.choices?.[0]?.message?.content);\n```\n\n### Múltiplos provedores\n\n```typescript\nconst openaiStream = new StreamHttpEvent();\nopenaiStream.dataFetch({\n    url: \"https://api.openai.com/v1/chat/completions\",\n    headers: { Authorization: \"Bearer sk-openai-...\" },\n    timeOut: 30000,\n});\n\nconst deepseekStream = new StreamHttpEvent();\ndeepseekStream.dataFetch({\n    url: \"https://api.deepseek.com/chat/completions\",\n    headers: new DeepSeekHeadersBuilder().apiKey(\"sk-deepseek-...\").build(),\n    body: new DeepSeekBodyBuilder()\n        .model(\"deepseek-v4-pro\")\n        .messages([new DeepSeekMessageBuilder().content(\"Olá\").build()])\n        .stream(true)\n        .build(),\n    timeOut: 15000,\n});\n\nconst [openaiResult, deepseekResult] = await Promise.all([\n    openaiStream.fetchIA(),\n    deepseekStream.fetchIA(),\n]);\n```\n\n---\n\n## Como funciona internamente\n\n### Fluxo geral\n\n```\ndataFetch()\n    |\n    ↓\nfetchIA()\n    |\n    ↓\nbeforeRequest() — opcional: modifica url, headers, body\n    |\n    ↓\nfetch() com url, headers, body\n    |\n    ↓\nContent-Type: text/event-stream?\n    |\n    ├── sim ──▶ streamIA()\n    |               |\n    |               ↓\n    |        while(true) lê ReadableStream (bodyReader.read())\n    |               |\n    |               ↓\n    |        decoder.decode() → buffer.add()\n    |               |\n    |               ↓\n    |        serialize()\n    |               |\n    |               ├── divide buffer por \"\\n\\n\" (mensagens SSE)\n    |               ├── para cada mensagem:\n    |               |   ├── detecta \"data: [DONE]\" → retorna\n    |               |   ├── interpreta linha \"data: ...\" → JSON.parse\n    |               |   ├── interpreta linha \"event: ...\" → string\n    |               |   └── GetValueExtract(sseObject, state)\n    |               |           ├── defaultExtract: percorre entries\n    |               |           |   → getValueByPath(sseObject, forExtract)\n    |               |           |   → state.setState({ [key]: value })\n    |               |           └── conditionalxtractor: percorre entries\n    |               |               → getValueByPath(sseObject, path)\n    |               |               → se === condition, state.setState({ [key]: value })\n    |               |\n    |               ↓\n    |        timeout() — reseta timer de inatividade\n    |               |\n    |               ↓\n        |        Serializa extractedValues com JSON.stringify\n        |        e monta \"data: {JSON}\\\\n\\\\n\"\n        |               |\n        |               ↓\n        |        yield chunk (string | Uint8Array)\n    |               |\n    |               ↓\n    |        clearState() — limpa state para o próximo chunk\n    |               |\n    |               ↓\n    |        [loop repete até done ou \"data: [DONE]\"]\n    |               |\n    |               ↓\n    |        onDone({ chunks }) — stream finalizado (array de objetos extraídos)\n    |               |\n    |               ↓\n    |        finally: releaseLock() + clearTimeout()\n    |\n    └── não ──▶ retorna fetcher.json() (objeto JS)\n```\n\n### Etapas detalhadas\n\n**1. `dataFetch()`** — armazena a configuração (url, headers, body, extractors, timeout, onDone, beforeRequest, accumulate) em propriedades privadas da instância.\n\n**2. `beforeRequest()`** — se configurado, a função `beforeRequest` é executada com `{ url, headers, body }`. Os valores retornados (se houver) substituem os originais.\n\n**3. `fetchIA()`** — executa `fetch()` com a URL, headers e body (modificados pelo `beforeRequest`, se aplicável). Verifica o `Content-Type` da resposta:\n\n- Se `text/event-stream`: retorna o `AsyncGenerator` de `streamIA()`\n- Caso contrário: retorna `fetcher.json()` (objeto JS parseado)\n\n**4. `streamIA()`** — obtém um `ReadableStreamDefaultReader` e entra em loop infinito. A cada iteração:\n\n- Lê bytes do stream com `bodyReader.read()`\n- Decodifica com `TextDecoder` e adiciona ao buffer interno\n- Chama `serialize()` para processar o buffer\n- Chama `timeout()` para resetar o timer de inatividade\n- Verifica se encontrou `\"data: [DONE]\"`\n- Monta o chunk com os valores extraídos e faz yield\n\n**5. `bufferControl()`** — closure que mantém um buffer de string. Métodos:\n\n- `getBuffer()`: retorna o buffer atual\n- `setBuffer(data)`: substitui o buffer\n- `add(data)`: concatena dados ao buffer\n\n**6. `serialize()`** — divide o buffer por `\\n\\n` (delimitador de mensagens SSE). A última parte (incompleta) volta ao buffer. Para cada mensagem completa:\n\n- Divide por `\\n`\n- Interpreta linhas começando com `data:` (JSON) e `event:` (string)\n- Se encontra `\"data: [DONE]\"`, retorna a string imediatamente para interromper o stream\n- Chama `GetValueExtract()` para cada mensagem\n\n**7. `GetValueExtract()`** — para cada objeto SSE parseado, aplica os extractors configurados:\n- `defaultExtract`: percorre cada entrada, navega o objeto com `getValueByPath` usando `forExtract`. Se `accumulate` for `true`, concatena em um **único acumulador compartilhado** para todas as chaves do `defaultExtract`; senão, salva o valor bruto no state\n\n- `conditionalxtractor`: percorre cada entrada, navega o objeto com `getValueByPath` usando `path`. Se `accumulate` for `true`, concatena em um **único acumulador compartilhado** para todas as chaves do `conditionalxtractor`. Só salva no state se o valor for estritamente igual a `condition`\n\n**8. `getValueByPath(obj, path)`** — navega por um objeto usando um caminho como `\"data.choices[0].delta.content\"`. Suporta pontos e colchetes. Retorna `undefined` se o caminho não existir.\n\n**9. `stateLocal()`** — closure baseada em `Map<string, unknown>` que mantém o estado entre chamadas. Métodos:\n\n- `getStateOne(key)`: retorna o valor de uma chave\n- `setState(newState)`: mescla um objeto no state\n- `clearState()`: limpa todo o state\n\n**10. `timeOutControl()` + `timeout()`** — gerenciam um timer de inatividade. Se o tempo entre chunks exceder `timeOut`, o `bodyReader` é cancelado. O timer reseta a cada chunk.\n\n**11. Montagem do chunk** — após extrair os valores, o código:\n\n- Pega todas as keys de `defaultExtract` + `conditionalxtractor`\n- Busca cada valor no state via `getStateOne()`\n- Se `accumulate` global for `true`, acumula os valores em uma string contínua (`acumulateValue`) e usa `JSON.parse` para o chunk final\n- Se nenhuma key tiver valor (`hasValue === false`), o chunk é pulado (`continue`)\n- Serializa o objeto `extractedValues` com `JSON.stringify` e adiciona `\\n\\n`\n- Monta a saída no formato SSE: `data: ${JSON.stringify(extractedValues)}\\n\\n`\n- Faz yield da string (ou `Uint8Array` se `encodeBytes: true`)\n- O objeto extraído é acumulado via `push` em `chunks` (array de objetos) para uso no `onDone`\n\n**12. `clearState()`** — após yield, o state é completamente limpo para o próximo chunk não acumular dados obsoletos.\n\n**13. Finalização** — quando o stream termina (reader retorna `done: true` ou mensagem `\"data: [DONE]\"`):\n\n- Se `chunks` (array) não estiver vazio, `onDone` é chamado com `{ chunks }` — cada elemento é um objeto com as keys extraídas\n- No `finally`: `releaseLock()` no reader e `clearTimeout()` no timer de inatividade\n\n---\n\n## Builders por Provedor\n\n### DeepSeek\n\nImporte de `@felipe-lib/stream-http-event/builders-providers/deepseek`:\n\n- `DeepSeekHeadersBuilder` — headers com apiKey\n- `DeepSeekBodyBuilder` — corpo da requisição completo. Métodos: `model()`, `messages()`, `thinking()`, `maxTokens()`, `responseFormat()`, `stop()`, `stream()`, `streamOptions()`, `temperature()`, `topP()`, `tools()`, `toolChoice()`, `logprobs()`, `topLogprobs()`, `userId()`\n- `DeepSeekMessageBuilder` — mensagem individual (role, content, tool_call_id, prefix, reasoning_content)\n- `DeepSeekThinkingBuilder` — configuração de thinking (type, reasoning_effort)\n- `DeepSeekResponseFormatBuilder` — formato de resposta (text, json_object)\n- `DeepSeekToolBuilder` — definição de ferramenta (name, description, parameters, strict)\n- `DeepSeekToolParametersBuilder` — parâmetros da ferramenta (properties, required)\n\n> Cada builder DeepSeek exporta sua própria interface de retorno: `DeepSeekBody`, `DeepSeekMessageBuild`, `DeepSeekThink`, `DeepSeekReasonEffort`, `DeepSeekResponseFmt`, `DeepSeekToolParam`, `DeepSeekToolBuild`.\n\n### Anthropic\n\nImporte de `@felipe-lib/stream-http-event/builders-providers/anthropic`:\n\n- `AnthropicHeadersBuilder` — headers com apiKey e versão. Métodos: `apiKey()`, `version()`\n- `AnthropicBodyBuilder` — corpo da requisição. Métodos: `messages()`, `model()`, `maxTokens()`, `system()`, `thinking()`, `cacheControl()`, `container()`, `inferenceGeo()`, `metadata()`, `outputConfig()`, `serviceTier()`, `stopSequences()`, `stream()`, `tools()`, `toolChoice()`, `userProfileId()`\n- `AnthropicMessageBuilder` — mensagem individual (role, content)\n- `AnthropicThinkingBuilder` — configuração de thinking (type, budget_tokens, display)\n- `AnthropicInputSchemaBuilder` — schema de entrada da ferramenta (properties, required)\n- `AnthropicToolBuilder` — definição de ferramenta (name, description, inputSchema, strict, ...)\n\n> Cada builder Anthropic exporta sua própria interface de retorno: `AnthropicBody`, `AnthropicMessage`, `AnthropicThinking`, `AnthropicInputSchemaBuild`, `AnthropicToolBuild`.\n\n---\n\n## Tipos TypeScript públicos\n\n```typescript\ninterface dataFetchType<\n    H extends Record<string, string> = Record<string, string>,\n    B extends Record<string, unknown> = Record<string, unknown>,\n> {\n    url: string;\n    headers?: H;\n    timeOut?: number;\n    onDone?: (finalData: { chunks: Record<string, unknown>[] }) => void;\n    body?: B;\n    extractors?: ExtractorsType;\n    beforeRequest?: BeforeRequestFn;\n    accumulate?: boolean;\n}\n\ninterface FetchOptions {\n    encodeBytes?: boolean;\n    method?: string;\n}\n\ninterface ExtractorsType {\n    defaultExtract: extract[];\n    conditionalxtractor?: condicionalExtract[];\n}\n\ninterface extract {\n    key: string;\n    forExtract: string;\n    accumulate?: boolean;\n}\n\ninterface condicionalExtract {\n    key: string;\n    path: string;\n    accumulate?: boolean;\n    condition: string;\n}\n\ninterface BeforeRequestConfig {\n    url: string;\n    headers: Record<string, string>;\n    body?: Record<string, unknown>;\n}\n\ntype BeforeRequestFn = (\n    config: BeforeRequestConfig,\n) => Promise<BeforeRequestConfig | void>;\n```\n\n> Todos os tipos acima também podem ser importados de `@felipe-lib/stream-http-event/type`, que adicionalmente exporta o enum `SystemError` e o objeto `systemErrorDescription` com descrições de erros do sistema em português.\n\n---\n\nAlém disso, cada builder de provedor exporta sua interface de retorno:\n\n**Anthropic:**\n```typescript\nimport type { AnthropicBody, AnthropicMessage, AnthropicThinking, AnthropicInputSchemaBuild, AnthropicToolBuild, AnthropicToolUnion, ToolChoice, Tool }\n    from \"@felipe-lib/stream-http-event/builders-providers/anthropic\";\n```\n\n**DeepSeek:**\n```typescript\nimport type { DeepSeekBody, DeepSeekMessageBuild, DeepSeekThink, DeepSeekResponseFmt, DeepSeekToolParam, DeepSeekToolBuild }\n    from \"@felipe-lib/stream-http-event/builders-providers/deepseek\";\n```\n\n---\n\n## Filosofia\n\nEsta biblioteca tem um propósito único e focado: **consumir streams HTTP/SSE** de provedores de IA com zero dependências. Não pretende ser um SDK completo — embedding, contagem de tokens, cache, rate limit, etc. são responsabilidades de outras camadas.\n\nA arquitetura é deliberadamente enxuta para que você possa estender sem lutar contra o design. Use os dados crus do `for await` ou o array de objetos do `onDone` para construir o que precisar por cima — sem que a lib atrapalhe.\n\nFeatures, correções e extensões feitas por outros devs são **bem-vindas**. O projeto aceita contributions via PRs e issues, desde que mantenham o escopo focado e não adicionem dependências desnecessárias.\n\n---\n\n## Projeto Estudantil\n\nEste é um projeto de estudo e aprendizado. Está funcional e em uso, mas pode conter imperfeições. Contribuições e sugestões são bem-vindas!\n\n---\n\n# English\n\n---\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [What Changed?](#what-changed)\n- [API Reference](#api-reference)\n    - [`dataFetch()`](#datafetch-1)\n    - [`ExtractorsType`](#extractortype-1)\n    - [`fetchIA()`](#fetchia-1)\n    - [`start()` and `abort()`](#start-and-abort)\n- [Examples](#examples)\n    - [OpenAI Streaming](#openai-streaming)\n    - [DeepSeek with Builders](#deepseek-with-builders)\n    - [Anthropic](#anthropic-2)\n    - [Cancellation](#cancellation)\n    - [Saving the Full Response (onDone)](#saving-the-full-response-ondon)\n    - [Pipe to File](#pipe-to-file)\n    - [Non-Streaming Fallback](#non-streaming-fallback)\n    - [Multiple Providers](#multiple-providers)\n- [How It Works Internally](#how-it-works-internally)\n- [Provider Builders](#provider-builders)\n    - [DeepSeek](#deepseek-1)\n    - [Anthropic](#anthropic-3)\n- [Public TypeScript Types](#public-typescript-types)\n- [Student Project](#student-project)\n\n---\n\n## Installation\n\n```bash\nnpm install @felipe-lib/stream-http-event\n# or\npnpm add @felipe-lib/stream-http-event\n```\n\n---\n\n## Quick Start\n\n```typescript\nimport { StreamHttpEvent } from \"@felipe-lib/stream-http-event\";\n\nconst stream = new StreamHttpEvent();\n\nstream.dataFetch({\n    url: \"https://api.openai.com/v1/chat/completions\",\n    headers: { Authorization: \"Bearer sk-your-token\" },\n    body: {\n        model: \"gpt-4o\",\n        messages: [{ role: \"user\", content: \"Hello!\" }],\n        stream: true,\n    },\n    extractors: {\n        defaultExtract: [\n            { key: \"content\", forExtract: \"data.choices[0].delta.content\" },\n        ],\n    },\n});\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    process.stdout.write(chunk);\n}\n```\n\nEach chunk output looks like:\n\n```\ndata: {\"content\":\"Hello\"}\n\n```\n\n---\n\n## What Changed?\n\nThis section documents the main changes from the previous API version.\n\n### Extractors\n\n| Before                                                  | After                                                                                               |\n| ------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |\n| `extractor: [{ fn: ({ data }) => ({ content: ... }) }]` | `extractors: { defaultExtract: [{ key: \"content\", forExtract: \"data.choices[0].delta.content\" }] }` |\n\nThe old API used JavaScript functions to extract data. The new one uses **path strings** that navigate the JSON object, making configuration declarative and serializable.\n\n### Key lookup in stream\n\n| Before                                                                                          | After                                                                                                                          |\n| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |\n| Hardcoded `state.getStateOne(\"extracted\")` — only worked if the extractor key was `\"extracted\"` | **Dynamic loop** — iterates over **all** keys in `defaultExtract` and `conditionalxtractor`, building the output with each one |\n\n### Output format\n\n| Before                                                     | After                                                                      |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------- |\n| Always `data: {...}\\nevent: ...\\n\\n` (standard SSE format) | Always `data: { \"key\": \"value\" }\\n\\n` (JSON of the whole extracted object) |\n\n### Removed code\n\n- `onData` and `onEvent` — declared but never called\n- `try { ... } catch (e) { throw e }` — redundant blocks\n\n### Fixed bugs\n\n- `if (value)` is now `if (value !== undefined)` — values `0`, `\"\"`, `false` are no longer ignored\n- `types.anthropic.ts`: field `ccontent` corrected to `content` (typo)\n- `types.anthropic.ts`: duplicate removed from union type\n\n### v2.2.1\n\n**`accumulate`** — new accumulation flag for extracted values. Available in three levels:\n\n- **Global** (`dataFetchType.accumulate`): accumulates all chunks into a continuous string in the final output\n- **Standard extract** (`extract.accumulate`): when enabled, values from **all keys** in `defaultExtract` are concatenated into a single shared string\n- **Conditional extract** (`condicionalExtract.accumulate`): when enabled, values from **all keys** in `conditionalxtractor` are concatenated into a single shared string\n\n**`start()` and `abort()`** — new public methods to manage the request lifecycle. Use `start()` to obtain the internal `AbortController` and `abort()` to cancel the request.\n\n**`extractors` optional** — the `extractors` field in `dataFetchType` is now optional, allowing `fetchIA()` to be used for non-streaming calls without configuring extractors.\n\n### v2.3.0\n\n**`AnthropicInputSchemaBuilder`** and **`AnthropicToolBuilder`** — new builders for creating tool definitions in the Anthropic provider, analogous to the existing DeepSeek builders.\n\n**`tools()`** and **`toolChoice()`** — new methods on `AnthropicBodyBuilder` to configure tools and tool choice in the request body.\n\n**`AnthropicToolUnion`** — new exported type alias that unions all Anthropic tool types (custom + server tools).\n\n**`tools`** — added to `MessageCreateParamsBase` as `AnthropicToolUnion[]`.\n\n### v2.2.3\n\nFixed typo `acumullate` → `accumulate` across the entire codebase (private property, `dataFetch()` parameter, `extract` and `condicionalExtract` interfaces, and `dataFetchType`).\n\n---\n\n## API Reference\n\n### `dataFetch()`\n\nConfigures the instance. Must be called before `fetchIA()`.\n\n```typescript\nstream.dataFetch<H, B>(config: dataFetchType<H, B>): void\n```\n\n| Parameter       | Type                                                      | Required | Description                                                                                       |\n| --------------- | --------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------- |\n| `url`           | `string`                                                  | Yes      | AI provider endpoint                                                                              |\n| `headers`       | `Record<string, string>`                                  | No       | HTTP headers. Can be typed via provider builder                                                   |\n| `body`          | `Record<string, unknown>`                                 | No       | Request body (serialized as JSON)                                                                 |\n| `timeOut`       | `number`                                                  | No       | Inactivity timeout in milliseconds. Resets on each chunk                                          |\n| `onDone`        | `(finalData: { chunks: Record<string, unknown>[] }) => void` | No    | Callback fired when the stream ends. Receives `{ chunks }` — array of extracted objects per chunk |\n| `extractors`    | `ExtractorsType`                                          | No       | Extractor configuration                                                                           |\n| `beforeRequest` | `BeforeRequestFn`                                         | No       | Async function executed before fetch. Receives `{ url, headers, body }` and can modify each field. If it returns `void`, original values are kept |\n| `accumulate`    | `boolean`                                                 | No       | If `true`, accumulates extracted values from all chunks into a continuous string in the output     |\n\n---\n\n### `ExtractorsType`\n\n```typescript\ninterface ExtractorsType {\n    defaultExtract: extract[];\n    conditionalxtractor?: condicionalExtract[];\n}\n\ninterface extract {\n    key: string;\n    forExtract: string;\n    accumulate?: boolean;\n}\n\ninterface condicionalExtract {\n    key: string;\n    path: string;\n    accumulate?: boolean;\n    condition: string;\n}\n```\n\n**`defaultExtract`** — always applied to each SSE message:\n\n- `key`: the output key name, also used internally in state\n- `forExtract`: JSON path to navigate to the desired value (e.g. `\"data.choices[0].delta.content\"`)\n- `accumulate`: if `true`, the extracted value is concatenated into an accumulator **shared across all keys** in `defaultExtract`\n- Supports dot and bracket notation: `\"data.choices[0].delta.content\"`\n\n**`conditionalxtractor`** — only applied if the condition is met:\n\n- `key`: output key name\n- `path`: JSON path to navigate to the value\n- `accumulate`: if `true`, the extracted value is concatenated with previous values of the same key\n- `condition`: expected value. If the value at `path` strictly equals `condition`, the value is extracted\n\n**Key merging:** keys from both `defaultExtract` and `conditionalxtractor` are combined. If both arrays have entries, **all** keys are used in the output.\n\n---\n\n### `fetchIA()`\n\nExecutes the HTTP request and returns an `AsyncGenerator` or a parsed JSON object.\n\n```typescript\nstream.fetchIA(options: FetchOptions): Promise<any>\n```\n\n| Parameter     | Type      | Default  | Description                                                                |\n| ------------- | --------- | -------- | -------------------------------------------------------------------------- |\n| `method`      | `string`  | `\"POST\"` | HTTP method                                                                |\n| `encodeBytes` | `boolean` | `false`  | If `true`, yielded chunks are `Uint8Array`. If `false`, chunks are strings |\n\n**Returns:**\n\n- `AsyncGenerator<string | Uint8Array, void, unknown>` — if `Content-Type` is `text/event-stream`\n- `Record<string, unknown>` — parsed JSON for non-streaming responses\n\n---\n\n## Examples\n\n### OpenAI Streaming\n\n```typescript\nconst stream = new StreamHttpEvent();\n\nstream.dataFetch({\n    url: \"https://api.openai.com/v1/chat/completions\",\n    headers: {\n        Authorization: \"Bearer sk-your-token\",\n        \"Content-Type\": \"application/json\",\n    },\n    timeOut: 30000,\n    body: {\n        model: \"gpt-4o\",\n        messages: [{ role: \"user\", content: \"Explain SSE\" }],\n        stream: true,\n    },\n    extractors: {\n        defaultExtract: [\n            { key: \"content\", forExtract: \"data.choices[0].delta.content\" },\n        ],\n    },\n});\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    process.stdout.write(chunk);\n}\n```\n\n### DeepSeek with Builders\n\n```typescript\nimport { StreamHttpEvent } from \"@felipe-lib/stream-http-event\";\nimport {\n    DeepSeekHeadersBuilder,\n    DeepSeekBodyBuilder,\n    DeepSeekMessageBuilder,\n} from \"@felipe-lib/stream-http-event/builders-providers/deepseek\";\n\nconst stream = new StreamHttpEvent();\n\nstream.dataFetch({\n    url: \"https://api.deepseek.com/chat/completions\",\n    headers: new DeepSeekHeadersBuilder().apiKey(\"sk-your-token\").build(),\n    body: new DeepSeekBodyBuilder()\n        .model(\"deepseek-v4-pro\")\n        .messages([new DeepSeekMessageBuilder().content(\"Hello!\").build()])\n        .stream(true)\n        .build(),\n    extractors: {\n        defaultExtract: [\n            { key: \"content\", forExtract: \"data.choices[0].delta.content\" },\n        ],\n    },\n});\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    process.stdout.write(chunk);\n}\n```\n\n### Anthropic\n\nAnthropic uses a different SSE format. Example with `defaultExtract` + `conditionalxtractor`:\n\n```typescript\nconst stream = new StreamHttpEvent();\n\nstream.dataFetch({\n    url: \"https://api.anthropic.com/v1/messages\",\n    headers: {\n        \"x-api-key\": \"sk-ant-your-token\",\n        \"anthropic-version\": \"2023-06-01\",\n        \"Content-Type\": \"application/json\",\n    },\n    timeOut: 30000,\n    body: {\n        model: \"claude-sonnet-4-20250514\",\n        max_tokens: 1024,\n        messages: [{ role: \"user\", content: \"Hello\" }],\n        stream: true,\n    },\n    extractors: {\n        defaultExtract: [{ key: \"text\", forExtract: \"data.delta.text\" }],\n        conditionalxtractor: [\n            {\n                key: \"eventType\",\n                path: \"data.type\",\n                condition: \"content_block_delta\",\n            },\n        ],\n    },\n});\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    process.stdout.write(chunk);\n}\n```\n\n### Cancellation\n\nUse `start()` to get the `AbortController` and `abort()` to cancel:\n\n```typescript\nconst controller = stream.start();\nsetTimeout(() => stream.abort(), 5000);\n\nconst generator = await stream.fetchIA();\n\nfor await (const chunk of generator) {\n    console.log(chunk);\n}\n```\n\nVia `break` in the loop:\n\n```typescript\nconst generator = await stream.fetchIA();\n\nlet count = 0;\nfor await (const chunk of generator) {\n    console.log(chunk);\n    count++;\n    if (count >= 10) break;\n}\n```\n\n### `start()` and `abort()`\n\nManage the request lifecycle:\n\n```typescript\nstream.start(): AbortController\n```\n\nCall `start()` before `fetchIA()` to obtain the internal `AbortController`. Use `abort()` to cancel the ongoing request:\n\n```typescript\nstream.abort(): void\n```\n\n> **Note:** `start()` resets the controller on each call. If you call `fetchIA()` without `start()`, the controller is `undefined` and the request cannot be cancelled via `abort()`.\n\n### Saving the Full Response (onDone)\n\n```typescript\nstream.dataFetch({\n    // ... config ...\n    onDone: (finalData) => {\n        console.log(\"Full response:\", finalData.chunks);\n        // finalData.chunks → [{ content: \"Hello\" }, { content: \" world\" }, { content: \"!\" }]\n        // Save to database, file, etc.\n    },\n});\n```\n\n### Pipe to File\n\n```typescript\nimport { createWriteStream } from \"node:fs\";\n\nconst generator = await stream.fetchIA({ encodeBytes: true });\n\nconst fileStream = createWriteStream(\"response.jsonl\");\nfor await (const chunk of generator) {\n    fileStream.write(chunk);\n}\nfileStream.end();\n```\n\n### Non-Streaming Fallback\n\nIf the response is not `text/event-stream`, `fetchIA()` returns the parsed JSON directly. Extractors are **not** applied — the returned object is the raw JSON:\n\n```typescript\nstream.dataFetch({\n    url: \"https://api.openai.com/v1/chat/completions\",\n    headers: { Authorization: \"Bearer sk-your-token\" },\n    body: {\n        model: \"gpt-4o\",\n        messages: [{ role: \"user\", content: \"Hello\" }],\n        stream: false,\n    },\n});\n\nconst result = await stream.fetchIA();\nconsole.log(result.choices?.[0]?.message?.content);\n```\n\n### Multiple Providers\n\n```typescript\nconst openaiStream = new StreamHttpEvent();\nopenaiStream.dataFetch({\n    url: \"https://api.openai.com/v1/chat/completions\",\n    headers: { Authorization: \"Bearer sk-openai-...\" },\n    timeOut: 30000,\n});\n\nconst deepseekStream = new StreamHttpEvent();\ndeepseekStream.dataFetch({\n    url: \"https://api.deepseek.com/chat/completions\",\n    headers: new DeepSeekHeadersBuilder().apiKey(\"sk-deepseek-...\").build(),\n    body: new DeepSeekBodyBuilder()\n        .model(\"deepseek-v4-pro\")\n        .messages([new DeepSeekMessageBuilder().content(\"Hello\").build()])\n        .stream(true)\n        .build(),\n    timeOut: 15000,\n});\n\nconst [openaiResult, deepseekResult] = await Promise.all([\n    openaiStream.fetchIA(),\n    deepseekStream.fetchIA(),\n]);\n```\n\n---\n\n## How It Works Internally\n\n### General flow\n\n```\ndataFetch()\n    |\n    ↓\nfetchIA()\n    |\n    ↓\nbeforeRequest() — optional: modifies url, headers, body\n    |\n    ↓\nfetch() with url, headers, body\n    |\n    ↓\nContent-Type: text/event-stream?\n    |\n    ├── yes ──▶ streamIA()\n    |               |\n    |               ↓\n    |        while(true) reads ReadableStream (bodyReader.read())\n    |               |\n    |               ↓\n    |        decoder.decode() → buffer.add()\n    |               |\n    |               ↓\n    |        serialize()\n    |               |\n    |               ├── splits buffer by \"\\n\\n\" (SSE messages)\n    |               ├── for each message:\n    |               |   ├── detects \"data: [DONE]\" → returns\n    |               |   ├── parses \"data: ...\" line → JSON.parse\n    |               |   ├── parses \"event: ...\" line → string\n    |               |   └── GetValueExtract(sseObject, state)\n    |               |           ├── defaultExtract: iterates entries\n    |               |           |   → getValueByPath(sseObject, forExtract)\n    |               |           |   → state.setState({ [key]: value })\n    |               |           └── conditionalxtractor: iterates entries\n    |               |               → getValueByPath(sseObject, path)\n    |               |               → if === condition, state.setState({ [key]: value })\n    |               |\n    |               ↓\n    |        timeout() — resets inactivity timer\n    |               |\n    |               ↓\n        |        Serializes extractedValues with JSON.stringify\n        |        and builds \"data: {JSON}\\\\n\\\\n\"\n        |               |\n        |               ↓\n        |        yield chunk (string | Uint8Array)\n    |               |\n    |               ↓\n    |        clearState() — clears state for next chunk\n    |               |\n    |               ↓\n    |        [loop repeats until done or \"data: [DONE]\"]\n    |               |\n    |               ↓\n    |        onDone({ chunks }) — stream finished (array of extracted objects)\n    |               |\n    |               ↓\n    |        finally: releaseLock() + clearTimeout()\n    |\n    └── no ──▶ returns fetcher.json() (JS object)\n```\n\n### Detailed steps\n\n**1. `dataFetch()`** — stores the configuration (url, headers, body, extractors, timeout, onDone, beforeRequest, accumulate) in private instance properties.\n\n**2. `beforeRequest()`** — if configured, the `beforeRequest` function is called with `{ url, headers, body }`. Returned values (if any) override the originals.\n\n**3. `fetchIA()`** — executes `fetch()` with the URL, headers and body (modified by `beforeRequest` if applicable). Checks the response `Content-Type`:\n\n- If `text/event-stream`: returns the `AsyncGenerator` from `streamIA()`\n- Otherwise: returns `fetcher.json()` (parsed JS object)\n\n**4. `streamIA()`** — obtains a `ReadableStreamDefaultReader` and enters an infinite loop. Each iteration:\n\n- Reads bytes from the stream with `bodyReader.read()`\n- Decodes with `TextDecoder` and adds to the internal buffer\n- Calls `serialize()` to process the buffer\n- Calls `timeout()` to reset the inactivity timer\n- Checks for `\"data: [DONE]\"`\n- Builds the chunk with extracted values and yields\n\n**5. `bufferControl()`** — closure maintaining a string buffer. Methods:\n\n- `getBuffer()`: returns the current buffer\n- `setBuffer(data)`: replaces the buffer\n- `add(data)`: appends data to the buffer\n\n**6. `serialize()`** — splits the buffer by `\\n\\n` (SSE message delimiter). The last (incomplete) part goes back to the buffer. For each complete message:\n\n- Splits by `\\n`\n- Parses lines starting with `data:` (JSON) and `event:` (string)\n- If `\"data: [DONE]\"` is found, returns immediately to stop the stream\n- Calls `GetValueExtract()` for each message\n\n**7. `GetValueExtract()`** — for each parsed SSE object, applies the configured extractors:\n\n- `defaultExtract`: iterates each entry, navigates the object with `getValueByPath` using `forExtract`. If `accumulate` is `true`, concatenates into a **single shared accumulator** for all keys in `defaultExtract`; otherwise saves the raw value to state\n- `conditionalxtractor`: iterates each entry, navigates the object with `getValueByPath` using `path`. If `accumulate` is `true`, concatenates into a **single shared accumulator** for all keys in `conditionalxtractor`. Only saves to state if the value strictly equals `condition`\n\n**8. `getValueByPath(obj, path)`** — navigates an object using a path like `\"data.choices[0].delta.content\"`. Supports dots and brackets. Returns `undefined` if the path doesn't exist.\n\n**9. `stateLocal()`** — `Map<string, unknown>`-based closure that maintains state between calls. Methods:\n\n- `getStateOne(key)`: returns the value for a key\n- `setState(newState)`: merges an object into state\n- `clearState()`: clears all state\n\n**10. `timeOutControl()` + `timeout()`** — manage an inactivity timer. If the time between chunks exceeds `timeOut`, the `bodyReader` is cancelled. The timer resets on each chunk.\n\n**11. Chunk assembly** — after extracting values, the code:\n\n- Gets all keys from `defaultExtract` + `conditionalxtractor`\n- Looks up each value in state via `getStateOne()`\n- If global `accumulate` is `true`, accumulates values into a continuous string (`acumulateValue`) and uses `JSON.parse` for the final chunk\n- If no key has a value (`hasValue === false`), the chunk is skipped (`continue`)\n- Serializes the `extractedValues` object with `JSON.stringify` and appends `\\n\\n`\n- Builds the SSE output: `data: ${JSON.stringify(extractedValues)}\\n\\n`\n- Yields the string (or `Uint8Array` if `encodeBytes: true`)\n- The extracted object is pushed into `chunks` array (object accumulation) for use in `onDone`\n\n**12. `clearState()`** — after yielding, the state is fully cleared so the next chunk doesn't carry stale data.\n\n**13. Finalization** — when the stream ends (reader returns `done: true` or `\"data: [DONE]\"` message):\n\n- If `chunks` (array) is not empty, `onDone` is called with `{ chunks }` — each element is an object with the extracted keys\n- In `finally`: `releaseLock()` on the reader and `clearTimeout()` on the inactivity timer\n\n---\n\n## Provider Builders\n\n### DeepSeek\n\nImport from `@felipe-lib/stream-http-event/builders-providers/deepseek`:\n\n- `DeepSeekHeadersBuilder` — headers with apiKey\n- `DeepSeekBodyBuilder` — full request body. Methods: `model()`, `messages()`, `thinking()`, `maxTokens()`, `responseFormat()`, `stop()`, `stream()`, `streamOptions()`, `temperature()`, `topP()`, `tools()`, `toolChoice()`, `logprobs()`, `topLogprobs()`, `userId()`\n- `DeepSeekMessageBuilder` — individual message (role, content, tool_call_id, prefix, reasoning_content)\n- `DeepSeekThinkingBuilder` — thinking configuration (type, reasoning_effort)\n- `DeepSeekResponseFormatBuilder` — response format (text, json_object)\n- `DeepSeekToolBuilder` — tool definition (name, description, parameters, strict)\n- `DeepSeekToolParametersBuilder` — tool parameters (properties, required)\n\n> Each DeepSeek builder exports its own return interface: `DeepSeekBody`, `DeepSeekMessageBuild`, `DeepSeekThink`, `DeepSeekReasonEffort`, `DeepSeekResponseFmt`, `DeepSeekToolParam`, `DeepSeekToolBuild`.\n\n### Anthropic\n\nImport from `@felipe-lib/stream-http-event/builders-providers/anthropic`:\n\n- `AnthropicHeadersBuilder` — headers with apiKey and version. Methods: `apiKey()`, `version()`\n- `AnthropicBodyBuilder` — request body. Methods: `messages()`, `model()`, `maxTokens()`, `system()`, `thinking()`, `cacheControl()`, `container()`, `inferenceGeo()`, `metadata()`, `outputConfig()`, `serviceTier()`, `stopSequences()`, `stream()`, `tools()`, `toolChoice()`, `userProfileId()`\n- `AnthropicMessageBuilder` — individual message (role, content)\n- `AnthropicThinkingBuilder` — thinking configuration (type, budget_tokens, display)\n- `AnthropicInputSchemaBuilder` — tool input schema (properties, required)\n- `AnthropicToolBuilder` — tool definition (name, description, inputSchema, strict, ...)\n\n> Each Anthropic builder exports its own return interface: `AnthropicBody`, `AnthropicMessage`, `AnthropicThinking`, `AnthropicInputSchemaBuild`, `AnthropicToolBuild`.\n\n---\n\n## Public TypeScript Types\n\n```typescript\ninterface dataFetchType<\n    H extends Record<string, string> = Record<string, string>,\n    B extends Record<string, unknown> = Record<string, unknown>,\n> {\n    url: string;\n    headers?: H;\n    timeOut?: number;\n    onDone?: (finalData: { chunks: Record<string, unknown>[] }) => void;\n    body?: B;\n    extractors?: ExtractorsType;\n    beforeRequest?: BeforeRequestFn;\n    accumulate?: boolean;\n}\n\ninterface FetchOptions {\n    encodeBytes?: boolean;\n    method?: string;\n}\n\ninterface ExtractorsType {\n    defaultExtract: extract[];\n    conditionalxtractor?: condicionalExtract[];\n}\n\ninterface extract {\n    key: string;\n    forExtract: string;\n    accumulate?: boolean;\n}\n\ninterface condicionalExtract {\n    key: string;\n    path: string;\n    accumulate?: boolean;\n    condition: string;\n}\n\ninterface BeforeRequestConfig {\n    url: string;\n    headers: Record<string, string>;\n    body?: Record<string, unknown>;\n}\n\ntype BeforeRequestFn = (\n    config: BeforeRequestConfig,\n) => Promise<BeforeRequestConfig | void>;\n```\n\n> All types above can also be imported from `@felipe-lib/stream-http-event/type`, which additionally exports the `SystemError` enum and `systemErrorDescription` constant with system error descriptions.\n\n---\n\nAdditionally, each provider builder exports its own return interface:\n\n**Anthropic:**\n```typescript\nimport type { AnthropicBody, AnthropicMessage, AnthropicThinking, AnthropicInputSchemaBuild, AnthropicToolBuild, AnthropicToolUnion, ToolChoice, Tool }\n    from \"@felipe-lib/stream-http-event/builders-providers/anthropic\";\n```\n\n**DeepSeek:**\n```typescript\nimport type { DeepSeekBody, DeepSeekMessageBuild, DeepSeekThink, DeepSeekResponseFmt, DeepSeekToolParam, DeepSeekToolBuild }\n    from \"@felipe-lib/stream-http-event/builders-providers/deepseek\";\n```\n\n---\n\n## Philosophy\n\nThis library has a single, focused purpose: **consuming HTTP/SSE streams** from AI providers with zero dependencies. It does not aim to be a full SDK — embedding, token counting, caching, rate limiting, etc. are responsibilities of other layers.\n\nThe architecture is deliberately lean so you can extend it without fighting the design. Use the raw data from `for await` or the object array from `onDone` to build whatever you need on top — without the library getting in the way.\n\nFeatures, fixes, and extensions made by other devs are **welcome**. The project accepts contributions via PRs and issues, as long as they keep the scope focused and don't add unnecessary dependencies.\n\n---\n\n## Student Project\n\nThis is a study and learning project. It is functional and in use, but may contain imperfections. Contributions and suggestions are welcome!\n\n---\n\n## License\n\nISC\n","readmeFilename":"README.md"}