@hyperttp/core 1.1.12 → 1.2.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 (95) hide show
  1. package/Core/HyperCore.d.ts +173 -8
  2. package/Core/HyperCore.d.ts.map +1 -1
  3. package/Core/HyperCore.js +329 -100
  4. package/Core/HyperCore.js.map +1 -1
  5. package/Core/index.d.ts +0 -1
  6. package/Core/index.d.ts.map +1 -1
  7. package/Core/index.js +0 -1
  8. package/Core/index.js.map +1 -1
  9. package/LICENSE +21 -0
  10. package/README.md +178 -0
  11. package/defaultConfig.d.ts +1 -1
  12. package/defaultConfig.d.ts.map +1 -1
  13. package/defaultConfig.js +0 -1
  14. package/defaultConfig.js.map +1 -1
  15. package/index.d.ts +1 -4
  16. package/index.d.ts.map +1 -1
  17. package/index.js +1 -1
  18. package/index.js.map +1 -1
  19. package/package.json +20 -6
  20. package/transports/node.d.ts +18 -7
  21. package/transports/node.d.ts.map +1 -1
  22. package/transports/node.js +255 -142
  23. package/transports/node.js.map +1 -1
  24. package/utils/errors.d.ts +49 -0
  25. package/utils/errors.d.ts.map +1 -0
  26. package/utils/errors.js +63 -0
  27. package/utils/errors.js.map +1 -0
  28. package/utils/merge.d.ts +8 -1
  29. package/utils/merge.d.ts.map +1 -1
  30. package/utils/merge.js +27 -13
  31. package/utils/merge.js.map +1 -1
  32. package/utils/response.d.ts +40 -0
  33. package/utils/response.d.ts.map +1 -0
  34. package/utils/response.js +79 -0
  35. package/utils/response.js.map +1 -0
  36. package/utils/retryUtils.d.ts +5 -0
  37. package/utils/retryUtils.d.ts.map +1 -0
  38. package/utils/retryUtils.js +35 -0
  39. package/utils/retryUtils.js.map +1 -0
  40. package/Core/RequestExecutor.d.ts +0 -64
  41. package/Core/RequestExecutor.d.ts.map +0 -1
  42. package/Core/RequestExecutor.js +0 -213
  43. package/Core/RequestExecutor.js.map +0 -1
  44. package/transports/bun.d.ts +0 -16
  45. package/transports/bun.d.ts.map +0 -1
  46. package/transports/bun.js +0 -181
  47. package/transports/bun.js.map +0 -1
  48. package/types/errors.d.ts +0 -20
  49. package/types/errors.d.ts.map +0 -1
  50. package/types/errors.js +0 -28
  51. package/types/errors.js.map +0 -1
  52. package/types/http.d.ts +0 -5
  53. package/types/http.d.ts.map +0 -1
  54. package/types/http.js +0 -2
  55. package/types/http.js.map +0 -1
  56. package/types/hyper.d.ts +0 -34
  57. package/types/hyper.d.ts.map +0 -1
  58. package/types/hyper.js +0 -2
  59. package/types/hyper.js.map +0 -1
  60. package/types/index.d.ts +0 -12
  61. package/types/index.d.ts.map +0 -1
  62. package/types/index.js +0 -12
  63. package/types/index.js.map +0 -1
  64. package/types/metrics.d.ts +0 -65
  65. package/types/metrics.d.ts.map +0 -1
  66. package/types/metrics.js +0 -2
  67. package/types/metrics.js.map +0 -1
  68. package/types/network.d.ts +0 -65
  69. package/types/network.d.ts.map +0 -1
  70. package/types/network.js +0 -2
  71. package/types/network.js.map +0 -1
  72. package/types/options.d.ts +0 -51
  73. package/types/options.d.ts.map +0 -1
  74. package/types/options.js +0 -2
  75. package/types/options.js.map +0 -1
  76. package/types/plugins.d.ts +0 -47
  77. package/types/plugins.d.ts.map +0 -1
  78. package/types/plugins.js +0 -2
  79. package/types/plugins.js.map +0 -1
  80. package/types/request.d.ts +0 -114
  81. package/types/request.d.ts.map +0 -1
  82. package/types/request.js +0 -2
  83. package/types/request.js.map +0 -1
  84. package/types/retry.d.ts +0 -28
  85. package/types/retry.d.ts.map +0 -1
  86. package/types/retry.js +0 -2
  87. package/types/retry.js.map +0 -1
  88. package/types/stream.d.ts +0 -39
  89. package/types/stream.d.ts.map +0 -1
  90. package/types/stream.js +0 -2
  91. package/types/stream.js.map +0 -1
  92. package/types/transport.d.ts +0 -25
  93. package/types/transport.d.ts.map +0 -1
  94. package/types/transport.js +0 -2
  95. package/types/transport.js.map +0 -1
