typescript-retry-decorator 2.0.2 → 2.0.6

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.
package/.eslintrc.js CHANGED
@@ -1,4 +1,5 @@
1
1
  module.exports = {
2
+ root: true,
2
3
  parser: '@typescript-eslint/parser', // Specifies the ESLint parser
3
4
  plugins: ["@typescript-eslint"],
4
5
  extends: [
@@ -13,7 +13,7 @@ jobs:
13
13
 
14
14
  strategy:
15
15
  matrix:
16
- node-version: [12.x, 14.x]
16
+ node-version: [14.x, 16.x]
17
17
 
18
18
  steps:
19
19
  - uses: actions/checkout@v2
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-latest
13
13
  strategy:
14
14
  matrix:
15
- node-version: [12.x]
15
+ node-version: [14.x]
16
16
  steps:
17
17
  - uses: actions/checkout@v2
18
18
  - uses: actions/setup-node@v2
package/dist/example.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":""}
package/dist/example.js CHANGED
@@ -59,19 +59,19 @@ class RetryExample {
59
59
  }
60
60
  }
61
61
  __decorate([
62
- retry_decorator_1.Retryable({ maxAttempts: 3 }),
62
+ (0, retry_decorator_1.Retryable)({ maxAttempts: 3 }),
63
63
  __metadata("design:type", Function),
64
64
  __metadata("design:paramtypes", []),
65
65
  __metadata("design:returntype", Promise)
66
66
  ], RetryExample, "noDelayRetry", null);
67
67
  __decorate([
68
- retry_decorator_1.Retryable({ maxAttempts: 3, value: [SyntaxError, ReferenceError] }),
68
+ (0, retry_decorator_1.Retryable)({ maxAttempts: 3, value: [SyntaxError, ReferenceError] }),
69
69
  __metadata("design:type", Function),
70
70
  __metadata("design:paramtypes", []),
71
71
  __metadata("design:returntype", Promise)
72
72
  ], RetryExample, "noDelaySpecificRetry", null);
73
73
  __decorate([
74
- retry_decorator_1.Retryable({
74
+ (0, retry_decorator_1.Retryable)({
75
75
  maxAttempts: 3,
76
76
  backOff: 1000,
77
77
  doRetry: (e) => {
@@ -83,7 +83,7 @@ __decorate([
83
83
  __metadata("design:returntype", Promise)
84
84
  ], RetryExample, "doRetry", null);
85
85
  __decorate([
86
- retry_decorator_1.Retryable({
86
+ (0, retry_decorator_1.Retryable)({
87
87
  maxAttempts: 3,
88
88
  backOff: 1000,
89
89
  doRetry: (e) => {
@@ -95,7 +95,7 @@ __decorate([
95
95
  __metadata("design:returntype", Promise)
96
96
  ], RetryExample, "doNotRetry", null);
97
97
  __decorate([
98
- retry_decorator_1.Retryable({
98
+ (0, retry_decorator_1.Retryable)({
99
99
  maxAttempts: 3,
100
100
  backOffPolicy: retry_decorator_1.BackOffPolicy.FixedBackOffPolicy,
101
101
  backOff: 1000,
@@ -105,7 +105,7 @@ __decorate([
105
105
  __metadata("design:returntype", Promise)
106
106
  ], RetryExample, "fixedBackOffRetry", null);
107
107
  __decorate([
108
- retry_decorator_1.Retryable({
108
+ (0, retry_decorator_1.Retryable)({
109
109
  maxAttempts: 3,
110
110
  backOffPolicy: retry_decorator_1.BackOffPolicy.ExponentialBackOffPolicy,
111
111
  backOff: 1000,
@@ -1 +1 @@
1
- {"version":3,"file":"example.js","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- export { Retryable, RetryOptions, BackOffPolicy } from './retry.decorator';
1
+ export * from './retry.decorator';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,18 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BackOffPolicy = exports.Retryable = void 0;
4
- var retry_decorator_1 = require("./retry.decorator");
5
- Object.defineProperty(exports, "Retryable", { enumerable: true, get: function () { return retry_decorator_1.Retryable; } });
6
- Object.defineProperty(exports, "BackOffPolicy", { enumerable: true, get: function () { return retry_decorator_1.BackOffPolicy; } });
17
+ __exportStar(require("./retry.decorator"), exports);
7
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2E;AAAlE,4GAAA,SAAS,OAAA;AAAgB,gHAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @param options the 'RetryOptions'
5
5
  */
6
- export declare function Retryable(options: RetryOptions): Function;
6
+ export declare function Retryable(options: RetryOptions): DecoratorFunction;
7
7
  export declare class MaxAttemptsError extends Error {
8
8
  code: string;
9
9
  }
@@ -22,3 +22,5 @@ export declare enum BackOffPolicy {
22
22
  FixedBackOffPolicy = "FixedBackOffPolicy",
23
23
  ExponentialBackOffPolicy = "ExponentialBackOffPolicy"
24
24
  }
25
+ export declare type DecoratorFunction = (target: Record<string, any>, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
26
+ //# sourceMappingURL=retry.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.decorator.d.ts","sourceRoot":"","sources":["../src/retry.decorator.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB,CAyElE;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,IAAI,SAAS;CAMd;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,oBAAY,aAAa;IACvB,kBAAkB,uBAAuB;IACzC,wBAAwB,6BAA6B;CACtD;AAED,oBAAY,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,uBAAuB,CAAC,GAAG,CAAC,CAAC"}
@@ -56,12 +56,17 @@ function Retryable(options) {
56
56
  catch (e) {
57
57
  if (--maxAttempts < 0) {
58
58
  (e === null || e === void 0 ? void 0 : e.message) && console.error(e.message);
59
- throw new MaxAttemptsError(e === null || e === void 0 ? void 0 : e.message);
59
+ const maxAttemptsErrorInstance = new MaxAttemptsError(e === null || e === void 0 ? void 0 : e.message);
60
+ // Add the existing error stack if present
61
+ if (e === null || e === void 0 ? void 0 : e.stack) {
62
+ maxAttemptsErrorInstance.stack = e.stack;
63
+ }
64
+ throw maxAttemptsErrorInstance;
60
65
  }
61
66
  if (!canRetry(e)) {
62
67
  throw e;
63
68
  }
64
- backOff && (yield utils_1.sleep(backOff));
69
+ backOff && (yield (0, utils_1.sleep)(backOff));
65
70
  if (options.backOffPolicy === BackOffPolicy.ExponentialBackOffPolicy) {
66
71
  const newBackOff = backOff * options.exponentialOption.multiplier;
67
72
  backOff = newBackOff > options.exponentialOption.maxInterval ? options.exponentialOption.maxInterval : newBackOff;
@@ -1 +1 @@
1
- {"version":3,"file":"retry.decorator.js","sourceRoot":"","sources":["../src/retry.decorator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAgC;AAEhC;;;;GAIG;AACH,SAAgB,SAAS,CAAC,OAAqB;IAC7C;;;;;;;;OAQG;IACH,OAAO,UAAS,MAA2B,EAAE,WAAmB,EAAE,UAAwC;QACxG,MAAM,UAAU,GAAa,UAAU,CAAC,KAAK,CAAC;QAC9C,iDAAiD;QACjD,IAAI,OAAO,CAAC,aAAa,KAAK,aAAa,CAAC,wBAAwB,EAAE;YACpE,kCAAkC,EAAE,CAAC;SACtC;QACD,UAAU,CAAC,KAAK,GAAG,UAAe,GAAG,IAAW;;gBAC9C,IAAI;oBACF,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC/F;gBAAC,OAAO,CAAC,EAAE;oBACV,IAAI,CAAC,YAAY,gBAAgB,EAAE;wBACjC,MAAM,SAAS,GAAG,eAAe,WAAW,SAAS,OAAO,CAAC,WAAW,SAAS,CAAC;wBAClF,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;qBACjF;oBACD,MAAM,CAAC,CAAC;iBACT;YACH,CAAC;SAAA,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,SAAe,UAAU,CAAC,EAAY,EAAE,IAAW,EAAE,WAAmB,EAAE,OAAgB;;YACxF,IAAI;gBACF,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACnC;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE;oBACrB,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,KAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACvC,MAAM,IAAI,gBAAgB,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,CAAC,CAAC;iBACxC;gBACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAChB,MAAM,CAAC,CAAC;iBACT;gBACD,OAAO,IAAI,CAAC,MAAM,aAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClC,IAAI,OAAO,CAAC,aAAa,KAAK,aAAa,CAAC,wBAAwB,EAAE;oBACpE,MAAM,UAAU,GAAW,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBAC1E,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;iBACnH;gBACD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;aACjE;QACH,CAAC;KAAA;IAED,SAAS,QAAQ,CAAC,CAAQ;;QACxB,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QACD,IAAI,OAAA,OAAO,CAAC,KAAK,0CAAE,MAAM,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,YAAY,SAAS,CAAC,EAAE;YACrF,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,kCAAkC;QACzC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,iBAAiB,iBACpB,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,EACpC,OAAO,CAAC,iBAAiB,CAC7B,CAAC;IACJ,CAAC;AACH,CAAC;AAnED,8BAmEC;AAED,MAAa,gBAAiB,SAAQ,KAAK;IAA3C;;QACE,SAAI,GAAG,KAAK,CAAA;QACZ;;;;cAIM;IACR,CAAC;CAAA;AAPD,4CAOC;AAWD,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,0DAAyC,CAAA;IACzC,sEAAqD,CAAA;AACvD,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB"}
1
+ {"version":3,"file":"retry.decorator.js","sourceRoot":"","sources":["../src/retry.decorator.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=retry.decorator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.decorator.test.d.ts","sourceRoot":"","sources":["../src/retry.decorator.test.ts"],"names":[],"mappings":""}
@@ -60,19 +60,19 @@ class TestClass {
60
60
  }
61
61
  }
62
62
  __decorate([
63
- retry_decorator_1.Retryable({ maxAttempts: 2 }),
63
+ (0, retry_decorator_1.Retryable)({ maxAttempts: 2 }),
64
64
  __metadata("design:type", Function),
65
65
  __metadata("design:paramtypes", []),
66
66
  __metadata("design:returntype", Promise)
67
67
  ], TestClass.prototype, "testMethod", null);
68
68
  __decorate([
69
- retry_decorator_1.Retryable({ maxAttempts: 2, value: [SyntaxError, ReferenceError] }),
69
+ (0, retry_decorator_1.Retryable)({ maxAttempts: 2, value: [SyntaxError, ReferenceError] }),
70
70
  __metadata("design:type", Function),
71
71
  __metadata("design:paramtypes", []),
72
72
  __metadata("design:returntype", Promise)
73
73
  ], TestClass.prototype, "testMethodWithException", null);
74
74
  __decorate([
75
- retry_decorator_1.Retryable({
75
+ (0, retry_decorator_1.Retryable)({
76
76
  maxAttempts: 3,
77
77
  doRetry: (e) => {
78
78
  return e.message === 'Error: 429';
@@ -83,7 +83,7 @@ __decorate([
83
83
  __metadata("design:returntype", Promise)
84
84
  ], TestClass.prototype, "testDoRetry", null);
85
85
  __decorate([
86
- retry_decorator_1.Retryable({
86
+ (0, retry_decorator_1.Retryable)({
87
87
  maxAttempts: 3,
88
88
  backOffPolicy: retry_decorator_1.BackOffPolicy.FixedBackOffPolicy,
89
89
  backOff: 1000,
@@ -93,7 +93,7 @@ __decorate([
93
93
  __metadata("design:returntype", Promise)
94
94
  ], TestClass.prototype, "fixedBackOffRetry", null);
95
95
  __decorate([
96
- retry_decorator_1.Retryable({
96
+ (0, retry_decorator_1.Retryable)({
97
97
  maxAttempts: 3,
98
98
  backOffPolicy: retry_decorator_1.BackOffPolicy.ExponentialBackOffPolicy,
99
99
  exponentialOption: { maxInterval: 4000, multiplier: 3 },
@@ -102,6 +102,23 @@ __decorate([
102
102
  __metadata("design:paramtypes", []),
103
103
  __metadata("design:returntype", Promise)
104
104
  ], TestClass.prototype, "exponentialBackOffRetry", null);
105
+ describe('Capture original error data Test', () => {
106
+ test('exceed max retry', () => __awaiter(void 0, void 0, void 0, function* () {
107
+ const testClass = new TestClass();
108
+ const originalStackTrace = 'foo';
109
+ const errorMsg = 'rejected';
110
+ const unexpectedError = new Error(errorMsg);
111
+ unexpectedError.stack = originalStackTrace;
112
+ const calledSpy = jest.spyOn(testClass, 'called');
113
+ calledSpy.mockRejectedValue(unexpectedError);
114
+ try {
115
+ yield testClass.testMethod();
116
+ }
117
+ catch (e) {
118
+ expect(e.stack).toEqual(originalStackTrace);
119
+ }
120
+ }));
121
+ });
105
122
  describe('Retry Test', () => {
106
123
  let testClass;
107
124
  beforeEach(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"retry.decorator.test.js","sourceRoot":"","sources":["../src/retry.decorator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.decorator.test.js","sourceRoot":"","sources":["../src/retry.decorator.test.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1 +1,2 @@
1
- export declare const sleep: Function;
1
+ export declare const sleep: (ms?: number) => void;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAuE,CAAC"}
package/dist/utils.js CHANGED
@@ -2,5 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sleep = void 0;
4
4
  // wrap the native setTimeout with Promise so it can be used with `await`.
5
- exports.sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
5
+ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
6
+ exports.sleep = sleep;
6
7
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,0EAA0E;AAC7D,QAAA,KAAK,GAAa,CAAC,EAAW,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,0EAA0E;AACnE,MAAM,KAAK,GAA0B,CAAC,EAAW,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAAhG,QAAA,KAAK,SAA2F"}
package/jest.config.js CHANGED
@@ -13,4 +13,5 @@ module.exports = {
13
13
  collectCoverage: true,
14
14
  'coverageReporters': ['json', 'html'],
15
15
  verbose: true,
16
+ testTimeout: 30000,
16
17
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typescript-retry-decorator",
3
- "version": "2.0.2",
3
+ "version": "2.0.6",
4
4
  "description": "A simple retry decorator for typescript with no dependency.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,7 +9,7 @@
9
9
  "test": "jest",
10
10
  "example": "ts-node src/example.ts",
11
11
  "lint": "eslint --ext .ts src/",
12
- "build": "tsc -d -p ."
12
+ "build": "tsc --declaration --project ."
13
13
  },
14
14
  "repository": {
15
15
  "type": "git",
@@ -27,15 +27,15 @@
27
27
  },
28
28
  "homepage": "https://github.com/vcfvct/typescript-retry-decorator#readme",
29
29
  "devDependencies": {
30
- "@types/jest": "^26.0.20",
31
- "@types/node": "^14.14.6",
32
- "@typescript-eslint/eslint-plugin": "^2.10.0",
33
- "@typescript-eslint/parser": "^2.10.0",
34
- "eslint": "^6.7.2",
30
+ "@types/jest": "^28.1.1",
31
+ "@types/node": "^17.0.41",
32
+ "@typescript-eslint/eslint-plugin": "^5.27.1",
33
+ "@typescript-eslint/parser": "^5.27.1",
34
+ "eslint": "^8.17.0",
35
35
  "eslint-config-ts-vcfvct": "^1.0.0",
36
- "jest": "^26.6.3",
37
- "ts-jest": "^26.4.4",
38
- "ts-node": "^9.0.0",
39
- "typescript": "^4.0.0"
36
+ "jest": "^28.1.1",
37
+ "ts-jest": "^28.0.4",
38
+ "ts-node": "^10.8.1",
39
+ "typescript": "^4.7.3"
40
40
  }
41
41
  }
package/src/index.ts CHANGED
@@ -1 +1 @@
1
- export { Retryable, RetryOptions, BackOffPolicy } from './retry.decorator';
1
+ export * from './retry.decorator';
@@ -53,6 +53,27 @@ class TestClass {
53
53
  }
54
54
  }
55
55
 
56
+ describe('Capture original error data Test', () => {
57
+ test('exceed max retry', async () => {
58
+ const testClass = new TestClass();
59
+
60
+ const originalStackTrace = 'foo';
61
+ const errorMsg = 'rejected';
62
+
63
+ const unexpectedError = new Error(errorMsg);
64
+ unexpectedError.stack = originalStackTrace;
65
+
66
+ const calledSpy = jest.spyOn(testClass, 'called');
67
+
68
+ calledSpy.mockRejectedValue(unexpectedError);
69
+ try {
70
+ await testClass.testMethod();
71
+ } catch (e) {
72
+ expect(e.stack).toEqual(originalStackTrace);
73
+ }
74
+ });
75
+ });
76
+
56
77
 
57
78
  describe('Retry Test', () => {
58
79
  let testClass: TestClass;
@@ -5,7 +5,7 @@ import { sleep } from './utils';
5
5
  *
6
6
  * @param options the 'RetryOptions'
7
7
  */
8
- export function Retryable(options: RetryOptions): Function {
8
+ export function Retryable(options: RetryOptions): DecoratorFunction {
9
9
  /**
10
10
  * target: The prototype of the class (Object)
11
11
  * propertyKey: The name of the method (string | symbol).
@@ -16,7 +16,7 @@ export function Retryable(options: RetryOptions): Function {
16
16
  *
17
17
  */
18
18
  return function(target: Record<string, any>, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) {
19
- const originalFn: Function = descriptor.value;
19
+ const originalFn = descriptor.value;
20
20
  // set default value for ExponentialBackOffPolicy
21
21
  if (options.backOffPolicy === BackOffPolicy.ExponentialBackOffPolicy) {
22
22
  setExponentialBackOffPolicyDefault();
@@ -35,13 +35,19 @@ export function Retryable(options: RetryOptions): Function {
35
35
  return descriptor;
36
36
  };
37
37
 
38
- async function retryAsync(fn: Function, args: any[], maxAttempts: number, backOff?: number): Promise<any> {
38
+ async function retryAsync(fn: () => any, args: any[], maxAttempts: number, backOff?: number): Promise<any> {
39
39
  try {
40
40
  return await fn.apply(this, args);
41
41
  } catch (e) {
42
42
  if (--maxAttempts < 0) {
43
43
  e?.message && console.error(e.message);
44
- throw new MaxAttemptsError(e?.message);
44
+ const maxAttemptsErrorInstance = new MaxAttemptsError(e?.message);
45
+ // Add the existing error stack if present
46
+ if(e?.stack) {
47
+ maxAttemptsErrorInstance.stack = e.stack;
48
+ }
49
+
50
+ throw maxAttemptsErrorInstance;
45
51
  }
46
52
  if (!canRetry(e)) {
47
53
  throw e;
@@ -75,7 +81,7 @@ export function Retryable(options: RetryOptions): Function {
75
81
  }
76
82
 
77
83
  export class MaxAttemptsError extends Error {
78
- code = '429'
84
+ code = '429';
79
85
  /* if target is ES5, need the 'new.target.prototype'
80
86
  constructor(msg?: string) {
81
87
  super(msg)
@@ -97,3 +103,5 @@ export enum BackOffPolicy {
97
103
  ExponentialBackOffPolicy = 'ExponentialBackOffPolicy'
98
104
  }
99
105
 
106
+ export type DecoratorFunction = (target: Record<string, any>, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
107
+
package/src/utils.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // wrap the native setTimeout with Promise so it can be used with `await`.
2
- export const sleep: Function = (ms?: number) => new Promise(resolve => setTimeout(resolve, ms));
2
+ export const sleep: (ms?: number) => void = (ms?: number) => new Promise(resolve => setTimeout(resolve, ms));
package/tsconfig.json CHANGED
@@ -8,6 +8,7 @@
8
8
  "emitDecoratorMetadata": true,
9
9
  "experimentalDecorators": true,
10
10
  "sourceMap": true,
11
+ "declarationMap": true,
11
12
  "skipLibCheck": true,
12
13
  "lib": [
13
14
  "es2017",
@@ -28,4 +29,4 @@
28
29
  "node_modules",
29
30
  "dist",
30
31
  ]
31
- }
32
+ }