{"_id":"hardened-fetch","_rev":"11-c7603d3cb4849d22c6ec172718082ae4","name":"hardened-fetch","dist-tags":{"latest":"2.0.0","beta":"2.0.0-beta.2"},"versions":{"1.0.0":{"name":"hardened-fetch","version":"1.0.0","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@1.0.0","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"99c7224817896f75be8f8ccb73bf94f6f5a2e933","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-1.0.0.tgz","fileCount":17,"integrity":"sha512-3kQeqLCjsA6xj3Sug4FvtnUluGAhkaX4iECp66+SBKX++bAwD9ZSTnqjHDtxgAMwFotIbJZn7+EIUQcThi2xPQ==","signatures":[{"sig":"MEUCIHcvtfI3bPPJSFgOT/BE7ZhhX+0e0hIAdZhFlkbQEifKAiEA8K2OPmPtPJ9dmHABtZI7srKbI1BzW6Ru14FXhDkWX4k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35884},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 18.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"f108821b117ba60be81f82d361eb9fd8b0f350f7","scripts":{"lint":"eslint . --ext ts,tsx,js,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"9.8.1","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, request throttling, retries with backoff and rate limit support, pagination, and descriptive errors.","directories":{},"_nodeVersion":"18.18.0","dependencies":{"bottleneck":"^2.19.5","http-errors":"^2.0.0","parse-link-header":"^2.0.0","@types/http-errors":"^2.0.4","@types/parse-link-header":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^18.11.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_1.0.0_1702750305805_0.6423055936236883","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"hardened-fetch","version":"1.1.0","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@1.1.0","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"6a5609493a883ea9eca307026a29773933851b5d","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-1.1.0.tgz","fileCount":18,"integrity":"sha512-wV6bC1XlBkOCyXomlKgrDMi4lK6h+fn4IRGIzRkLmOmEfccRK5vRX5x6mbcdR0r1nJPmTW/ZeoE54P9JYPBMFA==","signatures":[{"sig":"MEUCIBUAamBT0Pn2PNujfDOBm375ve0ae458QgDL9gm7T+PjAiEAwQ6oX1rFAEgTySLNhfQYVmdc4inch0WjdIqUvF9kPTU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38336},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 18.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"7c099484f8a17921c73d7c216add48f7cc31263c","scripts":{"lint":"eslint . --ext ts,tsx,js,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"9.8.1","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, request throttling, retries with backoff and rate limit support, pagination, and descriptive errors.","directories":{},"_nodeVersion":"18.18.0","dependencies":{"url-join":"^5.0.0","bottleneck":"^2.19.5","http-errors":"^2.0.0","parse-link-header":"^2.0.0","@types/http-errors":"^2.0.4","@types/parse-link-header":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^18.11.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_1.1.0_1703149703312_0.2489347525185197","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"hardened-fetch","version":"1.1.1","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@1.1.1","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"a0c34be3539d4852a9ff1a1d5949895f3e10672a","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-1.1.1.tgz","fileCount":17,"integrity":"sha512-ITkmpi0YI8FVD0uxbijvnwumwLVlsrRBUaNyN5xjLCnfsGpY11rv98y68JbUxW3yEgAXJrdjlGb49ymIK5bkKQ==","signatures":[{"sig":"MEUCIHGGhnLeppquA71EYb09+bTesqh0AshoZTXRtLkg8UhbAiEArAmMj+04StvnY6ai6SzYJyz0ZO1O5heIIEuoyDDGRc8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38289},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 18.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"469d4708daa31b3386eb8120a357b99df28bb56b","scripts":{"lint":"eslint . --ext ts,tsx,js,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"9.8.1","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, request throttling, retries with backoff and rate limit support, pagination, and descriptive errors.","directories":{},"_nodeVersion":"18.18.0","dependencies":{"bottleneck":"^2.19.5","http-errors":"^2.0.0","proper-url-join":"^2.1.1","parse-link-header":"^2.0.0","@types/http-errors":"^2.0.4","@types/proper-url-join":"^2.1.4","@types/parse-link-header":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^18.11.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_1.1.1_1703151539409_0.0021559411880460733","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"hardened-fetch","version":"1.2.0","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@1.2.0","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"899ac4fc5bfd85fa2ab58592398c03771d277494","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-1.2.0.tgz","fileCount":17,"integrity":"sha512-y7UV3x1gN5cYj9kPJBBKiIoBRGi6V9lKS3cKGv8DApjLCWkEyDqcGRh4a7M1O1mJoz7LfIy0myJeOql6pUT9Bg==","signatures":[{"sig":"MEQCIEOBLgRLFgq9Mj74eUrBxGfoTbSJjgwME5Ma+TGddqj7AiBY2lEUalHKCCHep6NN83A7pHsYfToLCx8HBY5BvPWtpg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39354},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 18.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"c037e4f9cef862010529b55e8bde791671bb0aae","scripts":{"lint":"eslint . --ext ts,tsx,js,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"9.8.1","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, request throttling, retries with backoff and rate limit support, pagination, and descriptive errors.","directories":{},"_nodeVersion":"18.18.0","dependencies":{"bottleneck":"^2.19.5","http-errors":"^2.0.0","proper-url-join":"^2.1.1","parse-link-header":"^2.0.0","@types/http-errors":"^2.0.4","@types/proper-url-join":"^2.1.4","@types/parse-link-header":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^18.11.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_1.2.0_1704195462454_0.6966309166862501","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"hardened-fetch","version":"1.2.1","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@1.2.1","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"9abed7e5938e458eb8ad66a084763b30f0b85924","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-1.2.1.tgz","fileCount":18,"integrity":"sha512-sTr6UevHq+mltZbIOGUK+i7+Hmmi6knuz1bZT7nMUB0F58jEx7jAqorX0VzMTachxi8xQA/4yYrDuGsLBPjXzA==","signatures":[{"sig":"MEUCIQCs6VybnFKbLim5Cn+f20OUzQc3QZfaW02NgUuDog35gQIgLz73sBhNx574fGjCe0AmxBxH78lg1iUfnCNN2azx08s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40033},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 18.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"444394baf5ce3f160a4e441eed91038450dc898a","scripts":{"lint":"eslint . --ext ts,tsx,js,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"9.8.1","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, request throttling, retries with backoff and rate limit support, pagination, and descriptive errors.","directories":{},"_nodeVersion":"18.18.0","dependencies":{"bottleneck":"^2.19.5","http-errors":"^2.0.0","proper-url-join":"^2.1.1","parse-link-header":"^2.0.0","@types/http-errors":"^2.0.4","@types/proper-url-join":"^2.1.4","@types/parse-link-header":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^18.11.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_1.2.1_1704307790497_0.07478090654865","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"hardened-fetch","version":"1.2.2","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@1.2.2","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"56ca1a95121ff0cfb58bc321c766cda47b032bc1","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-1.2.2.tgz","fileCount":18,"integrity":"sha512-z20HYsRlZ6FKPEzaZZgid748HYygMN2s3gnnCSi38uZDzIeHsaRdKXDXCX33fHVoigXtcSBA0VWZoTLvReSSSg==","signatures":[{"sig":"MEYCIQD0MUQqvCnPe43fZzyQVghbuZnz6G09fq+OYQEaOpvObQIhAIOzYIBhp1pZMTUojQzjimuCqihulz4cH7AV9ncpEiZq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39886},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 18.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"4a28f6c98c443748e252147fdde58ed5ee8eaaca","scripts":{"lint":"eslint . --ext ts,tsx,js,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"9.8.1","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, request throttling, retries with backoff and rate limit support, pagination, and descriptive errors.","directories":{},"_nodeVersion":"18.18.0","dependencies":{"bottleneck":"^2.19.5","http-errors":"^2.0.0","@types/http-errors":"^2.0.4","@web3-storage/parse-link-header":"^3.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^18.11.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_1.2.2_1704624171504_0.5384023553747446","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"hardened-fetch","version":"1.2.3","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@1.2.3","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"964fab591399286943c048588b5ad81534e21494","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-1.2.3.tgz","fileCount":19,"integrity":"sha512-JbBkr8UCUl8jYZ8MiXfHbZmqPb1GkzRVEUBOCEeVw9yGY7TQq1vpIGh2CNDzogPYtvxVPZEgp5KzOuQmOGikfA==","signatures":[{"sig":"MEMCIDNIud3Ds1zDJ2EQsf2oxsV+GCirWJ7LMoHZg+hfrYMyAh9d/wqOQDNIkN7aPSHnWUC3z9XIBrxhgtioIjMPmUZL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169835},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 18.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"7165088e638e52784af1bae5c834c882c99fe170","scripts":{"lint":"eslint . --ext ts,tsx,js,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"9.8.1","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, request throttling, retries with backoff and rate limit support, pagination, and descriptive errors.","directories":{},"_nodeVersion":"18.18.0","dependencies":{"bottleneck":"^2.19.5","http-errors":"^2.0.0","@types/http-errors":"^2.0.4","@web3-storage/parse-link-header":"^3.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^18.11.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_1.2.3_1704709492248_0.2308842664780988","host":"s3://npm-registry-packages"}},"2.0.0-beta.0":{"name":"hardened-fetch","version":"2.0.0-beta.0","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@2.0.0-beta.0","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"af60e7292915d560dd2f05c79ae40984f6a9e570","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-2.0.0-beta.0.tgz","fileCount":22,"integrity":"sha512-+Kwfr/eQvzok7wTNjzsZGwBrLzbXFO8roelmcdeaCMAEA0Evnq9I3do4Vqx0mDF503mn1E28Zxbwl3dUPC+09A==","signatures":[{"sig":"MEUCIQDkkHnkGGrbc4PahtXkbiVo9u092R52O6YgMjLdBx7QtAIgS69vx5SmooSEBdI2kiap0bPZkx2kgSUvvHoColt9Cc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170373},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 20.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"05f9722f3cdc64d0ab35d497bc1281be177576c1","scripts":{"lint":"eslint . --ext ts,tsx,js,cjs,mjs,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,cjs,mjs,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"10.2.4","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, throttling, rate limit awareness, retries, and descriptive errors.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"simple-rate-limited-queue":"^1.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^20.14.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_2.0.0-beta.0_1753537647404_0.2876119210121939","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-beta.1":{"name":"hardened-fetch","version":"2.0.0-beta.1","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@2.0.0-beta.1","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"cd8fd0d48617c51b6f9c1a683ff5a14f009a3171","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-2.0.0-beta.1.tgz","fileCount":26,"integrity":"sha512-+JQayXXyQBkDyfzza0mYPZ1qbt3hxpHt4L9AKoqYJSVsdgCR+NqXserVj8zSkVxlF1wRvmNBsiTL3688XEKwaQ==","signatures":[{"sig":"MEQCIE01YVLo02P+ZC3eX9PMXQwK0oxxoZCulmhFkILYlyvWAiB2sePT/R3/GnzmzPZfyR/lYaTpEJhrdiWKj2b8KMv1NA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173824},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 20.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"fecff55d3fd1a9da10aade183646af9e41e1d207","scripts":{"lint":"eslint . --ext ts,tsx,js,cjs,mjs,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,cjs,mjs,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"10.2.4","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, throttling, rate limit awareness, retries, and descriptive errors. It makes working with APIs without SDKs and building robust web scrapers easier.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"simple-rate-limited-queue":"^1.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^20.14.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_2.0.0-beta.1_1754149863712_0.004236021597089579","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-beta.2":{"name":"hardened-fetch","version":"2.0.0-beta.2","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"author":{"name":"Matt Hinchliffe"},"license":"MIT","_id":"hardened-fetch@2.0.0-beta.2","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"homepage":"https://github.com/i-like-robots/hardened-fetch","bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"dist":{"shasum":"0e9951ef316be8a2d34025180554b3ecad827b92","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-2.0.0-beta.2.tgz","fileCount":25,"integrity":"sha512-tO1cGuapMfZjtYmeVrH1jGc175SM6OFDsB3YJwwePGuaK6FZIRMLPEXvpIbNtNoeyA54/G1JcYvqOoMIqLxYNQ==","signatures":[{"sig":"MEYCIQCGDn5tDEThJ7nFUpVX17o2PcjBVI+dr8UrZqsmwp1gTwIhAKMd/ZxuWsSenjYX4tdZBxwpZLZEjuAO3tGLMG6zKTMg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45861},"main":"./dist/index.cjs","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">= 20.0.0"},"exports":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"gitHead":"c3f783c8865aa88489e44cee5157ade763ed2375","scripts":{"lint":"eslint . --ext ts,tsx,js,cjs,mjs,jsx","spec":"tsx --test --test-reporter spec src/*.spec.ts","test":"npm run verify && npm run spec","build":"pkgroll","format":"prettier --write '**/*.{ts,tsx,js,cjs,mjs,jsx,json,yml}'","verify":"npm run lint && npm run type-check && npm run format","prepare":"husky install","type-check":"tsc --noEmit","prepublishOnly":"npm run test && npm run build"},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"repository":{"url":"git+https://github.com/i-like-robots/hardened-fetch.git","type":"git"},"_npmVersion":"10.2.5","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, throttling, rate limit awareness, retries, and descriptive errors. It makes working with APIs without SDKs and building robust web scrapers easier.","directories":{},"_nodeVersion":"20.17.0","dependencies":{"simple-rate-limited-queue":"^1.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.6.0","husky":"^8.0.0","eslint":"^8.54.0","undici":"^5.28.1","pkgroll":"^2.0.1","prettier":"^3.1.0","@types/node":"^20.14.8","lint-staged":"^15.1.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"_npmOperationalInternal":{"tmp":"tmp/hardened-fetch_2.0.0-beta.2_1755772934627_0.15656096357728733","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"hardened-fetch","version":"2.0.0","description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, throttling, rate limit awareness, retries, and descriptive errors. It makes working with APIs without SDKs and building robust web scrapers easier.","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.cts","exports":{"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"scripts":{"lint":"eslint . --ext ts,tsx,js,cjs,mjs,jsx","type-check":"tsc --noEmit","format":"prettier --write '**/*.{ts,tsx,js,cjs,mjs,jsx,json,yml}'","spec":"tsx --test --test-reporter spec src/*.spec.ts","verify":"npm run lint && npm run type-check && npm run format","test":"npm run verify && npm run spec","build":"pkgroll","prepublishOnly":"npm run test && npm run build","prepare":"husky install"},"author":{"name":"Matt Hinchliffe"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/i-like-robots/hardened-fetch.git"},"bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"homepage":"https://github.com/i-like-robots/hardened-fetch","dependencies":{"simple-rate-limited-queue":"^1.2.0"},"devDependencies":{"@types/node":"^20.14.8","@typescript-eslint/eslint-plugin":"^6.13.0","@typescript-eslint/parser":"^6.13.0","eslint":"^8.54.0","husky":"^8.0.0","lint-staged":"^15.1.0","pkgroll":"^2.0.1","prettier":"^3.1.0","tsx":"^4.6.0","undici":"^5.28.1"},"engines":{"node":">= 20.0.0"},"_id":"hardened-fetch@2.0.0","gitHead":"b9488cae5ab358542fb40639f7b623ba11699368","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-+XoP7h9eginnSfYQMs+zShcoAIRMp2xUjmBKFJdTJgxyK+HyIpdl/rTaPgcZAt8PjKN/2Z/SVx2zefQYS29V9w==","shasum":"b278977f8b6110b91b3532773a1a328b7a6a2f5b","tarball":"https://registry.npmjs.org/hardened-fetch/-/hardened-fetch-2.0.0.tgz","fileCount":26,"unpackedSize":174351,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC65GbOjo9tofeKT+jzvKu6+MaqnnKROp8VSMDnNiOW3AiEAoDjJ93jtQye0Z2fAiVHNf/fxuMTpuk1c7OkvF7DvJv0="}]},"_npmUser":{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},"directories":{},"maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hardened-fetch_2.0.0_1761492543086_0.2971635987637071"},"_hasShrinkwrap":false}},"time":{"created":"2023-12-16T18:11:45.805Z","modified":"2025-10-26T15:29:03.481Z","1.0.0":"2023-12-16T18:11:46.058Z","1.1.0":"2023-12-21T09:08:23.462Z","1.1.1":"2023-12-21T09:38:59.592Z","1.2.0":"2024-01-02T11:37:42.604Z","1.2.1":"2024-01-03T18:49:50.667Z","1.2.2":"2024-01-07T10:42:51.654Z","1.2.3":"2024-01-08T10:24:52.376Z","2.0.0-beta.0":"2025-07-26T13:47:27.662Z","2.0.0-beta.1":"2025-08-02T15:51:03.916Z","2.0.0-beta.2":"2025-08-21T10:42:14.819Z","2.0.0":"2025-10-26T15:29:03.287Z"},"bugs":{"url":"https://github.com/i-like-robots/hardened-fetch/issues"},"author":{"name":"Matt Hinchliffe"},"license":"MIT","homepage":"https://github.com/i-like-robots/hardened-fetch","keywords":["fetch","request","retry","backoff","rate-limit","concurrency","throttle"],"repository":{"type":"git","url":"git+https://github.com/i-like-robots/hardened-fetch.git"},"description":"Hardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, throttling, rate limit awareness, retries, and descriptive errors. It makes working with APIs without SDKs and building robust web scrapers easier.","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"}],"readme":"# hardened-fetch\n\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/i-like-robots/hardened-fetch/blob/main/LICENSE) ![build status](https://github.com/i-like-robots/hardened-fetch/actions/workflows/test.yml/badge.svg?branch=main) [![npm version](https://img.shields.io/npm/v/hardened-fetch.svg?style=flat)](https://www.npmjs.com/package/hardened-fetch)\n\nHardened Fetch is a tiny wrapper for `global.fetch` adding request timeouts, throttling, rate limit awareness, retries, and descriptive errors. It makes working with APIs without SDKs and building robust web scrapers easier.\n\n```js\nimport { HardenedFetch } from 'hardened-fetch'\n\nconst client = new HardenedFetch({\n  baseUrl: 'https://swapi.dev/api/',\n  maxRetries: 3,\n})\n\nconst response = await client.fetch('/species/1')\n```\n\n## Installation\n\nThis is a [Node.js] module available through the [npm] registry. Node.js 20 or higher is required.\n\n```sh\n$ npm install hardened-fetch\n```\n\n[Node.js]: https://nodejs.org/en/\n[npm]: https://www.npmjs.com/\n[npm install]: https://docs.npmjs.com/getting-started/installing-npm-packages-locally\n\n## Features\n\n- Throttle concurrent requests and control request rate\n- Retries failed requests with exponential back off\n- Retries rate-limited requests according to reset time\n- Supports request timeouts and multiple abort controllers\n\n## API\n\n### `new HardenedFetch([options] = {})`\n\nCreates a new Hardened Fetch client.\n\nConstructor Options:\n\n| Name                | Type          | Description                                                                                              |\n| ------------------- | ------------- | -------------------------------------------------------------------------------------------------------- |\n| `baseUrl`           | `string`      | A base URL to prepend to each request, optional.                                                         |\n| `defaultHeaders`    | `HeadersInit` | Default headers to add to each request, optional.                                                        |\n| `maxInProgress`     | `number`      | The maximum number of requests to execute per time interval.                                             |\n| `maxPerInterval`    | `number`      | The maximum number of concurrent requests in progress.                                                   |\n| `intervalLength`    | `number`      | The length of each time interval in milliseconds.                                                        |\n| `maxRetries`        | `number`      | Number of retry attempts for failed requests.                                                            |\n| `doNotRetryMethods` | `string[]`    | List of HTTP methods that will not trigger a retry attempt.                                              |\n| `doNotRetryCodes`   | `number[]`    | List of HTTP status codes that will not trigger a retry attempt.                                         |\n| `rateLimitHeaders`  | `string[]`    | The names of the rate limit reset headers to lookup.                                                     |\n\nAll of the options and their defaults are shown below:\n\n```js\nconst client = new HardenedFetch({\n  // Request options\n  baseUrl: undefined,\n  defaultHeaders: undefined,\n  // Throttle options\n  maxInProgress: 20,\n  maxPerInterval: 10,\n  intervalLength: 1000,\n  // Retry options\n  maxRetries: 3,\n  doNotRetryCodes: [400, 401, 403, 404, 405, 406, 410, 411, 412, 422, 451, 501],\n  doNotRetryMethods: ['CONNECT', 'DELETE', 'PATCH', 'POST', 'PUT'],\n  // Rate limit options\n  rateLimitHeaders: ['Retry-After', 'RateLimit-Reset', 'X-RateLimit-Reset', 'X-Rate-Limit-Reset'],\n})\n```\n\n### `client.fetch(url, [init={}], [timeout=30_000])`\n\nExpects a `url` to the resource that you wish to fetch, optionally [settings](https://developer.mozilla.org/en-US/docs/Web/API/fetch#options) to apply to the request and a timeout in milliseconds. Returns a promise which will resolve with the [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) object when successful or rejects with an `HTTPError` for non-20x responses.\n\n```js\nconst response = await client.fetch('https://swapi.dev/api/species/1/')\nconst json = await response.json()\n```\n\n## License\n\nThis package is MIT licensed.\n","readmeFilename":"README.md"}