@emmvish/stable-request 1.5.0 → 1.5.2
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/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +4 -1
- package/dist/constants/index.js.map +1 -1
- package/dist/core/stable-request.d.ts.map +1 -1
- package/dist/core/stable-request.js +50 -4
- package/dist/core/stable-request.js.map +1 -1
- package/dist/core/stable-workflow.d.ts.map +1 -1
- package/dist/core/stable-workflow.js +0 -2
- package/dist/core/stable-workflow.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +28 -8
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utilities/cache-manager.d.ts +28 -0
- package/dist/utilities/cache-manager.d.ts.map +1 -0
- package/dist/utilities/cache-manager.js +177 -0
- package/dist/utilities/cache-manager.js.map +1 -0
- package/dist/utilities/circuit-breaker.d.ts +11 -0
- package/dist/utilities/circuit-breaker.d.ts.map +1 -1
- package/dist/utilities/circuit-breaker.js +52 -2
- package/dist/utilities/circuit-breaker.js.map +1 -1
- package/dist/utilities/execute-concurrently.d.ts.map +1 -1
- package/dist/utilities/execute-concurrently.js +8 -6
- package/dist/utilities/execute-concurrently.js.map +1 -1
- package/dist/utilities/execute-phase.d.ts.map +1 -1
- package/dist/utilities/execute-phase.js +0 -3
- package/dist/utilities/execute-phase.js.map +1 -1
- package/dist/utilities/execute-sequentially.d.ts.map +1 -1
- package/dist/utilities/execute-sequentially.js +8 -6
- package/dist/utilities/execute-sequentially.js.map +1 -1
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.d.ts.map +1 -1
- package/dist/utilities/index.js +1 -0
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/prepare-api-request-options.d.ts.map +1 -1
- package/dist/utilities/prepare-api-request-options.js.map +1 -1
- package/dist/utilities/req-fn.d.ts +2 -2
- package/dist/utilities/req-fn.d.ts.map +1 -1
- package/dist/utilities/req-fn.js +33 -7
- package/dist/utilities/req-fn.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElF,eAAO,MAAM,wBAAwB,EAAE,CAAC,MAAM,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElF,eAAO,MAAM,wBAAwB,EAAE,CAAC,MAAM,mBAAmB,CAAC,EAmBjE,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,wBAAwB,EAmBrE,CAAC"}
|
package/dist/constants/index.js
CHANGED
|
@@ -15,7 +15,8 @@ export const extractCommonOptionsKeys = [
|
|
|
15
15
|
'commonLogAllErrors',
|
|
16
16
|
'commonLogAllSuccessfulAttempts',
|
|
17
17
|
'commonMaxSerializableChars',
|
|
18
|
-
'commonTrialMode'
|
|
18
|
+
'commonTrialMode',
|
|
19
|
+
'commonCache',
|
|
19
20
|
];
|
|
20
21
|
export const PrepareApiRequestOptionsMapping = [
|
|
21
22
|
{ localKey: 'preExecution', commonKey: 'commonPreExecution', groupCommonKey: 'commonPreExecution', targetKey: 'preExecution' },
|
|
@@ -34,5 +35,7 @@ export const PrepareApiRequestOptionsMapping = [
|
|
|
34
35
|
{ localKey: 'handleErrors', commonKey: 'commonHandleErrors', groupCommonKey: 'commonHandleErrors', targetKey: 'handleErrors' },
|
|
35
36
|
{ localKey: 'handleSuccessfulAttemptData', commonKey: 'commonHandleSuccessfulAttemptData', groupCommonKey: 'commonHandleSuccessfulAttemptData', targetKey: 'handleSuccessfulAttemptData' },
|
|
36
37
|
{ localKey: 'finalErrorAnalyzer', commonKey: 'commonFinalErrorAnalyzer', groupCommonKey: 'commonFinalErrorAnalyzer', targetKey: 'finalErrorAnalyzer' },
|
|
38
|
+
{ localKey: 'cache', commonKey: 'commonCache', groupCommonKey: 'commonCache', targetKey: 'cache' },
|
|
39
|
+
{ localKey: 'commonBuffer', commonKey: 'sharedBuffer', groupCommonKey: 'sharedBuffer', targetKey: 'commonBuffer' },
|
|
37
40
|
];
|
|
38
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAkC;IACnE,oBAAoB;IACpB,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,wBAAwB;IACxB,oBAAoB;IACpB,mCAAmC;IACnC,0BAA0B;IAC1B,cAAc;IACd,gBAAgB;IAChB,0BAA0B;IAC1B,YAAY;IACZ,qBAAqB;IACrB,oBAAoB;IACpB,gCAAgC;IAChC,4BAA4B;IAC5B,iBAAiB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAAkC;IACnE,oBAAoB;IACpB,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,wBAAwB;IACxB,oBAAoB;IACpB,mCAAmC;IACnC,0BAA0B;IAC1B,cAAc;IACd,gBAAgB;IAChB,0BAA0B;IAC1B,YAAY;IACZ,qBAAqB;IACrB,oBAAoB;IACpB,gCAAgC;IAChC,4BAA4B;IAC5B,iBAAiB;IACjB,aAAa;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAA+B;IACvE,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,cAAc,EAAE;IAC9H,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE;IACtH,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,EAAE,cAAc,EAAE,sBAAsB,EAAE,SAAS,EAAE,gBAAgB,EAAE;IACtI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE;IACtG,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE;IAC9G,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,0BAA0B,EAAE,cAAc,EAAE,0BAA0B,EAAE,SAAS,EAAE,oBAAoB,EAAE;IACtJ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;IAC9F,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,eAAe,EAAE;IAClI,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,cAAc,EAAE;IAC9H,EAAE,QAAQ,EAAE,0BAA0B,EAAE,SAAS,EAAE,gCAAgC,EAAE,cAAc,EAAE,gCAAgC,EAAE,SAAS,EAAE,0BAA0B,EAAE;IAC9K,EAAE,QAAQ,EAAE,sBAAsB,EAAE,SAAS,EAAE,4BAA4B,EAAE,cAAc,EAAE,4BAA4B,EAAE,SAAS,EAAE,sBAAsB,EAAE;IAC9J,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE;IAClH,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,wBAAwB,EAAE,cAAc,EAAE,wBAAwB,EAAE,SAAS,EAAE,kBAAkB,EAAE;IAC9I,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,cAAc,EAAE;IAC9H,EAAE,QAAQ,EAAE,6BAA6B,EAAE,SAAS,EAAE,mCAAmC,EAAE,cAAc,EAAE,mCAAmC,EAAE,SAAS,EAAE,6BAA6B,EAAE;IAC1L,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,0BAA0B,EAAE,cAAc,EAAE,0BAA0B,EAAE,SAAS,EAAE,oBAAoB,EAAE;IACtJ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE;IAClG,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE;CACrH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stable-request.d.ts","sourceRoot":"","sources":["../../src/core/stable-request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stable-request.d.ts","sourceRoot":"","sources":["../../src/core/stable-request.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAc3B,wBAAsB,aAAa,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAC/E,OAAO,EAAE,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC,GACzD,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,CA4TrC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { RETRY_STRATEGIES, RESPONSE_ERRORS } from '../enums/index.js';
|
|
2
|
-
import { generateAxiosRequestConfig, getNewDelayTime, delay, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from '../utilities/index.js';
|
|
1
|
+
import { RETRY_STRATEGIES, RESPONSE_ERRORS, CircuitBreakerState } from '../enums/index.js';
|
|
2
|
+
import { CircuitBreaker, CircuitBreakerOpenError, generateAxiosRequestConfig, getNewDelayTime, delay, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from '../utilities/index.js';
|
|
3
3
|
export async function stableRequest(options) {
|
|
4
4
|
const { preExecution = {
|
|
5
5
|
preExecutionHook: ({ inputParams, commonBuffer }) => { },
|
|
@@ -26,9 +26,15 @@ export async function stableRequest(options) {
|
|
|
26
26
|
throw e;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const { reqData: givenReqData, responseAnalyzer = ({ reqData, data, trialMode = { enabled: false } }) => true, resReq = false, attempts: givenAttempts = 1, performAllAttempts = false, wait = 1000, maxAllowedWait = 60000, retryStrategy = RETRY_STRATEGIES.FIXED, logAllErrors = false, handleErrors = ({ reqData, errorLog, maxSerializableChars = 1000 }) => console.error('stable-request:\n', 'Request data:\n', safelyStringify(reqData, maxSerializableChars), '\nError log:\n', safelyStringify(errorLog, maxSerializableChars)), logAllSuccessfulAttempts = false, handleSuccessfulAttemptData = ({ reqData, successfulAttemptData, maxSerializableChars = 1000 }) => console.info('stable-request:\n', 'Request data:\n', safelyStringify(reqData, maxSerializableChars), '\nSuccessful attempt:\n', safelyStringify(successfulAttemptData, maxSerializableChars)), maxSerializableChars = 1000, finalErrorAnalyzer = ({ reqData, error, trialMode = { enabled: false } }) => false, trialMode = { enabled: false }, hookParams = {}, } = options;
|
|
29
|
+
const { reqData: givenReqData, responseAnalyzer = ({ reqData, data, trialMode = { enabled: false } }) => true, resReq = false, attempts: givenAttempts = 1, performAllAttempts = false, wait = 1000, maxAllowedWait = 60000, retryStrategy = RETRY_STRATEGIES.FIXED, logAllErrors = false, handleErrors = ({ reqData, errorLog, maxSerializableChars = 1000 }) => console.error('stable-request:\n', 'Request data:\n', safelyStringify(reqData, maxSerializableChars), '\nError log:\n', safelyStringify(errorLog, maxSerializableChars)), logAllSuccessfulAttempts = false, handleSuccessfulAttemptData = ({ reqData, successfulAttemptData, maxSerializableChars = 1000 }) => console.info('stable-request:\n', 'Request data:\n', safelyStringify(reqData, maxSerializableChars), '\nSuccessful attempt:\n', safelyStringify(successfulAttemptData, maxSerializableChars)), maxSerializableChars = 1000, finalErrorAnalyzer = ({ reqData, error, trialMode = { enabled: false } }) => false, trialMode = { enabled: false }, hookParams = {}, cache, circuitBreaker } = options;
|
|
30
30
|
let attempts = givenAttempts;
|
|
31
31
|
const reqData = generateAxiosRequestConfig(givenReqData);
|
|
32
|
+
let circuitBreakerInstance = null;
|
|
33
|
+
if (circuitBreaker) {
|
|
34
|
+
circuitBreakerInstance = circuitBreaker instanceof CircuitBreaker
|
|
35
|
+
? circuitBreaker
|
|
36
|
+
: new CircuitBreaker(circuitBreaker);
|
|
37
|
+
}
|
|
32
38
|
try {
|
|
33
39
|
validateTrialModeProbabilities(trialMode);
|
|
34
40
|
let res = {
|
|
@@ -44,7 +50,36 @@ export async function stableRequest(options) {
|
|
|
44
50
|
do {
|
|
45
51
|
attempts--;
|
|
46
52
|
const currentAttempt = maxAttempts - attempts;
|
|
47
|
-
|
|
53
|
+
if (circuitBreakerInstance) {
|
|
54
|
+
const cbConfig = circuitBreakerInstance.getState().config;
|
|
55
|
+
if (cbConfig.trackIndividualAttempts || currentAttempt === 1) {
|
|
56
|
+
const canExecute = await circuitBreakerInstance.canExecute();
|
|
57
|
+
if (!canExecute) {
|
|
58
|
+
throw new CircuitBreakerOpenError(`stable-request: Circuit breaker is ${circuitBreakerInstance.getState().state}. Request blocked at attempt ${currentAttempt}.`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
res = await reqFn(reqData, resReq, maxSerializableChars, trialMode, cache);
|
|
64
|
+
if (res.fromCache && res.ok) {
|
|
65
|
+
if (trialMode.enabled) {
|
|
66
|
+
console.info('stable-request: Response served from cache:\n', safelyStringify(res?.data, maxSerializableChars));
|
|
67
|
+
}
|
|
68
|
+
return resReq ? res?.data : true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (attemptError) {
|
|
72
|
+
if (attemptError instanceof CircuitBreakerOpenError) {
|
|
73
|
+
throw attemptError;
|
|
74
|
+
}
|
|
75
|
+
if (circuitBreakerInstance && circuitBreakerInstance.getState().config.trackIndividualAttempts) {
|
|
76
|
+
circuitBreakerInstance.recordAttemptFailure();
|
|
77
|
+
if (circuitBreakerInstance.getState().state === CircuitBreakerState.OPEN) {
|
|
78
|
+
throw new CircuitBreakerOpenError(`stable-request: Circuit breaker opened after attempt ${currentAttempt}. No further retries.`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
throw attemptError;
|
|
82
|
+
}
|
|
48
83
|
const originalResOk = res.ok;
|
|
49
84
|
let performNextAttempt = false;
|
|
50
85
|
if (res.ok) {
|
|
@@ -64,6 +99,17 @@ export async function stableRequest(options) {
|
|
|
64
99
|
performNextAttempt = true;
|
|
65
100
|
}
|
|
66
101
|
}
|
|
102
|
+
if (circuitBreakerInstance && circuitBreakerInstance.getState().config.trackIndividualAttempts) {
|
|
103
|
+
if (res.ok && !performNextAttempt) {
|
|
104
|
+
circuitBreakerInstance.recordAttemptSuccess();
|
|
105
|
+
}
|
|
106
|
+
else if (!res.ok || performNextAttempt) {
|
|
107
|
+
circuitBreakerInstance.recordAttemptFailure();
|
|
108
|
+
if (circuitBreakerInstance.getState().state === CircuitBreakerState.OPEN) {
|
|
109
|
+
throw new CircuitBreakerOpenError(`stable-request: Circuit breaker opened after attempt ${currentAttempt}/${maxAttempts}. Blocking further retries.`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
67
113
|
if ((!res.ok || (res.ok && performNextAttempt)) && logAllErrors) {
|
|
68
114
|
const errorLog = {
|
|
69
115
|
timestamp: res.timestamp,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stable-request.js","sourceRoot":"","sources":["../../src/core/stable-request.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,eAAe,
|
|
1
|
+
{"version":3,"file":"stable-request.js","sourceRoot":"","sources":["../../src/core/stable-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stable-workflow.d.ts","sourceRoot":"","sources":["../../src/core/stable-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACzB,MAAM,mBAAmB,CAAC;AAQ3B,wBAAsB,cAAc,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAC9E,MAAM,EAAE,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,EAClE,OAAO,GAAE,uBAAuB,CAAC,eAAe,EAAE,gBAAgB,CAAM,GACzE,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"stable-workflow.d.ts","sourceRoot":"","sources":["../../src/core/stable-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACzB,MAAM,mBAAmB,CAAC;AAQ3B,wBAAsB,cAAc,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAC9E,MAAM,EAAE,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,EAClE,OAAO,GAAE,uBAAuB,CAAC,eAAe,EAAE,gBAAgB,CAAM,GACzE,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAgVnD"}
|
|
@@ -7,11 +7,9 @@ export async function stableWorkflow(phases, options = {}) {
|
|
|
7
7
|
let totalRequests = 0;
|
|
8
8
|
let successfulRequests = 0;
|
|
9
9
|
let failedRequests = 0;
|
|
10
|
-
// Create workflow-level circuit breaker instance if configured
|
|
11
10
|
const workflowCircuitBreaker = commonGatewayOptions.circuitBreaker
|
|
12
11
|
? new CircuitBreaker(commonGatewayOptions.circuitBreaker)
|
|
13
12
|
: null;
|
|
14
|
-
// If workflow has circuit breaker, pass the instance (not config) to phases
|
|
15
13
|
const commonGatewayOptionsWithBreaker = workflowCircuitBreaker
|
|
16
14
|
? { ...commonGatewayOptions, circuitBreaker: workflowCircuitBreaker }
|
|
17
15
|
: commonGatewayOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stable-workflow.js","sourceRoot":"","sources":["../../src/core/stable-workflow.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,YAAY,EACZ,4BAA4B,EAC5B,eAAe,EACf,cAAc,EACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,MAAkE,EAClE,UAAsE,EAAE;IAExE,MAAM,EACF,qBAAqB,GAAG,KAAK,EAC7B,eAAe,GAAG,KAAK,EACvB,qBAAqB,GAAG,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,GAAG,IAAI,EAAE,EAAE,EAAE,CACjF,OAAO,CAAC,IAAI,CACR,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,eAAe,CAAC,WAAW,EAAE,oBAAoB,CAAC,CACrD,EACL,gBAAgB,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,oBAAoB,GAAG,IAAI,EAAE,EAAE,EAAE,CACnF,OAAO,CAAC,KAAK,CACT,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,eAAe,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,oBAAoB,CAAC,CAChE,EACL,oBAAoB,GAAG,IAAI,EAC3B,aAAa,GAAG,EAAE,EAClB,kBAAkB,GAAG,EAAE,EACvB,wBAAwB,GAAG,KAAK,EAChC,oBAAoB,GAAG,KAAK,EAC5B,GAAG,oBAAoB,EAC1B,GAAG,OAAO,CAAC;IAEZ,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAClE,MAAM,YAAY,GAAuD,EAAE,CAAC;IAC5E,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB
|
|
1
|
+
{"version":3,"file":"stable-workflow.js","sourceRoot":"","sources":["../../src/core/stable-workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { stableRequest, stableApiGateway, stableWorkflow } from './core/index.js';
|
|
2
2
|
export { CircuitBreakerState, INVALID_AXIOS_RESPONSES, REQUEST_METHODS, RESPONSE_ERRORS, RETRY_STRATEGIES, VALID_REQUEST_PROTOCOLS } from './enums/index.js';
|
|
3
|
-
export type { API_GATEWAY_OPTIONS, API_GATEWAY_REQUEST, API_GATEWAY_REQUEST_OPTIONS_TYPE, API_GATEWAY_RESPONSE, CircuitBreakerConfig, CONCURRENT_REQUEST_EXECUTION_OPTIONS, ERROR_LOG, FinalErrorAnalysisHookOptions, HandleErrorHookOptions, HandlePhaseCompletionHookOptions, HandlePhaseErrorHookOptions, HandleSuccessfulAttemptDataHookOptions, HookParams, PreExecutionHookOptions, RateLimitConfig, RequestPreExecutionOptions, ReqFnResponse, REQUEST_DATA, RequestGroup, REQUEST_METHOD_TYPES, ResponseAnalysisHookOptions, RETRY_STRATEGY_TYPES, SEQUENTIAL_REQUEST_EXECUTION_OPTIONS, STABLE_REQUEST, STABLE_WORKFLOW_PHASE, STABLE_WORKFLOW_OPTIONS, STABLE_WORKFLOW_PHASE_RESULT, STABLE_WORKFLOW_RESULT, SUCCESSFUL_ATTEMPT_DATA, VALID_REQUEST_PROTOCOL_TYPES, WorkflowHookParams, TRIAL_MODE_OPTIONS } from './types/index.js';
|
|
4
|
-
export { CircuitBreaker, CircuitBreakerOpenError, ConcurrencyLimiter, delay, executeConcurrently, executePhase, executeSequentially, extractCommonRequestConfigOptions, generateAxiosRequestConfig, getNewDelayTime, isRetryableError, prepareApiRequestData, prepareApiRequestOptions, RateLimiter, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from './utilities/index.js';
|
|
3
|
+
export type { API_GATEWAY_OPTIONS, API_GATEWAY_REQUEST, API_GATEWAY_REQUEST_OPTIONS_TYPE, API_GATEWAY_RESPONSE, CacheConfig, CachedResponse, CircuitBreakerConfig, CONCURRENT_REQUEST_EXECUTION_OPTIONS, ERROR_LOG, FinalErrorAnalysisHookOptions, HandleErrorHookOptions, HandlePhaseCompletionHookOptions, HandlePhaseErrorHookOptions, HandleSuccessfulAttemptDataHookOptions, HookParams, PreExecutionHookOptions, RateLimitConfig, RequestPreExecutionOptions, ReqFnResponse, REQUEST_DATA, RequestGroup, REQUEST_METHOD_TYPES, ResponseAnalysisHookOptions, RETRY_STRATEGY_TYPES, SEQUENTIAL_REQUEST_EXECUTION_OPTIONS, STABLE_REQUEST, STABLE_WORKFLOW_PHASE, STABLE_WORKFLOW_OPTIONS, STABLE_WORKFLOW_PHASE_RESULT, STABLE_WORKFLOW_RESULT, SUCCESSFUL_ATTEMPT_DATA, VALID_REQUEST_PROTOCOL_TYPES, WorkflowHookParams, TRIAL_MODE_OPTIONS } from './types/index.js';
|
|
4
|
+
export { CacheManager, getGlobalCacheManager, resetGlobalCacheManager, CircuitBreaker, CircuitBreakerOpenError, ConcurrencyLimiter, delay, executeConcurrently, executePhase, executeSequentially, extractCommonRequestConfigOptions, generateAxiosRequestConfig, getNewDelayTime, isRetryableError, prepareApiRequestData, prepareApiRequestOptions, RateLimiter, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from './utilities/index.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,cAAc,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACR,mBAAmB,EACnB,mBAAmB,EACnB,gCAAgC,EAChC,oBAAoB,EACpB,oBAAoB,EACpB,oCAAoC,EACpC,SAAS,EACT,6BAA6B,EAC7B,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,sCAAsC,EACtC,UAAU,EACV,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,oCAAoC,EACpC,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACH,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,iCAAiC,EACjC,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,KAAK,EACL,4BAA4B,EAC5B,eAAe,EACf,8BAA8B,EACjC,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,cAAc,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACR,mBAAmB,EACnB,mBAAmB,EACnB,gCAAgC,EAChC,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,oCAAoC,EACpC,SAAS,EACT,6BAA6B,EAC7B,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,sCAAsC,EACtC,UAAU,EACV,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,oCAAoC,EACpC,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACH,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,iCAAiC,EACjC,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,KAAK,EACL,4BAA4B,EAC5B,eAAe,EACf,8BAA8B,EACjC,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { stableRequest, stableApiGateway, stableWorkflow } from './core/index.js';
|
|
2
2
|
export { CircuitBreakerState, INVALID_AXIOS_RESPONSES, REQUEST_METHODS, RESPONSE_ERRORS, RETRY_STRATEGIES, VALID_REQUEST_PROTOCOLS } from './enums/index.js';
|
|
3
|
-
export { CircuitBreaker, CircuitBreakerOpenError, ConcurrencyLimiter, delay, executeConcurrently, executePhase, executeSequentially, extractCommonRequestConfigOptions, generateAxiosRequestConfig, getNewDelayTime, isRetryableError, prepareApiRequestData, prepareApiRequestOptions, RateLimiter, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from './utilities/index.js';
|
|
3
|
+
export { CacheManager, getGlobalCacheManager, resetGlobalCacheManager, CircuitBreaker, CircuitBreakerOpenError, ConcurrencyLimiter, delay, executeConcurrently, executePhase, executeSequentially, extractCommonRequestConfigOptions, generateAxiosRequestConfig, getNewDelayTime, isRetryableError, prepareApiRequestData, prepareApiRequestOptions, RateLimiter, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from './utilities/index.js';
|
|
4
4
|
//# 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,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,cAAc,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,cAAc,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAuC1B,OAAO,EACH,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,iCAAiC,EACjC,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EACxB,WAAW,EACX,KAAK,EACL,4BAA4B,EAC5B,eAAe,EACf,8BAA8B,EACjC,MAAM,sBAAsB,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AxiosRequestConfig } from 'axios';
|
|
2
2
|
import { REQUEST_METHODS, RESPONSE_ERRORS, RETRY_STRATEGIES, VALID_REQUEST_PROTOCOLS } from '../enums/index.js';
|
|
3
|
+
import { CircuitBreaker } from '../utilities/index.js';
|
|
3
4
|
export interface API_GATEWAY_OPTIONS<RequestDataType = any, ResponseDataType = any> {
|
|
4
5
|
commonRequestData?: Partial<REQUEST_DATA<RequestDataType>>;
|
|
5
6
|
commonAttempts?: number;
|
|
@@ -18,6 +19,7 @@ export interface API_GATEWAY_OPTIONS<RequestDataType = any, ResponseDataType = a
|
|
|
18
19
|
commonHandleErrors?: (options: HandleErrorHookOptions<RequestDataType>) => any | Promise<any>;
|
|
19
20
|
commonHandleSuccessfulAttemptData?: (options: HandleSuccessfulAttemptDataHookOptions<RequestDataType, ResponseDataType>) => any | Promise<any>;
|
|
20
21
|
commonPreExecution?: RequestPreExecutionOptions;
|
|
22
|
+
commonCache?: CacheConfig;
|
|
21
23
|
concurrentExecution?: boolean;
|
|
22
24
|
requestGroups?: RequestGroup<RequestDataType, ResponseDataType>[];
|
|
23
25
|
stopOnFirstError?: boolean;
|
|
@@ -26,6 +28,10 @@ export interface API_GATEWAY_OPTIONS<RequestDataType = any, ResponseDataType = a
|
|
|
26
28
|
rateLimit?: RateLimitConfig;
|
|
27
29
|
circuitBreaker?: CircuitBreakerConfig;
|
|
28
30
|
}
|
|
31
|
+
export interface RequestGroup<RequestDataType = any, ResponseDataType = any> {
|
|
32
|
+
id: string;
|
|
33
|
+
commonConfig?: Omit<API_GATEWAY_OPTIONS<RequestDataType, ResponseDataType>, "concurrentExecution" | "stopOnFirstError" | "requestGroups" | "maxConcurrentRequests" | "rateLimit" | "circuitBreaker">;
|
|
34
|
+
}
|
|
29
35
|
export type API_GATEWAY_REQUEST_OPTIONS_TYPE<RequestDataType, ResponseDataType> = Omit<STABLE_REQUEST<RequestDataType, ResponseDataType>, 'reqData'> & {
|
|
30
36
|
reqData?: Partial<STABLE_REQUEST<RequestDataType, ResponseDataType>['reqData']>;
|
|
31
37
|
};
|
|
@@ -57,10 +63,6 @@ export interface ERROR_LOG {
|
|
|
57
63
|
type: RESPONSE_ERROR_TYPES;
|
|
58
64
|
isRetryable: boolean;
|
|
59
65
|
}
|
|
60
|
-
export interface RequestGroup<RequestDataType = any, ResponseDataType = any> {
|
|
61
|
-
id: string;
|
|
62
|
-
commonConfig?: Omit<API_GATEWAY_OPTIONS<RequestDataType, ResponseDataType>, "concurrentExecution" | "stopOnFirstError">;
|
|
63
|
-
}
|
|
64
66
|
export interface ReqFnResponse<ResponseDataType = any> {
|
|
65
67
|
ok: boolean;
|
|
66
68
|
isRetryable: boolean;
|
|
@@ -71,6 +73,7 @@ export interface ReqFnResponse<ResponseDataType = any> {
|
|
|
71
73
|
data?: ResponseDataType | {
|
|
72
74
|
trialMode: TRIAL_MODE_OPTIONS;
|
|
73
75
|
};
|
|
76
|
+
fromCache?: boolean;
|
|
74
77
|
}
|
|
75
78
|
export type REQUEST_METHOD_TYPES = REQUEST_METHODS.GET | REQUEST_METHODS.POST | REQUEST_METHODS.DELETE | REQUEST_METHODS.PATCH | REQUEST_METHODS.PUT;
|
|
76
79
|
export interface REQUEST_DATA<RequestDataType = any> {
|
|
@@ -148,6 +151,8 @@ export interface STABLE_REQUEST<RequestDataType = any, ResponseDataType = any> {
|
|
|
148
151
|
hookParams?: HookParams;
|
|
149
152
|
preExecution?: RequestPreExecutionOptions;
|
|
150
153
|
commonBuffer?: Record<string, any>;
|
|
154
|
+
cache?: CacheConfig;
|
|
155
|
+
circuitBreaker?: CircuitBreakerConfig | CircuitBreaker;
|
|
151
156
|
}
|
|
152
157
|
export interface SUCCESSFUL_ATTEMPT_DATA<ResponseDataType = any> {
|
|
153
158
|
attempt: string;
|
|
@@ -171,7 +176,7 @@ export interface STABLE_WORKFLOW_PHASE<RequestDataType = any, ResponseDataType =
|
|
|
171
176
|
maxConcurrentRequests?: number;
|
|
172
177
|
rateLimit?: RateLimitConfig;
|
|
173
178
|
circuitBreaker?: CircuitBreakerConfig;
|
|
174
|
-
commonConfig?: Omit<API_GATEWAY_OPTIONS<RequestDataType, ResponseDataType>, 'concurrentExecution' | 'stopOnFirstError' | 'requestGroups'>;
|
|
179
|
+
commonConfig?: Omit<API_GATEWAY_OPTIONS<RequestDataType, ResponseDataType>, 'concurrentExecution' | 'stopOnFirstError' | 'requestGroups' | "maxConcurrentRequests" | "rateLimit" | "circuitBreaker">;
|
|
175
180
|
}
|
|
176
181
|
export interface STABLE_WORKFLOW_OPTIONS<RequestDataType = any, ResponseDataType = any> extends Omit<API_GATEWAY_OPTIONS<RequestDataType, ResponseDataType>, 'concurrentExecution' | 'stopOnFirstError'> {
|
|
177
182
|
workflowId?: string;
|
|
@@ -183,9 +188,6 @@ export interface STABLE_WORKFLOW_OPTIONS<RequestDataType = any, ResponseDataType
|
|
|
183
188
|
handlePhaseError?: (options: HandlePhaseErrorHookOptions<ResponseDataType>) => any | Promise<any>;
|
|
184
189
|
maxSerializableChars?: number;
|
|
185
190
|
workflowHookParams?: WorkflowHookParams;
|
|
186
|
-
maxConcurrentRequests?: number;
|
|
187
|
-
rateLimit?: RateLimitConfig;
|
|
188
|
-
circuitBreaker?: CircuitBreakerConfig;
|
|
189
191
|
}
|
|
190
192
|
export interface STABLE_WORKFLOW_PHASE_RESULT<ResponseDataType = any> {
|
|
191
193
|
phaseId: string;
|
|
@@ -236,6 +238,24 @@ export interface CircuitBreakerConfig {
|
|
|
236
238
|
recoveryTimeoutMs: number;
|
|
237
239
|
successThresholdPercentage?: number;
|
|
238
240
|
halfOpenMaxRequests?: number;
|
|
241
|
+
trackIndividualAttempts?: boolean;
|
|
242
|
+
}
|
|
243
|
+
export interface CacheConfig {
|
|
244
|
+
enabled: boolean;
|
|
245
|
+
ttl?: number;
|
|
246
|
+
respectCacheControl?: boolean;
|
|
247
|
+
cacheableStatusCodes?: number[];
|
|
248
|
+
maxSize?: number;
|
|
249
|
+
excludeMethods?: string[];
|
|
250
|
+
keyGenerator?: (config: AxiosRequestConfig) => string;
|
|
251
|
+
}
|
|
252
|
+
export interface CachedResponse<T = any> {
|
|
253
|
+
data: T;
|
|
254
|
+
status: number;
|
|
255
|
+
statusText: string;
|
|
256
|
+
headers: Record<string, any>;
|
|
257
|
+
timestamp: number;
|
|
258
|
+
expiresAt: number;
|
|
239
259
|
}
|
|
240
260
|
export {};
|
|
241
261
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { CachedResponse, CacheConfig } from '../types/index.js';
|
|
3
|
+
export declare class CacheManager {
|
|
4
|
+
private cache;
|
|
5
|
+
private config;
|
|
6
|
+
private accessOrder;
|
|
7
|
+
constructor(config: CacheConfig);
|
|
8
|
+
private generateKey;
|
|
9
|
+
private shouldCacheMethod;
|
|
10
|
+
private shouldCacheStatus;
|
|
11
|
+
private parseCacheControl;
|
|
12
|
+
get<T = any>(reqConfig: AxiosRequestConfig): CachedResponse<T> | null;
|
|
13
|
+
set<T = any>(reqConfig: AxiosRequestConfig, data: T, status: number, statusText: string, headers: Record<string, any>): void;
|
|
14
|
+
clear(): void;
|
|
15
|
+
delete(reqConfig: AxiosRequestConfig): boolean;
|
|
16
|
+
getStats(): {
|
|
17
|
+
size: number;
|
|
18
|
+
validEntries: number;
|
|
19
|
+
expiredEntries: number;
|
|
20
|
+
maxSize: number;
|
|
21
|
+
oldestEntry: number | null;
|
|
22
|
+
newestEntry: number | null;
|
|
23
|
+
};
|
|
24
|
+
prune(): number;
|
|
25
|
+
}
|
|
26
|
+
export declare function getGlobalCacheManager(config?: CacheConfig): CacheManager;
|
|
27
|
+
export declare function resetGlobalCacheManager(): void;
|
|
28
|
+
//# sourceMappingURL=cache-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/utilities/cache-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhE,qBAAa,YAAY;IACrB,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAA+F;IAC7G,OAAO,CAAC,WAAW,CAAgB;gBAEvB,MAAM,EAAE,WAAW;IAa/B,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;IA6BzB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IA8BrE,GAAG,CAAC,CAAC,GAAG,GAAG,EACP,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,IAAI;IA8CP,KAAK,IAAI,IAAI;IAKb,MAAM,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO;IAM9C,QAAQ;;;;;;;;IAmBR,KAAK,IAAI,MAAM;CAclB;AAID,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,YAAY,CAKxE;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
export class CacheManager {
|
|
3
|
+
cache;
|
|
4
|
+
config;
|
|
5
|
+
accessOrder = [];
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.cache = new Map();
|
|
8
|
+
this.config = {
|
|
9
|
+
enabled: config.enabled,
|
|
10
|
+
ttl: config.ttl ?? 300000,
|
|
11
|
+
respectCacheControl: config.respectCacheControl ?? true,
|
|
12
|
+
cacheableStatusCodes: config.cacheableStatusCodes ?? [200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501],
|
|
13
|
+
maxSize: config.maxSize ?? 100,
|
|
14
|
+
excludeMethods: config.excludeMethods ?? ['POST', 'PUT', 'PATCH', 'DELETE'],
|
|
15
|
+
keyGenerator: config.keyGenerator
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
generateKey(reqConfig) {
|
|
19
|
+
if (this.config.keyGenerator) {
|
|
20
|
+
return this.config.keyGenerator(reqConfig);
|
|
21
|
+
}
|
|
22
|
+
const method = (reqConfig.method || 'GET').toUpperCase();
|
|
23
|
+
const url = reqConfig.url || '';
|
|
24
|
+
const params = reqConfig.params ? JSON.stringify(reqConfig.params) : '';
|
|
25
|
+
const relevantHeaders = ['accept', 'accept-encoding', 'accept-language', 'authorization'];
|
|
26
|
+
const headers = reqConfig.headers || {};
|
|
27
|
+
const headerString = relevantHeaders
|
|
28
|
+
.filter(h => headers[h])
|
|
29
|
+
.map(h => `${h}:${headers[h]}`)
|
|
30
|
+
.join('|');
|
|
31
|
+
const keyString = `${method}:${url}:${params}:${headerString}`;
|
|
32
|
+
return crypto.createHash('sha256').update(keyString).digest('hex');
|
|
33
|
+
}
|
|
34
|
+
shouldCacheMethod(method) {
|
|
35
|
+
if (!method)
|
|
36
|
+
return true;
|
|
37
|
+
return !this.config.excludeMethods.includes(method.toUpperCase());
|
|
38
|
+
}
|
|
39
|
+
shouldCacheStatus(status) {
|
|
40
|
+
return this.config.cacheableStatusCodes.includes(status);
|
|
41
|
+
}
|
|
42
|
+
parseCacheControl(headers) {
|
|
43
|
+
if (!this.config.respectCacheControl) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const cacheControl = headers['cache-control'] || headers['Cache-Control'];
|
|
47
|
+
if (cacheControl && typeof cacheControl === 'string') {
|
|
48
|
+
if (cacheControl.includes('no-cache') || cacheControl.includes('no-store')) {
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
const maxAgeMatch = cacheControl.match(/max-age=(\d+)/);
|
|
52
|
+
if (maxAgeMatch) {
|
|
53
|
+
return parseInt(maxAgeMatch[1]) * 1000;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Check Expires header if no cache-control max-age was found
|
|
57
|
+
const expires = headers['expires'] || headers['Expires'];
|
|
58
|
+
if (expires) {
|
|
59
|
+
const expiresDate = new Date(expires);
|
|
60
|
+
const now = new Date();
|
|
61
|
+
const ttl = expiresDate.getTime() - now.getTime();
|
|
62
|
+
return ttl > 0 ? ttl : 0;
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
get(reqConfig) {
|
|
67
|
+
if (!this.config.enabled) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
if (!this.shouldCacheMethod(reqConfig.method)) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const key = this.generateKey(reqConfig);
|
|
74
|
+
const cached = this.cache.get(key);
|
|
75
|
+
if (!cached) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const now = Date.now();
|
|
79
|
+
if (now > cached.expiresAt) {
|
|
80
|
+
this.cache.delete(key);
|
|
81
|
+
this.accessOrder = this.accessOrder.filter(k => k !== key);
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
this.accessOrder = this.accessOrder.filter(k => k !== key);
|
|
85
|
+
this.accessOrder.push(key);
|
|
86
|
+
return cached;
|
|
87
|
+
}
|
|
88
|
+
set(reqConfig, data, status, statusText, headers) {
|
|
89
|
+
if (!this.config.enabled) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (!this.shouldCacheMethod(reqConfig.method)) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (!this.shouldCacheStatus(status)) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const key = this.generateKey(reqConfig);
|
|
99
|
+
const now = Date.now();
|
|
100
|
+
let ttl = this.config.ttl;
|
|
101
|
+
const cacheControlTtl = this.parseCacheControl(headers);
|
|
102
|
+
if (cacheControlTtl !== null) {
|
|
103
|
+
if (cacheControlTtl === 0) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
ttl = cacheControlTtl;
|
|
107
|
+
}
|
|
108
|
+
const cached = {
|
|
109
|
+
data,
|
|
110
|
+
status,
|
|
111
|
+
statusText,
|
|
112
|
+
headers,
|
|
113
|
+
timestamp: now,
|
|
114
|
+
expiresAt: now + ttl
|
|
115
|
+
};
|
|
116
|
+
if (this.cache.size >= this.config.maxSize) {
|
|
117
|
+
const oldestKey = this.accessOrder.shift();
|
|
118
|
+
if (oldestKey) {
|
|
119
|
+
this.cache.delete(oldestKey);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
this.cache.set(key, cached);
|
|
123
|
+
this.accessOrder.push(key);
|
|
124
|
+
}
|
|
125
|
+
clear() {
|
|
126
|
+
this.cache.clear();
|
|
127
|
+
this.accessOrder = [];
|
|
128
|
+
}
|
|
129
|
+
delete(reqConfig) {
|
|
130
|
+
const key = this.generateKey(reqConfig);
|
|
131
|
+
this.accessOrder = this.accessOrder.filter(k => k !== key);
|
|
132
|
+
return this.cache.delete(key);
|
|
133
|
+
}
|
|
134
|
+
getStats() {
|
|
135
|
+
const now = Date.now();
|
|
136
|
+
const entries = Array.from(this.cache.entries());
|
|
137
|
+
const validEntries = entries.filter(([_, cached]) => now <= cached.expiresAt);
|
|
138
|
+
return {
|
|
139
|
+
size: this.cache.size,
|
|
140
|
+
validEntries: validEntries.length,
|
|
141
|
+
expiredEntries: this.cache.size - validEntries.length,
|
|
142
|
+
maxSize: this.config.maxSize,
|
|
143
|
+
oldestEntry: entries.length > 0
|
|
144
|
+
? Math.min(...entries.map(([_, cached]) => cached.timestamp))
|
|
145
|
+
: null,
|
|
146
|
+
newestEntry: entries.length > 0
|
|
147
|
+
? Math.max(...entries.map(([_, cached]) => cached.timestamp))
|
|
148
|
+
: null
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
prune() {
|
|
152
|
+
const now = Date.now();
|
|
153
|
+
let prunedCount = 0;
|
|
154
|
+
for (const [key, cached] of this.cache.entries()) {
|
|
155
|
+
if (now > cached.expiresAt) {
|
|
156
|
+
this.cache.delete(key);
|
|
157
|
+
this.accessOrder = this.accessOrder.filter(k => k !== key);
|
|
158
|
+
prunedCount++;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return prunedCount;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
let globalCacheManager = null;
|
|
165
|
+
export function getGlobalCacheManager(config) {
|
|
166
|
+
if (!globalCacheManager && config) {
|
|
167
|
+
globalCacheManager = new CacheManager(config);
|
|
168
|
+
}
|
|
169
|
+
return globalCacheManager;
|
|
170
|
+
}
|
|
171
|
+
export function resetGlobalCacheManager() {
|
|
172
|
+
if (globalCacheManager) {
|
|
173
|
+
globalCacheManager.clear();
|
|
174
|
+
}
|
|
175
|
+
globalCacheManager = null;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=cache-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/utilities/cache-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,9 @@ export declare class CircuitBreaker {
|
|
|
6
6
|
private totalRequests;
|
|
7
7
|
private failedRequests;
|
|
8
8
|
private successfulRequests;
|
|
9
|
+
private totalAttempts;
|
|
10
|
+
private failedAttempts;
|
|
11
|
+
private successfulAttempts;
|
|
9
12
|
private lastFailureTime;
|
|
10
13
|
private halfOpenRequests;
|
|
11
14
|
private halfOpenSuccesses;
|
|
@@ -14,11 +17,15 @@ export declare class CircuitBreaker {
|
|
|
14
17
|
canExecute(): Promise<boolean>;
|
|
15
18
|
recordSuccess(): void;
|
|
16
19
|
recordFailure(): void;
|
|
20
|
+
recordAttemptSuccess(): void;
|
|
21
|
+
recordAttemptFailure(): void;
|
|
17
22
|
private checkThreshold;
|
|
23
|
+
private checkAttemptThreshold;
|
|
18
24
|
private checkHalfOpenTransition;
|
|
19
25
|
private transitionToClosed;
|
|
20
26
|
private transitionToOpen;
|
|
21
27
|
private transitionToHalfOpen;
|
|
28
|
+
private shouldResetCounters;
|
|
22
29
|
private resetCounters;
|
|
23
30
|
private resetHalfOpenCounters;
|
|
24
31
|
getState(): {
|
|
@@ -27,6 +34,10 @@ export declare class CircuitBreaker {
|
|
|
27
34
|
failedRequests: number;
|
|
28
35
|
successfulRequests: number;
|
|
29
36
|
failurePercentage: number;
|
|
37
|
+
totalAttempts: number;
|
|
38
|
+
failedAttempts: number;
|
|
39
|
+
successfulAttempts: number;
|
|
40
|
+
attemptFailurePercentage: number;
|
|
30
41
|
config: Required<CircuitBreakerConfig>;
|
|
31
42
|
};
|
|
32
43
|
reset(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utilities/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAExD,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,kBAAkB,CAAa;IAEvC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,gBAAgB,CAAa;gBAEzB,MAAM,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utilities/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAExD,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,kBAAkB,CAAa;IAEvC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,kBAAkB,CAAa;IAEvC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,gBAAgB,CAAa;gBAEzB,MAAM,EAAE,oBAAoB;IAWlC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAqBpC,aAAa,IAAI,IAAI;IAerB,aAAa,IAAI,IAAI;IAcrB,oBAAoB,IAAI,IAAI;IAc5B,oBAAoB,IAAI,IAAI;IAY5B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,qBAAqB;IAM7B,QAAQ,IAAI;QACR,KAAK,EAAE,mBAAmB,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,wBAAwB,EAAE,MAAM,CAAC;QACjC,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;KAC1C;IAmBD,KAAK,IAAI,IAAI;IAOP,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAkBrD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI9B"}
|
|
@@ -5,6 +5,9 @@ export class CircuitBreaker {
|
|
|
5
5
|
totalRequests = 0;
|
|
6
6
|
failedRequests = 0;
|
|
7
7
|
successfulRequests = 0;
|
|
8
|
+
totalAttempts = 0;
|
|
9
|
+
failedAttempts = 0;
|
|
10
|
+
successfulAttempts = 0;
|
|
8
11
|
lastFailureTime = 0;
|
|
9
12
|
halfOpenRequests = 0;
|
|
10
13
|
halfOpenSuccesses = 0;
|
|
@@ -15,7 +18,8 @@ export class CircuitBreaker {
|
|
|
15
18
|
minimumRequests: Math.max(1, config.minimumRequests),
|
|
16
19
|
recoveryTimeoutMs: Math.max(100, config.recoveryTimeoutMs),
|
|
17
20
|
successThresholdPercentage: config.successThresholdPercentage ?? 50,
|
|
18
|
-
halfOpenMaxRequests: config.halfOpenMaxRequests ?? 5
|
|
21
|
+
halfOpenMaxRequests: config.halfOpenMaxRequests ?? 5,
|
|
22
|
+
trackIndividualAttempts: config.trackIndividualAttempts ?? false
|
|
19
23
|
};
|
|
20
24
|
}
|
|
21
25
|
async canExecute() {
|
|
@@ -44,7 +48,7 @@ export class CircuitBreaker {
|
|
|
44
48
|
this.checkHalfOpenTransition();
|
|
45
49
|
}
|
|
46
50
|
else if (this.state === CircuitBreakerState.CLOSED) {
|
|
47
|
-
if (this.
|
|
51
|
+
if (this.shouldResetCounters()) {
|
|
48
52
|
this.resetCounters();
|
|
49
53
|
}
|
|
50
54
|
}
|
|
@@ -62,6 +66,28 @@ export class CircuitBreaker {
|
|
|
62
66
|
this.checkThreshold();
|
|
63
67
|
}
|
|
64
68
|
}
|
|
69
|
+
recordAttemptSuccess() {
|
|
70
|
+
this.totalAttempts++;
|
|
71
|
+
this.successfulAttempts++;
|
|
72
|
+
if (this.state === CircuitBreakerState.CLOSED) {
|
|
73
|
+
if (this.config.trackIndividualAttempts) {
|
|
74
|
+
this.checkAttemptThreshold();
|
|
75
|
+
}
|
|
76
|
+
if (this.shouldResetCounters()) {
|
|
77
|
+
this.resetCounters();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
recordAttemptFailure() {
|
|
82
|
+
this.totalAttempts++;
|
|
83
|
+
this.failedAttempts++;
|
|
84
|
+
this.lastFailureTime = Date.now();
|
|
85
|
+
if (this.state === CircuitBreakerState.CLOSED) {
|
|
86
|
+
if (this.config.trackIndividualAttempts) {
|
|
87
|
+
this.checkAttemptThreshold();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
65
91
|
checkThreshold() {
|
|
66
92
|
if (this.totalRequests < this.config.minimumRequests) {
|
|
67
93
|
return;
|
|
@@ -71,6 +97,15 @@ export class CircuitBreaker {
|
|
|
71
97
|
this.transitionToOpen();
|
|
72
98
|
}
|
|
73
99
|
}
|
|
100
|
+
checkAttemptThreshold() {
|
|
101
|
+
if (this.totalAttempts < this.config.minimumRequests) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const failurePercentage = (this.failedAttempts / this.totalAttempts) * 100;
|
|
105
|
+
if (failurePercentage >= this.config.failureThresholdPercentage) {
|
|
106
|
+
this.transitionToOpen();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
74
109
|
checkHalfOpenTransition() {
|
|
75
110
|
if (this.halfOpenRequests >= this.config.halfOpenMaxRequests) {
|
|
76
111
|
const successPercentage = (this.halfOpenSuccesses / this.halfOpenRequests) * 100;
|
|
@@ -95,10 +130,19 @@ export class CircuitBreaker {
|
|
|
95
130
|
this.state = CircuitBreakerState.HALF_OPEN;
|
|
96
131
|
this.resetHalfOpenCounters();
|
|
97
132
|
}
|
|
133
|
+
shouldResetCounters() {
|
|
134
|
+
const threshold = this.config.trackIndividualAttempts
|
|
135
|
+
? this.totalAttempts >= this.config.minimumRequests * 10
|
|
136
|
+
: this.totalRequests >= this.config.minimumRequests * 10;
|
|
137
|
+
return threshold;
|
|
138
|
+
}
|
|
98
139
|
resetCounters() {
|
|
99
140
|
this.totalRequests = 0;
|
|
100
141
|
this.failedRequests = 0;
|
|
101
142
|
this.successfulRequests = 0;
|
|
143
|
+
this.totalAttempts = 0;
|
|
144
|
+
this.failedAttempts = 0;
|
|
145
|
+
this.successfulAttempts = 0;
|
|
102
146
|
}
|
|
103
147
|
resetHalfOpenCounters() {
|
|
104
148
|
this.halfOpenRequests = 0;
|
|
@@ -114,6 +158,12 @@ export class CircuitBreaker {
|
|
|
114
158
|
failurePercentage: this.totalRequests > 0
|
|
115
159
|
? (this.failedRequests / this.totalRequests) * 100
|
|
116
160
|
: 0,
|
|
161
|
+
totalAttempts: this.totalAttempts,
|
|
162
|
+
failedAttempts: this.failedAttempts,
|
|
163
|
+
successfulAttempts: this.successfulAttempts,
|
|
164
|
+
attemptFailurePercentage: this.totalAttempts > 0
|
|
165
|
+
? (this.failedAttempts / this.totalAttempts) * 100
|
|
166
|
+
: 0,
|
|
117
167
|
config: this.config
|
|
118
168
|
};
|
|
119
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utilities/circuit-breaker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,OAAO,cAAc;IACf,KAAK,GAAwB,mBAAmB,CAAC,MAAM,CAAC;IAC/C,MAAM,CAAiC;IAEhD,aAAa,GAAW,CAAC,CAAC;IAC1B,cAAc,GAAW,CAAC,CAAC;IAC3B,kBAAkB,GAAW,CAAC,CAAC;IAE/B,eAAe,GAAW,CAAC,CAAC;IAC5B,gBAAgB,GAAW,CAAC,CAAC;IAC7B,iBAAiB,GAAW,CAAC,CAAC;IAC9B,gBAAgB,GAAW,CAAC,CAAC;IAErC,YAAY,MAA4B;QACpC,IAAI,CAAC,MAAM,GAAG;YACV,0BAA0B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACzF,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;YACpD,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC;YAC1D,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,IAAI,EAAE;YACnE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utilities/circuit-breaker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,OAAO,cAAc;IACf,KAAK,GAAwB,mBAAmB,CAAC,MAAM,CAAC;IAC/C,MAAM,CAAiC;IAEhD,aAAa,GAAW,CAAC,CAAC;IAC1B,cAAc,GAAW,CAAC,CAAC;IAC3B,kBAAkB,GAAW,CAAC,CAAC;IAE/B,aAAa,GAAW,CAAC,CAAC;IAC1B,cAAc,GAAW,CAAC,CAAC;IAC3B,kBAAkB,GAAW,CAAC,CAAC;IAE/B,eAAe,GAAW,CAAC,CAAC;IAC5B,gBAAgB,GAAW,CAAC,CAAC;IAC7B,iBAAiB,GAAW,CAAC,CAAC;IAC9B,gBAAgB,GAAW,CAAC,CAAC;IAErC,YAAY,MAA4B;QACpC,IAAI,CAAC,MAAM,GAAG;YACV,0BAA0B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACzF,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;YACpD,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC;YAC1D,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,IAAI,EAAE;YACnE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,CAAC;YACpD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,KAAK;SACnE,CAAC;IACN,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;YAC/D,IAAI,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;QACnE,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,aAAa;QACT,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAED,aAAa;QACT,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBACtC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACjC,CAAC;YACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBACtC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAEO,cAAc;QAClB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACnD,OAAO;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;QAE3E,IAAI,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;YAC9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,qBAAqB;QACzB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACnD,OAAO;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;QAE3E,IAAI,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;YAC9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,uBAAuB;QAC3B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC3D,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC;YAEjF,IAAI,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;gBAC9D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,oBAAoB;QACxB,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,mBAAmB;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB;YACjD,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,EAAE;YACxD,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ;QAYJ,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,iBAAiB,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC;gBACrC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG;gBAClD,CAAC,CAAC,CAAC;YACP,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,wBAAwB,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC;gBAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG;gBAClD,CAAC,CAAC,CAAC;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;IACN,CAAC;IAED,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,EAAoB;QACjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAE3C,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,uBAAuB,CAC7B,sBAAsB,IAAI,CAAC,KAAK,oBAAoB,CACvD,CAAC;QACN,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;CACJ;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IAC1C,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-concurrently.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-concurrently.ts"],"names":[],"mappings":"AACA,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EACpB,oCAAoC,EACvC,MAAM,mBAAmB,CAAC;AAO3B,wBAAsB,mBAAmB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACnF,QAAQ,GAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAO,EACvE,uBAAuB,GAAE,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAM,GACtG,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"execute-concurrently.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-concurrently.ts"],"names":[],"mappings":"AACA,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EACpB,oCAAoC,EACvC,MAAM,mBAAmB,CAAC;AAO3B,wBAAsB,mBAAmB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACnF,QAAQ,GAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAO,EACvE,uBAAuB,GAAE,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAM,GACtG,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAiHnD"}
|
|
@@ -6,7 +6,6 @@ import { RateLimiter } from "./rate-limiter.js";
|
|
|
6
6
|
import { CircuitBreaker, CircuitBreakerOpenError } from "./circuit-breaker.js";
|
|
7
7
|
export async function executeConcurrently(requests = [], requestExecutionOptions = {}) {
|
|
8
8
|
const responses = [];
|
|
9
|
-
// Support both config and instance
|
|
10
9
|
const circuitBreaker = requestExecutionOptions.circuitBreaker
|
|
11
10
|
? (requestExecutionOptions.circuitBreaker instanceof CircuitBreaker
|
|
12
11
|
? requestExecutionOptions.circuitBreaker
|
|
@@ -14,26 +13,29 @@ export async function executeConcurrently(requests = [], requestExecutionOptions
|
|
|
14
13
|
: null;
|
|
15
14
|
const requestFunctions = requests.map((req) => {
|
|
16
15
|
return async () => {
|
|
17
|
-
if (circuitBreaker) {
|
|
16
|
+
if (circuitBreaker && !circuitBreaker.getState().config.trackIndividualAttempts) {
|
|
18
17
|
const canExecute = await circuitBreaker.canExecute();
|
|
19
18
|
if (!canExecute) {
|
|
20
|
-
throw new CircuitBreakerOpenError(`Circuit breaker is ${circuitBreaker.getState().state}. Request blocked.`);
|
|
19
|
+
throw new CircuitBreakerOpenError(`stable-request: Circuit breaker is ${circuitBreaker.getState().state}. Request blocked.`);
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
22
|
const finalRequestOptions = {
|
|
24
23
|
reqData: prepareApiRequestData(req, requestExecutionOptions),
|
|
25
24
|
...prepareApiRequestOptions(req, requestExecutionOptions),
|
|
26
|
-
commonBuffer: requestExecutionOptions.sharedBuffer ?? req.requestOptions.commonBuffer
|
|
25
|
+
commonBuffer: requestExecutionOptions.sharedBuffer ?? req.requestOptions.commonBuffer,
|
|
26
|
+
...(circuitBreaker ? { circuitBreaker } : {})
|
|
27
27
|
};
|
|
28
28
|
try {
|
|
29
29
|
const result = await stableRequest(finalRequestOptions);
|
|
30
|
-
if (circuitBreaker) {
|
|
30
|
+
if (circuitBreaker && !circuitBreaker.getState().config.trackIndividualAttempts) {
|
|
31
31
|
circuitBreaker.recordSuccess();
|
|
32
32
|
}
|
|
33
33
|
return result;
|
|
34
34
|
}
|
|
35
35
|
catch (error) {
|
|
36
|
-
if (circuitBreaker &&
|
|
36
|
+
if (circuitBreaker &&
|
|
37
|
+
!(error instanceof CircuitBreakerOpenError) &&
|
|
38
|
+
!circuitBreaker.getState().config.trackIndividualAttempts) {
|
|
37
39
|
circuitBreaker.recordFailure();
|
|
38
40
|
}
|
|
39
41
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-concurrently.js","sourceRoot":"","sources":["../../src/utilities/execute-concurrently.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,WAAqE,EAAE,EACvE,0BAAmG,EAAE;IAErG,MAAM,SAAS,GAA6C,EAAE,CAAC;IAE/D,
|
|
1
|
+
{"version":3,"file":"execute-concurrently.js","sourceRoot":"","sources":["../../src/utilities/execute-concurrently.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-phase.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-phase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,wBAAsB,YAAY,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAC5E,KAAK,EAAE,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAC/D,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,oBAAoB,EAAE,GAAG,EACzB,aAAa,EAAE,GAAG,EAAE,EACpB,eAAe,EAAE,OAAO,EACxB,qBAAqB,EAAE,QAAQ,EAC/B,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,GAAG,EACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"execute-phase.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-phase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,wBAAsB,YAAY,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAC5E,KAAK,EAAE,qBAAqB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAC/D,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,oBAAoB,EAAE,GAAG,EACzB,aAAa,EAAE,GAAG,EAAE,EACpB,eAAe,EAAE,OAAO,EACxB,qBAAqB,EAAE,QAAQ,EAC/B,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,GAAG,EACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;;;GA2ErC"}
|
|
@@ -11,15 +11,12 @@ export async function executePhase(phase, phaseIndex, workflowId, commonGatewayO
|
|
|
11
11
|
requestGroups,
|
|
12
12
|
sharedBuffer
|
|
13
13
|
};
|
|
14
|
-
// Phase-level maxConcurrentRequests overrides workflow-level
|
|
15
14
|
if (phase.maxConcurrentRequests !== undefined) {
|
|
16
15
|
phaseGatewayOptions.maxConcurrentRequests = phase.maxConcurrentRequests;
|
|
17
16
|
}
|
|
18
|
-
// Phase-level rateLimit overrides workflow-level
|
|
19
17
|
if (phase.rateLimit !== undefined) {
|
|
20
18
|
phaseGatewayOptions.rateLimit = phase.rateLimit;
|
|
21
19
|
}
|
|
22
|
-
// Phase-level circuitBreaker overrides workflow-level
|
|
23
20
|
if (phase.circuitBreaker !== undefined) {
|
|
24
21
|
phaseGatewayOptions.circuitBreaker = phase.circuitBreaker;
|
|
25
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-phase.js","sourceRoot":"","sources":["../../src/utilities/execute-phase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,KAA+D,EAC/D,UAAkB,EAClB,UAAkB,EAClB,oBAAyB,EACzB,aAAoB,EACpB,eAAwB,EACxB,qBAA+B,EAC/B,oBAA4B,EAC5B,kBAAuB,EACvB,YAAkC;IAElC,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,SAAS,UAAU,GAAG,CAAC,EAAE,CAAC;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAElC,MAAM,mBAAmB,GAAG;QACxB,GAAG,oBAAoB;QACvB,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;QAC7B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,IAAI;QACtD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,KAAK;QACjD,aAAa;QACb,YAAY;KACf,CAAC;IAEF,
|
|
1
|
+
{"version":3,"file":"execute-phase.js","sourceRoot":"","sources":["../../src/utilities/execute-phase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,KAA+D,EAC/D,UAAkB,EAClB,UAAkB,EAClB,oBAAyB,EACzB,aAAoB,EACpB,eAAwB,EACxB,qBAA+B,EAC/B,oBAA4B,EAC5B,kBAAuB,EACvB,YAAkC;IAElC,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,SAAS,UAAU,GAAG,CAAC,EAAE,CAAC;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAElC,MAAM,mBAAmB,GAAG;QACxB,GAAG,oBAAoB;QACvB,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;QAC7B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,IAAI,IAAI;QACtD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,KAAK;QACjD,aAAa;QACb,YAAY;KACf,CAAC;IAEF,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QAC5C,mBAAmB,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC;IAC5E,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChC,mBAAmB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACpD,CAAC;IAED,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrC,mBAAmB,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC9D,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,gBAAgB,CACzC,KAAK,CAAC,QAAQ,EACd,mBAAmB,CACtB,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;IACvD,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAExE,MAAM,WAAW,GAAG;QAChB,OAAO;QACP,UAAU;QACV,OAAO,EAAE,iBAAiB,KAAK,CAAC;QAChC,aAAa,EAAE,kBAAkB;QACjC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;QACjD,aAAa,EAAE,cAAc,CAAC,MAAM;QACpC,kBAAkB,EAAE,iBAAiB;QACrC,cAAc,EAAE,iBAAiB;QACjC,SAAS,EAAE,cAAc;KAC5B,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CACR,8BAA8B,UAAU,WAAW,OAAO,aAAa,EACvE,GAAG,iBAAiB,IAAI,cAAc,CAAC,MAAM,aAAa,EAC1D,IAAI,kBAAkB,KAAK,CAC9B,CAAC;IACN,CAAC;IAED,IAAI,qBAAqB,EAAE,CAAC;QACxB,IAAI,CAAC;YACD,MAAM,4BAA4B,CAC9B,qBAAqB,EAAE;gBACnB,UAAU;gBACV,WAAW;gBACX,oBAAoB;gBACpB,MAAM,EAAE,kBAAkB,EAAE,2BAA2B;gBACvD,YAAY;aACf,CACJ,CAAC;QACN,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CACT,8BAA8B,UAAU,wCAAwC,EAChF,SAAS,CACZ,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-sequentially.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EACpB,oCAAoC,EACvC,MAAM,mBAAmB,CAAC;AAG3B,wBAAsB,mBAAmB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACnF,QAAQ,GAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAO,EACvE,uBAAuB,GAAE,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAM,GACtG,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"execute-sequentially.d.ts","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EACpB,oCAAoC,EACvC,MAAM,mBAAmB,CAAC;AAG3B,wBAAsB,mBAAmB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EACnF,QAAQ,GAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAO,EACvE,uBAAuB,GAAE,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAM,GACtG,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAuEnD"}
|
|
@@ -4,7 +4,6 @@ import { prepareApiRequestOptions } from './prepare-api-request-options.js';
|
|
|
4
4
|
import { CircuitBreaker, CircuitBreakerOpenError } from "./circuit-breaker.js";
|
|
5
5
|
export async function executeSequentially(requests = [], requestExecutionOptions = {}) {
|
|
6
6
|
const responses = [];
|
|
7
|
-
// Support both config and instance
|
|
8
7
|
const circuitBreaker = requestExecutionOptions.circuitBreaker
|
|
9
8
|
? (requestExecutionOptions.circuitBreaker instanceof CircuitBreaker
|
|
10
9
|
? requestExecutionOptions.circuitBreaker
|
|
@@ -13,19 +12,20 @@ export async function executeSequentially(requests = [], requestExecutionOptions
|
|
|
13
12
|
for (let i = 0; i < requests.length; i++) {
|
|
14
13
|
const req = requests[i];
|
|
15
14
|
try {
|
|
16
|
-
if (circuitBreaker) {
|
|
15
|
+
if (circuitBreaker && !circuitBreaker.getState().config.trackIndividualAttempts) {
|
|
17
16
|
const canExecute = await circuitBreaker.canExecute();
|
|
18
17
|
if (!canExecute) {
|
|
19
|
-
throw new CircuitBreakerOpenError(`Circuit breaker is ${circuitBreaker.getState().state}. Request blocked.`);
|
|
18
|
+
throw new CircuitBreakerOpenError(`stable-request: Circuit breaker is ${circuitBreaker.getState().state}. Request blocked.`);
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
21
|
const finalRequestOptions = {
|
|
23
22
|
reqData: prepareApiRequestData(req, requestExecutionOptions),
|
|
24
23
|
...prepareApiRequestOptions(req, requestExecutionOptions),
|
|
25
|
-
commonBuffer: requestExecutionOptions.sharedBuffer ?? req.requestOptions.commonBuffer
|
|
24
|
+
commonBuffer: requestExecutionOptions.sharedBuffer ?? req.requestOptions.commonBuffer,
|
|
25
|
+
...(circuitBreaker ? { circuitBreaker } : {})
|
|
26
26
|
};
|
|
27
27
|
const stableReq = await stableRequest(finalRequestOptions);
|
|
28
|
-
if (circuitBreaker) {
|
|
28
|
+
if (circuitBreaker && !circuitBreaker.getState().config.trackIndividualAttempts) {
|
|
29
29
|
circuitBreaker.recordSuccess();
|
|
30
30
|
}
|
|
31
31
|
const isSuccess = stableReq !== false;
|
|
@@ -40,7 +40,9 @@ export async function executeSequentially(requests = [], requestExecutionOptions
|
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
catch (error) {
|
|
43
|
-
if (circuitBreaker &&
|
|
43
|
+
if (circuitBreaker &&
|
|
44
|
+
!(error instanceof CircuitBreakerOpenError) &&
|
|
45
|
+
!circuitBreaker.getState().config.trackIndividualAttempts) {
|
|
44
46
|
circuitBreaker.recordFailure();
|
|
45
47
|
}
|
|
46
48
|
const isCircuitBreakerError = error instanceof CircuitBreakerOpenError;
|
|
@@ -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;AAM5E,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,WAAqE,EAAE,EACvE,0BAAmG,EAAE;IAErG,MAAM,SAAS,GAA6C,EAAE,CAAC;IAE/D,
|
|
1
|
+
{"version":3,"file":"execute-sequentially.js","sourceRoot":"","sources":["../../src/utilities/execute-sequentially.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { CacheManager, getGlobalCacheManager, resetGlobalCacheManager } from './cache-manager.js';
|
|
1
2
|
export { CircuitBreaker, CircuitBreakerOpenError } from './circuit-breaker.js';
|
|
2
3
|
export { ConcurrencyLimiter } from './concurrency-limiter.js';
|
|
3
4
|
export { delay } from './delay.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,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
|
+
{"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"}
|
package/dist/utilities/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { CacheManager, getGlobalCacheManager, resetGlobalCacheManager } from './cache-manager.js';
|
|
1
2
|
export { CircuitBreaker, CircuitBreakerOpenError } from './circuit-breaker.js';
|
|
2
3
|
export { ConcurrencyLimiter } from './concurrency-limiter.js';
|
|
3
4
|
export { delay } from './delay.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,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
|
+
{"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;
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/utilities/req-fn.js
CHANGED
|
@@ -1,30 +1,52 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { safelyStringify } from './safely-stringify.js';
|
|
3
3
|
import { isRetryableError } from './is-retryable-error.js';
|
|
4
|
-
|
|
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);
|
|
11
28
|
if (trialCondition) {
|
|
12
29
|
console.error('stable-request: Request failed in trial mode.\nRequest data:\n', safelyStringify(reqData, maxSerializableChars));
|
|
13
|
-
throw new Error('Request failed in trial mode.');
|
|
30
|
+
throw new Error('stable-request: 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:
|
|
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;
|
|
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.5.
|
|
3
|
+
"version": "1.5.2",
|
|
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",
|