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.
Files changed (61) hide show
  1. package/dist/Hyperttp/Core/CacheManager.d.ts +40 -3
  2. package/dist/Hyperttp/Core/CacheManager.d.ts.map +1 -1
  3. package/dist/Hyperttp/Core/CacheManager.js +61 -12
  4. package/dist/Hyperttp/Core/CacheManager.js.map +1 -1
  5. package/dist/Hyperttp/Core/HttpClientImproved.d.ts +69 -97
  6. package/dist/Hyperttp/Core/HttpClientImproved.d.ts.map +1 -1
  7. package/dist/Hyperttp/Core/HttpClientImproved.js +331 -642
  8. package/dist/Hyperttp/Core/HttpClientImproved.js.map +1 -1
  9. package/dist/Hyperttp/Core/InterceptorManager.d.ts +62 -0
  10. package/dist/Hyperttp/Core/InterceptorManager.d.ts.map +1 -0
  11. package/dist/Hyperttp/Core/InterceptorManager.js +64 -0
  12. package/dist/Hyperttp/Core/InterceptorManager.js.map +1 -0
  13. package/dist/Hyperttp/Core/MetricsManager.d.ts +80 -0
  14. package/dist/Hyperttp/Core/MetricsManager.d.ts.map +1 -0
  15. package/dist/Hyperttp/Core/MetricsManager.js +140 -0
  16. package/dist/Hyperttp/Core/MetricsManager.js.map +1 -0
  17. package/dist/Hyperttp/Core/QueueManager.d.ts +5 -40
  18. package/dist/Hyperttp/Core/QueueManager.d.ts.map +1 -1
  19. package/dist/Hyperttp/Core/QueueManager.js +41 -47
  20. package/dist/Hyperttp/Core/QueueManager.js.map +1 -1
  21. package/dist/Hyperttp/Core/RateLimiter.d.ts +40 -20
  22. package/dist/Hyperttp/Core/RateLimiter.d.ts.map +1 -1
  23. package/dist/Hyperttp/Core/RateLimiter.js +65 -44
  24. package/dist/Hyperttp/Core/RateLimiter.js.map +1 -1
  25. package/dist/Hyperttp/Core/RequestBuilder.d.ts +48 -64
  26. package/dist/Hyperttp/Core/RequestBuilder.d.ts.map +1 -1
  27. package/dist/Hyperttp/Core/RequestBuilder.js +87 -99
  28. package/dist/Hyperttp/Core/RequestBuilder.js.map +1 -1
  29. package/dist/Hyperttp/Core/RequestExecutor.d.ts +58 -0
  30. package/dist/Hyperttp/Core/RequestExecutor.d.ts.map +1 -0
  31. package/dist/Hyperttp/Core/RequestExecutor.js +160 -0
  32. package/dist/Hyperttp/Core/RequestExecutor.js.map +1 -0
  33. package/dist/Hyperttp/Core/ResponseTransformer.d.ts +35 -0
  34. package/dist/Hyperttp/Core/ResponseTransformer.d.ts.map +1 -0
  35. package/dist/Hyperttp/Core/ResponseTransformer.js +171 -0
  36. package/dist/Hyperttp/Core/ResponseTransformer.js.map +1 -0
  37. package/dist/Hyperttp/Core/index.d.ts +7 -1
  38. package/dist/Hyperttp/Core/index.d.ts.map +1 -1
  39. package/dist/Hyperttp/Core/index.js +17 -5
  40. package/dist/Hyperttp/Core/index.js.map +1 -1
  41. package/dist/Hyperttp/Request.d.ts +5 -0
  42. package/dist/Hyperttp/Request.d.ts.map +1 -1
  43. package/dist/Hyperttp/Request.js +17 -35
  44. package/dist/Hyperttp/Request.js.map +1 -1
  45. package/dist/Hyperttp/UrlExtractor.d.ts +1 -1
  46. package/dist/Hyperttp/UrlExtractor.d.ts.map +1 -1
  47. package/dist/Hyperttp/UrlExtractor.js.map +1 -1
  48. package/dist/Hyperttp/index.d.ts +3 -1
  49. package/dist/Hyperttp/index.d.ts.map +1 -1
  50. package/dist/Hyperttp/index.js +6 -1
  51. package/dist/Hyperttp/index.js.map +1 -1
  52. package/dist/Types/index.d.ts +45 -206
  53. package/dist/Types/index.d.ts.map +1 -1
  54. package/dist/Types/index.js +7 -16
  55. package/dist/Types/index.js.map +1 -1
  56. package/dist/Types/request.d.ts +15 -100
  57. package/dist/Types/request.d.ts.map +1 -1
  58. package/dist/Types/request.js.map +1 -1
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js.map +1 -1
  61. 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":["../../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,GAAG,CAAS;gBAER,OAAO,CAAC,EAAE,mBAAmB;IAYnC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAI3C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,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;IAIvC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI7B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,SAAS,IAAI,IAAI;IAIjB,kCAAkC;IAClC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
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
- // Async API
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
- return this.cache.get(key);
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, value);
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
- return this.cache.has(key);
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, value);
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":["../../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AASrC,MAAa,YAAY;IACf,KAAK,CAAwB;IAC7B,GAAG,CAAS;IAEpB,YAAY,OAA6B;QACvC,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAQ,CAAC;YACxB,GAAG,EAAE,OAAO,EAAE,YAAY,IAAI,GAAG;YACjC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,YAAY;IACZ,yBAAyB;IACzB,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAkB,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,KAAQ;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,yBAAyB;IACzB,0BAA0B;IAC1B,yBAAyB;IACzB,OAAO,CAAI,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAkB,CAAC;IAC9C,CAAC;IAED,OAAO,CAAI,GAAW,EAAE,KAAQ;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,kCAAkC;IAClC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AA/DD,oCA+DC"}
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 { CookieJar } from "tough-cookie";
2
- import { HttpClientInterface, HttpClientOptions, RequestInterceptor, RequestInterface, RequestMetrics, ResponseInterceptor, ResponseType, StreamResponse } from "../../Types";
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
- * Advanced HTTP client with built-in caching, rate limiting, request queuing,
6
- * automatic retries, cookie management, and response decompression.
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 inflight;
15
- private retryOptions;
16
- private defaultHeaders;
17
- private options;
18
- private requestInterceptors;
19
- private responseInterceptors;
20
- private requestMetrics;
14
+ private metricsManager;
15
+ private interceptors;
16
+ private transformer;
17
+ private executor;
21
18
  /**
22
- * Creates a new instance of HttpClientImproved.
23
- * @param options Optional configuration options for the HTTP client
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
- * Sets default headers that will be applied to all outgoing requests.
28
- * @param headers An object containing header names and values
29
- */
30
- setDefaultHeaders(headers: Record<string, string>): void;
31
- /**
32
- * Returns the cookie jar used for managing HTTP cookies.
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
- * @param req The request object containing URL and headers
65
- * @param responseType Optional response parsing type
66
- * @returns A promise that resolves to the parsed response
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
- * @param req The request object containing URL, body, and headers
73
- * @param responseType Optional response parsing type
74
- * @returns A promise that resolves to the parsed response
75
- * @template T The expected response type
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
- * @param req The request object containing URL, body, and headers
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
- * @param req The request object containing URL and headers
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
- * @param req The request object containing URL, body, and headers
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
- * @ru Получает потоковый ответ (для SSE, больших файлов).
104
- * @en Gets streaming response (for SSE, large files).
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
- stream(req: RequestInterface | string): Promise<StreamResponse>;
69
+ request<T = any>(url: string): RequestBuilder<T>;
107
70
  /**
108
- * Performs an HTTP HEAD request.
109
- * @param req The request object containing URL and headers
110
- * @returns A promise that resolves when the request completes
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
- * Clears the request cache.
84
+ * @en Executes a request and returns an AsyncIterable stream.
85
+ * @ru Выполняет запрос и возвращает итерируемый поток данных.
118
86
  */
119
- clearCache(): Promise<void>;
87
+ stream(req: RequestInterface | string): Promise<StreamResponse>;
120
88
  /**
121
- * Clears all collected request metrics.
122
- * Removes performance and timing data from memory.
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 request by its URL.
127
- * @param key - The URL or cache key to retrieve metrics for
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 collected request metrics.
133
- * @returns Array of all metrics objects
104
+ * @en Retrieves all stored request metrics.
105
+ * @ru Получает список всех сохраненных метрик.
134
106
  */
135
107
  getAllMetrics(): RequestMetrics[];
136
108
  /**
137
- * Creates a fluent request builder for making HTTP requests.
138
- * Provides a chainable API for building and sending requests.
139
- * @param url - The target URL for the request
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":["../../../../src/Hyperttp/Core/HttpClientImproved.ts"],"names":[],"mappings":"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"}
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"}