@norskvideo/moq-net 0.1.2 → 0.1.4
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 +1 -0
- package/announced.d.ts +111 -21
- package/announced.d.ts.map +1 -1
- package/announced.js +213 -40
- package/announced.js.map +1 -1
- package/broadcast.d.ts +80 -25
- package/broadcast.d.ts.map +1 -1
- package/broadcast.js +270 -49
- package/broadcast.js.map +1 -1
- package/connection/accept.d.ts +6 -0
- package/connection/accept.d.ts.map +1 -1
- package/connection/accept.js +42 -13
- package/connection/accept.js.map +1 -1
- package/connection/browser.d.ts +5 -0
- package/connection/browser.d.ts.map +1 -0
- package/connection/browser.js +31 -0
- package/connection/browser.js.map +1 -0
- package/connection/connect.d.ts +43 -1
- package/connection/connect.d.ts.map +1 -1
- package/connection/connect.js +118 -123
- package/connection/connect.js.map +1 -1
- package/connection/established.d.ts +43 -16
- package/connection/established.d.ts.map +1 -1
- package/connection/established.js.map +1 -1
- package/connection/handshake.d.ts +12 -1
- package/connection/handshake.d.ts.map +1 -1
- package/connection/handshake.js +30 -14
- package/connection/handshake.js.map +1 -1
- package/connection/index.d.ts +8 -0
- package/connection/index.d.ts.map +1 -1
- package/connection/index.js +6 -0
- package/connection/index.js.map +1 -1
- package/connection/reload.d.ts +66 -9
- package/connection/reload.d.ts.map +1 -1
- package/connection/reload.js +192 -66
- package/connection/reload.js.map +1 -1
- package/connection/stats.d.ts +92 -0
- package/connection/stats.d.ts.map +1 -0
- package/connection/stats.js +35 -0
- package/connection/stats.js.map +1 -0
- package/connection/transport.d.ts +10 -0
- package/connection/transport.d.ts.map +1 -0
- package/connection/transport.js +12 -0
- package/connection/transport.js.map +1 -0
- package/consume.d.ts +44 -0
- package/consume.d.ts.map +1 -0
- package/consume.js +60 -0
- package/consume.js.map +1 -0
- package/datagram.d.ts +23 -0
- package/datagram.d.ts.map +1 -0
- package/datagram.js +3 -0
- package/datagram.js.map +1 -0
- package/error.d.ts +76 -0
- package/error.d.ts.map +1 -0
- package/error.js +107 -0
- package/error.js.map +1 -0
- package/group.d.ts +143 -38
- package/group.d.ts.map +1 -1
- package/group.js +270 -68
- package/group.js.map +1 -1
- package/ietf/adapter.d.ts +2 -2
- package/ietf/adapter.d.ts.map +1 -1
- package/ietf/adapter.js +20 -10
- package/ietf/adapter.js.map +1 -1
- package/ietf/aliases.d.ts +73 -5
- package/ietf/aliases.d.ts.map +1 -1
- package/ietf/aliases.js +121 -14
- package/ietf/aliases.js.map +1 -1
- package/ietf/cluster.d.ts +141 -0
- package/ietf/cluster.d.ts.map +1 -0
- package/ietf/cluster.js +204 -0
- package/ietf/cluster.js.map +1 -0
- package/ietf/connection.d.ts +39 -6
- package/ietf/connection.d.ts.map +1 -1
- package/ietf/connection.js +73 -12
- package/ietf/connection.js.map +1 -1
- package/ietf/fetch.d.ts +17 -0
- package/ietf/fetch.d.ts.map +1 -1
- package/ietf/fetch.js +21 -0
- package/ietf/fetch.js.map +1 -1
- package/ietf/filter.d.ts +87 -0
- package/ietf/filter.d.ts.map +1 -0
- package/ietf/filter.js +292 -0
- package/ietf/filter.js.map +1 -0
- package/ietf/index.d.ts +2 -0
- package/ietf/index.d.ts.map +1 -1
- package/ietf/index.js +3 -0
- package/ietf/index.js.map +1 -1
- package/ietf/namespace.d.ts +6 -0
- package/ietf/namespace.d.ts.map +1 -1
- package/ietf/namespace.js +27 -2
- package/ietf/namespace.js.map +1 -1
- package/ietf/object.d.ts +54 -6
- package/ietf/object.d.ts.map +1 -1
- package/ietf/object.js +178 -25
- package/ietf/object.js.map +1 -1
- package/ietf/parameters.d.ts +35 -10
- package/ietf/parameters.d.ts.map +1 -1
- package/ietf/parameters.js +236 -45
- package/ietf/parameters.js.map +1 -1
- package/ietf/priority.d.ts +5 -0
- package/ietf/priority.d.ts.map +1 -0
- package/ietf/priority.js +10 -0
- package/ietf/priority.js.map +1 -0
- package/ietf/properties.d.ts +13 -2
- package/ietf/properties.d.ts.map +1 -1
- package/ietf/properties.js +65 -8
- package/ietf/properties.js.map +1 -1
- package/ietf/publish.d.ts.map +1 -1
- package/ietf/publish.js +13 -3
- package/ietf/publish.js.map +1 -1
- package/ietf/publish_namespace.d.ts +16 -2
- package/ietf/publish_namespace.d.ts.map +1 -1
- package/ietf/publish_namespace.js +25 -6
- package/ietf/publish_namespace.js.map +1 -1
- package/ietf/publisher.d.ts +40 -7
- package/ietf/publisher.d.ts.map +1 -1
- package/ietf/publisher.js +751 -134
- package/ietf/publisher.js.map +1 -1
- package/ietf/request.js +1 -1
- package/ietf/request.js.map +1 -1
- package/ietf/solicit.d.ts +41 -0
- package/ietf/solicit.d.ts.map +1 -0
- package/ietf/solicit.js +47 -0
- package/ietf/solicit.js.map +1 -0
- package/ietf/subscribe.d.ts +41 -2
- package/ietf/subscribe.d.ts.map +1 -1
- package/ietf/subscribe.js +103 -22
- package/ietf/subscribe.js.map +1 -1
- package/ietf/subscribe_namespace.d.ts +21 -7
- package/ietf/subscribe_namespace.d.ts.map +1 -1
- package/ietf/subscribe_namespace.js +31 -14
- package/ietf/subscribe_namespace.js.map +1 -1
- package/ietf/subscriber.d.ts +20 -7
- package/ietf/subscriber.d.ts.map +1 -1
- package/ietf/subscriber.js +512 -142
- package/ietf/subscriber.js.map +1 -1
- package/ietf/version.d.ts +7 -1
- package/ietf/version.d.ts.map +1 -1
- package/ietf/version.js +7 -0
- package/ietf/version.js.map +1 -1
- package/index.d.ts +10 -5
- package/index.d.ts.map +1 -1
- package/index.js +10 -5
- package/index.js.map +1 -1
- package/internal.d.ts +29 -0
- package/internal.d.ts.map +1 -0
- package/internal.js +8 -0
- package/internal.js.map +1 -0
- package/lite/announce.d.ts +62 -15
- package/lite/announce.d.ts.map +1 -1
- package/lite/announce.js +230 -94
- package/lite/announce.js.map +1 -1
- package/lite/connection.d.ts +69 -20
- package/lite/connection.d.ts.map +1 -1
- package/lite/connection.js +128 -81
- package/lite/connection.js.map +1 -1
- package/lite/datagram.d.ts +23 -0
- package/lite/datagram.d.ts.map +1 -0
- package/lite/datagram.js +57 -0
- package/lite/datagram.js.map +1 -0
- package/lite/datagram_stream.d.ts +8 -0
- package/lite/datagram_stream.d.ts.map +1 -0
- package/lite/datagram_stream.js +44 -0
- package/lite/datagram_stream.js.map +1 -0
- package/lite/fetch.d.ts.map +1 -1
- package/lite/fetch.js +2 -2
- package/lite/fetch.js.map +1 -1
- package/lite/index.d.ts +3 -0
- package/lite/index.d.ts.map +1 -1
- package/lite/index.js +3 -0
- package/lite/index.js.map +1 -1
- package/lite/priority.d.ts +67 -0
- package/lite/priority.d.ts.map +1 -0
- package/lite/priority.js +114 -0
- package/lite/priority.js.map +1 -0
- package/lite/probe.d.ts +18 -2
- package/lite/probe.d.ts.map +1 -1
- package/lite/probe.js +24 -22
- package/lite/probe.js.map +1 -1
- package/lite/publisher.d.ts +14 -7
- package/lite/publisher.d.ts.map +1 -1
- package/lite/publisher.js +406 -84
- package/lite/publisher.js.map +1 -1
- package/lite/setup.d.ts +83 -6
- package/lite/setup.d.ts.map +1 -1
- package/lite/setup.js +203 -31
- package/lite/setup.js.map +1 -1
- package/lite/stream.d.ts +12 -3
- package/lite/stream.d.ts.map +1 -1
- package/lite/stream.js +7 -4
- package/lite/stream.js.map +1 -1
- package/lite/subscribe.d.ts +37 -23
- package/lite/subscribe.d.ts.map +1 -1
- package/lite/subscribe.js +70 -55
- package/lite/subscribe.js.map +1 -1
- package/lite/subscriber.d.ts +29 -23
- package/lite/subscriber.d.ts.map +1 -1
- package/lite/subscriber.js +689 -112
- package/lite/subscriber.js.map +1 -1
- package/lite/track.d.ts +25 -13
- package/lite/track.d.ts.map +1 -1
- package/lite/track.js +60 -35
- package/lite/track.js.map +1 -1
- package/lite/version.d.ts +39 -4
- package/lite/version.d.ts.map +1 -1
- package/lite/version.js +139 -17
- package/lite/version.js.map +1 -1
- package/mock.d.ts +53 -3
- package/mock.d.ts.map +1 -1
- package/mock.js +110 -21
- package/mock.js.map +1 -1
- package/{lite/origin.d.ts → origin.d.ts} +25 -1
- package/origin.d.ts.map +1 -0
- package/{lite/origin.js → origin.js} +25 -1
- package/origin.js.map +1 -0
- package/package.json +6 -4
- package/path.d.ts +67 -0
- package/path.d.ts.map +1 -1
- package/path.js +128 -0
- package/path.js.map +1 -1
- package/stream.d.ts +94 -4
- package/stream.d.ts.map +1 -1
- package/stream.js +128 -17
- package/stream.js.map +1 -1
- package/time.d.ts +109 -86
- package/time.d.ts.map +1 -1
- package/time.js +80 -30
- package/time.js.map +1 -1
- package/track.d.ts +298 -47
- package/track.d.ts.map +1 -1
- package/track.js +721 -109
- package/track.js.map +1 -1
- package/util/timeout.d.ts +5 -0
- package/util/timeout.d.ts.map +1 -0
- package/util/timeout.js +18 -0
- package/util/timeout.js.map +1 -0
- package/util/utf8.d.ts +3 -0
- package/util/utf8.d.ts.map +1 -0
- package/util/utf8.js +7 -0
- package/util/utf8.js.map +1 -0
- package/varint.d.ts +14 -3
- package/varint.d.ts.map +1 -1
- package/varint.js +23 -12
- package/varint.js.map +1 -1
- package/zod.d.ts +5 -5
- package/zod.d.ts.map +1 -1
- package/zod.js.map +1 -1
- package/bandwidth.d.ts +0 -11
- package/bandwidth.d.ts.map +0 -1
- package/bandwidth.js +0 -7
- package/bandwidth.js.map +0 -1
- package/connection/cert.test.d.ts +0 -2
- package/connection/cert.test.d.ts.map +0 -1
- package/connection/cert.test.js +0 -26
- package/connection/cert.test.js.map +0 -1
- package/connection/reload.test.d.ts +0 -2
- package/connection/reload.test.d.ts.map +0 -1
- package/connection/reload.test.js +0 -39
- package/connection/reload.test.js.map +0 -1
- package/group.test.d.ts +0 -2
- package/group.test.d.ts.map +0 -1
- package/group.test.js +0 -66
- package/group.test.js.map +0 -1
- package/ietf/aliases.test.d.ts +0 -2
- package/ietf/aliases.test.d.ts.map +0 -1
- package/ietf/aliases.test.js +0 -30
- package/ietf/aliases.test.js.map +0 -1
- package/ietf/ietf.test.d.ts +0 -2
- package/ietf/ietf.test.d.ts.map +0 -1
- package/ietf/ietf.test.js +0 -873
- package/ietf/ietf.test.js.map +0 -1
- package/integration.test.d.ts +0 -2
- package/integration.test.d.ts.map +0 -1
- package/integration.test.js +0 -90
- package/integration.test.js.map +0 -1
- package/lite/origin.d.ts.map +0 -1
- package/lite/origin.js.map +0 -1
- package/lite/subscriber.test.d.ts +0 -2
- package/lite/subscriber.test.d.ts.map +0 -1
- package/lite/subscriber.test.js +0 -30
- package/lite/subscriber.test.js.map +0 -1
- package/lite/track.test.d.ts +0 -2
- package/lite/track.test.d.ts.map +0 -1
- package/lite/track.test.js +0 -53
- package/lite/track.test.js.map +0 -1
- package/path.test.d.ts +0 -2
- package/path.test.d.ts.map +0 -1
- package/path.test.js +0 -169
- package/path.test.js.map +0 -1
- package/stream.test.d.ts +0 -2
- package/stream.test.d.ts.map +0 -1
- package/stream.test.js +0 -210
- package/stream.test.js.map +0 -1
- package/track.test.d.ts +0 -2
- package/track.test.d.ts.map +0 -1
- package/track.test.js +0 -56
- package/track.test.js.map +0 -1
- package/util/error.d.ts +0 -3
- package/util/error.d.ts.map +0 -1
- package/util/error.js +0 -9
- package/util/error.js.map +0 -1
- package/util/index.d.ts +0 -2
- package/util/index.d.ts.map +0 -1
- package/util/index.js +0 -3
- package/util/index.js.map +0 -1
- package/varint.test.d.ts +0 -2
- package/varint.test.d.ts.map +0 -1
- package/varint.test.js +0 -106
- package/varint.test.js.map +0 -1
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/* @ts-self-types="./reload.test.d.ts" */
|
|
2
|
-
import { expect, test } from "bun:test";
|
|
3
|
-
import { Reload } from "./reload.js";
|
|
4
|
-
async function settle() {
|
|
5
|
-
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
6
|
-
}
|
|
7
|
-
test("equivalent URL instances do not restart a pending connection", async () => {
|
|
8
|
-
const original = globalThis.WebTransport;
|
|
9
|
-
let connects = 0;
|
|
10
|
-
class PendingWebTransport {
|
|
11
|
-
ready = new Promise(() => { });
|
|
12
|
-
closed = new Promise(() => { });
|
|
13
|
-
constructor() {
|
|
14
|
-
connects++;
|
|
15
|
-
}
|
|
16
|
-
close() { }
|
|
17
|
-
}
|
|
18
|
-
globalThis.WebTransport = PendingWebTransport;
|
|
19
|
-
const reload = new Reload({
|
|
20
|
-
enabled: true,
|
|
21
|
-
url: new URL("https://example.com/broadcast"),
|
|
22
|
-
websocket: { enabled: false },
|
|
23
|
-
});
|
|
24
|
-
try {
|
|
25
|
-
await settle();
|
|
26
|
-
expect(connects).toBe(1);
|
|
27
|
-
reload.url.set(new URL("https://example.com/broadcast"));
|
|
28
|
-
await settle();
|
|
29
|
-
expect(connects).toBe(1);
|
|
30
|
-
reload.url.set(new URL("https://example.com/other"));
|
|
31
|
-
await settle();
|
|
32
|
-
expect(connects).toBe(2);
|
|
33
|
-
}
|
|
34
|
-
finally {
|
|
35
|
-
reload.close();
|
|
36
|
-
globalThis.WebTransport = original;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=reload.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reload.test.js","sourceRoot":"","sources":["../../src/connection/reload.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,KAAK,UAAU,MAAM;IACpB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;IAC/E,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC;IACzC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,MAAM,mBAAmB;QACxB,KAAK,GAAG,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpC,MAAM,GAAG,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAErC;YACC,QAAQ,EAAE,CAAC;QACZ,CAAC;QAED,KAAK,KAAI,CAAC;KACV;IAED,UAAU,CAAC,YAAY,GAAG,mBAAqD,CAAC;IAChF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACzB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,IAAI,GAAG,CAAC,+BAA+B,CAAC;QAC7C,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;KAC7B,CAAC,CAAC;IAEH,IAAI,CAAC;QACJ,MAAM,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,MAAM,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;YAAS,CAAC;QACV,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,GAAG,QAAQ,CAAC;IACpC,CAAC;AACF,CAAC,CAAC,CAAC","sourcesContent":["import { expect, test } from \"bun:test\";\nimport { Reload } from \"./reload.ts\";\n\nasync function settle() {\n\tawait new Promise((resolve) => setTimeout(resolve, 0));\n}\n\ntest(\"equivalent URL instances do not restart a pending connection\", async () => {\n\tconst original = globalThis.WebTransport;\n\tlet connects = 0;\n\n\tclass PendingWebTransport {\n\t\tready = new Promise<void>(() => {});\n\t\tclosed = new Promise<void>(() => {});\n\n\t\tconstructor() {\n\t\t\tconnects++;\n\t\t}\n\n\t\tclose() {}\n\t}\n\n\tglobalThis.WebTransport = PendingWebTransport as unknown as typeof WebTransport;\n\tconst reload = new Reload({\n\t\tenabled: true,\n\t\turl: new URL(\"https://example.com/broadcast\"),\n\t\twebsocket: { enabled: false },\n\t});\n\n\ttry {\n\t\tawait settle();\n\t\texpect(connects).toBe(1);\n\n\t\treload.url.set(new URL(\"https://example.com/broadcast\"));\n\t\tawait settle();\n\t\texpect(connects).toBe(1);\n\n\t\treload.url.set(new URL(\"https://example.com/other\"));\n\t\tawait settle();\n\t\texpect(connects).toBe(2);\n\t} finally {\n\t\treload.close();\n\t\tglobalThis.WebTransport = original;\n\t}\n});\n"]}
|
package/group.test.d.ts
DELETED
package/group.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"group.test.d.ts","sourceRoot":"","sources":["../src/group.test.ts"],"names":[],"mappings":""}
|
package/group.test.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/* @ts-self-types="./group.test.d.ts" */
|
|
2
|
-
import { expect, test } from "bun:test";
|
|
3
|
-
import { Group } from "./group.js";
|
|
4
|
-
const dec = new TextDecoder();
|
|
5
|
-
test("tryReadFrame drains buffered frames then returns undefined", () => {
|
|
6
|
-
const group = new Group(0);
|
|
7
|
-
group.writeString("a");
|
|
8
|
-
group.writeString("b");
|
|
9
|
-
expect(dec.decode(group.tryReadFrame())).toBe("a");
|
|
10
|
-
expect(dec.decode(group.tryReadFrame())).toBe("b");
|
|
11
|
-
// Nothing buffered: undefined, and the group is not closed so this is not end-of-group.
|
|
12
|
-
expect(group.tryReadFrame()).toBeUndefined();
|
|
13
|
-
});
|
|
14
|
-
test("tryReadFrameSequence reports per-frame sequence numbers", () => {
|
|
15
|
-
const group = new Group(7);
|
|
16
|
-
group.writeString("a");
|
|
17
|
-
group.writeString("b");
|
|
18
|
-
expect(group.tryReadFrameSequence()).toEqual({ sequence: 0, data: new TextEncoder().encode("a") });
|
|
19
|
-
expect(group.tryReadFrameSequence()).toEqual({ sequence: 1, data: new TextEncoder().encode("b") });
|
|
20
|
-
expect(group.tryReadFrameSequence()).toBeUndefined();
|
|
21
|
-
});
|
|
22
|
-
test("done distinguishes a finished group from one that is merely empty", () => {
|
|
23
|
-
const group = new Group(0);
|
|
24
|
-
// Open and empty: not done (more frames may arrive), and tryReadFrame is undefined.
|
|
25
|
-
expect(group.tryReadFrame()).toBeUndefined();
|
|
26
|
-
expect(group.done).toBe(false);
|
|
27
|
-
group.writeString("a");
|
|
28
|
-
// Buffered but closed: still not done until the frame is drained.
|
|
29
|
-
group.close();
|
|
30
|
-
expect(group.done).toBe(false);
|
|
31
|
-
group.tryReadFrame();
|
|
32
|
-
// Drained and closed: now done.
|
|
33
|
-
expect(group.tryReadFrame()).toBeUndefined();
|
|
34
|
-
expect(group.done).toBe(true);
|
|
35
|
-
});
|
|
36
|
-
test("readable resolves once a frame is buffered", async () => {
|
|
37
|
-
const group = new Group(0);
|
|
38
|
-
// No frame yet: readable() must stay pending for an empty, open group.
|
|
39
|
-
const readable = group.readable();
|
|
40
|
-
let settled = false;
|
|
41
|
-
void readable.then(() => {
|
|
42
|
-
settled = true;
|
|
43
|
-
});
|
|
44
|
-
await Promise.resolve();
|
|
45
|
-
expect(settled).toBe(false);
|
|
46
|
-
// Writing makes it resolve.
|
|
47
|
-
group.writeString("hi");
|
|
48
|
-
await readable; // must not hang
|
|
49
|
-
expect(dec.decode(group.tryReadFrame())).toBe("hi");
|
|
50
|
-
});
|
|
51
|
-
test("readable resolves once the group closes, even with nothing buffered", async () => {
|
|
52
|
-
const group = new Group(0);
|
|
53
|
-
const readable = group.readable();
|
|
54
|
-
group.close();
|
|
55
|
-
await readable; // resolves on close so callers don't wait forever
|
|
56
|
-
expect(group.tryReadFrame()).toBeUndefined();
|
|
57
|
-
});
|
|
58
|
-
test("buffered frames are still readable after the group closes", async () => {
|
|
59
|
-
const group = new Group(0);
|
|
60
|
-
group.writeString("a");
|
|
61
|
-
group.close();
|
|
62
|
-
// Closing doesn't discard buffered frames; the blocking reader drains them before ending.
|
|
63
|
-
expect(await group.readString()).toBe("a");
|
|
64
|
-
expect(await group.readFrame()).toBeUndefined();
|
|
65
|
-
});
|
|
66
|
-
//# sourceMappingURL=group.test.js.map
|
package/group.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"group.test.js","sourceRoot":"","sources":["../src/group.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, test } from \"bun:test\";\nimport { Group } from \"./group.ts\";\n\nconst dec = new TextDecoder();\n\ntest(\"tryReadFrame drains buffered frames then returns undefined\", () => {\n\tconst group = new Group(0);\n\tgroup.writeString(\"a\");\n\tgroup.writeString(\"b\");\n\n\texpect(dec.decode(group.tryReadFrame())).toBe(\"a\");\n\texpect(dec.decode(group.tryReadFrame())).toBe(\"b\");\n\t// Nothing buffered: undefined, and the group is not closed so this is not end-of-group.\n\texpect(group.tryReadFrame()).toBeUndefined();\n});\n\ntest(\"tryReadFrameSequence reports per-frame sequence numbers\", () => {\n\tconst group = new Group(7);\n\tgroup.writeString(\"a\");\n\tgroup.writeString(\"b\");\n\n\texpect(group.tryReadFrameSequence()).toEqual({ sequence: 0, data: new TextEncoder().encode(\"a\") });\n\texpect(group.tryReadFrameSequence()).toEqual({ sequence: 1, data: new TextEncoder().encode(\"b\") });\n\texpect(group.tryReadFrameSequence()).toBeUndefined();\n});\n\ntest(\"done distinguishes a finished group from one that is merely empty\", () => {\n\tconst group = new Group(0);\n\t// Open and empty: not done (more frames may arrive), and tryReadFrame is undefined.\n\texpect(group.tryReadFrame()).toBeUndefined();\n\texpect(group.done).toBe(false);\n\n\tgroup.writeString(\"a\");\n\t// Buffered but closed: still not done until the frame is drained.\n\tgroup.close();\n\texpect(group.done).toBe(false);\n\n\tgroup.tryReadFrame();\n\t// Drained and closed: now done.\n\texpect(group.tryReadFrame()).toBeUndefined();\n\texpect(group.done).toBe(true);\n});\n\ntest(\"readable resolves once a frame is buffered\", async () => {\n\tconst group = new Group(0);\n\t// No frame yet: readable() must stay pending for an empty, open group.\n\tconst readable = group.readable();\n\tlet settled = false;\n\tvoid readable.then(() => {\n\t\tsettled = true;\n\t});\n\tawait Promise.resolve();\n\texpect(settled).toBe(false);\n\n\t// Writing makes it resolve.\n\tgroup.writeString(\"hi\");\n\tawait readable; // must not hang\n\texpect(dec.decode(group.tryReadFrame())).toBe(\"hi\");\n});\n\ntest(\"readable resolves once the group closes, even with nothing buffered\", async () => {\n\tconst group = new Group(0);\n\tconst readable = group.readable();\n\tgroup.close();\n\tawait readable; // resolves on close so callers don't wait forever\n\texpect(group.tryReadFrame()).toBeUndefined();\n});\n\ntest(\"buffered frames are still readable after the group closes\", async () => {\n\tconst group = new Group(0);\n\tgroup.writeString(\"a\");\n\tgroup.close();\n\n\t// Closing doesn't discard buffered frames; the blocking reader drains them before ending.\n\texpect(await group.readString()).toBe(\"a\");\n\texpect(await group.readFrame()).toBeUndefined();\n});\n"]}
|
package/ietf/aliases.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aliases.test.d.ts","sourceRoot":"","sources":["../../src/ietf/aliases.test.ts"],"names":[],"mappings":""}
|
package/ietf/aliases.test.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/* @ts-self-types="./aliases.test.d.ts" */
|
|
2
|
-
import { expect, test } from "bun:test";
|
|
3
|
-
import { TrackAliases } from "./aliases.js";
|
|
4
|
-
test("waits for the control message that establishes an alias", async () => {
|
|
5
|
-
const aliases = new TrackAliases();
|
|
6
|
-
const track = {};
|
|
7
|
-
const pending = aliases.get(7n);
|
|
8
|
-
aliases.set(7n, track);
|
|
9
|
-
expect(await pending).toBe(track);
|
|
10
|
-
});
|
|
11
|
-
test("resolves every subgroup waiting for the same alias", async () => {
|
|
12
|
-
const aliases = new TrackAliases();
|
|
13
|
-
const track = {};
|
|
14
|
-
const pending = [aliases.get(7n), aliases.get(7n)];
|
|
15
|
-
aliases.set(7n, track);
|
|
16
|
-
expect(await Promise.all(pending)).toEqual([track, track]);
|
|
17
|
-
});
|
|
18
|
-
test("rejects an alias used by two active tracks", () => {
|
|
19
|
-
const aliases = new TrackAliases();
|
|
20
|
-
aliases.set(7n, {});
|
|
21
|
-
expect(() => aliases.set(7n, {})).toThrow("duplicate track alias");
|
|
22
|
-
});
|
|
23
|
-
test("does not let stale cleanup remove a reused alias", async () => {
|
|
24
|
-
const aliases = new TrackAliases();
|
|
25
|
-
const active = {};
|
|
26
|
-
aliases.set(7n, active);
|
|
27
|
-
aliases.delete(7n, {});
|
|
28
|
-
expect(await aliases.get(7n)).toBe(active);
|
|
29
|
-
});
|
|
30
|
-
//# sourceMappingURL=aliases.test.js.map
|
package/ietf/aliases.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aliases.test.js","sourceRoot":"","sources":["../../src/ietf/aliases.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;IAC1E,MAAM,OAAO,GAAG,IAAI,YAAY,EAAU,CAAC;IAC3C,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEvB,MAAM,CAAC,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;IACrE,MAAM,OAAO,GAAG,IAAI,YAAY,EAAU,CAAC;IAC3C,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEvB,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACvD,MAAM,OAAO,GAAG,IAAI,YAAY,EAAU,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAEpB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;IACnE,MAAM,OAAO,GAAG,IAAI,YAAY,EAAU,CAAC;IAC3C,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAExB,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAEvB,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC","sourcesContent":["import { expect, test } from \"bun:test\";\nimport { TrackAliases } from \"./aliases.ts\";\n\ntest(\"waits for the control message that establishes an alias\", async () => {\n\tconst aliases = new TrackAliases<object>();\n\tconst track = {};\n\tconst pending = aliases.get(7n);\n\n\taliases.set(7n, track);\n\n\texpect(await pending).toBe(track);\n});\n\ntest(\"resolves every subgroup waiting for the same alias\", async () => {\n\tconst aliases = new TrackAliases<object>();\n\tconst track = {};\n\tconst pending = [aliases.get(7n), aliases.get(7n)];\n\n\taliases.set(7n, track);\n\n\texpect(await Promise.all(pending)).toEqual([track, track]);\n});\n\ntest(\"rejects an alias used by two active tracks\", () => {\n\tconst aliases = new TrackAliases<object>();\n\taliases.set(7n, {});\n\n\texpect(() => aliases.set(7n, {})).toThrow(\"duplicate track alias\");\n});\n\ntest(\"does not let stale cleanup remove a reused alias\", async () => {\n\tconst aliases = new TrackAliases<object>();\n\tconst active = {};\n\taliases.set(7n, active);\n\n\taliases.delete(7n, {});\n\n\texpect(await aliases.get(7n)).toBe(active);\n});\n"]}
|
package/ietf/ietf.test.d.ts
DELETED
package/ietf/ietf.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ietf.test.d.ts","sourceRoot":"","sources":["../../src/ietf/ietf.test.ts"],"names":[],"mappings":""}
|