hyperttp 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/Hyperttp/Core/CacheManager.d.ts +63 -40
  2. package/dist/Hyperttp/Core/CacheManager.d.ts.map +1 -1
  3. package/dist/Hyperttp/Core/CacheManager.js +64 -62
  4. package/dist/Hyperttp/Core/CacheManager.js.map +1 -1
  5. package/dist/Hyperttp/Core/HttpClientImproved.d.ts +55 -33
  6. package/dist/Hyperttp/Core/HttpClientImproved.d.ts.map +1 -1
  7. package/dist/Hyperttp/Core/HttpClientImproved.js +307 -211
  8. package/dist/Hyperttp/Core/HttpClientImproved.js.map +1 -1
  9. package/dist/Hyperttp/Core/InterceptorManager.d.ts +11 -11
  10. package/dist/Hyperttp/Core/InterceptorManager.d.ts.map +1 -1
  11. package/dist/Hyperttp/Core/InterceptorManager.js +10 -10
  12. package/dist/Hyperttp/Core/InterceptorManager.js.map +1 -1
  13. package/dist/Hyperttp/Core/MetricsManager.d.ts +33 -42
  14. package/dist/Hyperttp/Core/MetricsManager.d.ts.map +1 -1
  15. package/dist/Hyperttp/Core/MetricsManager.js +147 -58
  16. package/dist/Hyperttp/Core/MetricsManager.js.map +1 -1
  17. package/dist/Hyperttp/Core/QueueManager.d.ts +6 -4
  18. package/dist/Hyperttp/Core/QueueManager.d.ts.map +1 -1
  19. package/dist/Hyperttp/Core/QueueManager.js +36 -34
  20. package/dist/Hyperttp/Core/QueueManager.js.map +1 -1
  21. package/dist/Hyperttp/Core/RateLimiter.d.ts +29 -36
  22. package/dist/Hyperttp/Core/RateLimiter.d.ts.map +1 -1
  23. package/dist/Hyperttp/Core/RateLimiter.js +96 -36
  24. package/dist/Hyperttp/Core/RateLimiter.js.map +1 -1
  25. package/dist/Hyperttp/Core/RequestBuilder.d.ts +3 -1
  26. package/dist/Hyperttp/Core/RequestBuilder.d.ts.map +1 -1
  27. package/dist/Hyperttp/Core/RequestBuilder.js +10 -3
  28. package/dist/Hyperttp/Core/RequestBuilder.js.map +1 -1
  29. package/dist/Hyperttp/Core/RequestExecutor.d.ts +7 -34
  30. package/dist/Hyperttp/Core/RequestExecutor.d.ts.map +1 -1
  31. package/dist/Hyperttp/Core/RequestExecutor.js +120 -114
  32. package/dist/Hyperttp/Core/RequestExecutor.js.map +1 -1
  33. package/dist/Hyperttp/Core/ResponseConverter.d.ts +23 -0
  34. package/dist/Hyperttp/Core/ResponseConverter.d.ts.map +1 -0
  35. package/dist/Hyperttp/Core/ResponseConverter.js +368 -0
  36. package/dist/Hyperttp/Core/ResponseConverter.js.map +1 -0
  37. package/dist/Hyperttp/Core/index.d.ts +7 -10
  38. package/dist/Hyperttp/Core/index.d.ts.map +1 -1
  39. package/dist/Hyperttp/Core/index.js +26 -15
  40. package/dist/Hyperttp/Core/index.js.map +1 -1
  41. package/dist/Hyperttp/UrlExtractor.d.ts +1 -1
  42. package/dist/Hyperttp/UrlExtractor.d.ts.map +1 -1
  43. package/dist/Hyperttp/index.d.ts +1 -3
  44. package/dist/Hyperttp/index.d.ts.map +1 -1
  45. package/dist/Hyperttp/index.js +7 -8
  46. package/dist/Hyperttp/index.js.map +1 -1
  47. package/dist/Types/cache.d.ts +10 -0
  48. package/dist/Types/cache.d.ts.map +1 -0
  49. package/dist/Types/cache.js +3 -0
  50. package/dist/Types/cache.js.map +1 -0
  51. package/dist/Types/errors.d.ts +15 -0
  52. package/dist/Types/errors.d.ts.map +1 -0
  53. package/dist/Types/errors.js +34 -0
  54. package/dist/Types/errors.js.map +1 -0
  55. package/dist/Types/http-client.d.ts +39 -0
  56. package/dist/Types/http-client.d.ts.map +1 -0
  57. package/dist/Types/http-client.js +3 -0
  58. package/dist/Types/http-client.js.map +1 -0
  59. package/dist/Types/http.d.ts +5 -0
  60. package/dist/Types/http.d.ts.map +1 -0
  61. package/dist/Types/http.js +3 -0
  62. package/dist/Types/http.js.map +1 -0
  63. package/dist/Types/index.d.ts +12 -127
  64. package/dist/Types/index.d.ts.map +1 -1
  65. package/dist/Types/index.js +12 -39
  66. package/dist/Types/index.js.map +1 -1
  67. package/dist/Types/interceptors.d.ts +13 -0
  68. package/dist/Types/interceptors.d.ts.map +1 -0
  69. package/dist/Types/interceptors.js +3 -0
  70. package/dist/Types/interceptors.js.map +1 -0
  71. package/dist/Types/metrics.d.ts +67 -0
  72. package/dist/Types/metrics.d.ts.map +1 -0
  73. package/dist/Types/metrics.js +3 -0
  74. package/dist/Types/metrics.js.map +1 -0
  75. package/dist/Types/options.d.ts +233 -0
  76. package/dist/Types/options.d.ts.map +1 -0
  77. package/dist/Types/options.js +3 -0
  78. package/dist/Types/options.js.map +1 -0
  79. package/dist/Types/queue.d.ts +8 -0
  80. package/dist/Types/queue.d.ts.map +1 -0
  81. package/dist/Types/queue.js +3 -0
  82. package/dist/Types/queue.js.map +1 -0
  83. package/dist/Types/request.d.ts +148 -9
  84. package/dist/Types/request.d.ts.map +1 -1
  85. package/dist/Types/response.d.ts +28 -0
  86. package/dist/Types/response.d.ts.map +1 -0
  87. package/dist/Types/response.js +3 -0
  88. package/dist/Types/response.js.map +1 -0
  89. package/dist/Types/stream.d.ts +39 -0
  90. package/dist/Types/stream.d.ts.map +1 -0
  91. package/dist/Types/stream.js +3 -0
  92. package/dist/Types/stream.js.map +1 -0
  93. package/dist/Types/url-extractor.d.ts +10 -0
  94. package/dist/Types/url-extractor.d.ts.map +1 -0
  95. package/dist/Types/url-extractor.js +3 -0
  96. package/dist/Types/url-extractor.js.map +1 -0
  97. package/dist/index.d.ts +1 -2
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +7 -3
  100. package/dist/index.js.map +1 -1
  101. package/package.json +7 -5
  102. package/dist/Hyperttp/Core/ResponseTransformer.d.ts +0 -35
  103. package/dist/Hyperttp/Core/ResponseTransformer.d.ts.map +0 -1
  104. package/dist/Hyperttp/Core/ResponseTransformer.js +0 -171
  105. package/dist/Hyperttp/Core/ResponseTransformer.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ export type QueueExecutor = () => Promise<unknown>;
