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
@@ -1,5 +1,6 @@
1
1
  import * as zlib from "node:zlib";
2
2
  import { promisify } from "node:util";
3
+ import { Transform } from "node:stream";
3
4
  const gunzipAsync = promisify(zlib.gunzip);
4
5
  const inflateAsync = promisify(zlib.inflate);
5
6
  const brotliDecompressAsync = promisify(zlib.brotliDecompress);
@@ -12,19 +13,29 @@ const zstdDecompressAsync = typeof _zstdFn === "function" ? promisify(_zstdFn) :
12
13
  */
13
14
  export const supportsZstd = zstdDecompressAsync !== null;
14
15
  /**
15
- * Decompresses a response body buffer using the algorithm indicated by
16
- * `contentEncoding`. Supports `gzip`, `x-gzip`, `deflate`, `br` (Brotli),
17
- * `zstd` (when available), and `identity`. Unrecognized encodings are
18
- * returned as-is.
19
- *
20
- * @param {Buffer} body - Raw compressed body bytes.
21
- * @param {string | undefined} contentEncoding - Value of the `Content-Encoding` header.
22
- * @returns {Promise<Buffer>} Decompressed body bytes.
16
+ * Maximum number of Content-Encoding layers permitted. Prevents
17
+ * decompression bomb attacks that nest many encoding layers to cause
18
+ * exponential memory/CPU usage. Matches undici's limit.
23
19
  */
