{"_id":"@denis_bruns/http-axios","_rev":"2-0af900901964aabfb55d9f25f3500cf3","name":"@denis_bruns/http-axios","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@denis_bruns/http-axios","version":"0.1.0","keywords":["clean-architecture","typescript"],"author":{"name":"denis_bruns@protonmail.com"},"license":"MIT","_id":"@denis_bruns/http-axios@0.1.0","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"a24678bb2beed11758217f5b0d541f9f33da6da9","tarball":"https://registry.npmjs.org/@denis_bruns/http-axios/-/http-axios-0.1.0.tgz","fileCount":10,"integrity":"sha512-NP5ze8GH0Cl7zVLE2PWBFrX7KKzXwhhqFK0fq8k1eHhKqvV9jvm2ju21NN28d+NYwbw8EYjazySBU2kAFV/SoA==","signatures":[{"sig":"MEUCIGSYwKEZpmZnBngSLvbKh5AKW1XCoxQtF6pPLw1GJe5MAiEAq0ONk2yswYqgyW6Oo6pAXqzaxphkURQ0lYZaRyVn0lU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24881},"main":"./dist/index.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"536e8f32c9a43de86032bc05c64a9b3bdcb98b96","scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"> **A robust Axios‑based HTTP client with middleware support**   > Built on top of RxJS and leveraging core types from `@denis_bruns/core`, this client allows you to compose, modify, and execute HTTP requests using a middleware chain. It integrates seamle","directories":{},"_nodeVersion":"18.20.5","dependencies":{"rxjs":"^7.8.1","axios":"^1.7.9","@denis_bruns/core":"^0.1.0","@denis_bruns/http-middleware":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/axios":"^0.9.36","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/http-axios_0.1.0_1737666251920_0.2679997929575859","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@denis_bruns/http-axios","version":"0.1.1","keywords":["clean-architecture","typescript"],"author":{"name":"denis_bruns@protonmail.com"},"license":"MIT","_id":"@denis_bruns/http-axios@0.1.1","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"470cbce0fcb996979a693292e8e1e94e31ed7851","tarball":"https://registry.npmjs.org/@denis_bruns/http-axios/-/http-axios-0.1.1.tgz","fileCount":10,"integrity":"sha512-tzEROVmBmehpf5IfMELRn7I5otkgzmCYlWL15aBvr6/aBIlegCKC8T4GIZ26XdQaoIoH78cOsUORuM2pQMdjyg==","signatures":[{"sig":"MEQCIGJMwXL5/vYd1LTHffobCbyN4hQZ2JyElscBPYP4C28IAiBv44xBxXih4ilmxom7EjzxOCNsjHiPWJTyb9TzNmFMAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24867},"main":"./dist/index.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"a917d62aef622d64d952f639046b26d57dc776e7","scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"> **A robust Axios‑based HTTP client with middleware support**   > Built on top of RxJS and leveraging core types from `@denis_bruns/core`, this client allows you to compose, modify, and execute HTTP requests using a middleware chain. It integrates seamle","directories":{},"_nodeVersion":"18.20.5","dependencies":{"rxjs":"^7.8.1","axios":"^1.7.9","@denis_bruns/core":"^0.1.0","@denis_bruns/http-middleware":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/axios":"^0.9.36","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/http-axios_0.1.1_1737666553514_0.6873096507268033","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@denis_bruns/http-axios","version":"0.1.2","main":"./dist/index.js","types":"./dist/types/index.d.ts","exports":{".":{"require":"./dist/index.js","import":"./dist/index.js","types":"./dist/types/index.d.ts"}},"scripts":{"build":"tsc && npm run postbuild","postbuild":"cp package.json README.md dist/","lint":"eslint src/lib --ext .ts","clean":"rimraf dist","prepublishOnly":"npm cache clean && npm run build","release":"bash release.sh patch","release:prerelease":"bash release.sh prerelease","release:minor":"bash release.sh minor","release:major":"bash release.sh major","release:patch":"bash release.sh patch","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:premajor":"bash release.sh premajor","jest":"jest","test":"jest src/tests --detectOpenHandles --forceExit"},"keywords":["clean-architecture","typescript"],"author":{"name":"denis_bruns@protonmail.com"},"license":"MIT","dependencies":{"@denis_bruns/core":"^0.1.0","@denis_bruns/http-middleware":"^0.1.0","axios":"^1.7.9","rxjs":"^7.8.1"},"devDependencies":{"@types/axios":"^0.9.36","@types/jest":"^29.5.14","axios-mock-adapter":"^2.1.0","jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.2"},"_id":"@denis_bruns/http-axios@0.1.2","gitHead":"13a597e047d520d43a78ce44e20efe74d8d2a3c3","description":"> **A robust Axios‑based HTTP client with middleware support**   > Built on top of RxJS and leveraging core types from `@denis_bruns/core`, this client allows you to compose, modify, and execute HTTP requests using a middleware chain. It integrates seamle","_nodeVersion":"18.20.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-dCR3aM2F+Zc42vU4hSyYDJKs4FZXH0GOiTvUMqBbmFEuSQONAsreMSFr7UK/KBEbcPKJ3sgNURxC1n9U0DhXHA==","shasum":"19c169d33634c9eb1a0d842d084970388c226a0a","tarball":"https://registry.npmjs.org/@denis_bruns/http-axios/-/http-axios-0.1.2.tgz","fileCount":10,"unpackedSize":24755,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDbXtUm+Stvx/xGdX10lTfQ0xqhvDBFNFjPWzKds9Eg5AIhAO7Fy6Wbrz1YFOlC7E/cTUY7+QDIlMAPk6trL2/vcOJF"}]},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"directories":{},"maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/http-axios_0.1.2_1737666753297_0.014207247830704928"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-23T21:04:11.820Z","modified":"2025-01-23T21:12:33.634Z","0.1.0":"2025-01-23T21:04:12.205Z","0.1.1":"2025-01-23T21:09:13.732Z","0.1.2":"2025-01-23T21:12:33.471Z"},"author":{"name":"denis_bruns@protonmail.com"},"license":"MIT","keywords":["clean-architecture","typescript"],"description":"> **A robust Axios‑based HTTP client with middleware support**   > Built on top of RxJS and leveraging core types from `@denis_bruns/core`, this client allows you to compose, modify, and execute HTTP requests using a middleware chain. It integrates seamle","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"readme":"# @denis_bruns/http-axios\n\n> **A robust Axios‑based HTTP client with middleware support**  \n> Built on top of RxJS and leveraging core types from `@denis_bruns/core`, this client allows you to compose, modify, and execute HTTP requests using a middleware chain. It integrates seamlessly with a variety of middleware—for example, injecting secret headers or environment variables—using a functional, composable approach.\n\n[![NPM Version](https://img.shields.io/npm/v/@denis_bruns/http-axios?style=flat-square&logo=npm)](https://www.npmjs.com/package/@denis_bruns/http-axios)  \n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org/)  \n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)  \n[![GitHub](https://img.shields.io/badge/GitHub-181717.svg?style=flat-square&logo=github)](https://github.com/h3llf1r33/http-axios)\n\n---\n\n## Overview\n\n`@denis_bruns/http-axios` is a TypeScript HTTP client built on top of [Axios](https://axios-http.com/) that:\n\n- **Leverages RxJS** for asynchronous request handling and composition.\n- **Supports a middleware pipeline**—via integration with `@denis_bruns/http-middleware`—to modify or extend requests before they are sent.\n- **Handles common HTTP methods** (GET, POST, PUT, PATCH, DELETE) with type-safe request and response options.\n- **Integrates seamlessly** with the core types defined in `@denis_bruns/core`, enabling a consistent developer experience in clean architecture projects.\n\n---\n\n## Key Features\n\n- **Middleware Support:**  \n  Chain middleware to modify request headers, query parameters, or other configurations. Middleware are composed using a factory that merges successive HTTP client configurations.\n\n- **RxJS Integration:**  \n  All request methods return an Observable. You can further compose these Observables with the full power of RxJS operators.\n\n- **Flexible Request Methods:**  \n  Provides helper methods for GET, POST, PUT, PATCH, and DELETE. Optionally, full Axios responses can be returned.\n\n- **Type-Safe Request Configuration:**  \n  Leverages types (from `@denis_bruns/core`) for request options, ensuring that your HTTP configurations remain robust and predictable.\n\n- **Seamless Axios Integration:**  \n  Uses Axios under the hood to perform actual HTTP requests while allowing for central configuration and middleware-driven modifications.\n\n---\n\n## Installation\n\nUsing **npm**:\n\n```bash\nnpm install @denis_bruns/http-axios\n```\n\nOr with **yarn**:\n\n```bash\nyarn add @denis_bruns/http-axios\n```\n\nMake sure to install peer dependencies if not already installed:\n\n```bash\nnpm install axios rxjs @denis_bruns/core\n```\n\n---\n\n## Basic Usage\n\nBelow is a basic example showing how to create an instance of the HTTP client, use middleware, and perform GET and POST requests.\n\n```ts\nimport { HttpClientAxios } from '@denis_bruns/http-axios';\nimport { HttpClientRequestOptions } from '@denis_bruns/core';\nimport { of } from 'rxjs';\nimport { lastValueFrom } from 'rxjs';\n\n// Example middleware that adds a custom header\nconst addCustomHeaderMiddleware = (config: HttpClientRequestOptions) => {\n  return of({\n    ...config,\n    headers: { ...config.headers, 'X-Custom-Header': 'custom-value' }\n  });\n};\n\n// Create an instance with a base URL and middleware chain\nconst client = new HttpClientAxios('https://api.example.com', [addCustomHeaderMiddleware]);\n\n// Making a GET request\nasync function fetchData() {\n  const data = await lastValueFrom(client.get<{ id: number; name: string }>('/test'));\n  console.log('GET response data:', data);\n}\n\n// Making a POST request with a body\nasync function postData() {\n  const payload = { name: 'John Doe' };\n  const data = await lastValueFrom(client.post<{ id: number; name: string }, typeof payload>('/user', payload));\n  console.log('POST response data:', data);\n}\n\nfetchData();\npostData();\n```\n\n### Explanation\n\n- **Middleware:**  \n  The example middleware `addCustomHeaderMiddleware` takes the initial HTTP client configuration and returns a new configuration object with an extra header.\n\n- **GET & POST Methods:**  \n  The client exposes helper methods corresponding to common HTTP verbs. You can also use the generic `request` method for more advanced scenarios.\n\n- **RxJS Observables:**  \n  All methods return an Observable, which you can compose and convert (here, via `lastValueFrom`) as needed.\n\n---\n\n## Advanced Configuration\n\n### Returning Full Axios Responses\n\nTo obtain the complete Axios response (not only the data), set the `returnFullResponse` flag to `true`:\n\n```ts\nconst fullResponse$ = client.request<{ id: number }, true>('GET', '/full-response', {\n  returnFullResponse: true\n});\n```\n\n### Middleware Composition\n\nMiddleware functions are composed using `createHttpClientMiddlewareFactory` from `@denis_bruns/http-middleware`. This allows you to run multiple transformations over the request configuration and merge the results. For details on creating custom middleware chains, please consult the documentation in the `http-middleware` package.\n\n---\n\n## Related Packages\n\n- **@denis_bruns/core**  \n  [![NPM](https://img.shields.io/npm/v/@denis_bruns/core?style=flat-square&logo=npm)](https://www.npmjs.com/package/@denis_bruns/core)  \n  [![GitHub](https://img.shields.io/badge/GitHub-181717.svg?style=flat-square&logo=github)](https://github.com/h3llf1r33/core)  \n  *Provides the core interfaces and types used throughout the ecosystem.*\n\n- **@denis_bruns/http-middleware**  \n  [![NPM](https://img.shields.io/npm/v/@denis_bruns/http-middleware?style=flat-square&logo=npm)](https://www.npmjs.com/package/@denis_bruns/http-middleware)\n- [![GitHub](https://img.shields.io/badge/GitHub-181717.svg?style=flat-square&logo=github)](https://github.com/h3llf1r33/http-middleware)\n  *Offers middleware utilities for HTTP clients and composes them into a single request configuration.*\n\n\n---\n\n## Contributing\n\nContributions, bug reports, or feature requests are always welcome!  \nFeel free to open an issue or submit a pull request on [GitHub](https://github.com/h3llf1r33/http-axios).\n\n---\n\n## License\n\nThis project is [MIT licensed](LICENSE).\n\n---\n\n<p align=\"center\">\n  Built with ❤️ by <a href=\"https://github.com/h3llf1r33\">h3llf1r33</a>\n</p>","readmeFilename":"README.md"}