hyperttp 0.2.4 → 0.2.6

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 (110) hide show
  1. package/README.md +129 -16
  2. package/dist/Hyperttp/Core/CacheManager.d.ts +63 -40
  3. package/dist/Hyperttp/Core/CacheManager.d.ts.map +1 -1
  4. package/dist/Hyperttp/Core/CacheManager.js +64 -62
  5. package/dist/Hyperttp/Core/CacheManager.js.map +1 -1
  6. package/dist/Hyperttp/Core/HttpClientImproved.d.ts +55 -33
  7. package/dist/Hyperttp/Core/HttpClientImproved.d.ts.map +1 -1
  8. package/dist/Hyperttp/Core/HttpClientImproved.js +315 -211
  9. package/dist/Hyperttp/Core/HttpClientImproved.js.map +1 -1
  10. package/dist/Hyperttp/Core/InterceptorManager.d.ts +11 -11
  11. package/dist/Hyperttp/Core/InterceptorManager.d.ts.map +1 -1
  12. package/dist/Hyperttp/Core/InterceptorManager.js +10 -10
  13. package/dist/Hyperttp/Core/InterceptorManager.js.map +1 -1
  14. package/dist/Hyperttp/Core/MetricsManager.d.ts +33 -42
  15. package/dist/Hyperttp/Core/MetricsManager.d.ts.map +1 -1
  16. package/dist/Hyperttp/Core/MetricsManager.js +165 -59
  17. package/dist/Hyperttp/Core/MetricsManager.js.map +1 -1
  18. package/dist/Hyperttp/Core/QueueManager.d.ts +6 -4
  19. package/dist/Hyperttp/Core/QueueManager.d.ts.map +1 -1
  20. package/dist/Hyperttp/Core/QueueManager.js +42 -34
  21. package/dist/Hyperttp/Core/QueueManager.js.map +1 -1
  22. package/dist/Hyperttp/Core/RateLimiter.d.ts +29 -36
  23. package/dist/Hyperttp/Core/RateLimiter.d.ts.map +1 -1
  24. package/dist/Hyperttp/Core/RateLimiter.js +100 -36
  25. package/dist/Hyperttp/Core/RateLimiter.js.map +1 -1
  26. package/dist/Hyperttp/Core/RequestBuilder.d.ts +4 -2
  27. package/dist/Hyperttp/Core/RequestBuilder.d.ts.map +1 -1
  28. package/dist/Hyperttp/Core/RequestBuilder.js +10 -3
  29. package/dist/Hyperttp/Core/RequestBuilder.js.map +1 -1
  30. package/dist/Hyperttp/Core/RequestExecutor.d.ts +7 -34
  31. package/dist/Hyperttp/Core/RequestExecutor.d.ts.map +1 -1
  32. package/dist/Hyperttp/Core/RequestExecutor.js +121 -114
  33. package/dist/Hyperttp/Core/RequestExecutor.js.map +1 -1
  34. package/dist/Hyperttp/Core/RequestProfiler.d.ts +10 -0
  35. package/dist/Hyperttp/Core/RequestProfiler.d.ts.map +1 -0
  36. package/dist/Hyperttp/Core/RequestProfiler.js +55 -0
  37. package/dist/Hyperttp/Core/RequestProfiler.js.map +1 -0
  38. package/dist/Hyperttp/Core/ResponseConverter.d.ts +23 -0
  39. package/dist/Hyperttp/Core/ResponseConverter.d.ts.map +1 -0
  40. package/dist/Hyperttp/Core/ResponseConverter.js +369 -0
  41. package/dist/Hyperttp/Core/ResponseConverter.js.map +1 -0
  42. package/dist/Hyperttp/Core/index.d.ts +8 -10
  43. package/dist/Hyperttp/Core/index.d.ts.map +1 -1
  44. package/dist/Hyperttp/Core/index.js +28 -15
  45. package/dist/Hyperttp/Core/index.js.map +1 -1
  46. package/dist/Hyperttp/UrlExtractor.d.ts +1 -1
  47. package/dist/Hyperttp/UrlExtractor.d.ts.map +1 -1
  48. package/dist/Hyperttp/index.d.ts +1 -3
  49. package/dist/Hyperttp/index.d.ts.map +1 -1
  50. package/dist/Hyperttp/index.js +8 -8
  51. package/dist/Hyperttp/index.js.map +1 -1
  52. package/dist/Types/cache.d.ts +10 -0
  53. package/dist/Types/cache.d.ts.map +1 -0
  54. package/dist/Types/cache.js +3 -0
  55. package/dist/Types/cache.js.map +1 -0
  56. package/dist/Types/errors.d.ts +15 -0
  57. package/dist/Types/errors.d.ts.map +1 -0
  58. package/dist/Types/errors.js +34 -0
  59. package/dist/Types/errors.js.map +1 -0
  60. package/dist/Types/http-client.d.ts +39 -0
  61. package/dist/Types/http-client.d.ts.map +1 -0
  62. package/dist/Types/http-client.js +3 -0
  63. package/dist/Types/http-client.js.map +1 -0
  64. package/dist/Types/http.d.ts +5 -0
  65. package/dist/Types/http.d.ts.map +1 -0
  66. package/dist/Types/http.js +3 -0
  67. package/dist/Types/http.js.map +1 -0
  68. package/dist/Types/index.d.ts +12 -127
  69. package/dist/Types/index.d.ts.map +1 -1
  70. package/dist/Types/index.js +12 -39
  71. package/dist/Types/index.js.map +1 -1
  72. package/dist/Types/interceptors.d.ts +13 -0
  73. package/dist/Types/interceptors.d.ts.map +1 -0
  74. package/dist/Types/interceptors.js +3 -0
  75. package/dist/Types/interceptors.js.map +1 -0
  76. package/dist/Types/metrics.d.ts +90 -0
  77. package/dist/Types/metrics.d.ts.map +1 -0
  78. package/dist/Types/metrics.js +3 -0
  79. package/dist/Types/metrics.js.map +1 -0
  80. package/dist/Types/options.d.ts +233 -0
  81. package/dist/Types/options.d.ts.map +1 -0
  82. package/dist/Types/options.js +3 -0
  83. package/dist/Types/options.js.map +1 -0
  84. package/dist/Types/queue.d.ts +8 -0
  85. package/dist/Types/queue.d.ts.map +1 -0
  86. package/dist/Types/queue.js +3 -0
  87. package/dist/Types/queue.js.map +1 -0
  88. package/dist/Types/request.d.ts +148 -9
  89. package/dist/Types/request.d.ts.map +1 -1
  90. package/dist/Types/response.d.ts +28 -0
  91. package/dist/Types/response.d.ts.map +1 -0
  92. package/dist/Types/response.js +3 -0
  93. package/dist/Types/response.js.map +1 -0
  94. package/dist/Types/stream.d.ts +39 -0
  95. package/dist/Types/stream.d.ts.map +1 -0
  96. package/dist/Types/stream.js +3 -0
  97. package/dist/Types/stream.js.map +1 -0
  98. package/dist/Types/url-extractor.d.ts +10 -0
  99. package/dist/Types/url-extractor.d.ts.map +1 -0
  100. package/dist/Types/url-extractor.js +3 -0
  101. package/dist/Types/url-extractor.js.map +1 -0
  102. package/dist/index.d.ts +1 -2
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +8 -3
  105. package/dist/index.js.map +1 -1
  106. package/package.json +7 -5
  107. package/dist/Hyperttp/Core/ResponseTransformer.d.ts +0 -35
  108. package/dist/Hyperttp/Core/ResponseTransformer.d.ts.map +0 -1
  109. package/dist/Hyperttp/Core/ResponseTransformer.js +0 -171
  110. package/dist/Hyperttp/Core/ResponseTransformer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/MetricsManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MetricsManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/MetricsManager.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,16 @@