24
- export async function decompressBody(body, contentEncoding) {
25
- if (!contentEncoding || body.length === 0)
26
- return body;
27
- const encoding = contentEncoding.trim().toLowerCase();
20
+ const MAX_CONTENT_ENCODING_LAYERS = 5;
21
+ /**
22
+ * Parses a Content-Encoding header value into individual encoding tokens,
23
+ * filters out `identity`, and validates the layer count.
24
+ */
25
+ function parseEncodings(contentEncoding) {
26
+ const encodings = contentEncoding
27
+ .split(",")
28
+ .map((s) => s.trim().toLowerCase())
29
+ .filter((s) => s.length > 0 && s !== "identity");
30
+ if (encodings.length > MAX_CONTENT_ENCODING_LAYERS) {
31
+ throw new Error(`Content-Encoding exceeds maximum layer count (${encodings.length} > ${MAX_CONTENT_ENCODING_LAYERS})`);
32
+ }
33
+ return encodings;
34
+ }
35
+ /**
36
+ * Decompresses a single buffer using the specified encoding algorithm.
37
+ */
38
+ async function decompressSingle(body, encoding) {
28
39
  switch (encoding) {
29
40
  case "gzip":
30
41
  case "x-gzip":
@@ -38,24 +49,36 @@ export async function decompressBody(body, contentEncoding) {
38
49
  return zstdDecompressAsync(body);
39
50
  }
40
51
  return body;
41
- case "identity":
42
- return body;
43
52
  default:
44
53
  return body;
45
54
  }
46
55
  }
47
56
  /**
48
- * Creates a Node.js `Transform` stream that decompresses data on-the-fly
49
- * using the algorithm indicated by `contentEncoding`. Returns `null` when
50
- * no transform is needed (unknown or `identity` encoding).
57
+ * Decompresses a response body buffer handling potentially multiple
58
+ * Content-Encoding layers (e.g. `"gzip, br"`). Layers are applied in
59
+ * reverse order per RFC 9110 §8.4. Throws if the number of layers
60
+ * exceeds {@link MAX_CONTENT_ENCODING_LAYERS}.
51
61
  *
62
+ * @param {Buffer} body - Raw compressed body bytes.
52
63
  * @param {string | undefined} contentEncoding - Value of the `Content-Encoding` header.
53
- * @returns {Transform | null} Decompressor stream, or `null` if no decompression is required.
64
+ * @returns {Promise<Buffer>} Decompressed body bytes.
54
65
  */
55
- export function createDecompressStream(contentEncoding) {
56
- if (!contentEncoding)
57
- return null;
58
- const encoding = contentEncoding.trim().toLowerCase();
66
+ export async function decompressBody(body, contentEncoding) {
67
+ if (!contentEncoding || body.length === 0)
68
+ return body;
69
+ const encodings = parseEncodings(contentEncoding);
70
+ if (encodings.length === 0)
71
+ return body;
72
+ let result = body;
73
+ for (let i = encodings.length - 1; i >= 0; i--) {
74
+ result = await decompressSingle(result, encodings[i]);
75
+ }
76
+ return result;
77
+ }
78
+ /**
79
+ * Creates a decompressor Transform for a single encoding algorithm.
80
+ */
81
+ function createSingleDecompressStream(encoding) {
59
82
  switch (encoding) {
60
83
  case "gzip":
61
84
  case "x-gzip":
@@ -71,12 +94,57 @@ export function createDecompressStream(contentEncoding) {
71
94
  }
72
95
  return null;
73
96
  }
74
- case "identity":
75
- return null;
76
97
  default:
77
98
  return null;
78
99
  }
79
100
  }
101
+ /**
102
+ * Creates a Node.js `Transform` stream that decompresses data on-the-fly
103
+ * using the algorithm(s) indicated by `contentEncoding`. Supports multiple
104
+ * comma-separated encodings (e.g. `"gzip, br"`). Returns `null` when no
105
+ * transform is needed. Throws if the number of encoding layers exceeds
106
+ * {@link MAX_CONTENT_ENCODING_LAYERS}.
107
+ *
108
+ * @param {string | undefined} contentEncoding - Value of the `Content-Encoding` header.
109
+ * @returns {Transform | null} Decompressor stream, or `null` if no decompression is required.
110
+ */
111
+ export function createDecompressStream(contentEncoding) {
112
+ if (!contentEncoding)
113
+ return null;
114
+ const encodings = parseEncodings(contentEncoding);
115
+ if (encodings.length === 0)
116
+ return null;
117
+ if (encodings.length === 1) {
118
+ return createSingleDecompressStream(encodings[0]);
119
+ }
120
+ const decompressors = [];
121
+ for (let i = encodings.length - 1; i >= 0; i--) {
122
+ const d = createSingleDecompressStream(encodings[i]);
123
+ if (d)
124
+ decompressors.push(d);
125
+ }
126
+ if (decompressors.length === 0)
127
+ return null;
128
+ if (decompressors.length === 1)
129
+ return decompressors[0];
130
+ for (let i = 0; i < decompressors.length - 1; i++) {
131
+ decompressors[i].pipe(decompressors[i + 1]);
132
+ }
133
+ const first = decompressors[0];
134
+ const last = decompressors[decompressors.length - 1];
135
+ const compound = new Transform({
136
+ transform(chunk, _encoding, callback) {
137
+ first.write(chunk, _encoding, callback);
138
+ },
139
+ flush(callback) {
140
+ first.end();
141
+ last.once("end", () => callback());
142
+ },
143
+ });
144
+ last.on("data", (chunk) => compound.push(chunk));
145
+ last.on("error", (err) => compound.destroy(err));
146
+ return compound;
147
+ }
80
148
  /**
81
149
  * Returns the default `Accept-Encoding` header value supported by this
82
150
  * Node.js runtime. Includes `zstd` when Zstandard is available.
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/utils/encoding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/utils/encoding.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import * as net from "node:net";
2
+ import type { DoHResolver } from "../dns/doh-resolver.js";
2
3
  export interface HappyEyeballsOptions {
3
4
  host: string;
4
5
  port: number;
5
6
  family?: 4 | 6;
6
7
  timeout?: number;
7
8
  signal?: AbortSignal;
9
+ /** Optional DoH resolver for encrypted DNS resolution (RFC 8484). */
10
+ dohResolver?: DoHResolver;
8
11
  }