2
+ export type QueueNode = {
3
+ executor: QueueExecutor;
4
+ resolve: (value: unknown) => void;
5
+ reject: (reason?: unknown) => void;
6
+ next: QueueNode | null;
7
+ };
8
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/Types/queue.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;CACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/Types/queue.ts"],"names":[],"mappings":""}
@@ -1,50 +1,189 @@
1
1
  /**
2
- * Represents HTTP request headers
2
+ * @ru Представляет HTTP заголовки запроса
3
+ * @en Represents HTTP request headers
3
4
  */
4
5
  export type RequestHeaders = Record<string, string>;
5
6
  /**
6
- * Represents URL query parameters
7
+ * @ru Представляет параметры URL query
8
+ * @en Represents URL query parameters
7
9
  */
8
10
  export type RequestQuery = Record<string, string | string[] | number | boolean | undefined | null>;
9
11
  /**
10
- * Исправлено: Body теперь может быть любым объектом, строкой или Buffer.
12
+ * @ru Данные тела запроса
13
+ * @en Request body data
11
14
  */
12
15
  export type RequestBodyData = any | null | undefined;
13
16
  /**
14
- * Конфигурация для создания запроса
17
+ * @ru Конфигурация для создания запроса
18
+ * @en Configuration for request creation
15
19
  */
