@hyperttp/core 1.4.5 → 1.4.7
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/Core/HyperCore.d.ts +2 -1
- package/Core/HyperCore.d.ts.map +1 -1
- package/Core/HyperCore.js +157 -51
- package/Core/HyperCore.js.map +1 -1
- package/defaultConfig.js +5 -5
- package/defaultConfig.js.map +1 -1
- package/package.json +4 -7
- package/transports/browser.d.ts.map +1 -1
- package/transports/browser.js +49 -12
- package/transports/browser.js.map +1 -1
- package/transports/manager.d.ts +89 -6
- package/transports/manager.d.ts.map +1 -1
- package/transports/manager.js +173 -96
- package/transports/manager.js.map +1 -1
- package/transports/node.d.ts +18 -3
- package/transports/node.d.ts.map +1 -1
- package/transports/node.js +280 -33
- package/transports/node.js.map +1 -1
- package/utils/decompress.d.ts +0 -19
- package/utils/decompress.d.ts.map +0 -1
- package/utils/decompress.js +0 -195
- package/utils/decompress.js.map +0 -1
package/transports/node.js
CHANGED
|
@@ -1,4 +1,121 @@
|
|
|
1
|
-
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import https from "node:https";
|
|
3
|
+
import net from "node:net";
|
|
4
|
+
import { Readable } from "node:stream";
|
|
5
|
+
import tls from "node:tls";
|
|
6
|
+
import zlib from "node:zlib";
|
|
7
|
+
/**
|
|
8
|
+
* @ru Статические пресеты браузерных заголовков для маскировки под реальных пользователей.
|
|
9
|
+
* Используются stealth-режимом для обхода fingerprint-защит.
|
|
10
|
+
* @en Static presets of browser headers for masking as real users.
|
|
11
|
+
* Used by stealth mode to bypass fingerprint protections.
|
|
12
|
+
*/
|
|
13
|
+
const STEALTH_HEADER_PRESETS = {
|
|
14
|
+
chrome: {
|
|
15
|
+
"sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
|
|
16
|
+
"sec-ch-ua-mobile": "?0",
|
|
17
|
+
"sec-ch-ua-platform": '"Linux"',
|
|
18
|
+
"sec-fetch-dest": "document",
|
|
19
|
+
"sec-fetch-mode": "navigate",
|
|
20
|
+
"sec-fetch-site": "none",
|
|
21
|
+
"sec-fetch-user": "?1",
|
|
22
|
+
"upgrade-insecure-requests": "1",
|
|
23
|
+
"accept-language": "en-US,en;q=0.9",
|
|
24
|
+
},
|
|
25
|
+
firefox: {
|
|
26
|
+
"sec-fetch-dest": "document",
|
|
27
|
+
"sec-fetch-mode": "navigate",
|
|
28
|
+
"sec-fetch-site": "none",
|
|
29
|
+
"accept-language": "en-US,en;q=0.5",
|
|
30
|
+
"upgrade-insecure-requests": "1",
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* @ru Пресеты User-Agent, соответствующие TLS-отпечаткам (JA3/JA4).
|
|
35
|
+
* @en User-Agent presets matching the TLS fingerprints (JA3/JA4).
|
|
36
|
+
*/
|
|
37
|
+
const STEALTH_UA_PRESETS = {
|
|
38
|
+
chrome: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
|
39
|
+
firefox: "Mozilla/5.0 (X11; Linux; rv:126.0) Gecko/20100101 Firefox/126.0",
|
|
40
|
+
safari: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15",
|
|
41
|
+
edge: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* @ru Возвращает строку шифров TLS для указанного профиля браузера.
|
|
45
|
+
* @en Returns the TLS cipher suite string for the specified browser profile.
|
|
46
|
+
* @param fingerprint - Browser fingerprint profile.
|
|
47
|
+
* @returns Colon-separated cipher suite string, or empty string if not found.
|
|
48
|
+
*/
|
|
49
|
+
function getCiphersForProfile(fingerprint) {
|
|
50
|
+
if (!fingerprint)
|
|
51
|
+
return "";
|
|
52
|
+
switch (fingerprint) {
|
|
53
|
+
case "chrome":
|
|
54
|
+
case "edge":
|
|
55
|
+
return [
|
|
56
|
+
"TLS_AES_128_GCM_SHA256",
|
|
57
|
+
"TLS_AES_256_GCM_SHA384",
|
|
58
|
+
"TLS_CHACHA20_POLY1305_SHA256",
|
|
59
|
+
"ECDHE-ECDSA-AES128-GCM-SHA256",
|
|
60
|
+
"ECDHE-RSA-AES128-GCM-SHA256",
|
|
61
|
+
].join(":");
|
|
62
|
+
case "firefox":
|
|
63
|
+
return [
|
|
64
|
+
"TLS_AES_128_GCM_SHA256",
|
|
65
|
+
"TLS_CHACHA20_POLY1305_SHA256",
|
|
66
|
+
"TLS_AES_256_GCM_SHA384",
|
|
67
|
+
"ECDHE-ECDSA-AES128-GCM-SHA256",
|
|
68
|
+
"ECDHE-RSA-AES128-GCM-SHA256",
|
|
69
|
+
].join(":");
|
|
70
|
+
case "safari":
|
|
71
|
+
return [
|
|
72
|
+
"TLS_AES_256_GCM_SHA384",
|
|
73
|
+
"TLS_CHACHA20_POLY1305_SHA256",
|
|
74
|
+
"TLS_AES_128_GCM_SHA256",
|
|
75
|
+
"ECDHE-ECDSA-AES256-GCM-SHA384",
|
|
76
|
+
"ECDHE-RSA-AES256-GCM-SHA384",
|
|
77
|
+
].join(":");
|
|
78
|
+
default:
|
|
79
|
+
return "";
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @ru Безопасно применяет стелс-пресеты, отдавая абсолютный приоритет ручным заголовкам.
|
|
84
|
+
* @en Safely applies stealth presets, giving absolute priority to manual headers.
|
|
85
|
+
* @param headers - The headers object to modify.
|
|
86
|
+
* @param stealth - Stealth configuration options.
|
|
87
|
+
* @returns The modified headers object.
|
|
88
|
+
*/
|
|
89
|
+
function applyStealthHeaders(headers, stealth) {
|
|
90
|
+
if (!stealth || !stealth.fingerprint)
|
|
91
|
+
return headers;
|
|
92
|
+
const presetName = stealth.fingerprint;
|
|
93
|
+
const presetHeaders = STEALTH_HEADER_PRESETS[presetName];
|
|
94
|
+
if (presetHeaders) {
|
|
95
|
+
for (const key in presetHeaders) {
|
|
96
|
+
if (headers[key] === undefined) {
|
|
97
|
+
headers[key] = presetHeaders[key];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const currentUA = headers["user-agent"];
|
|
102
|
+
if (currentUA === undefined || currentUA === "hyperttp/2.0" || currentUA === "Hyperttp/2.0") {
|
|
103
|
+
const browserUA = STEALTH_UA_PRESETS[presetName];
|
|
104
|
+
if (browserUA) {
|
|
105
|
+
headers["user-agent"] = browserUA;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return headers;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @ru Кэш HTTP/HTTPS агентов по ключу (протокол + stealth-конфигурация).
|
|
112
|
+
* @en Cache of HTTP/HTTPS agents by key (protocol + stealth configuration).
|
|
113
|
+
*/
|
|
114
|
+
const agentCache = new Map();
|
|
115
|
+
/**
|
|
116
|
+
* @ru Устанавливает метод dump() на прототип ReadableStream для освобождения ресурсов.
|
|
117
|
+
* @en Installs dump() method on ReadableStream prototype for resource cleanup.
|
|
118
|
+
*/
|
|
2
119
|
function installReadableStreamDump() {
|
|
3
120
|
if (typeof ReadableStream === "undefined")
|
|
4
121
|
return;
|
|
@@ -18,6 +135,78 @@ function installReadableStreamDump() {
|
|
|
18
135
|
configurable: true,
|
|
19
136
|
});
|
|
20
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* @ru Получает или создаёт нативный HTTP/HTTPS агент с учётом stealth-настроек.
|
|
140
|
+
* @en Gets or creates a native HTTP/HTTPS agent considering stealth settings.
|
|
141
|
+
* @param isHttps - Whether the connection is HTTPS.
|
|
142
|
+
* @param stealth - Optional stealth configuration.
|
|
143
|
+
* @returns The HTTP or HTTPS agent.
|
|
144
|
+
*/
|
|
145
|
+
function getNativeAgent(isHttps, stealth) {
|
|
146
|
+
const fingerprint = stealth?.fingerprint ?? "none";
|
|
147
|
+
const fragment = stealth?.fragment ?? "none";
|
|
148
|
+
const cacheKey = `${isHttps ? "https" : "http"}:${fingerprint}:${fragment}`;
|
|
149
|
+
let agent = agentCache.get(cacheKey);
|
|
150
|
+
if (agent)
|
|
151
|
+
return agent;
|
|
152
|
+
const agentOpts = {
|
|
153
|
+
keepAlive: true,
|
|
154
|
+
maxSockets: 256,
|
|
155
|
+
};
|
|
156
|
+
if (isHttps) {
|
|
157
|
+
agentOpts.ciphers = getCiphersForProfile(stealth?.fingerprint);
|
|
158
|
+
if (stealth?.fragment === "split") {
|
|
159
|
+
agentOpts.createConnection = (options, callback) => {
|
|
160
|
+
const socket = net.connect(options);
|
|
161
|
+
const originalWrite = socket.write;
|
|
162
|
+
let isFirstWrite = true;
|
|
163
|
+
socket.write = function (chunk, encodingOrCb, cb) {
|
|
164
|
+
if (isFirstWrite && chunk instanceof Uint8Array && chunk.length > 5) {
|
|
165
|
+
isFirstWrite = false;
|
|
166
|
+
this.write = originalWrite;
|
|
167
|
+
let encoding;
|
|
168
|
+
let callbackRef;
|
|
169
|
+
if (typeof encodingOrCb === "function") {
|
|
170
|
+
callbackRef = encodingOrCb;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
encoding = encodingOrCb;
|
|
174
|
+
callbackRef = cb;
|
|
175
|
+
}
|
|
176
|
+
const part1 = chunk.subarray(0, 3);
|
|
177
|
+
const part2 = chunk.subarray(3);
|
|
178
|
+
originalWrite.call(this, part1, encoding);
|
|
179
|
+
return originalWrite.call(this, part2, encoding, callbackRef);
|
|
180
|
+
}
|
|
181
|
+
this.write = originalWrite;
|
|
182
|
+
return originalWrite.call(this, chunk, encodingOrCb, cb);
|
|
183
|
+
};
|
|
184
|
+
const tlsSocket = tls.connect({
|
|
185
|
+
...options,
|
|
186
|
+
socket,
|
|
187
|
+
ciphers: agentOpts.ciphers,
|
|
188
|
+
});
|
|
189
|
+
tlsSocket.once("secureConnect", () => callback(null, tlsSocket));
|
|
190
|
+
tlsSocket.once("error", (err) => callback(err));
|
|
191
|
+
return tlsSocket;
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
agent = new https.Agent(agentOpts);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
if (stealth?.fragment === "split") {
|
|
198
|
+
agentOpts.createConnection = (options, callback) => {
|
|
199
|
+
const socket = net.connect(options);
|
|
200
|
+
socket.once("connect", () => callback(null, socket));
|
|
201
|
+
socket.once("error", (err) => callback(err));
|
|
202
|
+
return socket;
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
agent = new http.Agent(agentOpts);
|
|
206
|
+
}
|
|
207
|
+
agentCache.set(cacheKey, agent);
|
|
208
|
+
return agent;
|
|
209
|
+
}
|
|
21
210
|
installReadableStreamDump();
|
|
22
211
|
function isAbsoluteHttpUrl(url) {
|
|
23
212
|
return url.startsWith("http://") || url.startsWith("https://");
|
|
@@ -39,36 +228,35 @@ function isLocalhostUrl(url) {
|
|
|
39
228
|
return host === "localhost" || host.startsWith("localhost:");
|
|
40
229
|
}
|
|
41
230
|
function normalizeHeaders(headers) {
|
|
231
|
+
const out = Object.create(null);
|
|
42
232
|
if (!headers)
|
|
43
|
-
return
|
|
233
|
+
return out;
|
|
44
234
|
if (headers instanceof Headers) {
|
|
45
|
-
const out = Object.create(null);
|
|
46
235
|
headers.forEach((value, key) => {
|
|
47
|
-
out[key] = value;
|
|
236
|
+
out[key.toLowerCase()] = value;
|
|
48
237
|
});
|
|
49
238
|
return out;
|
|
50
239
|
}
|
|
51
240
|
if (Array.isArray(headers)) {
|
|
52
|
-
const out = Object.create(null);
|
|
53
241
|
for (let i = 0; i < headers.length; i++) {
|
|
54
242
|
const pair = headers[i];
|
|
55
|
-
if (!pair)
|
|
243
|
+
if (!pair || typeof pair[0] !== "string")
|
|
56
244
|
continue;
|
|
57
|
-
out[pair[0]] = pair[1];
|
|
245
|
+
out[pair[0].toLowerCase()] = String(pair[1]);
|
|
58
246
|
}
|
|
59
247
|
return out;
|
|
60
248
|
}
|
|
61
|
-
const out = Object.create(null);
|
|
62
249
|
const src = headers;
|
|
63
250
|
for (const key in src) {
|
|
64
251
|
const value = src[key];
|
|
65
252
|
if (value == null)
|
|
66
253
|
continue;
|
|
254
|
+
const lKey = key.toLowerCase();
|
|
67
255
|
if (Array.isArray(value)) {
|
|
68
|
-
out[
|
|
256
|
+
out[lKey] = lKey === "cookie" ? value.join("; ") : value.join(", ");
|
|
69
257
|
continue;
|
|
70
258
|
}
|
|
71
|
-
out[
|
|
259
|
+
out[lKey] = String(value);
|
|
72
260
|
}
|
|
73
261
|
return out;
|
|
74
262
|
}
|
|
@@ -79,10 +267,7 @@ function normalizeBody(body) {
|
|
|
79
267
|
body instanceof Uint8Array ||
|
|
80
268
|
body instanceof ArrayBuffer ||
|
|
81
269
|
ArrayBuffer.isView(body) ||
|
|
82
|
-
(typeof ReadableStream !== "undefined" && body instanceof ReadableStream)
|
|
83
|
-
(typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams) ||
|
|
84
|
-
(typeof FormData !== "undefined" && body instanceof FormData) ||
|
|
85
|
-
(typeof Blob !== "undefined" && body instanceof Blob)) {
|
|
270
|
+
(typeof ReadableStream !== "undefined" && body instanceof ReadableStream)) {
|
|
86
271
|
return body;
|
|
87
272
|
}
|
|
88
273
|
if (typeof body === "object") {
|
|
@@ -91,8 +276,8 @@ function normalizeBody(body) {
|
|
|
91
276
|
return String(body);
|
|
92
277
|
}
|
|
93
278
|
/**
|
|
94
|
-
* @ru Реализация транспорта для Node.js с использованием
|
|
95
|
-
*
|
|
279
|
+
* @ru Реализация транспорта для Node.js с использованием нативных http/https модулей.
|
|
280
|
+
* Поддерживает stealth-маскировку, фрагментацию TLS Client Hello и автоматическую декомпрессию.
|
|
96
281
|
*/
|
|
97
282
|
export class NodeTransport {
|
|
98
283
|
config;
|
|
@@ -109,25 +294,87 @@ export class NodeTransport {
|
|
|
109
294
|
if (this.isProduction && isLocalhostUrl(fullUrl)) {
|
|
110
295
|
throw new Error("Localhost URL detected in production environment");
|
|
111
296
|
}
|
|
112
|
-
|
|
297
|
+
let headers = normalizeHeaders(req.headers);
|
|
298
|
+
if (headers["accept-encoding"] === undefined) {
|
|
299
|
+
headers["accept-encoding"] = "gzip, deflate, br";
|
|
300
|
+
}
|
|
301
|
+
const stealthOpts = req.stealth ?? this.config.stealth ?? this.config.network?.stealth;
|
|
302
|
+
if (stealthOpts) {
|
|
303
|
+
headers = applyStealthHeaders(headers, stealthOpts);
|
|
304
|
+
}
|
|
113
305
|
const body = normalizeBody(req.body);
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
306
|
+
const urlObj = new URL(fullUrl);
|
|
307
|
+
const isHttps = urlObj.protocol === "https:";
|
|
308
|
+
const agent = getNativeAgent(isHttps, stealthOpts);
|
|
309
|
+
return new Promise((resolve, reject) => {
|
|
310
|
+
const reqOpts = {
|
|
311
|
+
method: req.method,
|
|
312
|
+
headers,
|
|
313
|
+
agent,
|
|
314
|
+
signal: req.signal,
|
|
315
|
+
};
|
|
316
|
+
const clientReq = (isHttps ? https : http).request(fullUrl, reqOpts, (res) => {
|
|
317
|
+
const resHeaders = Object.create(null);
|
|
318
|
+
for (const key in res.headers) {
|
|
319
|
+
const val = res.headers[key];
|
|
320
|
+
if (val !== undefined) {
|
|
321
|
+
resHeaders[key] = Array.isArray(val) ? val.join(", ") : val;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
let responseStream = res;
|
|
325
|
+
const encoding = resHeaders["content-encoding"]?.toLowerCase();
|
|
326
|
+
if (encoding === "gzip") {
|
|
327
|
+
responseStream = res.pipe(zlib.createGunzip());
|
|
328
|
+
delete resHeaders["content-encoding"];
|
|
329
|
+
delete resHeaders["content-length"];
|
|
330
|
+
}
|
|
331
|
+
else if (encoding === "deflate") {
|
|
332
|
+
responseStream = res.pipe(zlib.createInflate());
|
|
333
|
+
delete resHeaders["content-encoding"];
|
|
334
|
+
delete resHeaders["content-length"];
|
|
335
|
+
}
|
|
336
|
+
else if (encoding === "br") {
|
|
337
|
+
responseStream = res.pipe(zlib.createBrotliDecompress());
|
|
338
|
+
delete resHeaders["content-encoding"];
|
|
339
|
+
delete resHeaders["content-length"];
|
|
340
|
+
}
|
|
341
|
+
resolve({
|
|
342
|
+
status: res.statusCode ?? 200,
|
|
343
|
+
headers: resHeaders,
|
|
344
|
+
url: fullUrl,
|
|
345
|
+
body: Readable.toWeb(responseStream),
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
clientReq.on("error", (err) => reject(err));
|
|
349
|
+
if (body !== undefined && body !== null) {
|
|
350
|
+
if (typeof body === "string" || body instanceof Uint8Array || ArrayBuffer.isView(body)) {
|
|
351
|
+
clientReq.write(body);
|
|
352
|
+
clientReq.end();
|
|
353
|
+
}
|
|
354
|
+
else if (body instanceof ArrayBuffer) {
|
|
355
|
+
clientReq.write(Buffer.from(body));
|
|
356
|
+
clientReq.end();
|
|
357
|
+
}
|
|
358
|
+
else if (typeof ReadableStream !== "undefined" && body instanceof ReadableStream) {
|
|
359
|
+
Readable.fromWeb(body).pipe(clientReq);
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
clientReq.end();
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
clientReq.end();
|
|
367
|
+
}
|
|
124
368
|
});
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
369
|
+
}
|
|
370
|
+
async close() {
|
|
371
|
+
for (const agent of agentCache.values()) {
|
|
372
|
+
agent.destroy();
|
|
373
|
+
}
|
|
374
|
+
agentCache.clear();
|
|
375
|
+
}
|
|
376
|
+
async destroy() {
|
|
377
|
+
await this.close();
|
|
131
378
|
}
|
|
132
379
|
}
|
|
133
380
|
//# sourceMappingURL=node.js.map
|
package/transports/node.js.map
CHANGED
|
@@ -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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"}
|
package/utils/decompress.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { TransportStreamExtensions } from "@hyperttp/types";
|
|
2
|
-
type StreamPayload = ReadableStream<Uint8Array> & TransportStreamExtensions;
|
|
3
|
-
type BufferPayload = Uint8Array & TransportStreamExtensions;
|
|
4
|
-
/**
|
|
5
|
-
* @ru Декомпрессирует буфер с поддержкой множественных кодировок.
|
|
6
|
-
* Сначала пытается Web API, затем fallback на node:zlib для серверных сред.
|
|
7
|
-
* @en Decompresses a buffer with support for multiple encodings.
|
|
8
|
-
* Tries Web API first, then falls back to node:zlib for server environments.
|
|
9
|
-
*/
|
|
10
|
-
export declare function decompressBuffer(body: Uint8Array, encoding: string): Promise<BufferPayload>;
|
|
11
|
-
/**
|
|
12
|
-
* @ru Создаёт декомпрессированный стрим с поддержкой множественных кодировок.
|
|
13
|
-
* Использует DecompressionStream для Web и node:zlib для Node.js.
|
|
14
|
-
* @en Creates a decompressed stream with support for multiple encodings.
|
|
15
|
-
* Uses DecompressionStream for Web and node:zlib for Node.js.
|
|
16
|
-
*/
|
|
17
|
-
export declare function createDecompressStream(body: ReadableStream<Uint8Array>, encoding: string): Promise<StreamPayload>;
|
|
18
|
-
export {};
|
|
19
|
-
//# sourceMappingURL=decompress.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decompress.d.ts","sourceRoot":"","sources":["../../src/utils/decompress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE,KAAK,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,yBAAyB,CAAC;AAC5E,KAAK,aAAa,GAAG,UAAU,GAAG,yBAAyB,CAAC;AAgK5D;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAsBjG;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CAyCxB"}
|
package/utils/decompress.js
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { runtimeImport } from "../transports/manager.js";
|
|
2
|
-
/**
|
|
3
|
-
* @ru Флаг серверного окружения (Node.js/Bun/Deno).
|
|
4
|
-
* @en Server environment flag (Node.js/Bun/Deno).
|
|
5
|
-
*/
|
|
6
|
-
const IS_SERVER = typeof window === "undefined" && typeof self === "undefined";
|
|
7
|
-
/**
|
|
8
|
-
* @ru No-op функция для dump() буферов. Буферы не требуют освобождения ресурсов.
|
|
9
|
-
* @en No-op function for buffer dump(). Buffers don't require resource cleanup.
|
|
10
|
-
*/
|
|
11
|
-
const NOOP_DUMP = async () => { };
|
|
12
|
-
/**
|
|
13
|
-
* @ru Кэш промисов импорта Node.js модулей для избежания повторных загрузок.
|
|
14
|
-
* @en Cache of Node.js module import promises to avoid repeated loads.
|
|
15
|
-
*/
|
|
16
|
-
let zlibModulePromise = null;
|
|
17
|
-
let streamModulePromise = null;
|
|
18
|
-
/**
|
|
19
|
-
* @ru Лениво загружает и кэширует модуль node:zlib.
|
|
20
|
-
* @en Lazily loads and caches the node:zlib module.
|
|
21
|
-
*/
|
|
22
|
-
async function getZlibModule() {
|
|
23
|
-
if (!zlibModulePromise) {
|
|
24
|
-
zlibModulePromise = runtimeImport("node:zlib");
|
|
25
|
-
}
|
|
26
|
-
return zlibModulePromise;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* @ru Лениво загружает и кэширует модуль node:stream.
|
|
30
|
-
* @en Lazily loads and caches the node:stream module.
|
|
31
|
-
*/
|
|
32
|
-
async function getStreamModule() {
|
|
33
|
-
if (!streamModulePromise) {
|
|
34
|
-
streamModulePromise = runtimeImport("node:stream");
|
|
35
|
-
}
|
|
36
|
-
return streamModulePromise;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* @ru Парсит строку Content-Encoding в массив кодировок за один проход.
|
|
40
|
-
* Игнорирует 'identity' (без сжатия) и пустые значения.
|
|
41
|
-
* @en Parses Content-Encoding string into an array of encodings in a single pass.
|
|
42
|
-
* Ignores 'identity' (no compression) and empty values.
|
|
43
|
-
*/
|
|
44
|
-
function parseEncodings(encoding) {
|
|
45
|
-
const result = [];
|
|
46
|
-
let start = 0;
|
|
47
|
-
const len = encoding.length;
|
|
48
|
-
for (let i = 0; i <= len; i++) {
|
|
49
|
-
if (i === len || encoding[i] === ",") {
|
|
50
|
-
let part = encoding.slice(start, i).trim().toLowerCase();
|
|
51
|
-
if (part && part !== "identity") {
|
|
52
|
-
result.push(part);
|
|
53
|
-
}
|
|
54
|
-
start = i + 1;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return result;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* @ru Добавляет no-op метод dump() к буферу.
|
|
61
|
-
* @en Attaches a no-op dump() method to the buffer.
|
|
62
|
-
*/
|
|
63
|
-
function attachNoopDump(buffer) {
|
|
64
|
-
const payload = buffer;
|
|
65
|
-
payload.dump = NOOP_DUMP;
|
|
66
|
-
return payload;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* @ru Добавляет метод dump() к стриму для отмены и освобождения сокета.
|
|
70
|
-
* @en Attaches a dump() method to the stream for cancellation and socket release.
|
|
71
|
-
*/
|
|
72
|
-
function attachStreamDump(stream) {
|
|
73
|
-
const payload = stream;
|
|
74
|
-
payload.dump = async () => {
|
|
75
|
-
try {
|
|
76
|
-
await payload.cancel();
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
//
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
return payload;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* @ru Декомпрессирует буфер с использованием Web API (DecompressionStream).
|
|
86
|
-
* Поддерживает gzip и deflate. Возвращает исходный буфер, если декомпрессия невозможна.
|
|
87
|
-
* @en Decompresses a buffer using Web API (DecompressionStream).
|
|
88
|
-
* Supports gzip and deflate. Returns the original buffer if decompression is not possible.
|
|
89
|
-
*/
|
|
90
|
-
async function decompressOnceWeb(input, encoding) {
|
|
91
|
-
const enc = encoding.trim().toLowerCase();
|
|
92
|
-
if (typeof globalThis.DecompressionStream === "undefined")
|
|
93
|
-
return input;
|
|
94
|
-
const format = enc === "gzip" || enc === "x-gzip" ? "gzip" : enc === "deflate" ? "deflate" : null;
|
|
95
|
-
if (!format)
|
|
96
|
-
return input;
|
|
97
|
-
const blob = new Blob([input]);
|
|
98
|
-
const response = new Response(blob);
|
|
99
|
-
const decompressedStream = response.body.pipeThrough(new globalThis.DecompressionStream(format));
|
|
100
|
-
const buf = await new Response(decompressedStream).arrayBuffer();
|
|
101
|
-
return new Uint8Array(buf);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* @ru Декомпрессирует буфер с использованием node:zlib.
|
|
105
|
-
* Поддерживает gzip, deflate и brotli.
|
|
106
|
-
* @en Decompresses a buffer using node:zlib.
|
|
107
|
-
* Supports gzip, deflate, and brotli.
|
|
108
|
-
*/
|
|
109
|
-
async function decompressOnceNode(input, encoding) {
|
|
110
|
-
const enc = encoding.trim().toLowerCase();
|
|
111
|
-
const zlib = await getZlibModule();
|
|
112
|
-
switch (enc) {
|
|
113
|
-
case "gzip":
|
|
114
|
-
case "x-gzip":
|
|
115
|
-
return zlib.gunzipSync(input);
|
|
116
|
-
case "deflate":
|
|
117
|
-
return zlib.inflateSync(input);
|
|
118
|
-
case "br":
|
|
119
|
-
return zlib.brotliDecompressSync(input);
|
|
120
|
-
default:
|
|
121
|
-
return input;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* @ru Декомпрессирует буфер с поддержкой множественных кодировок.
|
|
126
|
-
* Сначала пытается Web API, затем fallback на node:zlib для серверных сред.
|
|
127
|
-
* @en Decompresses a buffer with support for multiple encodings.
|
|
128
|
-
* Tries Web API first, then falls back to node:zlib for server environments.
|
|
129
|
-
*/
|
|
130
|
-
export async function decompressBuffer(body, encoding) {
|
|
131
|
-
let current = body;
|
|
132
|
-
const encodings = parseEncodings(encoding);
|
|
133
|
-
for (let i = 0; i < encodings.length; i++) {
|
|
134
|
-
const enc = encodings[i];
|
|
135
|
-
const webResult = await decompressOnceWeb(current, enc);
|
|
136
|
-
if (webResult !== current) {
|
|
137
|
-
current = webResult;
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
if (IS_SERVER && (enc === "br" || enc === "gzip" || enc === "deflate" || enc === "x-gzip")) {
|
|
141
|
-
try {
|
|
142
|
-
current = await decompressOnceNode(current, enc);
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
return attachNoopDump(current);
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* @ru Создаёт декомпрессированный стрим с поддержкой множественных кодировок.
|
|
153
|
-
* Использует DecompressionStream для Web и node:zlib для Node.js.
|
|
154
|
-
* @en Creates a decompressed stream with support for multiple encodings.
|
|
155
|
-
* Uses DecompressionStream for Web and node:zlib for Node.js.
|
|
156
|
-
*/
|
|
157
|
-
export async function createDecompressStream(body, encoding) {
|
|
158
|
-
const encodings = parseEncodings(encoding);
|
|
159
|
-
if (encodings.length === 0)
|
|
160
|
-
return attachStreamDump(body);
|
|
161
|
-
let current = body;
|
|
162
|
-
for (let i = 0; i < encodings.length; i++) {
|
|
163
|
-
const enc = encodings[i];
|
|
164
|
-
const isGzip = enc === "gzip" || enc === "x-gzip";
|
|
165
|
-
const isDeflate = enc === "deflate";
|
|
166
|
-
const isBrotli = enc === "br";
|
|
167
|
-
if ((isGzip || isDeflate) && typeof globalThis.DecompressionStream !== "undefined") {
|
|
168
|
-
const format = isGzip ? "gzip" : "deflate";
|
|
169
|
-
current = current.pipeThrough(new globalThis.DecompressionStream(format));
|
|
170
|
-
}
|
|
171
|
-
else if (IS_SERVER) {
|
|
172
|
-
try {
|
|
173
|
-
const streamMod = await getStreamModule();
|
|
174
|
-
const zlibMod = await getZlibModule();
|
|
175
|
-
const nodeReadableStream = streamMod.Readable.fromWeb(current);
|
|
176
|
-
let transformer = nodeReadableStream;
|
|
177
|
-
if (isGzip) {
|
|
178
|
-
transformer = nodeReadableStream.pipe(zlibMod.createGunzip());
|
|
179
|
-
}
|
|
180
|
-
else if (isDeflate) {
|
|
181
|
-
transformer = nodeReadableStream.pipe(zlibMod.createInflate());
|
|
182
|
-
}
|
|
183
|
-
else if (isBrotli) {
|
|
184
|
-
transformer = nodeReadableStream.pipe(zlibMod.createBrotliDecompress());
|
|
185
|
-
}
|
|
186
|
-
current = streamMod.Readable.toWeb(transformer);
|
|
187
|
-
}
|
|
188
|
-
catch {
|
|
189
|
-
continue;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return attachStreamDump(current);
|
|
194
|
-
}
|
|
195
|
-
//# sourceMappingURL=decompress.js.map
|
package/utils/decompress.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decompress.js","sourceRoot":"","sources":["../../src/utils/decompress.ts"],"names":[],"mappings":"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"}
|