{"_id":"jiren","_rev":"50-c66ac3b131dd179a7505a918e5a65ee9","name":"jiren","dist-tags":{"latest":"4.1.0"},"versions":{"3.0.0":{"name":"jiren","version":"3.0.0","keywords":["http","https","client","fast","native","zig","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.0.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"9b514a2ae331c4300eb6021615b90aaeffca7dcb","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.0.0.tgz","fileCount":53,"integrity":"sha512-0IOLIFaKledz4qTxkBwxlIL5Z1Y0CqRrFL0gSLRExG0ndJbhnWiQokJjtWJNfcdpxHZdEyiJ4wbFrW2yWcuAAQ==","signatures":[{"sig":"MEUCIFPVeh1+EKbxJfDGV4Dbv3jatyImxYDZsyTzRx8vrR/rAiEAlXgW5QmXwsQAxA9CBf5d8ZbOuPSN/LDMv3qHWx+ZpNg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13026541},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./package.json":"./package.json"},"gitHead":"dbf02cf09f2b2ed8435036bacf429e3caa26b193","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"cd .. && zig build --release=fast && cp zig-out/lib/libhttpclient.dylib jiren/lib/","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.0.0_1768142401862_0.6310120501800487","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"jiren","version":"3.1.0","keywords":["http","https","client","fast","native","zig","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.1.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"8e7b34cff4568266f836897f9a307573e0cf4f52","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.1.0.tgz","fileCount":53,"integrity":"sha512-CnvetsWvMYUN3pOJvYtss4hwoA4YPle70aGIFURPMrOVtA8XIAVogzagUIcGEQTEuEu3S7tBYVCax7lG77YR6g==","signatures":[{"sig":"MEQCIDJQAjBCR/+o4w6mLsI5CMQ9cqkJq3qVBHr2Wo6/D+CQAiBhJ3KMFcDaViTC6iwPA6ext4DMooiPQPIwgIfiTAvAcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13024359},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./package.json":"./package.json"},"gitHead":"aeffc8289b08ab17d5b1fa30ed0f5146b7b2ee84","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"cd .. && zig build --release=fast && cp zig-out/lib/libhttpclient.dylib jiren/lib/","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.1.0_1768154316344_0.34602004024023403","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"jiren","version":"3.2.0","keywords":["http","https","client","fast","native","zig","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.2.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"d50b693d7d1282d99bd59f2dfa01cba26b92af6a","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.2.0.tgz","fileCount":43,"integrity":"sha512-PuQRH0ZxJwZv/myT9dFybG/v9pZk2jf1tniws0EGFxcVuVFJzgNyL6yjl9rMazE91W4lqdmpTb7RcnAVbt33YA==","signatures":[{"sig":"MEYCIQCYHP9bj8oPTgBurF8zJmPiclcSByWSM9ILtrBdKvkYVAIhAJB2LoNdFkVHI+1jAERa1egt5f0yfIK8MZwZPKhFiUSM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13083661},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./package.json":"./package.json"},"gitHead":"dfc47093aaa2e09f500bb12757037b3aafe65b0b","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"cd .. && zig build --release=fast && cp zig-out/lib/libhttpclient.dylib jiren/lib/","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.2.0_1769091201524_0.7300578361726324","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"jiren","version":"3.3.0","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.3.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"ce946f68bf1a8e6af9f48b020f4cf364b1463b6c","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.3.0.tgz","fileCount":43,"integrity":"sha512-+kKdHGORWMZewkcePpqKn4gtw58V2+89S8iBE7ddnBUKjbX4xN71OYvO5e+2l96FSRajY7kyE9sfBDnrRHReNA==","signatures":[{"sig":"MEUCIQCCRW7p0JeLrIrvLY476JKm9q5RlT+G8LNSjwgnrv1YnAIgO+b9GnaClXe+D3lfK+eheh/u364HCAB5Sb5C9R5dbSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13114823},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./package.json":"./package.json"},"gitHead":"7049931c17977caa117c6cd0f8c29c9ee1490900","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.3.0_1771083274577_0.023959603494527304","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"jiren","version":"3.4.0","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.4.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"961f05d9f4eb74b61d3f7f23195a5c7a971417e6","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.4.0.tgz","fileCount":43,"integrity":"sha512-RRAXrtChFUI2Am25t7CvcUcbglVRiSRSgF8KdUqOEcfU7g8lvZXUvBdavTzIGXIEdPeJ7c8AUFXfBxmFqwsQvQ==","signatures":[{"sig":"MEUCIHLqUGc6AxoiOpOlxi+IMlx3tP/w9KAFluNMfEWbc+yiAiEAwl/IAiDNDphN7fE+iXQ77STeHUnxWMJFgc71CS5s6l0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13121831},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./package.json":"./package.json"},"gitHead":"b679208488f61c705955de7ee0486769a21a5e7a","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.4.0_1771184937606_0.848827533153437","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"jiren","version":"3.5.0","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.5.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"01f60859e04ab6d4ab033f2e072449b14fa10f22","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.5.0.tgz","fileCount":53,"integrity":"sha512-MGrno1IDmlnJOTL1tyMTY+pJJtbu8OSNuaDU3mRTb7uneMaZblffclWEa7DYltn6ABoW12ibT2w27M+eXMJFig==","signatures":[{"sig":"MEQCIETUO1Obxbih2D9mMg8yKH7kGjHssWCLecqqC7gtulJxAiATWZDfM+oN431EU0RwaHmNw2SjgcwLRPJIImB8NV5DLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13209429},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./package.json":"./package.json"},"gitHead":"8a5c0cdc5ba9b846ece643654840652c8ea6c66b","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","typescript":"^5.9.3","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.5.0_1771187984666_0.8334241671501437","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"jiren","version":"3.6.0","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.6.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"079c1f07749b2e7b90aa1e2fad6a597f8701a2ff","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.6.0.tgz","fileCount":58,"integrity":"sha512-DpPBZf6/83Pd3WvO7mRHUTwpYE0+Y2Me9GelNtvlFxwjcyelHBbp0HI2B2aT92TpGru+LL/T5+W+1OtLEPFJFQ==","signatures":[{"sig":"MEQCIBVb6ufxhgZjYjqD9zoQ/8lFnnnNRpmx9Q4kuJ3XEsraAiAwqn5q9+XdWVKfR0PRx5Gj48zOIxy/HDWdyOA26cSvNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13210734},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./native":{"types":"./dist/index-node-native.d.ts","import":"./dist/index-node-native.js"},"./package.json":"./package.json"},"gitHead":"8a5c0cdc5ba9b846ece643654840652c8ea6c66b","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","typescript":"^5.9.3","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.6.0_1771224707006_0.38545550763885106","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"jiren","version":"3.7.0","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.7.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"7becadac045c1d250174ef90ef3ba19b49fce1fb","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.7.0.tgz","fileCount":61,"integrity":"sha512-LSyTkeiWeUvzkBjH0LnzwTz4oLeydVPwEP4Rb4fbRoDF8fEYtn/4uS1z7bxKsuU7y3qQ/U87Pm29vkbW0bgbPw==","signatures":[{"sig":"MEUCIDTHf5QHKT9GfnYbUIgUFTChLfbYoU3jqef/2PdOR7JRAiEApYZjEAbozMfQxXBk2nU36O77yxVLP02IJqghTpu5bJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14601839},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./native":{"types":"./dist/index-node-native.d.ts","import":"./dist/index-node-native.js"},"./package.json":"./package.json"},"gitHead":"07f61bd3aaf8d84e0e6e1bdaae96690cd68c96b5","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","typescript":"^5.9.3","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.7.0_1771241905346_0.2247275970881475","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"jiren","version":"3.8.0","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.8.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"e6ae7f1d9e4066c48b644efa974acfdda91a983e","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.8.0.tgz","fileCount":62,"integrity":"sha512-hx4g6Oiz/KA+7ytvEgIT7svkVpDfrmEsdI6ACjjWAtxtaRbqezq1RZY48vWXUqy3lOdC2Brv9hm66Ru0LL2A1w==","signatures":[{"sig":"MEUCIGMkbxQuOeJdo619X+7w1icpJSTJTVNgbATwMGDse7VQAiEAgsmfT5cL1MmBs32x8SpDUkP8XwhN5v1oHlmFlJkPJcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14603230},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./native":{"types":"./dist/index-node-native.d.ts","import":"./dist/index-node-native.js"},"./package.json":"./package.json"},"gitHead":"07f61bd3aaf8d84e0e6e1bdaae96690cd68c96b5","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","typescript":"^5.9.3","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.8.0_1771257966807_0.7810104586124633","host":"s3://npm-registry-packages-npm-production"}},"3.9.0":{"name":"jiren","version":"3.9.0","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.9.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"050ce8dd07bfab9e2a6d69c670503e87503c31fe","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.9.0.tgz","fileCount":62,"integrity":"sha512-zk4rO+06qohhEbPeb6wA1dt6aZ6Psz/yj6/Phb5/rZUjwPc04amHyonZql0DmAq+SYMEOSxpQyUZ1JAPOmO+Bw==","signatures":[{"sig":"MEQCIQDpw0+otwBgrSNaALnMTfWdM0Ozte+lSzrjJHZO/K7I3wIfJ6X8f3C5Sp7qMq55+Z1YVa7aGNGIyAJ4Rxd/otvMBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14604178},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./native":{"types":"./dist/index-node-native.d.ts","import":"./dist/index-node-native.js"},"./package.json":"./package.json"},"gitHead":"07f61bd3aaf8d84e0e6e1bdaae96690cd68c96b5","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","typescript":"^5.9.3","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.9.0_1771259826606_0.26598810730909683","host":"s3://npm-registry-packages-npm-production"}},"3.9.1":{"name":"jiren","version":"3.9.1","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@3.9.1","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"08853700919fce7f862cf3788cdc2bab9621c7c5","tarball":"https://registry.npmjs.org/jiren/-/jiren-3.9.1.tgz","fileCount":62,"integrity":"sha512-B93a7wGUqv9vxwXUBpFiKdVUvNEY8FeRtKdHl7Tpfs0homaeXcwZUYih2I590EDP/9wHs8topbDh0HLTo7j/Ww==","signatures":[{"sig":"MEYCIQCSazvXdY00wJ8sGbA6whSRD5oWstWOJkexqFbTiKL8PgIhAO+ZNmsH263enA5CLFYWpZX+Lk40BT0GqxF0qmfSJkAd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14604506},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./native":{"types":"./dist/index-node-native.d.ts","import":"./dist/index-node-native.js"},"./package.json":"./package.json"},"gitHead":"07f61bd3aaf8d84e0e6e1bdaae96690cd68c96b5","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.6.2","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","typescript":"^5.9.3","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_3.9.1_1771261051499_0.6397004109436255","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"jiren","version":"4.0.0","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"author":"","license":"MIT","_id":"jiren@4.0.0","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"dist":{"shasum":"d31661d163a45eedce202be3a8d300fdf65b5c9c","tarball":"https://registry.npmjs.org/jiren/-/jiren-4.0.0.tgz","fileCount":66,"integrity":"sha512-t/buU7R2VALok49EAWvHxWS8q2Ki5+OpCBRiyjYczqaaUG5GC9/OLfHwuetERcEPHYl8ukInbWwWJiTLIvbDMw==","signatures":[{"sig":"MEYCIQDk+oP24F4IEDfo8d07HprQ+TujLcfn42jaD9m4kdR2kwIhAMTYdvl37rt6g0NowPIQBLZszAmbncLN/+su20+lTTqM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17601746},"main":"index.ts","type":"module","types":"index.ts","module":"index.ts","engines":{"bun":">=1.1.0","node":">=18.0.0"},"exports":{".":{"bun":"./index.ts","types":"./dist/index-node.d.ts","import":"./dist/index-node.js"},"./native":{"types":"./dist/index-node-native.d.ts","import":"./dist/index-node-native.js"},"./package.json":"./package.json"},"gitHead":"a155cac5cabf478ba2afcdd093b47722d8832760","scripts":{"test":"bun run examples/basic.ts","build":"npm run build:node","build:zig":"node scripts/build-native.cjs","test:node":"node --experimental-strip-types test-node.mjs","build:node":"tsc -p tsconfig.node.json","install-deps":"node scripts/install-deps.cjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"_npmVersion":"11.12.1","description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"koffi":"^2.14.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.4","typescript":"^5.9.3","@types/node":"^22.0.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jiren_4.0.0_1775882262598_0.35359049637582896","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"jiren","version":"4.1.0","author":"","main":"index.ts","module":"index.ts","types":"index.ts","devDependencies":{"@types/bun":"^1.3.4","@types/node":"^22.0.0","typescript":"^5.9.3"},"peerDependencies":{"typescript":"^5"},"description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"license":"MIT","scripts":{"build:zig":"node scripts/build-native.cjs","build:node":"tsc -p tsconfig.node.json","build":"npm run build:node","prepublishOnly":"npm run build","test":"bun run examples/basic.ts","install-deps":"node scripts/install-deps.cjs","test:node":"node --experimental-strip-types test-node.mjs"},"engines":{"node":">=18.0.0","bun":">=1.1.0"},"type":"module","exports":{".":{"bun":"./index.ts","import":"./dist/index-node.js","types":"./dist/index-node.d.ts"},"./native":{"import":"./dist/index-node-native.js","types":"./dist/index-node-native.d.ts"},"./package.json":"./package.json"},"dependencies":{"koffi":"^2.14.1"},"gitHead":"a155cac5cabf478ba2afcdd093b47722d8832760","_id":"jiren@4.1.0","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-jF7PHYNjCVKZGrQ/1d2Nd6vuXFrfKn1KIpYZhahJ5yY7PdWwopTqL92m1cpR5tUIRTQ33QaIjDBiowDHs5WVxA==","shasum":"52834a901c83c7fe84f831ebde0830169f866f4e","tarball":"https://registry.npmjs.org/jiren/-/jiren-4.1.0.tgz","fileCount":66,"unpackedSize":17605157,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGdwyBhx7b+BMu4LPGlgKsbW3fPsxfF41bFtkKI5cmGSAiEA1SQzkIBdxQlMu0gzsRcAVL2Qe3cpAFMYJh5X0a2lPfo="}]},"_npmUser":{"name":"vk007","email":"vikashkhati007@gmail.com"},"directories":{},"maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jiren_4.1.0_1775883079612_0.8670043628614827"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-11T14:40:01.861Z","modified":"2026-04-11T04:51:20.113Z","1.0.0":"2025-12-15T18:37:42.758Z","1.0.1":"2025-12-15T18:43:31.654Z","1.0.2":"2025-12-15T21:03:40.428Z","1.0.3":"2025-12-15T21:22:15.053Z","1.0.4":"2025-12-15T22:19:39.288Z","1.0.5":"2025-12-15T22:31:10.019Z","1.0.6":"2025-12-15T22:45:19.953Z","1.0.8":"2025-12-15T22:59:27.109Z","1.0.9":"2025-12-16T03:40:10.568Z","1.0.10":"2025-12-16T03:43:01.822Z","1.0.11":"2025-12-16T04:02:21.961Z","1.0.12":"2025-12-16T04:11:53.913Z","1.0.13":"2025-12-16T05:47:35.274Z","1.0.14":"2025-12-16T05:55:53.715Z","1.0.15":"2025-12-16T05:59:28.368Z","1.1.0":"2025-12-16T06:07:05.923Z","1.1.1":"2025-12-16T21:25:11.390Z","1.1.5":"2025-12-19T16:21:19.507Z","1.2.0":"2025-12-19T18:20:03.913Z","1.2.5":"2025-12-19T19:50:12.211Z","1.2.6":"2025-12-20T05:25:50.570Z","1.2.7":"2025-12-20T13:41:49.327Z","1.2.8":"2025-12-20T16:06:56.490Z","1.2.9":"2025-12-20T16:33:05.837Z","1.3.0":"2025-12-20T17:00:53.575Z","1.3.1":"2025-12-20T19:05:40.712Z","1.4.0":"2025-12-21T05:58:58.302Z","1.4.5":"2025-12-22T10:19:24.519Z","1.5.0":"2025-12-24T13:49:34.647Z","1.5.5":"2025-12-25T19:40:16.539Z","1.6.0":"2025-12-27T01:03:39.347Z","1.6.5":"2025-12-27T09:15:20.521Z","1.7.0":"2025-12-27T09:28:27.010Z","2.0.0":"2025-12-28T19:50:06.499Z","2.1.0":"2025-12-29T17:06:52.875Z","3.0.0":"2026-01-11T14:40:02.184Z","3.1.0":"2026-01-11T17:58:36.646Z","3.2.0":"2026-01-22T14:13:21.857Z","3.3.0":"2026-02-14T15:34:34.904Z","3.4.0":"2026-02-15T19:48:57.917Z","3.5.0":"2026-02-15T20:39:45.024Z","3.6.0":"2026-02-16T06:51:47.284Z","3.7.0":"2026-02-16T11:38:25.741Z","3.8.0":"2026-02-16T16:06:07.148Z","3.9.0":"2026-02-16T16:37:06.963Z","3.9.1":"2026-02-16T16:57:31.825Z","4.0.0":"2026-04-11T04:37:42.957Z","4.1.0":"2026-04-11T04:51:20.000Z"},"license":"MIT","keywords":["http","https","client","fast","native","benchmark","performance","bun","node","parser"],"description":"Jiren is a high-performance HTTP/HTTPS client, Faster than any other HTTP/HTTPS client.","maintainers":[{"name":"vk007","email":"vikashkhati007@gmail.com"}],"readme":"# Jiren 🚀\n\n**The fastest HTTP client for JavaScript** - Simple, type-safe, and blazingly fast.\n\n[![npm version](https://img.shields.io/npm/v/jiren.svg)](https://www.npmjs.com/package/jiren)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## ⚡ Performance: Fastest in the World\n\nJiren outperforms top clients in every metric—throughput, latency, and stability.\n\n### Concurrent Benchmark (mitata)\n\n| Client     | Avg Latency | Req/sec      | vs Jiren       |\n| ---------- | ----------- | ------------ | -------------- |\n| **Jiren**  | **20.9 µs** | **47,800/s** | 🏆 **Fastest** |\n| Bun Fetch  | 31.7 µs     | 31,500/s     | 52% slower     |\n| Node-Fetch | 29.4 µs     | 34,000/s     | 41% slower     |\n| Undici     | 37.1 µs     | 27,000/s     | 77% slower     |\n| Ky         | 36.5 µs     | 27,400/s     | 75% slower     |\n| Axios      | 59.5 µs     | 16,800/s     | 185% slower    |\n| Got        | 61.3 µs     | 16,300/s     | 193% slower    |\n\n### Sequential Benchmark\n\n| Client     | Avg Latency | Req/sec      | vs Jiren       |\n| ---------- | ----------- | ------------ | -------------- |\n| **Jiren**  | **20.7 µs** | **48,300/s** | 🏆 **Fastest** |\n| Bun Fetch  | 27.9 µs     | 35,800/s     | 35% slower     |\n| Node-Fetch | 29.8 µs     | 33,600/s     | 44% slower     |\n| Undici     | 30.6 µs     | 32,700/s     | 48% slower     |\n| Ky         | 35.6 µs     | 28,100/s     | 72% slower     |\n| Axios      | 56.6 µs     | 17,700/s     | 173% slower    |\n| Got        | 59.9 µs     | 16,700/s     | 189% slower    |\n\n---\n\n## ✨ Why Jiren?\n\n| Feature                 | Benefit                                           |\n| ----------------------- | ------------------------------------------------- |\n| ⚡ **Blazing Fast**     | Proven to be the fastest JS HTTP client           |\n| **HTTP/3 Support**      | Automatic protocol upgrade for faster connections |\n| 💾 **Built-in Caching** | Automatic response caching with zero config       |\n| � **Progress Tracking** | Real-time download progress with speed & ETA      |\n| �📝 **Type-Safe**       | Full TypeScript support with autocomplete         |\n| 🔒 **Anti-Bot Ready**   | Bypass common bot protections easily              |\n| � **Built-in Metrics**  | Track performance out of the box                  |\n\n---\n\n## 📦 Installation\n\n```bash\nbun add jiren\n```\n\n---\n\n## 🚀 Quick Start\n\n### Step 1: Create Your Client\n\n```typescript\nimport { JirenClient } from \"jiren\";\n\nconst client = new JirenClient({\n  urls: {\n    api: \"https://api.example.com\",\n    github: \"https://api.github.com\",\n  },\n});\n```\n\n### Step 2: Make Requests\n\n```typescript\n// GET request\nconst response = await client.url.api.get({ path: \"/users\" });\nconst users = await response.body.json();\n\n// POST request\nawait client.url.api.post(JSON.stringify({ name: \"John\" }), {\n  path: \"/users\",\n  headers: { \"Content-Type\": \"application/json\" },\n});\n```\n\nThat's it! 🎉\n\n---\n\n## 📖 Table of Contents\n\n1. [Making Requests](#-making-requests)\n2. [Response Handling](#-response-handling)\n3. [Caching](#-caching)\n4. [Progress Tracking](#-progress-tracking)\n5. [Timeout Configuration](#%EF%B8%8F-timeout-configuration)\n6. [Anti-Bot Protection](#-anti-bot-protection)\n7. [Interceptors](#-interceptors)\n8. [Metrics](#-metrics)\n9. [TypeScript Support](#-typescript-support)\n10. [API Reference](#-api-reference)\n\n---\n\n## 🌐 Making Requests\n\n### GET Requests\n\n```typescript\n// Simple GET\nconst response = await client.url.api.get();\n\n// GET with path\nconst user = await client.url.github.get({ path: \"/users/octocat\" });\n\n// GET with headers\nconst data = await client.url.api.get({\n  path: \"/protected\",\n  headers: { Authorization: \"Bearer token123\" },\n});\n```\n\n### POST, PUT, PATCH, DELETE\n\n```typescript\n// POST\nawait client.url.api.post(JSON.stringify({ name: \"Jane\" }), {\n  path: \"/users\",\n  headers: { \"Content-Type\": \"application/json\" },\n});\n\n// PUT\nawait client.url.api.put(JSON.stringify({ name: \"Updated\" }), {\n  path: \"/users/123\",\n});\n\n// PATCH\nawait client.url.api.patch(JSON.stringify({ email: \"new@email.com\" }), {\n  path: \"/users/123\",\n});\n\n// DELETE\nawait client.url.api.delete(null, { path: \"/users/123\" });\n```\n\n---\n\n## 📤 Response Handling\n\n### Manual Parsing\n\n```typescript\nconst response = await client.url.api.get({ path: \"/data\" });\n\n// Parse as JSON\nconst json = await response.body.json();\n\n// Parse as text\nconst text = await response.body.text();\n\n// Get as buffer\nconst buffer = await response.body.arrayBuffer();\n```\n\n### Auto-Parse (Recommended)\n\nLet Jiren parse the response automatically:\n\n```typescript\n// Auto-parse JSON\nconst users = await client.url.api.get({\n  path: \"/users\",\n  responseType: \"json\", // ← Returns parsed data directly!\n});\n\n// Auto-parse text\nconst html = await client.url.api.get({\n  path: \"/page\",\n  responseType: \"text\",\n});\n```\n\n### 🚀 Specific JSON Field Extraction\n\nExtract specific fields from JSON responses with optimized native parsing:\n\n```typescript\n// Extract only the fields you need (faster for large JSON)\nconst { id, status } = await client.url.api.getJsonFields<{\n  id: number;\n  status: string;\n}>([\"id\", \"status\"]);\n\nconsole.log(id, status); // Only these fields are extracted\n```\n\n**Performance:**\n\n| Method                           | Use Case             | Speed                          |\n| -------------------------------- | -------------------- | ------------------------------ |\n| `response.body.json()`           | Need full object     | Standard                       |\n| `getJsonFields([\"field1\", ...])` | Need specific fields | **2-4x faster** for large JSON |\n\n> 💡 **Tip:** Use `getJsonFields()` when you have large JSON payloads but only need a few fields.\n\n### Response Properties\n\n```typescript\nconst response = await client.url.api.get({ path: \"/users\" });\n\nconsole.log(response.status); // 200\nconsole.log(response.ok); // true\nconsole.log(response.headers); // { \"content-type\": \"application/json\", ... }\nconsole.log(response.redirected); // false\n```\n\n---\n\n## 💾 Caching\n\nEnable caching for instant responses on repeated requests:\n\n### Enable Caching\n\n```typescript\nconst client = new JirenClient({\n  urls: {\n    api: {\n      url: \"https://api.example.com\",\n      cache: true, // ← Enable caching (60s default)\n    },\n  },\n});\n```\n\n### Custom Cache Duration\n\n```typescript\nconst client = new JirenClient({\n  urls: {\n    api: {\n      url: \"https://api.example.com\",\n      cache: { ttl: 300000 }, // 5 minutes\n    },\n    cdn: {\n      url: \"https://cdn.example.com\",\n      cache: { ttl: 3600000 }, // 1 hour\n    },\n  },\n});\n```\n\n### Cache Performance\n\n| Request Type   | Speed  | Improvement        |\n| -------------- | ------ | ------------------ |\n| First request  | ~150ms | -                  |\n| Cached request | ~1-2ms | **100x faster** ⚡ |\n\n### 🚀 Performance Benchmark\n\nSee the [top of this README](#-performance-fastest-in-the-world) for detailed benchmark results. Jiren consistently wins on throughput and tail latency.\n\n### Refresh Cache\n\n```typescript\n// Force refresh cached data\nawait client.url.api.prefetch({ path: \"/users\" });\n```\n\n> 💡 **Tip:** Add `.cache/` to your `.gitignore`\n\n---\n\n## 📊 Progress Tracking\n\nTrack download progress in real-time with the `download()` method:\n\n### Basic Usage\n\n```typescript\nconst response = await client.url.cdn.download({\n  path: \"/large-file.zip\",\n  onDownloadProgress: (progress) => {\n    console.log(`${progress.percent}% complete`);\n    console.log(`Speed: ${(progress.speed / 1024 / 1024).toFixed(2)} MB/s`);\n    console.log(`ETA: ${(progress.eta / 1000).toFixed(1)}s remaining`);\n  },\n});\n\nconst data = await response.body.arrayBuffer();\n```\n\n### Progress Event Properties\n\n| Property  | Type     | Description                   |\n| --------- | -------- | ----------------------------- |\n| `loaded`  | `number` | Bytes transferred so far      |\n| `total`   | `number` | Total bytes (0 if unknown)    |\n| `percent` | `number` | Percentage complete (0-100)   |\n| `speed`   | `number` | Transfer speed in bytes/sec   |\n| `eta`     | `number` | Estimated time remaining (ms) |\n\n### Progress Bar Example\n\n```typescript\nawait client.url.cdn.download({\n  path: \"/video.mp4\",\n  onDownloadProgress: (p) => {\n    const bar = \"█\".repeat(p.percent / 2).padEnd(50, \"░\");\n    process.stdout.write(`\\r[${bar}] ${p.percent}%`);\n  },\n});\nconsole.log(\"\\n✅ Download complete!\");\n```\n\n> 💡 **Note:** For HTTPS, progress events are fired as chunks are received. For HTTP, native streaming is used.\n\n### Upload Progress\n\nTrack upload progress in real-time with the `upload()` method:\n\n```typescript\nawait client.url.api.upload({\n  method: \"POST\",\n  path: \"/upload\",\n  body: largeData, // string or object\n  onUploadProgress: (progress) => {\n    console.log(`${progress.percent}% uploaded`);\n    console.log(`Speed: ${(progress.speed / 1024).toFixed(1)} KB/s`);\n  },\n});\n```\n\n### Upload Progress Bar Example\n\n```typescript\nawait client.url.api.upload({\n  method: \"PUT\",\n  path: \"/files/data.json\",\n  body: JSON.stringify(bigPayload),\n  onUploadProgress: (p) => {\n    const bar = \"█\".repeat(p.percent / 2).padEnd(50, \"░\");\n    process.stdout.write(\n      `\\r[${bar}] ${p.percent}% @ ${(p.speed / 1024 / 1024).toFixed(1)} MB/s`,\n    );\n  },\n});\nconsole.log(\"\\n✅ Upload complete!\");\n```\n\n> 💡 **Performance:** For HTTP, native Zig streaming achieves **~540 MB/s** upload speeds. HTTPS fires initial (0%) and final (100%) events.\n\n---\n\n## ⏱️ Timeout Configuration\n\nSet maximum wait time for requests to prevent hanging on slow or unresponsive servers:\n\n### Basic Usage\n\n```typescript\n// Timeout after 5 seconds\nconst response = await client.url.api.get({\n  timeout: 5000, // milliseconds\n});\n\n// Also works with POST, PUT, etc.\nawait client.url.api.post({\n  body: { data: \"value\" },\n  timeout: 10000, // 10 second timeout\n});\n```\n\n### Handling Timeout Errors\n\n```typescript\ntry {\n  const response = await client.url.api.get({\n    path: \"/slow-endpoint\",\n    timeout: 3000,\n  });\n} catch (error) {\n  if (error.name === \"TimeoutError\") {\n    console.log(\"Request timed out!\");\n  } else {\n    throw error;\n  }\n}\n```\n\n### Behavior Notes\n\n- Timeout is specified in **milliseconds**\n- **TimeoutError** is thrown when the timeout is exceeded\n- Timeout errors are **not retried** (even if retry is configured)\n- If `timeout` is not set or is `0`, no timeout is applied\n\n---\n\n## 🔒 Anti-Bot Protection\n\nBypass Cloudflare and other bot protections:\n\n```typescript\nconst client = new JirenClient({\n  urls: {\n    protected: \"https://protected-site.com\",\n  },\n  antibot: true,\n});\n\nconst response = await client.url.protected.get();\n```\n\n---\n\n## 🔄 Interceptors\n\nAdd middleware to modify requests/responses:\n\n### Add Authentication\n\n```typescript\nconst client = new JirenClient({\n  urls: { api: \"https://api.example.com\" },\n  interceptors: {\n    request: [\n      (ctx) => ({\n        ...ctx,\n        headers: {\n          ...ctx.headers,\n          Authorization: `Bearer ${getToken()}`,\n        },\n      }),\n    ],\n  },\n});\n```\n\n### Log Responses\n\n```typescript\nconst client = new JirenClient({\n  urls: { api: \"https://api.example.com\" },\n  interceptors: {\n    response: [\n      (ctx) => {\n        console.log(`${ctx.response.status} ${ctx.request.url}`);\n        return ctx;\n      },\n    ],\n  },\n});\n```\n\n### Handle Errors\n\n```typescript\nconst client = new JirenClient({\n  urls: { api: \"https://api.example.com\" },\n  interceptors: {\n    error: [\n      (error, ctx) => {\n        console.error(`Request failed: ${ctx.url}`);\n      },\n    ],\n  },\n});\n```\n\n### Add Interceptors Later\n\n```typescript\nclient.use({\n  request: [\n    (ctx) => ({ ...ctx, headers: { ...ctx.headers, \"X-Custom\": \"value\" } }),\n  ],\n});\n```\n\n---\n\n## 📊 Metrics\n\nTrack performance and cache efficiency:\n\n### Get Endpoint Metrics\n\n```typescript\nconst metrics = client.metrics.get(\"api\");\n\nconsole.log(metrics.requests.total); // Total requests made\nconsole.log(metrics.timing.avgMs); // Average response time\nconsole.log(metrics.cache.hitRate); // Cache hit percentage\n```\n\n### Get Global Metrics\n\n```typescript\nconst global = client.metrics.getGlobal();\n\nconsole.log(global.totalRequests); // All requests\nconsole.log(global.avgResponseTimeMs); // Average across all endpoints\nconsole.log(global.overallCacheHitRate); // Overall cache performance\n```\n\n### Export & Reset\n\n```typescript\n// Export as JSON\nconst json = client.metrics.export();\n\n// Reset metrics\nclient.metrics.reset();\n```\n\n---\n\n## 🔷 TypeScript Support\n\n### Type-Safe Responses\n\n```typescript\ninterface User {\n  id: number;\n  name: string;\n  email: string;\n}\n\n// TypeScript knows the response type!\nconst user = await client.url.api.get<User>({\n  path: \"/users/123\",\n  responseType: \"json\",\n});\n\nconsole.log(user.name); // ✅ Autocomplete works!\n```\n\n### Typed URL Keys\n\n```typescript\nconst client = new JirenClient({\n  urls: {\n    api: \"https://api.example.com\",\n    cdn: \"https://cdn.example.com\",\n  },\n});\n\nclient.url.api.get(); // ✅ Valid\nclient.url.cdn.get(); // ✅ Valid\nclient.url.foo.get(); // ❌ TypeScript error!\n```\n\n---\n\n## 📚 API Reference\n\n### Creating a Client\n\n```typescript\nnew JirenClient({\n  urls: {\n    // Simple URL\n    api: \"https://api.example.com\",\n\n    // With caching\n    cdn: {\n      url: \"https://cdn.example.com\",\n      cache: true, // or { ttl: 60000 }\n    },\n  },\n\n  // Optional settings\n  antibot: false, // Enable anti-bot protection\n  benchmark: false, // Benchmark mode\n  interceptors: {}, // Request/response interceptors\n});\n```\n\n### Request Methods\n\n| Method            | Signature                                                 |\n| ----------------- | --------------------------------------------------------- |\n| `get()`           | `get<T>(options?): Promise<Response<T>>`                  |\n| `post()`          | `post<T>(body?, options?): Promise<Response<T>>`          |\n| `put()`           | `put<T>(body?, options?): Promise<Response<T>>`           |\n| `patch()`         | `patch<T>(body?, options?): Promise<Response<T>>`         |\n| `delete()`        | `delete<T>(body?, options?): Promise<Response<T>>`        |\n| `head()`          | `head(options?): Promise<Response>`                       |\n| `options()`       | `options(options?): Promise<Response>`                    |\n| `prefetch()`      | `prefetch(options?): Promise<void>`                       |\n| `download()`      | `download<T>(options?): Promise<Response<T>>`             |\n| `getJsonFields()` | `getJsonFields<T>(fields, options?): Promise<Partial<T>>` |\n\n### Request Options\n\n```typescript\n{\n  path?: string;                    // URL path to append\n  headers?: Record<string, string>; // Request headers\n  responseType?: \"json\" | \"text\";   // Auto-parse response\n  maxRedirects?: number;            // Max redirects (default: 5)\n}\n```\n\n### Response Object\n\n```typescript\n{\n  url: string;\n  status: number;\n  statusText: string;\n  headers: Record<string, string>;\n  ok: boolean;\n  redirected: boolean;\n  body: {\n    json<T>(): Promise<T>;\n    text(): Promise<string>;\n    arrayBuffer(): Promise<ArrayBuffer>;\n    blob(): Promise<Blob>;\n  };\n}\n```\n\n---\n\n## 💡 Examples\n\n### API Client Pattern\n\n```typescript\n// lib/api.ts\nimport { JirenClient } from \"jiren\";\n\nexport const api = new JirenClient({\n  urls: {\n    backend: {\n      url: process.env.API_URL!,\n      cache: { ttl: 30000 },\n    },\n  },\n  interceptors: {\n    request: [\n      (ctx) => ({\n        ...ctx,\n        headers: {\n          ...ctx.headers,\n          Authorization: `Bearer ${getSession()?.token}`,\n        },\n      }),\n    ],\n  },\n});\n\n// Usage anywhere\nimport { api } from \"@/lib/api\";\nconst users = await api.url.backend.get({\n  path: \"/users\",\n  responseType: \"json\",\n});\n```\n\n### React/Next.js Hook\n\n```typescript\nfunction useApi<T>(path: string) {\n  const [data, setData] = useState<T | null>(null);\n  const [loading, setLoading] = useState(true);\n\n  useEffect(() => {\n    api.url.backend\n      .get<T>({ path, responseType: \"json\" })\n      .then(setData)\n      .finally(() => setLoading(false));\n  }, [path]);\n\n  return { data, loading };\n}\n\n// Usage\nfunction UserList() {\n  const { data: users, loading } = useApi<User[]>(\"/users\");\n  if (loading) return <Spinner />;\n  return (\n    <ul>\n      {users?.map((u) => (\n        <li key={u.id}>{u.name}</li>\n      ))}\n    </ul>\n  );\n}\n```\n\n---\n\n## 🏗️ Framework Integration\n\n### Next.js (App Router)\n\nTo use Jiren in Next.js, add it to `serverExternalPackages` in `next.config.ts`:\n\n```typescript\nimport type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  // Required: Treat Jiren and Koffi as external native packages\n  serverExternalPackages: [\"jiren\", \"koffi\"],\n};\n\nexport default nextConfig;\n```\n\n**Usage in API Routes:**\n\n```typescript\n// app/api/data/route.ts\nimport { JirenClient } from \"jiren\";\n\nconst client = new JirenClient({\n  urls: [{ key: \"api\", url: \"https://api.example.com\" }],\n});\n\nexport async function GET() {\n  const response = await client.url.api.get({ path: \"/users\" });\n  return Response.json(await response.body.json());\n}\n```\n\n---\n\n## 📋 Requirements\n\n- **Runtime**:\n  - **Bun** v1.0.0+\n  - **Node.js** v18.0.0+ (macOS/Linux/Windows)\n- **OS**:\n  - Native mode: macOS (ARM64/x64), Linux (x64), and Windows (x64) when the bundled native runtime is present\n  - Compatibility mode: automatic fetch fallback when the native library is unavailable\n- **Optional**: set `JIREN_FORCE_FETCH_FALLBACK=1` to force compatibility mode.\n\n### Node Entrypoints\n\n- `import { JirenClient } from \"jiren\"`: auto-select native mode when available, otherwise fetch fallback\n- `import { JirenClient } from \"jiren/native\"`: native mode (max performance, supported CPUs only)\n\n---\n\n## 📄 License\n\nMIT © VK\n\n---\n\n## 🤝 Contributing\n\nContributions welcome! Please open an issue or submit a pull request.\n\n---\n\n<p align=\"center\">\n  <strong>Made with ⚡ by VK</strong>\n</p>\n","readmeFilename":"README.md"}