16
20
  export type RequestConfig = {
21
+ /**
22
+ * @ru Схема протокола (http/https)
23
+ * @en Protocol scheme (http/https)
24
+ */
17
25
  scheme: string;
26
+ /**
27
+ * @ru Хост сервера
28
+ * @en Server host
29
+ */
18
30
  host: string;
31
+ /**
32
+ * @ru Порт сервера
33
+ * @en Server port
34
+ */
19
35
  port?: number;
36
+ /**
37
+ * @ru Путь ресурса
38
+ * @en Resource path
39
+ */
20
40
  path?: string;
41
+ /**
42
+ * @ru Заголовки запроса
43
+ * @en Request headers
44
+ */
21
45
  headers?: RequestHeaders;
46
+ /**
47
+ * @ru Параметры query строки
48
+ * @en Query string parameters
49
+ */
22
50
  query?: RequestQuery;
51
+ /**
52
+ * @ru Данные тела запроса
53
+ * @en Request body data
54
+ */
23
55
  bodyData?: RequestBodyData;
24
56
  };
25
- export type Method = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD";
26
57
  /**
27
- * Основной интерфейс запроса.
28
- * Сеттеры помечены как необязательные (?), чтобы простые объекты-заглушки
29
- * в HttpClient соответствовали этому интерфейсу.
58
+ * @ru Основной интерфейс запроса
59
+ * @en Main request interface
30
60
  */
31
61
  export interface RequestInterface {
62
+ /**
63
+ * @ru Возвращает полный URL запроса
64
+ * @en Returns full request URL
65
+ * @returns constructed URL string
66
+ */
32
67
  getURL(): string;
68
+ /**
69
+ * @ru Возвращает заголовки запроса
70
+ * @en Returns request headers
71
+ * @returns headers object
72
+ */
33
73
  getHeaders(): RequestHeaders;
74
+ /**
75
+ * @ru Возвращает данные тела запроса
76
+ * @en Returns request body data
77
+ * @returns body data
78
+ */
34
79
  getBodyData(): RequestBodyData;
80
+ /**
81
+ * @ru Устанавливает путь ресурса
82
+ * @en Sets resource path
83
+ * @param path - new path
84
+ * @returns this for chaining
85
+ */
35
86
  setPath?(path: string): RequestInterface;
87
+ /**
88
+ * @ru Устанавливает хост сервера
89
+ * @en Sets server host
90
+ * @param host - server host
91
+ * @returns this for chaining
92
+ */
36
93
  setHost?(host: string): RequestInterface;
94
+ /**
95
+ * @ru Устанавливает заголовки запроса
96
+ * @en Sets request headers
97
+ * @param headers - headers object
98
+ * @returns this for chaining
99
+ */
37
100
  setHeaders?(headers: RequestHeaders): RequestInterface;
101
+ /**
102
+ * @ru Добавляет заголовки к существующим
103
+ * @en Adds headers to existing ones
104
+ * @param headers - headers to add
105
+ * @returns this for chaining
106
+ */
38
107
  addHeaders?(headers: RequestHeaders): RequestInterface;
108
+ /**
109
+ * @ru Возвращает query параметры
110
+ * @en Returns query parameters
111
+ * @returns query object
112
+ */
39
113
  getQuery?(): RequestQuery;
114
+ /**
115
+ * @ru Устанавливает query параметры
116
+ * @en Sets query parameters
117
+ * @param query - query object
118
+ * @returns this for chaining
119
+ */
40
120
  setQuery?(query: RequestQuery): RequestInterface;
121
+ /**
122
+ * @ru Добавляет query параметры
123
+ * @en Adds query parameters
124
+ * @param query - query to add
125
+ * @returns this for chaining
126
+ */
41
127
  addQuery?(query: RequestQuery): RequestInterface;
128
+ /**
129
+ * @ru Возвращает query строку
130
+ * @en Returns query string
131
+ * @returns encoded query string
132
+ */
42
133
  getQueryAsString?(): string;
134
+ /**
135
+ * @ru Возвращает тело запроса как строку
136
+ * @en Returns body data as string
137
+ * @returns body string representation
138
+ */
43
139
  getBodyDataString?(): string;
140
+ /**
141
+ * @ru Устанавливает данные тела запроса
142
+ * @en Sets request body data
143
+ * @param bodyData - body data
144
+ * @returns this for chaining
145
+ */
44
146
  setBodyData?(bodyData: RequestBodyData): RequestInterface;
147
+ /**
148
+ * @ru Добавляет данные к телу запроса
149
+ * @en Adds data to request body
150
+ * @param bodyData - data to add
151
+ * @returns this for chaining
152
+ */
45
153
  addBodyData?(bodyData: RequestBodyData): RequestInterface;
154
+ /**
155
+ * @ru Устанавливает AbortSignal для отмены
156
+ * @en Sets AbortSignal for cancellation
157
+ * @param signal - AbortSignal instance
158
+ * @returns this for chaining
159
+ */
46
160
  setSignal?(signal: AbortSignal): RequestInterface;
161
+ /**
162
+ * @ru Возвращает AbortSignal
163
+ * @en Returns AbortSignal
164
+ * @returns AbortSignal or undefined
165
+ */
47
166
  getSignal?(): AbortSignal | undefined;
48
167
  }
49
- export type ResponseType = "json" | "text" | "buffer" | "xml" | "stream" | "auto";
168
+ /**
169
+ * @ru Метаданные для конвертации ответа
170
+ * @en Response conversion metadata
171
+ */
172
+ export interface ConversionMeta {
173
+ /**
174
+ * @ru Content-Type заголовок
175
+ * @en Content-Type header
176
+ */
177
+ contentType?: string;
178
+ /**
179
+ * @ru Content-Encoding заголовок
180
+ * @en Content-Encoding header
181
+ */
182
+ contentEncoding?: string;
183
+ /**
184
+ * @ru URL запроса
185
+ * @en Request URL
186
+ */
187
+ url?: string;
188
+ }
50
189
  //# sourceMappingURL=request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/Types/request.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAC/B,MAAM,EACN,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,GAAG,SAAS,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1E;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,IAAI,MAAM,CAAC;IACjB,UAAU,IAAI,cAAc,CAAC;IAC7B,WAAW,IAAI,eAAe,CAAC;IAE/B,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACzC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACzC,UAAU,CAAC,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,CAAC;IACvD,UAAU,CAAC,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,CAAC;IACvD,QAAQ,CAAC,IAAI,YAAY,CAAC;IAC1B,QAAQ,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,gBAAgB,CAAC;IACjD,QAAQ,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,gBAAgB,CAAC;IACjD,gBAAgB,CAAC,IAAI,MAAM,CAAC;IAC5B,iBAAiB,CAAC,IAAI,MAAM,CAAC;IAC7B,WAAW,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB,CAAC;IAC1D,WAAW,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB,CAAC;IAC1D,SAAS,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,CAAC;IAClD,SAAS,CAAC,IAAI,WAAW,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,MAAM,GACN,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,MAAM,CAAC"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/Types/request.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAC/B,MAAM,EACN,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CACxD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,GAAG,SAAS,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,IAAI,MAAM,CAAC;IAEjB;;;;OAIG;IACH,UAAU,IAAI,cAAc,CAAC;IAE7B;;;;OAIG;IACH,WAAW,IAAI,eAAe,CAAC;IAE/B;;;;;OAKG;IACH,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAEzC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAEzC;;;;;OAKG;IACH,UAAU,CAAC,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAEvD;;;;;OAKG;IACH,UAAU,CAAC,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAEvD;;;;OAIG;IACH,QAAQ,CAAC,IAAI,YAAY,CAAC;IAE1B;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,gBAAgB,CAAC;IAEjD;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,gBAAgB,CAAC;IAEjD;;;;OAIG;IACH,gBAAgB,CAAC,IAAI,MAAM,CAAC;IAE5B;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,MAAM,CAAC;IAE7B;;;;;OAKG;IACH,WAAW,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB,CAAC;IAE1D;;;;;OAKG;IACH,WAAW,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,gBAAgB,CAAC;IAE1D;;;;;OAKG;IACH,SAAS,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,CAAC;IAElD;;;;OAIG;IACH,SAAS,CAAC,IAAI,WAAW,GAAG,SAAS,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,28 @@
1
+ export interface ResponseConverterOptions {
2
+ /**
3
+ * @ru Максимальный размер тела ответа (байты), 0 = без ограничений
4
+ * @en Maximum response body size (bytes), 0 = unlimited
5
+ */
6
+ maxBodySize?: number;
7
+ /**
8
+ * @ru Парсить HTML в DOM структуру
9
+ * @en Parse HTML into DOM structure
10
+ */
11
+ parseHTML?: boolean;
12
+ /**
13
+ * @ru Режим парсинга HTML
14
+ * @en HTML parsing mode
15
+ */
16
+ htmlMode?: "simple" | "full";
17
+ /**
18
+ * @ru Кодировка текста (ascii|utf8|utf-8|utf16le|ucs2|base64|latin1|binary|hex)
19
+ * @en Text encoding (ascii|utf8|utf-8|utf16le|ucs2|base64|latin1|binary|hex)
20
+ */
21
+ charset?: BufferEncoding;
22
+ }
23
+ /**
24
+ * @ru Парсированный ответ сервера
25
+ * @en Parsed server response
26
+ */
27
+ export type ParsedResponse = string | Buffer | Record<string, any> | any[] | null;
28
+ //# sourceMappingURL=response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/Types/response.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAE7B;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnB,GAAG,EAAE,GACL,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/Types/response.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { Readable } from "node:stream";
2
+ export interface StreamResponse<TBody = Readable> {
3
+ /**
4
+ * @ru HTTP статус код ответа
5
+ * @en HTTP status code
6
+ */
7
+ status: number;
8
+ /**
9
+ * @ru Заголовки ответа (сырые)
10
+ * @en Response headers (raw)
11
+ */
12
+ headers: Record<string, string | string[] | undefined>;
13
+ /**
14
+ * @ru Потоковое тело (низкоуровневые чанки)
15
+ * @en Streamed body (low-level chunks)
16
+ */
17
+ body: TBody;
18
+ /**
19
+ * @ru Финальный URL (после редиректов)
20
+ * @en Final resolved URL (after redirects)
21
+ */
22
+ url: string;
23
+ /**
24
+ * @ru Сигнал для отслеживания abort (pipeline control)
25
+ * @en Optional signal for abort tracking (useful for pipeline control)
26
+ */
27
+ signal?: AbortSignal;
28
+ /**
29
+ * @ru Content-Length если известен (zero-copy оптимизации)
30
+ * @en Content-Length if known (zero-copy optimizations)
31
+ */
32
+ contentLength?: number;
33
+ /**
34
+ * @ru Hint кодировки (gzip/br/etc)
35
+ * @en Encoding hint (gzip/br/etc)
36
+ */
37
+ encoding?: string;
38
+ }
39
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/Types/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,WAAW,cAAc,CAAC,KAAK,GAAG,QAAQ;IAC9C;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAEvD;;;OAGG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/Types/stream.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface UrlPattern<T extends string = string> {
2
+ entity: string;
3
+ regex: RegExp;
4
+ groupNames: T[];
5
+ }
6
+ export interface UrlExtractorInterface {
7
+ registerPlatform(platform: string, patterns: UrlPattern[]): void;
8
+ extractId<T extends string | number>(url: string, entity: string, platform: string): Record<string, T>;
9
+ }
10
+ //# sourceMappingURL=url-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-extractor.d.ts","sourceRoot":"","sources":["../../src/Types/url-extractor.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,CAAC,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEjE,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CACtB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=url-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-extractor.js","sourceRoot":"","sources":["../../src/Types/url-extractor.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export { HttpClientImproved, RequestBuilder, QueueManager, CacheManager, RateLimiter, Request, PreparedRequest, UrlExtractor, } from "./Hyperttp/index.js";
1
+ export { CacheManager, HttpClientImproved, InterceptorManager, MetricsManager, QueueManager, RateLimiter, RequestBuilder, RequestExecutor, ResponseConverter, Request, PreparedRequest, UrlExtractor, } from "./Hyperttp/index.js";
2
2
  export type * from "./Types/index.js";