@@ -1,160 +1,273 @@
1
- import { compose, Readable } from "node:stream";
2
- import zlib from "node:zlib";
3
- import { CookieAgent } from "http-cookie-agent/undici";
4
- import { RequestExecutor } from "../Core/RequestExecutor.js";
5
- export class NodeTransport {
6
- agent;
7
- executor;
8
- isClosed = false;
9
- constructor(config) {
10
- const concurrency = config.network?.maxConcurrent === 0
11
- ? Infinity
12
- : (config.network?.maxConcurrent ?? 500);
13
- const allowH2 = config.network?.allowHttp2 ?? true;
14
- const pipelining = config.network?.pipelining !== undefined
15
- ? config.network.pipelining === 0
16
- ? 256
17
- : config.network.pipelining
18
- : allowH2
19
- ? 100
20
- : 1;
21
- this.agent = new CookieAgent({
22
- connections: concurrency === Infinity ? null : concurrency,
23
- pipelining,
24
- keepAliveTimeout: config.network?.keepAliveTimeout ?? 30000,
25
- keepAliveMaxTimeout: config.network?.keepAliveTimeout ?? 30000,
26
- clientTtl: 60000,
27
- connect: { rejectUnauthorized: config.network?.rejectUnauthorized },
28
- allowH2,
29
- });
30
- const retryOptions = {
31
- maxRetries: config.retry?.maxRetries ?? 3,
32
- ...config.retry,
1
+ import http from "node:http";
2
+ import https from "node:https";
3
+ import { Readable } from "node:stream";
4
+ const REDIRECT_STATUS_CODES = new Set([301, 302, 303, 307, 308]);
5
+ const DEFAULT_RETRY_STATUS_CODES = [502, 503, 504];
6
+ export function isRedirect(status) {
7
+ return REDIRECT_STATUS_CODES.has(status);
8
+ }
9
+ export function combineSignal(signal, timeoutMs) {
10
+ if (timeoutMs <= 0) {
11
+ return {
12
+ signal,
13
+ cancelTimer: () => { },
14
+ isTimeoutAbort: () => false,
33
15
  };
34
- this.executor = new RequestExecutor(this.agent, {
35
- timeout: config.network?.timeout ?? 30000,
36
- maxRetries: retryOptions.maxRetries ?? 3,
37
- followRedirects: config.network?.followRedirects ?? true,
38
- maxRedirects: config.network?.maxRedirects ?? 5,
39
- retryOptions: retryOptions,
40
- verbose: config.verbose ?? false,
41
- logger: config.logger,
42
- });
43
16
  }
44
- async execute(req) {
45
- const rawResponse = await this.executor.execute(req.method, req.url, req.headers, req.body, req.signal);
46
- const normalizedHeaders = {};
47
- const rawHeaders = rawResponse.headers;
48
- const keys = Object.keys(rawHeaders);
49
- let contentEncoding = undefined;
50
- for (let i = 0; i < keys.length; i++) {
51
- const key = keys[i];
52
- const value = rawHeaders[key];
53
- if (value === undefined)
54
- continue;
55
- const lowerKey = key.toLowerCase();
56
- if (lowerKey === "content-encoding") {
57
- contentEncoding = Array.isArray(value) ? value[0] : value;
58
- }
59
- if (Array.isArray(value)) {
60
- normalizedHeaders[key] =
61
- lowerKey === "set-cookie" ? value.join("\n") : value.join(", ");
62
- }
63
- else {
64
- normalizedHeaders[key] = value;
65
- }
17
+ const timeoutController = new AbortController();
18
+ const timer = setTimeout(() => timeoutController.abort(), timeoutMs);
19
+ let combinedSignal;
20
+ if (signal) {
21
+ if (typeof AbortSignal.any === "function") {
22
+ combinedSignal = AbortSignal.any([signal, timeoutController.signal]);
66
23
  }
67
- const decompressedBody = this.wrapDecompress(rawResponse.body, contentEncoding);
68
- if (decompressedBody instanceof Readable) {
69
- Object.defineProperty(decompressedBody, "dump", {
70
- value: function () {
71
- return new Promise((resolve, reject) => {
72
- const cleanup = () => {
73
- this.removeListener("data", onData);
74
- this.removeListener("end", resolve);
75
- this.removeListener("error", reject);
76
- };
77
- const onData = () => { };
78
- this.on("data", onData);
79
- this.on("end", () => {
80
- cleanup();
81
- resolve();
82
- });
83
- this.on("error", (err) => {
84
- cleanup();
85
- reject(err);
86
- });
87
- this.resume();
88
- });
89
- },
90
- writable: true,
91
- configurable: true,
92
- enumerable: false,
93
- });
24
+ else {
25
+ const onAbort = () => timeoutController.abort();
26
+ signal.addEventListener("abort", onAbort, { once: true });
27
+ combinedSignal = timeoutController.signal;
94
28
  }
95
- return {
96
- status: rawResponse.status,
97
- headers: normalizedHeaders,
98
- body: decompressedBody,
99
- url: rawResponse.url,
100
- };
101
29
  }
102
- wrapDecompress(body, contentEncoding) {
103
- if (!(body instanceof Readable))
104
- return body;
105
- const encoding = contentEncoding?.toLowerCase().trim();
106
- if (!encoding || encoding === "none" || encoding === "identity") {
107
- return body;
108
- }
109
- let decompressor = null;
110
- if (encoding === "gzip") {
111
- decompressor = zlib.createGunzip({ flush: zlib.constants.Z_SYNC_FLUSH });
30
+ else {
31
+ combinedSignal = timeoutController.signal;
32
+ }
33
+ return {
34
+ signal: combinedSignal,
35
+ cancelTimer: () => clearTimeout(timer),
36
+ isTimeoutAbort: () => timeoutController.signal.aborted,
37
+ };
38
+ }
39
+ export function shouldRetry(status, retryOptions) {
40
+ const codes = retryOptions.retryStatusCodes;
41
+ if (codes && codes.length > 0) {
42
+ return codes.includes(status);
43
+ }
44
+ return DEFAULT_RETRY_STATUS_CODES.includes(status);
45
+ }
46
+ export function sleep(ms) {
47
+ return new Promise((resolve) => setTimeout(resolve, ms));
48
+ }
49
+ export function calcDelay(attempt, retryOptions) {
50
+ const { baseDelay = 1000, maxDelay = 10000, jitter = true } = retryOptions;
51
+ const base = Math.min(baseDelay * 2 ** attempt, maxDelay);
52
+ return jitter ? base * (0.75 + Math.random() * 0.5) : base;
53
+ }
54
+ /**
55
+ * @ru Реализация ответа для стандартного Node.js транспорта.
56
+ */
57
+ class NodeTransportResponse {
58
+ status;
59
+ headers;
60
+ url;
61
+ body;
62
+ baseUrl;
63
+ _rawBody;
64
+ _cachedText;
65
+ _cachedJson;
66
+ _cachedJsonReady = false;
67
+ constructor(status, headers, url, rawBody) {
68
+ this.status = status;
69
+ this.headers = headers;
70
+ this.url = url;
71
+ this._rawBody = rawBody;
72
+ this.baseUrl = url;
73
+ const stream = Readable.from([rawBody]);
74
+ Object.defineProperty(stream, "dump", {
75
+ value: () => Promise.resolve(),
76
+ writable: false,
77
+ enumerable: false,
78
+ configurable: true,
79
+ });
80
+ this.body = stream;
81
+ }
82
+ async text() {
83
+ if (this._cachedText === undefined) {
84
+ this._cachedText = this._rawBody.toString("utf-8");
112
85
  }
113
- else if (encoding === "deflate") {
114
- decompressor = zlib.createInflate();
86
+ return this._cachedText;
87
+ }
88
+ async json() {
89
+ if (this._cachedJsonReady) {
90
+ return this._cachedJson;
115
91
  }
116
- else if (encoding === "br") {
117
- decompressor = zlib.createBrotliDecompress();
92
+ const text = await this.text();
93
+ if (!text.trim()) {
94
+ this._cachedJson = null;
95
+ this._cachedJsonReady = true;
96
+ return null;
118
97
  }
119
- if (!decompressor)
120
- return body;
121
- return compose(body, decompressor);
98
+ this._cachedJson = JSON.parse(text);
99
+ this._cachedJsonReady = true;
100
+ return this._cachedJson;
122
101
  }
123
- async close() {
124
- if (this.isClosed)
125
- return;
126
- this.isClosed = true;
127
- try {
128
- const structuralAgent = this.agent;
129
- if (typeof structuralAgent.close === "function") {
130
- await structuralAgent.close();
102
+ }
103
+ /**
104
+ * @ru Высокопроизводительный транспорт на базе классических модулей http/https Node.js.
105
+ */
106
+ export class NodeTransport {
107
+ config;
108
+ httpAgent;
109
+ httpsAgent;
110
+ constructor(config) {
111
+ this.config = config;
112
+ const agentOptions = {
113
+ keepAlive: true,
114
+ keepAliveMsecs: config.network?.keepAliveTimeout ?? 30000,
115
+ maxSockets: config.network?.maxConcurrent ?? 500,
116
+ maxFreeSockets: Math.min(256, Math.floor((config.network?.maxConcurrent ?? 500) / 2)),
117
+ scheduling: "lifo",
118
+ };
119
+ this.httpAgent = new http.Agent(agentOptions);
120
+ this.httpsAgent = new https.Agent(agentOptions);
121
+ }
122
+ get timeout() {
123
+ return this.config.network?.timeout ?? 30000;
124
+ }
125
+ async execute(req) {
126
+ let currentUrl = req.url;
127
+ let currentMethod = req.method;
128
+ let currentHeaders = { ...req.headers };
129
+ let currentBody = req.body;
130
+ let redirects = 0;
131
+ let attempt = 0;
132
+ const maxRedirects = this.config.network?.maxRedirects ?? 5;
133
+ const maxRetries = this.config.retry?.maxRetries ?? 3;
134
+ const isStreamBody = currentBody instanceof Readable;
135
+ while (true) {
136
+ const { signal, cancelTimer, isTimeoutAbort } = combineSignal(req.signal, this.timeout);
137
+ try {
138
+ const fullUrl = new URL(currentUrl);
139
+ const result = await this.dispatchOnce(fullUrl, {
140
+ method: currentMethod,
141
+ headers: currentHeaders,
142
+ body: currentBody,
143
+ signal,
144
+ });
145
+ if ((this.config.network?.followRedirects ?? true) &&
146
+ isRedirect(result.status)) {
147
+ if (redirects >= maxRedirects) {
148
+ throw new Error("Too many redirects");
149
+ }
150
+ const location = result.headers["location"];
151
+ if (location && typeof location === "string") {
152
+ const nextUrl = new URL(location, fullUrl.toString()).toString();
153
+ let nextMethod = currentMethod;
154
+ if (result.status === 303 ||
155
+ ((result.status === 301 || result.status === 302) &&
156
+ currentMethod === "POST")) {
157
+ nextMethod = "GET";
158
+ }
159
+ currentUrl = nextUrl;
160
+ currentMethod = nextMethod;
161
+ currentBody =
162
+ nextMethod === "GET" || isStreamBody ? undefined : currentBody;
163
+ const nextHeaders = { ...currentHeaders };
164
+ if (nextMethod === "GET") {
165
+ delete nextHeaders["content-type"];
166
+ delete nextHeaders["content-length"];
167
+ }
168
+ currentHeaders = nextHeaders;
169
+ redirects += 1;
170
+ continue;
171
+ }
172
+ }
173
+ if (!isStreamBody &&
174
+ shouldRetry(result.status, this.config.retry ?? {})) {
175
+ if (attempt < maxRetries) {
176
+ await sleep(calcDelay(attempt, this.config.retry ?? {}));
177
+ attempt += 1;
178
+ continue;
179
+ }
180
+ }
181
+ return new NodeTransportResponse(result.status, result.headers, fullUrl.toString(), result.body);
131
182
  }
132
- else {
133
- await this.destroy();
183
+ catch (err) {
184
+ if (err.name === "AbortError" || isTimeoutAbort()) {
185
+ if (req.signal?.aborted)
186
+ throw err;
187
+ if (isTimeoutAbort()) {
188
+ throw new Error(`Request timeout after ${this.timeout}ms`, {
189
+ cause: err,
190
+ });
191
+ }
192
+ throw new Error("Transport closed or aborted", { cause: err });
193
+ }
194
+ const retryableCodes = [
195
+ "ECONNREFUSED",
196
+ "ETIMEDOUT",
197
+ "ECONNRESET",
198
+ "EPIPE",
199
+ ];
200
+ if (!isStreamBody &&
201
+ attempt < maxRetries &&
202
+ retryableCodes.includes(err.code)) {
203
+ await sleep(calcDelay(attempt, this.config.retry ?? {}));
204
+ attempt += 1;
205
+ continue;
206
+ }
207
+ throw err;
208
+ }
209
+ finally {
210
+ cancelTimer();
134
211
  }
135
- }
136
- catch (err) {
137
- this.logWarning("Transport close error:", err);
138
212
  }
139
213
  }
140
- async destroy() {
141
- this.isClosed = true;
142
- await new Promise((resolve) => setImmediate(resolve));
143
- try {
144
- const structuralAgent = this.agent;
145
- if (typeof structuralAgent.destroy === "function") {
146
- await structuralAgent.destroy();
214
+ dispatchOnce(url, options) {
215
+ return new Promise((resolve, reject) => {
216
+ const isHttps = url.protocol === "https:";
217
+ const requestFn = isHttps ? https.request : http.request;
218
+ const agent = isHttps ? this.httpsAgent : this.httpAgent;
219
+ const reqOptions = {
220
+ method: options.method,
221
+ headers: options.headers,
222
+ agent,
223
+ signal: options.signal,
224
+ };
225
+ if (options.signal?.aborted) {
226
+ const abortError = new Error("The operation was aborted.");
227
+ abortError.name = "AbortError";
228
+ return reject(abortError);
147
229
  }
148
- }
149
- catch (err) {
150
- this.logWarning("Transport destroy error:", err);
151
- }
230
+ const req = requestFn(url, reqOptions, (res) => {
231
+ const chunks = [];
232
+ res.on("data", (chunk) => {
233
+ chunks.push(chunk);
234
+ });
235
+ res.on("end", () => {
236
+ const body = chunks.length === 0 ? Buffer.alloc(0) : Buffer.concat(chunks);
237
+ resolve({
238
+ status: res.statusCode ?? 200,
239
+ headers: res.headers,
240
+ body,
241
+ });
242
+ });
243
+ res.on("error", (err) => {
244
+ reject(err);
245
+ });
246
+ });
247
+ req.on("error", (err) => {
248
+ reject(err);
249
+ });
250
+ if (options.body !== undefined && options.body !== null) {
251
+ if (Buffer.isBuffer(options.body) || typeof options.body === "string") {
252
+ req.write(options.body);
253
+ }
254
+ else if (options.body instanceof Readable) {
255
+ options.body.pipe(req);
256
+ return; // Управление потоком передано pipe
257
+ }
258
+ else {
259
+ req.write(JSON.stringify(options.body));
260
+ }
261
+ }
262
+ req.end();
263
+ });
152
264
  }
153
- logWarning(msg, err) {
154
- if (this.executor["verbose"]) {
155
- // обращение к приватному полю через bracket notation если нужно
156
- console.warn(msg, err);
157
- }
265
+ async close() {
266
+ this.httpAgent.destroy();
267
+ this.httpsAgent.destroy();
268
+ }
269
+ async destroy() {
270
+ await this.close();
158
271
  }
159
272
  }
160
273
  //# sourceMappingURL=node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/transports/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/transports/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @ru Базовый класс ошибок клиента Hyperttp, агрегирующий контекст неудачного сетевого запроса.
3
+ * @en Base error class for the Hyperttp client, providing explicit layout context for failed requests.
4
+ */
5
+ export declare class HttpClientError extends Error {
6
+ code: string;
7
+ statusCode?: number | undefined;
8
+ originalError?: Error | undefined;
9
+ url?: string | undefined;
10
+ method?: string | undefined;
11
+ /**
12
+ * @ru Создает новый экземпляр HttpClientError.
13
+ * @en Creates a new HttpClientError instance.
14
+ * @param message - Human-readable error message text.
15
+ * @param code - Internal stringified error state identifier code.
16
+ * @param statusCode - Numerical HTTP response status code received from the server.
17
+ * @param originalError - Raw captured exception instance causing this failure.
18
+ * @param url - Targeted request URL destination string.
19
+ * @param method - HTTP method verb utilized for the request.
20
+ */
21
+ constructor(message: string, code?: string, statusCode?: number | undefined, originalError?: Error | undefined, url?: string | undefined, method?: string | undefined);
22
+ }
23
+ /**
24
+ * @ru Ошибка, возникающая при превышении лимита времени ожидания ответа от сервера.
25
+ * @en Error thrown when a network request exceeds its allocated execution timeout threshold.
26
+ */
27
+ export declare class TimeoutError extends HttpClientError {
28
+ /**
29
+ * @ru Создает новый экземпляр TimeoutError.
30
+ * @en Creates a new TimeoutError instance.
31
+ * @param url - Targeted request URL destination string.
32
+ * @param timeout - Threshold duration statement in milliseconds.
33
+ */
34
+ constructor(url: string, timeout: number);
35
+ }
36
+ /**
37
+ * @ru Ошибка, генерируемая при получении HTTP-статуса 429 (превышение лимита частоты запросов).
38
+ * @en Error triggered when encountering an HTTP 429 status code indicating rate limit exhaustion.
39
+ */
40
+ export declare class RateLimitError extends HttpClientError {
41
+ /**
42
+ * @ru Создает новый экземпляр RateLimitError.
43
+ * @en Creates a new RateLimitError instance.
44
+ * @param url - Targeted request URL destination string.
45
+ * @param retryAfter - Optional cool-down period duration in milliseconds before the next retry attempt.
46
+ */
47
+ constructor(url: string, retryAfter?: number);
48
+ }
49
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAa/B,IAAI,EAAE,MAAM;IACZ,UAAU,CAAC,EAAE,MAAM;IACnB,aAAa,CAAC,EAAE,KAAK;IACrB,GAAG,CAAC,EAAE,MAAM;IACZ,MAAM,CAAC,EAAE,MAAM;IAhBxB;;;;;;;;;OASG;gBAED,OAAO,EAAE,MAAM,EACR,IAAI,GAAE,MAAqB,EAC3B,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,aAAa,CAAC,EAAE,KAAK,YAAA,EACrB,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,MAAM,CAAC,EAAE,MAAM,YAAA;CAKzB;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,eAAe;IAC/C;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIzC;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAU7C"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @ru Базовый класс ошибок клиента Hyperttp, агрегирующий контекст неудачного сетевого запроса.
3
+ * @en Base error class for the Hyperttp client, providing explicit layout context for failed requests.
4
+ */
5
+ export class HttpClientError extends Error {
6
+ code;
7
+ statusCode;
8
+ originalError;
9
+ url;
10
+ method;
11
+ /**
12
+ * @ru Создает новый экземпляр HttpClientError.
13
+ * @en Creates a new HttpClientError instance.
14
+ * @param message - Human-readable error message text.
15
+ * @param code - Internal stringified error state identifier code.
16
+ * @param statusCode - Numerical HTTP response status code received from the server.
17
+ * @param originalError - Raw captured exception instance causing this failure.
18
+ * @param url - Targeted request URL destination string.
19
+ * @param method - HTTP method verb utilized for the request.
20
+ */
21
+ constructor(message, code = "HTTP_ERROR", statusCode, originalError, url, method) {
22
+ super(message);
23
+ this.code = code;
24
+ this.statusCode = statusCode;
25
+ this.originalError = originalError;
26
+ this.url = url;
27
+ this.method = method;
28
+ this.name = "HttpClientError";
29
+ }
30
+ }
31
+ /**
32
+ * @ru Ошибка, возникающая при превышении лимита времени ожидания ответа от сервера.
33
+ * @en Error thrown when a network request exceeds its allocated execution timeout threshold.
34
+ */
35
+ export class TimeoutError extends HttpClientError {
36
+ /**
37
+ * @ru Создает новый экземпляр TimeoutError.
38
+ * @en Creates a new TimeoutError instance.
39
+ * @param url - Targeted request URL destination string.
40
+ * @param timeout - Threshold duration statement in milliseconds.
41
+ */
42
+ constructor(url, timeout) {
43
+ super(`Timeout after ${timeout}ms`, "TIMEOUT", 408, undefined, url);
44
+ this.name = "TimeoutError";
45
+ }
46
+ }
47
+ /**
48
+ * @ru Ошибка, генерируемая при получении HTTP-статуса 429 (превышение лимита частоты запросов).
49
+ * @en Error triggered when encountering an HTTP 429 status code indicating rate limit exhaustion.
50
+ */
51
+ export class RateLimitError extends HttpClientError {
52
+ /**
53
+ * @ru Создает новый экземпляр RateLimitError.
54
+ * @en Creates a new RateLimitError instance.
55
+ * @param url - Targeted request URL destination string.
56
+ * @param retryAfter - Optional cool-down period duration in milliseconds before the next retry attempt.
57
+ */
58
+ constructor(url, retryAfter) {
59
+ super(`Rate limited${retryAfter ? ` retry in ${retryAfter}ms` : ""}`, "RATE_LIMIT", 429, undefined, url);
60
+ this.name = "RateLimitError";
61
+ }
62
+ }
63
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAa/B;IACA;IACA;IACA;IACA;IAhBT;;;;;;;;;OASG;IACH,YACE,OAAe,EACR,OAAe,YAAY,EAC3B,UAAmB,EACnB,aAAqB,EACrB,GAAY,EACZ,MAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QANR,SAAI,GAAJ,IAAI,CAAuB;QAC3B,eAAU,GAAV,UAAU,CAAS;QACnB,kBAAa,GAAb,aAAa,CAAQ;QACrB,QAAG,GAAH,GAAG,CAAS;QACZ,WAAM,GAAN,MAAM,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,eAAe;IAC/C;;;;;OAKG;IACH,YAAY,GAAW,EAAE,OAAe;QACtC,KAAK,CAAC,iBAAiB,OAAO,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,eAAe;IACjD;;;;;OAKG;IACH,YAAY,GAAW,EAAE,UAAmB;QAC1C,KAAK,CACH,eAAe,UAAU,CAAC,CAAC,CAAC,aAAa,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9D,YAAY,EACZ,GAAG,EACH,SAAS,EACT,GAAG,CACJ,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
package/utils/merge.d.ts CHANGED
@@ -1,2 +1,9 @@
1
- export declare function deepMerge<T extends Record<string, any>, S extends Record<string, any>>(target: T, source: S): T & S;
1
+ /**
2
+ * @ru Рекурсивно объединяет два объекта. Избегает лишних аллокаций памяти и защищает от разделения ссылок nested-структур.
3
+ * @en Recursively merges two objects. Avoids redundant memory allocations and prevents shared reference leakage for nested structures.
4
+ * @param target - Foundational target base object layout.
5
+ * @param source - High-priority source object containing overrides.
6
+ * @returns New deeply merged intersection object.
7
+ */
8
+ export declare function deepMerge<T extends Record<string, unknown>, S extends Record<string, unknown>>(target: T, source: S): T & S;
2
9
  //# sourceMappingURL=merge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/utils/merge.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAqB7B"}
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/utils/merge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAuB7B"}