hyperttp 0.2.1 → 0.2.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/Hyperttp/Core/CacheManager.d.ts +40 -3
- package/dist/Hyperttp/Core/CacheManager.d.ts.map +1 -1
- package/dist/Hyperttp/Core/CacheManager.js +61 -12
- package/dist/Hyperttp/Core/CacheManager.js.map +1 -1
- package/dist/Hyperttp/Core/HttpClientImproved.d.ts +69 -97
- package/dist/Hyperttp/Core/HttpClientImproved.d.ts.map +1 -1
- package/dist/Hyperttp/Core/HttpClientImproved.js +331 -642
- package/dist/Hyperttp/Core/HttpClientImproved.js.map +1 -1
- package/dist/Hyperttp/Core/InterceptorManager.d.ts +62 -0
- package/dist/Hyperttp/Core/InterceptorManager.d.ts.map +1 -0
- package/dist/Hyperttp/Core/InterceptorManager.js +64 -0
- package/dist/Hyperttp/Core/InterceptorManager.js.map +1 -0
- package/dist/Hyperttp/Core/MetricsManager.d.ts +80 -0
- package/dist/Hyperttp/Core/MetricsManager.d.ts.map +1 -0
- package/dist/Hyperttp/Core/MetricsManager.js +140 -0
- package/dist/Hyperttp/Core/MetricsManager.js.map +1 -0
- package/dist/Hyperttp/Core/QueueManager.d.ts +5 -40
- package/dist/Hyperttp/Core/QueueManager.d.ts.map +1 -1
- package/dist/Hyperttp/Core/QueueManager.js +41 -47
- package/dist/Hyperttp/Core/QueueManager.js.map +1 -1
- package/dist/Hyperttp/Core/RateLimiter.d.ts +40 -20
- package/dist/Hyperttp/Core/RateLimiter.d.ts.map +1 -1
- package/dist/Hyperttp/Core/RateLimiter.js +65 -44
- package/dist/Hyperttp/Core/RateLimiter.js.map +1 -1
- package/dist/Hyperttp/Core/RequestBuilder.d.ts +48 -64
- package/dist/Hyperttp/Core/RequestBuilder.d.ts.map +1 -1
- package/dist/Hyperttp/Core/RequestBuilder.js +87 -99
- package/dist/Hyperttp/Core/RequestBuilder.js.map +1 -1
- package/dist/Hyperttp/Core/RequestExecutor.d.ts +58 -0
- package/dist/Hyperttp/Core/RequestExecutor.d.ts.map +1 -0
- package/dist/Hyperttp/Core/RequestExecutor.js +160 -0
- package/dist/Hyperttp/Core/RequestExecutor.js.map +1 -0
- package/dist/Hyperttp/Core/ResponseTransformer.d.ts +35 -0
- package/dist/Hyperttp/Core/ResponseTransformer.d.ts.map +1 -0
- package/dist/Hyperttp/Core/ResponseTransformer.js +171 -0
- package/dist/Hyperttp/Core/ResponseTransformer.js.map +1 -0
- package/dist/Hyperttp/Core/index.d.ts +7 -1
- package/dist/Hyperttp/Core/index.d.ts.map +1 -1
- package/dist/Hyperttp/Core/index.js +17 -5
- package/dist/Hyperttp/Core/index.js.map +1 -1
- package/dist/Hyperttp/Request.d.ts +5 -0
- package/dist/Hyperttp/Request.d.ts.map +1 -1
- package/dist/Hyperttp/Request.js +17 -35
- 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/UrlExtractor.js.map +1 -1
- package/dist/Hyperttp/index.d.ts +3 -1
- package/dist/Hyperttp/index.d.ts.map +1 -1
- package/dist/Hyperttp/index.js +6 -1
- package/dist/Hyperttp/index.js.map +1 -1
- package/dist/Types/index.d.ts +45 -206
- package/dist/Types/index.d.ts.map +1 -1
- package/dist/Types/index.js +7 -16
- package/dist/Types/index.js.map +1 -1
- package/dist/Types/request.d.ts +15 -100
- package/dist/Types/request.d.ts.map +1 -1
- package/dist/Types/request.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,15 +1,53 @@
|
|
|
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
|
+
*/
|
|
1
13
|
export interface CacheManagerOptions {
|
|
2
|
-
/** TTL для элементов в миллисекундах (по умолчанию 5 минут) */
|
|
3
14
|
cacheTTL?: number;
|
|
4
|
-
/** Максимальное количество элементов в кэше (по умолчанию 500) */
|
|
5
15
|
cacheMaxSize?: number;
|
|
6
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* @class CacheManager
|
|
19
|
+
*/
|
|
7
20
|
export declare class CacheManager {
|
|
8
21
|
private cache;
|
|
9
22
|
private ttl;
|
|
10
23
|
constructor(options?: CacheManagerOptions);
|
|
24
|
+
/**
|
|
25
|
+
* @en Retrieves data along with HTTP validation metadata.
|
|
26
|
+
*/
|
|
27
|
+
getWithMetadata<T>(key: string): Promise<{
|
|
28
|
+
data: T;
|
|
29
|
+
etag?: string;
|
|
30
|
+
lastModified?: string;
|
|
31
|
+
isExpired: boolean;
|
|
32
|
+
} | null>;
|
|
33
|
+
/**
|
|
34
|
+
* @en Stores data with optional ETag and Last-Modified headers.
|
|
35
|
+
*/
|
|
36
|
+
setWithMetadata<T>(key: string, data: T, meta: {
|
|
37
|
+
etag?: unknown;
|
|
38
|
+
lastModified?: unknown;
|
|
39
|
+
}): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* @en Gets an item from cache.
|
|
42
|
+
*/
|
|
11
43
|
get<T>(key: string): Promise<T | undefined>;
|
|
44
|
+
/**
|
|
45
|
+
* @en Standard async set method.
|
|
46
|
+
*/
|
|
12
47
|
set<T>(key: string, value: T): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* @en Checks if key exists and is not expired.
|
|
50
|
+
*/
|
|
13
51
|
has(key: string): Promise<boolean>;
|
|
14
52
|
delete(key: string): Promise<boolean>;
|
|
15
53
|
clear(): Promise<void>;
|
|
@@ -18,7 +56,6 @@ export declare class CacheManager {
|
|
|
18
56
|
hasSync(key: string): boolean;
|
|
19
57
|
deleteSync(key: string): boolean;
|
|
20
58
|
clearSync(): void;
|
|
21
|
-
/** Количество элементов в кэше */
|
|
22
59
|
get size(): number;
|
|
23
60
|
}
|
|
24
61
|
//# sourceMappingURL=CacheManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,GAAG,CAAS;gBAER,OAAO,CAAC,EAAE,mBAAmB;IASzC;;OAEG;IACG,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC;KACpB,GAAG,IAAI,CAAC;IAcT;;OAEG;IACG,eAAe,CAAC,CAAC,EACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/C,OAAO,CAAC,IAAI,CAAC;IAUhB;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAMjD;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAItC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAOvC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI7B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,SAAS,IAAI,IAAI;IAIjB,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CacheManager = void 0;
|
|
4
4
|
const lru_cache_1 = require("lru-cache");
|
|
5
|
+
/**
|
|
6
|
+
* @class CacheManager
|
|
7
|
+
*/
|
|
5
8
|
class CacheManager {
|
|
6
9
|
cache;
|
|
7
10
|
ttl;
|
|
@@ -13,17 +16,63 @@ class CacheManager {
|
|
|
13
16
|
updateAgeOnGet: true,
|
|
14
17
|
});
|
|
15
18
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @en Retrieves data along with HTTP validation metadata.
|
|
21
|
+
*/
|
|
22
|
+
async getWithMetadata(key) {
|
|
23
|
+
const entry = this.cache.get(key);
|
|
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
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @en Stores data with optional ETag and Last-Modified headers.
|
|
36
|
+
*/
|
|
37
|
+
async setWithMetadata(key, data, meta) {
|
|
38
|
+
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
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @en Gets an item from cache.
|
|
47
|
+
*/
|
|
19
48
|
async get(key) {
|
|
20
|
-
|
|
49
|
+
const entry = this.cache.get(key);
|
|
50
|
+
if (!entry)
|
|
51
|
+
return undefined;
|
|
52
|
+
return entry.data;
|
|
21
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* @en Standard async set method.
|
|
56
|
+
*/
|
|
22
57
|
async set(key, value) {
|
|
23
|
-
this.cache.set(key,
|
|
58
|
+
this.cache.set(key, {
|
|
59
|
+
data: value,
|
|
60
|
+
timestamp: Date.now(),
|
|
61
|
+
});
|
|
24
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* @en Checks if key exists and is not expired.
|
|
65
|
+
*/
|
|
25
66
|
async has(key) {
|
|
26
|
-
|
|
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;
|
|
27
76
|
}
|
|
28
77
|
async delete(key) {
|
|
29
78
|
return this.cache.delete(key);
|
|
@@ -31,14 +80,15 @@ class CacheManager {
|
|
|
31
80
|
async clear() {
|
|
32
81
|
this.cache.clear();
|
|
33
82
|
}
|
|
34
|
-
//
|
|
35
|
-
// Sync API (супербыстрый)
|
|
36
|
-
// ----------------------
|
|
83
|
+
// --- Synchronous Methods ---
|
|
37
84
|
getSync(key) {
|
|
38
|
-
return this.cache.get(key);
|
|
85
|
+
return this.cache.get(key)?.data;
|
|
39
86
|
}
|
|
40
87
|
setSync(key, value) {
|
|
41
|
-
this.cache.set(key,
|
|
88
|
+
this.cache.set(key, {
|
|
89
|
+
data: value,
|
|
90
|
+
timestamp: Date.now(),
|
|
91
|
+
});
|
|
42
92
|
}
|
|
43
93
|
hasSync(key) {
|
|
44
94
|
return this.cache.has(key);
|
|
@@ -49,7 +99,6 @@ class CacheManager {
|
|
|
49
99
|
clearSync() {
|
|
50
100
|
this.cache.clear();
|
|
51
101
|
}
|
|
52
|
-
/** Количество элементов в кэше */
|
|
53
102
|
get size() {
|
|
54
103
|
return this.cache.size;
|
|
55
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,148 +1,114 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { HttpClientInterface, HttpClientOptions,
|
|
3
|
-
import { RequestBuilder } from "./RequestBuilder";
|
|
1
|
+
import { RequestBuilder } from "./RequestBuilder.js";
|
|
2
|
+
import type { HttpClientInterface, HttpClientOptions, RequestInterface, RequestMetrics, ResponseType, StreamResponse } from "../../Types/index.js";
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* @class HttpClientImproved
|
|
5
|
+
* @en High-performance HTTP client with built-in caching, queuing, rate limiting, and metrics.
|
|
6
|
+
* @ru Высокопроизводительный HTTP-клиент со встроенным кэшированием, очередями, лимитами и метриками.
|
|
7
7
|
*/
|
|
8
8
|
export default class HttpClientImproved implements HttpClientInterface {
|
|
9
|
-
private cookieJar;
|
|
10
9
|
private agent;
|
|
10
|
+
private options;
|
|
11
11
|
private cache?;
|
|
12
12
|
private queue?;
|
|
13
13
|
private limiter?;
|
|
14
|
-
private
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
private
|
|
18
|
-
private requestInterceptors;
|
|
19
|
-
private responseInterceptors;
|
|
20
|
-
private requestMetrics;
|
|
14
|
+
private metricsManager;
|
|
15
|
+
private interceptors;
|
|
16
|
+
private transformer;
|
|
17
|
+
private executor;
|
|
21
18
|
/**
|
|
22
|
-
*
|
|
23
|
-
* @
|
|
19
|
+
* @en Internal map to track active requests for deduplication and cancellation.
|
|
20
|
+
* @ru Внутренняя карта для отслеживания активных запросов (дедупликация и отмена).
|
|
24
21
|
*/
|
|
22
|
+
private inflight;
|
|
23
|
+
private defaultHeaders;
|
|
25
24
|
constructor(options?: HttpClientOptions);
|
|
26
25
|
/**
|
|
27
|
-
*
|
|
28
|
-
* @
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
*
|
|
33
|
-
* @returns The CookieJar instance
|
|
34
|
-
*/
|
|
35
|
-
getCookieJar(): CookieJar;
|
|
36
|
-
/**
|
|
37
|
-
* Adds a request interceptor to modify requests before they are sent.
|
|
38
|
-
* @param interceptor The interceptor function to add
|
|
39
|
-
*/
|
|
40
|
-
addRequestInterceptor(interceptor: RequestInterceptor): void;
|
|
41
|
-
/**
|
|
42
|
-
* Adds a response interceptor to modify responses after they are received.
|
|
43
|
-
* @param interceptor The interceptor function to add
|
|
26
|
+
* @en Core internal method for handling all HTTP requests.
|
|
27
|
+
* @ru Основной внутренний метод для обработки всех HTTP-запросов.
|
|
28
|
+
* @param method HTTP method (GET, POST, etc.)
|
|
29
|
+
* @param req Request object
|
|
30
|
+
* @param useCache Whether to use caching for this request
|
|
31
|
+
* @param responseType Expected response format
|
|
44
32
|
*/
|
|
45
|
-
addResponseInterceptor(interceptor: ResponseInterceptor): void;
|
|
46
|
-
/** Closes the HTTP agent to properly terminate keep-alive connections. */
|
|
47
|
-
close(): void;
|
|
48
|
-
private log;
|
|
49
|
-
private decompress;
|
|
50
|
-
private calcDelay;
|
|
51
|
-
private sleep;
|
|
52
|
-
private applyRequestInterceptors;
|
|
53
|
-
private applyResponseInterceptors;
|
|
54
|
-
private resolveRedirect;
|
|
55
|
-
private parseRetryAfterMs;
|
|
56
|
-
private readBodyWithLimit;
|
|
57
|
-
private sendWithRetry;
|
|
58
|
-
private parseContentType;
|
|
59
|
-
private xmlParser;
|
|
60
|
-
private parseResponse;
|
|
61
33
|
private requestInternal;
|
|
62
34
|
/**
|
|
63
|
-
* Performs an HTTP GET request.
|
|
64
|
-
* @
|
|
65
|
-
* @param
|
|
66
|
-
* @
|
|
67
|
-
* @template T The expected response type
|
|
35
|
+
* @en Performs an HTTP GET request.
|
|
36
|
+
* @ru Выполняет HTTP GET запрос.
|
|
37
|
+
* @param req Request URL or Request object
|
|
38
|
+
* @param responseType Expected response format
|
|
68
39
|
*/
|
|
69
40
|
get<T = any>(req: RequestInterface | string, responseType?: ResponseType): Promise<T>;
|
|
70
41
|
/**
|
|
71
|
-
* Performs an HTTP POST request.
|
|
72
|
-
* @
|
|
73
|
-
* @param
|
|
74
|
-
* @
|
|
75
|
-
* @
|
|
42
|
+
* @en Performs an HTTP POST request.
|
|
43
|
+
* @ru Выполняет HTTP POST запрос.
|
|
44
|
+
* @param req Request URL or Request object
|
|
45
|
+
* @param body Request body data
|
|
46
|
+
* @param responseType Expected response format
|
|
76
47
|
*/
|
|
77
48
|
post<T = any>(req: RequestInterface | string, body?: any, responseType?: ResponseType): Promise<T>;
|
|
78
49
|
/**
|
|
79
|
-
* Performs an HTTP PUT request.
|
|
80
|
-
* @
|
|
81
|
-
* @param responseType Optional response parsing type
|
|
82
|
-
* @returns A promise that resolves to the parsed response
|
|
83
|
-
* @template T The expected response type
|
|
50
|
+
* @en Performs an HTTP PUT request.
|
|
51
|
+
* @ru Выполняет HTTP PUT запрос.
|
|
84
52
|
*/
|
|
85
53
|
put<T = any>(req: RequestInterface | string, body?: any, responseType?: ResponseType): Promise<T>;
|
|
86
54
|
/**
|
|
87
|
-
* Performs an HTTP DELETE request.
|
|
88
|
-
* @
|
|
89
|
-
* @param responseType Optional response parsing type
|
|
90
|
-
* @returns A promise that resolves to the parsed response
|
|
91
|
-
* @template T The expected response type
|
|
55
|
+
* @en Performs an HTTP DELETE request.
|
|
56
|
+
* @ru Выполняет HTTP DELETE запрос.
|
|
92
57
|
*/
|
|
93
58
|
delete<T = any>(req: RequestInterface | string, responseType?: ResponseType): Promise<T>;
|
|
94
59
|
/**
|
|
95
|
-
* Performs an HTTP PATCH request.
|
|
96
|
-
* @
|
|
97
|
-
* @param responseType Optional response parsing type
|
|
98
|
-
* @returns A promise that resolves to the parsed response
|
|
99
|
-
* @template T The expected response type
|
|
60
|
+
* @en Performs an HTTP PATCH request.
|
|
61
|
+
* @ru Выполняет HTTP PATCH запрос.
|
|
100
62
|
*/
|
|
101
63
|
patch<T = any>(req: RequestInterface | string, body?: any, responseType?: ResponseType): Promise<T>;
|
|
102
64
|
/**
|
|
103
|
-
* @
|
|
104
|
-
* @
|
|
65
|
+
* @en Creates a RequestBuilder for a fluent API approach.
|
|
66
|
+
* @ru Создает RequestBuilder для использования Fluent API.
|
|
67
|
+
* @example client.request('url').get().send();
|
|
105
68
|
*/
|
|
106
|
-
|
|
69
|
+
request<T = any>(url: string): RequestBuilder<T>;
|
|
107
70
|
/**
|
|
108
|
-
*
|
|
109
|
-
* @
|
|
110
|
-
|
|
71
|
+
* @en Releases all resources, aborts active requests, and closes connections.
|
|
72
|
+
* @ru Освобождает ресурсы клиента, отменяет активные запросы и закрывает соединения.
|
|
73
|
+
*/
|
|
74
|
+
destroy(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* @en Performs an HTTP HEAD request.
|
|
77
|
+
* @ru Выполняет HTTP HEAD запрос.
|
|
111
78
|
*/
|
|
112
79
|
head(req: RequestInterface | string): Promise<{
|
|
113
80
|
status: number;
|
|
114
81
|
headers: Record<string, any>;
|
|
115
82
|
}>;
|
|
116
83
|
/**
|
|
117
|
-
*
|
|
84
|
+
* @en Executes a request and returns an AsyncIterable stream.
|
|
85
|
+
* @ru Выполняет запрос и возвращает итерируемый поток данных.
|
|
118
86
|
*/
|
|
119
|
-
|
|
87
|
+
stream(req: RequestInterface | string): Promise<StreamResponse>;
|
|
120
88
|
/**
|
|
121
|
-
* Clears
|
|
122
|
-
*
|
|
89
|
+
* @en Clears the internal cache.
|
|
90
|
+
* @ru Полностью очищает внутренний кэш клиента.
|
|
91
|
+
*/
|
|
92
|
+
clearCache(): void;
|
|
93
|
+
/**
|
|
94
|
+
* @en Clears all collected performance metrics.
|
|
95
|
+
* @ru Очищает все собранные метрики производительности.
|
|
123
96
|
*/
|
|
124
97
|
clearMetrics(): void;
|
|
125
98
|
/**
|
|
126
|
-
* Retrieves metrics for a specific
|
|
127
|
-
* @
|
|
128
|
-
* @returns Metrics object if found, undefined otherwise
|
|
99
|
+
* @en Retrieves metrics for a specific URL.
|
|
100
|
+
* @ru Получает метрики для конкретного URL.
|
|
129
101
|
*/
|
|
130
102
|
getMetrics(key: string): RequestMetrics | undefined;
|
|
131
103
|
/**
|
|
132
|
-
* Retrieves all
|
|
133
|
-
* @
|
|
104
|
+
* @en Retrieves all stored request metrics.
|
|
105
|
+
* @ru Получает список всех сохраненных метрик.
|
|
134
106
|
*/
|
|
135
107
|
getAllMetrics(): RequestMetrics[];
|
|
136
108
|
/**
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* @
|
|
140
|
-
* @returns RequestBuilder instance for chaining
|
|
141
|
-
*/
|
|
142
|
-
request<T = any>(url: string): RequestBuilder<T>;
|
|
143
|
-
/**
|
|
144
|
-
* Returns current statistics about the HTTP client's state.
|
|
145
|
-
* @returns An object containing cache size, request counts, and rate limit information
|
|
109
|
+
* @en Returns real-time statistics about the client's internal state.
|
|
110
|
+
* @ru Возвращает статистику состояния клиента в реальном времени.
|
|
111
|
+
* @returns Cache size, active requests, queue state, etc.
|
|
146
112
|
*/
|
|
147
113
|
getStats(): {
|
|
148
114
|
cacheSize: number;
|
|
@@ -151,5 +117,11 @@ export default class HttpClientImproved implements HttpClientInterface {
|
|
|
151
117
|
activeRequests: number;
|
|
152
118
|
currentRateLimit: number;
|
|
153
119
|
};
|
|
120
|
+
private normalizeRequest;
|
|
121
|
+
private applyDefaultOptions;
|
|
122
|
+
private prepareRequestData;
|
|
123
|
+
private createInitialMetrics;
|
|
124
|
+
private recordSuccess;
|
|
125
|
+
private recordError;
|
|
154
126
|
}
|
|
155
127
|
//# sourceMappingURL=HttpClientImproved.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientImproved.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"HttpClientImproved.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/HttpClientImproved.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAEjB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACf,MAAM,sBAAsB,CAAC;AAI9B;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,mBAAmB;IACpE,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAoB;IAEnC,OAAO,CAAC,KAAK,CAAC,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAkB;IAElC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAGZ;IACJ,OAAO,CAAC,cAAc,CAA8B;gBAExC,OAAO,CAAC,EAAE,iBAAiB;IAkDvC;;;;;;;OAOG;YACW,eAAe;IAmG7B;;;;;OAKG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EACT,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,YAAY,GAAE,YAAqB,GAClC,OAAO,CAAC,CAAC,CAAC;IAKb;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,GAAG,GAAG,EACV,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,IAAI,CAAC,EAAE,GAAG,EACV,YAAY,GAAE,YAAqB,GAClC,OAAO,CAAC,CAAC,CAAC;IAKb;;;OAGG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EACT,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,IAAI,CAAC,EAAE,GAAG,EACV,YAAY,GAAE,YAAqB,GAClC,OAAO,CAAC,CAAC,CAAC;IAKb;;;OAGG;IACH,MAAM,CAAC,CAAC,GAAG,GAAG,EACZ,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,YAAY,GAAE,YAAqB,GAClC,OAAO,CAAC,CAAC,CAAC;IAKb;;;OAGG;IACH,KAAK,CAAC,CAAC,GAAG,GAAG,EACX,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,IAAI,CAAC,EAAE,GAAG,EACV,YAAY,GAAE,YAAqB,GAClC,OAAO,CAAC,CAAC,CAAC;IAKb;;;;OAIG;IACH,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC;IAIhD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B9B;;;OAGG;IACG,IAAI,CACR,GAAG,EAAE,gBAAgB,GAAG,MAAM,GAC7B,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC;IAQ5D;;;OAGG;IACG,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAkDrE;;;OAGG;IACH,UAAU,IAAI,IAAI;IAMlB;;;OAGG;IACH,YAAY,IAAI,IAAI;IAKpB;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAInD;;;OAGG;IACH,aAAa,IAAI,cAAc,EAAE;IAIjC;;;;OAIG;IACH,QAAQ,IAAI;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IAuBD,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,WAAW;CAiBpB"}
|