{"_id":"@axiomify/sdk-runtime","_rev":"9-bc9d596f4ca35011c984e4d1cc004fcd","name":"@axiomify/sdk-runtime","dist-tags":{"latest":"7.1.0"},"versions":{"6.1.0":{"name":"@axiomify/sdk-runtime","version":"6.1.0","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/sdk-runtime@6.1.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"4eb68b4a3fd41546fea114aa2f183c976074ec66","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-6.1.0.tgz","fileCount":6,"integrity":"sha512-1N3xqSXfGo6wbO3v8ZUSSjXK2mUwpP0gI0zB8dFq6GVqNjtzKXTQ12CLK+73ozDeggAYTRMpEfD6w05VbRtWzA==","signatures":[{"sig":"MEUCIQDi1RoRKB4XbwnR2f1jV8fU+BH8yzMfYlxD+vC1m5UsFAIgKJYUceRssHBw3KDJSYqnhY6yoXZcoIX3zYUmRScwHXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":313647},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d4c979a2857b4f2f2da9fecb4691ffebea17b3b9","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/sdk-runtime"},"_npmVersion":"10.8.2","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-runtime_6.1.0_1779988446915_0.8715678408377316","host":"s3://npm-registry-packages-npm-production"}},"6.2.0":{"name":"@axiomify/sdk-runtime","version":"6.2.0","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/sdk-runtime@6.2.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"272b7344803454a6382e33d6f29b03abe366e0c7","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-6.2.0.tgz","fileCount":6,"integrity":"sha512-5HNutREDy4MJ5XfiBWNk84HALwBfklmQivmwz84/+fjgi4s4IEXYIJ2OCAdcK2eIaoCS841WQJ5cnQd7cwSlUw==","signatures":[{"sig":"MEQCIBQvyJ1VP/c+VQHY+DMkG/0hQ9PJxUfrVxpoxSplykVkAiBO1HyOxrUzT1/wguwB2/Y4QpBcFwrJu6sTZbAkE7VNhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2fsdk-runtime@6.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":314019},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"1a526aaa1f0a4281cdf8a9649c8ba82fb71a4331","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/sdk-runtime"},"_npmVersion":"10.8.2","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-runtime_6.2.0_1780239403557_0.48145289473241126","host":"s3://npm-registry-packages-npm-production"}},"6.3.0":{"name":"@axiomify/sdk-runtime","version":"6.3.0","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/sdk-runtime@6.3.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"2d4e508309af86dd62c51c62d733af16d9d7faa7","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-6.3.0.tgz","fileCount":6,"integrity":"sha512-Jhk7OP6IObDjt1nQ8AYlF8FepKnXtkH16XoKDC9K7+2YXo3FU7l32ffxToffcYOYvZ7XitYdYKKlARIWsMlOLw==","signatures":[{"sig":"MEYCIQDyxf5zflDFRAPTqmyADzWJ2U5YHzbwPwniz1uk2Uo8eAIhAIM84QfDlt6HVU6tOCANjSiYtS04R/hSelm4yPGlYm+d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2fsdk-runtime@6.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":314019},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"e0d74c62efac09217319c3c3daf799f07504a3b5","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/sdk-runtime"},"_npmVersion":"10.8.2","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-runtime_6.3.0_1780874335887_0.6367535035969638","host":"s3://npm-registry-packages-npm-production"}},"6.3.1":{"name":"@axiomify/sdk-runtime","version":"6.3.1","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/sdk-runtime@6.3.1","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"9affca81bdc0971abea6096855c01eb8a7799e82","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-6.3.1.tgz","fileCount":6,"integrity":"sha512-P8SAg2S6cv7gWMnqAl6E3OQNM3k7uEC1/+Fgf3njPknFXTGv6zq/02zUw3tESRQ6TtYv6oxdErp2brJjhCW3Fg==","signatures":[{"sig":"MEQCIDXtZDNR4r/szi3Om7+bllhYbXHEmwEgmYijhAnm8Cz+AiBqnv2Ku31PXOTG2f+UosmCxmf2zdX800tMOYQLG3k9GQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2fsdk-runtime@6.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":314019},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"47fdfec5814dc151a4c897ffbd08f8b6da77c6cf","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/sdk-runtime"},"_npmVersion":"10.8.2","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-runtime_6.3.1_1781087008237_0.8723096007548117","host":"s3://npm-registry-packages-npm-production"}},"6.3.2":{"name":"@axiomify/sdk-runtime","version":"6.3.2","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/sdk-runtime@6.3.2","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"10d8e8f814ca935a3f8d26c83ee735634aa6e394","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-6.3.2.tgz","fileCount":6,"integrity":"sha512-71w4eqoQ/AwSmDbeeXFc6qH5crD14xoPsnBqlieWOpRmGwcz2WoqvRnt3X1KiNRH67Nc/GdvA7CRvTjxEPKj4A==","signatures":[{"sig":"MEYCIQDqTegFtS2zLYe00h/Og7JVUGCIbEne3T1oJZRh32fOTAIhAN5aDW+e5gbENJzMDxIDbnI5Lsb8SBes4vtR5sinI+3J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2fsdk-runtime@6.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":314019},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"31537d5f1ae10e501f93ab2de7b44d58fca8339a","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/sdk-runtime"},"_npmVersion":"10.8.2","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-runtime_6.3.2_1781094445679_0.8790625256114935","host":"s3://npm-registry-packages-npm-production"}},"6.3.3":{"name":"@axiomify/sdk-runtime","version":"6.3.3","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/sdk-runtime@6.3.3","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"71ff7a07e50a173eb59a0efb47db5e6f24f236f5","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-6.3.3.tgz","fileCount":6,"integrity":"sha512-EyCvYOPoM7b2Ee1FzGMdp3PFsRL8RQAZ7ePddpbNw/yZmuVhWXFtQ6/r3C8RPyQdFekHcQHfMsoqgvZXoYsvbw==","signatures":[{"sig":"MEUCIBO5BwRhel7FaP+RQSBAVGgEA61lhX5WoHToDf1M+sSLAiEAx0dng0k+rsuBen4IHhQeJ/SuICKdLY9R/rJgd7NBIaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318671},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8c8172eaacdeb225342992693b806ab443b60d2b","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/sdk-runtime"},"_npmVersion":"10.9.8","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","directories":{},"_nodeVersion":"22.22.3","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-runtime_6.3.3_1781781782866_0.9816726442081172","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@axiomify/sdk-runtime","version":"7.0.0","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/sdk-runtime@7.0.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"b45a2dbdb11457df3e7282cdf10b98721355a768","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-7.0.0.tgz","fileCount":6,"integrity":"sha512-7d5szEjHvdrCEGomtIdTKsIk7SX01sT7CMrP3Q7qoSFOV9CckpcIwkaajA1zZM0AErTolMemOgQ5zAFcRhhNoA==","signatures":[{"sig":"MEQCICmel8HY594nTJqvLVYs/eSCnKK/DIlPTxrfMiZB1ihsAiA+nMTdtSQBElPGCeNzQh1lvfuSIX5tVneL2knRT1ktoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2fsdk-runtime@7.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320378},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fbf6e60487a5232ad20e80cfd584db8cb33e96b4","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/sdk-runtime"},"_npmVersion":"10.8.2","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-runtime_7.0.0_1782944896753_0.03386577608032293","host":"s3://npm-registry-packages-npm-production"}},"7.0.1":{"name":"@axiomify/sdk-runtime","version":"7.0.1","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/sdk-runtime@7.0.1","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"519af64bce0cb4d85d12638f091c9c3fa356d669","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-7.0.1.tgz","fileCount":6,"integrity":"sha512-YOvI9lI1YJzQXhlfsFdjsEjADBN3UifD27mmvJmKsJ2J2RMsptg5+MO15yuPqLD3ML7W+nUMC548YlfKELe0XQ==","signatures":[{"sig":"MEUCIQCzxKvgTti7Ftz4NhRveA1BstXIKyf2ZLdxayK/qOC/dAIgc3OhxnbYfBl026wtYlNM4tDx6Pb3kc84DPDHGRZUOjg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2fsdk-runtime@7.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":319784},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"86ca53ddf22675696310ae2706003c6cecd017bd","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/sdk-runtime"},"_npmVersion":"10.8.2","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","directories":{},"_nodeVersion":"20.20.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdk-runtime_7.0.1_1785366603399_0.854625859031034","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@axiomify/sdk-runtime","version":"7.1.0","description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup","test":"vitest run tests --config ../../vitest.config.mts"},"dependencies":{},"keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"author":{"name":"Topman","email":"okunlolatopman14@gmail.com","url":"https://github.com/OTopman"},"license":"MIT","homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","repository":{"type":"git","url":"git+https://github.com/OTopman/axiomify.git","directory":"packages/sdk-runtime"},"bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"publishConfig":{"access":"public"},"engines":{"node":">=18.0.0"},"_id":"@axiomify/sdk-runtime@7.1.0","gitHead":"c286687588228a3ade79dbe9eae74915a3d5d794","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-srzfBYJRzFBS3tF9WiHdMz1nklBf8EpTW9hTaJd7oEa8K3VbKkLBFc8kxGyEZYp5APIk6pfXG8bmCLJ097rshg==","shasum":"33bd290ae5d3e08e29d19e429c709349a556cab7","tarball":"https://registry.npmjs.org/@axiomify/sdk-runtime/-/sdk-runtime-7.1.0.tgz","fileCount":6,"unpackedSize":321075,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2fsdk-runtime@7.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCbqv1Ci1hg/Cq31EvUboZ1gksDC6xtkevNRHY1KyMm4wIgBdlOpYJ+ds96TfInuqPolq87W+W8MDjaFPwAqfKsFm4="}]},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"directories":{},"maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-runtime_7.1.0_1786729735082_0.25223304860677676"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T17:14:06.732Z","modified":"2026-08-14T17:48:55.681Z","6.1.0":"2026-05-28T17:14:07.114Z","6.2.0":"2026-05-31T14:56:43.691Z","6.3.0":"2026-06-07T23:18:56.055Z","6.3.1":"2026-06-10T10:23:28.482Z","6.3.2":"2026-06-10T12:27:25.846Z","6.3.3":"2026-06-18T11:23:03.016Z","7.0.0":"2026-07-01T22:28:16.887Z","7.0.1":"2026-07-29T23:10:03.563Z","7.1.0":"2026-08-14T17:48:55.229Z"},"bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"author":{"name":"Topman","email":"okunlolatopman14@gmail.com","url":"https://github.com/OTopman"},"license":"MIT","homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/sdk-runtime.md","keywords":["axiomify","sdk","runtime","http-client","fetch","retry-engine","interceptors","circuit-breaker","offline-queue","typescript"],"repository":{"type":"git","url":"git+https://github.com/OTopman/axiomify.git","directory":"packages/sdk-runtime"},"description":"Runtime library for Axiomify-generated TypeScript SDKs — HTTP client, auth injection, retry engine, interceptors, caching, typed errors.","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"readme":"# @axiomify/sdk-runtime\n\n[![npm version](https://img.shields.io/npm/v/@axiomify/sdk-runtime.svg)](https://npmjs.com/package/@axiomify/sdk-runtime)\n[![codecov](https://codecov.io/github/otopman/axiomify/graph/badge.svg)](https://codecov.io/github/otopman/axiomify)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/OTopman/axiomify/badge)](https://securityscorecards.dev/viewer/?uri=github.com/OTopman/axiomify)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nThe `@axiomify/sdk-runtime` is the foundational HTTP networking library that powers all TypeScript clients generated by the `axiomify sdk generate` command.\n\nRather than bloating every single generated SDK file with complex logic for retries, interceptors, and authentication injection, the generated code outsources those responsibilities to this zero-dependency library.\n\n## Philosophy\n\n- **Zero Dependencies**: Uses the native `fetch` API. It does not wrap or bundle Axios, Got, or Node-Fetch. This keeps your client bundle size incredibly small.\n- **Pluggable**: Exposes an `InterceptorManager` to tap into the request lifecycle.\n- **Resilient**: Features an advanced `withRetry` engine with exponential backoff and jitter designed specifically for server-to-server and high-latency edge environments.\n\n## Installation\n\nNormally, you don't need to install this manually. If you used `axiomify sdk generate -t typescript`, this package is included as a dependency of the generated SDK.\n\nHowever, if you generated _only_ the types, you can install the runtime manually:\n\n```bash\nnpm install @axiomify/sdk-runtime\n```\n\n## Basic Usage\n\nThe runtime is initialized via the `BaseClient`. Your generated SDK will extend this class, but you will configure it using `ClientConfig`.\n\n```ts\nimport { MyGeneratedSDK } from './generated-sdks';\n\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  timeoutMs: 10000, // optional; when omitted, no request timeout is applied\n});\n\nconst users = await client.getUsers({ limit: 100 });\n```\n\n## Interceptors\n\nInterceptors allow you to mutate requests before they are sent, or intercept responses before they are returned to the caller.\n\n```ts\n// 1. Add a Request Interceptor\nclient.interceptors.useRequest(async (req) => {\n  req.headers = { ...req.headers, 'X-Request-Start': Date.now().toString() };\n  return req;\n});\n\n// 2. Add a Response Interceptor\nclient.interceptors.useResponse(async (res) => {\n  if (res.status === 401) {\n    console.error('Unauthorized! Redirecting to login...');\n  }\n  return res;\n});\n\n// 3. Add an Error Interceptor\nclient.interceptors.useError(async (err) => {\n  console.error('Request failed:', err);\n  return err;\n});\n```\n\nA request interceptor receives a `ClientRequest` whose `headers` is a plain `Record<string, string>` (not a `Headers` instance), so mutate it as an object.\n\n## Retry Engine\n\nNetwork requests fail. `@axiomify/sdk-runtime` handles retries automatically using exponential backoff and full jitter.\n\nBy default, the client retries **3 times**. The default retryable status codes are `[408, 409, 429, 500, 502, 503, 504]`, with a base delay of 500ms and a maximum delay of 5000ms.\n\nYou can override the retry config at initialization via `retryConfig` (all fields optional and merged over the defaults):\n\n```ts\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  retryConfig: {\n    maxRetries: 5, // Retry up to 5 times\n    baseDelayMs: 200, // Start with a 200ms delay\n    maxDelayMs: 5000, // Cap the delay at 5000ms\n    retryableStatusCodes: [429, 500, 502, 503, 504],\n  },\n});\n```\n\n## Authentication\n\nInjecting tokens into every request is tedious. Use an `AuthProvider` to automatically manage tokens. An `AuthProvider` is any object with a `getToken()` method that returns the full `Authorization` header value (e.g. `\"Bearer eyJ...\"`), or `null` to skip auth. The client calls `getToken()` before every request and sets the returned value as the `Authorization` header.\n\n### Static Tokens\n\nFor a fixed token, use `StaticTokenProvider`:\n\n```ts\nimport { StaticTokenProvider } from '@axiomify/sdk-runtime';\n\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  authProvider: new StaticTokenProvider('Bearer eyJ...'),\n});\n```\n\n### Custom Providers\n\nFor tokens sourced from memory, local storage, or a credential store, implement `AuthProvider` directly:\n\n```ts\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  authProvider: {\n    getToken: async () => {\n      const token = localStorage.getItem('access_token');\n      return token ? `Bearer ${token}` : null;\n    },\n  },\n});\n```\n\n### OAuth2 Client Credentials\n\n`OAuth2BearerProvider` performs the OAuth2 `client_credentials` flow for you, caching the token until it nears expiry and refreshing it automatically. It attaches the `Authorization: Bearer <token>` header before the request hits the network.\n\n```ts\nimport { OAuth2BearerProvider } from '@axiomify/sdk-runtime';\n\nconst authProvider = new OAuth2BearerProvider(\n  'https://auth.example.com/oauth/token', // token URL\n  'my-client-id',\n  'my-client-secret',\n  'read write', // optional scope\n);\n\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  authProvider,\n});\n```\n\n## Advanced: Custom Fetch Implementation\n\nBecause the runtime uses the native `fetch` API, you can supply your own `fetch` implementation (for example, a mock in tests or a polyfill) via the `fetch` option:\n\n```ts\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  fetch: myCustomFetch,\n});\n```\n\nStatic headers applied to every request can be supplied via the `headers` option:\n\n```ts\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  headers: { 'X-App-Version': '1.2.3' },\n});\n```\n\n## Circuit Breaker\n\nTo prevent cascading failures in high-volume microservices or distributed systems, the SDK client wraps all outgoing requests in a circuit breaker. By default, it operates with standard thresholds, but you can configure the behavior to suit your system:\n\n```ts\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  circuitBreakerConfig: {\n    failureThreshold: 5, // Number of failures before tripping the circuit\n    cooldownPeriodMs: 10000, // Time to wait (in ms) before attempting probe requests in HALF_OPEN state\n    halfOpenMaxProbeRequests: 3, // Max probe requests allowed in HALF_OPEN to check system health\n  },\n});\n```\n\nIf the breaker trips, the client throws a `CircuitBreakerError` directly, shielding downstream dependencies until the cooldown period expires.\n\n## LRU TTL Caching\n\nThe runtime provides an in-memory Least Recently Used (LRU) cache with Time-To-Live (TTL) expiration. If enabled, it automatically caches incoming `GET` responses and returns them for matching paths and query configurations:\n\n```ts\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  enableCache: true,\n  cacheTtlMs: 60000, // Cache GET responses for 60 seconds\n});\n```\n\nAdditionally, the runtime performs **Request Deduplication** for identical in-flight `GET` requests, resolving multiple concurrent requests to the same endpoint with a single network round-trip.\n\n## Telemetry Hooks\n\nProvide hooks to intercept and log request metadata, responses, or failures for auditing and APM integration:\n\n```ts\nconst client = new MyGeneratedSDK({\n  baseUrl: 'https://api.example.com/v1',\n  telemetry: {\n    onBeforeRequest: (req) => {\n      console.log(`Sending ${req.method} request to ${req.path}`);\n    },\n    onAfterResponse: (res) => {\n      console.log(`Received status ${res.status} from ${res.request.path}`);\n    },\n    onError: (err) => {\n      console.error(`Request failed: ${err.message}`);\n    },\n  },\n});\n```\n\n## Server-Sent Events (SSE) Client\n\nThe client runtime provides a dedicated `SseClient` to consume Server-Sent Events. It implements automatic reconnection logic with exponential backoff:\n\n```ts\nimport { SseClient } from '@axiomify/sdk-runtime';\n\nconst sse = new SseClient('https://api.example.com/v1/live-feed', {\n  headers: {\n    Authorization: 'Bearer token123',\n  },\n  maxRetries: 5,\n  baseDelayMs: 1000,\n  onOpen: () => console.log('SSE connection opened'),\n  onMessage: (event, data) => console.log(`Received event: ${event}`, data),\n  onError: (err) => console.error('SSE Error:', err),\n});\n\n// Start listening\nsse.connect();\n\n// Stop listening\nsse.disconnect();\n```\n\n## WebSocket Client\n\nFor full-duplex communication, use the `WebSocketClient` class. It manages standard browser/node WebSockets with customizable ping-pong heartbeats and auto-reconnection:\n\n```ts\nimport { WebSocketClient } from '@axiomify/sdk-runtime';\n\nconst ws = new WebSocketClient('wss://api.example.com/v1/chat', {\n  heartbeatIntervalMs: 30000, // Send ping every 30 seconds\n  maxRetries: 10,\n  onOpen: () => {\n    console.log('WS connection active');\n    ws.send(JSON.stringify({ event: 'join', channel: 'general' }));\n  },\n  onMessage: (data) => console.log('WS Message:', data),\n  onClose: () => console.log('WS closed'),\n});\n\nws.connect();\n```\n\n## Paginators\n\nThe `Paginator` handles cursor-based paginated endpoints seamlessly:\n\n```ts\nimport { Paginator } from '@axiomify/sdk-runtime';\n\nconst paginator = new Paginator<User, { cursor?: string }>({\n  fetchPage: async (params) => {\n    const response = await client.listUsers(params.cursor);\n    return {\n      items: response.users,\n      nextCursor: response.nextCursor,\n      hasMore: !!response.nextCursor,\n    };\n  },\n  initialParams: {},\n  cursorParamName: 'cursor',\n});\n\n// Fetch pages sequentially\nif (paginator.hasNext()) {\n  const users = await paginator.nextPage();\n  console.log('Fetched users:', users);\n}\n```\n\n## Client Offline Queuing\n\nFor mobile or edge clients, the `OfflineQueue` caches requests during offline periods and flushes them automatically when the connection returns:\n\n```ts\nimport { OfflineQueue } from '@axiomify/sdk-runtime';\n\nconst offlineQueue = new OfflineQueue();\n\n// In offline state, queue operations\nofflineQueue.enqueue({\n  path: '/users',\n  method: 'POST',\n  body: { name: 'Jane Doe', email: 'jane@example.com' },\n});\n\n// Flush automatically on navigator/window online event\n// or call manually with a custom processor:\nawait offlineQueue.flush(async (queuedRequest) => {\n  await client.request({\n    path: queuedRequest.path,\n    method: queuedRequest.method as any,\n    body: queuedRequest.body,\n  });\n});\n```\n\n## Environment Switcher\n\nManage target environments programmatically using the `EnvironmentSwitcher`:\n\n```ts\nimport { EnvironmentSwitcher } from '@axiomify/sdk-runtime';\n\nconst environments = {\n  production: 'https://api.example.com/v1',\n  staging: 'https://api-staging.example.com/v1',\n  development: 'http://localhost:3000',\n};\n\nconst switcher = new EnvironmentSwitcher(environments, 'development');\nconsole.log(switcher.getUrl()); // http://localhost:3000\n\nswitcher.setEnvironment('production');\nconsole.log(switcher.getUrl()); // https://api.example.com/v1\n```\n","readmeFilename":"README.md"}