quico 0.1.1 → 0.2.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 +308 -70
- package/index.cjs +45 -0
- package/index.d.ts +158 -0
- package/index.js +46 -2631
- package/package.json +69 -14
- package/src/agent.js +275 -0
- package/src/client.js +439 -0
- package/src/crypto.js +519 -0
- package/src/h3.js +911 -0
- package/src/h3_client.js +317 -0
- package/src/h3_server.js +523 -0
- package/src/quic_connection.js +1238 -0
- package/src/server.js +346 -0
- package/src/streams.js +471 -0
- package/src/tls_bridge.js +211 -0
- package/src/transport.js +651 -0
- package/src/utils.js +290 -0
- package/src/webtransport.js +708 -0
- package/CHANGELOG.md +0 -25
- package/examples/webtransport_datagram_echo_server/client.html +0 -58
- package/examples/webtransport_datagram_echo_server/server.js +0 -29
- package/libs/crypto.js +0 -2107
- package/libs/h3.js +0 -1214
- package/libs/utils.js +0 -404
- package/quico.svg +0 -1
package/CHANGELOG.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [0.1.0] - 2025-08-07
|
|
9
|
-
### Added
|
|
10
|
-
- Basic QUIC server with 1-RTT support
|
|
11
|
-
- TLS 1.3 handshake (fully JS)
|
|
12
|
-
- HTTP/3 request/response over control streams
|
|
13
|
-
- Static & dynamic QPACK decoding
|
|
14
|
-
- Basic `createServer()` API
|
|
15
|
-
- Quick start example in README
|
|
16
|
-
|
|
17
|
-
### In progress
|
|
18
|
-
- WebTransport streams (uni & bidi)
|
|
19
|
-
- 0-RTT support
|
|
20
|
-
- Integration with Node.js `https`-style API
|
|
21
|
-
- Connection teardown, keep-alive, congestion control
|
|
22
|
-
|
|
23
|
-
### Notes
|
|
24
|
-
- This is a pre-release version under heavy development.
|
|
25
|
-
- API may change without notice.
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<title>WebTransport Datagram Echo Client</title>
|
|
6
|
-
</head>
|
|
7
|
-
<body>
|
|
8
|
-
<h1>WebTransport Datagram Echo</h1>
|
|
9
|
-
<button id="sendBtn">Send "Hello QUIC"</button>
|
|
10
|
-
<pre id="log"></pre>
|
|
11
|
-
|
|
12
|
-
<script>
|
|
13
|
-
const log = (msg) => {
|
|
14
|
-
console.log(msg);
|
|
15
|
-
document.getElementById('log').textContent += msg + '\n';
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
let transport;
|
|
19
|
-
let writer;
|
|
20
|
-
|
|
21
|
-
async function connect() {
|
|
22
|
-
try {
|
|
23
|
-
transport = new WebTransport('https://localhost:4433/');
|
|
24
|
-
await transport.ready;
|
|
25
|
-
log('✅ Connected to WebTransport server');
|
|
26
|
-
|
|
27
|
-
// שליחה
|
|
28
|
-
writer = transport.datagrams.writable.getWriter();
|
|
29
|
-
|
|
30
|
-
// קבלה
|
|
31
|
-
const reader = transport.datagrams.readable.getReader();
|
|
32
|
-
(async function readLoop() {
|
|
33
|
-
while (true) {
|
|
34
|
-
const { value, done } = await reader.read();
|
|
35
|
-
if (done) break;
|
|
36
|
-
const text = new TextDecoder().decode(value);
|
|
37
|
-
log('📥 Received: ' + text);
|
|
38
|
-
}
|
|
39
|
-
})();
|
|
40
|
-
} catch (err) {
|
|
41
|
-
log('❌ Connection failed: ' + err);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
document.getElementById('sendBtn').addEventListener('click', async () => {
|
|
46
|
-
if (!writer) {
|
|
47
|
-
log('Not connected yet...');
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const msg = 'Hello QUIC';
|
|
51
|
-
await writer.write(new TextEncoder().encode(msg));
|
|
52
|
-
log('📤 Sent: ' + msg);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
connect();
|
|
56
|
-
</script>
|
|
57
|
-
</body>
|
|
58
|
-
</html>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
var quico = require('../../index'); // או './index' אם אתה מריץ מהשורש
|
|
2
|
-
var fs = require('fs');
|
|
3
|
-
|
|
4
|
-
var server = quico.createServer({
|
|
5
|
-
SNICallback: function (servername, cb) {
|
|
6
|
-
console.log('Getting certificate for:', servername);
|
|
7
|
-
cb(null, {
|
|
8
|
-
key: fs.readFileSync('certs/localhost.key'),
|
|
9
|
-
cert: fs.readFileSync('certs/localhost.crt')
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
server.on('webtransport', function(session) {
|
|
15
|
-
console.log('WebTransport session opened');
|
|
16
|
-
|
|
17
|
-
session.ondatagram = function(data) {
|
|
18
|
-
console.log('Datagram from client:', Buffer.from(data).toString());
|
|
19
|
-
session.send(data);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
session.onclose = function() {
|
|
23
|
-
console.log('WebTransport session closed');
|
|
24
|
-
};
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
server.listen(4433, function() {
|
|
28
|
-
console.log('QUIC server running on port 4433');
|
|
29
|
-
});
|