3
- export type * from "./Types/request.js";
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,OAAO,EACP,eAAe,EACf,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UrlExtractor = exports.PreparedRequest = exports.Request = exports.RateLimiter = exports.CacheManager = exports.QueueManager = exports.RequestBuilder = exports.HttpClientImproved = void 0;
3
+ exports.UrlExtractor = exports.PreparedRequest = exports.Request = exports.ResponseConverter = exports.RequestExecutor = exports.RequestBuilder = exports.RateLimiter = exports.QueueManager = exports.MetricsManager = exports.InterceptorManager = exports.HttpClientImproved = exports.CacheManager = void 0;
4
4
  var index_js_1 = require("./Hyperttp/index.js");
5
+ Object.defineProperty(exports, "CacheManager", { enumerable: true, get: function () { return index_js_1.CacheManager; } });
5
6
  Object.defineProperty(exports, "HttpClientImproved", { enumerable: true, get: function () { return index_js_1.HttpClientImproved; } });
6
- Object.defineProperty(exports, "RequestBuilder", { enumerable: true, get: function () { return index_js_1.RequestBuilder; } });
7
+ Object.defineProperty(exports, "InterceptorManager", { enumerable: true, get: function () { return index_js_1.InterceptorManager; } });
8
+ Object.defineProperty(exports, "MetricsManager", { enumerable: true, get: function () { return index_js_1.MetricsManager; } });
7
9
  Object.defineProperty(exports, "QueueManager", { enumerable: true, get: function () { return index_js_1.QueueManager; } });
8
- Object.defineProperty(exports, "CacheManager", { enumerable: true, get: function () { return index_js_1.CacheManager; } });
9
10
  Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return index_js_1.RateLimiter; } });
11
+ Object.defineProperty(exports, "RequestBuilder", { enumerable: true, get: function () { return index_js_1.RequestBuilder; } });
12
+ Object.defineProperty(exports, "RequestExecutor", { enumerable: true, get: function () { return index_js_1.RequestExecutor; } });
13
+ Object.defineProperty(exports, "ResponseConverter", { enumerable: true, get: function () { return index_js_1.ResponseConverter; } });
10
14
  Object.defineProperty(exports, "Request", { enumerable: true, get: function () { return index_js_1.Request; } });
11
15
  Object.defineProperty(exports, "PreparedRequest", { enumerable: true, get: function () { return index_js_1.PreparedRequest; } });
