@hazae41/fleche v1.4.4
npm i @hazae41/fleche
Features
Goals
- 100% TypeScript and ESM
- Zero-copy reading and writing
- Transport agnostic (TCP, TLS, Tor)
- Supports backpressure
HTTP
- HTTP 1.1
- Native Gzip and Deflate compression
- Compatible with code using
fetch
- Reusable underlying connection
WebSocket
- Relies on the above HTTP
- Powered by WebAssembly
- Same API than native
- Only 0.3ms slower than native
Upcoming features
- More HTTP 1.1 features
- HTTP 2, HTTP 3 (QUIC)
Usage
import { Opaque, Writable } from "@hazae41/binary"
import { fetch } from "@hazae41/fleche"
function example(stream: ReadableWritablePair<Opaque, Writable>) {
/**
* Fetch using the underlying TCP or TLS stream
*/
const res = await fetch("https://example.com", { stream })
if (!res.ok)
throw new Error(await res.text())
return await res.json()
}
import { Opaque, Writable } from "@hazae41/binary"
import { WebSocket } from "@hazae41/fleche"
function example(stream: ReadableWritablePair<Opaque, Writable>) {
const socket = new WebSocket("wss://example.com")
/**
* Pipe TCP or TLS input to WebSocket input
*/
stream.readable
.pipeTo(socket.inner.writable, { preventCancel: true })
.catch(() => {})
/**
* Pipe WebSocket output to TCP or TLS output
*/
socket.inner.readable
.pipeTo(stream.writable, { preventClose: true, preventAbort: true })
.catch(() => {})
await new Promise((ok, err) => {
socket.addEventListener("open", ok)
socket.addEventListener("error", err)
})
socket.addEventListener("message", e => console.log(e.data))
socket.send("Hello world")
}
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 months ago
3 months ago
3 months ago
5 months ago
5 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
10 months ago
10 months ago
8 months ago
8 months ago
9 months ago
9 months ago
5 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
7 months ago
7 months ago
7 months ago
7 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
11 months ago
12 months ago
12 months ago
12 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago