@emmvish/stable-request 1.4.2 → 1.5.1

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.
Files changed (58) hide show
  1. package/dist/constants/index.d.ts.map +1 -1
  2. package/dist/constants/index.js +4 -1
  3. package/dist/constants/index.js.map +1 -1
  4. package/dist/core/stable-api-gateway.d.ts.map +1 -1
  5. package/dist/core/stable-api-gateway.js +4 -1
  6. package/dist/core/stable-api-gateway.js.map +1 -1
  7. package/dist/core/stable-request.d.ts.map +1 -1
  8. package/dist/core/stable-request.js +8 -2
  9. package/dist/core/stable-request.js.map +1 -1
  10. package/dist/core/stable-workflow.d.ts.map +1 -1
  11. package/dist/core/stable-workflow.js +13 -5
  12. package/dist/core/stable-workflow.js.map +1 -1
  13. package/dist/enums/index.d.ts +5 -0
  14. package/dist/enums/index.d.ts.map +1 -1
  15. package/dist/enums/index.js +6 -0
  16. package/dist/enums/index.js.map +1 -1
  17. package/dist/index.d.ts +3 -3
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/types/index.d.ts +42 -5
  22. package/dist/types/index.d.ts.map +1 -1
  23. package/dist/utilities/cache-manager.d.ts +28 -0
  24. package/dist/utilities/cache-manager.d.ts.map +1 -0
  25. package/dist/utilities/cache-manager.js +177 -0
  26. package/dist/utilities/cache-manager.js.map +1 -0
  27. package/dist/utilities/circuit-breaker.d.ts +38 -0
  28. package/dist/utilities/circuit-breaker.d.ts.map +1 -0
  29. package/dist/utilities/circuit-breaker.js +148 -0
  30. package/dist/utilities/circuit-breaker.js.map +1 -0
  31. package/dist/utilities/concurrency-limiter.d.ts +11 -0
  32. package/dist/utilities/concurrency-limiter.d.ts.map +1 -0
  33. package/dist/utilities/concurrency-limiter.js +38 -0
  34. package/dist/utilities/concurrency-limiter.js.map +1 -0
  35. package/dist/utilities/execute-concurrently.d.ts.map +1 -1
  36. package/dist/utilities/execute-concurrently.js +63 -8
  37. package/dist/utilities/execute-concurrently.js.map +1 -1
  38. package/dist/utilities/execute-phase.d.ts.map +1 -1
  39. package/dist/utilities/execute-phase.js +9 -0
  40. package/dist/utilities/execute-phase.js.map +1 -1
  41. package/dist/utilities/execute-sequentially.d.ts.map +1 -1
  42. package/dist/utilities/execute-sequentially.js +33 -7
  43. package/dist/utilities/execute-sequentially.js.map +1 -1
  44. package/dist/utilities/index.d.ts +4 -0
  45. package/dist/utilities/index.d.ts.map +1 -1
  46. package/dist/utilities/index.js +4 -0
  47. package/dist/utilities/index.js.map +1 -1
  48. package/dist/utilities/prepare-api-request-options.d.ts.map +1 -1
  49. package/dist/utilities/prepare-api-request-options.js.map +1 -1
  50. package/dist/utilities/rate-limiter.d.ts +21 -0
  51. package/dist/utilities/rate-limiter.d.ts.map +1 -0
  52. package/dist/utilities/rate-limiter.js +72 -0
  53. package/dist/utilities/rate-limiter.js.map +1 -0
  54. package/dist/utilities/req-fn.d.ts +2 -2
  55. package/dist/utilities/req-fn.d.ts.map +1 -1
  56. package/dist/utilities/req-fn.js +32 -6
  57. package/dist/utilities/req-fn.js.map +1 -1
  58. package/package.json +1 -1
@@ -1,30 +1,56 @@
1
1
  import { stableRequest } from "../core/index.js";
2
2
  import { prepareApiRequestData } from "./prepare-api-request-data.js";
3
3
  import { prepareApiRequestOptions } from './prepare-api-request-options.js';
