nlcurl 0.6.0 → 0.7.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 (151) hide show
  1. package/dist/cache/store.d.ts +89 -0
  2. package/dist/cache/store.d.ts.map +1 -0
  3. package/dist/cache/store.js +402 -0
  4. package/dist/cache/store.js.map +1 -0
  5. package/dist/cache/types.d.ts +101 -0
  6. package/dist/cache/types.d.ts.map +1 -0
  7. package/dist/cache/types.js +2 -0
  8. package/dist/cache/types.js.map +1 -0
  9. package/dist/cookies/jar.d.ts +11 -0
  10. package/dist/cookies/jar.d.ts.map +1 -1
  11. package/dist/cookies/jar.js +50 -4
  12. package/dist/cookies/jar.js.map +1 -1
  13. package/dist/cookies/parser.d.ts +2 -0
  14. package/dist/cookies/parser.d.ts.map +1 -1
  15. package/dist/cookies/parser.js +14 -0
  16. package/dist/cookies/parser.js.map +1 -1
  17. package/dist/cookies/psl-data.d.ts +1 -1
  18. package/dist/cookies/psl-data.js +1 -1
  19. package/dist/core/client.js +3 -0
  20. package/dist/core/client.js.map +1 -1
  21. package/dist/core/request.d.ts +68 -2
  22. package/dist/core/request.d.ts.map +1 -1
  23. package/dist/core/response.d.ts +22 -0
  24. package/dist/core/response.d.ts.map +1 -1
  25. package/dist/core/response.js +32 -0
  26. package/dist/core/response.js.map +1 -1
  27. package/dist/core/session.d.ts +23 -0
  28. package/dist/core/session.d.ts.map +1 -1
  29. package/dist/core/session.js +101 -3
  30. package/dist/core/session.js.map +1 -1
  31. package/dist/core/validation.d.ts +2 -1
  32. package/dist/core/validation.d.ts.map +1 -1
  33. package/dist/core/validation.js +5 -4
  34. package/dist/core/validation.js.map +1 -1
  35. package/dist/dns/codec.d.ts +37 -0
  36. package/dist/dns/codec.d.ts.map +1 -0
  37. package/dist/dns/codec.js +254 -0
  38. package/dist/dns/codec.js.map +1 -0
  39. package/dist/dns/doh-resolver.d.ts +52 -0
  40. package/dist/dns/doh-resolver.d.ts.map +1 -0
  41. package/dist/dns/doh-resolver.js +192 -0
  42. package/dist/dns/doh-resolver.js.map +1 -0
  43. package/dist/dns/https-rr.d.ts +51 -0
  44. package/dist/dns/https-rr.d.ts.map +1 -0
  45. package/dist/dns/https-rr.js +127 -0
  46. package/dist/dns/https-rr.js.map +1 -0
  47. package/dist/dns/types.d.ts +110 -0
  48. package/dist/dns/types.d.ts.map +1 -0
  49. package/dist/dns/types.js +34 -0
  50. package/dist/dns/types.js.map +1 -0
  51. package/dist/hsts/store.d.ts +41 -0
  52. package/dist/hsts/store.d.ts.map +1 -0
  53. package/dist/hsts/store.js +171 -0
  54. package/dist/hsts/store.js.map +1 -0
  55. package/dist/hsts/types.d.ts +28 -0
  56. package/dist/hsts/types.d.ts.map +1 -0
  57. package/dist/hsts/types.js +2 -0
  58. package/dist/hsts/types.js.map +1 -0
  59. package/dist/http/alt-svc.d.ts +85 -0
  60. package/dist/http/alt-svc.d.ts.map +1 -0
  61. package/dist/http/alt-svc.js +220 -0
  62. package/dist/http/alt-svc.js.map +1 -0
  63. package/dist/http/h1/client.d.ts.map +1 -1
  64. package/dist/http/h1/client.js +16 -0
  65. package/dist/http/h1/client.js.map +1 -1
  66. package/dist/http/h3/detection.d.ts +17 -0
  67. package/dist/http/h3/detection.d.ts.map +1 -0
  68. package/dist/http/h3/detection.js +59 -0
  69. package/dist/http/h3/detection.js.map +1 -0
  70. package/dist/http/negotiator.d.ts +24 -1
  71. package/dist/http/negotiator.d.ts.map +1 -1
  72. package/dist/http/negotiator.js +88 -18
  73. package/dist/http/negotiator.js.map +1 -1
  74. package/dist/http/pool.d.ts +2 -2
  75. package/dist/http/pool.d.ts.map +1 -1
  76. package/dist/http/pool.js.map +1 -1
  77. package/dist/index.d.ts +16 -1
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +12 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/middleware/rate-limiter.d.ts.map +1 -1
  82. package/dist/middleware/rate-limiter.js +4 -0
  83. package/dist/middleware/rate-limiter.js.map +1 -1
  84. package/dist/proxy/env-proxy.d.ts +21 -0
  85. package/dist/proxy/env-proxy.d.ts.map +1 -0
  86. package/dist/proxy/env-proxy.js +74 -0
  87. package/dist/proxy/env-proxy.js.map +1 -0
  88. package/dist/proxy/http-proxy.d.ts +2 -0
  89. package/dist/proxy/http-proxy.d.ts.map +1 -1
  90. package/dist/proxy/http-proxy.js +19 -6
  91. package/dist/proxy/http-proxy.js.map +1 -1
  92. package/dist/proxy/socks.js +1 -1
  93. package/dist/proxy/socks.js.map +1 -1
  94. package/dist/sse/parser.d.ts +70 -0
  95. package/dist/sse/parser.d.ts.map +1 -0
  96. package/dist/sse/parser.js +153 -0
  97. package/dist/sse/parser.js.map +1 -0
  98. package/dist/tls/ech.d.ts +147 -0
  99. package/dist/tls/ech.d.ts.map +1 -0
  100. package/dist/tls/ech.js +401 -0
  101. package/dist/tls/ech.js.map +1 -0
  102. package/dist/tls/node-engine.d.ts +9 -1
  103. package/dist/tls/node-engine.d.ts.map +1 -1
  104. package/dist/tls/node-engine.js +39 -1
  105. package/dist/tls/node-engine.js.map +1 -1
  106. package/dist/tls/pin-verification.d.ts +9 -0
  107. package/dist/tls/pin-verification.d.ts.map +1 -0
  108. package/dist/tls/pin-verification.js +34 -0
  109. package/dist/tls/pin-verification.js.map +1 -0
  110. package/dist/tls/session-cache.d.ts +70 -0
  111. package/dist/tls/session-cache.d.ts.map +1 -0
  112. package/dist/tls/session-cache.js +80 -0
  113. package/dist/tls/session-cache.js.map +1 -0
  114. package/dist/tls/stealth/client-hello.d.ts +21 -0
  115. package/dist/tls/stealth/client-hello.d.ts.map +1 -1
  116. package/dist/tls/stealth/client-hello.js +116 -0
  117. package/dist/tls/stealth/client-hello.js.map +1 -1
  118. package/dist/tls/stealth/engine.d.ts.map +1 -1
  119. package/dist/tls/stealth/engine.js +152 -30
  120. package/dist/tls/stealth/engine.js.map +1 -1
  121. package/dist/tls/stealth/handshake.d.ts +2 -1
  122. package/dist/tls/stealth/handshake.d.ts.map +1 -1
  123. package/dist/tls/stealth/handshake.js +118 -5
  124. package/dist/tls/stealth/handshake.js.map +1 -1
  125. package/dist/tls/stealth/tls12-handshake.d.ts +14 -0
  126. package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -0
  127. package/dist/tls/stealth/tls12-handshake.js +462 -0
  128. package/dist/tls/stealth/tls12-handshake.js.map +1 -0
  129. package/dist/tls/types.d.ts +16 -0
  130. package/dist/tls/types.d.ts.map +1 -1
  131. package/dist/utils/encoding.d.ts +8 -6
  132. package/dist/utils/encoding.d.ts.map +1 -1
  133. package/dist/utils/encoding.js +92 -24
  134. package/dist/utils/encoding.js.map +1 -1
  135. package/dist/utils/happy-eyeballs.d.ts +3 -0
  136. package/dist/utils/happy-eyeballs.d.ts.map +1 -1
  137. package/dist/utils/happy-eyeballs.js +42 -2
  138. package/dist/utils/happy-eyeballs.js.map +1 -1
  139. package/dist/ws/client.d.ts +3 -0
  140. package/dist/ws/client.d.ts.map +1 -1
  141. package/dist/ws/client.js +63 -7
  142. package/dist/ws/client.js.map +1 -1
  143. package/dist/ws/frame.d.ts +4 -2
  144. package/dist/ws/frame.d.ts.map +1 -1
  145. package/dist/ws/frame.js +8 -5
  146. package/dist/ws/frame.js.map +1 -1
  147. package/dist/ws/permessage-deflate.d.ts +58 -0
  148. package/dist/ws/permessage-deflate.d.ts.map +1 -0
  149. package/dist/ws/permessage-deflate.js +148 -0
  150. package/dist/ws/permessage-deflate.js.map +1 -0
  151. package/package.json +2 -2
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Negotiated permessage-deflate parameters.
3
+ *
4
+ * @typedef {Object} DeflateParams
5
+ * @property {boolean} serverNoContextTakeover - Server resets deflate context per-message.
6
+ * @property {boolean} clientNoContextTakeover - Client resets deflate context per-message.
7
+ * @property {number} serverMaxWindowBits - Server max window bits (8–15).
8
+ * @property {number} clientMaxWindowBits - Client max window bits (8–15).
9
+ */
10
+ export interface DeflateParams {
11
+ serverNoContextTakeover: boolean;
12
+ clientNoContextTakeover: boolean;
13
+ serverMaxWindowBits: number;
14
+ clientMaxWindowBits: number;
15
+ }
16
+ /**
17
+ * Builds the `Sec-WebSocket-Extensions` header value for the client offer.
18
+ *
19
+ * @returns {string} Extension offer string.
20
+ */
21
+ export declare function buildDeflateOffer(): string;
22
+ /**
23
+ * Parses the server's `Sec-WebSocket-Extensions` response header to extract
24
+ * the negotiated `permessage-deflate` parameters. Returns `null` when the
25
+ * extension was not accepted by the server.
26
+ *
27
+ * @param {string} header - The `Sec-WebSocket-Extensions` response header value.
28
+ * @returns {DeflateParams | null} Negotiated parameters, or `null`.
29
+ */
30
+ export declare function parseDeflateResponse(header: string): DeflateParams | null;
31
+ /**
32
+ * Manages per-message DEFLATE compression and decompression for a single
33
+ * WebSocket connection. Maintains stateful zlib contexts unless
34
+ * `no_context_takeover` was negotiated.
35
+ */
36
+ export declare class PerMessageDeflate {
37
+ private readonly params;
38
+ private inflateContext;
39
+ private deflateContext;
40
+ constructor(params: DeflateParams);
41
+ /**
42
+ * Decompresses a received message payload.
43
+ *
44
+ * @param {Buffer} data - Compressed payload (without the DEFLATE flush tail).
45
+ * @returns {Promise<Buffer>} Decompressed message data.
46
+ */
47
+ decompress(data: Buffer): Promise<Buffer>;
48
+ /**
49
+ * Compresses a message payload for sending.
50
+ *
51
+ * @param {Buffer} data - Uncompressed message payload.
52
+ * @returns {Promise<Buffer>} Compressed data (with DEFLATE flush tail stripped).
53
+ */
54
+ compress(data: Buffer): Promise<Buffer>;
55
+ /** Releases zlib resources. */
56
+ close(): void;
57
+ }
58
+ //# sourceMappingURL=permessage-deflate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permessage-deflate.d.ts","sourceRoot":"","sources":["../../src/ws/permessage-deflate.ts"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB,EAAE,OAAO,CAAC;IACjC,uBAAuB,EAAE,OAAO,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AASD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA8BzE;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,cAAc,CAA6B;gBAEvC,MAAM,EAAE,aAAa;IAIjC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BzC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCvC,+BAA+B;IAC/B,KAAK,IAAI,IAAI;CAMd"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * WebSocket `permessage-deflate` extension (RFC 7692).
3
+ *
4
+ * Provides per-message DEFLATE compression for WebSocket frames. Negotiated
5
+ * during the HTTP Upgrade handshake via the `Sec-WebSocket-Extensions` header.
6
+ */
7
+ import * as zlib from "node:zlib";
8
+ /** The 4-byte DEFLATE flush trailer appended by RFC 7692 §7.2.1. */
9
+ const DEFLATE_TAIL = Buffer.from([0x00, 0x00, 0xff, 0xff]);
10
+ const DEFAULT_PARAMS = {
11
+ serverNoContextTakeover: false,
12
+ clientNoContextTakeover: false,
13
+ serverMaxWindowBits: 15,
14
+ clientMaxWindowBits: 15,
15
+ };
16
+ /**
17
+ * Builds the `Sec-WebSocket-Extensions` header value for the client offer.
18
+ *
19
+ * @returns {string} Extension offer string.
20
+ */
21
+ export function buildDeflateOffer() {
22
+ return "permessage-deflate; client_max_window_bits";
23
+ }
24
+ /**
25
+ * Parses the server's `Sec-WebSocket-Extensions` response header to extract
26
+ * the negotiated `permessage-deflate` parameters. Returns `null` when the
27
+ * extension was not accepted by the server.
28
+ *
29
+ * @param {string} header - The `Sec-WebSocket-Extensions` response header value.
30
+ * @returns {DeflateParams | null} Negotiated parameters, or `null`.
31
+ */
32
+ export function parseDeflateResponse(header) {
33
+ const extensions = header.split(",").map((s) => s.trim());
34
+ for (const ext of extensions) {
35
+ const parts = ext.split(";").map((s) => s.trim());
36
+ if (parts[0] !== "permessage-deflate")
37
+ continue;
38
+ const params = { ...DEFAULT_PARAMS };
39
+ for (let i = 1; i < parts.length; i++) {
40
+ const part = parts[i];
41
+ const [key, val] = part.split("=").map((s) => s.trim());
42
+ switch (key) {
43
+ case "server_no_context_takeover":
44
+ params.serverNoContextTakeover = true;
45
+ break;
46
+ case "client_no_context_takeover":
47
+ params.clientNoContextTakeover = true;
48
+ break;
49
+ case "server_max_window_bits":
50
+ if (val)
51
+ params.serverMaxWindowBits = parseInt(val, 10);
52
+ break;
53
+ case "client_max_window_bits":
54
+ if (val)
55
+ params.clientMaxWindowBits = parseInt(val, 10);
56
+ break;
57
+ }
58
+ }
59
+ return params;
60
+ }
61
+ return null;
62
+ }
63
+ /**
64
+ * Manages per-message DEFLATE compression and decompression for a single
65
+ * WebSocket connection. Maintains stateful zlib contexts unless
66
+ * `no_context_takeover` was negotiated.
67
+ */
68
+ export class PerMessageDeflate {
69
+ params;
70
+ inflateContext = null;
71
+ deflateContext = null;
72
+ constructor(params) {
73
+ this.params = params;
74
+ }
75
+ /**
76
+ * Decompresses a received message payload.
77
+ *
78
+ * @param {Buffer} data - Compressed payload (without the DEFLATE flush tail).
79
+ * @returns {Promise<Buffer>} Decompressed message data.
80
+ */
81
+ decompress(data) {
82
+ return new Promise((resolve, reject) => {
83
+ const input = Buffer.concat([data, DEFLATE_TAIL]);
84
+ if (!this.inflateContext || this.params.serverNoContextTakeover) {
85
+ this.inflateContext?.close();
86
+ this.inflateContext = zlib.createInflateRaw({
87
+ windowBits: this.params.serverMaxWindowBits,
88
+ });
89
+ }
90
+ const chunks = [];
91
+ const inflate = this.inflateContext;
92
+ inflate.on("data", (chunk) => chunks.push(chunk));
93
+ inflate.once("error", (err) => {
94
+ inflate.removeAllListeners();
95
+ reject(err);
96
+ });
97
+ inflate.write(input, () => {
98
+ inflate.flush(() => {
99
+ inflate.removeAllListeners("data");
100
+ inflate.removeAllListeners("error");
101
+ resolve(Buffer.concat(chunks));
102
+ });
103
+ });
104
+ });
105
+ }
106
+ /**
107
+ * Compresses a message payload for sending.
108
+ *
109
+ * @param {Buffer} data - Uncompressed message payload.
110
+ * @returns {Promise<Buffer>} Compressed data (with DEFLATE flush tail stripped).
111
+ */
112
+ compress(data) {
113
+ return new Promise((resolve, reject) => {
114
+ if (!this.deflateContext || this.params.clientNoContextTakeover) {
115
+ this.deflateContext?.close();
116
+ this.deflateContext = zlib.createDeflateRaw({
117
+ windowBits: this.params.clientMaxWindowBits,
118
+ });
119
+ }
120
+ const chunks = [];
121
+ const deflate = this.deflateContext;
122
+ deflate.on("data", (chunk) => chunks.push(chunk));
123
+ deflate.once("error", (err) => {
124
+ deflate.removeAllListeners();
125
+ reject(err);
126
+ });
127
+ deflate.write(data, () => {
128
+ deflate.flush(zlib.constants.Z_SYNC_FLUSH, () => {
129
+ deflate.removeAllListeners("data");
130
+ deflate.removeAllListeners("error");
131
+ let result = Buffer.concat(chunks);
132
+ if (result.length >= 4 && result.subarray(result.length - 4).equals(DEFLATE_TAIL)) {
133
+ result = result.subarray(0, result.length - 4);
134
+ }
135
+ resolve(result);
136
+ });
137
+ });
138
+ });
139
+ }
140
+ /** Releases zlib resources. */
141
+ close() {
142
+ this.inflateContext?.close();
143
+ this.deflateContext?.close();
144
+ this.inflateContext = null;
145
+ this.deflateContext = null;
146
+ }
147
+ }
148
+ //# sourceMappingURL=permessage-deflate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permessage-deflate.js","sourceRoot":"","sources":["../../src/ws/permessage-deflate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nlcurl",
3
- "version": "0.6.0",
4
- "updated": "2026.03.07.0914",
3
+ "version": "0.7.0",
4
+ "updated": "2026.03.08.1440",
5
5
  "description": "Next-level HTTP client with native TLS fingerprint impersonation. Pure TypeScript, zero dependencies.",
6
6
  "author": "devAlphaSystem",
7
7
  "license": "MIT",