@jrosadob/ms-http-retry-ng 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,19 +5,30 @@ import { retry, catchError } from 'rxjs/operators';
5
5
  const DEFAULT_BACKOFF_MULTIPLIER = 2;
6
6
  function createHttpRetryInterceptor(retryConfig, logger) {
7
7
  const config = toHttpRetryConfig(retryConfig);
8
+ let retriesPerformed = 0;
9
+ let failedWithoutRetry = false;
8
10
  return (req, next) => next(req).pipe(retry({
9
11
  count: config.maxRetries,
10
12
  delay: (error, retryAttempt) => {
11
13
  if (!isRetriableError(error, req, config)) {
14
+ failedWithoutRetry = true;
15
+ logger.log(`HTTP request ${req.method} ${req.url} is not retriable. ` +
16
+ `${error instanceof HttpErrorResponse ? `Status: ${error.status}, message: ${error.message}` : 'Network error'}`);
12
17
  return throwError(() => error);
13
18
  }
19
+ retriesPerformed = retryAttempt;
14
20
  const delayMs = computeBackoffDelay(config, retryAttempt);
15
21
  logger.log(`HTTP retry attempt ${retryAttempt} for ${req.method} ${req.url} after error: ${error instanceof HttpErrorResponse ? `${error.status} ${error.message}` : 'Network error'}. Retrying in ${delayMs}ms...`);
16
22
  return timer(delayMs);
17
23
  },
18
24
  }), catchError((error) => {
19
25
  if (error instanceof HttpErrorResponse) {
20
- logger.error(`HTTP request failed for ${req.method} ${req.url} after ${config.maxRetries + 1} attempts: ${error.status} ${error.message}`);
26
+ if (failedWithoutRetry || retriesPerformed === 0) {
27
+ logger.error(`HTTP request finished with failure for ${req.method} ${req.url} without retries: ${error.status} ${error.message}`);
28
+ }
29
+ else {
30
+ logger.error(`HTTP request finished with failure for ${req.method} ${req.url} after ${retriesPerformed} retries (${retriesPerformed + 1} attempts): ${error.status} ${error.message}`);
31
+ }
21
32
  }
22
33
  return throwError(() => error);
23
34
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"jrosadob-ms-http-retry-ng.mjs","sources":["../../../projects/ms-http-retry-ng/src/lib/http-retry.interceptor.ts","../../../projects/ms-http-retry-ng/src/public-api.ts","../../../projects/ms-http-retry-ng/src/jrosadob-ms-http-retry-ng.ts"],"sourcesContent":["import {\n HttpErrorResponse,\n HttpInterceptorFn,\n HttpRequest,\n withInterceptors,\n} from '@angular/common/http';\nimport { throwError, timer } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\n\nimport {\n HttpRetryConfig,\n HttpRetryLogger,\n} from './http-retry.types';\n\nconst DEFAULT_BACKOFF_MULTIPLIER = 2;\n\nexport function createHttpRetryInterceptor(\n retryConfig: HttpRetryConfig,\n logger: HttpRetryLogger,\n): HttpInterceptorFn {\n const config = toHttpRetryConfig(retryConfig);\n\n return (req, next) =>\n next(req).pipe(\n retry({\n count: config.maxRetries,\n delay: (error: unknown, retryAttempt: number) => {\n if (!isRetriableError(error, req, config)) {\n return throwError(() => error);\n }\n\n const delayMs = computeBackoffDelay(config, retryAttempt);\n logger.log(`HTTP retry attempt ${retryAttempt} for ${req.method} ${req.url} after error: ${error instanceof HttpErrorResponse ? `${error.status} ${error.message}` : 'Network error'}. Retrying in ${delayMs}ms...`);\n return timer(delayMs);\n },\n }),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n logger.error(`HTTP request failed for ${req.method} ${req.url} after ${config.maxRetries + 1} attempts: ${error.status} ${error.message}`); \n }\n\n return throwError(() => error);\n }),\n );\n}\n\nexport function withHttpRetry(config: HttpRetryConfig, logger: HttpRetryLogger) {\n return withInterceptors([createHttpRetryInterceptor(config, logger)]);\n}\n\nfunction toHttpRetryConfig(config: HttpRetryConfig): HttpRetryConfig {\n if (config.maxRetries < 0) {\n throw new Error('HttpRetryConfig.maxRetries must be greater than or equal to 0');\n }\n\n if (config.initialDelayMs < 0) {\n throw new Error('HttpRetryConfig.initialDelayMs must be greater than or equal to 0');\n }\n\n const backoffMultiplier = config.backoffMultiplier ?? DEFAULT_BACKOFF_MULTIPLIER;\n if (backoffMultiplier < 1) {\n throw new Error('HttpRetryConfig.backoffMultiplier must be greater than or equal to 1');\n }\n\n const maxDelayMs = config.maxDelayMs ?? Number.POSITIVE_INFINITY;\n if (maxDelayMs < 0) {\n throw new Error('HttpRetryConfig.maxDelayMs must be greater than or equal to 0');\n }\n\n return {\n maxRetries: config.maxRetries,\n initialDelayMs: config.initialDelayMs,\n retriableMethods: config.retriableMethods.map((method) => method.toUpperCase()),\n retriableStatusCodes: config.retriableStatusCodes ?? [],\n retryOnNetworkError: config.retryOnNetworkError ?? true,\n backoffMultiplier,\n maxDelayMs,\n };\n}\n\nfunction isRetriableError(\n error: unknown,\n request: HttpRequest<unknown>,\n config: HttpRetryConfig,\n): error is HttpErrorResponse {\n if (!(error instanceof HttpErrorResponse)) {\n return false;\n }\n\n if (error.status === 0) {\n return config.retryOnNetworkError;\n }\n\n if (!config.retriableMethods.includes(request.method.toUpperCase())) {\n return false;\n }\n\n return config.retriableStatusCodes.includes(error.status);\n}\n\nfunction computeBackoffDelay(config: HttpRetryConfig, attempt: number): number {\n const exponentialDelay = config.initialDelayMs * config.backoffMultiplier ** (attempt - 1);\n return Math.min(exponentialDelay, config.maxDelayMs);\n}\n","/*\n * Public API Surface of ms-http-retry-ng\n */\n\nexport * from './lib/http-retry.interceptor';\nexport * from './lib/http-retry.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jrosadob-ms-http-retry-ng.mjs","sources":["../../../projects/ms-http-retry-ng/src/lib/http-retry.interceptor.ts","../../../projects/ms-http-retry-ng/src/public-api.ts","../../../projects/ms-http-retry-ng/src/jrosadob-ms-http-retry-ng.ts"],"sourcesContent":["import {\n HttpErrorResponse,\n HttpInterceptorFn,\n HttpRequest,\n withInterceptors,\n} from '@angular/common/http';\nimport { throwError, timer } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\n\nimport {\n HttpRetryConfig,\n HttpRetryLogger,\n} from './http-retry.types';\n\nconst DEFAULT_BACKOFF_MULTIPLIER = 2;\n\nexport function createHttpRetryInterceptor(\n retryConfig: HttpRetryConfig,\n logger: HttpRetryLogger,\n): HttpInterceptorFn {\n const config = toHttpRetryConfig(retryConfig);\n let retriesPerformed = 0;\n let failedWithoutRetry = false;\n\n return (req, next) =>\n next(req).pipe(\n retry({\n count: config.maxRetries,\n delay: (error: unknown, retryAttempt: number) => {\n if (!isRetriableError(error, req, config)) {\n failedWithoutRetry = true;\n logger.log(\n `HTTP request ${req.method} ${req.url} is not retriable. ` +\n `${error instanceof HttpErrorResponse ? `Status: ${error.status}, message: ${error.message}` : 'Network error'}`,\n );\n return throwError(() => error);\n }\n\n retriesPerformed = retryAttempt;\n const delayMs = computeBackoffDelay(config, retryAttempt);\n logger.log(`HTTP retry attempt ${retryAttempt} for ${req.method} ${req.url} after error: ${error instanceof HttpErrorResponse ? `${error.status} ${error.message}` : 'Network error'}. Retrying in ${delayMs}ms...`);\n return timer(delayMs);\n },\n }),\n catchError((error: unknown) => {\n if (error instanceof HttpErrorResponse) {\n if (failedWithoutRetry || retriesPerformed === 0) {\n logger.error(\n `HTTP request finished with failure for ${req.method} ${req.url} without retries: ${error.status} ${error.message}`,\n );\n } else {\n logger.error(\n `HTTP request finished with failure for ${req.method} ${req.url} after ${retriesPerformed} retries (${retriesPerformed + 1} attempts): ${error.status} ${error.message}`,\n );\n }\n }\n\n return throwError(() => error);\n }),\n );\n}\n\nexport function withHttpRetry(config: HttpRetryConfig, logger: HttpRetryLogger) {\n return withInterceptors([createHttpRetryInterceptor(config, logger)]);\n}\n\nfunction toHttpRetryConfig(config: HttpRetryConfig): HttpRetryConfig {\n if (config.maxRetries < 0) {\n throw new Error('HttpRetryConfig.maxRetries must be greater than or equal to 0');\n }\n\n if (config.initialDelayMs < 0) {\n throw new Error('HttpRetryConfig.initialDelayMs must be greater than or equal to 0');\n }\n\n const backoffMultiplier = config.backoffMultiplier ?? DEFAULT_BACKOFF_MULTIPLIER;\n if (backoffMultiplier < 1) {\n throw new Error('HttpRetryConfig.backoffMultiplier must be greater than or equal to 1');\n }\n\n const maxDelayMs = config.maxDelayMs ?? Number.POSITIVE_INFINITY;\n if (maxDelayMs < 0) {\n throw new Error('HttpRetryConfig.maxDelayMs must be greater than or equal to 0');\n }\n\n return {\n maxRetries: config.maxRetries,\n initialDelayMs: config.initialDelayMs,\n retriableMethods: config.retriableMethods.map((method) => method.toUpperCase()),\n retriableStatusCodes: config.retriableStatusCodes ?? [],\n retryOnNetworkError: config.retryOnNetworkError ?? true,\n backoffMultiplier,\n maxDelayMs,\n };\n}\n\nfunction isRetriableError(\n error: unknown,\n request: HttpRequest<unknown>,\n config: HttpRetryConfig,\n): error is HttpErrorResponse {\n if (!(error instanceof HttpErrorResponse)) {\n return false;\n }\n\n if (error.status === 0) {\n return config.retryOnNetworkError;\n }\n\n if (!config.retriableMethods.includes(request.method.toUpperCase())) {\n return false;\n }\n\n return config.retriableStatusCodes.includes(error.status);\n}\n\nfunction computeBackoffDelay(config: HttpRetryConfig, attempt: number): number {\n const exponentialDelay = config.initialDelayMs * config.backoffMultiplier ** (attempt - 1);\n return Math.min(exponentialDelay, config.maxDelayMs);\n}\n","/*\n * Public API Surface of ms-http-retry-ng\n */\n\nexport * from './lib/http-retry.interceptor';\nexport * from './lib/http-retry.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAcA,MAAM,0BAA0B,GAAG,CAAC;AAE9B,SAAU,0BAA0B,CACxC,WAA4B,EAC5B,MAAuB,EAAA;AAEvB,IAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC;IAC7C,IAAI,gBAAgB,GAAG,CAAC;IACxB,IAAI,kBAAkB,GAAG,KAAK;AAE9B,IAAA,OAAO,CAAC,GAAG,EAAE,IAAI,KACf,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CACZ,KAAK,CAAC;QACJ,KAAK,EAAE,MAAM,CAAC,UAAU;AACxB,QAAA,KAAK,EAAE,CAAC,KAAc,EAAE,YAAoB,KAAI;YAC9C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE;gBACzC,kBAAkB,GAAG,IAAI;gBACzB,MAAM,CAAC,GAAG,CACR,CAAA,aAAA,EAAgB,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,CAAA,mBAAA,CAAqB;oBACxD,CAAA,EAAG,KAAK,YAAY,iBAAiB,GAAG,CAAA,QAAA,EAAW,KAAK,CAAC,MAAM,cAAc,KAAK,CAAC,OAAO,CAAA,CAAE,GAAG,eAAe,CAAA,CAAE,CACnH;AACD,gBAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;YAChC;YAEA,gBAAgB,GAAG,YAAY;YAC/B,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC;AACzD,YAAA,MAAM,CAAC,GAAG,CAAC,CAAA,mBAAA,EAAsB,YAAY,QAAQ,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,CAAA,cAAA,EAAiB,KAAK,YAAY,iBAAiB,GAAG,GAAG,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,OAAO,CAAA,CAAE,GAAG,eAAe,iBAAiB,OAAO,CAAA,KAAA,CAAO,CAAC;AACpN,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;AACF,KAAA,CAAC,EACF,UAAU,CAAC,CAAC,KAAc,KAAI;AAC5B,QAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACtC,YAAA,IAAI,kBAAkB,IAAI,gBAAgB,KAAK,CAAC,EAAE;gBAChD,MAAM,CAAC,KAAK,CACV,CAAA,uCAAA,EAA0C,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAA,kBAAA,EAAqB,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,OAAO,CAAA,CAAE,CACpH;YACH;iBAAO;gBACL,MAAM,CAAC,KAAK,CACV,CAAA,uCAAA,EAA0C,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,CAAA,OAAA,EAAU,gBAAgB,CAAA,UAAA,EAAa,gBAAgB,GAAG,CAAC,CAAA,YAAA,EAAe,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,OAAO,CAAA,CAAE,CACzK;YACH;QACF;AAEA,QAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;IAChC,CAAC,CAAC,CACH;AACL;AAEM,SAAU,aAAa,CAAC,MAAuB,EAAE,MAAuB,EAAA;IAC5E,OAAO,gBAAgB,CAAC,CAAC,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACvE;AAEA,SAAS,iBAAiB,CAAC,MAAuB,EAAA;AAChD,IAAA,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;IAClF;AAEA,IAAA,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC;IACtF;AAEA,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,0BAA0B;AAChF,IAAA,IAAI,iBAAiB,GAAG,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;IACzF;IAEA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,iBAAiB;AAChE,IAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AAClB,QAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;IAClF;IAEA,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;AACrC,QAAA,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;AAC/E,QAAA,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,EAAE;AACvD,QAAA,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,IAAI;QACvD,iBAAiB;QACjB,UAAU;KACX;AACH;AAEA,SAAS,gBAAgB,CACvB,KAAc,EACd,OAA6B,EAC7B,MAAuB,EAAA;AAEvB,IAAA,IAAI,EAAE,KAAK,YAAY,iBAAiB,CAAC,EAAE;AACzC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,MAAM,CAAC,mBAAmB;IACnC;AAEA,IAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE;AACnE,QAAA,OAAO,KAAK;IACd;IAEA,OAAO,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3D;AAEA,SAAS,mBAAmB,CAAC,MAAuB,EAAE,OAAe,EAAA;AACnE,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,KAAK,OAAO,GAAG,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC;AACtD;;ACvHA;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jrosadob/ms-http-retry-ng",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.0.5 || ^20.0.0 || ^21.0.0 || ^22.0.0",
6
6
  "@angular/core": "^19.0.5 || ^20.0.0 || ^21.0.0 || ^22.0.0"