transport-io 0.4.0 → 0.5.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/dist/cli/certificate.node.js +115 -0
- package/dist/cli/certificate.node.js.map +1 -0
- package/dist/cli/demo-contract.js +6 -0
- package/dist/cli/demo-contract.js.map +1 -0
- package/dist/cli/demo.node.js +131 -0
- package/dist/cli/demo.node.js.map +1 -0
- package/dist/cli/dev-server.node.js +98 -0
- package/dist/cli/dev-server.node.js.map +1 -0
- package/dist/cli/main.node.js +150 -0
- package/dist/cli/main.node.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/server.d.ts +13 -5
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +10 -4
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +25 -6
- package/dist/session.js.map +1 -1
- package/dist/transport/dev.d.ts +15 -0
- package/dist/transport/dev.d.ts.map +1 -0
- package/dist/transport/dev.js +77 -0
- package/dist/transport/dev.js.map +1 -0
- package/dist/transport/fails.node.d.ts +8 -0
- package/dist/transport/fails.node.d.ts.map +1 -1
- package/dist/transport/fails.node.js +16 -0
- package/dist/transport/fails.node.js.map +1 -1
- package/package.json +10 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The certificate `transport-io dev` pins.
|
|
3
|
+
*
|
|
4
|
+
* WebTransport will not accept an arbitrary self-signed certificate. It accepts one pinned
|
|
5
|
+
* by hash, under constraints that are not ours and are easy to get wrong: ECDSA P-256, a
|
|
6
|
+
* SHA-256 hash, and a total validity of at most 14 days. A newcomer should never learn any
|
|
7
|
+
* of that, so this module owns all three and the CLI only asks for a usable certificate.
|
|
8
|
+
*
|
|
9
|
+
* Fourteen days means expiry is normal operation rather than an error. Every start checks,
|
|
10
|
+
* and anything expired or expiring within a day is replaced silently. The user finds out
|
|
11
|
+
* only because a line says the certificate was renewed, and because a browser tab holding
|
|
12
|
+
* the old hash has to be reloaded.
|
|
13
|
+
*
|
|
14
|
+
* Minting shells out to `openssl` because Node cannot issue an X.509 certificate:
|
|
15
|
+
* `crypto.Certificate` handles SPKAC only, and there is no issuance API. The alternative is
|
|
16
|
+
* a runtime dependency, and this package has none for the CLI.
|
|
17
|
+
*/
|
|
18
|
+
import { execFileSync } from 'node:child_process';
|
|
19
|
+
import { createHash, createPrivateKey, X509Certificate } from 'node:crypto';
|
|
20
|
+
import { existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
/** The spec's ceiling. Not a preference, and not adjustable. */
|
|
23
|
+
export const MAX_VALIDITY_DAYS = 14;
|
|
24
|
+
/**
|
|
25
|
+
* Replace a certificate with less than this left. A whole day, so a `dev` session started
|
|
26
|
+
* in the morning cannot expire underneath the person running it before evening.
|
|
27
|
+
*/
|
|
28
|
+
export const RENEW_WITHIN_MS = 24 * 60 * 60 * 1000;
|
|
29
|
+
function openssl(args) {
|
|
30
|
+
try {
|
|
31
|
+
execFileSync('openssl', [...args], { stdio: 'pipe' });
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
const detail = e instanceof Error ? e.message : String(e);
|
|
35
|
+
throw new Error(`openssl failed: ${detail}\n\n` +
|
|
36
|
+
'transport-io dev mints a short-lived certificate with openssl, because Node cannot ' +
|
|
37
|
+
'issue one. Install openssl and run this again: `brew install openssl` on macOS, ' +
|
|
38
|
+
'`apt install openssl` on Debian or Ubuntu.');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function readIfUsable(certPath, keyPath) {
|
|
42
|
+
if (!existsSync(certPath) || !existsSync(keyPath))
|
|
43
|
+
return undefined;
|
|
44
|
+
try {
|
|
45
|
+
const cert = readFileSync(certPath, 'utf8');
|
|
46
|
+
const privKey = readFileSync(keyPath, 'utf8');
|
|
47
|
+
const x509 = new X509Certificate(cert);
|
|
48
|
+
const validTo = new Date(x509.validTo);
|
|
49
|
+
if (Number.isNaN(validTo.getTime()))
|
|
50
|
+
return undefined;
|
|
51
|
+
if (validTo.getTime() - Date.now() < RENEW_WITHIN_MS)
|
|
52
|
+
return undefined;
|
|
53
|
+
// The key has to match the certificate, not merely exist. An empty or stale `key.pem`
|
|
54
|
+
// beside a valid `cert.pem` passed an existence check and was handed to the server,
|
|
55
|
+
// which then failed to start for a reason no one running `dev` could be expected to
|
|
56
|
+
// work out. Checking the pair is the only way to catch that here.
|
|
57
|
+
if (!x509.checkPrivateKey(createPrivateKey(privKey)))
|
|
58
|
+
return undefined;
|
|
59
|
+
return {
|
|
60
|
+
cert,
|
|
61
|
+
privKey,
|
|
62
|
+
sha256: new Uint8Array(createHash('sha256').update(x509.raw).digest()),
|
|
63
|
+
validTo,
|
|
64
|
+
renewed: false,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Corrupt, truncated, or not a certificate. Minting a new one is always the answer.
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Returns a usable certificate, minting one only when there is not already a good one.
|
|
74
|
+
*
|
|
75
|
+
* `dir` should be somewhere already ignored by the project's version control, so this never
|
|
76
|
+
* plants a private key in a commit and never has to edit anyone's `.gitignore`.
|
|
77
|
+
*/
|
|
78
|
+
export function ensureCertificate(dir) {
|
|
79
|
+
const certPath = join(dir, 'cert.pem');
|
|
80
|
+
const keyPath = join(dir, 'key.pem');
|
|
81
|
+
const existing = readIfUsable(certPath, keyPath);
|
|
82
|
+
if (existing !== undefined)
|
|
83
|
+
return existing;
|
|
84
|
+
mkdirSync(dir, { recursive: true });
|
|
85
|
+
openssl(['ecparam', '-name', 'prime256v1', '-genkey', '-noout', '-out', keyPath]);
|
|
86
|
+
openssl([
|
|
87
|
+
'req',
|
|
88
|
+
'-new',
|
|
89
|
+
'-x509',
|
|
90
|
+
'-key',
|
|
91
|
+
keyPath,
|
|
92
|
+
'-out',
|
|
93
|
+
certPath,
|
|
94
|
+
'-days',
|
|
95
|
+
String(MAX_VALIDITY_DAYS),
|
|
96
|
+
'-subj',
|
|
97
|
+
'/CN=localhost',
|
|
98
|
+
'-addext',
|
|
99
|
+
'subjectAltName=DNS:localhost,IP:127.0.0.1',
|
|
100
|
+
]);
|
|
101
|
+
const cert = readFileSync(certPath, 'utf8');
|
|
102
|
+
const x509 = new X509Certificate(cert);
|
|
103
|
+
return {
|
|
104
|
+
cert,
|
|
105
|
+
privKey: readFileSync(keyPath, 'utf8'),
|
|
106
|
+
sha256: new Uint8Array(createHash('sha256').update(x509.raw).digest()),
|
|
107
|
+
validTo: new Date(x509.validTo),
|
|
108
|
+
renewed: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/** Whole days left, floored, for the status line. */
|
|
112
|
+
export function daysLeft(validTo, now = Date.now()) {
|
|
113
|
+
return Math.max(0, Math.floor((validTo.getTime() - now) / (24 * 60 * 60 * 1000)));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=certificate.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certificate.node.js","sourceRoot":"","sources":["../../src/cli/certificate.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-contract.js","sourceRoot":"","sources":["../../src/cli/demo-contract.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAc,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAajF,MAAM,CAAC,MAAM,YAAY,GASrB,cAAc,CAAC;IACjB,IAAI,EAAE,QAAQ,EAAY;IAC1B,MAAM,EAAE,UAAU,EAAc;CACjC,CAAC,CAAA"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `transport-io dev --demo`: two tabs talking, with no project and no files written.
|
|
3
|
+
*
|
|
4
|
+
* This exists because the acceptance test for `dev` is a person who has never used this
|
|
5
|
+
* library seeing a message cross, and serving a project they do not have cannot meet it. It
|
|
6
|
+
* writes nothing to disk and scaffolds nothing; it serves a page out of the package.
|
|
7
|
+
*
|
|
8
|
+
* It is a second thing to maintain, which is the honest cost. The e2e suite drives it, so it
|
|
9
|
+
* cannot rot quietly.
|
|
10
|
+
*/
|
|
11
|
+
import { createServer } from '../server.js';
|
|
12
|
+
import { listenDev } from '../transport/fails.node.js';
|
|
13
|
+
import { demoContract } from './demo-contract.js';
|
|
14
|
+
import { LIB_PREFIX } from './dev-server.node.js';
|
|
15
|
+
const ROOM = 'demo';
|
|
16
|
+
/** Starts the demo's WebTransport server. The certificate comes from the environment. */
|
|
17
|
+
export async function startDemoServer() {
|
|
18
|
+
const server = createServer({ contract: demoContract });
|
|
19
|
+
server.onSession((peer) => {
|
|
20
|
+
void peer.join(ROOM);
|
|
21
|
+
// Reliable: everyone sees it, including the sender, in one order.
|
|
22
|
+
peer.on('chat', (msg) => void server.to(ROOM).emit('chat', msg));
|
|
23
|
+
// Unreliable: excluded from the sender, because you know where your own pointer is.
|
|
24
|
+
peer.on('cursor', (pos) => void server.to(ROOM).except(peer.id).emit('cursor', pos));
|
|
25
|
+
});
|
|
26
|
+
await server.listen(await listenDev(), {
|
|
27
|
+
onAcceptError: (e) => console.error('session refused:', e.message),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The page.
|
|
32
|
+
*
|
|
33
|
+
* It imports the built package over `LIB_PREFIX` as native ESM, which is why the demo needs
|
|
34
|
+
* no bundler, and it imports the same contract module the server above uses, which is why
|
|
35
|
+
* the two cannot disagree.
|
|
36
|
+
*/
|
|
37
|
+
export const DEMO_PAGE = `<!doctype html>
|
|
38
|
+
<html lang="en">
|
|
39
|
+
<meta charset="utf-8">
|
|
40
|
+
<title>transport-io demo</title>
|
|
41
|
+
<style>
|
|
42
|
+
:root { color-scheme: light dark; }
|
|
43
|
+
body { font: 15px/1.5 ui-sans-serif, system-ui, sans-serif; margin: 0; height: 100vh;
|
|
44
|
+
display: flex; flex-direction: column; }
|
|
45
|
+
header { padding: .6rem 1rem; border-bottom: 1px solid color-mix(in srgb, currentColor 20%, transparent);
|
|
46
|
+
display: flex; gap: 1rem; align-items: baseline; }
|
|
47
|
+
h1 { font-size: 1rem; margin: 0; font-weight: 600; }
|
|
48
|
+
#status { font-size: .8rem; opacity: .7; }
|
|
49
|
+
#log { flex: 1; overflow-y: auto; margin: 0; padding: 1rem; list-style: none; }
|
|
50
|
+
#log li { padding: .15rem 0; }
|
|
51
|
+
#log .me { opacity: .65; }
|
|
52
|
+
form { display: flex; gap: .5rem; padding: 1rem; border-top: 1px solid color-mix(in srgb, currentColor 20%, transparent); }
|
|
53
|
+
input { flex: 1; padding: .5rem .7rem; font: inherit; border-radius: 6px;
|
|
54
|
+
border: 1px solid color-mix(in srgb, currentColor 30%, transparent); background: transparent; color: inherit; }
|
|
55
|
+
button { padding: .5rem 1rem; font: inherit; border-radius: 6px; border: 0;
|
|
56
|
+
background: currentColor; cursor: pointer; }
|
|
57
|
+
button span { color: Canvas; }
|
|
58
|
+
.dot { position: fixed; width: 10px; height: 10px; border-radius: 50%;
|
|
59
|
+
background: crimson; pointer-events: none; transition: translate 60ms linear; }
|
|
60
|
+
</style>
|
|
61
|
+
<header>
|
|
62
|
+
<h1>transport-io</h1>
|
|
63
|
+
<span id="status">connecting</span>
|
|
64
|
+
<span id="hint" style="font-size:.8rem;opacity:.5">open a second tab</span>
|
|
65
|
+
</header>
|
|
66
|
+
<ul id="log"></ul>
|
|
67
|
+
<form id="send">
|
|
68
|
+
<input id="body" placeholder="Type a message and press enter" autocomplete="off" autofocus>
|
|
69
|
+
<button type="submit"><span>Send</span></button>
|
|
70
|
+
</form>
|
|
71
|
+
<script type="module">
|
|
72
|
+
import { Client } from '${LIB_PREFIX}index.js'
|
|
73
|
+
import { connectDev } from '${LIB_PREFIX}transport/dev.js'
|
|
74
|
+
import { demoContract } from '${LIB_PREFIX}cli/demo-contract.js'
|
|
75
|
+
|
|
76
|
+
const me = 'guest-' + Math.random().toString(16).slice(2, 6)
|
|
77
|
+
const log = document.getElementById('log')
|
|
78
|
+
const status = document.getElementById('status')
|
|
79
|
+
|
|
80
|
+
const add = (text, mine) => {
|
|
81
|
+
const li = document.createElement('li')
|
|
82
|
+
li.textContent = text
|
|
83
|
+
if (mine) li.className = 'me'
|
|
84
|
+
log.append(li)
|
|
85
|
+
log.scrollTop = log.scrollHeight
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const client = new Client({ contract: demoContract, connect: () => connectDev() })
|
|
89
|
+
|
|
90
|
+
client.subscribe(() => {
|
|
91
|
+
const s = client.getSnapshot()
|
|
92
|
+
status.textContent = s.status
|
|
93
|
+
if (s.status === 'closed' && s.lastError) add('! ' + s.lastError.message, true)
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
client.on('chat', (m) => add(m.from + ': ' + m.body, m.from === me))
|
|
97
|
+
|
|
98
|
+
// The unreliable lane. Dropped frames are the point, not a fault.
|
|
99
|
+
const dots = new Map()
|
|
100
|
+
client.on('cursor', (p) => {
|
|
101
|
+
let dot = dots.get(p.from)
|
|
102
|
+
if (!dot) { dot = document.createElement('div'); dot.className = 'dot'; document.body.append(dot); dots.set(p.from, dot) }
|
|
103
|
+
dot.style.translate = p.x + 'px ' + p.y + 'px'
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
document.getElementById('send').addEventListener('submit', (e) => {
|
|
107
|
+
e.preventDefault()
|
|
108
|
+
const input = document.getElementById('body')
|
|
109
|
+
const body = input.value.trim()
|
|
110
|
+
if (body === '') return
|
|
111
|
+
client.emit('chat', { from: me, body, at: Date.now() })
|
|
112
|
+
input.value = ''
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
addEventListener('pointermove', (e) => {
|
|
116
|
+
if (client.getSnapshot().status === 'connected') {
|
|
117
|
+
client.emit('cursor', { from: me, x: e.clientX, y: e.clientY })
|
|
118
|
+
}
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
try {
|
|
122
|
+
await client.connect()
|
|
123
|
+
add('connected as ' + me + '. Open this page in a second tab.', true)
|
|
124
|
+
} catch (err) {
|
|
125
|
+
status.textContent = 'failed'
|
|
126
|
+
add('! ' + (err && err.message ? err.message : String(err)), true)
|
|
127
|
+
}
|
|
128
|
+
</script>
|
|
129
|
+
</html>
|
|
130
|
+
`;
|
|
131
|
+
//# sourceMappingURL=demo.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.node.js","sourceRoot":"","sources":["../../src/cli/demo.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EAAgB,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,MAAM,IAAI,GAAG,MAAM,CAAA;AAEnB,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,GAAG,YAAY,CAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;IAEhE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpB,kEAAkE;QAClE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;QAChE,oFAAoF;QACpF,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,EAAE,EAAE;QACrC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAG,CAAW,CAAC,OAAO,CAAC;KAC9E,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAmCP,UAAU;8BACN,UAAU;gCACR,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDzC,CAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The plain HTTP half of `transport-io dev`.
|
|
3
|
+
*
|
|
4
|
+
* Three jobs, and deliberately no fourth. It publishes the certificate hash at a fixed
|
|
5
|
+
* endpoint so the browser can pin it; it serves the package's own built ESM so a page can
|
|
6
|
+
* import the library without a bundler; and it serves whatever static files the project
|
|
7
|
+
* already built.
|
|
8
|
+
*
|
|
9
|
+
* It does NOT bundle. Bundling browser TypeScript needs a bundler, which would be the first
|
|
10
|
+
* runtime dependency this package has ever taken for the CLI, so a real project keeps
|
|
11
|
+
* running its own `vite dev` or `bun build --watch` alongside this. The demo needs no
|
|
12
|
+
* bundler because it imports the built ESM directly.
|
|
13
|
+
*
|
|
14
|
+
* `http` rather than `https` on purpose: `http://localhost` is a trustworthy origin, so the
|
|
15
|
+
* page gets a secure context for free and only the WebTransport endpoint needs a certificate.
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
18
|
+
import { createServer } from 'node:http';
|
|
19
|
+
import { extname, join, normalize, resolve } from 'node:path';
|
|
20
|
+
import { DEV_ENDPOINT } from '../transport/dev.js';
|
|
21
|
+
const MIME = {
|
|
22
|
+
'.html': 'text/html; charset=utf-8',
|
|
23
|
+
'.js': 'text/javascript; charset=utf-8',
|
|
24
|
+
'.css': 'text/css; charset=utf-8',
|
|
25
|
+
'.json': 'application/json; charset=utf-8',
|
|
26
|
+
'.map': 'application/json; charset=utf-8',
|
|
27
|
+
'.svg': 'image/svg+xml',
|
|
28
|
+
};
|
|
29
|
+
/** Where the package's own built ESM is served, so a page can import it with no build step. */
|
|
30
|
+
export const LIB_PREFIX = '/_transport-io/';
|
|
31
|
+
/**
|
|
32
|
+
* Resolves a URL path inside a root, refusing anything that escapes it.
|
|
33
|
+
*
|
|
34
|
+
* A dev server still serves the filesystem, and `..` in a request path is the oldest way to
|
|
35
|
+
* read a file that was never meant to be public.
|
|
36
|
+
*/
|
|
37
|
+
function safeJoin(root, urlPath) {
|
|
38
|
+
const clean = normalize(decodeURIComponent(urlPath)).replace(/^(\.\.[/\\])+/, '');
|
|
39
|
+
const full = resolve(join(root, clean));
|
|
40
|
+
const rootFull = resolve(root);
|
|
41
|
+
if (full !== rootFull && !full.startsWith(rootFull + '/'))
|
|
42
|
+
return undefined;
|
|
43
|
+
return full;
|
|
44
|
+
}
|
|
45
|
+
function sendFile(res, file) {
|
|
46
|
+
if (!existsSync(file))
|
|
47
|
+
return false;
|
|
48
|
+
let stat;
|
|
49
|
+
try {
|
|
50
|
+
stat = statSync(file);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
if (!stat.isFile())
|
|
56
|
+
return false;
|
|
57
|
+
res.writeHead(200, { 'content-type': MIME[extname(file)] ?? 'application/octet-stream' });
|
|
58
|
+
res.end(readFileSync(file));
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
export function startDevServer(opts) {
|
|
62
|
+
const server = createServer((req, res) => {
|
|
63
|
+
const path = (req.url ?? '/').split('?')[0] ?? '/';
|
|
64
|
+
if (path === DEV_ENDPOINT) {
|
|
65
|
+
res.writeHead(200, {
|
|
66
|
+
'content-type': 'application/json; charset=utf-8',
|
|
67
|
+
// The hash changes when the certificate is renewed, so it must never be cached.
|
|
68
|
+
'cache-control': 'no-store',
|
|
69
|
+
});
|
|
70
|
+
res.end(JSON.stringify(opts.manifest));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (path.startsWith(LIB_PREFIX)) {
|
|
74
|
+
const file = safeJoin(opts.distDir, path.slice(LIB_PREFIX.length));
|
|
75
|
+
if (file !== undefined && sendFile(res, file))
|
|
76
|
+
return;
|
|
77
|
+
res.writeHead(404).end('not found');
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (opts.staticDir !== undefined) {
|
|
81
|
+
const rel = path === '/' ? '/index.html' : path;
|
|
82
|
+
const file = safeJoin(opts.staticDir, rel);
|
|
83
|
+
if (file !== undefined && sendFile(res, file))
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (opts.indexHtml !== undefined && (path === '/' || path === '/index.html')) {
|
|
87
|
+
res.writeHead(200, { 'content-type': MIME['.html'] });
|
|
88
|
+
res.end(opts.indexHtml);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
res.writeHead(404).end('not found');
|
|
92
|
+
});
|
|
93
|
+
return new Promise((ok, fail) => {
|
|
94
|
+
server.once('error', fail);
|
|
95
|
+
server.listen(opts.port, '127.0.0.1', () => ok(server));
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=dev-server.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-server.node.js","sourceRoot":"","sources":["../../src/cli/dev-server.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* `npx transport-io dev`.
|
|
4
|
+
*
|
|
5
|
+
* The first thirty minutes with this library used to be two openssl invocations, three
|
|
6
|
+
* constraints nobody tells you about, a DER extraction, a SHA-256, and an undocumented hop
|
|
7
|
+
* getting that hash from the server process into the browser bundle. This closes all of it.
|
|
8
|
+
*
|
|
9
|
+
* What it does NOT do is bundle. That needs a bundler, which would be this package's first
|
|
10
|
+
* CLI dependency, so a real project keeps running its own `vite dev` or `bun build --watch`
|
|
11
|
+
* beside this and points `--static` at the output. `--demo` needs no bundler because the
|
|
12
|
+
* page imports the built package as native ESM.
|
|
13
|
+
*
|
|
14
|
+
* Everything here is Node built-ins and this library's own source. The import boundary check
|
|
15
|
+
* enforces that, so a future feature cannot quietly add a dependency.
|
|
16
|
+
*/
|
|
17
|
+
import { spawn } from 'node:child_process';
|
|
18
|
+
import { existsSync } from 'node:fs';
|
|
19
|
+
import { dirname, resolve } from 'node:path';
|
|
20
|
+
import { fileURLToPath } from 'node:url';
|
|
21
|
+
import { daysLeft, ensureCertificate } from './certificate.node.js';
|
|
22
|
+
import { startDevServer } from './dev-server.node.js';
|
|
23
|
+
const DEFAULT_PORT = 3000;
|
|
24
|
+
const DEFAULT_WT_PORT = 4433;
|
|
25
|
+
function parse(argv) {
|
|
26
|
+
let entry;
|
|
27
|
+
let demo = false;
|
|
28
|
+
let port = DEFAULT_PORT;
|
|
29
|
+
let wtPort = DEFAULT_WT_PORT;
|
|
30
|
+
let staticDir;
|
|
31
|
+
let help = false;
|
|
32
|
+
for (let i = 0; i < argv.length; i++) {
|
|
33
|
+
const a = argv[i];
|
|
34
|
+
if (a === '--demo')
|
|
35
|
+
demo = true;
|
|
36
|
+
else if (a === '--help' || a === '-h')
|
|
37
|
+
help = true;
|
|
38
|
+
else if (a === '--port')
|
|
39
|
+
port = Number(argv[++i]);
|
|
40
|
+
else if (a === '--wt-port')
|
|
41
|
+
wtPort = Number(argv[++i]);
|
|
42
|
+
else if (a === '--static')
|
|
43
|
+
staticDir = argv[++i];
|
|
44
|
+
else if (!a.startsWith('-'))
|
|
45
|
+
entry ??= a;
|
|
46
|
+
}
|
|
47
|
+
return { entry, demo, port, wtPort, staticDir, help };
|
|
48
|
+
}
|
|
49
|
+
const USAGE = `transport-io dev - a local WebTransport server with a pinned certificate
|
|
50
|
+
|
|
51
|
+
npx transport-io dev [entry] run your server, with a certificate already minted
|
|
52
|
+
npx transport-io dev --demo two tabs talking, no project needed
|
|
53
|
+
|
|
54
|
+
Options
|
|
55
|
+
--demo serve the built-in demo instead of a project
|
|
56
|
+
--port <n> HTTP port for the page (default ${DEFAULT_PORT})
|
|
57
|
+
--wt-port <n> WebTransport port (default ${DEFAULT_WT_PORT})
|
|
58
|
+
--static <dir> directory of files to serve (default ./public, then ./web)
|
|
59
|
+
|
|
60
|
+
Your server file should listen with the certificate this command minted:
|
|
61
|
+
|
|
62
|
+
import { listenDev } from 'transport-io/node-transport'
|
|
63
|
+
await server.listen(await listenDev())
|
|
64
|
+
|
|
65
|
+
This does not bundle browser code. Keep running your own bundler and point --static at it.
|
|
66
|
+
`;
|
|
67
|
+
function findStatic(explicit) {
|
|
68
|
+
if (explicit !== undefined)
|
|
69
|
+
return resolve(explicit);
|
|
70
|
+
for (const candidate of ['public', 'web/dist', 'web', 'dist']) {
|
|
71
|
+
const full = resolve(candidate);
|
|
72
|
+
if (existsSync(full))
|
|
73
|
+
return full;
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
async function main() {
|
|
78
|
+
const args = parse(process.argv.slice(2));
|
|
79
|
+
const command = process.argv[2];
|
|
80
|
+
if (args.help || command === undefined || (command !== 'dev' && !command.startsWith('-'))) {
|
|
81
|
+
if (command !== undefined && command !== 'dev' && !command.startsWith('-')) {
|
|
82
|
+
console.error(`unknown command '${command}'\n`);
|
|
83
|
+
}
|
|
84
|
+
console.log(USAGE);
|
|
85
|
+
process.exit(args.help ? 0 : 1);
|
|
86
|
+
}
|
|
87
|
+
// `node_modules/.cache` is ignored by every project already, so a private key never lands
|
|
88
|
+
// in a commit and this never edits anyone's .gitignore.
|
|
89
|
+
const cacheDir = resolve('node_modules/.cache/transport-io');
|
|
90
|
+
const cert = ensureCertificate(cacheDir);
|
|
91
|
+
const wtUrl = `https://127.0.0.1:${args.wtPort}/`;
|
|
92
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
93
|
+
// `dist/cli` -> `dist`, the directory served as ESM to the browser.
|
|
94
|
+
const distDir = resolve(here, '..');
|
|
95
|
+
const staticDir = args.demo ? undefined : findStatic(args.staticDir);
|
|
96
|
+
let demoPage;
|
|
97
|
+
if (args.demo) {
|
|
98
|
+
const { DEMO_PAGE, startDemoServer } = await import('./demo.node.js');
|
|
99
|
+
demoPage = DEMO_PAGE;
|
|
100
|
+
process.env.TRANSPORT_IO_DEV_CERT = cert.cert;
|
|
101
|
+
process.env.TRANSPORT_IO_DEV_KEY = cert.privKey;
|
|
102
|
+
process.env.TRANSPORT_IO_DEV_WT_PORT = String(args.wtPort);
|
|
103
|
+
await startDemoServer();
|
|
104
|
+
}
|
|
105
|
+
await startDevServer({
|
|
106
|
+
port: args.port,
|
|
107
|
+
...(staticDir === undefined ? {} : { staticDir }),
|
|
108
|
+
...(demoPage === undefined ? {} : { indexHtml: demoPage }),
|
|
109
|
+
distDir,
|
|
110
|
+
manifest: { sha256: [...cert.sha256], url: wtUrl },
|
|
111
|
+
});
|
|
112
|
+
const short = Buffer.from(cert.sha256).toString('hex').slice(0, 6);
|
|
113
|
+
console.log('');
|
|
114
|
+
console.log('transport-io dev');
|
|
115
|
+
console.log('');
|
|
116
|
+
console.log(` page http://localhost:${args.port}`);
|
|
117
|
+
console.log(` webtransport ${wtUrl}`);
|
|
118
|
+
console.log(` certificate valid ${daysLeft(cert.validTo)}d sha-256 ${short}…`);
|
|
119
|
+
if (cert.renewed) {
|
|
120
|
+
console.log(' certificate renewed, so reload any tab you already had open');
|
|
121
|
+
}
|
|
122
|
+
console.log('');
|
|
123
|
+
console.log(' Open the page in two tabs. Chrome or Firefox; Safari cannot connect.');
|
|
124
|
+
if (!args.demo && staticDir === undefined) {
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log(' No static directory found. Pass --static <dir> to serve your built page.');
|
|
127
|
+
}
|
|
128
|
+
console.log('');
|
|
129
|
+
if (!args.demo && args.entry !== undefined) {
|
|
130
|
+
const child = spawn(process.execPath, [args.entry], {
|
|
131
|
+
stdio: 'inherit',
|
|
132
|
+
env: {
|
|
133
|
+
...process.env,
|
|
134
|
+
TRANSPORT_IO_DEV_CERT: cert.cert,
|
|
135
|
+
TRANSPORT_IO_DEV_KEY: cert.privKey,
|
|
136
|
+
TRANSPORT_IO_DEV_WT_PORT: String(args.wtPort),
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
child.on('exit', (code) => process.exit(code ?? 0));
|
|
140
|
+
}
|
|
141
|
+
else if (!args.demo) {
|
|
142
|
+
console.log(' No entry given, so no server was started. Pass one, or use --demo.');
|
|
143
|
+
console.log('');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
main().catch((e) => {
|
|
147
|
+
console.error(e instanceof Error ? e.message : String(e));
|
|
148
|
+
process.exit(1);
|
|
149
|
+
});
|
|
150
|
+
//# sourceMappingURL=main.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.node.js","sourceRoot":"","sources":["../../src/cli/main.node.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Every error carries a stable code and a sentence saying what to do about it. */
|
|
2
|
-
export type TransportErrorCode = 'WT_NO_SUPPORT' | 'WT_DATAGRAM_TOO_LARGE' | 'WT_ROOM_NOT_JOINED' | 'WT_SESSION_CLOSED' | 'WT_ABORTED' | 'WT_HANDLER_ERROR' | 'WT_PROTOCOL_ERROR' | 'WT_UNSUPPORTED_CODEC' | 'WT_PAYLOAD_TOO_LARGE' | 'WT_HANDSHAKE_INCOMPLETE' | 'WT_UNKNOWN_EVENT' | 'WT_VALIDATION_FAILED' | 'WT_PROTOCOL_VERSION_MISMATCH' | 'WT_CONTRACT_MISMATCH' | 'WT_HANDSHAKE_TIMEOUT' | 'WT_PEER_TOO_SLOW' | 'WT_TOO_MANY_STREAMS' | 'WT_RELIABILITY_REFUSED';
|
|
2
|
+
export type TransportErrorCode = 'WT_NO_SUPPORT' | 'WT_DATAGRAM_TOO_LARGE' | 'WT_ROOM_NOT_JOINED' | 'WT_SESSION_CLOSED' | 'WT_ABORTED' | 'WT_HANDLER_ERROR' | 'WT_PROTOCOL_ERROR' | 'WT_UNSUPPORTED_CODEC' | 'WT_PAYLOAD_TOO_LARGE' | 'WT_HANDSHAKE_INCOMPLETE' | 'WT_UNKNOWN_EVENT' | 'WT_VALIDATION_FAILED' | 'WT_PROTOCOL_VERSION_MISMATCH' | 'WT_CONTRACT_MISMATCH' | 'WT_HANDSHAKE_TIMEOUT' | 'WT_PEER_TOO_SLOW' | 'WT_TOO_MANY_STREAMS' | 'WT_RELIABILITY_REFUSED' | 'WT_DEV_ONLY';
|
|
3
3
|
export declare class TransportError extends Error {
|
|
4
4
|
readonly code: TransportErrorCode;
|
|
5
5
|
readonly remedy: string;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,yBAAyB,GACzB,kBAAkB,GAClB,sBAAsB,GACtB,8BAA8B,GAC9B,sBAAsB,GACtB,sBAAsB,GACtB,kBAAkB,GAClB,qBAAqB,GACrB,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,YAAY,GACZ,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,yBAAyB,GACzB,kBAAkB,GAClB,sBAAsB,GACtB,8BAA8B,GAC9B,sBAAsB,GACtB,sBAAsB,GACtB,kBAAkB,GAClB,qBAAqB,GACrB,wBAAwB,GACxB,aAAa,CAAA;AAEjB,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,YAAY,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAKpE;CACF"}
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAAoB;IACxB,MAAM,CAAQ;IAEvB,YAAY,IAAwB,EAAE,OAAe,EAAE,MAAc;QACnE,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,MAAM,MAAM,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF"}
|
package/dist/index.js
CHANGED
|
@@ -14,5 +14,5 @@ export { createServer, Server, } from './server.js';
|
|
|
14
14
|
* `changeset version` moves the manifest, so this moves in the same commit - which the test
|
|
15
15
|
* enforces rather than trusting anyone to remember.
|
|
16
16
|
*/
|
|
17
|
-
export const VERSION = '0.
|
|
17
|
+
export const VERSION = '0.5.0';
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
package/dist/server.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { type Adapter, type PeerId } from './adapter.ts';
|
|
|
3
3
|
import { type AnyMap, type CallableOf, type Contract, type Registered, type StreamableOf } from './contract.ts';
|
|
4
4
|
import { type SessionStats } from './session.ts';
|
|
5
5
|
import type { Connection } from './transport/types.ts';
|
|
6
|
-
export interface ServerPeer<M extends AnyMap =
|
|
6
|
+
export interface ServerPeer<M extends AnyMap = Registered> {
|
|
7
7
|
readonly id: PeerId;
|
|
8
8
|
readonly origin: number;
|
|
9
9
|
readonly rooms: readonly string[];
|
|
@@ -14,9 +14,17 @@ export interface ServerPeer<M extends AnyMap = AnyMap> {
|
|
|
14
14
|
stats(): SessionStats;
|
|
15
15
|
close(code?: number, reason?: string): void;
|
|
16
16
|
}
|
|
17
|
-
export interface CallContext {
|
|
17
|
+
export interface CallContext<M extends AnyMap = Registered> {
|
|
18
18
|
/** Fires when the initiator resets the stream. Immediate, and free on this transport. */
|
|
19
19
|
readonly signal: AbortSignal;
|
|
20
|
+
/**
|
|
21
|
+
* The peer that made this call.
|
|
22
|
+
*
|
|
23
|
+
* A responder is registered once and answers every peer, so this is the only thing that
|
|
24
|
+
* says who is asking. `peer.id` is a value this server assigned itself and identifies
|
|
25
|
+
* nobody: authenticate the payload, then use `peer.join` to act on the result.
|
|
26
|
+
*/
|
|
27
|
+
readonly peer: ServerPeer<M>;
|
|
20
28
|
}
|
|
21
29
|
/** Anything that yields connections: a transport listener, or a test double. */
|
|
22
30
|
export interface ConnectionSource {
|
|
@@ -36,7 +44,7 @@ export interface ServerOptions {
|
|
|
36
44
|
readonly hostOrdinal?: number;
|
|
37
45
|
readonly validateInbound?: boolean;
|
|
38
46
|
}
|
|
39
|
-
export interface RoomTarget<M extends AnyMap =
|
|
47
|
+
export interface RoomTarget<M extends AnyMap = Registered> {
|
|
40
48
|
emit<K extends keyof M & string>(event: K, payload: M[K]['payload']): Promise<void>;
|
|
41
49
|
except(...peers: PeerId[]): RoomTarget<M>;
|
|
42
50
|
}
|
|
@@ -64,13 +72,13 @@ export declare class Server<M extends AnyMap = Registered> {
|
|
|
64
72
|
*/
|
|
65
73
|
get acceptErrors(): number;
|
|
66
74
|
/** Register a responder for a callable event. */
|
|
67
|
-
handle<K extends CallableOf<M> & string>(event: K, handler: (payload: M[K]['payload'], ctx: CallContext) => Promise<M[K]['returns']>): () => void;
|
|
75
|
+
handle<K extends CallableOf<M> & string>(event: K, handler: (payload: M[K]['payload'], ctx: CallContext<M>) => Promise<M[K]['returns']>): () => void;
|
|
68
76
|
/**
|
|
69
77
|
* Register a responder for a streaming event. The handler is an async generator: each
|
|
70
78
|
* `yield` is one frame, and it does not resume until that frame has been accepted, so a
|
|
71
79
|
* slow consumer slows the generator instead of filling a queue.
|
|
72
80
|
*/
|
|
73
|
-
handle<K extends StreamableOf<M> & string>(event: K, handler: (payload: M[K]['payload'], ctx: CallContext) => AsyncIterable<M[K]['yields']>): () => void;
|
|
81
|
+
handle<K extends StreamableOf<M> & string>(event: K, handler: (payload: M[K]['payload'], ctx: CallContext<M>) => AsyncIterable<M[K]['yields']>): () => void;
|
|
74
82
|
onSession(cb: (peer: ServerPeer<M>) => void): () => void;
|
|
75
83
|
memberCount(room: string): number;
|
|
76
84
|
accept(conn: Connection): Promise<ServerPeer<M>>;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,UAAU,EACf,KAAK,QAAQ,EAEb,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,eAAe,CAAA;AAItB,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -122,6 +122,8 @@ export class Server {
|
|
|
122
122
|
stats: () => session.stats(),
|
|
123
123
|
close: (code = CloseCode.WT_NO_ERROR, reason = '') => session.close(code, reason),
|
|
124
124
|
};
|
|
125
|
+
// Before any responder is registered, so no handler can ever observe an absent peer.
|
|
126
|
+
session.attachPeer(peer);
|
|
125
127
|
for (const [event, handler] of this.#callHandlers)
|
|
126
128
|
session.handle(event, handler);
|
|
127
129
|
this.#peers.set(id, { peer, session });
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAgB,aAAa,EAAe,MAAM,cAAc,CAAA;AACvE,OAAO,EAEL,eAAe,GAMhB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAgB,aAAa,EAAe,MAAM,cAAc,CAAA;AACvE,OAAO,EAEL,eAAe,GAMhB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAA;AAyDzD,MAAM,OAAO,MAAM;IACR,KAAK,CAAe;IACpB,OAAO,CAAQ;IACf,QAAQ,CAAiB;IACzB,MAAM,GAAG,IAAI,GAAG,EAAqD,CAAA;IAC9E,aAAa,GAAG,CAAC,CAAA;IACjB,UAAU,CAA2B;IAC5B,OAAO,GAAsC,EAAE,CAAA;IACxD,MAAM,CAAwB;IAC9B,IAAI,CAAiB;IACrB,QAAQ,CAAqB;IAC7B,SAAS,GAAG,CAAC,CAAA;IACb,aAAa,GAAG,CAAC,CAAA;IACR,aAAa,GAAG,IAAI,GAAG,EAA4D,CAAA;IAE5F,YAAY,IAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAA;QACrE,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,sFAAsF;IACtF;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,CAAC,MAAyB,EAAE,IAAoB;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/C,gFAAgF;QAChF,2DAA2D;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAEvD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAM;QAChC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC3C,8EAA8E;gBAC9E,4EAA4E;gBAC5E,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;oBAC1C,IAAI,CAAC,aAAa,EAAE,CAAA;oBACpB,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC1B,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QACJ,kFAAkF;QAClF,4EAA4E;QAC5E,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YACnC,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAgBD,MAAM,CAAC,KAAa,EAAE,OAAuD;QAC3E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAgB,CAAC,CAAA;QAC/C,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAgB,CAAC,CAAA;QACzC,CAAC;QACD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAChC,iFAAiF;YACjF,kFAAkF;YAClF,mFAAmF;YACnF,qFAAqF;YACrF,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACzE,CAAC,CAAA;IACH,CAAC;IAED,SAAS,CAAC,EAAiC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrB,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAClC,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACvC,CAAC,CAAA;IACH,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAgB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,EAAE,GAAW,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE;YAChC,KAAK;YACL,MAAM;YACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;SACrD,CAAC,CAAA;QAEF,MAAM,IAAI,GAAkB;YAC1B,EAAE;YACF,MAAM;YACN,IAAI,KAAK;gBACP,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACtB,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC;YAC3C,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAgB,CAAC,CAAC;YACjF,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;YACtD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;YAC5B,KAAK,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;SAClF,CAAA;QAED,qFAAqF;QACrF,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACxB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAgB,CAAC,CAAA;QAC1F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACtC,KAAK,IAAI,CAAC,MAAM;aACb,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACtC,OAAO,CAAC,OAAO,EAAE,CAAA;YACjB,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAC1B,CAAC,CAAC;YACF,iFAAiF;YACjF,kFAAkF;YAClF,gFAAgF;aAC/E,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAEzB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;QACrB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO;YAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,EAAE,CAAC,IAAY;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,IAAI,GAAG,CAAC,MAAgB,EAAiB,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACvB,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YAC7E,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;SAClD,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAC/E,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IACD,WAAW;QACT,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACxE,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAgC,IAAmB;IAC7E,OAAO,IAAI,MAAM,CAAI,IAAI,CAAC,CAAA;AAC5B,CAAC"}
|
package/dist/session.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export type EventHandler = (payload: unknown, meta: {
|
|
|
11
11
|
}) => void;
|
|
12
12
|
export type CallHandler = (payload: unknown, ctx: {
|
|
13
13
|
readonly signal: AbortSignal;
|
|
14
|
+
readonly peer: unknown;
|
|
14
15
|
}) => Promise<unknown>;
|
|
15
16
|
/**
|
|
16
17
|
* A responder for an event declaring `yields`. The generator's `next()` is what the credit
|
|
@@ -19,6 +20,7 @@ export type CallHandler = (payload: unknown, ctx: {
|
|
|
19
20
|
*/
|
|
20
21
|
export type StreamHandler = (payload: unknown, ctx: {
|
|
21
22
|
readonly signal: AbortSignal;
|
|
23
|
+
readonly peer: unknown;
|
|
22
24
|
}) => AsyncIterable<unknown>;
|
|
23
25
|
/**
|
|
24
26
|
* What `stream()` returns.
|
|
@@ -74,6 +76,8 @@ export declare class Session {
|
|
|
74
76
|
emit(event: string, payload: unknown): void;
|
|
75
77
|
/** Register a responder. Only events declaring `returns` are callable. */
|
|
76
78
|
handle(event: string, handler: CallHandler | StreamHandler): () => void;
|
|
79
|
+
/** Called by `Server.accept` once the peer facade exists. */
|
|
80
|
+
attachPeer(peer: unknown): void;
|
|
77
81
|
/** Revoke a responder on this session. `Server.handle`'s disposer needs it. */
|
|
78
82
|
unhandle(event: string): void;
|
|
79
83
|
/** True once the connection has closed and everything it held has been released. */
|
|
@@ -93,8 +97,10 @@ export declare class Session {
|
|
|
93
97
|
/**
|
|
94
98
|
* The streaming form of `call()`, on the same wire shape: one bidirectional stream, one
|
|
95
99
|
* CALL_REQUEST, then a sequence of CALL_RESPONSE frames terminated by stream close.
|
|
96
|
-
* PROTOCOL.md §6.3 always required receivers to accept a sequence, so
|
|
97
|
-
* type and breaks no version 0 peer.
|
|
100
|
+
* PROTOCOL.md §6.3 always required receivers to accept a sequence, so the response
|
|
101
|
+
* direction adds no frame type and breaks no version 0 peer. The initiator's direction
|
|
102
|
+
* does add one: CALL_CREDIT (0x08) carries the window, and a peer that never sends it
|
|
103
|
+
* stalls after the first 32 frames.
|
|
98
104
|
*
|
|
99
105
|
* Every guard `call()` applies is applied here, synchronously, before any stream is
|
|
100
106
|
* opened. A method returning an iterable cannot report a bad event name by rejecting a
|
|
@@ -148,8 +154,8 @@ export declare class Session {
|
|
|
148
154
|
* every origin it has sent to. Both grow with the number of peers, so both are things a
|
|
149
155
|
* disposed session has no business still holding.
|
|
150
156
|
*
|
|
151
|
-
* Exposed for the disposal test. `Session` is internal - `index.ts` exports
|
|
152
|
-
*
|
|
157
|
+
* Exposed for the disposal test. `Session` is internal - `index.ts` exports `SessionStats`
|
|
158
|
+
* and `StreamResult` from this module, never the class - so this is not public surface.
|
|
153
159
|
*/
|
|
154
160
|
get retainedPeerState(): number;
|
|
155
161
|
/** Registered callbacks of every kind. Zero after disposal, or something still routes. */
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAe,KAAK,KAAK,EAAgB,MAAM,aAAa,CAAA;AACnE,OAAO,EAAkB,KAAK,UAAU,EAA6B,MAAM,gBAAgB,CAAA;AAc3F,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAElE,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AACtF,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAe,KAAK,KAAK,EAAgB,MAAM,aAAa,CAAA;AACnE,OAAO,EAAkB,KAAK,UAAU,EAA6B,MAAM,gBAAgB,CAAA;AAc3F,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAElE,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AACtF,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAC1D,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAC1D,aAAa,CAAC,OAAO,CAAC,CAAA;AAE3B;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACvD,yFAAyF;IACzF,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IACpC,yEAAyE;IACzE,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,6FAA6F;IAC7F,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IACvB;;;OAGG;IACH,MAAM,IAAI,IAAI,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CACrD;AAsGD,qBAAa,OAAO;;IA8ClB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAEnC,YAAY,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAiBjD;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEK,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CAoEjC;IAED;6FACyF;IACzF,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAK/D;IAED,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI,CAUnD;IAED,4FAA4F;IAC5F,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA2B1C;IAED,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,IAAI,CAiBtE;IAED,6DAA6D;IAC7D,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE9B;IAED,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,oFAAoF;IACpF,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;;;OAQG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACvC,OAAO,CAAC,OAAO,CAAC,CAqElB;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACvC,YAAY,CAAC,OAAO,CAAC,CAgCvB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IA+BD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,wFAAwF;IACxF,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE5B;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAYxC;IAED,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAIzC;IAED,KAAK,IAAI,YAAY,CAEpB;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQxC;IAED;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,IAAI,CAmBd;IA8fD,4EAA4E;IAC5E;;;;;;;;OAQG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,0FAA0F;IAC1F,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,yEAAyE;IACzE,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;CAwEF"}
|
package/dist/session.js
CHANGED
|
@@ -120,6 +120,16 @@ export class Session {
|
|
|
120
120
|
#sequences = new Map();
|
|
121
121
|
#controlHandlers = new Set();
|
|
122
122
|
#callHandlers = new Map();
|
|
123
|
+
/**
|
|
124
|
+
* The `ServerPeer` this session belongs to, opaque here.
|
|
125
|
+
*
|
|
126
|
+
* A call handler is registered on the server and answers every peer, so without this it
|
|
127
|
+
* had no way to learn who called it: it could not join the caller to a room or check the
|
|
128
|
+
* caller's permissions, and an authenticated request had to be hand-rolled as a pair of
|
|
129
|
+
* events. `Session` is shared with the client, which registers no responders, so the type
|
|
130
|
+
* stays `unknown` here and `Server` supplies the only value that is ever read.
|
|
131
|
+
*/
|
|
132
|
+
#peer;
|
|
123
133
|
/**
|
|
124
134
|
* Every inbound call or stream currently being served. A streaming responder parked for
|
|
125
135
|
* credit waits on a peer that may never return, and the credit scheme cannot distinguish
|
|
@@ -273,6 +283,10 @@ export class Session {
|
|
|
273
283
|
this.#callHandlers.delete(event);
|
|
274
284
|
};
|
|
275
285
|
}
|
|
286
|
+
/** Called by `Server.accept` once the peer facade exists. */
|
|
287
|
+
attachPeer(peer) {
|
|
288
|
+
this.#peer = peer;
|
|
289
|
+
}
|
|
276
290
|
/** Revoke a responder on this session. `Server.handle`'s disposer needs it. */
|
|
277
291
|
unhandle(event) {
|
|
278
292
|
this.#callHandlers.delete(event);
|
|
@@ -342,8 +356,10 @@ export class Session {
|
|
|
342
356
|
/**
|
|
343
357
|
* The streaming form of `call()`, on the same wire shape: one bidirectional stream, one
|
|
344
358
|
* CALL_REQUEST, then a sequence of CALL_RESPONSE frames terminated by stream close.
|
|
345
|
-
* PROTOCOL.md §6.3 always required receivers to accept a sequence, so
|
|
346
|
-
* type and breaks no version 0 peer.
|
|
359
|
+
* PROTOCOL.md §6.3 always required receivers to accept a sequence, so the response
|
|
360
|
+
* direction adds no frame type and breaks no version 0 peer. The initiator's direction
|
|
361
|
+
* does add one: CALL_CREDIT (0x08) carries the window, and a peer that never sends it
|
|
362
|
+
* stalls after the first 32 frames.
|
|
347
363
|
*
|
|
348
364
|
* Every guard `call()` applies is applied here, synchronously, before any stream is
|
|
349
365
|
* opened. A method returning an iterable cannot report a bad event name by rejecting a
|
|
@@ -724,7 +740,10 @@ export class Session {
|
|
|
724
740
|
});
|
|
725
741
|
return;
|
|
726
742
|
}
|
|
727
|
-
const result = await handler(value, {
|
|
743
|
+
const result = await handler(value, {
|
|
744
|
+
signal: controller.signal,
|
|
745
|
+
peer: this.#peer,
|
|
746
|
+
});
|
|
728
747
|
await writer.write(encodeFrame({
|
|
729
748
|
type: FrameType.CALL_RESPONSE,
|
|
730
749
|
codec: Codec.JSON,
|
|
@@ -749,7 +768,7 @@ export class Session {
|
|
|
749
768
|
* still awaited, for a transport that honours it. See D93 for the measurement.
|
|
750
769
|
*/
|
|
751
770
|
async #serveStream(handler, payload, name, writer, controller, inbound) {
|
|
752
|
-
const produced = handler(payload, { signal: controller.signal });
|
|
771
|
+
const produced = handler(payload, { signal: controller.signal, peer: this.#peer });
|
|
753
772
|
if (produced === null ||
|
|
754
773
|
typeof produced !== 'object' ||
|
|
755
774
|
!(Symbol.asyncIterator in produced)) {
|
|
@@ -938,8 +957,8 @@ export class Session {
|
|
|
938
957
|
* every origin it has sent to. Both grow with the number of peers, so both are things a
|
|
939
958
|
* disposed session has no business still holding.
|
|
940
959
|
*
|
|
941
|
-
* Exposed for the disposal test. `Session` is internal - `index.ts` exports
|
|
942
|
-
*
|
|
960
|
+
* Exposed for the disposal test. `Session` is internal - `index.ts` exports `SessionStats`
|
|
961
|
+
* and `StreamResult` from this module, never the class - so this is not public surface.
|
|
943
962
|
*/
|
|
944
963
|
get retainedPeerState() {
|
|
945
964
|
return this.#gate.tracked + this.#sequences.size;
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Connection } from './types.ts';
|
|
2
|
+
/** Where `transport-io dev` publishes the hash. Fixed, so neither side configures it. */
|
|
3
|
+
export declare const DEV_ENDPOINT = "/.well-known/transport-io-dev";
|
|
4
|
+
export interface DevConnectOptions {
|
|
5
|
+
/** Overrides the endpoint. For tests and for a dev server on another path. */
|
|
6
|
+
readonly endpoint?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Connects using the certificate `transport-io dev` minted, fetched from the page origin.
|
|
10
|
+
*
|
|
11
|
+
* The WebTransport URL comes from the same response, so the page never hardcodes a port and
|
|
12
|
+
* cannot drift out of step with the server the CLI started.
|
|
13
|
+
*/
|
|
14
|
+
export declare function connectDev(opts?: DevConnectOptions): Promise<Connection>;
|
|
15
|
+
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/transport/dev.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,yFAAyF;AACzF,eAAO,MAAM,YAAY,kCAAkC,CAAA;AAwB3D,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4ClF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The development-only browser connection.
|
|
3
|
+
*
|
|
4
|
+
* A pinned certificate has to reach the browser as bytes, and in development the only place
|
|
5
|
+
* those bytes exist is the process that minted the certificate. `transport-io dev` serves
|
|
6
|
+
* them at a fixed endpoint and this fetches them, which closes the one hop the documentation
|
|
7
|
+
* used to end at: `declare const certificateHash: Uint8Array`.
|
|
8
|
+
*
|
|
9
|
+
* Fetching a certificate hash from an endpoint and trusting whatever comes back is a
|
|
10
|
+
* development affordance and nothing else. It must therefore be impossible to turn on in
|
|
11
|
+
* production by accident, and "impossible" here is a property of the code rather than a
|
|
12
|
+
* convention anyone has to follow:
|
|
13
|
+
*
|
|
14
|
+
* - it refuses unless the page itself is on a loopback origin, and
|
|
15
|
+
* - it refuses unless the WebTransport URL it was handed is also loopback.
|
|
16
|
+
*
|
|
17
|
+
* A bundle that ships to production therefore cannot connect through this function, whatever
|
|
18
|
+
* anyone's build configuration says. An `NODE_ENV` check would not give that: the value is
|
|
19
|
+
* whatever the bundler substituted, it is routinely wrong, and it is invisible at runtime.
|
|
20
|
+
* A hostname cannot be got wrong.
|
|
21
|
+
*
|
|
22
|
+
* Nothing here is imported at module scope, so importing this file on a server is safe.
|
|
23
|
+
*/
|
|
24
|
+
import { TransportError } from '../errors.js';
|
|
25
|
+
import { connectBrowser } from './browser.js';
|
|
26
|
+
/** Where `transport-io dev` publishes the hash. Fixed, so neither side configures it. */
|
|
27
|
+
export const DEV_ENDPOINT = '/.well-known/transport-io-dev';
|
|
28
|
+
/**
|
|
29
|
+
* `localhost` resolves to a loopback address by specification, and the two literals are
|
|
30
|
+
* loopback by definition. Nothing else qualifies, including a hostname an attacker controls
|
|
31
|
+
* that happens to resolve to 127.0.0.1: this is a check on what the page and the URL say,
|
|
32
|
+
* which is what makes it decidable without a DNS round trip.
|
|
33
|
+
*/
|
|
34
|
+
const LOOPBACK = new Set(['localhost', '127.0.0.1', '[::1]', '::1']);
|
|
35
|
+
function refuse(what, host) {
|
|
36
|
+
throw new TransportError('WT_DEV_ONLY', `connectDev() refuses a non-loopback ${what} (${host === '' ? '<none>' : host})`, 'connectDev fetches a certificate hash from the page origin and is for local development only. Use connectBrowser with your own certificateHash, or a real certificate, anywhere else.');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Connects using the certificate `transport-io dev` minted, fetched from the page origin.
|
|
40
|
+
*
|
|
41
|
+
* The WebTransport URL comes from the same response, so the page never hardcodes a port and
|
|
42
|
+
* cannot drift out of step with the server the CLI started.
|
|
43
|
+
*/
|
|
44
|
+
export async function connectDev(opts = {}) {
|
|
45
|
+
const loc = globalThis.location;
|
|
46
|
+
if (loc === undefined) {
|
|
47
|
+
throw new TransportError('WT_DEV_ONLY', 'connectDev() needs a browser: there is no location to check', 'Use connectBrowser in a browser, or connectHttp3 from Node.');
|
|
48
|
+
}
|
|
49
|
+
const pageHost = loc.hostname ?? '';
|
|
50
|
+
if (!LOOPBACK.has(pageHost))
|
|
51
|
+
refuse('page origin', pageHost);
|
|
52
|
+
const endpoint = opts.endpoint ?? DEV_ENDPOINT;
|
|
53
|
+
const res = await fetch(endpoint);
|
|
54
|
+
if (!res.ok) {
|
|
55
|
+
throw new TransportError('WT_DEV_ONLY', `no dev manifest at ${endpoint} (HTTP ${res.status})`, 'Start the server with `npx transport-io dev`, which serves it.');
|
|
56
|
+
}
|
|
57
|
+
const manifest = (await res.json());
|
|
58
|
+
if (!Array.isArray(manifest.sha256) || typeof manifest.url !== 'string') {
|
|
59
|
+
throw new TransportError('WT_DEV_ONLY', `the dev manifest at ${endpoint} is not {sha256, url}`, 'Something other than `transport-io dev` is serving that path.');
|
|
60
|
+
}
|
|
61
|
+
// The URL is checked as well as the page, because the manifest is data from the network
|
|
62
|
+
// and a page served over loopback could still be handed a remote target.
|
|
63
|
+
let targetHost = '';
|
|
64
|
+
try {
|
|
65
|
+
targetHost = new URL(manifest.url).hostname;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
refuse('WebTransport URL', manifest.url);
|
|
69
|
+
}
|
|
70
|
+
if (!LOOPBACK.has(targetHost))
|
|
71
|
+
refuse('WebTransport URL', targetHost);
|
|
72
|
+
return await connectBrowser({
|
|
73
|
+
url: manifest.url,
|
|
74
|
+
certificateHash: Uint8Array.from(manifest.sha256),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/transport/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,YAAY,GAAG,+BAA+B,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AAEzF,SAAS,MAAM,CAAC,IAAY,EAAE,IAAY;IACxC,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,uCAAuC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAChF,uLAAuL,CACxL,CAAA;AACH,CAAC;AAaD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAI,GAAsB,EAAE;IAC3D,MAAM,GAAG,GAAI,UAAmD,CAAC,QAAQ,CAAA;IACzE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,6DAA6D,EAC7D,6DAA6D,CAC9D,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAA;IACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IAE5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAA;IAC9C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,sBAAsB,QAAQ,UAAU,GAAG,CAAC,MAAM,GAAG,EACrD,gEAAgE,CACjE,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgB,CAAA;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QACxE,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,uBAAuB,QAAQ,uBAAuB,EACtD,+DAA+D,CAChE,CAAA;IACH,CAAC;IAED,wFAAwF;IACxF,yEAAyE;IACzE,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI,CAAC;QACH,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;IAErE,OAAO,MAAM,cAAc,CAAC;QAC1B,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAClD,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -25,6 +25,14 @@ export interface Http3Listener {
|
|
|
25
25
|
* of the no-fallback rule, and it is browser-independent (D10, ADR 0003).
|
|
26
26
|
*/
|
|
27
27
|
export declare function listenHttp3(opts: Http3ServerOptions): Promise<Http3Listener>;
|
|
28
|
+
/**
|
|
29
|
+
* The listener `transport-io dev` prepared for this process.
|
|
30
|
+
*
|
|
31
|
+
* The CLI mints the certificate and passes it by environment, so a project's server file is
|
|
32
|
+
* `await server.listen(await listenDev())` and never reads a certificate path, a port, or an
|
|
33
|
+
* environment variable itself.
|
|
34
|
+
*/
|
|
35
|
+
export declare function listenDev(): Promise<Http3Listener>;
|
|
28
36
|
export interface Http3ClientOptions {
|
|
29
37
|
readonly url: string;
|
|
30
38
|
readonly certificateHash: Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fails.node.d.ts","sourceRoot":"","sources":["../../src/transport/fails.node.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,YAAY,CAAA;AAkBnE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIrE;AAiGD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,CAAA;IACrC,IAAI,IAAI,IAAI,CAAA;CACb;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAiClF;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAA;CACrC;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgChF"}
|
|
1
|
+
{"version":3,"file":"fails.node.d.ts","sourceRoot":"","sources":["../../src/transport/fails.node.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,YAAY,CAAA;AAkBnE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIrE;AAiGD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,CAAA;IACrC,IAAI,IAAI,IAAI,CAAA;CACb;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAiClF;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAYxD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAA;CACrC;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgChF"}
|
|
@@ -154,6 +154,22 @@ export async function listenHttp3(opts) {
|
|
|
154
154
|
},
|
|
155
155
|
};
|
|
156
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* The listener `transport-io dev` prepared for this process.
|
|
159
|
+
*
|
|
160
|
+
* The CLI mints the certificate and passes it by environment, so a project's server file is
|
|
161
|
+
* `await server.listen(await listenDev())` and never reads a certificate path, a port, or an
|
|
162
|
+
* environment variable itself.
|
|
163
|
+
*/
|
|
164
|
+
export async function listenDev() {
|
|
165
|
+
const cert = process.env.TRANSPORT_IO_DEV_CERT;
|
|
166
|
+
const privKey = process.env.TRANSPORT_IO_DEV_KEY;
|
|
167
|
+
const port = process.env.TRANSPORT_IO_DEV_WT_PORT;
|
|
168
|
+
if (cert === undefined || privKey === undefined || port === undefined) {
|
|
169
|
+
throw new TransportError('WT_DEV_ONLY', 'listenDev() found no certificate in the environment', 'Start this process with `npx transport-io dev`, which mints the certificate and sets it. Use listenHttp3 with your own certificate otherwise.');
|
|
170
|
+
}
|
|
171
|
+
return await listenHttp3({ port: Number(port), host: '127.0.0.1', cert, privKey, path: '/' });
|
|
172
|
+
}
|
|
157
173
|
export async function connectHttp3(opts) {
|
|
158
174
|
// The binding loads its native transport through a dynamic import and throws
|
|
159
175
|
// `Lib quiche loading attempt did not end` if a client is constructed before it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fails.node.js","sourceRoot":"","sources":["../../src/transport/fails.node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fails.node.js","sourceRoot":"","sources":["../../src/transport/fails.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAmB5D;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtE,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,eAAe;IACV,QAAQ,CAAY;IACpB,MAAM,CAAoB;IACnC,eAAe,CAAqD;IAEpE,YAAY,OAAmB;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;SAC1B,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE,CAAA;IACzD,CAAC;IAED,YAAY,CAAC,EAAkD;QAC7D,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,SAAS,EAAE,CAAA;YACtE,IAAI,CAAC;gBACH,SAAS,CAAC;oBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;oBAC3C,IAAI,IAAI;wBAAE,MAAK;oBACf,IAAI,KAAK,KAAK,SAAS;wBAAE,EAAE,CAAC,KAAK,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6EAA6E;YAC/E,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAA;IACxD,CAAC;IAED,MAAM,CAAC,EAAgC;QACrC,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,SAAS,EAAE,CAAA;YACrE,IAAI,CAAC;gBACH,SAAS,CAAC;oBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;oBAC3C,IAAI,IAAI;wBAAE,MAAK;oBACf,IAAI,KAAK,KAAK,SAAS;wBAAE,EAAE,CAAC,KAAK,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,YAAY,CAAC,KAAiB;QAC5B,6EAA6E;QAC7E,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,CAAA;QAC7E,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC/D,CAAC;IAED,UAAU,CAAC,EAA+B;QACxC,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;YAC3D,IAAI,CAAC;gBACH,SAAS,CAAC;oBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;oBAC3C,IAAI,IAAI;wBAAE,MAAK;oBACf,IAAI,KAAK,KAAK,SAAS;wBAAE,EAAE,CAAC,KAAK,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,eAAe;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAA;QACxD,qFAAqF;QACrF,qFAAqF;QACrF,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAA;IAC9F,CAAC;IAED,WAAW;QACT,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAA;QACnC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,KAAK,qBAAqB;YAC5E,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,MAAc;QAChC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;QACzE,CAAC;IACH,CAAC;CACF;AAiBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW;QAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc;QACrC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAMA,CAAA;IAED,MAAM,CAAC,WAAW,EAAE,CAAA;IACpB,MAAM,MAAM,CAAC,KAAK,CAAA;IAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAA;IAE7B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;QAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;QAC/B,KAAK,CAAC,CAAC,QAAQ;YACb,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAA;YACrD,SAAS,CAAC;gBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC3C,IAAI,IAAI;oBAAE,OAAM;gBAChB,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAQ;gBACjC,MAAM,KAAK,CAAC,KAAK,CAAA;gBACjB,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAA;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAA;IACjD,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACtE,MAAM,IAAI,cAAc,CACtB,aAAa,EACb,qDAAqD,EACrD,+IAA+I,CAChJ,CAAA;IACH,CAAC;IACD,OAAO,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;AAC/F,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAwB;IACzD,6EAA6E;IAC7E,gFAAgF;IAChF,iFAAiF;IACjF,iFAAiF;IACjF,iCAAiC;IACjC,MAAM,YAAY,CAAA;IAElB,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE;QACpC,uBAAuB,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAChF,oFAAoF;QACpF,8CAA8C;QAC9C,iBAAiB,EAAE,IAAI;KACf,CAA0B,CAAA;IAEpC,iFAAiF;IACjF,sFAAsF;IACtF,kFAAkF;IAClF,uCAAuC;IACvC,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAEpD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAA;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,CAAA;QACjB,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,+BAA+B,IAAI,CAAC,GAAG,KAAM,KAAe,CAAC,OAAO,EAAE,EACtE,4FAA4F,CAC7F,CAAA;IACH,CAAC;IACD,OAAO,IAAI,eAAe,CAAC,EAAE,CAAC,CAAA;AAChC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "transport-io",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Real-time apps over WebTransport. Two lanes, one contract, no fallback.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
"types": "./dist/transport/browser.d.ts",
|
|
18
18
|
"default": "./dist/transport/browser.js"
|
|
19
19
|
},
|
|
20
|
+
"./dev-transport": {
|
|
21
|
+
"types": "./dist/transport/dev.d.ts",
|
|
22
|
+
"default": "./dist/transport/dev.js"
|
|
23
|
+
},
|
|
20
24
|
"./node-transport": {
|
|
21
25
|
"types": "./dist/transport/fails.node.d.ts",
|
|
22
26
|
"default": "./dist/transport/fails.node.js"
|
|
@@ -29,6 +33,8 @@
|
|
|
29
33
|
"files": [
|
|
30
34
|
"dist",
|
|
31
35
|
"!dist/bench",
|
|
36
|
+
"!dist/cli/**/*.d.ts",
|
|
37
|
+
"!dist/cli/**/*.d.ts.map",
|
|
32
38
|
"LICENSE",
|
|
33
39
|
"README.md"
|
|
34
40
|
],
|
|
@@ -51,5 +57,8 @@
|
|
|
51
57
|
"type": "git",
|
|
52
58
|
"url": "git+https://github.com/transport-io/transport-io.git",
|
|
53
59
|
"directory": "packages/core"
|
|
60
|
+
},
|
|
61
|
+
"bin": {
|
|
62
|
+
"transport-io": "./dist/cli/main.node.js"
|
|
54
63
|
}
|
|
55
64
|
}
|