@norskvideo/moq-net 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -0
- package/announced.d.ts +45 -0
- package/announced.d.ts.map +1 -0
- package/announced.js +70 -0
- package/announced.js.map +1 -0
- package/bandwidth.d.ts +11 -0
- package/bandwidth.d.ts.map +1 -0
- package/bandwidth.js +7 -0
- package/bandwidth.js.map +1 -0
- package/broadcast.d.ts +39 -0
- package/broadcast.d.ts.map +1 -0
- package/broadcast.js +76 -0
- package/broadcast.js.map +1 -0
- package/connection/accept.d.ts +15 -0
- package/connection/accept.d.ts.map +1 -0
- package/connection/accept.js +137 -0
- package/connection/accept.js.map +1 -0
- package/connection/cert.test.d.ts +2 -0
- package/connection/cert.test.d.ts.map +1 -0
- package/connection/cert.test.js +26 -0
- package/connection/cert.test.js.map +1 -0
- package/connection/connect.d.ts +37 -0
- package/connection/connect.d.ts.map +1 -0
- package/connection/connect.js +348 -0
- package/connection/connect.js.map +1 -0
- package/connection/established.d.ts +30 -0
- package/connection/established.d.ts.map +1 -0
- package/connection/established.js +3 -0
- package/connection/established.js.map +1 -0
- package/connection/handshake.d.ts +10 -0
- package/connection/handshake.d.ts.map +1 -0
- package/connection/handshake.js +48 -0
- package/connection/handshake.js.map +1 -0
- package/connection/index.d.ts +5 -0
- package/connection/index.d.ts.map +1 -0
- package/connection/index.js +6 -0
- package/connection/index.js.map +1 -0
- package/connection/reload.d.ts +47 -0
- package/connection/reload.d.ts.map +1 -0
- package/connection/reload.js +137 -0
- package/connection/reload.js.map +1 -0
- package/group.d.ts +66 -0
- package/group.d.ts.map +1 -0
- package/group.js +135 -0
- package/group.js.map +1 -0
- package/group.test.d.ts +2 -0
- package/group.test.d.ts.map +1 -0
- package/group.test.js +66 -0
- package/group.test.js.map +1 -0
- package/ietf/adapter.d.ts +65 -0
- package/ietf/adapter.d.ts.map +1 -0
- package/ietf/adapter.js +626 -0
- package/ietf/adapter.js.map +1 -0
- package/ietf/connection.d.ts +65 -0
- package/ietf/connection.d.ts.map +1 -0
- package/ietf/connection.js +248 -0
- package/ietf/connection.js.map +1 -0
- package/ietf/control.d.ts +135 -0
- package/ietf/control.d.ts.map +1 -0
- package/ietf/control.js +242 -0
- package/ietf/control.js.map +1 -0
- package/ietf/fetch.d.ts +64 -0
- package/ietf/fetch.d.ts.map +1 -0
- package/ietf/fetch.js +100 -0
- package/ietf/fetch.js.map +1 -0
- package/ietf/goaway.d.ts +15 -0
- package/ietf/goaway.d.ts.map +1 -0
- package/ietf/goaway.js +34 -0
- package/ietf/goaway.js.map +1 -0
- package/ietf/ietf.test.d.ts +2 -0
- package/ietf/ietf.test.d.ts.map +1 -0
- package/ietf/ietf.test.js +873 -0
- package/ietf/ietf.test.js.map +1 -0
- package/ietf/index.d.ts +18 -0
- package/ietf/index.d.ts.map +1 -0
- package/ietf/index.js +19 -0
- package/ietf/index.js.map +1 -0
- package/ietf/message.d.ts +4 -0
- package/ietf/message.d.ts.map +1 -0
- package/ietf/message.js +54 -0
- package/ietf/message.js.map +1 -0
- package/ietf/namespace.d.ts +5 -0
- package/ietf/namespace.d.ts.map +1 -0
- package/ietf/namespace.js +27 -0
- package/ietf/namespace.js.map +1 -0
- package/ietf/object.d.ts +40 -0
- package/ietf/object.d.ts.map +1 -0
- package/ietf/object.js +160 -0
- package/ietf/object.js.map +1 -0
- package/ietf/parameters.d.ts +56 -0
- package/ietf/parameters.d.ts.map +1 -0
- package/ietf/parameters.js +337 -0
- package/ietf/parameters.js.map +1 -0
- package/ietf/properties.d.ts +4 -0
- package/ietf/properties.d.ts.map +1 -0
- package/ietf/properties.js +33 -0
- package/ietf/properties.js.map +1 -0
- package/ietf/publish.d.ts +68 -0
- package/ietf/publish.d.ts.map +1 -0
- package/ietf/publish.js +192 -0
- package/ietf/publish.js.map +1 -0
- package/ietf/publish_namespace.d.ts +68 -0
- package/ietf/publish_namespace.d.ts.map +1 -0
- package/ietf/publish_namespace.js +176 -0
- package/ietf/publish_namespace.js.map +1 -0
- package/ietf/publisher.d.ts +50 -0
- package/ietf/publisher.d.ts.map +1 -0
- package/ietf/publisher.js +330 -0
- package/ietf/publisher.js.map +1 -0
- package/ietf/request.d.ts +52 -0
- package/ietf/request.d.ts.map +1 -0
- package/ietf/request.js +119 -0
- package/ietf/request.js.map +1 -0
- package/ietf/setup.d.ts +38 -0
- package/ietf/setup.d.ts.map +1 -0
- package/ietf/setup.js +129 -0
- package/ietf/setup.js.map +1 -0
- package/ietf/subscribe.d.ts +66 -0
- package/ietf/subscribe.d.ts.map +1 -0
- package/ietf/subscribe.js +276 -0
- package/ietf/subscribe.js.map +1 -0
- package/ietf/subscribe_namespace.d.ts +101 -0
- package/ietf/subscribe_namespace.d.ts.map +1 -0
- package/ietf/subscribe_namespace.js +256 -0
- package/ietf/subscribe_namespace.js.map +1 -0
- package/ietf/subscriber.d.ts +53 -0
- package/ietf/subscriber.d.ts.map +1 -0
- package/ietf/subscriber.js +404 -0
- package/ietf/subscriber.js.map +1 -0
- package/ietf/track.d.ts +40 -0
- package/ietf/track.d.ts.map +1 -0
- package/ietf/track.js +108 -0
- package/ietf/track.js.map +1 -0
- package/ietf/version.d.ts +56 -0
- package/ietf/version.d.ts.map +1 -0
- package/ietf/version.js +63 -0
- package/ietf/version.js.map +1 -0
- package/index.d.ts +22 -0
- package/index.d.ts.map +1 -0
- package/index.js +23 -0
- package/index.js.map +1 -0
- package/integration.test.d.ts +2 -0
- package/integration.test.d.ts.map +1 -0
- package/integration.test.js +90 -0
- package/integration.test.js.map +1 -0
- package/lite/announce.d.ts +35 -0
- package/lite/announce.d.ts.map +1 -0
- package/lite/announce.js +166 -0
- package/lite/announce.js.map +1 -0
- package/lite/connection.d.ts +47 -0
- package/lite/connection.d.ts.map +1 -0
- package/lite/connection.js +247 -0
- package/lite/connection.js.map +1 -0
- package/lite/fetch.d.ts +14 -0
- package/lite/fetch.d.ts.map +1 -0
- package/lite/fetch.js +47 -0
- package/lite/fetch.js.map +1 -0
- package/lite/goaway.d.ts +10 -0
- package/lite/goaway.d.ts.map +1 -0
- package/lite/goaway.js +37 -0
- package/lite/goaway.js.map +1 -0
- package/lite/group.d.ts +18 -0
- package/lite/group.d.ts.map +1 -0
- package/lite/group.js +46 -0
- package/lite/group.js.map +1 -0
- package/lite/index.d.ts +11 -0
- package/lite/index.d.ts.map +1 -0
- package/lite/index.js +12 -0
- package/lite/index.js.map +1 -0
- package/lite/message.d.ts +5 -0
- package/lite/message.d.ts.map +1 -0
- package/lite/message.js +51 -0
- package/lite/message.js.map +1 -0
- package/lite/origin.d.ts +25 -0
- package/lite/origin.d.ts.map +1 -0
- package/lite/origin.js +35 -0
- package/lite/origin.js.map +1 -0
- package/lite/probe.d.ts +12 -0
- package/lite/probe.d.ts.map +1 -0
- package/lite/probe.js +60 -0
- package/lite/probe.js.map +1 -0
- package/lite/publisher.d.ts +63 -0
- package/lite/publisher.d.ts.map +1 -0
- package/lite/publisher.js +350 -0
- package/lite/publisher.js.map +1 -0
- package/lite/session.d.ts +36 -0
- package/lite/session.d.ts.map +1 -0
- package/lite/session.js +130 -0
- package/lite/session.js.map +1 -0
- package/lite/setup.d.ts +18 -0
- package/lite/setup.d.ts.map +1 -0
- package/lite/setup.js +55 -0
- package/lite/setup.js.map +1 -0
- package/lite/stream.d.ts +23 -0
- package/lite/stream.d.ts.map +1 -0
- package/lite/stream.js +20 -0
- package/lite/stream.js.map +1 -0
- package/lite/subscribe.d.ts +111 -0
- package/lite/subscribe.d.ts.map +1 -0
- package/lite/subscribe.js +341 -0
- package/lite/subscribe.js.map +1 -0
- package/lite/subscriber.d.ts +80 -0
- package/lite/subscriber.d.ts.map +1 -0
- package/lite/subscriber.js +316 -0
- package/lite/subscriber.js.map +1 -0
- package/lite/track.d.ts +38 -0
- package/lite/track.d.ts.map +1 -0
- package/lite/track.js +81 -0
- package/lite/track.js.map +1 -0
- package/lite/track.test.d.ts +2 -0
- package/lite/track.test.d.ts.map +1 -0
- package/lite/track.test.js +53 -0
- package/lite/track.test.js.map +1 -0
- package/lite/version.d.ts +16 -0
- package/lite/version.d.ts.map +1 -0
- package/lite/version.js +41 -0
- package/lite/version.js.map +1 -0
- package/mock.d.ts +16 -0
- package/mock.d.ts.map +1 -0
- package/mock.js +154 -0
- package/mock.js.map +1 -0
- package/package.json +27 -0
- package/path.d.ts +111 -0
- package/path.d.ts.map +1 -0
- package/path.js +133 -0
- package/path.js.map +1 -0
- package/path.test.d.ts +2 -0
- package/path.test.d.ts.map +1 -0
- package/path.test.js +169 -0
- package/path.test.js.map +1 -0
- package/stream.d.ts +57 -0
- package/stream.d.ts.map +1 -0
- package/stream.js +326 -0
- package/stream.js.map +1 -0
- package/stream.test.d.ts +2 -0
- package/stream.test.d.ts.map +1 -0
- package/stream.test.js +210 -0
- package/stream.test.js.map +1 -0
- package/time.d.ts +109 -0
- package/time.d.ts.map +1 -0
- package/time.js +94 -0
- package/time.js.map +1 -0
- package/track.d.ts +85 -0
- package/track.d.ts.map +1 -0
- package/track.js +227 -0
- package/track.js.map +1 -0
- package/track.test.d.ts +2 -0
- package/track.test.d.ts.map +1 -0
- package/track.test.js +56 -0
- package/track.test.js.map +1 -0
- package/util/error.d.ts +3 -0
- package/util/error.d.ts.map +1 -0
- package/util/error.js +9 -0
- package/util/error.js.map +1 -0
- package/util/hex.d.ts +3 -0
- package/util/hex.d.ts.map +1 -0
- package/util/hex.js +16 -0
- package/util/hex.js.map +1 -0
- package/util/index.d.ts +2 -0
- package/util/index.d.ts.map +1 -0
- package/util/index.js +3 -0
- package/util/index.js.map +1 -0
- package/varint.d.ts +36 -0
- package/varint.d.ts.map +1 -0
- package/varint.js +288 -0
- package/varint.js.map +1 -0
- package/varint.test.d.ts +2 -0
- package/varint.test.d.ts.map +1 -0
- package/varint.test.js +106 -0
- package/varint.test.js.map +1 -0
- package/zod.d.ts +13 -0
- package/zod.d.ts.map +1 -0
- package/zod.js +19 -0
- package/zod.js.map +1 -0
package/stream.test.js
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/* @ts-self-types="./stream.test.d.ts" */
|
|
2
|
+
import { expect, test } from "bun:test";
|
|
3
|
+
import { Reader, Writer } from "./stream.js";
|
|
4
|
+
// Helper to create a writable stream that captures written data
|
|
5
|
+
function createTestWritableStream() {
|
|
6
|
+
const written = [];
|
|
7
|
+
const stream = new WritableStream({
|
|
8
|
+
write(chunk) {
|
|
9
|
+
written.push(new Uint8Array(chunk));
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
return { stream, written };
|
|
13
|
+
}
|
|
14
|
+
// Helper to concatenate written chunks
|
|
15
|
+
function concatChunks(chunks) {
|
|
16
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);
|
|
17
|
+
const result = new Uint8Array(totalLength);
|
|
18
|
+
let offset = 0;
|
|
19
|
+
for (const chunk of chunks) {
|
|
20
|
+
result.set(chunk, offset);
|
|
21
|
+
offset += chunk.byteLength;
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
test("Writer u8", async () => {
|
|
26
|
+
const { stream, written } = createTestWritableStream();
|
|
27
|
+
const writer = new Writer(stream);
|
|
28
|
+
await writer.u8(42);
|
|
29
|
+
await writer.u8(255);
|
|
30
|
+
writer.close();
|
|
31
|
+
await writer.closed;
|
|
32
|
+
expect(written.length).toBe(2);
|
|
33
|
+
expect(written[0]).toEqual(new Uint8Array([42]));
|
|
34
|
+
expect(written[1]).toEqual(new Uint8Array([255]));
|
|
35
|
+
});
|
|
36
|
+
test("Writer i32", async () => {
|
|
37
|
+
const { stream, written } = createTestWritableStream();
|
|
38
|
+
const writer = new Writer(stream);
|
|
39
|
+
await writer.i32(0);
|
|
40
|
+
await writer.i32(-1);
|
|
41
|
+
await writer.i32(1000);
|
|
42
|
+
writer.close();
|
|
43
|
+
await writer.closed;
|
|
44
|
+
const result = concatChunks(written);
|
|
45
|
+
expect(result.byteLength).toBe(12); // 3 * 4 bytes
|
|
46
|
+
// Read back the values
|
|
47
|
+
const view = new DataView(result.buffer, result.byteOffset, result.byteLength);
|
|
48
|
+
expect(view.getInt32(0)).toBe(0);
|
|
49
|
+
expect(view.getInt32(4)).toBe(-1);
|
|
50
|
+
expect(view.getInt32(8)).toBe(1000);
|
|
51
|
+
});
|
|
52
|
+
test("Writer u53", async () => {
|
|
53
|
+
const { stream, written } = createTestWritableStream();
|
|
54
|
+
const writer = new Writer(stream);
|
|
55
|
+
await writer.u53(0);
|
|
56
|
+
await writer.u53(63); // MAX_U6
|
|
57
|
+
await writer.u53(64); // MIN for 2-byte varint
|
|
58
|
+
await writer.u53(16383); // MAX_U14
|
|
59
|
+
await writer.u53(16384); // MIN for 4-byte varint
|
|
60
|
+
writer.close();
|
|
61
|
+
await writer.closed;
|
|
62
|
+
// Verify the varint encoding sizes
|
|
63
|
+
expect(written[0].byteLength).toBe(1); // 0 fits in 1 byte
|
|
64
|
+
expect(written[1].byteLength).toBe(1); // 63 fits in 1 byte
|
|
65
|
+
expect(written[2].byteLength).toBe(2); // 64 needs 2 bytes
|
|
66
|
+
expect(written[3].byteLength).toBe(2); // 16383 fits in 2 bytes
|
|
67
|
+
expect(written[4].byteLength).toBe(4); // 16384 needs 4 bytes
|
|
68
|
+
});
|
|
69
|
+
test("Writer string", async () => {
|
|
70
|
+
const { stream, written } = createTestWritableStream();
|
|
71
|
+
const writer = new Writer(stream);
|
|
72
|
+
await writer.string("hello");
|
|
73
|
+
await writer.string("🎉");
|
|
74
|
+
writer.close();
|
|
75
|
+
await writer.closed;
|
|
76
|
+
const result = concatChunks(written);
|
|
77
|
+
// Create a reader to parse the result
|
|
78
|
+
const reader = new Reader(undefined, result);
|
|
79
|
+
const str1 = await reader.string();
|
|
80
|
+
const str2 = await reader.string();
|
|
81
|
+
expect(str1).toBe("hello");
|
|
82
|
+
expect(str2).toBe("🎉");
|
|
83
|
+
});
|
|
84
|
+
test("Reader u8", async () => {
|
|
85
|
+
const data = new Uint8Array([42, 255, 0, 128]);
|
|
86
|
+
const reader = new Reader(undefined, data);
|
|
87
|
+
expect(await reader.u8()).toBe(42);
|
|
88
|
+
expect(await reader.u8()).toBe(255);
|
|
89
|
+
expect(await reader.u8()).toBe(0);
|
|
90
|
+
expect(await reader.u8()).toBe(128);
|
|
91
|
+
expect(await reader.done()).toBe(true);
|
|
92
|
+
});
|
|
93
|
+
test("Reader read with exact sizes", async () => {
|
|
94
|
+
const data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
|
|
95
|
+
const reader = new Reader(undefined, data);
|
|
96
|
+
const chunk1 = await reader.read(3);
|
|
97
|
+
expect(chunk1).toEqual(new Uint8Array([1, 2, 3]));
|
|
98
|
+
const chunk2 = await reader.read(2);
|
|
99
|
+
expect(chunk2).toEqual(new Uint8Array([4, 5]));
|
|
100
|
+
const chunk3 = await reader.read(3);
|
|
101
|
+
expect(chunk3).toEqual(new Uint8Array([6, 7, 8]));
|
|
102
|
+
expect(await reader.done()).toBe(true);
|
|
103
|
+
});
|
|
104
|
+
test("Reader read with zero size", async () => {
|
|
105
|
+
const data = new Uint8Array([1, 2, 3]);
|
|
106
|
+
const reader = new Reader(undefined, data);
|
|
107
|
+
const chunk = await reader.read(0);
|
|
108
|
+
expect(chunk).toEqual(new Uint8Array([]));
|
|
109
|
+
// Original data should still be available
|
|
110
|
+
const remaining = await reader.read(3);
|
|
111
|
+
expect(remaining).toEqual(new Uint8Array([1, 2, 3]));
|
|
112
|
+
});
|
|
113
|
+
test("Reader readAll", async () => {
|
|
114
|
+
const data = new Uint8Array([1, 2, 3, 4, 5]);
|
|
115
|
+
const reader = new Reader(undefined, data);
|
|
116
|
+
// Read some data first
|
|
117
|
+
await reader.read(2);
|
|
118
|
+
// readAll should get the remaining data
|
|
119
|
+
const remaining = await reader.readAll();
|
|
120
|
+
expect(remaining).toEqual(new Uint8Array([3, 4, 5]));
|
|
121
|
+
expect(await reader.done()).toBe(true);
|
|
122
|
+
});
|
|
123
|
+
test("Reader u53 varint decoding", async () => {
|
|
124
|
+
// Test various varint sizes
|
|
125
|
+
const testValues = [0, 63, 64, 16383, 16384, 1073741823, 1073741824];
|
|
126
|
+
const { stream, written } = createTestWritableStream();
|
|
127
|
+
const testWriter = new Writer(stream);
|
|
128
|
+
for (const value of testValues) {
|
|
129
|
+
await testWriter.u53(value);
|
|
130
|
+
}
|
|
131
|
+
testWriter.close();
|
|
132
|
+
await testWriter.closed;
|
|
133
|
+
const data = concatChunks(written);
|
|
134
|
+
const reader = new Reader(undefined, data);
|
|
135
|
+
for (const expectedValue of testValues) {
|
|
136
|
+
const actualValue = await reader.u53();
|
|
137
|
+
expect(actualValue).toBe(expectedValue);
|
|
138
|
+
}
|
|
139
|
+
expect(await reader.done()).toBe(true);
|
|
140
|
+
});
|
|
141
|
+
test("Reader u62 varint decoding", async () => {
|
|
142
|
+
const testValues = [0n, 63n, 64n, 16383n, 16384n, 1073741823n, 1073741824n, 9007199254740991n]; // MAX_U53
|
|
143
|
+
const { stream, written } = createTestWritableStream();
|
|
144
|
+
const testWriter = new Writer(stream);
|
|
145
|
+
for (const value of testValues) {
|
|
146
|
+
await testWriter.u62(value);
|
|
147
|
+
}
|
|
148
|
+
testWriter.close();
|
|
149
|
+
await testWriter.closed;
|
|
150
|
+
const data = concatChunks(written);
|
|
151
|
+
const reader = new Reader(undefined, data);
|
|
152
|
+
for (const expectedValue of testValues) {
|
|
153
|
+
const actualValue = await reader.u62();
|
|
154
|
+
expect(actualValue).toBe(expectedValue);
|
|
155
|
+
}
|
|
156
|
+
expect(await reader.done()).toBe(true);
|
|
157
|
+
});
|
|
158
|
+
test("Reader string decoding", async () => {
|
|
159
|
+
const testStrings = ["hello", "🎉", "", "world with spaces", "multi\nline\nstring"];
|
|
160
|
+
const { stream, written } = createTestWritableStream();
|
|
161
|
+
const writer = new Writer(stream);
|
|
162
|
+
for (const str of testStrings) {
|
|
163
|
+
await writer.string(str);
|
|
164
|
+
}
|
|
165
|
+
writer.close();
|
|
166
|
+
await writer.closed;
|
|
167
|
+
const data = concatChunks(written);
|
|
168
|
+
const reader = new Reader(undefined, data);
|
|
169
|
+
for (const expectedString of testStrings) {
|
|
170
|
+
const actualString = await reader.string();
|
|
171
|
+
expect(actualString).toBe(expectedString);
|
|
172
|
+
}
|
|
173
|
+
expect(await reader.done()).toBe(true);
|
|
174
|
+
});
|
|
175
|
+
test("Reader from stream", async () => {
|
|
176
|
+
const chunks = [new Uint8Array([1, 2, 3]), new Uint8Array([4, 5]), new Uint8Array([6, 7, 8, 9])];
|
|
177
|
+
const stream = new ReadableStream({
|
|
178
|
+
start(controller) {
|
|
179
|
+
for (const chunk of chunks) {
|
|
180
|
+
controller.enqueue(chunk);
|
|
181
|
+
}
|
|
182
|
+
controller.close();
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
const reader = new Reader(stream);
|
|
186
|
+
// Read all data
|
|
187
|
+
const result = await reader.readAll();
|
|
188
|
+
expect(result).toEqual(new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9]));
|
|
189
|
+
});
|
|
190
|
+
test("Reader stream with partial reads", async () => {
|
|
191
|
+
const chunks = [new Uint8Array([1, 2]), new Uint8Array([3, 4, 5]), new Uint8Array([6])];
|
|
192
|
+
const stream = new ReadableStream({
|
|
193
|
+
start(controller) {
|
|
194
|
+
for (const chunk of chunks) {
|
|
195
|
+
controller.enqueue(chunk);
|
|
196
|
+
}
|
|
197
|
+
controller.close();
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
const reader = new Reader(stream);
|
|
201
|
+
// Read specific amounts that cross chunk boundaries
|
|
202
|
+
const first = await reader.read(3); // Should span first two chunks
|
|
203
|
+
expect(first).toEqual(new Uint8Array([1, 2, 3]));
|
|
204
|
+
const second = await reader.read(2);
|
|
205
|
+
expect(second).toEqual(new Uint8Array([4, 5]));
|
|
206
|
+
const third = await reader.read(1);
|
|
207
|
+
expect(third).toEqual(new Uint8Array([6]));
|
|
208
|
+
expect(await reader.done()).toBe(true);
|
|
209
|
+
});
|
|
210
|
+
//# sourceMappingURL=stream.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.test.js","sourceRoot":"","sources":["../src/stream.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, test } from \"bun:test\";\nimport { Reader, Writer } from \"./stream.ts\";\n\n// Helper to create a writable stream that captures written data\nfunction createTestWritableStream(): { stream: WritableStream<Uint8Array>; written: Uint8Array[] } {\n\tconst written: Uint8Array[] = [];\n\tconst stream = new WritableStream<Uint8Array>({\n\t\twrite(chunk) {\n\t\t\twritten.push(new Uint8Array(chunk));\n\t\t},\n\t});\n\treturn { stream, written };\n}\n\n// Helper to concatenate written chunks\nfunction concatChunks(chunks: Uint8Array[]): Uint8Array {\n\tconst totalLength = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);\n\tconst result = new Uint8Array(totalLength);\n\tlet offset = 0;\n\tfor (const chunk of chunks) {\n\t\tresult.set(chunk, offset);\n\t\toffset += chunk.byteLength;\n\t}\n\treturn result;\n}\n\ntest(\"Writer u8\", async () => {\n\tconst { stream, written } = createTestWritableStream();\n\tconst writer = new Writer(stream);\n\n\tawait writer.u8(42);\n\tawait writer.u8(255);\n\n\twriter.close();\n\tawait writer.closed;\n\n\texpect(written.length).toBe(2);\n\texpect(written[0]).toEqual(new Uint8Array([42]));\n\texpect(written[1]).toEqual(new Uint8Array([255]));\n});\n\ntest(\"Writer i32\", async () => {\n\tconst { stream, written } = createTestWritableStream();\n\tconst writer = new Writer(stream);\n\n\tawait writer.i32(0);\n\tawait writer.i32(-1);\n\tawait writer.i32(1000);\n\n\twriter.close();\n\tawait writer.closed;\n\n\tconst result = concatChunks(written);\n\texpect(result.byteLength).toBe(12); // 3 * 4 bytes\n\n\t// Read back the values\n\tconst view = new DataView(result.buffer, result.byteOffset, result.byteLength);\n\texpect(view.getInt32(0)).toBe(0);\n\texpect(view.getInt32(4)).toBe(-1);\n\texpect(view.getInt32(8)).toBe(1000);\n});\n\ntest(\"Writer u53\", async () => {\n\tconst { stream, written } = createTestWritableStream();\n\tconst writer = new Writer(stream);\n\n\tawait writer.u53(0);\n\tawait writer.u53(63); // MAX_U6\n\tawait writer.u53(64); // MIN for 2-byte varint\n\tawait writer.u53(16383); // MAX_U14\n\tawait writer.u53(16384); // MIN for 4-byte varint\n\n\twriter.close();\n\tawait writer.closed;\n\n\t// Verify the varint encoding sizes\n\texpect(written[0].byteLength).toBe(1); // 0 fits in 1 byte\n\texpect(written[1].byteLength).toBe(1); // 63 fits in 1 byte\n\texpect(written[2].byteLength).toBe(2); // 64 needs 2 bytes\n\texpect(written[3].byteLength).toBe(2); // 16383 fits in 2 bytes\n\texpect(written[4].byteLength).toBe(4); // 16384 needs 4 bytes\n});\n\ntest(\"Writer string\", async () => {\n\tconst { stream, written } = createTestWritableStream();\n\tconst writer = new Writer(stream);\n\n\tawait writer.string(\"hello\");\n\tawait writer.string(\"🎉\");\n\n\twriter.close();\n\tawait writer.closed;\n\n\tconst result = concatChunks(written);\n\n\t// Create a reader to parse the result\n\tconst reader = new Reader(undefined, result);\n\n\tconst str1 = await reader.string();\n\tconst str2 = await reader.string();\n\n\texpect(str1).toBe(\"hello\");\n\texpect(str2).toBe(\"🎉\");\n});\n\ntest(\"Reader u8\", async () => {\n\tconst data = new Uint8Array([42, 255, 0, 128]);\n\tconst reader = new Reader(undefined, data);\n\n\texpect(await reader.u8()).toBe(42);\n\texpect(await reader.u8()).toBe(255);\n\texpect(await reader.u8()).toBe(0);\n\texpect(await reader.u8()).toBe(128);\n\n\texpect(await reader.done()).toBe(true);\n});\n\ntest(\"Reader read with exact sizes\", async () => {\n\tconst data = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);\n\tconst reader = new Reader(undefined, data);\n\n\tconst chunk1 = await reader.read(3);\n\texpect(chunk1).toEqual(new Uint8Array([1, 2, 3]));\n\n\tconst chunk2 = await reader.read(2);\n\texpect(chunk2).toEqual(new Uint8Array([4, 5]));\n\n\tconst chunk3 = await reader.read(3);\n\texpect(chunk3).toEqual(new Uint8Array([6, 7, 8]));\n\n\texpect(await reader.done()).toBe(true);\n});\n\ntest(\"Reader read with zero size\", async () => {\n\tconst data = new Uint8Array([1, 2, 3]);\n\tconst reader = new Reader(undefined, data);\n\n\tconst chunk = await reader.read(0);\n\texpect(chunk).toEqual(new Uint8Array([]));\n\n\t// Original data should still be available\n\tconst remaining = await reader.read(3);\n\texpect(remaining).toEqual(new Uint8Array([1, 2, 3]));\n});\n\ntest(\"Reader readAll\", async () => {\n\tconst data = new Uint8Array([1, 2, 3, 4, 5]);\n\tconst reader = new Reader(undefined, data);\n\n\t// Read some data first\n\tawait reader.read(2);\n\n\t// readAll should get the remaining data\n\tconst remaining = await reader.readAll();\n\texpect(remaining).toEqual(new Uint8Array([3, 4, 5]));\n\n\texpect(await reader.done()).toBe(true);\n});\n\ntest(\"Reader u53 varint decoding\", async () => {\n\t// Test various varint sizes\n\tconst testValues = [0, 63, 64, 16383, 16384, 1073741823, 1073741824];\n\n\tconst { stream, written } = createTestWritableStream();\n\tconst testWriter = new Writer(stream);\n\n\tfor (const value of testValues) {\n\t\tawait testWriter.u53(value);\n\t}\n\n\ttestWriter.close();\n\tawait testWriter.closed;\n\n\tconst data = concatChunks(written);\n\tconst reader = new Reader(undefined, data);\n\n\tfor (const expectedValue of testValues) {\n\t\tconst actualValue = await reader.u53();\n\t\texpect(actualValue).toBe(expectedValue);\n\t}\n\n\texpect(await reader.done()).toBe(true);\n});\n\ntest(\"Reader u62 varint decoding\", async () => {\n\tconst testValues = [0n, 63n, 64n, 16383n, 16384n, 1073741823n, 1073741824n, 9007199254740991n]; // MAX_U53\n\n\tconst { stream, written } = createTestWritableStream();\n\tconst testWriter = new Writer(stream);\n\n\tfor (const value of testValues) {\n\t\tawait testWriter.u62(value);\n\t}\n\n\ttestWriter.close();\n\tawait testWriter.closed;\n\n\tconst data = concatChunks(written);\n\tconst reader = new Reader(undefined, data);\n\n\tfor (const expectedValue of testValues) {\n\t\tconst actualValue = await reader.u62();\n\t\texpect(actualValue).toBe(expectedValue);\n\t}\n\n\texpect(await reader.done()).toBe(true);\n});\n\ntest(\"Reader string decoding\", async () => {\n\tconst testStrings = [\"hello\", \"🎉\", \"\", \"world with spaces\", \"multi\\nline\\nstring\"];\n\n\tconst { stream, written } = createTestWritableStream();\n\tconst writer = new Writer(stream);\n\n\tfor (const str of testStrings) {\n\t\tawait writer.string(str);\n\t}\n\n\twriter.close();\n\tawait writer.closed;\n\n\tconst data = concatChunks(written);\n\tconst reader = new Reader(undefined, data);\n\n\tfor (const expectedString of testStrings) {\n\t\tconst actualString = await reader.string();\n\t\texpect(actualString).toBe(expectedString);\n\t}\n\n\texpect(await reader.done()).toBe(true);\n});\n\ntest(\"Reader from stream\", async () => {\n\tconst chunks = [new Uint8Array([1, 2, 3]), new Uint8Array([4, 5]), new Uint8Array([6, 7, 8, 9])];\n\n\tconst stream = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tfor (const chunk of chunks) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t}\n\t\t\tcontroller.close();\n\t\t},\n\t});\n\n\tconst reader = new Reader(stream);\n\n\t// Read all data\n\tconst result = await reader.readAll();\n\texpect(result).toEqual(new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9]));\n});\n\ntest(\"Reader stream with partial reads\", async () => {\n\tconst chunks = [new Uint8Array([1, 2]), new Uint8Array([3, 4, 5]), new Uint8Array([6])];\n\n\tconst stream = new ReadableStream({\n\t\tstart(controller) {\n\t\t\tfor (const chunk of chunks) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t}\n\t\t\tcontroller.close();\n\t\t},\n\t});\n\n\tconst reader = new Reader(stream);\n\n\t// Read specific amounts that cross chunk boundaries\n\tconst first = await reader.read(3); // Should span first two chunks\n\texpect(first).toEqual(new Uint8Array([1, 2, 3]));\n\n\tconst second = await reader.read(2);\n\texpect(second).toEqual(new Uint8Array([4, 5]));\n\n\tconst third = await reader.read(1);\n\texpect(third).toEqual(new Uint8Array([6]));\n\n\texpect(await reader.done()).toBe(true);\n});\n"]}
|
package/time.d.ts
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** A duration in nanoseconds, branded so it can't be mixed with other units. */
|
|
2
|
+
export type Nano = number & {
|
|
3
|
+
readonly _brand: "nano";
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Constructors, conversions, and arithmetic for {@link Nano} values.
|
|
7
|
+
*
|
|
8
|
+
* Calling `Nano(x)` brands a raw number as nanoseconds. The unit is the caller's
|
|
9
|
+
* assertion: no conversion happens, so reach for `fromMicro`/`fromMilli`/`fromSecond`
|
|
10
|
+
* when the source has a unit.
|
|
11
|
+
*/
|
|
12
|
+
export declare const Nano: {
|
|
13
|
+
readonly zero: Nano;
|
|
14
|
+
readonly fromMicro: (us: Micro) => Nano;
|
|
15
|
+
readonly fromMilli: (ms: Milli) => Nano;
|
|
16
|
+
readonly fromSecond: (s: Second) => Nano;
|
|
17
|
+
readonly toMicro: (ns: Nano) => Micro;
|
|
18
|
+
readonly toMilli: (ns: Nano) => Milli;
|
|
19
|
+
readonly toSecond: (ns: Nano) => Second;
|
|
20
|
+
readonly now: () => Nano;
|
|
21
|
+
readonly add: (a: Nano, b: Nano) => Nano;
|
|
22
|
+
readonly sub: (a: Nano, b: Nano) => Nano;
|
|
23
|
+
readonly mul: (a: Nano, b: number) => Nano;
|
|
24
|
+
readonly div: (a: Nano, b: number) => Nano;
|
|
25
|
+
readonly max: (a: Nano, b: Nano) => Nano;
|
|
26
|
+
readonly min: (a: Nano, b: Nano) => Nano;
|
|
27
|
+
};
|
|
28
|
+
/** A duration in microseconds, branded so it can't be mixed with other units. */
|
|
29
|
+
export type Micro = number & {
|
|
30
|
+
readonly _brand: "micro";
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Constructors, conversions, and arithmetic for {@link Micro} values.
|
|
34
|
+
*
|
|
35
|
+
* Calling `Micro(x)` brands a raw number as microseconds. This asserts the unit
|
|
36
|
+
* rather than converting, so use `fromNano`/`fromMilli`/`fromSecond` to convert
|
|
37
|
+
* from another unit.
|
|
38
|
+
*/
|
|
39
|
+
export declare const Micro: {
|
|
40
|
+
readonly zero: Micro;
|
|
41
|
+
readonly fromNano: (ns: Nano) => Micro;
|
|
42
|
+
readonly fromMilli: (ms: Milli) => Micro;
|
|
43
|
+
readonly fromSecond: (s: Second) => Micro;
|
|
44
|
+
readonly toNano: (us: Micro) => Nano;
|
|
45
|
+
readonly toMilli: (us: Micro) => Milli;
|
|
46
|
+
readonly toSecond: (us: Micro) => Second;
|
|
47
|
+
readonly now: () => Micro;
|
|
48
|
+
readonly add: (a: Micro, b: Micro) => Micro;
|
|
49
|
+
readonly sub: (a: Micro, b: Micro) => Micro;
|
|
50
|
+
readonly mul: (a: Micro, b: number) => Micro;
|
|
51
|
+
readonly div: (a: Micro, b: number) => Micro;
|
|
52
|
+
readonly max: (a: Micro, b: Micro) => Micro;
|
|
53
|
+
readonly min: (a: Micro, b: Micro) => Micro;
|
|
54
|
+
};
|
|
55
|
+
/** A duration in milliseconds, branded so it can't be mixed with other units. */
|
|
56
|
+
export type Milli = number & {
|
|
57
|
+
readonly _brand: "milli";
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Constructors, conversions, and arithmetic for {@link Milli} values.
|
|
61
|
+
*
|
|
62
|
+
* Calling `Milli(x)` brands a raw number as milliseconds. This asserts the unit
|
|
63
|
+
* rather than converting, so use `fromNano`/`fromMicro`/`fromSecond` to convert
|
|
64
|
+
* from another unit.
|
|
65
|
+
*/
|
|
66
|
+
export declare const Milli: {
|
|
67
|
+
readonly zero: Milli;
|
|
68
|
+
readonly fromNano: (ns: Nano) => Milli;
|
|
69
|
+
readonly fromMicro: (us: Micro) => Milli;
|
|
70
|
+
readonly fromSecond: (s: Second) => Milli;
|
|
71
|
+
readonly toNano: (ms: Milli) => Nano;
|
|
72
|
+
readonly toMicro: (ms: Milli) => Micro;
|
|
73
|
+
readonly toSecond: (ms: Milli) => Second;
|
|
74
|
+
readonly now: () => Milli;
|
|
75
|
+
readonly add: (a: Milli, b: Milli) => Milli;
|
|
76
|
+
readonly sub: (a: Milli, b: Milli) => Milli;
|
|
77
|
+
readonly mul: (a: Milli, b: number) => Milli;
|
|
78
|
+
readonly div: (a: Milli, b: number) => Milli;
|
|
79
|
+
readonly max: (a: Milli, b: Milli) => Milli;
|
|
80
|
+
readonly min: (a: Milli, b: Milli) => Milli;
|
|
81
|
+
};
|
|
82
|
+
/** A duration in seconds, branded so it can't be mixed with other units. */
|
|
83
|
+
export type Second = number & {
|
|
84
|
+
readonly _brand: "second";
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Constructors, conversions, and arithmetic for {@link Second} values.
|
|
88
|
+
*
|
|
89
|
+
* Calling `Second(x)` brands a raw number as seconds. This asserts the unit
|
|
90
|
+
* rather than converting, so use `fromNano`/`fromMicro`/`fromMilli` to convert
|
|
91
|
+
* from another unit.
|
|
92
|
+
*/
|
|
93
|
+
export declare const Second: {
|
|
94
|
+
readonly zero: Second;
|
|
95
|
+
readonly fromNano: (ns: Nano) => Second;
|
|
96
|
+
readonly fromMicro: (us: Micro) => Second;
|
|
97
|
+
readonly fromMilli: (ms: Milli) => Second;
|
|
98
|
+
readonly toNano: (s: Second) => Nano;
|
|
99
|
+
readonly toMicro: (s: Second) => Micro;
|
|
100
|
+
readonly toMilli: (s: Second) => Milli;
|
|
101
|
+
readonly now: () => Second;
|
|
102
|
+
readonly add: (a: Second, b: Second) => Second;
|
|
103
|
+
readonly sub: (a: Second, b: Second) => Second;
|
|
104
|
+
readonly mul: (a: Second, b: number) => Second;
|
|
105
|
+
readonly div: (a: Second, b: number) => Second;
|
|
106
|
+
readonly max: (a: Second, b: Second) => Second;
|
|
107
|
+
readonly min: (a: Second, b: Second) => Second;
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=time.d.ts.map
|
package/time.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"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"}
|
package/time.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* @ts-self-types="./time.d.ts" */
|
|
2
|
+
/**
|
|
3
|
+
* Constructors, conversions, and arithmetic for {@link Nano} values.
|
|
4
|
+
*
|
|
5
|
+
* Calling `Nano(x)` brands a raw number as nanoseconds. The unit is the caller's
|
|
6
|
+
* assertion: no conversion happens, so reach for `fromMicro`/`fromMilli`/`fromSecond`
|
|
7
|
+
* when the source has a unit.
|
|
8
|
+
*/
|
|
9
|
+
export const Nano = {
|
|
10
|
+
zero: 0,
|
|
11
|
+
fromMicro: (us) => (us * 1_000),
|
|
12
|
+
fromMilli: (ms) => (ms * 1_000_000),
|
|
13
|
+
fromSecond: (s) => (s * 1_000_000_000),
|
|
14
|
+
toMicro: (ns) => (ns / 1_000),
|
|
15
|
+
toMilli: (ns) => (ns / 1_000_000),
|
|
16
|
+
toSecond: (ns) => (ns / 1_000_000_000),
|
|
17
|
+
now: () => (performance.now() * 1_000_000),
|
|
18
|
+
add: (a, b) => (a + b),
|
|
19
|
+
sub: (a, b) => (a - b),
|
|
20
|
+
mul: (a, b) => (a * b),
|
|
21
|
+
div: (a, b) => (a / b),
|
|
22
|
+
max: (a, b) => Math.max(a, b),
|
|
23
|
+
min: (a, b) => Math.min(a, b),
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Constructors, conversions, and arithmetic for {@link Micro} values.
|
|
27
|
+
*
|
|
28
|
+
* Calling `Micro(x)` brands a raw number as microseconds. This asserts the unit
|
|
29
|
+
* rather than converting, so use `fromNano`/`fromMilli`/`fromSecond` to convert
|
|
30
|
+
* from another unit.
|
|
31
|
+
*/
|
|
32
|
+
export const Micro = {
|
|
33
|
+
zero: 0,
|
|
34
|
+
fromNano: (ns) => (ns / 1_000),
|
|
35
|
+
fromMilli: (ms) => (ms * 1_000),
|
|
36
|
+
fromSecond: (s) => (s * 1_000_000),
|
|
37
|
+
toNano: (us) => (us * 1_000),
|
|
38
|
+
toMilli: (us) => (us / 1_000),
|
|
39
|
+
toSecond: (us) => (us / 1_000_000),
|
|
40
|
+
now: () => (performance.now() * 1_000),
|
|
41
|
+
add: (a, b) => (a + b),
|
|
42
|
+
sub: (a, b) => (a - b),
|
|
43
|
+
mul: (a, b) => (a * b),
|
|
44
|
+
div: (a, b) => (a / b),
|
|
45
|
+
max: (a, b) => Math.max(a, b),
|
|
46
|
+
min: (a, b) => Math.min(a, b),
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Constructors, conversions, and arithmetic for {@link Milli} values.
|
|
50
|
+
*
|
|
51
|
+
* Calling `Milli(x)` brands a raw number as milliseconds. This asserts the unit
|
|
52
|
+
* rather than converting, so use `fromNano`/`fromMicro`/`fromSecond` to convert
|
|
53
|
+
* from another unit.
|
|
54
|
+
*/
|
|
55
|
+
export const Milli = {
|
|
56
|
+
zero: 0,
|
|
57
|
+
fromNano: (ns) => (ns / 1_000_000),
|
|
58
|
+
fromMicro: (us) => (us / 1_000),
|
|
59
|
+
fromSecond: (s) => (s * 1_000),
|
|
60
|
+
toNano: (ms) => (ms * 1_000_000),
|
|
61
|
+
toMicro: (ms) => (ms * 1_000),
|
|
62
|
+
toSecond: (ms) => (ms / 1_000),
|
|
63
|
+
now: () => performance.now(),
|
|
64
|
+
add: (a, b) => (a + b),
|
|
65
|
+
sub: (a, b) => (a - b),
|
|
66
|
+
mul: (a, b) => (a * b),
|
|
67
|
+
div: (a, b) => (a / b),
|
|
68
|
+
max: (a, b) => Math.max(a, b),
|
|
69
|
+
min: (a, b) => Math.min(a, b),
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Constructors, conversions, and arithmetic for {@link Second} values.
|
|
73
|
+
*
|
|
74
|
+
* Calling `Second(x)` brands a raw number as seconds. This asserts the unit
|
|
75
|
+
* rather than converting, so use `fromNano`/`fromMicro`/`fromMilli` to convert
|
|
76
|
+
* from another unit.
|
|
77
|
+
*/
|
|
78
|
+
export const Second = {
|
|
79
|
+
zero: 0,
|
|
80
|
+
fromNano: (ns) => (ns / 1_000_000_000),
|
|
81
|
+
fromMicro: (us) => (us / 1_000_000),
|
|
82
|
+
fromMilli: (ms) => (ms / 1_000),
|
|
83
|
+
toNano: (s) => (s * 1_000_000_000),
|
|
84
|
+
toMicro: (s) => (s * 1_000_000),
|
|
85
|
+
toMilli: (s) => (s * 1_000),
|
|
86
|
+
now: () => (performance.now() / 1_000),
|
|
87
|
+
add: (a, b) => (a + b),
|
|
88
|
+
sub: (a, b) => (a - b),
|
|
89
|
+
mul: (a, b) => (a * b),
|
|
90
|
+
div: (a, b) => (a / b),
|
|
91
|
+
max: (a, b) => Math.max(a, b),
|
|
92
|
+
min: (a, b) => Math.min(a, b),
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=time.js.map
|
package/time.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"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","sourcesContent":["/** A duration in nanoseconds, branded so it can't be mixed with other units. */\nexport type Nano = number & { readonly _brand: \"nano\" };\n\n/**\n * Constructors, conversions, and arithmetic for {@link Nano} values.\n *\n * Calling `Nano(x)` brands a raw number as nanoseconds. The unit is the caller's\n * assertion: no conversion happens, so reach for `fromMicro`/`fromMilli`/`fromSecond`\n * when the source has a unit.\n */\nexport const Nano = {\n\tzero: 0 as Nano,\n\tfromMicro: (us: Micro): Nano => (us * 1_000) as Nano,\n\tfromMilli: (ms: Milli): Nano => (ms * 1_000_000) as Nano,\n\tfromSecond: (s: Second): Nano => (s * 1_000_000_000) as Nano,\n\ttoMicro: (ns: Nano): Micro => (ns / 1_000) as Micro,\n\ttoMilli: (ns: Nano): Milli => (ns / 1_000_000) as Milli,\n\ttoSecond: (ns: Nano): Second => (ns / 1_000_000_000) as Second,\n\tnow: (): Nano => (performance.now() * 1_000_000) as Nano,\n\tadd: (a: Nano, b: Nano): Nano => (a + b) as Nano,\n\tsub: (a: Nano, b: Nano): Nano => (a - b) as Nano,\n\tmul: (a: Nano, b: number): Nano => (a * b) as Nano,\n\tdiv: (a: Nano, b: number): Nano => (a / b) as Nano,\n\tmax: (a: Nano, b: Nano): Nano => Math.max(a, b) as Nano,\n\tmin: (a: Nano, b: Nano): Nano => Math.min(a, b) as Nano,\n} as const;\n\n/** A duration in microseconds, branded so it can't be mixed with other units. */\nexport type Micro = number & { readonly _brand: \"micro\" };\n\n/**\n * Constructors, conversions, and arithmetic for {@link Micro} values.\n *\n * Calling `Micro(x)` brands a raw number as microseconds. This asserts the unit\n * rather than converting, so use `fromNano`/`fromMilli`/`fromSecond` to convert\n * from another unit.\n */\nexport const Micro = {\n\tzero: 0 as Micro,\n\tfromNano: (ns: Nano): Micro => (ns / 1_000) as Micro,\n\tfromMilli: (ms: Milli): Micro => (ms * 1_000) as Micro,\n\tfromSecond: (s: Second): Micro => (s * 1_000_000) as Micro,\n\ttoNano: (us: Micro): Nano => (us * 1_000) as Nano,\n\ttoMilli: (us: Micro): Milli => (us / 1_000) as Milli,\n\ttoSecond: (us: Micro): Second => (us / 1_000_000) as Second,\n\tnow: (): Micro => (performance.now() * 1_000) as Micro,\n\tadd: (a: Micro, b: Micro): Micro => (a + b) as Micro,\n\tsub: (a: Micro, b: Micro): Micro => (a - b) as Micro,\n\tmul: (a: Micro, b: number): Micro => (a * b) as Micro,\n\tdiv: (a: Micro, b: number): Micro => (a / b) as Micro,\n\tmax: (a: Micro, b: Micro): Micro => Math.max(a, b) as Micro,\n\tmin: (a: Micro, b: Micro): Micro => Math.min(a, b) as Micro,\n} as const;\n\n/** A duration in milliseconds, branded so it can't be mixed with other units. */\nexport type Milli = number & { readonly _brand: \"milli\" };\n\n/**\n * Constructors, conversions, and arithmetic for {@link Milli} values.\n *\n * Calling `Milli(x)` brands a raw number as milliseconds. This asserts the unit\n * rather than converting, so use `fromNano`/`fromMicro`/`fromSecond` to convert\n * from another unit.\n */\nexport const Milli = {\n\tzero: 0 as Milli,\n\tfromNano: (ns: Nano): Milli => (ns / 1_000_000) as Milli,\n\tfromMicro: (us: Micro): Milli => (us / 1_000) as Milli,\n\tfromSecond: (s: Second): Milli => (s * 1_000) as Milli,\n\ttoNano: (ms: Milli): Nano => (ms * 1_000_000) as Nano,\n\ttoMicro: (ms: Milli): Micro => (ms * 1_000) as Micro,\n\ttoSecond: (ms: Milli): Second => (ms / 1_000) as Second,\n\tnow: (): Milli => performance.now() as Milli,\n\tadd: (a: Milli, b: Milli): Milli => (a + b) as Milli,\n\tsub: (a: Milli, b: Milli): Milli => (a - b) as Milli,\n\tmul: (a: Milli, b: number): Milli => (a * b) as Milli,\n\tdiv: (a: Milli, b: number): Milli => (a / b) as Milli,\n\tmax: (a: Milli, b: Milli): Milli => Math.max(a, b) as Milli,\n\tmin: (a: Milli, b: Milli): Milli => Math.min(a, b) as Milli,\n} as const;\n\n/** A duration in seconds, branded so it can't be mixed with other units. */\nexport type Second = number & { readonly _brand: \"second\" };\n\n/**\n * Constructors, conversions, and arithmetic for {@link Second} values.\n *\n * Calling `Second(x)` brands a raw number as seconds. This asserts the unit\n * rather than converting, so use `fromNano`/`fromMicro`/`fromMilli` to convert\n * from another unit.\n */\nexport const Second = {\n\tzero: 0 as Second,\n\tfromNano: (ns: Nano): Second => (ns / 1_000_000_000) as Second,\n\tfromMicro: (us: Micro): Second => (us / 1_000_000) as Second,\n\tfromMilli: (ms: Milli): Second => (ms / 1_000) as Second,\n\ttoNano: (s: Second): Nano => (s * 1_000_000_000) as Nano,\n\ttoMicro: (s: Second): Micro => (s * 1_000_000) as Micro,\n\ttoMilli: (s: Second): Milli => (s * 1_000) as Milli,\n\tnow: (): Second => (performance.now() / 1_000) as Second,\n\tadd: (a: Second, b: Second): Second => (a + b) as Second,\n\tsub: (a: Second, b: Second): Second => (a - b) as Second,\n\tmul: (a: Second, b: number): Second => (a * b) as Second,\n\tdiv: (a: Second, b: number): Second => (a / b) as Second,\n\tmax: (a: Second, b: Second): Second => Math.max(a, b) as Second,\n\tmin: (a: Second, b: Second): Second => Math.min(a, b) as Second,\n} as const;\n"]}
|
package/track.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Signal } from "@norskvideo/moq-signals";
|
|
2
|
+
import { Group } from "./group";
|
|
3
|
+
/** Reactive backing state for a {@link Track}: buffered groups, a closed flag, and the subscription priority. */
|
|
4
|
+
export declare class TrackState {
|
|
5
|
+
groups: Signal<Group[]>;
|
|
6
|
+
closed: Signal<boolean | Error>;
|
|
7
|
+
priority: Signal<number | undefined>;
|
|
8
|
+
}
|
|
9
|
+
/** A live stream of groups within a broadcast, identified by name. */
|
|
10
|
+
export declare class Track {
|
|
11
|
+
#private;
|
|
12
|
+
/** Name of this track within its broadcast. */
|
|
13
|
+
readonly name: string;
|
|
14
|
+
/** Reactive backing state. */
|
|
15
|
+
state: TrackState;
|
|
16
|
+
/** Resolves with the abort error (or undefined) once closed. */
|
|
17
|
+
readonly closed: Promise<Error | undefined>;
|
|
18
|
+
constructor(name: string);
|
|
19
|
+
/**
|
|
20
|
+
* Appends a new group to the track.
|
|
21
|
+
* @returns A GroupProducer for the new group
|
|
22
|
+
*/
|
|
23
|
+
appendGroup(): Group;
|
|
24
|
+
/**
|
|
25
|
+
* Inserts an existing group into the track.
|
|
26
|
+
* @param group - The group to insert
|
|
27
|
+
*/
|
|
28
|
+
writeGroup(group: Group): void;
|
|
29
|
+
/**
|
|
30
|
+
* Appends a frame to the track in its own group.
|
|
31
|
+
*
|
|
32
|
+
* @param frame - The frame to append
|
|
33
|
+
*/
|
|
34
|
+
writeFrame(frame: Uint8Array): void;
|
|
35
|
+
/** Appends a string to the track as its own single-frame group. */
|
|
36
|
+
writeString(str: string): void;
|
|
37
|
+
/** Appends a JSON value to the track as its own single-frame group. */
|
|
38
|
+
writeJson(json: unknown): void;
|
|
39
|
+
/** Appends a boolean to the track as its own single-frame group. */
|
|
40
|
+
writeBool(bool: boolean): void;
|
|
41
|
+
/**
|
|
42
|
+
* Receive the next group available on this track, in arrival order.
|
|
43
|
+
*
|
|
44
|
+
* Groups may arrive out of order or with gaps due to network conditions.
|
|
45
|
+
* Use {@link nextGroupOrdered} if you need groups in sequence order,
|
|
46
|
+
* skipping those that arrive too late.
|
|
47
|
+
*/
|
|
48
|
+
recvGroup(): Promise<Group | undefined>;
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated Use {@link recvGroup} for arrival order, or {@link nextGroupOrdered} for sequence order.
|
|
51
|
+
*/
|
|
52
|
+
nextGroup(): Promise<Group | undefined>;
|
|
53
|
+
/**
|
|
54
|
+
* Return the next group with a strictly-greater sequence number than the last returned.
|
|
55
|
+
*
|
|
56
|
+
* Late arrivals (with a sequence number at or below the last one returned) are silently skipped.
|
|
57
|
+
*
|
|
58
|
+
* NOTE: This will be renamed to `nextGroup` in the next major version.
|
|
59
|
+
*/
|
|
60
|
+
nextGroupOrdered(): Promise<Group | undefined>;
|
|
61
|
+
/** Reads the next frame across all groups, discarding older groups. */
|
|
62
|
+
readFrame(): Promise<Uint8Array | undefined>;
|
|
63
|
+
/** Reads the next frame along with its group and frame sequence numbers. */
|
|
64
|
+
readFrameSequence(): Promise<{
|
|
65
|
+
group: number;
|
|
66
|
+
frame: number;
|
|
67
|
+
data: Uint8Array;
|
|
68
|
+
} | undefined>;
|
|
69
|
+
/** Reads the next frame and decodes it as a UTF-8 string. */
|
|
70
|
+
readString(): Promise<string | undefined>;
|
|
71
|
+
/** Reads the next frame and parses it as JSON. */
|
|
72
|
+
readJson(): Promise<unknown | undefined>;
|
|
73
|
+
/** Reads the next frame and decodes it as a one-byte boolean, throwing on a malformed frame. */
|
|
74
|
+
readBool(): Promise<boolean | undefined>;
|
|
75
|
+
/**
|
|
76
|
+
* Update the subscription priority. Triggers a SUBSCRIBE_UPDATE
|
|
77
|
+
* to the publisher when used on a subscribed track.
|
|
78
|
+
*/
|
|
79
|
+
updatePriority(priority: number): void;
|
|
80
|
+
/**
|
|
81
|
+
* Closes the publisher and all associated groups.
|
|
82
|
+
*/
|
|
83
|
+
close(abort?: Error): void;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=track.d.ts.map
|
package/track.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,iHAAiH;AACjH,qBAAa,UAAU;IACtB,MAAM,kBAA2B;IACjC,MAAM,0BAAsC;IAC5C,QAAQ,6BAA6C;CACrD;AAED,sEAAsE;AACtE,qBAAa,KAAK;;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,8BAA8B;IAC9B,KAAK,aAAoB;IAIzB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAE5C,YAAY,IAAI,EAAE,MAAM,EAUvB;IAED;;;OAGG;IACH,WAAW,IAAI,KAAK,CAYnB;IAED;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,KAAK,QAYtB;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,UAAU,QAI3B;IAED,mEAAmE;IACnE,WAAW,CAAC,GAAG,EAAE,MAAM,QAItB;IAED,uEAAuE;IACvE,SAAS,CAAC,IAAI,EAAE,OAAO,QAItB;IAED,oEAAoE;IACpE,SAAS,CAAC,IAAI,EAAE,OAAO,QAItB;IAED;;;;;;OAMG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAa5C;IAED;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAE5C;IAED;;;;;;OAMG;IACG,gBAAgB,IAAI,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAWnD;IAED,uEAAuE;IACjE,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEjD;IAED,4EAA4E;IACtE,iBAAiB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS,CAAC,CA8CjG;IAED,6DAA6D;IACvD,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAI9C;IAED,kDAAkD;IAC5C,QAAQ,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAI7C;IAED,gGAAgG;IAC1F,QAAQ,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAK7C;IAED;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,QAE9B;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,QAMlB;CACD"}
|