@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.
- package/LICENSE +21 -0
- package/README.md +210 -0
- package/dist/Core/HyperCore.d.ts +59 -0
- package/dist/Core/HyperCore.d.ts.map +1 -0
- package/dist/Core/HyperCore.js +162 -0
- package/dist/Core/HyperCore.js.map +1 -0
- package/dist/Core/RequestExecutor.d.ts +56 -0
- package/dist/Core/RequestExecutor.d.ts.map +1 -0
- package/dist/Core/RequestExecutor.js +194 -0
- package/dist/Core/RequestExecutor.js.map +1 -0
- package/dist/Core/index.d.ts +4 -0
- package/dist/Core/index.d.ts.map +1 -0
- package/dist/Core/index.js +3 -0
- package/dist/Core/index.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/types/errors.d.ts +15 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +28 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/http.d.ts +5 -0
- package/dist/types/http.d.ts.map +1 -0
- package/dist/types/http.js +2 -0
- package/dist/types/http.js.map +1 -0
- package/dist/types/metrics.d.ts +63 -0
- package/dist/types/metrics.d.ts.map +1 -0
- package/dist/types/metrics.js +2 -0
- package/dist/types/metrics.js.map +1 -0
- package/dist/types/network.d.ts +60 -0
- package/dist/types/network.d.ts.map +1 -0
- package/dist/types/network.js +2 -0
- package/dist/types/network.js.map +1 -0
- package/dist/types/options.d.ts +41 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +2 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/request.d.ts +189 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/types/request.js +2 -0
- package/dist/types/request.js.map +1 -0
- package/dist/types/retry.d.ts +28 -0
- package/dist/types/retry.d.ts.map +1 -0
- package/dist/types/retry.js +2 -0
- package/dist/types/retry.js.map +1 -0
- package/dist/types/stream.d.ts +39 -0
- package/dist/types/stream.d.ts.map +1 -0
- package/dist/types/stream.js +2 -0
- package/dist/types/stream.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
+
}
|