From 8c9ac53b06de6441f79b9020b680cbcf36a409c6 Mon Sep 17 00:00:00 2001 From: ben Date: Thu, 23 Dec 2021 20:09:52 +0200 Subject: [PATCH 1/7] added better error stack trace --- lib/http.module.ts | 8 +++++--- package-lock.json | 10 ++++++++-- package.json | 1 + 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/http.module.ts b/lib/http.module.ts index 065d4b7..a26a86b 100644 --- a/lib/http.module.ts +++ b/lib/http.module.ts @@ -13,10 +13,12 @@ import { HttpModuleOptionsFactory, } from './interfaces'; import axiosRetry from 'axios-retry'; +import axiosBetterStacktrace from 'axios-better-stacktrace'; -const createAxiosRetry = (config: HttpModuleOptions) => { +const createAxiosInstance = (config: HttpModuleOptions) => { const axiosInstance = Axios.create(config); axiosRetry(axiosInstance, config); + axiosBetterStacktrace(axiosInstance); return axiosInstance; } @@ -37,7 +39,7 @@ export class HttpModule { providers: [ { provide: AXIOS_INSTANCE_TOKEN, - useValue: createAxiosRetry(config), + useValue: createAxiosInstance(config), }, { provide: HTTP_MODULE_ID, @@ -55,7 +57,7 @@ export class HttpModule { ...this.createAsyncProviders(options), { provide: AXIOS_INSTANCE_TOKEN, - useFactory: (config: HttpModuleOptions) => createAxiosRetry(config), + useFactory: (config: HttpModuleOptions) => createAxiosInstance(config), inject: [HTTP_MODULE_OPTIONS], }, { diff --git a/package-lock.json b/package-lock.json index 13792fd..008d0cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "nestjs-http-promise", - "version": "1.0.1", + "version": "1.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -486,7 +486,8 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", @@ -562,6 +563,11 @@ "follow-redirects": "^1.14.4" } }, + "axios-better-stacktrace": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/axios-better-stacktrace/-/axios-better-stacktrace-2.1.2.tgz", + "integrity": "sha512-/ikpK5W7UhCAdl9pQss1vpTfLtOQpbv8edRZ2a9wWSux2dnGmqjVHkFsMKnyllysxm046C016lqGjUgGNECcag==" + }, "axios-retry": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.2.4.tgz", diff --git a/package.json b/package.json index 925c662..61ef73d 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ }, "dependencies": { "axios": "~0.24.0", + "axios-better-stacktrace": "^2.1.2", "axios-retry": "^3.2.4" }, "devDependencies": { From 298af7a6389a86845fe52c00b8f5c531d398156a Mon Sep 17 00:00:00 2001 From: ben Date: Fri, 24 Dec 2021 00:10:32 +0200 Subject: [PATCH 2/7] updated README --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 89bcc9e..f19a168 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,10 @@ nestjs module that just doing little modification to the original and good **nes ## features - * axios - the most used package for http requests in npm. + * axios - the most used package for http requests in npm and the one used by nestjs official http library. + * better axios stack trace - axios has an [open issue]((https://github.com/axios/axios/issues/2387)) about improvement of their stack trace. + in this library there is a default interceptor that will intercept the stack trace and will add data to it. + * promise - the most used package for http requests in npm and the one used by nestjs official http library. * promise based - most of us using the current http module that uses observable which we don't use most of the time and in order to avoid it were just calling `.toPromise()` every http call. * retries - in many cases we will want to retry a failing http call. From b6d468c2801eaa62e22ed2947fe4a85a10cc1afc Mon Sep 17 00:00:00 2001 From: ben Date: Fri, 24 Dec 2021 00:11:56 +0200 Subject: [PATCH 3/7] fixed double brackets to one bracket in axios issue url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f19a168..3bf8a1f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ nestjs module that just doing little modification to the original and good **nes ## features * axios - the most used package for http requests in npm and the one used by nestjs official http library. - * better axios stack trace - axios has an [open issue]((https://github.com/axios/axios/issues/2387)) about improvement of their stack trace. + * better axios stack trace - axios has an [open issue](https://github.com/axios/axios/issues/2387) about improvement of their stack trace. in this library there is a default interceptor that will intercept the stack trace and will add data to it. * promise - the most used package for http requests in npm and the one used by nestjs official http library. * promise based - most of us using the current http module that uses observable which we don't use most of the time From f3e8f4186e46f84d02a5e772ce7a1d05f7c6ac1e Mon Sep 17 00:00:00 2001 From: ben Date: Fri, 24 Dec 2021 00:13:08 +0200 Subject: [PATCH 4/7] renamed createAxiosRetry() to createAxiosInstance() --- lib/http.module.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/http.module.ts b/lib/http.module.ts index e2d6ad1..d847236 100644 --- a/lib/http.module.ts +++ b/lib/http.module.ts @@ -15,7 +15,7 @@ import { import axiosRetry from 'axios-retry'; import axiosBetterStacktrace from 'axios-better-stacktrace'; -const createAxiosRetry = (config?: HttpModuleOptions) => { +const createAxiosInstance = (config?: HttpModuleOptions) => { const axiosInstance = Axios.create(config); axiosRetry(axiosInstance, config); axiosBetterStacktrace(axiosInstance); @@ -27,7 +27,7 @@ const createAxiosRetry = (config?: HttpModuleOptions) => { HttpService, { provide: AXIOS_INSTANCE_TOKEN, - useValue: createAxiosRetry(), + useValue: createAxiosInstance(), }, ], exports: [HttpService], From af3fe09510d4c6edf877878b3e9963d971475c4a Mon Sep 17 00:00:00 2001 From: ben Date: Fri, 24 Dec 2021 00:17:18 +0200 Subject: [PATCH 5/7] added flag for better stack trace that by default is true --- lib/http.module.ts | 4 +++- lib/interfaces/http-module.interface.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/http.module.ts b/lib/http.module.ts index d847236..f85ecdb 100644 --- a/lib/http.module.ts +++ b/lib/http.module.ts @@ -18,7 +18,9 @@ import axiosBetterStacktrace from 'axios-better-stacktrace'; const createAxiosInstance = (config?: HttpModuleOptions) => { const axiosInstance = Axios.create(config); axiosRetry(axiosInstance, config); - axiosBetterStacktrace(axiosInstance); + if(config.isBetterStackTraceEnabled === undefined || config.isBetterStackTraceEnabled) { + axiosBetterStacktrace(axiosInstance); + } return axiosInstance; } diff --git a/lib/interfaces/http-module.interface.ts b/lib/interfaces/http-module.interface.ts index 1eee6f4..3875a3f 100644 --- a/lib/interfaces/http-module.interface.ts +++ b/lib/interfaces/http-module.interface.ts @@ -2,7 +2,7 @@ import { ModuleMetadata, Provider, Type } from '@nestjs/common'; import { AxiosRequestConfig } from 'axios'; import { IAxiosRetryConfig } from 'axios-retry' -export type HttpModuleOptions = (AxiosRequestConfig & IAxiosRetryConfig); +export type HttpModuleOptions = (AxiosRequestConfig & IAxiosRetryConfig & { isBetterStackTraceEnabled?: boolean }); export interface HttpModuleOptionsFactory { createHttpOptions(): Promise | HttpModuleOptions; From 9e36419537b7d16797c832fb372cdba97ec2735b Mon Sep 17 00:00:00 2001 From: ben Date: Fri, 24 Dec 2021 00:18:51 +0200 Subject: [PATCH 6/7] removed redudant line from readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3bf8a1f..eb84f83 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ nestjs module that just doing little modification to the original and good **nes * axios - the most used package for http requests in npm and the one used by nestjs official http library. * better axios stack trace - axios has an [open issue](https://github.com/axios/axios/issues/2387) about improvement of their stack trace. in this library there is a default interceptor that will intercept the stack trace and will add data to it. - * promise - the most used package for http requests in npm and the one used by nestjs official http library. * promise based - most of us using the current http module that uses observable which we don't use most of the time and in order to avoid it were just calling `.toPromise()` every http call. * retries - in many cases we will want to retry a failing http call. From 8748be1bb8989e3f2274abbd6ddb8a05f7b0217c Mon Sep 17 00:00:00 2001 From: ben Date: Fri, 24 Dec 2021 00:21:11 +0200 Subject: [PATCH 7/7] updated in readme the default config --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eb84f83..2fdee61 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,8 @@ import { HttpModule } from 'nestjs-http-promise' ``` ### default configuration - just the default config of axios-retry : https://github.com/softonic/axios-retry#options + * default config of axios-retry : https://github.com/softonic/axios-retry#options + * better axios stack trace is added by default, you can turn it off by passing the **isBetterStackTraceEnabled** to false. ## async configuration When you need to pass module options asynchronously instead of statically, use the `registerAsync()` method **just like in nest httpModule**.