9
12
  export interface HappyEyeballsResult {
10
13
  socket: net.Socket;
@@ -1 +1 @@
1
- {"version":3,"file":"happy-eyeballs.d.ts","sourceRoot":"","sources":["../../src/utils/happy-eyeballs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAWhC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuBtG"}
1
+ {"version":3,"file":"happy-eyeballs.d.ts","sourceRoot":"","sources":["../../src/utils/happy-eyeballs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAY1D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6BtG"}
@@ -1,5 +1,7 @@
1
1
  import * as net from "node:net";
2
2
  import { lookup } from "node:dns/promises";
3
+ import { parseARecord, parseAAAARecord } from "../dns/codec.js";
4
+ import { RTYPE } from "../dns/types.js";
3
5
  /** Connection Attempt Delay per RFC 8305 §5 — 250 ms. */
4
6
  const ATTEMPT_DELAY_MS = 250;
5
7
  /**
@@ -13,14 +15,20 @@ const ATTEMPT_DELAY_MS = 250;
13
15
  * 5. Returns the first socket that connects; destroys all others.
14
16
  */
15
17
  export async function happyEyeballsConnect(options) {
16
- const { host, port, family, timeout, signal } = options;
18
+ const { host, port, family, timeout, signal, dohResolver } = options;
17
19
  const ipVersion = net.isIP(host);
18
20
  if (ipVersion) {
19
21
  const socket = await raceTcpConnections([{ address: host, family: ipVersion }], port, timeout, signal);
20
22
  return { socket: socket.socket, address: host, family: ipVersion, dnsTimeMs: 0 };
21
23
  }
22
24
  const dnsStart = Date.now();
23
- const addresses = await lookup(host, { all: true, family: family ?? 0 });
25
+ let addresses;
26
+ if (dohResolver) {
27
+ addresses = await resolveWithDoH(dohResolver, host, family, signal);
28
+ }
29
+ else {
30
+ addresses = await lookup(host, { all: true, family: family ?? 0 });
31
+ }
24
32
  const dnsTimeMs = Date.now() - dnsStart;
25
33
  if (!addresses.length) {
26
34
  const err = new Error(`getaddrinfo ENOTFOUND ${host}`);
@@ -198,4 +206,36 @@ function singleConnect(entry, port, timeout, signal) {
198
206
  socket.once("error", (err) => finish(err));
199
207
  });
200
208
  }
209
+ /**
210
+ * Resolves addresses using DoH (DNS-over-HTTPS) for encrypted DNS resolution.
211
+ * Falls back to system DNS if DoH fails.
212
+ */
213
+ async function resolveWithDoH(resolver, host, family, signal) {
214
+ const results = [];
215
+ try {
216
+ if (!family || family === 6) {
217
+ const aaaa = await resolver.query(host, "AAAA", signal);
218
+ for (const r of aaaa) {
219
+ if (r.type === RTYPE.AAAA && r.data.length === 16) {
220
+ results.push({ address: parseAAAARecord(r.data), family: 6 });
221
+ }
222
+ }
223
+ }
224
+ if (!family || family === 4) {
225
+ const a = await resolver.query(host, "A", signal);
226
+ for (const r of a) {
227
+ if (r.type === RTYPE.A && r.data.length === 4) {
228
+ results.push({ address: parseARecord(r.data), family: 4 });
229
+ }
230
+ }
231
+ }
232
+ }
233
+ catch {
234
+ return lookup(host, { all: true, family: family ?? 0 });
235
+ }
236
+ if (results.length === 0) {
237
+ return lookup(host, { all: true, family: family ?? 0 });
238
+ }
239
+ return results;
240
+ }
201
241
  //# sourceMappingURL=happy-eyeballs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"happy-eyeballs.js","sourceRoot":"","sources":["../../src/utils/happy-eyeballs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"happy-eyeballs.js","sourceRoot":"","sources":["../../src/utils/happy-eyeballs.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export interface WebSocketOptions {
17
17
  protocols?: string[];
18
18
  insecure?: boolean;
19
19
  timeout?: number;
20
+ /** Enable `permessage-deflate` compression (RFC 7692). Default: `false`. */
21
+ compress?: boolean;
20
22
  }
21
23
  /**
22
24
  * WebSocket connection state.
@@ -62,6 +64,7 @@ export declare class WebSocketClient extends EventEmitter {
62
64
  private parser;
63
65
  private fragments;
64
66
  private fragmentOpcode;
67
+ private deflate;
65
68
  /**
66
69
  * Creates a new WebSocketClient and begins connecting to `url`.
67
70
  *
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ws/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAW3C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,EAAE,CAAC;IACT,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IACxC,KAAK,EAAE,cAAc,CAAgB;IACrC,QAAQ,SAAM;IACrB,SAAgB,GAAG,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,cAAc,CAAuB;IAE7C;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAWvD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,IAAI,CAAC,IAAI,GAAE,MAAwB,GAAG,IAAI;IAK1C;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,SAAO,EAAE,MAAM,SAAK,GAAG,IAAI;IAYrC,OAAO,CAAC,UAAU;YAMJ,OAAO;IA4DrB,OAAO,CAAC,cAAc;IAqGtB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,WAAW;CAwDpB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ws/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,EAAE,CAAC;IACT,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IACxC,KAAK,EAAE,cAAc,CAAgB;IACrC,QAAQ,SAAM;IACrB,SAAgB,GAAG,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,OAAO,CAAkC;IAEjD;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAWvD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAe5B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc9B;;;;;OAKG;IACH,IAAI,CAAC,IAAI,GAAE,MAAwB,GAAG,IAAI;IAK1C;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,SAAO,EAAE,MAAM,SAAK,GAAG,IAAI;IAarC,OAAO,CAAC,UAAU;YAMJ,OAAO;IA4DrB,OAAO,CAAC,cAAc;IAiHtB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,WAAW;CA6EpB"}
package/dist/ws/client.js CHANGED
@@ -5,6 +5,7 @@ import { getProfile } from "../fingerprints/database.js";
5
5
  import { NLcURLError, ConnectionError } from "../core/errors.js";
6
6
  import { validateWebSocketUrl } from "../core/validation.js";
7
7
  import { encodeFrame, FrameParser, Opcode, generateWebSocketKey, computeAcceptKey } from "./frame.js";
8
+ import { buildDeflateOffer, parseDeflateResponse, PerMessageDeflate } from "./permessage-deflate.js";
8
9
  /**
9
10
  * WebSocket client with optional browser fingerprint impersonation. Emits
10
11
  * typed lifecycle events (`open`, `message`, `close`, `error`, `ping`, `pong`).
@@ -24,6 +25,7 @@ export class WebSocketClient extends EventEmitter {
24
25
  parser = new FrameParser();
25
26
  fragments = [];
26
27
  fragmentOpcode = Opcode.TEXT;
28
+ deflate = null;
27
29
  /**
28
30
  * Creates a new WebSocketClient and begins connecting to `url`.
29
31
  *
@@ -48,7 +50,17 @@ export class WebSocketClient extends EventEmitter {
48
50
  sendText(data) {
49
51
  this.assertOpen();
50
52
  const payload = Buffer.from(data, "utf8");
51
- this.socket.write(encodeFrame(Opcode.TEXT, payload));
53
+ if (this.deflate) {
54
+ this.deflate
55
+ .compress(payload)
56
+ .then((compressed) => {
57
+ this.socket.write(encodeFrame(Opcode.TEXT, compressed, true, true));
58
+ })
59
+ .catch((err) => this.emit("error", err));
60
+ }
61
+ else {
62
+ this.socket.write(encodeFrame(Opcode.TEXT, payload));
63
+ }
52
64
  }
53
65
  /**
54
66
  * Sends a binary message.
@@ -58,7 +70,17 @@ export class WebSocketClient extends EventEmitter {
58
70
  */
59
71
  sendBinary(data) {
60
72
  this.assertOpen();
61
- this.socket.write(encodeFrame(Opcode.BINARY, data));
73
+ if (this.deflate) {
74
+ this.deflate
75
+ .compress(data)
76
+ .then((compressed) => {
77
+ this.socket.write(encodeFrame(Opcode.BINARY, compressed, true, true));
78
+ })
79
+ .catch((err) => this.emit("error", err));
80
+ }
81
+ else {
82
+ this.socket.write(encodeFrame(Opcode.BINARY, data));
83
+ }
62
84
  }
63
85
  /**
64
86
  * Sends a PING control frame.
@@ -86,6 +108,7 @@ export class WebSocketClient extends EventEmitter {
86
108
  payload.writeUInt16BE(code, 0);
87
109
  reasonBuf.copy(payload, 2);
88
110
  this.socket.write(encodeFrame(Opcode.CLOSE, payload));
111
+ this.deflate?.close();
89
112
  }
90
113
  assertOpen() {
91
114
  if (this.state !== "open") {
@@ -155,6 +178,9 @@ export class WebSocketClient extends EventEmitter {
155
178
  if (options.protocols && options.protocols.length > 0) {
156
179
  request += `Sec-WebSocket-Protocol: ${options.protocols.join(", ")}\r\n`;
157
180
  }
181
+ if (options.compress) {
182
+ request += `Sec-WebSocket-Extensions: ${buildDeflateOffer()}\r\n`;
183
+ }
158
184
  if (options.headers) {
159
185
  for (const [k, v] of Object.entries(options.headers)) {
160
186
  request += `${k}: ${v}\r\n`;
@@ -204,6 +230,13 @@ export class WebSocketClient extends EventEmitter {
204
230
  return reject(new NLcURLError("Invalid Sec-WebSocket-Accept header", "ERR_WS_UPGRADE"));
205
231
  }
206
232
  this.protocol = headers.get("sec-websocket-protocol") ?? "";
233
+ const extHeader = headers.get("sec-websocket-extensions");
234
+ if (options.compress && extHeader) {
235
+ const deflateParams = parseDeflateResponse(extHeader);
236
+ if (deflateParams) {
237
+ this.deflate = new PerMessageDeflate(deflateParams);
238
+ }
239
+ }
207
240
  const remaining = responseData.subarray(headerEnd + 4);
208
241
  if (remaining.length > 0) {
209
242
  this.parser.push(remaining);
@@ -230,7 +263,7 @@ export class WebSocketClient extends EventEmitter {
230
263
  }
231
264
  drainBufferedFrames() {
232
265
  let frame;
233
- while ((frame = this.parser.pull()) !== null) {
266
+ while ((frame = this.parser.pull(this.deflate !== null)) !== null) {
234
267
  this.handleFrame(frame);
235
268
  }
236
269
  }
@@ -240,8 +273,19 @@ export class WebSocketClient extends EventEmitter {
240
273
  case Opcode.BINARY:
241
274
  if (frame.fin) {
242
275
  const isBinary = frame.opcode === Opcode.BINARY;
243
- const data = isBinary ? frame.payload : frame.payload.toString("utf8");
244
- this.emit("message", data, isBinary);
276
+ if (frame.rsv1 && this.deflate) {
277
+ this.deflate
278
+ .decompress(frame.payload)
279
+ .then((decompressed) => {
280
+ const data = isBinary ? decompressed : decompressed.toString("utf8");
281
+ this.emit("message", data, isBinary);
282
+ })
283
+ .catch((err) => this.emit("error", err));
284
+ }
285
+ else {
286
+ const data = isBinary ? frame.payload : frame.payload.toString("utf8");
287
+ this.emit("message", data, isBinary);
288
+ }
245
289
  }
246
290
  else {
247
291
  this.fragmentOpcode = frame.opcode;
@@ -254,8 +298,19 @@ export class WebSocketClient extends EventEmitter {
254
298
  const assembled = Buffer.concat(this.fragments);
255
299
  this.fragments = [];
256
300
  const isBinary = this.fragmentOpcode === Opcode.BINARY;
257
- const data = isBinary ? assembled : assembled.toString("utf8");
258
- this.emit("message", data, isBinary);
301
+ if (this.deflate) {
302
+ this.deflate
303
+ .decompress(assembled)
304
+ .then((decompressed) => {
305
+ const data = isBinary ? decompressed : decompressed.toString("utf8");
306
+ this.emit("message", data, isBinary);
307
+ })
308
+ .catch((err) => this.emit("error", err));
309
+ }
310
+ else {
311
+ const data = isBinary ? assembled : assembled.toString("utf8");
312
+ this.emit("message", data, isBinary);
313
+ }
259
314
  }
260
315
  break;
261
316
  case Opcode.CLOSE: {
@@ -271,6 +326,7 @@ export class WebSocketClient extends EventEmitter {
271
326
  }
272
327
  this.state = "closed";
273
328
  this.socket?.destroy();
329
+ this.deflate?.close();
274
330
  this.emit("close", code, reason);
275
331
  break;
276
332
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ws/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAuB,MAAM,YAAY,CAAC;AAiD3H;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACxC,KAAK,GAAmB,YAAY,CAAC;IACrC,QAAQ,GAAG,EAAE,CAAC;IACL,GAAG,CAAS;IAEpB,MAAM,GAAkB,IAAI,CAAC;IAC7B,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAC3B,SAAS,GAAa,EAAE,CAAC;IACzB,cAAc,GAAW,MAAM,CAAC,IAAI,CAAC;IAE7C;;;;;OAKG;IACH,YAAY,GAAW,EAAE,UAA4B,EAAE;QACrD,KAAK,EAAE,CAAC;QACR,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACvC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,OAAe,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE;QAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO;QAClC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QAEvB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE3B,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,OAAyB;QAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE7B,MAAM,OAAO,GAA+B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7H,IAAI,SAAiB,CAAC;QAEtB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAe,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;YAE1F,MAAM,OAAO,GAAsB;gBACjC,IAAI;gBACJ,IAAI;gBACJ,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;gBACnC,aAAa,EAAE,CAAC,UAAU,CAAC;gBAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;YAEF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,SAAS,GAAG,SAA8B,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACrC,SAAS,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxD,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC3B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE;wBACpC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACf,MAAM,CAAC,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC,CAAC;oBAChE,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAExB,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,cAAc,CAAC,MAAc,EAAE,GAAQ,EAAE,OAAyB;QACxE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAExD,IAAI,OAAO,GAAG,OAAO,IAAI,eAAe,CAAC;YACzC,OAAO,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC;YACnC,OAAO,IAAI,wBAAwB,CAAC;YACpC,OAAO,IAAI,yBAAyB,CAAC;YACrC,OAAO,IAAI,sBAAsB,GAAG,MAAM,CAAC;YAC3C,OAAO,IAAI,+BAA+B,CAAC;YAE3C,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,2BAA2B,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3E,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,OAAO,IAAI,MAAM,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtB,IAAI,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAE7C,IAAI,YAAuD,CAAC;YAC5D,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC3C,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC7B,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,WAAW,CAAC,6BAA6B,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBAC3E,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;gBAC/B,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;gBACpD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;oBACrB,IAAI,YAAY,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;wBAChC,OAAO,EAAE,CAAC;wBACV,MAAM,CAAC,IAAI,WAAW,CAAC,sCAAsC,EAAE,gBAAgB,CAAC,CAAC,CAAC;oBACpF,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,OAAO,EAAE,CAAC;gBAEV,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC/C,MAAM,CAAC,UAAU,EAAE,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,MAAM,CAAC,IAAI,WAAW,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBAC7E,CAAC;gBAED,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC9D,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;oBAC7C,OAAO,MAAM,CAAC,IAAI,WAAW,CAAC,6BAA6B,UAAU,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBAC9F,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;gBAC1C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACnC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrG,CAAC;gBACH,CAAC;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACnD,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;oBAC9B,OAAO,MAAM,CAAC,IAAI,WAAW,CAAC,qCAAqC,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBAC1F,CAAC;gBAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;gBAE5D,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;gBAED,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE;gBAC7B,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,YAAY;oBAAE,YAAY,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACtC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC,CAAC;YAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,mBAAmB;QACzB,IAAI,KAA4B,CAAC;QACjC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAqB;QACvC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,IAAI,CAAC;YACjB,KAAK,MAAM,CAAC,MAAM;gBAChB,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;oBACd,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;oBAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACvE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;oBACnC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;gBACD,MAAM;YAER,KAAK,MAAM,CAAC,YAAY;gBACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;oBACd,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;oBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC;oBACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC/D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM;YAER,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClB,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC9B,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACrC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtD,CAAC;gBAED,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;oBACvB,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;gBACtB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACjC,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,IAAI;gBACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM;YAER,KAAK,MAAM,CAAC,IAAI;gBACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM;QACV,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ws/client.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare const enum Opcode {
22
22
  */
23
23
  export interface WebSocketFrame {
24
24
  fin: boolean;
25
+ rsv1: boolean;
25
26
  opcode: Opcode;
26
27
  masked: boolean;
27
28
  payload: Buffer;
@@ -36,7 +37,7 @@ export interface WebSocketFrame {
36
37
  * @param {boolean} [mask=true] - Whether to mask the payload.
37
38
  * @returns {Buffer} Encoded frame bytes.
38
39
  */
39
- export declare function encodeFrame(opcode: Opcode, payload: Buffer, mask?: boolean): Buffer;
40
+ export declare function encodeFrame(opcode: Opcode, payload: Buffer, mask?: boolean, rsv1?: boolean): Buffer;
40
41
  /**
41
42
  * Incremental WebSocket frame parser. Feed incoming data with
42
43
  * {@link FrameParser.push} and retrieve complete frames via
@@ -55,10 +56,11 @@ export declare class FrameParser {
55
56
  * internal buffer. If a complete frame is available, it is removed from
56
57
  * the buffer and returned. Returns `null` when more data is needed.
57
58
  *
59
+ * @param {boolean} [allowRsv1=false] - When `true`, RSV1 is allowed (used by permessage-deflate).
58
60
  * @returns {WebSocketFrame | null} Parsed frame, or `null` if incomplete.
59
61
  * @throws {Error} If a frame payload exceeds the 128 MiB hard limit.
60
62
  */
61
- pull(): WebSocketFrame | null;
63
+ pull(allowRsv1?: boolean): WebSocketFrame | null;
62
64
  }
63
65
  /**
64
66
  * Generates a cryptographically random WebSocket handshake key.
@@ -1 +1 @@
1
- {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/ws/frame.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,0BAAkB,MAAM;IACtB,YAAY,IAAM;IAClB,IAAI,IAAM;IACV,MAAM,IAAM;IACZ,KAAK,IAAM;IACX,IAAI,IAAM;IACV,IAAI,KAAM;CACX;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,UAAO,GAAG,MAAM,CA8ChF;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAmB;IAEjC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB;;;;;;;OAOG;IACH,IAAI,IAAI,cAAc,GAAG,IAAI;CAiD9B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKpD"}
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/ws/frame.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,0BAAkB,MAAM;IACtB,YAAY,IAAM;IAClB,IAAI,IAAM;IACV,MAAM,IAAM;IACZ,KAAK,IAAM;IACX,IAAI,IAAM;IACV,IAAI,KAAM;CACX;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,UAAO,EAAE,IAAI,UAAQ,GAAG,MAAM,CA8C9F;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAmB;IAEjC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB;;;;;;;;OAQG;IACH,IAAI,CAAC,SAAS,UAAQ,GAAG,cAAc,GAAG,IAAI;CAmD/C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKpD"}
package/dist/ws/frame.js CHANGED
@@ -23,7 +23,7 @@ export var Opcode;
23
23
  * @param {boolean} [mask=true] - Whether to mask the payload.
24
24
  * @returns {Buffer} Encoded frame bytes.
25
25
  */
26
- export function encodeFrame(opcode, payload, mask = true) {
26
+ export function encodeFrame(opcode, payload, mask = true, rsv1 = false) {
27
27
  const payloadLen = payload.length;
28
28
  let headerLen = 2;
29
29
  let extendedPayloadOffset = 2;
@@ -37,7 +37,7 @@ export function encodeFrame(opcode, payload, mask = true) {
37
37
  if (mask)
38
38
  headerLen += 4;
39
39
  const frame = Buffer.allocUnsafe(headerLen + payloadLen);
40
- frame[0] = 0x80 | opcode;
40
+ frame[0] = 0x80 | (rsv1 ? 0x40 : 0) | opcode;
41
41
  let offset = 1;
42
42
  if (payloadLen > 65535) {
43
43
  frame[offset] = (mask ? 0x80 : 0) | 127;
@@ -87,19 +87,22 @@ export class FrameParser {
87
87
  * internal buffer. If a complete frame is available, it is removed from
88
88
  * the buffer and returned. Returns `null` when more data is needed.
89
89
  *
90
+ * @param {boolean} [allowRsv1=false] - When `true`, RSV1 is allowed (used by permessage-deflate).
90
91
  * @returns {WebSocketFrame | null} Parsed frame, or `null` if incomplete.
91
92
  * @throws {Error} If a frame payload exceeds the 128 MiB hard limit.
92
93
  */
93
- pull() {
94
+ pull(allowRsv1 = false) {
94
95
  if (this.buffer.length < 2)
95
96
  return null;
96
97
  const byte0 = this.buffer[0];
97
98
  const byte1 = this.buffer[1];
98
99
  const fin = (byte0 & 0x80) !== 0;
100
+ const rsv1 = (byte0 & 0x40) !== 0;
99
101
  const rsv = byte0 & 0x70;
100
102
  const opcode = (byte0 & 0x0f);
101
103
  const masked = (byte1 & 0x80) !== 0;
102
- if (rsv !== 0) {
104
+ const forbiddenRsv = allowRsv1 ? rsv & 0x30 : rsv;
105
+ if (forbiddenRsv !== 0) {
103
106
  throw new Error("WebSocket frame has non-zero RSV bits without negotiated extensions");
104
107
  }
105
108
  if (!(opcode <= 0x2 || (opcode >= 0x8 && opcode <= 0xa))) {
@@ -131,7 +134,7 @@ export class FrameParser {
131
134
  return null;
132
135
  const payload = this.buffer.subarray(offset, totalLen);
133
136
  this.buffer = this.buffer.subarray(totalLen);
134
- return { fin, opcode, masked, payload };
137
+ return { fin, rsv1, opcode, masked, payload };
135
138
  }
136
139
  }
137
140
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/ws/frame.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/ws/frame.ts"],"names":[],"mappings":"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"}