bytekit 2.2.3 → 2.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +7 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/swagger-generator.d.ts.map +1 -1
- package/dist/cli/swagger-generator.js +9 -0
- package/dist/cli/swagger-generator.js.map +1 -1
- package/dist/cli/type-generator.d.ts.map +1 -1
- package/dist/cli/type-generator.js +5 -0
- package/dist/cli/type-generator.js.map +1 -1
- package/dist/utils/async/request-batcher.d.ts.map +1 -1
- package/dist/utils/async/request-batcher.js +1 -0
- package/dist/utils/async/request-batcher.js.map +1 -1
- package/dist/utils/async/throttle.d.ts.map +1 -1
- package/dist/utils/async/throttle.js +1 -0
- package/dist/utils/async/throttle.js.map +1 -1
- package/dist/utils/core/ApiClient.d.ts.map +1 -1
- package/dist/utils/core/ApiClient.js +12 -1
- package/dist/utils/core/ApiClient.js.map +1 -1
- package/dist/utils/core/ErrorBoundary.d.ts.map +1 -1
- package/dist/utils/core/ErrorBoundary.js +18 -5
- package/dist/utils/core/ErrorBoundary.js.map +1 -1
- package/dist/utils/core/Logger.d.ts +191 -0
- package/dist/utils/core/Logger.d.ts.map +1 -1
- package/dist/utils/core/Logger.js +155 -0
- package/dist/utils/core/Logger.js.map +1 -1
- package/dist/utils/core/Profiler.d.ts +41 -0
- package/dist/utils/core/Profiler.d.ts.map +1 -1
- package/dist/utils/core/Profiler.js +59 -0
- package/dist/utils/core/Profiler.js.map +1 -1
- package/dist/utils/core/RateLimiter.d.ts.map +1 -1
- package/dist/utils/core/RateLimiter.js +2 -0
- package/dist/utils/core/RateLimiter.js.map +1 -1
- package/dist/utils/core/ResponseValidator.d.ts +56 -0
- package/dist/utils/core/ResponseValidator.d.ts.map +1 -1
- package/dist/utils/core/ResponseValidator.js +28 -0
- package/dist/utils/core/ResponseValidator.js.map +1 -1
- package/dist/utils/core/RetryPolicy.d.ts +144 -0
- package/dist/utils/core/RetryPolicy.d.ts.map +1 -1
- package/dist/utils/core/RetryPolicy.js +108 -0
- package/dist/utils/core/RetryPolicy.js.map +1 -1
- package/dist/utils/helpers/CacheManager.d.ts.map +1 -1
- package/dist/utils/helpers/CacheManager.js +5 -0
- package/dist/utils/helpers/CacheManager.js.map +1 -1
- package/dist/utils/helpers/CompressionUtils.d.ts.map +1 -1
- package/dist/utils/helpers/CompressionUtils.js +21 -4
- package/dist/utils/helpers/CompressionUtils.js.map +1 -1
- package/dist/utils/helpers/CryptoUtils.d.ts.map +1 -1
- package/dist/utils/helpers/CryptoUtils.js +15 -3
- package/dist/utils/helpers/CryptoUtils.js.map +1 -1
- package/dist/utils/helpers/EnvManager.d.ts +46 -0
- package/dist/utils/helpers/EnvManager.d.ts.map +1 -1
- package/dist/utils/helpers/EnvManager.js +46 -0
- package/dist/utils/helpers/EnvManager.js.map +1 -1
- package/dist/utils/helpers/EventEmitter.d.ts.map +1 -1
- package/dist/utils/helpers/EventEmitter.js +0 -3
- package/dist/utils/helpers/EventEmitter.js.map +1 -1
- package/dist/utils/helpers/StorageUtils.d.ts +62 -0
- package/dist/utils/helpers/StorageUtils.d.ts.map +1 -1
- package/dist/utils/helpers/StorageUtils.js +62 -0
- package/dist/utils/helpers/StorageUtils.js.map +1 -1
- package/dist/utils/helpers/StreamingHelper.d.ts.map +1 -1
- package/dist/utils/helpers/StreamingHelper.js +7 -1
- package/dist/utils/helpers/StreamingHelper.js.map +1 -1
- package/dist/utils/helpers/UrlHelper.d.ts +30 -0
- package/dist/utils/helpers/UrlHelper.d.ts.map +1 -1
- package/dist/utils/helpers/UrlHelper.js +23 -1
- package/dist/utils/helpers/UrlHelper.js.map +1 -1
- package/dist/utils/helpers/WebSocketHelper.d.ts.map +1 -1
- package/dist/utils/helpers/WebSocketHelper.js +6 -2
- package/dist/utils/helpers/WebSocketHelper.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../../src/utils/core/RateLimiter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../../src/utils/core/RateLimiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,47 @@
|
|
|
1
|
+
/** Schema definition used by {@link ResponseValidator.validate}. */
|
|
1
2
|
export interface ValidationSchema {
|
|
3
|
+
/** Expected data type of the value being validated. */
|
|
2
4
|
type?: "object" | "array" | "string" | "number" | "boolean";
|
|
5
|
+
/** When `true`, a `null` or `undefined` value is reported as an error. */
|
|
3
6
|
required?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Schemas for named properties of an object. Only evaluated when
|
|
9
|
+
* `type` is `"object"`.
|
|
10
|
+
*/
|
|
4
11
|
properties?: Record<string, ValidationSchema>;
|
|
12
|
+
/**
|
|
13
|
+
* Schema applied to every element of an array. Only evaluated when
|
|
14
|
+
* `type` is `"array"`.
|
|
15
|
+
*/
|
|
5
16
|
items?: ValidationSchema;
|
|
17
|
+
/** Minimum string length (inclusive). Only evaluated when `type` is `"string"`. */
|
|
6
18
|
minLength?: number;
|
|
19
|
+
/** Maximum string length (inclusive). Only evaluated when `type` is `"string"`. */
|
|
7
20
|
maxLength?: number;
|
|
21
|
+
/** Minimum numeric value (inclusive). Only evaluated when `type` is `"number"`. */
|
|
8
22
|
minimum?: number;
|
|
23
|
+
/** Maximum numeric value (inclusive). Only evaluated when `type` is `"number"`. */
|
|
9
24
|
maximum?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Regular expression (or pattern string) that string values must match.
|
|
27
|
+
* Only evaluated when `type` is `"string"`.
|
|
28
|
+
*/
|
|
10
29
|
pattern?: RegExp | string;
|
|
30
|
+
/** Set of allowed values; validated using strict equality (`===`). */
|
|
11
31
|
enum?: unknown[];
|
|
32
|
+
/**
|
|
33
|
+
* Custom validation function. Return `true` to pass, `false` to fail with
|
|
34
|
+
* a generic message, or a `string` to fail with that message.
|
|
35
|
+
*/
|
|
12
36
|
custom?: (value: unknown) => boolean | string;
|
|
13
37
|
}
|
|
38
|
+
/** Describes a single validation failure produced by {@link ResponseValidator.validate}. */
|
|
14
39
|
export interface ValidationError {
|
|
40
|
+
/** Dot-notation path to the invalid field (e.g., `"root.user.email"`). */
|
|
15
41
|
path: string;
|
|
42
|
+
/** Human-readable description of why the value failed validation. */
|
|
16
43
|
message: string;
|
|
44
|
+
/** The actual value that failed validation, if captured. */
|
|
17
45
|
value?: unknown;
|
|
18
46
|
}
|
|
19
47
|
export declare class ResponseValidator {
|
|
@@ -25,6 +53,34 @@ export declare class ResponseValidator {
|
|
|
25
53
|
* Validates custom validation rules
|
|
26
54
|
*/
|
|
27
55
|
private static validateCustom;
|
|
56
|
+
/**
|
|
57
|
+
* Validates `data` against a {@link ValidationSchema} and returns all
|
|
58
|
+
* validation errors found.
|
|
59
|
+
*
|
|
60
|
+
* Performs a recursive deep validation of objects and arrays. Returns an
|
|
61
|
+
* empty array when `data` is fully valid.
|
|
62
|
+
*
|
|
63
|
+
* @param data - The value to validate (any type).
|
|
64
|
+
* @param schema - Schema describing the expected shape and constraints.
|
|
65
|
+
* @param path - Dot-notation path prefix used in error messages.
|
|
66
|
+
* Defaults to `"root"`.
|
|
67
|
+
* @returns An array of {@link ValidationError} objects; empty when valid.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const errors = ResponseValidator.validate(
|
|
72
|
+
* { name: 'Alice', age: -1 },
|
|
73
|
+
* {
|
|
74
|
+
* type: 'object',
|
|
75
|
+
* properties: {
|
|
76
|
+
* name: { type: 'string', required: true },
|
|
77
|
+
* age: { type: 'number', minimum: 0 },
|
|
78
|
+
* },
|
|
79
|
+
* },
|
|
80
|
+
* );
|
|
81
|
+
* // [{ path: 'root.age', message: 'Number must be at least 0', value: -1 }]
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
28
84
|
static validate(data: unknown, schema: ValidationSchema, path?: string): ValidationError[];
|
|
29
85
|
private static validateObject;
|
|
30
86
|
private static validateArray;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseValidator.d.ts","sourceRoot":"","sources":["../../../src/utils/core/ResponseValidator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,iBAAiB;IAC1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAgC7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAwB7B,MAAM,CAAC,QAAQ,CACX,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,gBAAgB,EACxB,IAAI,SAAS,GACd,eAAe,EAAE;IAuCpB,OAAO,CAAC,MAAM,CAAC,cAAc;IAkB7B,OAAO,CAAC,MAAM,CAAC,aAAa;IAiB5B,OAAO,CAAC,MAAM,CAAC,cAAc;IAgD7B,OAAO,CAAC,MAAM,CAAC,cAAc;IAkC7B,OAAO,CAAC,MAAM,CAAC,eAAe;CAiBjC"}
|
|
1
|
+
{"version":3,"file":"ResponseValidator.d.ts","sourceRoot":"","sources":["../../../src/utils/core/ResponseValidator.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC7B,uDAAuD;IACvD,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5D,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C;;;OAGG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,sEAAsE;IACtE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,CAAC;CACjD;AAED,4FAA4F;AAC5F,MAAM,WAAW,eAAe;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,iBAAiB;IAC1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAgC7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAwB7B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,QAAQ,CACX,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,gBAAgB,EACxB,IAAI,SAAS,GACd,eAAe,EAAE;IAuCpB,OAAO,CAAC,MAAM,CAAC,cAAc;IAkB7B,OAAO,CAAC,MAAM,CAAC,aAAa;IAiB5B,OAAO,CAAC,MAAM,CAAC,cAAc;IAgD7B,OAAO,CAAC,MAAM,CAAC,cAAc;IAkC7B,OAAO,CAAC,MAAM,CAAC,eAAe;CAiBjC"}
|
|
@@ -42,6 +42,34 @@ export class ResponseValidator {
|
|
|
42
42
|
}
|
|
43
43
|
return errors;
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Validates `data` against a {@link ValidationSchema} and returns all
|
|
47
|
+
* validation errors found.
|
|
48
|
+
*
|
|
49
|
+
* Performs a recursive deep validation of objects and arrays. Returns an
|
|
50
|
+
* empty array when `data` is fully valid.
|
|
51
|
+
*
|
|
52
|
+
* @param data - The value to validate (any type).
|
|
53
|
+
* @param schema - Schema describing the expected shape and constraints.
|
|
54
|
+
* @param path - Dot-notation path prefix used in error messages.
|
|
55
|
+
* Defaults to `"root"`.
|
|
56
|
+
* @returns An array of {@link ValidationError} objects; empty when valid.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const errors = ResponseValidator.validate(
|
|
61
|
+
* { name: 'Alice', age: -1 },
|
|
62
|
+
* {
|
|
63
|
+
* type: 'object',
|
|
64
|
+
* properties: {
|
|
65
|
+
* name: { type: 'string', required: true },
|
|
66
|
+
* age: { type: 'number', minimum: 0 },
|
|
67
|
+
* },
|
|
68
|
+
* },
|
|
69
|
+
* );
|
|
70
|
+
* // [{ path: 'root.age', message: 'Number must be at least 0', value: -1 }]
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
45
73
|
static validate(data, schema, path = "root") {
|
|
46
74
|
const errors = [];
|
|
47
75
|
// Check required
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseValidator.js","sourceRoot":"","sources":["../../../src/utils/core/ResponseValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ResponseValidator.js","sourceRoot":"","sources":["../../../src/utils/core/ResponseValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,70 @@
|
|
|
1
|
+
/** Configuration options for the {@link RetryPolicy} class. */
|
|
1
2
|
export interface RetryConfig {
|
|
3
|
+
/** Maximum number of attempts before giving up. Defaults to `3`. */
|
|
2
4
|
maxAttempts?: number;
|
|
5
|
+
/** Delay in milliseconds before the first retry. Defaults to `100`. */
|
|
3
6
|
initialDelayMs?: number;
|
|
7
|
+
/** Maximum delay in milliseconds between retries. Defaults to `10000`. */
|
|
4
8
|
maxDelayMs?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Multiplier applied to the delay after each failed attempt (exponential
|
|
11
|
+
* backoff). Defaults to `2`.
|
|
12
|
+
*/
|
|
5
13
|
backoffMultiplier?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Predicate that determines whether a given error should trigger a retry.
|
|
16
|
+
* Receives the error and the current attempt number (1-based).
|
|
17
|
+
* Defaults to retrying on network errors and HTTP 408 / 429 / 5xx status codes.
|
|
18
|
+
*/
|
|
6
19
|
shouldRetry?: (error: Error, attempt: number) => boolean;
|
|
7
20
|
}
|
|
21
|
+
/** Configuration options for the {@link CircuitBreaker} class. */
|
|
8
22
|
export interface CircuitBreakerConfig {
|
|
23
|
+
/**
|
|
24
|
+
* Number of consecutive failures required to open the circuit.
|
|
25
|
+
* Defaults to `5`.
|
|
26
|
+
*/
|
|
9
27
|
failureThreshold?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Number of consecutive successes in `half-open` state required to close
|
|
30
|
+
* the circuit. Defaults to `2`.
|
|
31
|
+
*/
|
|
10
32
|
successThreshold?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Time in milliseconds to wait in `open` state before attempting a reset
|
|
35
|
+
* to `half-open`. Defaults to `60000` (60 seconds).
|
|
36
|
+
*/
|
|
11
37
|
timeoutMs?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Optional function to customise the error message thrown when the circuit
|
|
40
|
+
* is open. Receives the number of milliseconds until the next reset attempt.
|
|
41
|
+
*/
|
|
12
42
|
errorMessageFormatter?: (ms: number) => string;
|
|
13
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Possible states of a {@link CircuitBreaker}.
|
|
46
|
+
*
|
|
47
|
+
* - `"closed"` — normal operation; requests are forwarded.
|
|
48
|
+
* - `"open"` — circuit is tripped; requests are rejected immediately.
|
|
49
|
+
* - `"half-open"` — circuit is testing recovery; limited requests are forwarded.
|
|
50
|
+
*/
|
|
14
51
|
export type CircuitBreakerState = "closed" | "open" | "half-open";
|
|
52
|
+
/**
|
|
53
|
+
* Implements the Circuit Breaker pattern to prevent cascading failures.
|
|
54
|
+
*
|
|
55
|
+
* The breaker transitions between three states: `closed` (normal operation),
|
|
56
|
+
* `open` (tripped after too many failures), and `half-open` (testing recovery).
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const breaker = new CircuitBreaker({ failureThreshold: 3, timeoutMs: 5000 });
|
|
61
|
+
* try {
|
|
62
|
+
* const result = await breaker.execute(() => fetchData());
|
|
63
|
+
* } catch (error) {
|
|
64
|
+
* // Either the underlying call failed, or the circuit is open.
|
|
65
|
+
* }
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
15
68
|
export declare class CircuitBreaker {
|
|
16
69
|
private state;
|
|
17
70
|
private failureCount;
|
|
@@ -21,26 +74,117 @@ export declare class CircuitBreaker {
|
|
|
21
74
|
private readonly successThreshold;
|
|
22
75
|
private readonly timeoutMs;
|
|
23
76
|
private readonly errorMessageFormatter?;
|
|
77
|
+
/**
|
|
78
|
+
* Creates a new `CircuitBreaker` instance.
|
|
79
|
+
*
|
|
80
|
+
* @param config - Circuit breaker configuration.
|
|
81
|
+
*/
|
|
24
82
|
constructor(config?: CircuitBreakerConfig);
|
|
83
|
+
/**
|
|
84
|
+
* Executes a function through the circuit breaker.
|
|
85
|
+
*
|
|
86
|
+
* When the circuit is `open`, immediately throws without calling `fn`.
|
|
87
|
+
* When `closed` or `half-open`, calls `fn` and tracks the outcome to
|
|
88
|
+
* update the circuit state.
|
|
89
|
+
*
|
|
90
|
+
* @template T - The return type of the wrapped function.
|
|
91
|
+
* @param fn - Async function to execute.
|
|
92
|
+
* @returns The resolved value of `fn`.
|
|
93
|
+
* @throws {Error} If the circuit is open and the timeout has not elapsed.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const data = await breaker.execute(() =>
|
|
98
|
+
* fetch('/api/data').then((r) => r.json()),
|
|
99
|
+
* );
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
25
102
|
execute<T>(fn: () => Promise<T>): Promise<T>;
|
|
103
|
+
/** @internal */
|
|
26
104
|
private onSuccess;
|
|
105
|
+
/** @internal */
|
|
27
106
|
private onFailure;
|
|
107
|
+
/** @internal */
|
|
28
108
|
private shouldAttemptReset;
|
|
109
|
+
/** @internal */
|
|
29
110
|
private getRetryAfterMs;
|
|
111
|
+
/**
|
|
112
|
+
* Returns the current state of the circuit breaker.
|
|
113
|
+
*
|
|
114
|
+
* @returns The current {@link CircuitBreakerState}.
|
|
115
|
+
*/
|
|
30
116
|
getState(): CircuitBreakerState;
|
|
117
|
+
/**
|
|
118
|
+
* Manually resets the circuit breaker to `closed` state.
|
|
119
|
+
*
|
|
120
|
+
* Clears all failure and success counters. Useful in tests or when
|
|
121
|
+
* manually recovering from an incident.
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* breaker.reset();
|
|
126
|
+
* console.log(breaker.getState()); // "closed"
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
31
129
|
reset(): void;
|
|
32
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Implements a retry policy with configurable exponential backoff and jitter.
|
|
133
|
+
*
|
|
134
|
+
* Automatically retries a failing async operation up to a configured maximum
|
|
135
|
+
* number of attempts, applying a jittered exponential delay between each
|
|
136
|
+
* attempt to avoid thundering-herd problems.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* const policy = new RetryPolicy({ maxAttempts: 5, initialDelayMs: 200 });
|
|
141
|
+
* const data = await policy.execute(() => fetchData());
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
33
144
|
export declare class RetryPolicy {
|
|
34
145
|
private readonly maxAttempts;
|
|
35
146
|
private readonly initialDelayMs;
|
|
36
147
|
private readonly maxDelayMs;
|
|
37
148
|
private readonly backoffMultiplier;
|
|
38
149
|
private readonly shouldRetry;
|
|
150
|
+
/**
|
|
151
|
+
* Creates a new `RetryPolicy` instance.
|
|
152
|
+
*
|
|
153
|
+
* @param config - Retry configuration.
|
|
154
|
+
*/
|
|
39
155
|
constructor(config?: RetryConfig);
|
|
156
|
+
/**
|
|
157
|
+
* Executes a function, retrying on failure according to the configured policy.
|
|
158
|
+
*
|
|
159
|
+
* @template T - The return type of the wrapped function.
|
|
160
|
+
* @param fn - Async function to execute and potentially retry.
|
|
161
|
+
* @returns The resolved value of `fn` on a successful attempt.
|
|
162
|
+
* @throws {Error} The last encountered error once all attempts are exhausted.
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```typescript
|
|
166
|
+
* const result = await policy.execute(() =>
|
|
167
|
+
* fetch('/api').then((r) => r.json()),
|
|
168
|
+
* );
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
40
171
|
execute<T>(fn: () => Promise<T>): Promise<T>;
|
|
172
|
+
/** @internal */
|
|
41
173
|
private calculateDelay;
|
|
174
|
+
/** @internal */
|
|
42
175
|
private sleep;
|
|
176
|
+
/** @internal */
|
|
43
177
|
private isRetryableError;
|
|
178
|
+
/**
|
|
179
|
+
* Returns a snapshot of the policy's current configuration.
|
|
180
|
+
*
|
|
181
|
+
* @returns An object containing all configured retry parameters.
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* const { maxAttempts, initialDelayMs } = policy.getConfig();
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
44
188
|
getConfig(): {
|
|
45
189
|
maxAttempts: number;
|
|
46
190
|
initialDelayMs: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetryPolicy.d.ts","sourceRoot":"","sources":["../../../src/utils/core/RetryPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5D;AAED,MAAM,WAAW,oBAAoB;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAElE,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAyB;
|
|
1
|
+
{"version":3,"file":"RetryPolicy.d.ts","sourceRoot":"","sources":["../../../src/utils/core/RetryPolicy.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IACxB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5D;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAyB;IAEhE;;;;OAIG;gBACS,MAAM,GAAE,oBAAyB;IAO7C;;;;;;;;;;;;;;;;;;OAkBG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA8BlD,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAYjB,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAUjB,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAO1B,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;IACH,QAAQ,IAAI,mBAAmB;IAI/B;;;;;;;;;;;OAWG;IACH,KAAK,IAAI,IAAI;CAMhB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6C;IAEzE;;;;OAIG;gBACS,MAAM,GAAE,WAAgB;IASpC;;;;;;;;;;;;;;OAcG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBlD,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAUtB,gBAAgB;IAChB,OAAO,CAAC,KAAK;IAIb,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAgBxB;;;;;;;;;OASG;IACH,SAAS,IAAI;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;KAC3D;CASJ"}
|
|
@@ -1,4 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implements the Circuit Breaker pattern to prevent cascading failures.
|
|
3
|
+
*
|
|
4
|
+
* The breaker transitions between three states: `closed` (normal operation),
|
|
5
|
+
* `open` (tripped after too many failures), and `half-open` (testing recovery).
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const breaker = new CircuitBreaker({ failureThreshold: 3, timeoutMs: 5000 });
|
|
10
|
+
* try {
|
|
11
|
+
* const result = await breaker.execute(() => fetchData());
|
|
12
|
+
* } catch (error) {
|
|
13
|
+
* // Either the underlying call failed, or the circuit is open.
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
1
17
|
export class CircuitBreaker {
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new `CircuitBreaker` instance.
|
|
20
|
+
*
|
|
21
|
+
* @param config - Circuit breaker configuration.
|
|
22
|
+
*/
|
|
2
23
|
constructor(config = {}) {
|
|
3
24
|
Object.defineProperty(this, "state", {
|
|
4
25
|
enumerable: true,
|
|
@@ -53,6 +74,25 @@ export class CircuitBreaker {
|
|
|
53
74
|
this.timeoutMs = config.timeoutMs ?? 60000;
|
|
54
75
|
this.errorMessageFormatter = config.errorMessageFormatter;
|
|
55
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Executes a function through the circuit breaker.
|
|
79
|
+
*
|
|
80
|
+
* When the circuit is `open`, immediately throws without calling `fn`.
|
|
81
|
+
* When `closed` or `half-open`, calls `fn` and tracks the outcome to
|
|
82
|
+
* update the circuit state.
|
|
83
|
+
*
|
|
84
|
+
* @template T - The return type of the wrapped function.
|
|
85
|
+
* @param fn - Async function to execute.
|
|
86
|
+
* @returns The resolved value of `fn`.
|
|
87
|
+
* @throws {Error} If the circuit is open and the timeout has not elapsed.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const data = await breaker.execute(() =>
|
|
92
|
+
* fetch('/api/data').then((r) => r.json()),
|
|
93
|
+
* );
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
56
96
|
async execute(fn) {
|
|
57
97
|
if (this.state === "open") {
|
|
58
98
|
if (this.shouldAttemptReset()) {
|
|
@@ -82,6 +122,7 @@ export class CircuitBreaker {
|
|
|
82
122
|
throw error;
|
|
83
123
|
}
|
|
84
124
|
}
|
|
125
|
+
/** @internal */
|
|
85
126
|
onSuccess() {
|
|
86
127
|
this.failureCount = 0;
|
|
87
128
|
if (this.state === "half-open") {
|
|
@@ -92,6 +133,7 @@ export class CircuitBreaker {
|
|
|
92
133
|
}
|
|
93
134
|
}
|
|
94
135
|
}
|
|
136
|
+
/** @internal */
|
|
95
137
|
onFailure() {
|
|
96
138
|
this.lastFailureTime = Date.now();
|
|
97
139
|
this.failureCount++;
|
|
@@ -100,19 +142,39 @@ export class CircuitBreaker {
|
|
|
100
142
|
this.state = "open";
|
|
101
143
|
}
|
|
102
144
|
}
|
|
145
|
+
/** @internal */
|
|
103
146
|
shouldAttemptReset() {
|
|
104
147
|
return (this.lastFailureTime !== undefined &&
|
|
105
148
|
Date.now() - this.lastFailureTime >= this.timeoutMs);
|
|
106
149
|
}
|
|
150
|
+
/** @internal */
|
|
107
151
|
getRetryAfterMs() {
|
|
152
|
+
/* v8 ignore next */
|
|
108
153
|
if (this.lastFailureTime === undefined)
|
|
109
154
|
return 0;
|
|
110
155
|
const elapsed = Date.now() - this.lastFailureTime;
|
|
111
156
|
return Math.max(0, this.timeoutMs - elapsed);
|
|
112
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Returns the current state of the circuit breaker.
|
|
160
|
+
*
|
|
161
|
+
* @returns The current {@link CircuitBreakerState}.
|
|
162
|
+
*/
|
|
113
163
|
getState() {
|
|
114
164
|
return this.state;
|
|
115
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Manually resets the circuit breaker to `closed` state.
|
|
168
|
+
*
|
|
169
|
+
* Clears all failure and success counters. Useful in tests or when
|
|
170
|
+
* manually recovering from an incident.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* breaker.reset();
|
|
175
|
+
* console.log(breaker.getState()); // "closed"
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
116
178
|
reset() {
|
|
117
179
|
this.state = "closed";
|
|
118
180
|
this.failureCount = 0;
|
|
@@ -120,7 +182,25 @@ export class CircuitBreaker {
|
|
|
120
182
|
this.lastFailureTime = undefined;
|
|
121
183
|
}
|
|
122
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Implements a retry policy with configurable exponential backoff and jitter.
|
|
187
|
+
*
|
|
188
|
+
* Automatically retries a failing async operation up to a configured maximum
|
|
189
|
+
* number of attempts, applying a jittered exponential delay between each
|
|
190
|
+
* attempt to avoid thundering-herd problems.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* const policy = new RetryPolicy({ maxAttempts: 5, initialDelayMs: 200 });
|
|
195
|
+
* const data = await policy.execute(() => fetchData());
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
123
198
|
export class RetryPolicy {
|
|
199
|
+
/**
|
|
200
|
+
* Creates a new `RetryPolicy` instance.
|
|
201
|
+
*
|
|
202
|
+
* @param config - Retry configuration.
|
|
203
|
+
*/
|
|
124
204
|
constructor(config = {}) {
|
|
125
205
|
Object.defineProperty(this, "maxAttempts", {
|
|
126
206
|
enumerable: true,
|
|
@@ -159,6 +239,21 @@ export class RetryPolicy {
|
|
|
159
239
|
this.shouldRetry =
|
|
160
240
|
config.shouldRetry ?? ((error) => this.isRetryableError(error));
|
|
161
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Executes a function, retrying on failure according to the configured policy.
|
|
244
|
+
*
|
|
245
|
+
* @template T - The return type of the wrapped function.
|
|
246
|
+
* @param fn - Async function to execute and potentially retry.
|
|
247
|
+
* @returns The resolved value of `fn` on a successful attempt.
|
|
248
|
+
* @throws {Error} The last encountered error once all attempts are exhausted.
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* const result = await policy.execute(() =>
|
|
253
|
+
* fetch('/api').then((r) => r.json()),
|
|
254
|
+
* );
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
162
257
|
async execute(fn) {
|
|
163
258
|
let lastError;
|
|
164
259
|
for (let attempt = 1; attempt <= this.maxAttempts; attempt++) {
|
|
@@ -178,6 +273,7 @@ export class RetryPolicy {
|
|
|
178
273
|
}
|
|
179
274
|
throw lastError ?? new Error("Retry policy failed");
|
|
180
275
|
}
|
|
276
|
+
/** @internal */
|
|
181
277
|
calculateDelay(attempt) {
|
|
182
278
|
const exponentialDelay = this.initialDelayMs * Math.pow(this.backoffMultiplier, attempt - 1);
|
|
183
279
|
const array = new Uint32Array(1);
|
|
@@ -186,9 +282,11 @@ export class RetryPolicy {
|
|
|
186
282
|
const jitter = randomValue * 0.1 * exponentialDelay;
|
|
187
283
|
return Math.min(exponentialDelay + jitter, this.maxDelayMs);
|
|
188
284
|
}
|
|
285
|
+
/** @internal */
|
|
189
286
|
sleep(ms) {
|
|
190
287
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
191
288
|
}
|
|
289
|
+
/** @internal */
|
|
192
290
|
isRetryableError(error) {
|
|
193
291
|
const status = error.status;
|
|
194
292
|
if (typeof status === "number") {
|
|
@@ -201,6 +299,16 @@ export class RetryPolicy {
|
|
|
201
299
|
message.includes("econnrefused") ||
|
|
202
300
|
message.includes("econnreset"));
|
|
203
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Returns a snapshot of the policy's current configuration.
|
|
304
|
+
*
|
|
305
|
+
* @returns An object containing all configured retry parameters.
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```typescript
|
|
309
|
+
* const { maxAttempts, initialDelayMs } = policy.getConfig();
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
204
312
|
getConfig() {
|
|
205
313
|
return {
|
|
206
314
|
maxAttempts: this.maxAttempts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetryPolicy.js","sourceRoot":"","sources":["../../../src/utils/core/RetryPolicy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RetryPolicy.js","sourceRoot":"","sources":["../../../src/utils/core/RetryPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/CacheManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACvC,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/CacheManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACvC,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AA+ID;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO;IACjC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,GAAE,mBAAwB;IAQ7C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,GAAE,MAAwB,GAAG,IAAI;IAO/D;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAkB1B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,QAAQ,IAAI,eAAe;IAI3B;;OAEG;IACG,YAAY,CACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,GAAG,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,CAAC,CAAC;IASb;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAC1C,OAAO,CAAC,EAAE,mBAAmB,GAC9B,YAAY,CAAC,CAAC,CAAC,CAEjB"}
|
|
@@ -74,6 +74,7 @@ class MemoryCache {
|
|
|
74
74
|
hits: this.hits,
|
|
75
75
|
misses: this.misses,
|
|
76
76
|
size: this.cache.size,
|
|
77
|
+
/* v8 ignore next */
|
|
77
78
|
hitRate: total === 0 ? 0 : this.hits / total,
|
|
78
79
|
};
|
|
79
80
|
}
|
|
@@ -92,6 +93,7 @@ class LocalStorageCache {
|
|
|
92
93
|
this.prefix = prefix;
|
|
93
94
|
}
|
|
94
95
|
set(key, value, ttl) {
|
|
96
|
+
/* v8 ignore next */
|
|
95
97
|
if (typeof localStorage === "undefined")
|
|
96
98
|
return;
|
|
97
99
|
const entry = {
|
|
@@ -107,6 +109,7 @@ class LocalStorageCache {
|
|
|
107
109
|
}
|
|
108
110
|
}
|
|
109
111
|
get(key) {
|
|
112
|
+
/* v8 ignore next */
|
|
110
113
|
if (typeof localStorage === "undefined")
|
|
111
114
|
return null;
|
|
112
115
|
try {
|
|
@@ -128,11 +131,13 @@ class LocalStorageCache {
|
|
|
128
131
|
return this.get(key) !== null;
|
|
129
132
|
}
|
|
130
133
|
delete(key) {
|
|
134
|
+
/* v8 ignore next */
|
|
131
135
|
if (typeof localStorage === "undefined")
|
|
132
136
|
return;
|
|
133
137
|
localStorage.removeItem(this.prefix + key);
|
|
134
138
|
}
|
|
135
139
|
clear() {
|
|
140
|
+
/* v8 ignore next */
|
|
136
141
|
if (typeof localStorage === "undefined")
|
|
137
142
|
return;
|
|
138
143
|
const keys = [];
|