hyperttp 0.2.2 → 0.2.4

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 (49) hide show
  1. package/dist/Hyperttp/Core/CacheManager.d.ts +26 -2
  2. package/dist/Hyperttp/Core/CacheManager.d.ts.map +1 -1
  3. package/dist/Hyperttp/Core/CacheManager.js +30 -13
  4. package/dist/Hyperttp/Core/CacheManager.js.map +1 -1
  5. package/dist/Hyperttp/Core/HttpClientImproved.d.ts +68 -98
  6. package/dist/Hyperttp/Core/HttpClientImproved.d.ts.map +1 -1
  7. package/dist/Hyperttp/Core/HttpClientImproved.js +311 -631
  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 +50 -2
  14. package/dist/Hyperttp/Core/MetricsManager.d.ts.map +1 -1
  15. package/dist/Hyperttp/Core/MetricsManager.js +48 -4
  16. package/dist/Hyperttp/Core/MetricsManager.js.map +1 -1
  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 -54
  20. package/dist/Hyperttp/Core/QueueManager.js.map +1 -1
  21. package/dist/Hyperttp/Core/RateLimiter.d.ts +50 -0
  22. package/dist/Hyperttp/Core/RateLimiter.d.ts.map +1 -1
  23. package/dist/Hyperttp/Core/RateLimiter.js +39 -1
  24. package/dist/Hyperttp/Core/RateLimiter.js.map +1 -1
  25. package/dist/Hyperttp/Core/RequestBuilder.d.ts +44 -73
  26. package/dist/Hyperttp/Core/RequestBuilder.d.ts.map +1 -1
  27. package/dist/Hyperttp/Core/RequestBuilder.js +71 -106
  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 +3 -0
  38. package/dist/Hyperttp/Core/index.d.ts.map +1 -1
  39. package/dist/Hyperttp/Core/index.js +7 -1
  40. package/dist/Hyperttp/Core/index.js.map +1 -1
  41. package/dist/Hyperttp/Request.d.ts +9 -20
  42. package/dist/Hyperttp/Request.d.ts.map +1 -1
  43. package/dist/Hyperttp/Request.js +93 -85
  44. package/dist/Hyperttp/Request.js.map +1 -1
  45. package/dist/Types/index.d.ts +1 -0
  46. package/dist/Types/index.d.ts.map +1 -1
  47. package/dist/Types/request.d.ts +2 -3
  48. package/dist/Types/request.d.ts.map +1 -1
  49. package/package.json +4 -4
@@ -1,29 +1,53 @@
1
+ /**
2
+ * @interface CacheEntry
3
+ */
1
4
  export interface CacheEntry<T> {
2
5
  data: T;
3
6
  etag?: string;
4
7
  lastModified?: string;
5
8
  timestamp: number;
6
9
  }
10
+ /**
11
+ * @interface CacheManagerOptions
12
+ */
7
13
  export interface CacheManagerOptions {
8
14
  cacheTTL?: number;
9
15
  cacheMaxSize?: number;
10
16
  }