1
1
  export declare class QueueManager {
2
- private maxConcurrent;
2
+ private readonly maxConcurrent;
3
3
  private running;
4
- private size;
4
+ private queued;
5
5
  private head;
6
6
  private tail;
7
7
  constructor(maxConcurrent?: number);
8
8
  enqueue<T>(executor: () => Promise<T>): Promise<T>;
9
- private runTask;
10
- private processQueue;
9
+ private drain;
10
+ clear(): void;
11
11
  get activeCount(): number;
12
12
  get queuedCount(): number;
13
+ get pending(): number;
14
+ get isIdle(): boolean;
13
15
  }
14
16
  //# sourceMappingURL=QueueManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueueManager.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/QueueManager.ts"],"names":[],"mappings":"AAOA,qBAAa,YAAY;IAOX,OAAO,CAAC,aAAa;IANjC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,IAAI,CAAK;IAEjB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,IAAI,CAA0B;gBAElB,aAAa,SAAK;IAEhC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAmB1C,OAAO;IAmBrB,OAAO,CAAC,YAAY;IAiBpB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}
1
+ {"version":3,"file":"QueueManager.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/QueueManager.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAY;IAMX,OAAO,CAAC,QAAQ,CAAC,aAAa;IAL1C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,IAAI,CAA0B;gBAET,aAAa,SAAK;IAE/C,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqBlD,OAAO,CAAC,KAAK;IAsBb,KAAK,IAAI,IAAI;IAcb,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;CACF"}
@@ -4,63 +4,71 @@ exports.QueueManager = void 0;
4
4
  class QueueManager {
5
5
  maxConcurrent;
6
6
  running = 0;
7
- size = 0;
7
+ queued = 0;
8
8
  head = null;
9
9
  tail = null;
10
10
  constructor(maxConcurrent = 50) {
11
11
  this.maxConcurrent = maxConcurrent;
12
12
  }
13
- async enqueue(executor) {
14
- if (this.running < this.maxConcurrent) {
15
- return this.runTask(executor);
16
- }
13
+ enqueue(executor) {
17
14
  return new Promise((resolve, reject) => {
18
- const newNode = { executor, resolve, reject, next: null };
19
- if (!this.tail) {
20
- this.head = newNode;
21
- this.tail = newNode;
15
+ const node = {
16
+ executor,
17
+ resolve: resolve,
18
+ reject,
19
+ next: null,
20
+ };
21
+ if (this.tail) {
22
+ this.tail.next = node;
22
23
  }
23
24
  else {
24
- this.tail.next = newNode;
25
- this.tail = newNode;
25
+ this.head = node;
26
26
  }
27
- this.size++;
27
+ this.tail = node;
28
+ this.queued++;
29
+ this.drain();
28
30
  });
29
31
  }
30
- async runTask(executor, resolve, reject) {
31
- this.running++;
32
- try {
33
- const result = await executor();
34
- resolve?.(result);
35
- return result;
36
- }
37
- catch (error) {
38
- reject?.(error);
39
- throw error;
40
- }
41
- finally {
42
- this.running--;
43
- this.processQueue();
44
- }
45
- }
46
- processQueue() {
32
+ drain() {
47
33
  while (this.running < this.maxConcurrent && this.head) {
48
34
  const task = this.head;
49
- this.head = this.head.next;
35
+ this.head = task.next;
50
36
  if (!this.head) {
51
37
  this.tail = null;
52
38
  }
53
- this.size--;
54
- queueMicrotask(() => {
55
- this.runTask(task.executor, task.resolve, task.reject);
39
+ this.queued--;
40
+ this.running++;
41
+ Promise.resolve()
42
+ .then(task.executor)
43
+ .then(task.resolve, task.reject)
44
+ .finally(() => {
45
+ this.running--;
46
+ this.drain();
56
47
  });
57
48
  }
58
49
  }
50
+ clear() {
51
+ const error = new Error("Queue has been cleared");
52
+ while (this.head) {
53
+ const node = this.head;
54
+ this.head = node.next;
55
+ node.reject(error);
56
+ }
57
+ this.head = null;
58
+ this.tail = null;
59
+ this.queued = 0;
60
+ }
59
61
  get activeCount() {
60
62
  return this.running;
61
63
  }
62
64
  get queuedCount() {
63
- return this.size;
65
+ return this.queued;
66
+ }
67
+ get pending() {
68
+ return this.running + this.queued;
69
+ }
70
+ get isIdle() {
71
+ return this.running === 0 && this.queued === 0;
64
72
  }
65
73
  }
66
74
  exports.QueueManager = QueueManager;
@@ -1 +1 @@
1
- {"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/QueueManager.ts"],"names":[],"mappings":";;;AAOA,MAAa,YAAY;IAOH;IANZ,OAAO,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,CAAC,CAAC;IAET,IAAI,GAAqB,IAAI,CAAC;IAC9B,IAAI,GAAqB,IAAI,CAAC;IAEtC,YAAoB,gBAAgB,EAAE;QAAlB,kBAAa,GAAb,aAAa,CAAK;IAAG,CAAC;IAE1C,KAAK,CAAC,OAAO,CAAI,QAA0B;QACzC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,OAAO,GAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAErE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACpB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,QAA0B,EAC1B,OAAwB,EACxB,MAAyB;QAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;YAChB,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,cAAc,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAvED,oCAuEC"}
1
+ {"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/QueueManager.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IAMM;IALrB,OAAO,GAAG,CAAC,CAAC;IACZ,MAAM,GAAG,CAAC,CAAC;IACX,IAAI,GAAqB,IAAI,CAAC;IAC9B,IAAI,GAAqB,IAAI,CAAC;IAEtC,YAA6B,gBAAgB,EAAE;QAAlB,kBAAa,GAAb,aAAa,CAAK;IAAG,CAAC;IAEnD,OAAO,CAAI,QAA0B;QACnC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,IAAI,GAAc;gBACtB,QAAQ;gBACR,OAAO,EAAE,OAAmC;gBAC5C,MAAM;gBACN,IAAI,EAAE,IAAI;aACX,CAAC;YAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK;QACX,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,EAAE,CAAC;YAEf,OAAO,CAAC,OAAO,EAAE;iBACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;iBACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;iBAC/B,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IACjD,CAAC;CACF;AAhFD,oCAgFC"}
@@ -1,69 +1,62 @@
1
- /**
2
- * @interface RateLimiterConfig
3
- * @en Configuration for the token bucket rate limiter.
4
- * @ru Конфигурация для ограничителя частоты запросов (алгоритм Token Bucket).
5
- */
6
- export interface RateLimiterConfig {
7
- /** * @en Maximum number of requests allowed within the window.
8
- * @ru Максимальное количество запросов, разрешенных в пределах окна.
9
- * @default 100
10
- */
11
- maxRequests?: number;
12
- /** * @en Time window in milliseconds.
13
- * @ru Временное окно в миллисекундах.
14
- * @default 60000 (1 minute)
15
- */
16
- windowMs?: number;
17
- }
1
+ import type { RateLimitOptions } from "../../Types/options";
18
2
  /**
19
3
  * @class RateLimiter
20
- * @en Smooth rate limiting using the Token Bucket algorithm.
21
- * Allows for short bursts while maintaining a steady long-term rate.
22
- * @ru Плавное ограничение частоты запросов с использованием алгоритма Token Bucket.
23
- * Позволяет кратковременные всплески, сохраняя стабильную скорость в долгосрочной перспективе.
4
+ * @en Token bucket rate limiter with FIFO wait queue.
5
+ * @ru Rate limiter на основе token bucket с FIFO-очередью ожидания.
24
6
  */
25
7
  export declare class RateLimiter {
26
- private tokens;
27
- private lastRefill;
8
+ private readonly enabled;
28
9
  private readonly max;
29
10
  private readonly window;
30
11
  private readonly refillRate;
31
- constructor(config?: RateLimiterConfig);
12
+ private tokens;
13
+ private lastRefill;
14
+ private waiters;
15
+ private timer;
16
+ constructor(config?: RateLimitOptions);
32
17
  /**
33
18
  * @en Waits until enough tokens are available and consumes them.
34
- * @ru Ожидает появления достаточного количества токенов и потребляет их.
35
- * @param tokensNeeded - Number of tokens to consume (default: 1)
19
+ * @ru Ждёт появления достаточного числа токенов и потребляет их.
36
20
  */
37
21
  wait(tokensNeeded?: number): Promise<void>;
38
22
  /**
39
23
  * @en Attempts to consume tokens immediately.
40
24
  * @ru Пытается немедленно потребить токены.
41
- * @returns true if tokens were consumed, false otherwise (limit exceeded).
42
25
  */
43
26
  tryConsume(tokensNeeded?: number): boolean;
44
27
  /**
45
28
  * @en Internal method to refill the bucket based on elapsed time.
46
- * @ru Внутренний метод для пополнения корзины на основе прошедшего времени.
29
+ * @ru Внутренний метод пополнения корзины на основе прошедшего времени.
47
30
  */
48
31
  private refill;
49
32
  /**
50
- * @en Returns the number of currently "used" slots.
51
- * @ru Возвращает количество текущих "занятых" слотов.
33
+ * @en Processes queued waiters in FIFO order.
34
+ * @ru Обрабатывает ожидающие запросы в FIFO-порядке.
52
35
  */
53
- get currentCount(): number;
36
+ private drainQueue;
37
+ /**
38
+ * @en Schedules the next queue drain based on the next token refill time.
39
+ * @ru Планирует следующий проход по очереди с учётом времени до следующего токена.
40
+ */
41
+ private scheduleDrain;
54
42
  /**
55
- * @en Returns how many requests can be made right now.
56
- * @ru Возвращает количество запросов, которые можно выполнить прямо сейчас.
43
+ * @en Returns the number of currently available tokens.
44
+ * @ru Возвращает текущее число доступных токенов.
57
45
  */
58
46
  get remainingRequests(): number;
47
+ /**
48
+ * @en Returns the number of currently "used" slots.
49
+ * @ru Возвращает число уже занятых слотов.
50
+ */
51
+ get currentCount(): number;
59
52
  /**
60
53
  * @en Estimated time in ms until the next token is available.
61
- * @ru Ожидаемое время в мс до появления следующего токена.
54
+ * @ru Оценка времени в мс до появления следующего токена.
62
55
  */
63
56
  get timeToReset(): number;
64
57
  /**
65
- * @en Instantly refills the bucket to its maximum capacity.
66
- * @ru Мгновенно пополняет корзину до максимальной емкости.
58
+ * @en Instantly refills the bucket to max capacity and clears waiting timers.
59
+ * @ru Мгновенно пополняет корзину до максимума и очищает таймеры ожидания.
67
60
  */
68
61
  reset(): void;
69
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RateLimiter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,CAAC,EAAE,iBAAiB;IAQtC;;;;OAIG;IACG,IAAI,CAAC,YAAY,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3C;;;;OAIG;IACH,UAAU,CAAC,YAAY,SAAI,GAAG,OAAO;IAUrC;;;OAGG;IACH,OAAO,CAAC,MAAM;IASd;;;OAGG;IACH,IAAI,YAAY,IAAI,MAAM,CAGzB;IAED;;;OAGG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAG9B;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI;CAId"}
1
+ {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RateLimiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQ5D;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAA8C;gBAE/C,MAAM,CAAC,EAAE,gBAAgB;IAUrC;;;OAGG;IACG,IAAI,CAAC,YAAY,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3C;;;OAGG;IACH,UAAU,CAAC,YAAY,SAAI,GAAG,OAAO;IAkBrC;;;OAGG;IACH,OAAO,CAAC,MAAM;IAad;;;OAGG;IACH,OAAO,CAAC,UAAU;IAqBlB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqBrB;;;OAGG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAI9B;IAED;;;OAGG;IACH,IAAI,YAAY,IAAI,MAAM,CAIzB;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAQxB;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI;CAgBd"}
@@ -3,18 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RateLimiter = void 0;
4
4
  /**
5
5
  * @class RateLimiter
6
- * @en Smooth rate limiting using the Token Bucket algorithm.
7
- * Allows for short bursts while maintaining a steady long-term rate.
8
- * @ru Плавное ограничение частоты запросов с использованием алгоритма Token Bucket.
9
- * Позволяет кратковременные всплески, сохраняя стабильную скорость в долгосрочной перспективе.
6
+ * @en Token bucket rate limiter with FIFO wait queue.
7
+ * @ru Rate limiter на основе token bucket с FIFO-очередью ожидания.
10
8
  */
11
9
  class RateLimiter {
12
- tokens;
13
- lastRefill;
10
+ enabled;
14
11
  max;
15
12
  window;
16
13
  refillRate; // tokens per ms
14
+ tokens;
15
+ lastRefill;
16
+ waiters = [];
17
+ timer = null;
17
18
  constructor(config) {
19
+ this.enabled = config?.enabled ?? false;
18
20
  this.max = Math.max(1, config?.maxRequests ?? 100);
19
21
  this.window = Math.max(1, config?.windowMs ?? 60_000);
20
22
  this.refillRate = this.max / this.window;
@@ -23,33 +25,38 @@ class RateLimiter {
23
25
  }
24
26
  /**
25
27
  * @en Waits until enough tokens are available and consumes them.
26
- * @ru Ожидает появления достаточного количества токенов и потребляет их.
27
- * @param tokensNeeded - Number of tokens to consume (default: 1)
28
+ * @ru Ждёт появления достаточного числа токенов и потребляет их.
28
29
  */
29
30
  async wait(tokensNeeded = 1) {
31
+ if (!this.enabled)
32
+ return;
33
+ tokensNeeded = Math.max(1, Math.floor(tokensNeeded));
34
+ if (tokensNeeded > this.max) {
35
+ tokensNeeded = this.max;
36
+ }
30
37
  this.refill();
31
- tokensNeeded = Math.max(1, tokensNeeded);
32
- if (this.tokens >= tokensNeeded) {
38
+ if (this.waiters.length === 0 && this.tokens >= tokensNeeded) {
33
39
  this.tokens -= tokensNeeded;
34
40
  return;
35
41
  }
36
- const deficit = tokensNeeded - this.tokens;
37
- const waitTimeMs = Math.ceil(deficit / this.refillRate);
38
- // Приостанавливаем выполнение на расчетное время
39
- await new Promise((resolve) => setTimeout(resolve, waitTimeMs));
40
- this.refill();
41
- this.tokens -= tokensNeeded;
42
- this.tokens = Math.max(0, this.tokens);
42
+ return new Promise((resolve, reject) => {
43
+ this.waiters.push({ tokensNeeded, resolve, reject });
44
+ this.scheduleDrain();
45
+ });
43
46
  }
44
47
  /**
45
48
  * @en Attempts to consume tokens immediately.
46
49
  * @ru Пытается немедленно потребить токены.
47
- * @returns true if tokens were consumed, false otherwise (limit exceeded).
48
50
  */
49
51
  tryConsume(tokensNeeded = 1) {
52
+ if (!this.enabled)
53
+ return true;
54
+ tokensNeeded = Math.max(1, Math.floor(tokensNeeded));
55
+ if (tokensNeeded > this.max) {
56
+ tokensNeeded = this.max;
57
+ }
50
58
  this.refill();
51
- tokensNeeded = Math.max(1, tokensNeeded);
52
- if (this.tokens >= tokensNeeded) {
59
+ if (this.waiters.length === 0 && this.tokens >= tokensNeeded) {
53
60
  this.tokens -= tokensNeeded;
54
61
  return true;
55
62
  }
@@ -57,49 +64,106 @@ class RateLimiter {
57
64
  }
58
65
  /**
59
66
  * @en Internal method to refill the bucket based on elapsed time.
60
- * @ru Внутренний метод для пополнения корзины на основе прошедшего времени.
67
+ * @ru Внутренний метод пополнения корзины на основе прошедшего времени.
61
68
  */
62
69
  refill() {
63
70
  const now = Date.now();
64
71
  const elapsedMs = now - this.lastRefill;
65
- const newTokens = elapsedMs * this.refillRate;
66
- this.tokens = Math.min(this.max, this.tokens + newTokens);
67
- this.lastRefill = now;
72
+ if (elapsedMs <= 0)
73
+ return;
74
+ const added = elapsedMs * this.refillRate;
75
+ if (added > 0) {
76
+ this.tokens = Math.min(this.max, this.tokens + added);
77
+ this.lastRefill = now;
78
+ }
68
79
  }
69
80
  /**
70
- * @en Returns the number of currently "used" slots.
71
- * @ru Возвращает количество текущих "занятых" слотов.
81
+ * @en Processes queued waiters in FIFO order.
82
+ * @ru Обрабатывает ожидающие запросы в FIFO-порядке.
72
83
  */
73
- get currentCount() {
84
+ drainQueue() {
85
+ this.timer = null;
74
86
  this.refill();
75
- return Math.floor(this.max - this.tokens);
87
+ while (this.waiters.length > 0) {
88
+ const next = this.waiters[0];
89
+ if (this.tokens < next.tokensNeeded) {
90
+ break;
91
+ }
92
+ this.tokens -= next.tokensNeeded;
93
+ this.waiters.shift();
94
+ next.resolve();
95
+ }
96
+ if (this.waiters.length > 0) {
97
+ this.scheduleDrain();
98
+ }
76
99
  }
77
100
  /**
78
- * @en Returns how many requests can be made right now.
79
- * @ru Возвращает количество запросов, которые можно выполнить прямо сейчас.
101
+ * @en Schedules the next queue drain based on the next token refill time.
102
+ * @ru Планирует следующий проход по очереди с учётом времени до следующего токена.
103
+ */
104
+ scheduleDrain() {
105
+ if (this.timer || this.waiters.length === 0)
106
+ return;
107
+ const first = this.waiters[0];
108
+ const needed = Math.max(0, first.tokensNeeded - this.tokens);
109
+ if (needed <= 0) {
110
+ queueMicrotask(() => this.drainQueue());
111
+ return;
112
+ }
113
+ const waitMs = Math.ceil(needed / this.refillRate);
114
+ this.timer = setTimeout(() => {
115
+ this.drainQueue();
116
+ }, Math.max(1, waitMs));
117
+ }
118
+ /**
119
+ * @en Returns the number of currently available tokens.
120
+ * @ru Возвращает текущее число доступных токенов.
80
121
  */
81
122
  get remainingRequests() {
123
+ if (!this.enabled)
124
+ return Number.POSITIVE_INFINITY;
82
125
  this.refill();
83
- return Math.floor(this.tokens);
126
+ return Math.max(0, Math.floor(this.tokens));
127
+ }
128
+ /**
129
+ * @en Returns the number of currently "used" slots.
130
+ * @ru Возвращает число уже занятых слотов.
131
+ */
132
+ get currentCount() {
133
+ if (!this.enabled)
134
+ return 0;
135
+ this.refill();
136
+ return Math.max(0, Math.floor(this.max - this.tokens));
84
137
  }
85
138
  /**
86
139
  * @en Estimated time in ms until the next token is available.
87
- * @ru Ожидаемое время в мс до появления следующего токена.
140
+ * @ru Оценка времени в мс до появления следующего токена.
88
141
  */
89
142
  get timeToReset() {
143
+ if (!this.enabled)
144
+ return 0;
90
145
  this.refill();
91
146
  if (this.tokens >= 1)
92
147
  return 0;
93
- const deficitToOne = 1 - this.tokens;
94
- return Math.max(0, Math.ceil(deficitToOne / this.refillRate));
148
+ const deficit = 1 - this.tokens;
149
+ return Math.max(0, Math.ceil(deficit / this.refillRate));
95
150
  }
96
151
  /**
97
- * @en Instantly refills the bucket to its maximum capacity.
98
- * @ru Мгновенно пополняет корзину до максимальной емкости.
152
+ * @en Instantly refills the bucket to max capacity and clears waiting timers.
153
+ * @ru Мгновенно пополняет корзину до максимума и очищает таймеры ожидания.
99
154
  */
100
155
  reset() {
156
+ const error = new Error("Rate limiter has been reset");
157
+ while (this.waiters.length > 0) {
158
+ const waiter = this.waiters.shift();
159
+ waiter?.reject(error);
160
+ }
101
161
  this.tokens = this.max;
102
162
  this.lastRefill = Date.now();
163
+ if (this.timer) {
164
+ clearTimeout(this.timer);
165
+ this.timer = null;
166
+ }
103
167
  }
104
168
  }
105
169
  exports.RateLimiter = RateLimiter;
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RateLimiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RateLimiter.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ import HttpClientImproved from "./HttpClientImproved";
12
12
  * .send();
13
13
  * ```
14
14
  */
15
- export declare class RequestBuilder<T = any> {
15
+ export declare class RequestBuilder {
16
16
  private _url;
17
17
  private _method;
18
18
  private _headers;
@@ -51,6 +51,8 @@ export declare class RequestBuilder<T = any> {
51
51
  delete(): this;
52
52
  /** @en Set method to HEAD */
53
53
  head(): this;
54
+ /** @en Set method to OPTIONS */
55
+ options(): this;
54
56
  /** @en Set response type to JSON */
55
57
  json(): this;
56
58
  /** @en Set response type to Plain Text */
@@ -76,6 +78,6 @@ export declare class RequestBuilder<T = any> {
76
78
  * @ru Финализирует и отправляет запрос.
77
79
  * @returns Promise resolving to the expected type T or StreamResponse.
78
80
  */
79
- send(): Promise<T>;
81
+ send(): Promise<any>;
80
82
  }
81
83
  //# sourceMappingURL=RequestBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequestBuilder.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RequestBuilder.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc,CAAC,CAAC,GAAG,GAAG;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAA+D;IAC9E,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAM;IACpB,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAc;gBAElB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB;IAKnD;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAK9C;;;OAGG;IACH,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAKzB;;;OAGG;IACH,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAM1B;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAS9D,6BAA6B;IAC7B,IAAI,IAAI,IAAI;IAKZ,4BAA4B;IAC5B,GAAG,IAAI,IAAI;IAKX,8BAA8B;IAC9B,KAAK,IAAI,IAAI;IAKb,+BAA+B;IAC/B,MAAM,IAAI,IAAI;IAKd,6BAA6B;IAC7B,IAAI,IAAI,IAAI;IAKZ,oCAAoC;IACpC,IAAI,IAAI,IAAI;IAKZ,0CAA0C;IAC1C,IAAI,IAAI,IAAI;IAKZ,mCAAmC;IACnC,GAAG,IAAI,IAAI;IAKX,sCAAsC;IACtC,MAAM,IAAI,IAAI;IAKd,sDAAsD;IACtD,MAAM,IAAI,IAAI;IAKd;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKjC;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKzB;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;CA2BzB"}
1
+ {"version":3,"file":"RequestBuilder.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RequestBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAM;IACpB,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAc;gBAElB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB;IAKnD;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAK9C;;;OAGG;IACH,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAKzB;;;OAGG;IACH,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAM1B;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAS9D,6BAA6B;IAC7B,IAAI,IAAI,IAAI;IAKZ,4BAA4B;IAC5B,GAAG,IAAI,IAAI;IAKX,8BAA8B;IAC9B,KAAK,IAAI,IAAI;IAKb,+BAA+B;IAC/B,MAAM,IAAI,IAAI;IAKd,6BAA6B;IAC7B,IAAI,IAAI,IAAI;IAKZ,gCAAgC;IAChC,OAAO,IAAI,IAAI;IAKf,oCAAoC;IACpC,IAAI,IAAI,IAAI;IAKZ,0CAA0C;IAC1C,IAAI,IAAI,IAAI;IAKZ,mCAAmC;IACnC,GAAG,IAAI,IAAI;IAKX,sCAAsC;IACtC,MAAM,IAAI,IAAI;IAKd,sDAAsD;IACtD,MAAM,IAAI,IAAI;IAKd;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKjC;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKzB;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;CA6B3B"}
@@ -16,7 +16,7 @@ exports.RequestBuilder = void 0;
16
16
  */
17
17
  class RequestBuilder {
18
18
  _url;
19
- _method = "GET";
19
+ _method;
20
20
  _headers = {};
21
21
  _body;
22
22
  _responseType = "auto";
@@ -86,6 +86,11 @@ class RequestBuilder {
86
86
  this._method = "HEAD";
87
87
  return this;
88
88
  }
89
+ /** @en Set method to OPTIONS */
90
+ options() {
91
+ this._method = "OPTIONS";
92
+ return this;
93
+ }
89
94
  /** @en Set response type to JSON */
90
95
  json() {
91
96
  this._responseType = "json";
@@ -140,7 +145,7 @@ class RequestBuilder {
140
145
  getSignal: () => this._signal,
141
146
  };
142
147
  if (this._responseType === "stream") {
143
- return (await this._client.stream(req));
148
+ return this._client.stream(req);
144
149
  }
145
150
  switch (this._method) {
146
151
  case "POST":
@@ -151,8 +156,10 @@ class RequestBuilder {
151
156
  return this._client.patch(req, this._body, this._responseType);
152
157
  case "DELETE":
153
158
  return this._client.delete(req, this._responseType);
159
+ case "OPTIONS":
160
+ return this._client.options(req, this._body, this._responseType);
154
161
  case "HEAD":
155
- return (await this._client.head(req));
162
+ return this._client.head(req);
156
163
  default:
157
164
  return this._client.get(req, this._responseType);
158
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RequestBuilder.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RequestBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequestBuilder.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RequestBuilder.ts"],"names":[],"mappings":"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"}