@hyperttp/core 1.0.0

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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/dist/Core/HyperCore.d.ts +59 -0
  4. package/dist/Core/HyperCore.d.ts.map +1 -0
  5. package/dist/Core/HyperCore.js +162 -0
  6. package/dist/Core/HyperCore.js.map +1 -0
  7. package/dist/Core/RequestExecutor.d.ts +56 -0
  8. package/dist/Core/RequestExecutor.d.ts.map +1 -0
  9. package/dist/Core/RequestExecutor.js +194 -0
  10. package/dist/Core/RequestExecutor.js.map +1 -0
  11. package/dist/Core/index.d.ts +4 -0
  12. package/dist/Core/index.d.ts.map +1 -0
  13. package/dist/Core/index.js +3 -0
  14. package/dist/Core/index.js.map +1 -0
  15. package/dist/index.d.ts +10 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +3 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/types/errors.d.ts +15 -0
  20. package/dist/types/errors.d.ts.map +1 -0
  21. package/dist/types/errors.js +28 -0
  22. package/dist/types/errors.js.map +1 -0
  23. package/dist/types/http.d.ts +5 -0
  24. package/dist/types/http.d.ts.map +1 -0
  25. package/dist/types/http.js +2 -0
  26. package/dist/types/http.js.map +1 -0
  27. package/dist/types/metrics.d.ts +63 -0
  28. package/dist/types/metrics.d.ts.map +1 -0
  29. package/dist/types/metrics.js +2 -0
  30. package/dist/types/metrics.js.map +1 -0
  31. package/dist/types/network.d.ts +60 -0
  32. package/dist/types/network.d.ts.map +1 -0
  33. package/dist/types/network.js +2 -0
  34. package/dist/types/network.js.map +1 -0
  35. package/dist/types/options.d.ts +41 -0
  36. package/dist/types/options.d.ts.map +1 -0
  37. package/dist/types/options.js +2 -0
  38. package/dist/types/options.js.map +1 -0
  39. package/dist/types/request.d.ts +189 -0
  40. package/dist/types/request.d.ts.map +1 -0
  41. package/dist/types/request.js +2 -0
  42. package/dist/types/request.js.map +1 -0
  43. package/dist/types/retry.d.ts +28 -0
  44. package/dist/types/retry.d.ts.map +1 -0
  45. package/dist/types/retry.js +2 -0
  46. package/dist/types/retry.js.map +1 -0
  47. package/dist/types/stream.d.ts +39 -0
  48. package/dist/types/stream.d.ts.map +1 -0
  49. package/dist/types/stream.js +2 -0
  50. package/dist/types/stream.js.map +1 -0
  51. package/package.json +30 -0
