nlcurl 0.7.0 → 0.8.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/README.md +143 -140
- package/dist/cache/groups.d.ts +75 -0
- package/dist/cache/groups.d.ts.map +1 -0
- package/dist/cache/groups.js +118 -0
- package/dist/cache/groups.js.map +1 -0
- package/dist/cache/no-vary-search.d.ts +33 -0
- package/dist/cache/no-vary-search.d.ts.map +1 -0
- package/dist/cache/no-vary-search.js +148 -0
- package/dist/cache/no-vary-search.js.map +1 -0
- package/dist/cache/range.d.ts +120 -0
- package/dist/cache/range.d.ts.map +1 -0
- package/dist/cache/range.js +193 -0
- package/dist/cache/range.js.map +1 -0
- package/dist/cache/store.d.ts +58 -36
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +58 -46
- package/dist/cache/store.js.map +1 -1
- package/dist/cache/types.d.ts +7 -39
- package/dist/cache/types.d.ts.map +1 -1
- package/dist/cli/args.d.ts +4 -37
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +3 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.d.ts +0 -5
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +14 -20
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +14 -20
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +30 -39
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +27 -37
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +13 -17
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +17 -14
- package/dist/cookies/parser.js.map +1 -1
- package/dist/cookies/psl-data.d.ts +1 -1
- package/dist/cookies/psl-data.js +1 -1
- package/dist/cookies/public-suffix.d.ts +5 -27
- package/dist/cookies/public-suffix.d.ts.map +1 -1
- package/dist/cookies/public-suffix.js +5 -37
- package/dist/cookies/public-suffix.js.map +1 -1
- package/dist/core/auth.d.ts +30 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +34 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/client.d.ts +28 -40
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +31 -41
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +64 -88
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +64 -88
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +23 -111
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/response.d.ts +49 -66
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +45 -59
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +66 -78
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +105 -76
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +44 -43
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +44 -56
- package/dist/core/validation.js.map +1 -1
- package/dist/dns/cache.d.ts +59 -0
- package/dist/dns/cache.d.ts.map +1 -0
- package/dist/dns/cache.js +99 -0
- package/dist/dns/cache.js.map +1 -0
- package/dist/dns/codec.d.ts +20 -18
- package/dist/dns/codec.d.ts.map +1 -1
- package/dist/dns/codec.js +20 -36
- package/dist/dns/codec.js.map +1 -1
- package/dist/dns/doh-resolver.d.ts +17 -31
- package/dist/dns/doh-resolver.d.ts.map +1 -1
- package/dist/dns/doh-resolver.js +46 -47
- package/dist/dns/doh-resolver.js.map +1 -1
- package/dist/dns/dot-resolver.d.ts +89 -0
- package/dist/dns/dot-resolver.d.ts.map +1 -0
- package/dist/dns/dot-resolver.js +158 -0
- package/dist/dns/dot-resolver.js.map +1 -0
- package/dist/dns/https-rr.d.ts +19 -30
- package/dist/dns/https-rr.d.ts.map +1 -1
- package/dist/dns/https-rr.js +22 -40
- package/dist/dns/https-rr.js.map +1 -1
- package/dist/dns/types.d.ts +31 -59
- package/dist/dns/types.d.ts.map +1 -1
- package/dist/dns/types.js +3 -14
- package/dist/dns/types.js.map +1 -1
- package/dist/fingerprints/akamai.d.ts +3 -11
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +3 -11
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +6 -14
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +6 -14
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts +56 -71
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +58 -71
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +12 -30
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +12 -30
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/ja4.d.ts +18 -0
- package/dist/fingerprints/ja4.d.ts.map +1 -0
- package/dist/fingerprints/ja4.js +83 -0
- package/dist/fingerprints/ja4.js.map +1 -0
- package/dist/fingerprints/profiles/chrome.d.ts +18 -21
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +35 -31
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +7 -10
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +7 -10
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +8 -11
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +8 -11
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +11 -14
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +11 -14
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +5 -8
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +5 -8
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +42 -73
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/hsts/store.d.ts +19 -21
- package/dist/hsts/store.d.ts.map +1 -1
- package/dist/hsts/store.js +20 -28
- package/dist/hsts/store.js.map +1 -1
- package/dist/hsts/types.d.ts +10 -14
- package/dist/hsts/types.d.ts.map +1 -1
- package/dist/http/alt-svc.d.ts +31 -49
- package/dist/http/alt-svc.d.ts.map +1 -1
- package/dist/http/alt-svc.js +21 -55
- package/dist/http/alt-svc.js.map +1 -1
- package/dist/http/early-hints.d.ts +23 -0
- package/dist/http/early-hints.d.ts.map +1 -0
- package/dist/http/early-hints.js +33 -0
- package/dist/http/early-hints.js.map +1 -0
- package/dist/http/form-data.d.ts +17 -35
- package/dist/http/form-data.d.ts.map +1 -1
- package/dist/http/form-data.js +12 -34
- package/dist/http/form-data.js.map +1 -1
- package/dist/http/h1/client.d.ts +14 -26
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +14 -23
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +10 -17
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +10 -17
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +22 -59
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +15 -47
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +18 -59
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +29 -64
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +53 -84
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +48 -76
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts +16 -35
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +16 -35
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/h3/detection.d.ts +5 -7
- package/dist/http/h3/detection.d.ts.map +1 -1
- package/dist/http/h3/detection.js +5 -23
- package/dist/http/h3/detection.js.map +1 -1
- package/dist/http/negotiator.d.ts +25 -38
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +16 -28
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +32 -62
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +22 -41
- package/dist/http/pool.js.map +1 -1
- package/dist/http/resumable-upload.d.ts +76 -0
- package/dist/http/resumable-upload.d.ts.map +1 -0
- package/dist/http/resumable-upload.js +104 -0
- package/dist/http/resumable-upload.js.map +1 -0
- package/dist/http/trailers.d.ts +29 -0
- package/dist/http/trailers.d.ts.map +1 -0
- package/dist/http/trailers.js +57 -0
- package/dist/http/trailers.js.map +1 -0
- package/dist/index.d.ts +21 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +13 -32
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js +11 -16
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts +8 -17
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +11 -12
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry-after.d.ts +15 -0
- package/dist/middleware/retry-after.d.ts.map +1 -0
- package/dist/middleware/retry-after.js +36 -0
- package/dist/middleware/retry-after.js.map +1 -0
- package/dist/middleware/retry.d.ts +9 -18
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +12 -9
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/auth.d.ts +73 -0
- package/dist/proxy/auth.d.ts.map +1 -0
- package/dist/proxy/auth.js +128 -0
- package/dist/proxy/auth.js.map +1 -0
- package/dist/proxy/env-proxy.d.ts +5 -15
- package/dist/proxy/env-proxy.d.ts.map +1 -1
- package/dist/proxy/env-proxy.js +5 -23
- package/dist/proxy/env-proxy.js.map +1 -1
- package/dist/proxy/http-proxy.d.ts +12 -19
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +5 -8
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +13 -20
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +5 -8
- package/dist/proxy/socks.js.map +1 -1
- package/dist/sse/parser.d.ts +14 -37
- package/dist/sse/parser.d.ts.map +1 -1
- package/dist/sse/parser.js +14 -28
- package/dist/sse/parser.js.map +1 -1
- package/dist/tls/constants.d.ts +15 -74
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +15 -74
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/ct.d.ts +78 -0
- package/dist/tls/ct.d.ts.map +1 -0
- package/dist/tls/ct.js +175 -0
- package/dist/tls/ct.js.map +1 -0
- package/dist/tls/early-data.d.ts +45 -0
- package/dist/tls/early-data.d.ts.map +1 -0
- package/dist/tls/early-data.js +46 -0
- package/dist/tls/early-data.js.map +1 -0
- package/dist/tls/ech.d.ts +68 -85
- package/dist/tls/ech.d.ts.map +1 -1
- package/dist/tls/ech.js +54 -102
- package/dist/tls/ech.js.map +1 -1
- package/dist/tls/keylog.d.ts +34 -0
- package/dist/tls/keylog.d.ts.map +1 -0
- package/dist/tls/keylog.js +64 -0
- package/dist/tls/keylog.js.map +1 -0
- package/dist/tls/node-engine.d.ts +10 -17
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +20 -18
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/ocsp.d.ts +55 -0
- package/dist/tls/ocsp.d.ts.map +1 -0
- package/dist/tls/ocsp.js +131 -0
- package/dist/tls/ocsp.js.map +1 -0
- package/dist/tls/pin-verification.d.ts +5 -4
- package/dist/tls/pin-verification.d.ts.map +1 -1
- package/dist/tls/pin-verification.js +5 -11
- package/dist/tls/pin-verification.js.map +1 -1
- package/dist/tls/session-cache.d.ts +27 -39
- package/dist/tls/session-cache.d.ts.map +1 -1
- package/dist/tls/session-cache.js +20 -24
- package/dist/tls/session-cache.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +25 -44
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +17 -28
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +5 -15
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +11 -17
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +21 -31
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +15 -43
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +59 -86
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +46 -58
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +52 -75
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +47 -63
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/stealth/tls12-handshake.d.ts +16 -0
- package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -1
- package/dist/tls/stealth/tls12-handshake.js +8 -0
- package/dist/tls/stealth/tls12-handshake.js.map +1 -1
- package/dist/tls/types.d.ts +42 -60
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/utils/buffer-reader.d.ts +26 -81
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js +26 -81
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts +30 -66
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +30 -66
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/compression.d.ts +18 -0
- package/dist/utils/compression.d.ts.map +1 -0
- package/dist/utils/compression.js +34 -0
- package/dist/utils/compression.js.map +1 -0
- package/dist/utils/dictionary-transport.d.ts +97 -0
- package/dist/utils/dictionary-transport.d.ts.map +1 -0
- package/dist/utils/dictionary-transport.js +171 -0
- package/dist/utils/dictionary-transport.js.map +1 -0
- package/dist/utils/encoding.d.ts +12 -30
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +15 -46
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/happy-eyeballs.d.ts +18 -8
- package/dist/utils/happy-eyeballs.d.ts.map +1 -1
- package/dist/utils/happy-eyeballs.js +19 -27
- package/dist/utils/happy-eyeballs.js.map +1 -1
- package/dist/utils/logger.d.ts +54 -81
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +92 -64
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/tcp-fast-open.d.ts +30 -0
- package/dist/utils/tcp-fast-open.d.ts.map +1 -0
- package/dist/utils/tcp-fast-open.js +36 -0
- package/dist/utils/tcp-fast-open.js.map +1 -0
- package/dist/utils/url.d.ts +18 -25
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +18 -25
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +33 -53
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +29 -30
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts +24 -41
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +18 -33
- package/dist/ws/frame.js.map +1 -1
- package/dist/ws/permessage-deflate.d.ts +23 -28
- package/dist/ws/permessage-deflate.d.ts.map +1 -1
- package/dist/ws/permessage-deflate.js +18 -26
- package/dist/ws/permessage-deflate.js.map +1 -1
- package/package.json +62 -62
package/dist/ws/client.d.ts.map
CHANGED
|
@@ -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;AAY3C
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ws/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,IAAI,EAAE,EAAE,CAAC;IACT,uDAAuD;IACvD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,yDAAyD;IACzD,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,6CAA6C;IAC7C,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,2CAA2C;IAC3C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrB,2CAA2C;IAC3C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,0CAA0C;IACnC,KAAK,EAAE,cAAc,CAAgB;IAC5C,uDAAuD;IAChD,QAAQ,SAAM;IACrB,8BAA8B;IAC9B,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;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAe5B;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc9B;;;;OAIG;IACH,IAAI,CAAC,IAAI,GAAE,MAAwB,GAAG,IAAI;IAK1C;;;;;OAKG;IACH,KAAK,CAAC,IAAI,SAAO,EAAE,MAAM,SAAK,GAAG,IAAI;IAarC,OAAO,CAAC,UAAU;YAMJ,OAAO;IAgErB,OAAO,CAAC,cAAc;IAoHtB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,WAAW;CA6EpB"}
|
package/dist/ws/client.js
CHANGED
|
@@ -7,19 +7,15 @@ import { validateWebSocketUrl } from "../core/validation.js";
|
|
|
7
7
|
import { encodeFrame, FrameParser, Opcode, generateWebSocketKey, computeAcceptKey } from "./frame.js";
|
|
8
8
|
import { buildDeflateOffer, parseDeflateResponse, PerMessageDeflate } from "./permessage-deflate.js";
|
|
9
9
|
/**
|
|
10
|
-
* WebSocket client with optional
|
|
11
|
-
*
|
|
12
|
-
* The connection is initiated asynchronously in the constructor; listen for
|
|
13
|
-
* the `'open'` event before sending frames.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* const ws = new WebSocketClient('wss://echo.example.com', { impersonate: 'chrome136' });
|
|
17
|
-
* ws.on('open', () => ws.sendText('hello'));
|
|
18
|
-
* ws.on('message', (data) => console.log(data));
|
|
10
|
+
* RFC 6455 WebSocket client with optional TLS fingerprinting
|
|
11
|
+
* and per-message deflate compression.
|
|
19
12
|
*/
|
|
20
13
|
export class WebSocketClient extends EventEmitter {
|
|
14
|
+
/** Current connection lifecycle state. */
|
|
21
15
|
state = "connecting";
|
|
16
|
+
/** Negotiated subprotocol, or empty string if none. */
|
|
22
17
|
protocol = "";
|
|
18
|
+
/** Original WebSocket URL. */
|
|
23
19
|
url;
|
|
24
20
|
socket = null;
|
|
25
21
|
parser = new FrameParser();
|
|
@@ -27,10 +23,10 @@ export class WebSocketClient extends EventEmitter {
|
|
|
27
23
|
fragmentOpcode = Opcode.TEXT;
|
|
28
24
|
deflate = null;
|
|
29
25
|
/**
|
|
30
|
-
*
|
|
26
|
+
* Create a new WebSocket connection.
|
|
31
27
|
*
|
|
32
|
-
* @param {string}
|
|
33
|
-
* @param {WebSocketOptions} [options
|
|
28
|
+
* @param {string} url - `ws://` or `wss://` URL to connect to.
|
|
29
|
+
* @param {WebSocketOptions} [options] - Connection and TLS options.
|
|
34
30
|
*/
|
|
35
31
|
constructor(url, options = {}) {
|
|
36
32
|
super();
|
|
@@ -42,10 +38,9 @@ export class WebSocketClient extends EventEmitter {
|
|
|
42
38
|
});
|
|
43
39
|
}
|
|
44
40
|
/**
|
|
45
|
-
*
|
|
41
|
+
* Send a UTF-8 text message.
|
|
46
42
|
*
|
|
47
|
-
* @param {string} data - Text to send.
|
|
48
|
-
* @throws {NLcURLError} If the WebSocket is not in the `'open'` state.
|
|
43
|
+
* @param {string} data - Text payload to send.
|
|
49
44
|
*/
|
|
50
45
|
sendText(data) {
|
|
51
46
|
this.assertOpen();
|
|
@@ -63,10 +58,9 @@ export class WebSocketClient extends EventEmitter {
|
|
|
63
58
|
}
|
|
64
59
|
}
|
|
65
60
|
/**
|
|
66
|
-
*
|
|
61
|
+
* Send a binary message.
|
|
67
62
|
*
|
|
68
|
-
* @param {Buffer} data - Binary
|
|
69
|
-
* @throws {NLcURLError} If the WebSocket is not in the `'open'` state.
|
|
63
|
+
* @param {Buffer} data - Binary payload to send.
|
|
70
64
|
*/
|
|
71
65
|
sendBinary(data) {
|
|
72
66
|
this.assertOpen();
|
|
@@ -83,21 +77,19 @@ export class WebSocketClient extends EventEmitter {
|
|
|
83
77
|
}
|
|
84
78
|
}
|
|
85
79
|
/**
|
|
86
|
-
*
|
|
80
|
+
* Send a WebSocket ping frame.
|
|
87
81
|
*
|
|
88
|
-
* @param {Buffer} [data
|
|
89
|
-
* @throws {NLcURLError} If the WebSocket is not in the `'open'` state.
|
|
82
|
+
* @param {Buffer} [data] - Optional payload (up to 125 bytes).
|
|
90
83
|
*/
|
|
91
84
|
ping(data = Buffer.alloc(0)) {
|
|
92
85
|
this.assertOpen();
|
|
93
86
|
this.socket.write(encodeFrame(Opcode.PING, data));
|
|
94
87
|
}
|
|
95
88
|
/**
|
|
96
|
-
*
|
|
97
|
-
* given status code and reason. Does nothing if the connection is not open.
|
|
89
|
+
* Initiate a graceful close handshake.
|
|
98
90
|
*
|
|
99
|
-
* @param {number} [code
|
|
100
|
-
* @param {string} [reason
|
|
91
|
+
* @param {number} [code] - Close status code (default `1000`).
|
|
92
|
+
* @param {string} [reason] - Human-readable close reason.
|
|
101
93
|
*/
|
|
102
94
|
close(code = 1000, reason = "") {
|
|
103
95
|
if (this.state !== "open")
|
|
@@ -138,7 +130,9 @@ export class WebSocketClient extends EventEmitter {
|
|
|
138
130
|
else {
|
|
139
131
|
const net = await import("node:net");
|
|
140
132
|
transport = await new Promise((resolve, reject) => {
|
|
141
|
-
const sock = net.createConnection({ host, port }, () =>
|
|
133
|
+
const sock = net.createConnection({ host, port }, () => {
|
|
134
|
+
resolve(sock);
|
|
135
|
+
});
|
|
142
136
|
sock.once("error", reject);
|
|
143
137
|
if (options.timeout) {
|
|
144
138
|
sock.setTimeout(options.timeout, () => {
|
|
@@ -152,7 +146,9 @@ export class WebSocketClient extends EventEmitter {
|
|
|
152
146
|
await this.performUpgrade(transport, parsed, options);
|
|
153
147
|
this.state = "open";
|
|
154
148
|
this.emit("open");
|
|
155
|
-
transport.on("data", (chunk) =>
|
|
149
|
+
transport.on("data", (chunk) => {
|
|
150
|
+
this.onData(chunk);
|
|
151
|
+
});
|
|
156
152
|
transport.on("error", (err) => {
|
|
157
153
|
this.state = "closed";
|
|
158
154
|
this.emit("error", err);
|
|
@@ -212,11 +208,13 @@ export class WebSocketClient extends EventEmitter {
|
|
|
212
208
|
const headerStr = text.substring(0, headerEnd);
|
|
213
209
|
const [statusLine, ...headerLines] = headerStr.split("\r\n");
|
|
214
210
|
if (!statusLine) {
|
|
215
|
-
|
|
211
|
+
reject(new NLcURLError("Empty upgrade response", "ERR_WS_UPGRADE"));
|
|
212
|
+
return;
|
|
216
213
|
}
|
|
217
214
|
const statusMatch = statusLine.match(/^HTTP\/\d\.\d (\d{3})/);
|
|
218
215
|
if (!statusMatch || statusMatch[1] !== "101") {
|
|
219
|
-
|
|
216
|
+
reject(new NLcURLError(`WebSocket upgrade failed: ${statusLine}`, "ERR_WS_UPGRADE"));
|
|
217
|
+
return;
|
|
220
218
|
}
|
|
221
219
|
const headers = new Map();
|
|
222
220
|
for (const line of headerLines) {
|
|
@@ -227,7 +225,8 @@ export class WebSocketClient extends EventEmitter {
|
|
|
227
225
|
}
|
|
228
226
|
const accept = headers.get("sec-websocket-accept");
|
|
229
227
|
if (accept !== expectedAccept) {
|
|
230
|
-
|
|
228
|
+
reject(new NLcURLError("Invalid Sec-WebSocket-Accept header", "ERR_WS_UPGRADE"));
|
|
229
|
+
return;
|
|
231
230
|
}
|
|
232
231
|
this.protocol = headers.get("sec-websocket-protocol") ?? "";
|
|
233
232
|
const extHeader = headers.get("sec-websocket-extensions");
|
package/dist/ws/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ws/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ws/client.ts"],"names":[],"mappings":"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"}
|
package/dist/ws/frame.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket frame opcode values as defined in RFC 6455 §5.2.
|
|
3
|
-
*
|
|
4
|
-
* @enum {number}
|
|
5
|
-
*/
|
|
1
|
+
/** WebSocket frame opcodes as defined in RFC 6455 §11.8. */
|
|
6
2
|
export declare const enum Opcode {
|
|
7
3
|
CONTINUATION = 0,
|
|
8
4
|
TEXT = 1,
|
|
@@ -11,70 +7,57 @@ export declare const enum Opcode {
|
|
|
11
7
|
PING = 9,
|
|
12
8
|
PONG = 10
|
|
13
9
|
}
|
|
14
|
-
/**
|
|
15
|
-
* A parsed WebSocket frame.
|
|
16
|
-
*
|
|
17
|
-
* @typedef {Object} WebSocketFrame
|
|
18
|
-
* @property {boolean} fin - Whether the FIN bit is set (final fragment).
|
|
19
|
-
* @property {Opcode} opcode - Frame opcode.
|
|
20
|
-
* @property {boolean} masked - Whether the payload is masked.
|
|
21
|
-
* @property {Buffer} payload - Unmasked payload bytes.
|
|
22
|
-
*/
|
|
10
|
+
/** Decoded WebSocket frame header and payload. */
|
|
23
11
|
export interface WebSocketFrame {
|
|
12
|
+
/** Whether this is the final fragment. */
|
|
24
13
|
fin: boolean;
|
|
14
|
+
/** RSV1 bit — indicates per-message compression when negotiated. */
|
|
25
15
|
rsv1: boolean;
|
|
16
|
+
/** Frame opcode. */
|
|
26
17
|
opcode: Opcode;
|
|
18
|
+
/** Whether the payload is masked. */
|
|
27
19
|
masked: boolean;
|
|
20
|
+
/** Frame payload data. */
|
|
28
21
|
payload: Buffer;
|
|
29
22
|
}
|
|
30
23
|
/**
|
|
31
|
-
*
|
|
32
|
-
* The payload is masked by default using a cryptographically random 4-byte key
|
|
33
|
-
* as required by RFC 6455 for client-to-server frames.
|
|
24
|
+
* Encode a WebSocket frame for transmission.
|
|
34
25
|
*
|
|
35
|
-
* @param {Opcode}
|
|
36
|
-
* @param {Buffer}
|
|
37
|
-
* @param {boolean}
|
|
38
|
-
* @
|
|
26
|
+
* @param {Opcode} opcode - Frame opcode.
|
|
27
|
+
* @param {Buffer} payload - Frame payload bytes.
|
|
28
|
+
* @param {boolean} mask - Apply a random masking key (default `true`).
|
|
29
|
+
* @param {boolean} rsv1 - Set the RSV1 bit for compressed frames.
|
|
30
|
+
* @returns {Buffer} Wire-format frame buffer.
|
|
39
31
|
*/
|
|
40
32
|
export declare function encodeFrame(opcode: Opcode, payload: Buffer, mask?: boolean, rsv1?: boolean): Buffer;
|
|
41
|
-
/**
|
|
42
|
-
* Incremental WebSocket frame parser. Feed incoming data with
|
|
43
|
-
* {@link FrameParser.push} and retrieve complete frames via
|
|
44
|
-
* {@link FrameParser.pull}.
|
|
45
|
-
*/
|
|
33
|
+
/** Incremental parser that reassembles WebSocket frames from raw data. */
|
|
46
34
|
export declare class FrameParser {
|
|
47
35
|
private buffer;
|
|
48
36
|
/**
|
|
49
|
-
*
|
|
37
|
+
* Append incoming bytes to the internal buffer.
|
|
50
38
|
*
|
|
51
|
-
* @param {Buffer} data -
|
|
39
|
+
* @param {Buffer} data - Raw data received from the transport.
|
|
52
40
|
*/
|
|
53
41
|
push(data: Buffer): void;
|
|
54
42
|
/**
|
|
55
|
-
*
|
|
56
|
-
* internal buffer. If a complete frame is available, it is removed from
|
|
57
|
-
* the buffer and returned. Returns `null` when more data is needed.
|
|
43
|
+
* Attempt to decode the next complete frame from the buffer.
|
|
58
44
|
*
|
|
59
|
-
* @param {boolean}
|
|
60
|
-
* @returns {WebSocketFrame | null}
|
|
61
|
-
* @throws {Error} If a frame payload exceeds the 128 MiB hard limit.
|
|
45
|
+
* @param {boolean} allowRsv1 - Permit the RSV1 bit for per-message deflate.
|
|
46
|
+
* @returns {WebSocketFrame | null} Decoded frame, or `null` if insufficient data.
|
|
62
47
|
*/
|
|
63
48
|
pull(allowRsv1?: boolean): WebSocketFrame | null;
|
|
64
49
|
}
|
|
65
50
|
/**
|
|
66
|
-
*
|
|
67
|
-
* The key is 16 random bytes encoded as Base64, as required by RFC 6455 §4.1.
|
|
51
|
+
* Generate a random 16-byte Sec-WebSocket-Key encoded in base64.
|
|
68
52
|
*
|
|
69
|
-
* @returns {string} Base64-encoded
|
|
53
|
+
* @returns {string} Base64-encoded key for the upgrade handshake.
|
|
70
54
|
*/
|
|
71
55
|
export declare function generateWebSocketKey(): string;
|
|
72
56
|
/**
|
|
73
|
-
*
|
|
74
|
-
* `Sec-WebSocket-Key` using the algorithm defined in RFC 6455 §4.2.2.
|
|
57
|
+
* Compute the expected Sec-WebSocket-Accept value.
|
|
75
58
|
*
|
|
76
|
-
* @param {string} key - The
|
|
77
|
-
* @returns {string} Base64-encoded SHA-1
|
|
59
|
+
* @param {string} key - The Sec-WebSocket-Key sent by the client.
|
|
60
|
+
* @returns {string} Base64-encoded SHA-1 accept hash.
|
|
78
61
|
*/
|
|
79
62
|
export declare function computeAcceptKey(key: string): string;
|
|
80
63
|
//# sourceMappingURL=frame.d.ts.map
|
package/dist/ws/frame.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/ws/frame.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/ws/frame.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,0BAAkB,MAAM;IACtB,YAAY,IAAM;IAClB,IAAI,IAAM;IACV,MAAM,IAAM;IACZ,KAAK,IAAM;IACX,IAAI,IAAM;IACV,IAAI,KAAM;CACX;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,GAAG,EAAE,OAAO,CAAC;IACb,oEAAoE;IACpE,IAAI,EAAE,OAAO,CAAC;IACd,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,UAAO,EAAE,IAAI,UAAQ,GAAG,MAAM,CA6C9F;AAED,0EAA0E;AAC1E,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAmB;IAEjC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxB;;;;;OAKG;IACH,IAAI,CAAC,SAAS,UAAQ,GAAG,cAAc,GAAG,IAAI;CAmD/C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKpD"}
|
package/dist/ws/frame.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as crypto from "node:crypto";
|
|
2
|
-
/**
|
|
3
|
-
* WebSocket frame opcode values as defined in RFC 6455 §5.2.
|
|
4
|
-
*
|
|
5
|
-
* @enum {number}
|
|
6
|
-
*/
|
|
2
|
+
/** WebSocket frame opcodes as defined in RFC 6455 §11.8. */
|
|
7
3
|
export var Opcode;
|
|
8
4
|
(function (Opcode) {
|
|
9
5
|
Opcode[Opcode["CONTINUATION"] = 0] = "CONTINUATION";
|
|
@@ -14,19 +10,17 @@ export var Opcode;
|
|
|
14
10
|
Opcode[Opcode["PONG"] = 10] = "PONG";
|
|
15
11
|
})(Opcode || (Opcode = {}));
|
|
16
12
|
/**
|
|
17
|
-
*
|
|
18
|
-
* The payload is masked by default using a cryptographically random 4-byte key
|
|
19
|
-
* as required by RFC 6455 for client-to-server frames.
|
|
13
|
+
* Encode a WebSocket frame for transmission.
|
|
20
14
|
*
|
|
21
|
-
* @param {Opcode}
|
|
22
|
-
* @param {Buffer}
|
|
23
|
-
* @param {boolean}
|
|
24
|
-
* @
|
|
15
|
+
* @param {Opcode} opcode - Frame opcode.
|
|
16
|
+
* @param {Buffer} payload - Frame payload bytes.
|
|
17
|
+
* @param {boolean} mask - Apply a random masking key (default `true`).
|
|
18
|
+
* @param {boolean} rsv1 - Set the RSV1 bit for compressed frames.
|
|
19
|
+
* @returns {Buffer} Wire-format frame buffer.
|
|
25
20
|
*/
|
|
26
21
|
export function encodeFrame(opcode, payload, mask = true, rsv1 = false) {
|
|
27
22
|
const payloadLen = payload.length;
|
|
28
23
|
let headerLen = 2;
|
|
29
|
-
let extendedPayloadOffset = 2;
|
|
30
24
|
if (payloadLen > 65535) {
|
|
31
25
|
headerLen += 8;
|
|
32
26
|
}
|
|
@@ -67,29 +61,22 @@ export function encodeFrame(opcode, payload, mask = true, rsv1 = false) {
|
|
|
67
61
|
}
|
|
68
62
|
return frame;
|
|
69
63
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Incremental WebSocket frame parser. Feed incoming data with
|
|
72
|
-
* {@link FrameParser.push} and retrieve complete frames via
|
|
73
|
-
* {@link FrameParser.pull}.
|
|
74
|
-
*/
|
|
64
|
+
/** Incremental parser that reassembles WebSocket frames from raw data. */
|
|
75
65
|
export class FrameParser {
|
|
76
66
|
buffer = Buffer.alloc(0);
|
|
77
67
|
/**
|
|
78
|
-
*
|
|
68
|
+
* Append incoming bytes to the internal buffer.
|
|
79
69
|
*
|
|
80
|
-
* @param {Buffer} data -
|
|
70
|
+
* @param {Buffer} data - Raw data received from the transport.
|
|
81
71
|
*/
|
|
82
72
|
push(data) {
|
|
83
73
|
this.buffer = Buffer.concat([this.buffer, data]);
|
|
84
74
|
}
|
|
85
75
|
/**
|
|
86
|
-
*
|
|
87
|
-
* internal buffer. If a complete frame is available, it is removed from
|
|
88
|
-
* the buffer and returned. Returns `null` when more data is needed.
|
|
76
|
+
* Attempt to decode the next complete frame from the buffer.
|
|
89
77
|
*
|
|
90
|
-
* @param {boolean}
|
|
91
|
-
* @returns {WebSocketFrame | null}
|
|
92
|
-
* @throws {Error} If a frame payload exceeds the 128 MiB hard limit.
|
|
78
|
+
* @param {boolean} allowRsv1 - Permit the RSV1 bit for per-message deflate.
|
|
79
|
+
* @returns {WebSocketFrame | null} Decoded frame, or `null` if insufficient data.
|
|
93
80
|
*/
|
|
94
81
|
pull(allowRsv1 = false) {
|
|
95
82
|
if (this.buffer.length < 2)
|
|
@@ -138,20 +125,18 @@ export class FrameParser {
|
|
|
138
125
|
}
|
|
139
126
|
}
|
|
140
127
|
/**
|
|
141
|
-
*
|
|
142
|
-
* The key is 16 random bytes encoded as Base64, as required by RFC 6455 §4.1.
|
|
128
|
+
* Generate a random 16-byte Sec-WebSocket-Key encoded in base64.
|
|
143
129
|
*
|
|
144
|
-
* @returns {string} Base64-encoded
|
|
130
|
+
* @returns {string} Base64-encoded key for the upgrade handshake.
|
|
145
131
|
*/
|
|
146
132
|
export function generateWebSocketKey() {
|
|
147
133
|
return crypto.randomBytes(16).toString("base64");
|
|
148
134
|
}
|
|
149
135
|
/**
|
|
150
|
-
*
|
|
151
|
-
* `Sec-WebSocket-Key` using the algorithm defined in RFC 6455 §4.2.2.
|
|
136
|
+
* Compute the expected Sec-WebSocket-Accept value.
|
|
152
137
|
*
|
|
153
|
-
* @param {string} key - The
|
|
154
|
-
* @returns {string} Base64-encoded SHA-1
|
|
138
|
+
* @param {string} key - The Sec-WebSocket-Key sent by the client.
|
|
139
|
+
* @returns {string} Base64-encoded SHA-1 accept hash.
|
|
155
140
|
*/
|
|
156
141
|
export function computeAcceptKey(key) {
|
|
157
142
|
return crypto
|
package/dist/ws/frame.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/ws/frame.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/ws/frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,58 +1,53 @@
|
|
|
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
|
-
*/
|
|
1
|
+
/** Negotiated per-message deflate parameters. */
|
|
10
2
|
export interface DeflateParams {
|
|
3
|
+
/** Server will not reuse its LZ77 sliding window between messages. */
|
|
11
4
|
serverNoContextTakeover: boolean;
|
|
5
|
+
/** Client will not reuse its LZ77 sliding window between messages. */
|
|
12
6
|
clientNoContextTakeover: boolean;
|
|
7
|
+
/** Maximum window bits for the server's decompressor. */
|
|
13
8
|
serverMaxWindowBits: number;
|
|
9
|
+
/** Maximum window bits for the client's compressor. */
|
|
14
10
|
clientMaxWindowBits: number;
|
|
15
11
|
}
|
|
16
12
|
/**
|
|
17
|
-
*
|
|
13
|
+
* Build a `Sec-WebSocket-Extensions` offer string for per-message deflate.
|
|
18
14
|
*
|
|
19
|
-
* @returns {string} Extension offer
|
|
15
|
+
* @returns {string} Extension offer suitable for the upgrade request.
|
|
20
16
|
*/
|
|
21
17
|
export declare function buildDeflateOffer(): string;
|
|
22
18
|
/**
|
|
23
|
-
*
|
|
24
|
-
* the negotiated `permessage-deflate` parameters. Returns `null` when the
|
|
25
|
-
* extension was not accepted by the server.
|
|
19
|
+
* Parse the server's `Sec-WebSocket-Extensions` response for deflate params.
|
|
26
20
|
*
|
|
27
|
-
* @param {string} header -
|
|
28
|
-
* @returns {DeflateParams | null} Negotiated parameters, or `null
|
|
21
|
+
* @param {string} header - Raw extension header value from the server.
|
|
22
|
+
* @returns {DeflateParams | null} Negotiated deflate parameters, or `null` if not accepted.
|
|
29
23
|
*/
|
|
30
24
|
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
|
-
*/
|
|
25
|
+
/** Stateful per-message deflate compressor and decompressor (RFC 7692). */
|
|
36
26
|
export declare class PerMessageDeflate {
|
|
37
27
|
private readonly params;
|
|
38
28
|
private inflateContext;
|
|
39
29
|
private deflateContext;
|
|
30
|
+
/**
|
|
31
|
+
* Create a per-message deflate handler.
|
|
32
|
+
*
|
|
33
|
+
* @param {DeflateParams} params - Negotiated deflate parameters.
|
|
34
|
+
*/
|
|
40
35
|
constructor(params: DeflateParams);
|
|
41
36
|
/**
|
|
42
|
-
*
|
|
37
|
+
* Decompress a compressed WebSocket payload.
|
|
43
38
|
*
|
|
44
|
-
* @param {Buffer} data - Compressed payload
|
|
45
|
-
* @returns {Promise<Buffer>} Decompressed
|
|
39
|
+
* @param {Buffer} data - Compressed frame payload.
|
|
40
|
+
* @returns {Promise<Buffer>} Decompressed data.
|
|
46
41
|
*/
|
|
47
42
|
decompress(data: Buffer): Promise<Buffer>;
|
|
48
43
|
/**
|
|
49
|
-
*
|
|
44
|
+
* Compress a WebSocket payload before framing.
|
|
50
45
|
*
|
|
51
|
-
* @param {Buffer} data - Uncompressed
|
|
52
|
-
* @returns {Promise<Buffer>} Compressed data
|
|
46
|
+
* @param {Buffer} data - Uncompressed payload.
|
|
47
|
+
* @returns {Promise<Buffer>} Compressed data with the deflate tail stripped.
|
|
53
48
|
*/
|
|
54
49
|
compress(data: Buffer): Promise<Buffer>;
|
|
55
|
-
/**
|
|
50
|
+
/** Release inflate and deflate contexts and free associated memory. */
|
|
56
51
|
close(): void;
|
|
57
52
|
}
|
|
58
53
|
//# sourceMappingURL=permessage-deflate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permessage-deflate.d.ts","sourceRoot":"","sources":["../../src/ws/permessage-deflate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permessage-deflate.d.ts","sourceRoot":"","sources":["../../src/ws/permessage-deflate.ts"],"names":[],"mappings":"AAIA,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,uBAAuB,EAAE,OAAO,CAAC;IACjC,sEAAsE;IACtE,uBAAuB,EAAE,OAAO,CAAC;IACjC,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uDAAuD;IACvD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AASD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA8BzE;AAED,2EAA2E;AAC3E,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,cAAc,CAA6B;IAEnD;;;;OAIG;gBACS,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,uEAAuE;IACvE,KAAK,IAAI,IAAI;CAMd"}
|
|
@@ -1,11 +1,4 @@
|
|
|
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
1
|
import * as zlib from "node:zlib";
|
|
8
|
-
/** The 4-byte DEFLATE flush trailer appended by RFC 7692 §7.2.1. */
|
|
9
2
|
const DEFLATE_TAIL = Buffer.from([0x00, 0x00, 0xff, 0xff]);
|
|
10
3
|
const DEFAULT_PARAMS = {
|
|
11
4
|
serverNoContextTakeover: false,
|
|
@@ -14,20 +7,18 @@ const DEFAULT_PARAMS = {
|
|
|
14
7
|
clientMaxWindowBits: 15,
|
|
15
8
|
};
|
|
16
9
|
/**
|
|
17
|
-
*
|
|
10
|
+
* Build a `Sec-WebSocket-Extensions` offer string for per-message deflate.
|
|
18
11
|
*
|
|
19
|
-
* @returns {string} Extension offer
|
|
12
|
+
* @returns {string} Extension offer suitable for the upgrade request.
|
|
20
13
|
*/
|
|
21
14
|
export function buildDeflateOffer() {
|
|
22
15
|
return "permessage-deflate; client_max_window_bits";
|
|
23
16
|
}
|
|
24
17
|
/**
|
|
25
|
-
*
|
|
26
|
-
* the negotiated `permessage-deflate` parameters. Returns `null` when the
|
|
27
|
-
* extension was not accepted by the server.
|
|
18
|
+
* Parse the server's `Sec-WebSocket-Extensions` response for deflate params.
|
|
28
19
|
*
|
|
29
|
-
* @param {string} header -
|
|
30
|
-
* @returns {DeflateParams | null} Negotiated parameters, or `null
|
|
20
|
+
* @param {string} header - Raw extension header value from the server.
|
|
21
|
+
* @returns {DeflateParams | null} Negotiated deflate parameters, or `null` if not accepted.
|
|
31
22
|
*/
|
|
32
23
|
export function parseDeflateResponse(header) {
|
|
33
24
|
const extensions = header.split(",").map((s) => s.trim());
|
|
@@ -60,23 +51,24 @@ export function parseDeflateResponse(header) {
|
|
|
60
51
|
}
|
|
61
52
|
return null;
|
|
62
53
|
}
|
|
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
|
-
*/
|
|
54
|
+
/** Stateful per-message deflate compressor and decompressor (RFC 7692). */
|
|
68
55
|
export class PerMessageDeflate {
|
|
69
56
|
params;
|
|
70
57
|
inflateContext = null;
|
|
71
58
|
deflateContext = null;
|
|
59
|
+
/**
|
|
60
|
+
* Create a per-message deflate handler.
|
|
61
|
+
*
|
|
62
|
+
* @param {DeflateParams} params - Negotiated deflate parameters.
|
|
63
|
+
*/
|
|
72
64
|
constructor(params) {
|
|
73
65
|
this.params = params;
|
|
74
66
|
}
|
|
75
67
|
/**
|
|
76
|
-
*
|
|
68
|
+
* Decompress a compressed WebSocket payload.
|
|
77
69
|
*
|
|
78
|
-
* @param {Buffer} data - Compressed payload
|
|
79
|
-
* @returns {Promise<Buffer>} Decompressed
|
|
70
|
+
* @param {Buffer} data - Compressed frame payload.
|
|
71
|
+
* @returns {Promise<Buffer>} Decompressed data.
|
|
80
72
|
*/
|
|
81
73
|
decompress(data) {
|
|
82
74
|
return new Promise((resolve, reject) => {
|
|
@@ -104,10 +96,10 @@ export class PerMessageDeflate {
|
|
|
104
96
|
});
|
|
105
97
|
}
|
|
106
98
|
/**
|
|
107
|
-
*
|
|
99
|
+
* Compress a WebSocket payload before framing.
|
|
108
100
|
*
|
|
109
|
-
* @param {Buffer} data - Uncompressed
|
|
110
|
-
* @returns {Promise<Buffer>} Compressed data
|
|
101
|
+
* @param {Buffer} data - Uncompressed payload.
|
|
102
|
+
* @returns {Promise<Buffer>} Compressed data with the deflate tail stripped.
|
|
111
103
|
*/
|
|
112
104
|
compress(data) {
|
|
113
105
|
return new Promise((resolve, reject) => {
|
|
@@ -137,7 +129,7 @@ export class PerMessageDeflate {
|
|
|
137
129
|
});
|
|
138
130
|
});
|
|
139
131
|
}
|
|
140
|
-
/**
|
|
132
|
+
/** Release inflate and deflate contexts and free associated memory. */
|
|
141
133
|
close() {
|
|
142
134
|
this.inflateContext?.close();
|
|
143
135
|
this.deflateContext?.close();
|