4
+ import { CircuitBreaker, CircuitBreakerOpenError } from "./circuit-breaker.js";
4
5
  export async function executeSequentially(requests = [], requestExecutionOptions = {}) {
5
6
  const responses = [];
6
- for (const req of requests) {
7
+ // Support both config and instance
8
+ const circuitBreaker = requestExecutionOptions.circuitBreaker
9
+ ? (requestExecutionOptions.circuitBreaker instanceof CircuitBreaker
10
+ ? requestExecutionOptions.circuitBreaker
11
+ : new CircuitBreaker(requestExecutionOptions.circuitBreaker))
12
+ : null;
13
+ for (let i = 0; i < requests.length; i++) {
14
+ const req = requests[i];
7
15
  try {
16
+ if (circuitBreaker) {
17
+ const canExecute = await circuitBreaker.canExecute();
18
+ if (!canExecute) {
19
+ throw new CircuitBreakerOpenError(`Circuit breaker is ${circuitBreaker.getState().state}. Request blocked.`);
20
+ }
21
+ }
8
22
  const finalRequestOptions = {
9
23
  reqData: prepareApiRequestData(req, requestExecutionOptions),
10
24
  ...prepareApiRequestOptions(req, requestExecutionOptions),
11
25
  commonBuffer: requestExecutionOptions.sharedBuffer ?? req.requestOptions.commonBuffer
12
26
  };
13
- const res = await stableRequest(finalRequestOptions);
27
+ const stableReq = await stableRequest(finalRequestOptions);
28
+ if (circuitBreaker) {
29
+ circuitBreaker.recordSuccess();
30
+ }
31
+ const isSuccess = stableReq !== false;
14
32
  responses.push({
15
33
  requestId: req.id,
16
34
  ...(req.groupId && { groupId: req.groupId }),
17
- success: res ? true : false,
18
- ...(res && { data: res }),
19
- ...(!res && { error: 'Request was unsuccessful, but the error was analyzed successfully!' })
35
+ success: isSuccess,
36
+ ...(isSuccess && typeof stableReq !== 'boolean' && { data: stableReq }),
37
+ ...(!isSuccess && {
38
+ error: 'Request was unsuccessful, but the error was analyzed successfully!'
39
+ })
20
40
  });
21
41
  }
22
- catch (e) {
42
+ catch (error) {
43
+ if (circuitBreaker && !(error instanceof CircuitBreakerOpenError)) {
44
+ circuitBreaker.recordFailure();
45
+ }
46
+ const isCircuitBreakerError = error instanceof CircuitBreakerOpenError;
23
47
  responses.push({
24
48
  requestId: req.id,
25
49
  ...(req.groupId && { groupId: req.groupId }),
26
50
  success: false,
27
- error: e?.message || 'An error occurred! Error description is unavailable.'
51
+ error: isCircuitBreakerError
52
+ ? `Circuit breaker open: ${error.message}`
53
+ : (error?.message || 'An error occurred! Error description is unavailable.')
28
54
  });
29
55
  if (requestExecutionOptions.stopOnFirstError) {
30
56
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"execute-sequentially.js","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAO5E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,WAAqE,EAAE,EACvE,0BAAmG,EAAE;IAErG,MAAM,SAAS,GAA6C,EAAE,CAAC;IAC/D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC;YACD,MAAM,mBAAmB,GAAG;gBACxB,OAAO,EAAE,qBAAqB,CAAoC,GAAG,EAAE,uBAAuB,CAAC;gBAC/F,GAAG,wBAAwB,CAAoC,GAAG,EAAE,uBAAuB,CAAC;gBAC5F,YAAY,EAAE,uBAAuB,CAAC,YAAY,IAAI,GAAG,CAAC,cAAc,CAAC,YAAY;aACxF,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAoC,mBAAmB,CAAC,CAAC;YACxF,SAAS,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,GAAG,CAAC,EAAE;gBACjB,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC5C,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;gBAC3B,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,GAAuB,EAAE,CAAC;gBAC7C,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,oEAAoE,EAAE,CAAC;aAC/F,CAAC,CAAA;QACN,CAAC;QAAC,OAAM,CAAM,EAAE,CAAC;YACb,SAAS,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,GAAG,CAAC,EAAE;gBACjB,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC5C,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,CAAC,EAAE,OAAO,IAAI,sDAAsD;aAC9E,CAAC,CAAC;YACH,IAAG,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;gBAC1C,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"execute-sequentially.js","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ export { CacheManager, getGlobalCacheManager, resetGlobalCacheManager } from './cache-manager.js';
2
+ export { CircuitBreaker, CircuitBreakerOpenError } from './circuit-breaker.js';
3
+ export { ConcurrencyLimiter } from './concurrency-limiter.js';
1
4
  export { delay } from './delay.js';
2
5
  export { executeConcurrently } from './execute-concurrently.js';
3
6
  export { executePhase } from './execute-phase.js';
@@ -8,6 +11,7 @@ export { getNewDelayTime } from './get-new-delay-time.js';
8
11
  export { isRetryableError } from './is-retryable-error.js';
9
12
  export { prepareApiRequestData } from './prepare-api-request-data.js';
10
13
  export { prepareApiRequestOptions } from './prepare-api-request-options.js';
14
+ export { RateLimiter } from './rate-limiter.js';
11
15
  export { reqFn } from './req-fn.js';
12
16
  export { safelyExecuteUnknownFunction } from './safely-execute-unknown-function.js';
13
17
  export { safelyStringify } from './safely-stringify.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
@@ -1,3 +1,6 @@
1
+ export { CacheManager, getGlobalCacheManager, resetGlobalCacheManager } from './cache-manager.js';
2
+ export { CircuitBreaker, CircuitBreakerOpenError } from './circuit-breaker.js';
3
+ export { ConcurrencyLimiter } from './concurrency-limiter.js';
1
4
  export { delay } from './delay.js';
2
5
  export { executeConcurrently } from './execute-concurrently.js';
3
6
  export { executePhase } from './execute-phase.js';
@@ -8,6 +11,7 @@ export { getNewDelayTime } from './get-new-delay-time.js';
8
11
  export { isRetryableError } from './is-retryable-error.js';
9
12
  export { prepareApiRequestData } from './prepare-api-request-data.js';
10
13
  export { prepareApiRequestOptions } from './prepare-api-request-options.js';
14
+ export { RateLimiter } from './rate-limiter.js';
11
15
  export { reqFn } from './req-fn.js';
12
16
  export { safelyExecuteUnknownFunction } from './safely-execute-unknown-function.js';
13
17
  export { safelyStringify } from './safely-stringify.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-api-request-options.d.ts","sourceRoot":"","sources":["../../src/utilities/prepare-api-request-options.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,mBAAmB,EACnB,oCAAoC,EACpC,oCAAoC,EACpC,cAAc,EACjB,MAAM,mBAAmB,CAAC;AAG3B,wBAAgB,wBAAwB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAClF,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAC/D,6BAA6B,EAAE,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAC1E,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAC,GACpG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAgBpE"}
1
+ {"version":3,"file":"prepare-api-request-options.d.ts","sourceRoot":"","sources":["../../src/utilities/prepare-api-request-options.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,mBAAmB,EACnB,oCAAoC,EACpC,oCAAoC,EACpC,cAAc,EACjB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,wBAAwB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAClF,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAC/D,6BAA6B,EAAE,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAC1E,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAC,GACpG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAgBpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-api-request-options.js","sourceRoot":"","sources":["../../src/utilities/prepare-api-request-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAUxE,MAAM,UAAU,wBAAwB,CACpC,OAA+D,EAC/D,6BACmG;IAEnG,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxM,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,+BAA+B,EAAE,CAAC;QACpD,IAAI,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,YAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxE,CAAC;aAAM,IAAG,QAAQ,EAAE,YAAY,IAAK,QAAQ,CAAC,YAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACxG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,QAAQ,CAAC,YAAoB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,6BAA6B,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACzE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,6BAAqC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1F,CAAC;IACL,CAAC;IAED,OAAO,MAA4E,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"prepare-api-request-options.js","sourceRoot":"","sources":["../../src/utilities/prepare-api-request-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AASxE,MAAM,UAAU,wBAAwB,CACpC,OAA+D,EAC/D,6BACmG;IAEnG,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxM,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,+BAA+B,EAAE,CAAC;QACpD,IAAI,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,YAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxE,CAAC;aAAM,IAAG,QAAQ,EAAE,YAAY,IAAK,QAAQ,CAAC,YAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACxG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,QAAQ,CAAC,YAAoB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,6BAA6B,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACzE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,6BAAqC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1F,CAAC;IACL,CAAC;IAED,OAAO,MAA4E,CAAC;AACxF,CAAC"}
@@ -0,0 +1,21 @@
1
+ export declare class RateLimiter {
2
+ private readonly maxRequests;
3
+ private readonly windowMs;
4
+ private tokens;
5
+ private lastRefillTime;
6
+ private readonly queue;
7
+ constructor(maxRequests: number, windowMs: number);
8
+ private refillTokens;
9
+ private acquire;
10
+ private scheduleRefill;
11
+ private processQueue;
12
+ execute<T>(fn: () => Promise<T>): Promise<T>;
13
+ executeAll<T>(fns: Array<() => Promise<T>>): Promise<T[]>;
14
+ getState(): {
15
+ availableTokens: number;
16
+ queueLength: number;
17
+ maxRequests: number;
18
+ windowMs: number;
19
+ };
20
+ }
21
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utilities/rate-limiter.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;gBAEnC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOjD,OAAO,CAAC,YAAY;YAWN,OAAO;IAcrB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,YAAY;IAcd,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK5C,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI/D,QAAQ;;;;;;CASX"}
@@ -0,0 +1,72 @@
1
+ export class RateLimiter {
2
+ maxRequests;
3
+ windowMs;
4
+ tokens;
5
+ lastRefillTime;
6
+ queue = [];
7
+ constructor(maxRequests, windowMs) {
8
+ this.maxRequests = Math.max(1, Math.floor(maxRequests));
9
+ this.windowMs = Math.max(100, windowMs);
10
+ this.tokens = this.maxRequests;
11
+ this.lastRefillTime = Date.now();
12
+ }
13
+ refillTokens() {
14
+ const now = Date.now();
15
+ const elapsed = now - this.lastRefillTime;
16
+ if (elapsed >= this.windowMs) {
17
+ const windowsPassed = Math.floor(elapsed / this.windowMs);
18
+ this.tokens = Math.min(this.maxRequests, this.tokens + (windowsPassed * this.maxRequests));
19
+ this.lastRefillTime = now;
20
+ }
21
+ }
22
+ async acquire() {
23
+ this.refillTokens();
24
+ if (this.tokens > 0) {
25
+ this.tokens--;
26
+ return Promise.resolve();
27
+ }
28
+ return new Promise((resolve) => {
29
+ this.queue.push(resolve);
30
+ this.scheduleRefill();
31
+ });
32
+ }
33
+ scheduleRefill() {
34
+ const now = Date.now();
35
+ const timeUntilRefill = this.windowMs - (now - this.lastRefillTime);
36
+ if (timeUntilRefill > 0) {
37
+ setTimeout(() => {
38
+ this.refillTokens();
39
+ this.processQueue();
40
+ }, timeUntilRefill);
41
+ }
42
+ }
43
+ processQueue() {
44
+ while (this.queue.length > 0 && this.tokens > 0) {
45
+ const next = this.queue.shift();
46
+ if (next) {
47
+ this.tokens--;
48
+ next();
49
+ }
50
+ }
51
+ if (this.queue.length > 0) {
52
+ this.scheduleRefill();
53
+ }
54
+ }
55
+ async execute(fn) {
56
+ await this.acquire();
57
+ return fn();
58
+ }
59
+ async executeAll(fns) {
60
+ return Promise.all(fns.map(fn => this.execute(fn)));
61
+ }
62
+ getState() {
63
+ this.refillTokens();
64
+ return {
65
+ availableTokens: this.tokens,
66
+ queueLength: this.queue.length,
67
+ maxRequests: this.maxRequests,
68
+ windowMs: this.windowMs
69
+ };
70
+ }
71
+ }
72
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/utilities/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { AxiosRequestConfig } from 'axios';
2
- import { ReqFnResponse, TRIAL_MODE_OPTIONS } from '../types/index.js';
3
- export declare function reqFn<RequestDataType = any, ResponseDataType = any>(reqData: AxiosRequestConfig<RequestDataType>, resReq?: boolean, maxSerializableChars?: number, trialMode?: TRIAL_MODE_OPTIONS): Promise<ReqFnResponse<ResponseDataType>>;
2
+ import { ReqFnResponse, TRIAL_MODE_OPTIONS, CacheConfig } from '../types/index.js';
3
+ export declare function reqFn<RequestDataType = any, ResponseDataType = any>(reqData: AxiosRequestConfig<RequestDataType>, resReq?: boolean, maxSerializableChars?: number, trialMode?: TRIAL_MODE_OPTIONS, cacheConfig?: CacheConfig): Promise<ReqFnResponse<ResponseDataType>>;
4
4
  //# sourceMappingURL=req-fn.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"req-fn.d.ts","sourceRoot":"","sources":["../../src/utilities/req-fn.ts"],"names":[],"mappings":"AAAA,OAAc,EAAc,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAItE,wBAAsB,KAAK,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACvE,OAAO,EAAE,kBAAkB,CAAC,eAAe,CAAC,EAC5C,MAAM,UAAQ,EACd,oBAAoB,SAAO,EAC3B,SAAS,GAAE,kBAAuC,GACjD,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAgE1C"}
1
+ {"version":3,"file":"req-fn.d.ts","sourceRoot":"","sources":["../../src/utilities/req-fn.ts"],"names":[],"mappings":"AAAA,OAAc,EAAc,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKnF,wBAAsB,KAAK,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACvE,OAAO,EAAE,kBAAkB,CAAC,eAAe,CAAC,EAC5C,MAAM,UAAQ,EACd,oBAAoB,SAAO,EAC3B,SAAS,GAAE,kBAAuC,EAClD,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAqG1C"}
@@ -1,10 +1,27 @@
1
1
  import axios from 'axios';
2
2
  import { safelyStringify } from './safely-stringify.js';
3
3
  import { isRetryableError } from './is-retryable-error.js';
4
- export async function reqFn(reqData, resReq = false, maxSerializableChars = 1000, trialMode = { enabled: false }) {
4
+ import { getGlobalCacheManager } from './cache-manager.js';
5
+ export async function reqFn(reqData, resReq = false, maxSerializableChars = 1000, trialMode = { enabled: false }, cacheConfig) {
5
6
  const startTime = Date.now();
6
7
  let stopTime = 0;
7
8
  const timestamp = new Date(startTime).toISOString();
9
+ let cacheManager = null;
10
+ if (cacheConfig?.enabled) {
11
+ cacheManager = getGlobalCacheManager(cacheConfig);
12
+ const cached = cacheManager.get(reqData);
13
+ if (cached) {
14
+ return {
15
+ ok: true,
16
+ isRetryable: true,
17
+ data: resReq ? cached.data : undefined,
18
+ timestamp: new Date(cached.timestamp).toISOString(),
19
+ executionTime: 0,
20
+ statusCode: cached.status,
21
+ fromCache: true
22
+ };
23
+ }
24
+ }
8
25
  try {
9
26
  if (trialMode.enabled) {
10
27
  const trialCondition = Math.random() <= (trialMode?.reqFailureProbability ?? 0);
@@ -13,18 +30,23 @@ export async function reqFn(reqData, resReq = false, maxSerializableChars = 1000
13
30
  throw new Error('Request failed in trial mode.');
14
31
  }
15
32
  else {
33
+ stopTime = Date.now();
16
34
  return {
17
35
  ok: true,
18
36
  isRetryable: true,
19
37
  timestamp,
20
- executionTime: Date.now() - startTime,
38
+ executionTime: stopTime - startTime,
21
39
  statusCode: 200,
22
40
  ...(resReq && { data: { trialMode } }),
41
+ fromCache: false
23
42
  };
24
43
  }
25
44
  }
26
45
  const res = await axios.request(reqData);
27
46
  stopTime = Date.now();
47
+ if (cacheManager) {
48
+ cacheManager.set(reqData, res.data, res.status, res.statusText, res.headers);
49
+ }
28
50
  return resReq
29
51
  ? {
30
52
  ok: true,
@@ -32,14 +54,16 @@ export async function reqFn(reqData, resReq = false, maxSerializableChars = 1000
32
54
  data: res?.data,
33
55
  timestamp,
34
56
  executionTime: stopTime - startTime,
35
- statusCode: res?.status || 200
57
+ statusCode: res?.status || 200,
58
+ fromCache: false
36
59
  }
37
60
  : {
38
61
  ok: true,
39
62
  isRetryable: true,
40
63
  timestamp,
41
64
  executionTime: stopTime - startTime,
42
- statusCode: res?.status || 200
65
+ statusCode: res?.status || 200,
66
+ fromCache: false
43
67
  };
44
68
  }
45
69
  catch (e) {
@@ -51,7 +75,8 @@ export async function reqFn(reqData, resReq = false, maxSerializableChars = 1000
51
75
  isRetryable: false,
52
76
  timestamp,
53
77
  executionTime: stopTime - startTime,
54
- statusCode: e?.response?.status || 0
78
+ statusCode: e?.response?.status || 0,
79
+ fromCache: false
55
80
  };
56
81
  }
57
82
  return {
@@ -60,7 +85,8 @@ export async function reqFn(reqData, resReq = false, maxSerializableChars = 1000
60
85
  isRetryable: isRetryableError(e, trialMode),
61
86
  timestamp,
62
87
  executionTime: stopTime - startTime,
63
- statusCode: e?.response?.status || 0
88
+ statusCode: e?.response?.status || 0,
89
+ fromCache: false
64
90
  };
65
91
  }
66
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"req-fn.js","sourceRoot":"","sources":["../../src/utilities/req-fn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,OAA4C,EAC5C,MAAM,GAAG,KAAK,EACd,oBAAoB,GAAG,IAAI,EAC3B,YAAgC,EAAE,OAAO,EAAE,KAAK,EAAE;IAElD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACpD,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,IAAI,CAAC,CAAC,CAAC;YAC3D,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,eAAe,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAC/C,CAAC;gBACF,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,WAAW,EAAE,IAAI;oBACjB,SAAS;oBACT,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBACrC,UAAU,EAAE,GAAG;oBACf,GAAG,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC;iBACvC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAmB,OAAO,CAAC,CAAC;QAC3D,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO,MAAM;YACX,CAAC,CAAC;gBACE,EAAE,EAAE,IAAI;gBACR,WAAW,EAAE,IAAI;gBACjB,IAAI,EAAE,GAAG,EAAE,IAAI;gBACf,SAAS;gBACT,aAAa,EAAE,QAAQ,GAAG,SAAS;gBACnC,UAAU,EAAE,GAAG,EAAE,MAAM,IAAI,GAAG;aAC/B;YACH,CAAC,CAAC;gBACE,EAAE,EAAE,IAAI;gBACR,WAAW,EAAE,IAAI;gBACjB,SAAS;gBACT,aAAa,EAAE,QAAQ,GAAG,SAAS;gBACnC,UAAU,EAAE,GAAG,EAAE,MAAM,IAAI,GAAG;aAC/B,CAAC;IACR,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,IAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,wBAAwB;gBAC/B,WAAW,EAAE,KAAK;gBAClB,SAAS;gBACT,aAAa,EAAE,QAAQ,GAAG,SAAS;gBACnC,UAAU,EAAG,CAAgB,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;aACrD,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAG,CAAgB,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,OAAO;YACtD,WAAW,EAAE,gBAAgB,CAAC,CAAe,EAAE,SAAS,CAAC;YACzD,SAAS;YACT,aAAa,EAAE,QAAQ,GAAG,SAAS;YACnC,UAAU,EAAG,CAAgB,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;SACrD,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"req-fn.js","sourceRoot":"","sources":["../../src/utilities/req-fn.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emmvish/stable-request",
3
- "version": "1.4.2",
3
+ "version": "1.5.1",
4
4
  "description": "stable-request is a TypeScript-first HTTP workflow execution engine for real-world distributed systems — where HTTP 200 OK does not guarantee business success, and HTTP failures still deserve structured, actionable responses.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",