@@ -0,0 +1,189 @@
1
+ /**
2
+ * @ru Представляет HTTP заголовки запроса
3
+ * @en Represents HTTP request headers
4
+ */
5
+ export type RequestHeaders = Record<string, string>;
6
+ /**
7
+ * @ru Представляет параметры URL query
8
+ * @en Represents URL query parameters
9
+ */
10
+ export type RequestQuery = Record<string, string | string[] | number | boolean | undefined | null>;
11
+ /**
12
+ * @ru Данные тела запроса
13
+ * @en Request body data
14
+ */
15
+ export type RequestBodyData = any | null | undefined;
16
+ /**
17
+ * @ru Конфигурация для создания запроса
18
+ * @en Configuration for request creation
19
+ */
20
+ export type RequestConfig = {
21
+ /**
22
+ * @ru Схема протокола (http/https)
23
+ * @en Protocol scheme (http/https)
24
+ */
25
+ scheme: string;
26
+ /**
27
+ * @ru Хост сервера
28
+ * @en Server host
29
+ */
30
+ host: string;
31
+ /**
32
+ * @ru Порт сервера
33
+ * @en Server port
34
+ */
35
+ port?: number;
36
+ /**
37
+ * @ru Путь ресурса
38
+ * @en Resource path
39
+ */
40
+ path?: string;
41
+ /**
42
+ * @ru Заголовки запроса
43
+ * @en Request headers
44
+ */
45
+ headers?: RequestHeaders;
46
+ /**
47
+ * @ru Параметры query строки
48
+ * @en Query string parameters
49
+ */
50
+ query?: RequestQuery;
51
+ /**
52
+ * @ru Данные тела запроса
53
+ * @en Request body data
54
+ */
55
+ bodyData?: RequestBodyData;
56
+ };
57
+ /**
58
+ * @ru Основной интерфейс запроса
59
+ * @en Main request interface
60
+ */
61
+ export interface RequestInterface {
62
+ /**
63
+ * @ru Возвращает полный URL запроса
64
+ * @en Returns full request URL
65
+ * @returns constructed URL string
66
+ */
67
+ getURL(): string;
68
+ /**
69
+ * @ru Возвращает заголовки запроса
70
+ * @en Returns request headers
71
+ * @returns headers object
72
+ */
73
+ getHeaders(): RequestHeaders;
74
+ /**
75
+ * @ru Возвращает данные тела запроса
76
+ * @en Returns request body data
77
+ * @returns body data
78
+ */
79
+ getBodyData(): RequestBodyData;
80
+ /**
81
+ * @ru Устанавливает путь ресурса
82
+ * @en Sets resource path
83
+ * @param path - new path
84
+ * @returns this for chaining
85
+ */
86
+ setPath?(path: string): RequestInterface;
87
+ /**
88
+ * @ru Устанавливает хост сервера
89
+ * @en Sets server host
90
+ * @param host - server host
91
+ * @returns this for chaining
92
+ */
93
+ setHost?(host: string): RequestInterface;
94
+ /**
95
+ * @ru Устанавливает заголовки запроса
96
+ * @en Sets request headers
97
+ * @param headers - headers object
98
+ * @returns this for chaining
99
+ */
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
+ */
107
+ addHeaders?(headers: RequestHeaders): RequestInterface;
108
+ /**
109
+ * @ru Возвращает query параметры
110
+ * @en Returns query parameters
111
+ * @returns query object
112
+ */
113
+ getQuery?(): RequestQuery;
114
+ /**
115
+ * @ru Устанавливает query параметры
116
+ * @en Sets query parameters
117
+ * @param query - query object
118
+ * @returns this for chaining
119
+ */
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
+ */
127
+ addQuery?(query: RequestQuery): RequestInterface;
128
+ /**
129
+ * @ru Возвращает query строку
130
+ * @en Returns query string
131
+ * @returns encoded query string
132
+ */
133
+ getQueryAsString?(): string;
134
+ /**
135
+ * @ru Возвращает тело запроса как строку
136
+ * @en Returns body data as string
137
+ * @returns body string representation
138
+ */
139
+ getBodyDataString?(): string;
140
+ /**
141
+ * @ru Устанавливает данные тела запроса
142
+ * @en Sets request body data
143
+ * @param bodyData - body data
144
+ * @returns this for chaining
145
+ */
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
+ */
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
+ */
160
+ setSignal?(signal: AbortSignal): RequestInterface;
161
+ /**
162
+ * @ru Возвращает AbortSignal
163
+ * @en Returns AbortSignal
164
+ * @returns AbortSignal or undefined
165
+ */
166
+ getSignal?(): AbortSignal | undefined;
167
+ }
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
+ }
189
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/types/request.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ export interface RetryOptions {
2
+ /**
3
+ * @ru Максимальное количество повторных попыток
4
+ * @en Maximum number of retry attempts
5
+ */
6
+ maxRetries?: number;
7
+ /**
8
+ * @ru Базовая задержка между попытками (мс)
9
+ * @en Base delay between retries (ms)
10
+ */
11
+ baseDelay?: number;
12
+ /**
13
+ * @ru Максимальная задержка между попытками (мс)
14
+ * @en Maximum retry delay (ms)
15
+ */
16
+ maxDelay?: number;
17
+ /**
18
+ * @ru Коды HTTP, при которых выполняется retry
19
+ * @en HTTP status codes that trigger retry logic
20
+ */
21
+ retryStatusCodes?: readonly number[];
22
+ /**
23
+ * @ru Добавлять случайный jitter к задержке
24
+ * @en Add randomness (jitter) to retry delay
25
+ */
26
+ jitter?: boolean;
27
+ }
28
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/types/retry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAErC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/types/retry.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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/types/stream.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@hyperttp/core",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "description": "High-performance, extensible HTTP client for Node.js and Bun",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "keywords": [
13
+ "http",
14
+ "client",
15
+ "high-performance",
16
+ "undici",
17
+ "fetch",
18
+ "bun"
19
+ ],
20
+ "author": "dirold2",
21
+ "license": "MIT",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/IT-IF-OR/hyperttp-core.git"
25
+ },
26
+ "dependencies": {
27
+ "http-cookie-agent": "^8.0.0",
28
+ "undici": "^8.3.0"
29
+ }
30
+ }