17
+ /**
18
+ * @class CacheManager
19
+ */
11
20
  export declare class CacheManager {
12
21
  private cache;
13
22
  private ttl;
14
23
  constructor(options?: CacheManagerOptions);
24
+ /**
25
+ * @en Retrieves data along with HTTP validation metadata.
26
+ */
15
27
  getWithMetadata<T>(key: string): Promise<{
16
28
  data: T;
17
29
  etag?: string;
18
30
  lastModified?: string;
19
31
  isExpired: boolean;
20
32
  } | null>;
33
+ /**
34
+ * @en Stores data with optional ETag and Last-Modified headers.
35
+ */
21
36
  setWithMetadata<T>(key: string, data: T, meta: {
22
- etag?: any;
23
- lastModified?: any;
37
+ etag?: unknown;
38
+ lastModified?: unknown;
24
39
  }): Promise<void>;
40
+ /**
41
+ * @en Gets an item from cache.
42
+ */
25
43
  get<T>(key: string): Promise<T | undefined>;
44
+ /**
45
+ * @en Standard async set method.
46
+ */
26
47
  set<T>(key: string, value: T): Promise<void>;
48
+ /**
49
+ * @en Checks if key exists and is not expired.
50
+ */
27
51
  has(key: string): Promise<boolean>;
28
52
  delete(key: string): Promise<boolean>;
29
53
  clear(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":"AAEA,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,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,GAAG,CAAS;gBAER,OAAO,CAAC,EAAE,mBAAmB;IAQnC,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;IAcH,eAAe,CAAC,CAAC,EACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,YAAY,CAAC,EAAE,GAAG,CAAA;KAAE,GACvC,OAAO,CAAC,IAAI,CAAC;IAUV,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAgB3C,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;IAclC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,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,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;
@@ -9,9 +12,13 @@ class CacheManager {
9
12
  this.ttl = options?.cacheTTL ?? 300_000;
10
13
  this.cache = new lru_cache_1.LRUCache({
11
14
  max: options?.cacheMaxSize ?? 500,
12
- updateAgeOnGet: false,
15
+ ttl: this.ttl,
16
+ updateAgeOnGet: true,
13
17
  });
14
18
  }
19
+ /**
20
+ * @en Retrieves data along with HTTP validation metadata.
21
+ */
15
22
  async getWithMetadata(key) {
16
23
  const entry = this.cache.get(key);
17
24
  if (!entry)
@@ -24,6 +31,9 @@ class CacheManager {
24
31
  isExpired,
25
32
  };
26
33
  }
34
+ /**
35
+ * @en Stores data with optional ETag and Last-Modified headers.
36
+ */
27
37
  async setWithMetadata(key, data, meta) {
28
38
  this.cache.set(key, {
29
39
  data,
@@ -32,30 +42,33 @@ class CacheManager {
32
42
  timestamp: Date.now(),
33
43
  });
34
44
  }
45
+ /**
46
+ * @en Gets an item from cache.
47
+ */
35
48
  async get(key) {
36
49
  const entry = this.cache.get(key);
37
50
  if (!entry)
38
51
  return undefined;
39
- const isExpired = Date.now() - entry.timestamp > this.ttl;
40
- if (isExpired) {
41
- this.cache.delete(key);
42
- return undefined;
43
- }
44
- entry.timestamp = Date.now();
45
- this.cache.set(key, entry);
46
52
  return entry.data;
47
53
  }
54
+ /**
55
+ * @en Standard async set method.
56
+ */
48
57
  async set(key, value) {
49
- await this.setWithMetadata(key, value, {});
58
+ this.cache.set(key, {
59
+ data: value,
60
+ timestamp: Date.now(),
61
+ });
50
62
  }
63
+ /**
64
+ * @en Checks if key exists and is not expired.
65
+ */
51
66
  async has(key) {
52
67
  const entry = this.cache.get(key);
53
68
  if (!entry)
54
69
  return false;
55
- // Если время жизни истекло — для метода has() записи "нет"
56
70
  const isExpired = Date.now() - entry.timestamp > this.ttl;
57
71
  if (isExpired) {
58
- // Опционально: удаляем сразу, чтобы не забивать память
59
72
  this.cache.delete(key);
60
73
  return false;
61
74
  }
@@ -67,11 +80,15 @@ class CacheManager {
67
80
  async clear() {
68
81
  this.cache.clear();
69
82
  }
83
+ // --- Synchronous Methods ---
70
84
  getSync(key) {
71
- return this.cache.get(key);
85
+ return this.cache.get(key)?.data;
72
86
  }
73
87
  setSync(key, value) {
74
- this.setWithMetadata(key, value, {});
88
+ this.cache.set(key, {
89
+ data: value,
90
+ timestamp: Date.now(),
91
+ });
75
92
  }
76
93
  hasSync(key) {
77
94
  return this.cache.has(key);
@@ -1 +1 @@
1
- {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAcrC,MAAa,YAAY;IACf,KAAK,CAAoC;IACzC,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,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAI,GAAW;QAMlC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;QAE1D,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,SAAS;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,GAAW,EACX,IAAO,EACP,IAAwC;QAExC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI;YACJ,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC3D,YAAY,EACV,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACvE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE3B,OAAO,KAAK,CAAC,IAAS,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,KAAQ;QAChC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,2DAA2D;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,uDAAuD;YACvD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,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,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,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACvC,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,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AA9GD,oCA8GC"}
1
+ {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/CacheManager.ts"],"names":[],"mappings":"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"}
@@ -1,150 +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
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
- /**
47
- * @ru Закрывает агент и освобождает ресурсы (keep-alive соединения).
48
- * @en Closes the HTTP agent and terminates keep-alive connections.
49
- */
50
- close(): void;
51
- private log;
52
- private decompress;
53
- private calcDelay;
54
- private sleep;
55
- private applyRequestInterceptors;
56
- private applyResponseInterceptors;
57
- private resolveRedirect;
58
- private parseRetryAfterMs;
59
- private readBodyWithLimit;
60
- private sendWithRetry;
61
- private xmlParser;
62
- private parseResponse;
63
33
  private requestInternal;
64
34
  /**
65
- * Performs an HTTP GET request.
66
- * @param req The request object containing URL and headers
67
- * @param responseType Optional response parsing type
68
- * @returns A promise that resolves to the parsed response
69
- * @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
70
39
  */
71
40
  get<T = any>(req: RequestInterface | string, responseType?: ResponseType): Promise<T>;
72
41
  /**
73
- * Performs an HTTP POST request.
74
- * @param req The request object containing URL, body, and headers
75
- * @param responseType Optional response parsing type
76
- * @returns A promise that resolves to the parsed response
77
- * @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
78
47
  */
79
48
  post<T = any>(req: RequestInterface | string, body?: any, responseType?: ResponseType): Promise<T>;
80
49
  /**
81
- * Performs an HTTP PUT request.
82
- * @param req The request object containing URL, body, and headers
83
- * @param responseType Optional response parsing type
84
- * @returns A promise that resolves to the parsed response
85
- * @template T The expected response type
50
+ * @en Performs an HTTP PUT request.
51
+ * @ru Выполняет HTTP PUT запрос.
86
52
  */
87
53
  put<T = any>(req: RequestInterface | string, body?: any, responseType?: ResponseType): Promise<T>;
88
54
  /**
89
- * Performs an HTTP DELETE request.
90
- * @param req The request object containing URL and headers
91
- * @param responseType Optional response parsing type
92
- * @returns A promise that resolves to the parsed response
93
- * @template T The expected response type
55
+ * @en Performs an HTTP DELETE request.
56
+ * @ru Выполняет HTTP DELETE запрос.
94
57
  */
95
58
  delete<T = any>(req: RequestInterface | string, responseType?: ResponseType): Promise<T>;
96
59
  /**
97
- * Performs an HTTP PATCH request.
98
- * @param req The request object containing URL, body, and headers
99
- * @param responseType Optional response parsing type
100
- * @returns A promise that resolves to the parsed response
101
- * @template T The expected response type
60
+ * @en Performs an HTTP PATCH request.
61
+ * @ru Выполняет HTTP PATCH запрос.
102
62
  */
103
63
  patch<T = any>(req: RequestInterface | string, body?: any, responseType?: ResponseType): Promise<T>;
104
64
  /**
105
- * @ru Получает потоковый ответ (для SSE, больших файлов).
106
- * @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();
107
68
  */
108
- stream(req: RequestInterface | string): Promise<StreamResponse>;
69
+ request<T = any>(url: string): RequestBuilder<T>;
70
+ /**
71
+ * @en Releases all resources, aborts active requests, and closes connections.
72
+ * @ru Освобождает ресурсы клиента, отменяет активные запросы и закрывает соединения.
73
+ */
74
+ destroy(): Promise<void>;
109
75
  /**
110
- * Performs an HTTP HEAD request.
111
- * @param req The request object containing URL and headers
112
- * @returns A promise that resolves when the request completes
76
+ * @en Performs an HTTP HEAD request.
77
+ * @ru Выполняет HTTP HEAD запрос.
113
78
  */
114
79
  head(req: RequestInterface | string): Promise<{
115
80
  status: number;
116
81
  headers: Record<string, any>;
117
82
  }>;
118
83
  /**
119
- * Clears the request cache.
84
+ * @en Executes a request and returns an AsyncIterable stream.
85
+ * @ru Выполняет запрос и возвращает итерируемый поток данных.
120
86
  */
121
- clearCache(): Promise<void>;
87
+ stream(req: RequestInterface | string): Promise<StreamResponse>;
88
+ /**
89
+ * @en Clears the internal cache.
90
+ * @ru Полностью очищает внутренний кэш клиента.
91
+ */
92
+ clearCache(): void;
122
93
  /**
123
- * Clears all collected request metrics.
124
- * Removes performance and timing data from memory.
94
+ * @en Clears all collected performance metrics.
95
+ * @ru Очищает все собранные метрики производительности.
125
96
  */
126
97
  clearMetrics(): void;
127
98
  /**
128
- * Retrieves metrics for a specific request by its URL.
129
- * @param key - The URL or cache key to retrieve metrics for
130
- * @returns Metrics object if found, undefined otherwise
99
+ * @en Retrieves metrics for a specific URL.
100
+ * @ru Получает метрики для конкретного URL.
131
101
  */
132
102
  getMetrics(key: string): RequestMetrics | undefined;
133
103
  /**
134
- * Retrieves all collected request metrics.
135
- * @returns Array of all metrics objects
104
+ * @en Retrieves all stored request metrics.
105
+ * @ru Получает список всех сохраненных метрик.
136
106
  */
137
107
  getAllMetrics(): RequestMetrics[];
138
108
  /**
139
- * Creates a fluent request builder for making HTTP requests.
140
- * Provides a chainable API for building and sending requests.
141
- * @param url - The target URL for the request
142
- * @returns RequestBuilder instance for chaining
143
- */
144
- request<T = any>(url: string): RequestBuilder<T>;
145
- /**
146
- * Returns current statistics about the HTTP client's state.
147
- * @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.
148
112
  */
149
113
  getStats(): {
150
114
  cacheSize: number;
@@ -153,5 +117,11 @@ export default class HttpClientImproved implements HttpClientInterface {
153
117
  activeRequests: number;
154
118
  currentRateLimit: number;
155
119
  };
120
+ private normalizeRequest;
121
+ private applyDefaultOptions;
122
+ private prepareRequestData;
123
+ private createInitialMetrics;
124
+ private recordSuccess;
125
+ private recordError;
156
126
  }
157
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":"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"}