nlcurl 0.3.1 → 0.4.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/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +84 -90
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.js +25 -25
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +2 -2
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +55 -55
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +1 -1
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +20 -22
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +1 -1
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +20 -22
- package/dist/cookies/parser.js.map +1 -1
- package/dist/core/client.d.ts +3 -3
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +9 -8
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +64 -21
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +112 -36
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +10 -5
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/response.d.ts +2 -2
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +6 -8
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +7 -6
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +58 -43
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +96 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +246 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/fingerprints/akamai.d.ts +1 -1
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +3 -7
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +7 -7
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +12 -18
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +4 -4
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +1 -1
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +12 -12
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +59 -100
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +1 -1
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +26 -26
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +35 -85
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +1 -1
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +35 -68
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +1 -1
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +24 -57
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +1 -1
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/http/h1/client.d.ts +4 -4
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +31 -31
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +1 -1
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +17 -19
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +1 -1
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +29 -33
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +5 -4
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +59 -71
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +7 -3
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +16 -12
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +328 -130
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/negotiator.d.ts +4 -4
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +26 -39
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +5 -5
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +5 -5
- package/dist/http/pool.js.map +1 -1
- package/dist/index.d.ts +16 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +2 -2
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +2 -0
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry.d.ts +6 -4
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +9 -7
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/http-proxy.d.ts +1 -1
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +14 -14
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +1 -1
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +31 -27
- package/dist/proxy/socks.js.map +1 -1
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +1 -4
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/node-engine.d.ts +2 -2
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +58 -58
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +1 -1
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +8 -14
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +2 -2
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +23 -26
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +3 -3
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +62 -74
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +2 -2
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +20 -20
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +1 -1
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +13 -13
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/types.d.ts +4 -4
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +6 -0
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/encoding.d.ts +1 -1
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +23 -25
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/logger.d.ts +48 -7
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +61 -13
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +2 -2
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +2 -2
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +67 -71
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +8 -8
- package/dist/ws/frame.js.map +1 -1
- package/package.json +60 -57
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firefox.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/firefox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firefox.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/firefox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BrowserProfile } from
|
|
1
|
+
import type { BrowserProfile } from "../types.js";
|
|
2
2
|
/** {@link BrowserProfile} impersonating Safari 15.3 on macOS (WebKit 605.1.15). */
|
|
3
3
|
export declare const safari153: BrowserProfile;
|
|
4
4
|
/** {@link BrowserProfile} impersonating Safari 15.5 on macOS (WebKit 605.1.15). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safari.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/safari.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"safari.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/safari.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAyD,MAAM,aAAa,CAAC;AAmFzG,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AAExE,oEAAoE;AACpE,eAAO,MAAM,YAAY,gBAAY,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAW7D,CAAC"}
|
|
@@ -1,41 +1,8 @@
|
|
|
1
|
-
import { CipherSuite, ExtensionType, NamedGroup, SignatureScheme, ECPointFormat, PskKeyExchangeMode, ProtocolVersion
|
|
2
|
-
import * as ext from
|
|
3
|
-
const SAFARI_CIPHER_SUITES = [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
CipherSuite.TLS_CHACHA20_POLY1305_SHA256,
|
|
7
|
-
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
|
|
8
|
-
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
|
|
9
|
-
CipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
|
|
10
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
|
|
11
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
|
|
12
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
|
|
13
|
-
CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384,
|
|
14
|
-
CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256,
|
|
15
|
-
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
|
|
16
|
-
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
|
|
17
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
|
|
18
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
|
|
19
|
-
CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA,
|
|
20
|
-
CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA,
|
|
21
|
-
];
|
|
22
|
-
const SAFARI_GROUPS = [
|
|
23
|
-
NamedGroup.X25519,
|
|
24
|
-
NamedGroup.SECP256R1,
|
|
25
|
-
NamedGroup.SECP384R1,
|
|
26
|
-
NamedGroup.SECP521R1,
|
|
27
|
-
];
|
|
28
|
-
const SAFARI_SIGALGS = [
|
|
29
|
-
SignatureScheme.ECDSA_SECP256R1_SHA256,
|
|
30
|
-
SignatureScheme.RSA_PSS_RSAE_SHA256,
|
|
31
|
-
SignatureScheme.RSA_PKCS1_SHA256,
|
|
32
|
-
SignatureScheme.ECDSA_SECP384R1_SHA384,
|
|
33
|
-
SignatureScheme.ECDSA_SECP521R1_SHA512,
|
|
34
|
-
SignatureScheme.RSA_PSS_RSAE_SHA384,
|
|
35
|
-
SignatureScheme.RSA_PSS_RSAE_SHA512,
|
|
36
|
-
SignatureScheme.RSA_PKCS1_SHA384,
|
|
37
|
-
SignatureScheme.RSA_PKCS1_SHA512,
|
|
38
|
-
];
|
|
1
|
+
import { CipherSuite, ExtensionType, NamedGroup, SignatureScheme, ECPointFormat, PskKeyExchangeMode, ProtocolVersion } from "../../tls/constants.js";
|
|
2
|
+
import * as ext from "../extensions.js";
|
|
3
|
+
const SAFARI_CIPHER_SUITES = [CipherSuite.TLS_AES_128_GCM_SHA256, CipherSuite.TLS_AES_256_GCM_SHA384, CipherSuite.TLS_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA];
|
|
4
|
+
const SAFARI_GROUPS = [NamedGroup.X25519, NamedGroup.SECP256R1, NamedGroup.SECP384R1, NamedGroup.SECP521R1];
|
|
5
|
+
const SAFARI_SIGALGS = [SignatureScheme.ECDSA_SECP256R1_SHA256, SignatureScheme.RSA_PSS_RSAE_SHA256, SignatureScheme.RSA_PKCS1_SHA256, SignatureScheme.ECDSA_SECP384R1_SHA384, SignatureScheme.ECDSA_SECP521R1_SHA512, SignatureScheme.RSA_PSS_RSAE_SHA384, SignatureScheme.RSA_PSS_RSAE_SHA512, SignatureScheme.RSA_PKCS1_SHA384, SignatureScheme.RSA_PKCS1_SHA512];
|
|
39
6
|
function safariExtensions() {
|
|
40
7
|
return [
|
|
41
8
|
{ type: ExtensionType.SERVER_NAME, data: ext.sniData },
|
|
@@ -43,7 +10,7 @@ function safariExtensions() {
|
|
|
43
10
|
{ type: ExtensionType.RENEGOTIATION_INFO, data: () => ext.renegotiationInfoData() },
|
|
44
11
|
{ type: ExtensionType.SUPPORTED_GROUPS, data: () => ext.supportedGroupsData(SAFARI_GROUPS) },
|
|
45
12
|
{ type: ExtensionType.EC_POINT_FORMATS, data: () => ext.ecPointFormatsData([ECPointFormat.UNCOMPRESSED]) },
|
|
46
|
-
{ type: ExtensionType.APPLICATION_LAYER_PROTOCOL_NEGOTIATION, data: () => ext.alpnData([
|
|
13
|
+
{ type: ExtensionType.APPLICATION_LAYER_PROTOCOL_NEGOTIATION, data: () => ext.alpnData(["h2", "http/1.1"]) },
|
|
47
14
|
{ type: ExtensionType.STATUS_REQUEST, data: () => ext.statusRequestData() },
|
|
48
15
|
{ type: ExtensionType.SIGNATURE_ALGORITHMS, data: () => ext.signatureAlgorithmsData(SAFARI_SIGALGS) },
|
|
49
16
|
{ type: ExtensionType.SIGNED_CERTIFICATE_TIMESTAMP },
|
|
@@ -58,7 +25,7 @@ const SAFARI_H2 = {
|
|
|
58
25
|
{ id: 3, value: 100 },
|
|
59
26
|
],
|
|
60
27
|
windowUpdate: 10485760,
|
|
61
|
-
pseudoHeaderOrder: [
|
|
28
|
+
pseudoHeaderOrder: [":method", ":scheme", ":path", ":authority"],
|
|
62
29
|
priorityFrames: [],
|
|
63
30
|
};
|
|
64
31
|
function safariHeaders(version, webkitBuild) {
|
|
@@ -66,13 +33,13 @@ function safariHeaders(version, webkitBuild) {
|
|
|
66
33
|
return {
|
|
67
34
|
userAgent: ua,
|
|
68
35
|
headers: [
|
|
69
|
-
[
|
|
70
|
-
[
|
|
71
|
-
[
|
|
72
|
-
[
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
36
|
+
["user-agent", ua],
|
|
37
|
+
["accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"],
|
|
38
|
+
["accept-language", "en-US,en;q=0.9"],
|
|
39
|
+
["accept-encoding", "gzip, deflate, br"],
|
|
40
|
+
["sec-fetch-dest", "document"],
|
|
41
|
+
["sec-fetch-mode", "navigate"],
|
|
42
|
+
["sec-fetch-site", "none"],
|
|
76
43
|
],
|
|
77
44
|
};
|
|
78
45
|
}
|
|
@@ -85,7 +52,7 @@ function safariTLS() {
|
|
|
85
52
|
extensions: safariExtensions(),
|
|
86
53
|
supportedGroups: SAFARI_GROUPS,
|
|
87
54
|
signatureAlgorithms: SAFARI_SIGALGS,
|
|
88
|
-
alpnProtocols: [
|
|
55
|
+
alpnProtocols: ["h2", "http/1.1"],
|
|
89
56
|
grease: true,
|
|
90
57
|
randomSessionId: true,
|
|
91
58
|
keyShareGroups: [NamedGroup.X25519],
|
|
@@ -97,7 +64,7 @@ function safariTLS() {
|
|
|
97
64
|
function safariProfile(name, version, webkitBuild) {
|
|
98
65
|
return {
|
|
99
66
|
name,
|
|
100
|
-
browser:
|
|
67
|
+
browser: "safari",
|
|
101
68
|
version,
|
|
102
69
|
tls: safariTLS(),
|
|
103
70
|
h2: SAFARI_H2,
|
|
@@ -105,23 +72,23 @@ function safariProfile(name, version, webkitBuild) {
|
|
|
105
72
|
};
|
|
106
73
|
}
|
|
107
74
|
/** {@link BrowserProfile} impersonating Safari 15.3 on macOS (WebKit 605.1.15). */
|
|
108
|
-
export const safari153 = safariProfile(
|
|
75
|
+
export const safari153 = safariProfile("safari153", "15.3", "605.1.15");
|
|
109
76
|
/** {@link BrowserProfile} impersonating Safari 15.5 on macOS (WebKit 605.1.15). */
|
|
110
|
-
export const safari155 = safariProfile(
|
|
77
|
+
export const safari155 = safariProfile("safari155", "15.5", "605.1.15");
|
|
111
78
|
/** {@link BrowserProfile} impersonating Safari 16.0 on macOS (WebKit 605.1.15). */
|
|
112
|
-
export const safari160 = safariProfile(
|
|
79
|
+
export const safari160 = safariProfile("safari160", "16.0", "605.1.15");
|
|
113
80
|
/** {@link BrowserProfile} impersonating Safari 16.5 on macOS (WebKit 605.1.15). */
|
|
114
|
-
export const safari165 = safariProfile(
|
|
81
|
+
export const safari165 = safariProfile("safari165", "16.5", "605.1.15");
|
|
115
82
|
/** {@link BrowserProfile} impersonating Safari 17.0 on macOS (WebKit 605.1.15). */
|
|
116
|
-
export const safari170 = safariProfile(
|
|
83
|
+
export const safari170 = safariProfile("safari170", "17.0", "605.1.15");
|
|
117
84
|
/** {@link BrowserProfile} impersonating Safari 17.4 on macOS (WebKit 605.1.15). */
|
|
118
|
-
export const safari174 = safariProfile(
|
|
85
|
+
export const safari174 = safariProfile("safari174", "17.4", "605.1.15");
|
|
119
86
|
/** {@link BrowserProfile} impersonating Safari 17.5 on macOS (WebKit 605.1.15). */
|
|
120
|
-
export const safari175 = safariProfile(
|
|
87
|
+
export const safari175 = safariProfile("safari175", "17.5", "605.1.15");
|
|
121
88
|
/** {@link BrowserProfile} impersonating Safari 18.0 on macOS (WebKit 605.1.15). */
|
|
122
|
-
export const safari180 = safariProfile(
|
|
89
|
+
export const safari180 = safariProfile("safari180", "18.0", "605.1.15");
|
|
123
90
|
/** {@link BrowserProfile} impersonating Safari 18.2 on macOS (WebKit 605.1.15). */
|
|
124
|
-
export const safari182 = safariProfile(
|
|
91
|
+
export const safari182 = safariProfile("safari182", "18.2", "605.1.15");
|
|
125
92
|
/** Alias for the most recent Safari profile ({@link safari182}). */
|
|
126
93
|
export const safariLatest = safari182;
|
|
127
94
|
/**
|
|
@@ -129,15 +96,15 @@ export const safariLatest = safari182;
|
|
|
129
96
|
* profile name (e.g. `"safari182"`) and the alias `"safari_latest"`.
|
|
130
97
|
*/
|
|
131
98
|
export const safariProfiles = new Map([
|
|
132
|
-
[
|
|
133
|
-
[
|
|
134
|
-
[
|
|
135
|
-
[
|
|
136
|
-
[
|
|
137
|
-
[
|
|
138
|
-
[
|
|
139
|
-
[
|
|
140
|
-
[
|
|
141
|
-
[
|
|
99
|
+
["safari153", safari153],
|
|
100
|
+
["safari155", safari155],
|
|
101
|
+
["safari160", safari160],
|
|
102
|
+
["safari165", safari165],
|
|
103
|
+
["safari170", safari170],
|
|
104
|
+
["safari174", safari174],
|
|
105
|
+
["safari175", safari175],
|
|
106
|
+
["safari180", safari180],
|
|
107
|
+
["safari182", safari182],
|
|
108
|
+
["safari_latest", safari182],
|
|
142
109
|
]);
|
|
143
110
|
//# sourceMappingURL=safari.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safari.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/safari.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"safari.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/safari.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BrowserProfile } from
|
|
1
|
+
import type { BrowserProfile } from "../types.js";
|
|
2
2
|
/** {@link BrowserProfile} impersonating Tor Browser 13.3 (based on Firefox 128). */
|
|
3
3
|
export declare const tor133: BrowserProfile;
|
|
4
4
|
/** {@link BrowserProfile} impersonating Tor Browser 14.0 (based on Firefox 128). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tor.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/tor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tor.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/tor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAyD,MAAM,aAAa,CAAC;AAwFzG,oFAAoF;AACpF,eAAO,MAAM,MAAM,gBAAgC,CAAC;AACpD,oFAAoF;AACpF,eAAO,MAAM,MAAM,gBAAgC,CAAC;AACpD,oFAAoF;AACpF,eAAO,MAAM,MAAM,gBAAgC,CAAC;AAEpD,sEAAsE;AACtE,eAAO,MAAM,SAAS,gBAAS,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAK1D,CAAC"}
|
|
@@ -1,41 +1,8 @@
|
|
|
1
|
-
import { CipherSuite, ExtensionType, NamedGroup, SignatureScheme, ECPointFormat, PskKeyExchangeMode, ProtocolVersion
|
|
2
|
-
import * as ext from
|
|
3
|
-
const TOR_CIPHER_SUITES = [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
CipherSuite.TLS_AES_256_GCM_SHA384,
|
|
7
|
-
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
|
|
8
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
|
|
9
|
-
CipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
|
|
10
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
|
|
11
|
-
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
|
|
12
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
|
|
13
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
|
|
14
|
-
CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
|
|
15
|
-
CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256,
|
|
16
|
-
CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384,
|
|
17
|
-
CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA,
|
|
18
|
-
CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA,
|
|
19
|
-
];
|
|
20
|
-
const TOR_GROUPS = [
|
|
21
|
-
NamedGroup.X25519,
|
|
22
|
-
NamedGroup.SECP256R1,
|
|
23
|
-
NamedGroup.SECP384R1,
|
|
24
|
-
NamedGroup.SECP521R1,
|
|
25
|
-
NamedGroup.FFDHE2048,
|
|
26
|
-
NamedGroup.FFDHE3072,
|
|
27
|
-
];
|
|
28
|
-
const TOR_SIGALGS = [
|
|
29
|
-
SignatureScheme.ECDSA_SECP256R1_SHA256,
|
|
30
|
-
SignatureScheme.ECDSA_SECP384R1_SHA384,
|
|
31
|
-
SignatureScheme.ECDSA_SECP521R1_SHA512,
|
|
32
|
-
SignatureScheme.RSA_PSS_RSAE_SHA256,
|
|
33
|
-
SignatureScheme.RSA_PSS_RSAE_SHA384,
|
|
34
|
-
SignatureScheme.RSA_PSS_RSAE_SHA512,
|
|
35
|
-
SignatureScheme.RSA_PKCS1_SHA256,
|
|
36
|
-
SignatureScheme.RSA_PKCS1_SHA384,
|
|
37
|
-
SignatureScheme.RSA_PKCS1_SHA512,
|
|
38
|
-
];
|
|
1
|
+
import { CipherSuite, ExtensionType, NamedGroup, SignatureScheme, ECPointFormat, PskKeyExchangeMode, ProtocolVersion } from "../../tls/constants.js";
|
|
2
|
+
import * as ext from "../extensions.js";
|
|
3
|
+
const TOR_CIPHER_SUITES = [CipherSuite.TLS_AES_128_GCM_SHA256, CipherSuite.TLS_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_AES_256_GCM_SHA384, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA];
|
|
4
|
+
const TOR_GROUPS = [NamedGroup.X25519, NamedGroup.SECP256R1, NamedGroup.SECP384R1, NamedGroup.SECP521R1, NamedGroup.FFDHE2048, NamedGroup.FFDHE3072];
|
|
5
|
+
const TOR_SIGALGS = [SignatureScheme.ECDSA_SECP256R1_SHA256, SignatureScheme.ECDSA_SECP384R1_SHA384, SignatureScheme.ECDSA_SECP521R1_SHA512, SignatureScheme.RSA_PSS_RSAE_SHA256, SignatureScheme.RSA_PSS_RSAE_SHA384, SignatureScheme.RSA_PSS_RSAE_SHA512, SignatureScheme.RSA_PKCS1_SHA256, SignatureScheme.RSA_PKCS1_SHA384, SignatureScheme.RSA_PKCS1_SHA512];
|
|
39
6
|
function torExtensions() {
|
|
40
7
|
return [
|
|
41
8
|
{ type: ExtensionType.SERVER_NAME, data: ext.sniData },
|
|
@@ -44,7 +11,7 @@ function torExtensions() {
|
|
|
44
11
|
{ type: ExtensionType.SUPPORTED_GROUPS, data: () => ext.supportedGroupsData(TOR_GROUPS) },
|
|
45
12
|
{ type: ExtensionType.EC_POINT_FORMATS, data: () => ext.ecPointFormatsData([ECPointFormat.UNCOMPRESSED]) },
|
|
46
13
|
{ type: ExtensionType.SESSION_TICKET, data: () => ext.sessionTicketData() },
|
|
47
|
-
{ type: ExtensionType.APPLICATION_LAYER_PROTOCOL_NEGOTIATION, data: () => ext.alpnData([
|
|
14
|
+
{ type: ExtensionType.APPLICATION_LAYER_PROTOCOL_NEGOTIATION, data: () => ext.alpnData(["h2", "http/1.1"]) },
|
|
48
15
|
{ type: ExtensionType.STATUS_REQUEST, data: () => ext.statusRequestData() },
|
|
49
16
|
{ type: ExtensionType.KEY_SHARE, data: () => ext.keySharePlaceholder([NamedGroup.X25519, NamedGroup.SECP256R1]) },
|
|
50
17
|
{ type: ExtensionType.SUPPORTED_VERSIONS, data: () => ext.supportedVersionsData([ProtocolVersion.TLS_1_3, ProtocolVersion.TLS_1_2]) },
|
|
@@ -61,7 +28,7 @@ const TOR_H2 = {
|
|
|
61
28
|
{ id: 5, value: 16384 },
|
|
62
29
|
],
|
|
63
30
|
windowUpdate: 12517377,
|
|
64
|
-
pseudoHeaderOrder: [
|
|
31
|
+
pseudoHeaderOrder: [":method", ":path", ":authority", ":scheme"],
|
|
65
32
|
priorityFrames: [],
|
|
66
33
|
};
|
|
67
34
|
function torHeaders(ffVersion) {
|
|
@@ -69,14 +36,14 @@ function torHeaders(ffVersion) {
|
|
|
69
36
|
return {
|
|
70
37
|
userAgent: ua,
|
|
71
38
|
headers: [
|
|
72
|
-
[
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
76
|
-
[
|
|
77
|
-
[
|
|
78
|
-
[
|
|
79
|
-
[
|
|
39
|
+
["user-agent", ua],
|
|
40
|
+
["accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"],
|
|
41
|
+
["accept-language", "en-US,en;q=0.5"],
|
|
42
|
+
["accept-encoding", "gzip, deflate, br"],
|
|
43
|
+
["sec-fetch-dest", "document"],
|
|
44
|
+
["sec-fetch-mode", "navigate"],
|
|
45
|
+
["sec-fetch-site", "none"],
|
|
46
|
+
["sec-fetch-user", "?1"],
|
|
80
47
|
],
|
|
81
48
|
};
|
|
82
49
|
}
|
|
@@ -89,7 +56,7 @@ function torTLS() {
|
|
|
89
56
|
extensions: torExtensions(),
|
|
90
57
|
supportedGroups: TOR_GROUPS,
|
|
91
58
|
signatureAlgorithms: TOR_SIGALGS,
|
|
92
|
-
alpnProtocols: [
|
|
59
|
+
alpnProtocols: ["h2", "http/1.1"],
|
|
93
60
|
grease: false,
|
|
94
61
|
randomSessionId: true,
|
|
95
62
|
keyShareGroups: [NamedGroup.X25519, NamedGroup.SECP256R1],
|
|
@@ -102,7 +69,7 @@ function torTLS() {
|
|
|
102
69
|
function torProfile(name, ffVersion) {
|
|
103
70
|
return {
|
|
104
71
|
name,
|
|
105
|
-
browser:
|
|
72
|
+
browser: "tor",
|
|
106
73
|
version: ffVersion,
|
|
107
74
|
tls: torTLS(),
|
|
108
75
|
h2: TOR_H2,
|
|
@@ -110,11 +77,11 @@ function torProfile(name, ffVersion) {
|
|
|
110
77
|
};
|
|
111
78
|
}
|
|
112
79
|
/** {@link BrowserProfile} impersonating Tor Browser 13.3 (based on Firefox 128). */
|
|
113
|
-
export const tor133 = torProfile(
|
|
80
|
+
export const tor133 = torProfile("tor133", "128.0");
|
|
114
81
|
/** {@link BrowserProfile} impersonating Tor Browser 14.0 (based on Firefox 128). */
|
|
115
|
-
export const tor140 = torProfile(
|
|
82
|
+
export const tor140 = torProfile("tor140", "128.0");
|
|
116
83
|
/** {@link BrowserProfile} impersonating Tor Browser 14.5 (based on Firefox 128). */
|
|
117
|
-
export const tor145 = torProfile(
|
|
84
|
+
export const tor145 = torProfile("tor145", "128.0");
|
|
118
85
|
/** Alias for the most recent Tor Browser profile ({@link tor145}). */
|
|
119
86
|
export const torLatest = tor145;
|
|
120
87
|
/**
|
|
@@ -122,9 +89,9 @@ export const torLatest = tor145;
|
|
|
122
89
|
* by profile name (e.g. `"tor145"`) and the alias `"tor_latest"`.
|
|
123
90
|
*/
|
|
124
91
|
export const torProfiles = new Map([
|
|
125
|
-
[
|
|
126
|
-
[
|
|
127
|
-
[
|
|
128
|
-
[
|
|
92
|
+
["tor133", tor133],
|
|
93
|
+
["tor140", tor140],
|
|
94
|
+
["tor145", tor145],
|
|
95
|
+
["tor_latest", tor145],
|
|
129
96
|
]);
|
|
130
97
|
//# sourceMappingURL=tor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tor.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/tor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tor.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/tor.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,7 +118,7 @@ export interface HeaderProfile {
|
|
|
118
118
|
*/
|
|
119
119
|
export interface BrowserProfile {
|
|
120
120
|
name: string;
|
|
121
|
-
browser:
|
|
121
|
+
browser: "chrome" | "firefox" | "safari" | "edge" | "tor";
|
|
122
122
|
version: string;
|
|
123
123
|
tls: TLSProfile;
|
|
124
124
|
h2: H2Profile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fingerprints/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fingerprints/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,EAAE,EAAE,SAAS,CAAC;IACd,OAAO,EAAE,aAAa,CAAC;CACxB"}
|
package/dist/http/h1/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Duplex } from
|
|
2
|
-
import type { NLcURLRequest } from
|
|
3
|
-
import { NLcURLResponse } from
|
|
4
|
-
import type { RequestTimings } from
|
|
1
|
+
import type { Duplex } from "node:stream";
|
|
2
|
+
import type { NLcURLRequest } from "../../core/request.js";
|
|
3
|
+
import { NLcURLResponse } from "../../core/response.js";
|
|
4
|
+
import type { RequestTimings } from "../../core/request.js";
|
|
5
5
|
/**
|
|
6
6
|
* Options shared across all HTTP/1.1 client functions.
|
|
7
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/http/h1/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/http/h1/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,eAAoB,EAAE,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAmDzK;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,eAAoB,EAAE,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAsDlL"}
|
package/dist/http/h1/client.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { PassThrough } from
|
|
2
|
-
import { NLcURLResponse } from
|
|
3
|
-
import { HTTPError, TimeoutError } from
|
|
4
|
-
import { encodeRequest } from
|
|
5
|
-
import { HttpResponseParser } from
|
|
6
|
-
import { decompressBody, createDecompressStream } from
|
|
1
|
+
import { PassThrough } from "node:stream";
|
|
2
|
+
import { NLcURLResponse } from "../../core/response.js";
|
|
3
|
+
import { HTTPError, TimeoutError } from "../../core/errors.js";
|
|
4
|
+
import { encodeRequest } from "./encoder.js";
|
|
5
|
+
import { HttpResponseParser } from "./parser.js";
|
|
6
|
+
import { decompressBody, createDecompressStream } from "../../utils/encoding.js";
|
|
7
7
|
/**
|
|
8
8
|
* Sends an HTTP/1.1 request over the given duplex stream and returns the
|
|
9
9
|
* fully buffered response. Blocks until all response body bytes are received.
|
|
@@ -27,10 +27,10 @@ export async function sendH1Request(stream, request, options = {}, timings = {})
|
|
|
27
27
|
resolve();
|
|
28
28
|
});
|
|
29
29
|
});
|
|
30
|
-
const parser = new HttpResponseParser(request.method ??
|
|
30
|
+
const parser = new HttpResponseParser(request.method ?? "GET");
|
|
31
31
|
const parsed = await readResponse(stream, parser, request);
|
|
32
32
|
timings.firstByte = Date.now() - sendStart;
|
|
33
|
-
const encoding = parsed.headers.get(
|
|
33
|
+
const encoding = parsed.headers.get("content-encoding");
|
|
34
34
|
let body;
|
|
35
35
|
if (encoding) {
|
|
36
36
|
body = await decompressBody(parsed.body, encoding);
|
|
@@ -60,7 +60,7 @@ export async function sendH1Request(stream, request, options = {}, timings = {})
|
|
|
60
60
|
},
|
|
61
61
|
request: {
|
|
62
62
|
url: request.url,
|
|
63
|
-
method: request.method ??
|
|
63
|
+
method: request.method ?? "GET",
|
|
64
64
|
headers: request.headers ?? {},
|
|
65
65
|
},
|
|
66
66
|
});
|
|
@@ -90,7 +90,7 @@ export async function sendH1StreamingRequest(stream, request, options = {}, timi
|
|
|
90
90
|
resolve();
|
|
91
91
|
});
|
|
92
92
|
});
|
|
93
|
-
const parser = new HttpResponseParser(request.method ??
|
|
93
|
+
const parser = new HttpResponseParser(request.method ?? "GET");
|
|
94
94
|
const bodyStream = new PassThrough();
|
|
95
95
|
parser.onBodyChunk = (chunk) => {
|
|
96
96
|
bodyStream.write(chunk);
|
|
@@ -101,7 +101,7 @@ export async function sendH1StreamingRequest(stream, request, options = {}, timi
|
|
|
101
101
|
for (const [k, v] of headersMeta.headers) {
|
|
102
102
|
responseHeaders[k] = v;
|
|
103
103
|
}
|
|
104
|
-
const encoding = headersMeta.headers.get(
|
|
104
|
+
const encoding = headersMeta.headers.get("content-encoding");
|
|
105
105
|
const decompressor = createDecompressStream(encoding);
|
|
106
106
|
const outputStream = decompressor ? bodyStream.pipe(decompressor) : bodyStream;
|
|
107
107
|
return new NLcURLResponse({
|
|
@@ -123,7 +123,7 @@ export async function sendH1StreamingRequest(stream, request, options = {}, timi
|
|
|
123
123
|
},
|
|
124
124
|
request: {
|
|
125
125
|
url: request.url,
|
|
126
|
-
method: request.method ??
|
|
126
|
+
method: request.method ?? "GET",
|
|
127
127
|
headers: request.headers ?? {},
|
|
128
128
|
},
|
|
129
129
|
});
|
|
@@ -133,13 +133,13 @@ function readResponse(stream, parser, request) {
|
|
|
133
133
|
let settled = false;
|
|
134
134
|
let timer;
|
|
135
135
|
const timeout = request.timeout;
|
|
136
|
-
const timeoutMs = typeof timeout ===
|
|
136
|
+
const timeoutMs = typeof timeout === "number" ? timeout : (timeout?.total ?? timeout?.response ?? 0);
|
|
137
137
|
if (timeoutMs > 0) {
|
|
138
138
|
timer = setTimeout(() => {
|
|
139
139
|
if (!settled) {
|
|
140
140
|
settled = true;
|
|
141
141
|
cleanup();
|
|
142
|
-
reject(new TimeoutError(
|
|
142
|
+
reject(new TimeoutError("Response timed out", "response"));
|
|
143
143
|
}
|
|
144
144
|
}, timeoutMs);
|
|
145
145
|
}
|
|
@@ -168,7 +168,7 @@ function readResponse(stream, parser, request) {
|
|
|
168
168
|
catch {
|
|
169
169
|
settled = true;
|
|
170
170
|
cleanup();
|
|
171
|
-
reject(new HTTPError(
|
|
171
|
+
reject(new HTTPError("Connection closed before response complete", 0));
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
};
|
|
@@ -182,13 +182,13 @@ function readResponse(stream, parser, request) {
|
|
|
182
182
|
const cleanup = () => {
|
|
183
183
|
if (timer)
|
|
184
184
|
clearTimeout(timer);
|
|
185
|
-
stream.removeListener(
|
|
186
|
-
stream.removeListener(
|
|
187
|
-
stream.removeListener(
|
|
185
|
+
stream.removeListener("data", onData);
|
|
186
|
+
stream.removeListener("end", onEnd);
|
|
187
|
+
stream.removeListener("error", onError);
|
|
188
188
|
};
|
|
189
|
-
stream.on(
|
|
190
|
-
stream.once(
|
|
191
|
-
stream.once(
|
|
189
|
+
stream.on("data", onData);
|
|
190
|
+
stream.once("end", onEnd);
|
|
191
|
+
stream.once("error", onError);
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
194
|
function readStreamingHeaders(stream, parser, request, bodyStream) {
|
|
@@ -197,14 +197,14 @@ function readStreamingHeaders(stream, parser, request, bodyStream) {
|
|
|
197
197
|
let headersResolved = false;
|
|
198
198
|
let timer;
|
|
199
199
|
const timeout = request.timeout;
|
|
200
|
-
const timeoutMs = typeof timeout ===
|
|
200
|
+
const timeoutMs = typeof timeout === "number" ? timeout : (timeout?.total ?? timeout?.response ?? 0);
|
|
201
201
|
if (timeoutMs > 0) {
|
|
202
202
|
timer = setTimeout(() => {
|
|
203
203
|
if (!settled) {
|
|
204
204
|
settled = true;
|
|
205
205
|
cleanup();
|
|
206
|
-
bodyStream.destroy(new TimeoutError(
|
|
207
|
-
reject(new TimeoutError(
|
|
206
|
+
bodyStream.destroy(new TimeoutError("Response timed out", "response"));
|
|
207
|
+
reject(new TimeoutError("Response timed out", "response"));
|
|
208
208
|
}
|
|
209
209
|
}, timeoutMs);
|
|
210
210
|
}
|
|
@@ -239,7 +239,7 @@ function readStreamingHeaders(stream, parser, request, bodyStream) {
|
|
|
239
239
|
resolve(parser.getHeadersResult());
|
|
240
240
|
}
|
|
241
241
|
catch {
|
|
242
|
-
reject(new HTTPError(
|
|
242
|
+
reject(new HTTPError("Connection closed before headers complete", 0));
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
bodyStream.end();
|
|
@@ -257,13 +257,13 @@ function readStreamingHeaders(stream, parser, request, bodyStream) {
|
|
|
257
257
|
const cleanup = () => {
|
|
258
258
|
if (timer)
|
|
259
259
|
clearTimeout(timer);
|
|
260
|
-
stream.removeListener(
|
|
261
|
-
stream.removeListener(
|
|
262
|
-
stream.removeListener(
|
|
260
|
+
stream.removeListener("data", onData);
|
|
261
|
+
stream.removeListener("end", onEnd);
|
|
262
|
+
stream.removeListener("error", onError);
|
|
263
263
|
};
|
|
264
|
-
stream.on(
|
|
265
|
-
stream.once(
|
|
266
|
-
stream.once(
|
|
264
|
+
stream.on("data", onData);
|
|
265
|
+
stream.once("end", onEnd);
|
|
266
|
+
stream.once("error", onError);
|
|
267
267
|
});
|
|
268
268
|
}
|
|
269
269
|
//# sourceMappingURL=client.js.map
|