hyperttp 0.2.3 → 0.2.5
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/Hyperttp/Core/CacheManager.d.ts +63 -40
- package/dist/Hyperttp/Core/CacheManager.d.ts.map +1 -1
- package/dist/Hyperttp/Core/CacheManager.js +64 -62
- package/dist/Hyperttp/Core/CacheManager.js.map +1 -1
- package/dist/Hyperttp/Core/HttpClientImproved.d.ts +55 -33
- package/dist/Hyperttp/Core/HttpClientImproved.d.ts.map +1 -1
- package/dist/Hyperttp/Core/HttpClientImproved.js +313 -219
- package/dist/Hyperttp/Core/HttpClientImproved.js.map +1 -1
- package/dist/Hyperttp/Core/InterceptorManager.d.ts +11 -11
- package/dist/Hyperttp/Core/InterceptorManager.d.ts.map +1 -1
- package/dist/Hyperttp/Core/InterceptorManager.js +10 -10
- package/dist/Hyperttp/Core/InterceptorManager.js.map +1 -1
- package/dist/Hyperttp/Core/MetricsManager.d.ts +33 -42
- package/dist/Hyperttp/Core/MetricsManager.d.ts.map +1 -1
- package/dist/Hyperttp/Core/MetricsManager.js +147 -58
- package/dist/Hyperttp/Core/MetricsManager.js.map +1 -1
- package/dist/Hyperttp/Core/QueueManager.d.ts +6 -4
- package/dist/Hyperttp/Core/QueueManager.d.ts.map +1 -1
- package/dist/Hyperttp/Core/QueueManager.js +36 -34
- package/dist/Hyperttp/Core/QueueManager.js.map +1 -1
- package/dist/Hyperttp/Core/RateLimiter.d.ts +29 -36
- package/dist/Hyperttp/Core/RateLimiter.d.ts.map +1 -1
- package/dist/Hyperttp/Core/RateLimiter.js +96 -36
- package/dist/Hyperttp/Core/RateLimiter.js.map +1 -1
- package/dist/Hyperttp/Core/RequestBuilder.d.ts +3 -1
- package/dist/Hyperttp/Core/RequestBuilder.d.ts.map +1 -1
- package/dist/Hyperttp/Core/RequestBuilder.js +10 -3
- package/dist/Hyperttp/Core/RequestBuilder.js.map +1 -1
- package/dist/Hyperttp/Core/RequestExecutor.d.ts +7 -34
- package/dist/Hyperttp/Core/RequestExecutor.d.ts.map +1 -1
- package/dist/Hyperttp/Core/RequestExecutor.js +120 -114
- package/dist/Hyperttp/Core/RequestExecutor.js.map +1 -1
- package/dist/Hyperttp/Core/ResponseConverter.d.ts +23 -0
- package/dist/Hyperttp/Core/ResponseConverter.d.ts.map +1 -0
- package/dist/Hyperttp/Core/ResponseConverter.js +368 -0
- package/dist/Hyperttp/Core/ResponseConverter.js.map +1 -0
- package/dist/Hyperttp/Core/index.d.ts +7 -10
- package/dist/Hyperttp/Core/index.d.ts.map +1 -1
- package/dist/Hyperttp/Core/index.js +26 -15
- package/dist/Hyperttp/Core/index.js.map +1 -1
- package/dist/Hyperttp/Request.d.ts +9 -20
- package/dist/Hyperttp/Request.d.ts.map +1 -1
- package/dist/Hyperttp/Request.js +93 -85
- package/dist/Hyperttp/Request.js.map +1 -1
- package/dist/Hyperttp/UrlExtractor.d.ts +1 -1
- package/dist/Hyperttp/UrlExtractor.d.ts.map +1 -1
- package/dist/Hyperttp/index.d.ts +1 -3
- package/dist/Hyperttp/index.d.ts.map +1 -1
- package/dist/Hyperttp/index.js +7 -8
- package/dist/Hyperttp/index.js.map +1 -1
- package/dist/Types/cache.d.ts +10 -0
- package/dist/Types/cache.d.ts.map +1 -0
- package/dist/Types/cache.js +3 -0
- package/dist/Types/cache.js.map +1 -0
- package/dist/Types/errors.d.ts +15 -0
- package/dist/Types/errors.d.ts.map +1 -0
- package/dist/Types/errors.js +34 -0
- package/dist/Types/errors.js.map +1 -0
- package/dist/Types/http-client.d.ts +39 -0
- package/dist/Types/http-client.d.ts.map +1 -0
- package/dist/Types/http-client.js +3 -0
- package/dist/Types/http-client.js.map +1 -0
- package/dist/Types/http.d.ts +5 -0
- package/dist/Types/http.d.ts.map +1 -0
- package/dist/Types/http.js +3 -0
- package/dist/Types/http.js.map +1 -0
- package/dist/Types/index.d.ts +12 -126
- package/dist/Types/index.d.ts.map +1 -1
- package/dist/Types/index.js +12 -39
- package/dist/Types/index.js.map +1 -1
- package/dist/Types/interceptors.d.ts +13 -0
- package/dist/Types/interceptors.d.ts.map +1 -0
- package/dist/Types/interceptors.js +3 -0
- package/dist/Types/interceptors.js.map +1 -0
- package/dist/Types/metrics.d.ts +67 -0
- package/dist/Types/metrics.d.ts.map +1 -0
- package/dist/Types/metrics.js +3 -0
- package/dist/Types/metrics.js.map +1 -0
- package/dist/Types/options.d.ts +233 -0
- package/dist/Types/options.d.ts.map +1 -0
- package/dist/Types/options.js +3 -0
- package/dist/Types/options.js.map +1 -0
- package/dist/Types/queue.d.ts +8 -0
- package/dist/Types/queue.d.ts.map +1 -0
- package/dist/Types/queue.js +3 -0
- package/dist/Types/queue.js.map +1 -0
- package/dist/Types/request.d.ts +150 -12
- package/dist/Types/request.d.ts.map +1 -1
- package/dist/Types/response.d.ts +28 -0
- package/dist/Types/response.d.ts.map +1 -0
- package/dist/Types/response.js +3 -0
- package/dist/Types/response.js.map +1 -0
- package/dist/Types/stream.d.ts +39 -0
- package/dist/Types/stream.d.ts.map +1 -0
- package/dist/Types/stream.js +3 -0
- package/dist/Types/stream.js.map +1 -0
- package/dist/Types/url-extractor.d.ts +10 -0
- package/dist/Types/url-extractor.d.ts.map +1 -0
- package/dist/Types/url-extractor.js +3 -0
- package/dist/Types/url-extractor.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
- package/dist/Hyperttp/Core/ResponseTransformer.d.ts +0 -35
- package/dist/Hyperttp/Core/ResponseTransformer.d.ts.map +0 -1
- package/dist/Hyperttp/Core/ResponseTransformer.js +0 -171
- package/dist/Hyperttp/Core/ResponseTransformer.js.map +0 -1
|
@@ -1,61 +1,84 @@
|
|
|
1
|
-
|
|
2
|
-
* @interface CacheEntry
|
|
3
|
-
*/
|
|
4
|
-
export interface CacheEntry<T> {
|
|
5
|
-
data: T;
|
|
6
|
-
etag?: string;
|
|
7
|
-
lastModified?: string;
|
|
8
|
-
timestamp: number;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* @interface CacheManagerOptions
|
|
12
|
-
*/
|
|
13
|
-
export interface CacheManagerOptions {
|
|
14
|
-
cacheTTL?: number;
|
|
15
|
-
cacheMaxSize?: number;
|
|
16
|
-
}
|
|
1
|
+
import { CacheManagerOptions } from "../../Types/cache";
|
|
17
2
|
/**
|
|
18
3
|
* @class CacheManager
|
|
4
|
+
* @en High-performance in-memory cache based on LRU strategy.
|
|
5
|
+
* Provides TTL support, metadata storage (etag, lastModified) and fast key-value access.
|
|
6
|
+
*
|
|
7
|
+
* @ru Высокопроизводительный in-memory кэш на основе LRU стратегии.
|
|
8
|
+
* Поддерживает TTL, хранение метаданных (etag, lastModified) и быстрый доступ по ключу.
|
|
19
9
|
*/
|
|
20
10
|
export declare class CacheManager {
|
|
21
|
-
private cache;
|
|
22
|
-
private ttl;
|
|
11
|
+
private readonly cache;
|
|
23
12
|
constructor(options?: CacheManagerOptions);
|
|
24
13
|
/**
|
|
25
|
-
* @en Retrieves
|
|
14
|
+
* @en Retrieves cached value by key.
|
|
15
|
+
* @ru Получает значение из кэша по ключу.
|
|
16
|
+
*
|
|
17
|
+
* @template T
|
|
18
|
+
* @param key Cache key
|
|
19
|
+
* @returns Cached value or undefined if not found
|
|
20
|
+
*/
|
|
21
|
+
get<T>(key: string): T | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* @en Stores value in cache.
|
|
24
|
+
* @ru Сохраняет значение в кэш.
|
|
25
|
+
*
|
|
26
|
+
* @template T
|
|
27
|
+
* @param key Cache key
|
|
28
|
+
* @param value Value to store
|
|
29
|
+
*/
|
|
30
|
+
set<T>(key: string, value: T): void;
|
|
31
|
+
/**
|
|
32
|
+
* @en Retrieves cached entry with metadata (etag, lastModified).
|
|
33
|
+
* @ru Получает запись кэша вместе с метаданными (etag, lastModified).
|
|
34
|
+
*
|
|
35
|
+
* @template T
|
|
36
|
+
* @param key Cache key
|
|
37
|
+
* @returns Cached entry with metadata or undefined
|
|
26
38
|
*/
|
|
27
|
-
getWithMetadata<T>(key: string):
|
|
39
|
+
getWithMetadata<T>(key: string): {
|
|
28
40
|
data: T;
|
|
29
41
|
etag?: string;
|
|
30
42
|
lastModified?: string;
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
} | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* @en Stores value with optional HTTP metadata (etag, lastModified).
|
|
46
|
+
* @ru Сохраняет значение с дополнительными HTTP метаданными (etag, lastModified).
|
|
47
|
+
*
|
|
48
|
+
* @template T
|
|
49
|
+
* @param key Cache key
|
|
50
|
+
* @param data Value to store
|
|
51
|
+
* @param meta Optional HTTP metadata
|
|
52
|
+
*/
|
|
53
|
+
setWithMetadata<T>(key: string, data: T, meta?: {
|
|
54
|
+
etag?: string;
|
|
55
|
+
lastModified?: string;
|
|
56
|
+
}): void;
|
|
33
57
|
/**
|
|
34
|
-
* @en
|
|
58
|
+
* @en Checks if key exists in cache.
|
|
59
|
+
* @ru Проверяет наличие ключа в кэше.
|
|
60
|
+
*
|
|
61
|
+
* @param key Cache key
|
|
62
|
+
* @returns true if exists, otherwise false
|
|
35
63
|
*/
|
|
36
|
-
|
|
37
|
-
etag?: unknown;
|
|
38
|
-
lastModified?: unknown;
|
|
39
|
-
}): Promise<void>;
|
|
64
|
+
has(key: string): boolean;
|
|
40
65
|
/**
|
|
41
|
-
* @en
|
|
66
|
+
* @en Deletes value from cache by key.
|
|
67
|
+
* @ru Удаляет значение из кэша по ключу.
|
|
68
|
+
*
|
|
69
|
+
* @param key Cache key
|
|
70
|
+
* @returns true if value was removed
|
|
42
71
|
*/
|
|
43
|
-
|
|
72
|
+
delete(key: string): boolean;
|
|
44
73
|
/**
|
|
45
|
-
* @en
|
|
74
|
+
* @en Clears entire cache.
|
|
75
|
+
* @ru Очищает весь кэш.
|
|
46
76
|
*/
|
|
47
|
-
|
|
77
|
+
clear(): void;
|
|
48
78
|
/**
|
|
49
|
-
* @en
|
|
79
|
+
* @en Returns current cache size.
|
|
80
|
+
* @ru Возвращает текущий размер кэша.
|
|
50
81
|
*/
|
|
51
|
-
has(key: string): Promise<boolean>;
|
|
52
|
-
delete(key: string): Promise<boolean>;
|
|
53
|
-
clear(): Promise<void>;
|
|
54
|
-
getSync<T>(key: string): T | undefined;
|
|
55
|
-
setSync<T>(key: string, value: T): void;
|
|
56
|
-
hasSync(key: string): boolean;
|
|
57
|
-
deleteSync(key: string): boolean;
|
|
58
|
-
clearSync(): void;
|
|
59
82
|
get size(): number;
|
|
60
83
|
}
|
|
61
84
|
//# sourceMappingURL=CacheManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAE9C,OAAO,CAAC,EAAE,mBAAmB;IAQzC;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC;;;;;;;OAOG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAMnC;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAC1B;QACE,IAAI,EAAE,CAAC,CAAC;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACD,SAAS;IAIb;;;;;;;;OAQG;IACH,eAAe,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,IAAI;IAQP;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;;OAGG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -4,101 +4,103 @@ exports.CacheManager = void 0;
|
|
|
4
4
|
const lru_cache_1 = require("lru-cache");
|
|
5
5
|
/**
|
|
6
6
|
* @class CacheManager
|
|
7
|
+
* @en High-performance in-memory cache based on LRU strategy.
|
|
8
|
+
* Provides TTL support, metadata storage (etag, lastModified) and fast key-value access.
|
|
9
|
+
*
|
|
10
|
+
* @ru Высокопроизводительный in-memory кэш на основе LRU стратегии.
|
|
11
|
+
* Поддерживает TTL, хранение метаданных (etag, lastModified) и быстрый доступ по ключу.
|
|
7
12
|
*/
|
|
8
13
|
class CacheManager {
|
|
9
14
|
cache;
|
|
10
|
-
ttl;
|
|
11
15
|
constructor(options) {
|
|
12
|
-
this.ttl = options?.cacheTTL ?? 300_000;
|
|
13
16
|
this.cache = new lru_cache_1.LRUCache({
|
|
14
17
|
max: options?.cacheMaxSize ?? 500,
|
|
15
|
-
ttl:
|
|
18
|
+
ttl: options?.cacheTTL ?? 300_000,
|
|
16
19
|
updateAgeOnGet: true,
|
|
17
20
|
});
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
20
|
-
* @en Retrieves
|
|
23
|
+
* @en Retrieves cached value by key.
|
|
24
|
+
* @ru Получает значение из кэша по ключу.
|
|
25
|
+
*
|
|
26
|
+
* @template T
|
|
27
|
+
* @param key Cache key
|
|
28
|
+
* @returns Cached value or undefined if not found
|
|
21
29
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!entry)
|
|
25
|
-
return null;
|
|
26
|
-
const isExpired = Date.now() - entry.timestamp > this.ttl;
|
|
27
|
-
return {
|
|
28
|
-
data: entry.data,
|
|
29
|
-
etag: entry.etag,
|
|
30
|
-
lastModified: entry.lastModified,
|
|
31
|
-
isExpired,
|
|
32
|
-
};
|
|
30
|
+
get(key) {
|
|
31
|
+
return this.cache.get(key)?.data;
|
|
33
32
|
}
|
|
34
33
|
/**
|
|
35
|
-
* @en Stores
|
|
34
|
+
* @en Stores value in cache.
|
|
35
|
+
* @ru Сохраняет значение в кэш.
|
|
36
|
+
*
|
|
37
|
+
* @template T
|
|
38
|
+
* @param key Cache key
|
|
39
|
+
* @param value Value to store
|
|
36
40
|
*/
|
|
37
|
-
|
|
41
|
+
set(key, value) {
|
|
38
42
|
this.cache.set(key, {
|
|
39
|
-
data,
|
|
40
|
-
etag: typeof meta.etag === "string" ? meta.etag : undefined,
|
|
41
|
-
lastModified: typeof meta.lastModified === "string" ? meta.lastModified : undefined,
|
|
42
|
-
timestamp: Date.now(),
|
|
43
|
+
data: value,
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
46
|
/**
|
|
46
|
-
* @en
|
|
47
|
+
* @en Retrieves cached entry with metadata (etag, lastModified).
|
|
48
|
+
* @ru Получает запись кэша вместе с метаданными (etag, lastModified).
|
|
49
|
+
*
|
|
50
|
+
* @template T
|
|
51
|
+
* @param key Cache key
|
|
52
|
+
* @returns Cached entry with metadata or undefined
|
|
47
53
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (!entry)
|
|
51
|
-
return undefined;
|
|
52
|
-
return entry.data;
|
|
54
|
+
getWithMetadata(key) {
|
|
55
|
+
return this.cache.get(key);
|
|
53
56
|
}
|
|
54
57
|
/**
|
|
55
|
-
* @en
|
|
58
|
+
* @en Stores value with optional HTTP metadata (etag, lastModified).
|
|
59
|
+
* @ru Сохраняет значение с дополнительными HTTP метаданными (etag, lastModified).
|
|
60
|
+
*
|
|
61
|
+
* @template T
|
|
62
|
+
* @param key Cache key
|
|
63
|
+
* @param data Value to store
|
|
64
|
+
* @param meta Optional HTTP metadata
|
|
56
65
|
*/
|
|
57
|
-
|
|
66
|
+
setWithMetadata(key, data, meta) {
|
|
58
67
|
this.cache.set(key, {
|
|
59
|
-
data
|
|
60
|
-
|
|
68
|
+
data,
|
|
69
|
+
etag: meta?.etag,
|
|
70
|
+
lastModified: meta?.lastModified,
|
|
61
71
|
});
|
|
62
72
|
}
|
|
63
73
|
/**
|
|
64
|
-
* @en Checks if key exists
|
|
74
|
+
* @en Checks if key exists in cache.
|
|
75
|
+
* @ru Проверяет наличие ключа в кэше.
|
|
76
|
+
*
|
|
77
|
+
* @param key Cache key
|
|
78
|
+
* @returns true if exists, otherwise false
|
|
65
79
|
*/
|
|
66
|
-
|
|
67
|
-
const entry = this.cache.get(key);
|
|
68
|
-
if (!entry)
|
|
69
|
-
return false;
|
|
70
|
-
const isExpired = Date.now() - entry.timestamp > this.ttl;
|
|
71
|
-
if (isExpired) {
|
|
72
|
-
this.cache.delete(key);
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
async delete(key) {
|
|
78
|
-
return this.cache.delete(key);
|
|
79
|
-
}
|
|
80
|
-
async clear() {
|
|
81
|
-
this.cache.clear();
|
|
82
|
-
}
|
|
83
|
-
// --- Synchronous Methods ---
|
|
84
|
-
getSync(key) {
|
|
85
|
-
return this.cache.get(key)?.data;
|
|
86
|
-
}
|
|
87
|
-
setSync(key, value) {
|
|
88
|
-
this.cache.set(key, {
|
|
89
|
-
data: value,
|
|
90
|
-
timestamp: Date.now(),
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
hasSync(key) {
|
|
80
|
+
has(key) {
|
|
94
81
|
return this.cache.has(key);
|
|
95
82
|
}
|
|
96
|
-
|
|
83
|
+
/**
|
|
84
|
+
* @en Deletes value from cache by key.
|
|
85
|
+
* @ru Удаляет значение из кэша по ключу.
|
|
86
|
+
*
|
|
87
|
+
* @param key Cache key
|
|
88
|
+
* @returns true if value was removed
|
|
89
|
+
*/
|
|
90
|
+
delete(key) {
|
|
97
91
|
return this.cache.delete(key);
|
|
98
92
|
}
|
|
99
|
-
|
|
93
|
+
/**
|
|
94
|
+
* @en Clears entire cache.
|
|
95
|
+
* @ru Очищает весь кэш.
|
|
96
|
+
*/
|
|
97
|
+
clear() {
|
|
100
98
|
this.cache.clear();
|
|
101
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* @en Returns current cache size.
|
|
102
|
+
* @ru Возвращает текущий размер кэша.
|
|
103
|
+
*/
|
|
102
104
|
get size() {
|
|
103
105
|
return this.cache.size;
|
|
104
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;
|
|
1
|
+
{"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAGrC;;;;;;;GAOG;AACH,MAAa,YAAY;IACN,KAAK,CAAoC;IAE1D,YAAY,OAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAQ,CAAC;YACxB,GAAG,EAAE,OAAO,EAAE,YAAY,IAAI,GAAG;YACjC,GAAG,EAAE,OAAO,EAAE,QAAQ,IAAI,OAAO;YACjC,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAI,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACnC,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAI,GAAW,EAAE,KAAQ;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAI,GAAW;QAO5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACH,eAAe,CACb,GAAW,EACX,IAAO,EACP,IAGC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI;YACJ,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI,EAAE,YAAY;SACjC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AApHD,oCAoHC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { RequestBuilder } from "./RequestBuilder.js";
|
|
2
|
-
import
|
|
2
|
+
import { HttpClientInterface } from "../../Types/http-client.js";
|
|
3
|
+
import { HttpClientOptions } from "../../Types/options.js";
|
|
4
|
+
import { ResponseType } from "../../Types/http.js";
|
|
5
|
+
import { RequestInterface } from "../../Types/request.js";
|
|
6
|
+
import { RequestMetrics } from "../../Types/metrics.js";
|
|
7
|
+
import { StreamResponse } from "../../Types/stream.js";
|
|
8
|
+
import { Readable } from "node:stream";
|
|
3
9
|
/**
|
|
4
10
|
* @class HttpClientImproved
|
|
5
11
|
* @en High-performance HTTP client with built-in caching, queuing, rate limiting, and metrics.
|
|
@@ -7,30 +13,22 @@ import type { HttpClientInterface, HttpClientOptions, RequestInterface, RequestM
|
|
|
7
13
|
*/
|
|
8
14
|
export default class HttpClientImproved implements HttpClientInterface {
|
|
9
15
|
private agent;
|
|
10
|
-
|
|
16
|
+
readonly config: HttpClientOptions;
|
|
11
17
|
private cache?;
|
|
12
18
|
private queue?;
|
|
13
19
|
private limiter?;
|
|
14
20
|
private metricsManager;
|
|
15
21
|
private interceptors;
|
|
16
|
-
private transformer;
|
|
17
22
|
private executor;
|
|
18
|
-
|
|
19
|
-
* @en Internal map to track active requests for deduplication and cancellation.
|
|
20
|
-
* @ru Внутренняя карта для отслеживания активных запросов (дедупликация и отмена).
|
|
21
|
-
*/
|
|
23
|
+
private converter;
|
|
22
24
|
private inflight;
|
|
23
25
|
private defaultHeaders;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* @param useCache Whether to use caching for this request
|
|
31
|
-
* @param responseType Expected response format
|
|
32
|
-
*/
|
|
33
|
-
private requestInternal;
|
|
26
|
+
private readonly cacheEnabled;
|
|
27
|
+
private readonly queueEnabled;
|
|
28
|
+
private readonly limiterEnabled;
|
|
29
|
+
private readonly metricsEnabled;
|
|
30
|
+
private readonly verboseEnabled;
|
|
31
|
+
constructor(config?: HttpClientOptions);
|
|
34
32
|
/**
|
|
35
33
|
* @en Performs an HTTP GET request.
|
|
36
34
|
* @ru Выполняет HTTP GET запрос.
|
|
@@ -62,16 +60,10 @@ export default class HttpClientImproved implements HttpClientInterface {
|
|
|
62
60
|
*/
|
|
63
61
|
patch<T = any>(req: RequestInterface | string, body?: any, responseType?: ResponseType): Promise<T>;
|
|
64
62
|
/**
|
|
65
|
-
* @en
|
|
66
|
-
* @ru
|
|
67
|
-
* @example client.request('url').get().send();
|
|
63
|
+
* @en Performs an HTTP OPTIONS request.
|
|
64
|
+
* @ru Выполняет HTTP OPTIONS запрос.
|
|
68
65
|
*/
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* @en Releases all resources, aborts active requests, and closes connections.
|
|
72
|
-
* @ru Освобождает ресурсы клиента, отменяет активные запросы и закрывает соединения.
|
|
73
|
-
*/
|
|
74
|
-
destroy(): Promise<void>;
|
|
66
|
+
options<T = any>(req: RequestInterface | string, body?: any, responseType?: ResponseType): Promise<T>;
|
|
75
67
|
/**
|
|
76
68
|
* @en Performs an HTTP HEAD request.
|
|
77
69
|
* @ru Выполняет HTTP HEAD запрос.
|
|
@@ -80,15 +72,34 @@ export default class HttpClientImproved implements HttpClientInterface {
|
|
|
80
72
|
status: number;
|
|
81
73
|
headers: Record<string, any>;
|
|
82
74
|
}>;
|
|
75
|
+
/**
|
|
76
|
+
* @en Creates a new HttpClient instance with merged configuration.
|
|
77
|
+
* @ru Создаёт новый экземпляр HttpClient с объединённой конфигурацией.
|
|
78
|
+
*
|
|
79
|
+
* @param options Partial configuration to override current settings
|
|
80
|
+
* @returns New HttpClientImproved instance
|
|
81
|
+
*/
|
|
82
|
+
extend(options: Partial<HttpClientOptions>): HttpClientImproved;
|
|
83
|
+
/**
|
|
84
|
+
* @en Alias for extend(). Creates a new configured client instance.
|
|
85
|
+
* @ru Алиас для extend(). Создаёт новый настроенный экземпляр клиента.
|
|
86
|
+
*
|
|
87
|
+
* @param options Partial configuration overrides
|
|
88
|
+
* @returns New HttpClientImproved instance
|
|
89
|
+
*/
|
|
90
|
+
create(options: Partial<HttpClientOptions>): HttpClientImproved;
|
|
83
91
|
/**
|
|
84
92
|
* @en Executes a request and returns an AsyncIterable stream.
|
|
85
93
|
* @ru Выполняет запрос и возвращает итерируемый поток данных.
|
|
86
94
|
*/
|
|
87
|
-
stream(req: RequestInterface | string): Promise<StreamResponse
|
|
95
|
+
stream(req: RequestInterface | string): Promise<StreamResponse<Readable>>;
|
|
88
96
|
/**
|
|
89
|
-
* @en
|
|
90
|
-
* @ru
|
|
97
|
+
* @en Creates a RequestBuilder for a fluent API approach.
|
|
98
|
+
* @ru Создает RequestBuilder для использования Fluent API.
|
|
99
|
+
* @example client.request('url').get().send();
|
|
91
100
|
*/
|
|
101
|
+
request<T = any>(url: string): RequestBuilder<T>;
|
|
102
|
+
destroy(): Promise<void>;
|
|
92
103
|
clearCache(): void;
|
|
93
104
|
/**
|
|
94
105
|
* @en Clears all collected performance metrics.
|
|
@@ -113,12 +124,23 @@ export default class HttpClientImproved implements HttpClientInterface {
|
|
|
113
124
|
getStats(): {
|
|
114
125
|
cacheSize: number;
|
|
115
126
|
inflightRequests: number;
|
|
116
|
-
queuedRequests:
|
|
117
|
-
activeRequests:
|
|
118
|
-
currentRateLimit:
|
|
127
|
+
queuedRequests: any;
|
|
128
|
+
activeRequests: any;
|
|
129
|
+
currentRateLimit: any;
|
|
119
130
|
};
|
|
131
|
+
warmup(urls: string[], count?: number): Promise<void>;
|
|
132
|
+
private mergeOptions;
|
|
120
133
|
private normalizeRequest;
|
|
121
|
-
private
|
|
134
|
+
private applyDefaulthcoptions;
|
|
135
|
+
/**
|
|
136
|
+
* @en Core internal method for handling all HTTP requests.
|
|
137
|
+
* @ru Основной внутренний метод для обработки всех HTTP-запросов.
|
|
138
|
+
* @param method HTTP method (GET, POST, etc.)
|
|
139
|
+
* @param req Request object
|
|
140
|
+
* @param useCache Whether to use caching for this request
|
|
141
|
+
* @param responseType Expected response format
|
|
142
|
+
*/
|
|
143
|
+
private requestInternal;
|
|
122
144
|
private prepareRequestData;
|
|
123
145
|
private createInitialMetrics;
|
|
124
146
|
private recordSuccess;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientImproved.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/HttpClientImproved.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HttpClientImproved.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/HttpClientImproved.ts"],"names":[],"mappings":"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"}
|