@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.
- 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-api-gateway.d.ts.map +1 -1
- package/dist/core/stable-api-gateway.js +4 -1
- package/dist/core/stable-api-gateway.js.map +1 -1
- package/dist/core/stable-request.d.ts.map +1 -1
- package/dist/core/stable-request.js +8 -2
- 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 +13 -5
- package/dist/core/stable-workflow.js.map +1 -1
- package/dist/enums/index.d.ts +5 -0
- package/dist/enums/index.d.ts.map +1 -1
- package/dist/enums/index.js +6 -0
- package/dist/enums/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +42 -5
- 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 +38 -0
- package/dist/utilities/circuit-breaker.d.ts.map +1 -0
- package/dist/utilities/circuit-breaker.js +148 -0
- package/dist/utilities/circuit-breaker.js.map +1 -0
- package/dist/utilities/concurrency-limiter.d.ts +11 -0
- package/dist/utilities/concurrency-limiter.d.ts.map +1 -0
- package/dist/utilities/concurrency-limiter.js +38 -0
- package/dist/utilities/concurrency-limiter.js.map +1 -0
- package/dist/utilities/execute-concurrently.d.ts.map +1 -1
- package/dist/utilities/execute-concurrently.js +63 -8
- 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 +9 -0
- 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 +33 -7
- package/dist/utilities/execute-sequentially.js.map +1 -1
- package/dist/utilities/index.d.ts +4 -0
- package/dist/utilities/index.d.ts.map +1 -1
- package/dist/utilities/index.js +4 -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/rate-limiter.d.ts +21 -0
- package/dist/utilities/rate-limiter.d.ts.map +1 -0
- package/dist/utilities/rate-limiter.js +72 -0
- package/dist/utilities/rate-limiter.js.map +1 -0
- 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 +32 -6
- package/dist/utilities/req-fn.js.map +1 -1
- 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
|
-
|
|
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
|
|
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:
|
|
18
|
-
...(
|
|
19
|
-
...(!
|
|
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 (
|
|
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:
|
|
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;
|
|
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"}
|
package/dist/utilities/index.js
CHANGED
|
@@ -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;
|
|
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"}
|
|
@@ -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;
|
|
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,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
|
-
|
|
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:
|
|
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.
|
|
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",
|