12
16
  Object.defineProperty(exports, "UrlExtractor", { enumerable: true, get: function () { return index_js_1.UrlExtractor; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gDAS6B;AAR3B,8GAAA,kBAAkB,OAAA;AAClB,0GAAA,cAAc,OAAA;AACd,wGAAA,YAAY,OAAA;AACZ,wGAAA,YAAY,OAAA;AACZ,uGAAA,WAAW,OAAA;AACX,mGAAA,OAAO,OAAA;AACP,2GAAA,eAAe,OAAA;AACf,wGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gDAa6B;AAZ3B,wGAAA,YAAY,OAAA;AACZ,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,0GAAA,cAAc,OAAA;AACd,wGAAA,YAAY,OAAA;AACZ,uGAAA,WAAW,OAAA;AACX,0GAAA,cAAc,OAAA;AACd,2GAAA,eAAe,OAAA;AACf,6GAAA,iBAAiB,OAAA;AACjB,mGAAA,OAAO,OAAA;AACP,2GAAA,eAAe,OAAA;AACf,wGAAA,YAAY,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hyperttp",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "A high-performance, universal HTTP client for Node.js with caching, retries, queueing, rate limiting, cookies and logging.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -23,10 +23,12 @@
23
23
  "logger"
24
24
  ],
25
25
  "dependencies": {
26
- "undici": "^8.2.0",
26
+ "cheerio": "^1.2.0",
27
+ "fast-xml-builder": "^1.2.0",
28
+ "fast-xml-parser": "^5.8.0",
29
+ "http-cookie-agent": "^8.0.0",
30
+ "lru-cache": "^11.3.6",
27
31
  "tough-cookie": "^6.0.1",
28
- "http-cookie-agent": "^7.0.3",
29
- "fast-xml-parser": "^5.7.3",
30
- "lru-cache": "^11.3.6"
32
+ "undici": "^8.2.0"
31
33
  }
32
34
  }
@@ -1,35 +0,0 @@
1
- import { ResponseType, LogLevel } from "../../Types";
2
- /**
3
- * @class ResponseTransformer
4
- * @en Handles stream reading, decompression (Gzip/Brotli), and parsing (JSON/XML/Text).
5
- * @ru Обрабатывает чтение стримов, декомпрессию (Gzip/Brotli) и парсинг (JSON/XML/Text).
6
- */
7
- export declare class ResponseTransformer {
8
- private maxResponseBytes;
9
- private logger?;
10
- private xmlParser;
11
- constructor(maxResponseBytes?: number, logger?: ((level: LogLevel, message: string, meta?: any) => void) | undefined);
12
- /**
13
- * @en Reads the response stream into a Buffer while respecting the byte limit.
14
- * @ru Читает поток ответа в Buffer с соблюдением лимита байтов.
15
- * @throws {HttpClientError} If response size exceeds maxResponseBytes.
16
- */
17
- readBodyWithLimit(body: any): Promise<Buffer>;
18
- /**
19
- * @en Decompresses the buffer based on the Content-Encoding header.
20
- * @ru Декомпрессия данных (gzip, deflate, br) на основе заголовка Content-Encoding.
21
- */
22
- decompress(buf: Buffer, enc?: string, charset?: BufferEncoding): Promise<string>;
23
- /**
24
- * @en Parses the decompressed text content into the requested format.
25
- * @ru Основной метод парсинга ответа в указанный формат.
26
- * @param res - Object containing status, headers and raw body buffer.
27
- * @param responseType - Targeted format (json, xml, text, buffer, auto).
28
- */
29
- parseResponse(res: {
30
- status: number;
31
- headers: Record<string, any>;
32
- body: Buffer;
33
- }, responseType?: ResponseType): Promise<any>;
34
- }
35
- //# sourceMappingURL=ResponseTransformer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResponseTransformer.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/ResponseTransformer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM,CAAC;IAJjB,OAAO,CAAC,SAAS,CAAY;gBAGnB,gBAAgB,GAAE,MAAoB,EACtC,MAAM,CAAC,GAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,aAAA;IAQzE;;;;OAIG;IACG,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBnD;;;OAGG;IACG,UAAU,CACd,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,GAAE,cAAwB,GAChC,OAAO,CAAC,MAAM,CAAC;IAoBlB;;;;;OAKG;IACG,aAAa,CACjB,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EACnE,YAAY,GAAE,YAAqB,GAClC,OAAO,CAAC,GAAG,CAAC;CAkEhB"}
@@ -1,171 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.ResponseTransformer = void 0;
40
- const zlib = __importStar(require("zlib"));
41
- const util_1 = require("util");
42
- const fast_xml_parser_1 = require("fast-xml-parser");
43
- const fast_xml_builder_1 = __importDefault(require("fast-xml-builder"));
44
- const Types_1 = require("../../Types");
45
- const gunzip = (0, util_1.promisify)(zlib.gunzip);
46
- const inflate = (0, util_1.promisify)(zlib.inflate);
47
- const brotliDecompress = (0, util_1.promisify)(zlib.brotliDecompress);
48
- /**
49
- * @class ResponseTransformer
50
- * @en Handles stream reading, decompression (Gzip/Brotli), and parsing (JSON/XML/Text).
51
- * @ru Обрабатывает чтение стримов, декомпрессию (Gzip/Brotli) и парсинг (JSON/XML/Text).
52
- */
53
- class ResponseTransformer {
54
- maxResponseBytes;
55
- logger;
56
- xmlParser;
57
- constructor(maxResponseBytes = 1024 * 1024, logger) {
58
- this.maxResponseBytes = maxResponseBytes;
59
- this.logger = logger;
60
- this.xmlParser = new fast_xml_parser_1.XMLParser({
61
- ignoreAttributes: false,
62
- allowBooleanAttributes: true,
63
- });
64
- }
65
- /**
66
- * @en Reads the response stream into a Buffer while respecting the byte limit.
67
- * @ru Читает поток ответа в Buffer с соблюдением лимита байтов.
68
- * @throws {HttpClientError} If response size exceeds maxResponseBytes.
69
- */
70
- async readBodyWithLimit(body) {
71
- const chunks = [];
72
- let receivedBytes = 0;
73
- for await (const chunk of body) {
74
- receivedBytes += chunk.length;
75
- if (this.maxResponseBytes > 0 && receivedBytes > this.maxResponseBytes) {
76
- if (typeof body.destroy === "function")
77
- body.destroy();
78
- throw new Types_1.HttpClientError(`Response size limit exceeded (${this.maxResponseBytes} bytes)`, "HTTP_ERROR", 0);
79
- }
80
- chunks.push(Buffer.from(chunk));
81
- }
82
- return Buffer.concat(chunks);
83
- }
84
- /**
85
- * @en Decompresses the buffer based on the Content-Encoding header.
86
- * @ru Декомпрессия данных (gzip, deflate, br) на основе заголовка Content-Encoding.
87
- */
88
- async decompress(buf, enc, charset = "utf-8") {
89
- if (!enc || buf.length === 0)
90
- return buf.toString(charset);
91
- try {
92
- switch (enc.toLowerCase()) {
93
- case "gzip":
94
- return (await gunzip(buf)).toString(charset);
95
- case "deflate":
96
- return (await inflate(buf)).toString(charset);
97
- case "br":
98
- return (await brotliDecompress(buf)).toString(charset);
99
- default:
100
- return buf.toString(charset);
101
- }
102
- }
103
- catch (error) {
104
- this.logger?.("error", `Decompression failed for encoding ${enc}`, error);
105
- return buf.toString(charset);
106
- }
107
- }
108
- /**
109
- * @en Parses the decompressed text content into the requested format.
110
- * @ru Основной метод парсинга ответа в указанный формат.
111
- * @param res - Object containing status, headers and raw body buffer.
112
- * @param responseType - Targeted format (json, xml, text, buffer, auto).
113
- */
114
- async parseResponse(res, responseType = "auto") {
115
- try {
116
- const text = await this.decompress(res.body, res.headers["content-encoding"]);
117
- const trimmed = text.trim();
118
- switch (responseType) {
119
- case "json": {
120
- if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
121
- return JSON.parse(trimmed);
122
- }
123
- if (trimmed.startsWith("<")) {
124
- return this.xmlParser.parse(trimmed);
125
- }
126
- return { data: trimmed };
127
- }
128
- case "xml": {
129
- if (trimmed.startsWith("<"))
130
- return trimmed;
131
- try {
132
- const obj = JSON.parse(trimmed);
133
- const builder = new fast_xml_builder_1.default({
134
- format: true,
135
- indentBy: " ",
136
- ignoreAttributes: false,
137
- });
138
- return builder.build(obj);
139
- }
140
- catch {
141
- return text;
142
- }
143
- }
144
- case "text":
145
- return text;
146
- case "buffer":
147
- return res.body;
148
- case "auto":
149
- default: {
150
- const contentType = (res.headers["content-type"] || "").toLowerCase();
151
- if (contentType.includes("json") ||
152
- trimmed.startsWith("{") ||
153
- trimmed.startsWith("[")) {
154
- try {
155
- return JSON.parse(trimmed);
156
- }
157
- catch {
158
- return text;
159
- }
160
- }
161
- return text;
162
- }
163
- }
164
- }
165
- catch (err) {
166
- throw new Types_1.HttpClientError(`Parsing failed: ${err?.message ?? String(err)}`, "PARSING_ERROR", res.status);
167
- }
168
- }
169
- }
170
- exports.ResponseTransformer = ResponseTransformer;
171
- //# sourceMappingURL=ResponseTransformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResponseTransformer.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/ResponseTransformer.ts"],"names":[],"mappings":"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"}