@moqtap/codec 0.5.0 → 0.7.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 +4 -2
- package/dist/{chunk-CXFAQKL3.js → chunk-23KRITJ6.js} +1 -1
- package/dist/{chunk-JL3NEW3O.cjs → chunk-4XLYCT5Q.cjs} +90 -1
- package/dist/{chunk-DLSGOZ6P.js → chunk-5XZKO2U5.js} +34 -34
- package/dist/chunk-APTV6F72.js +2095 -0
- package/dist/{chunk-JB5VDJ2V.cjs → chunk-B56AG5HU.cjs} +37 -37
- package/dist/chunk-CQ65LKPQ.cjs +446 -0
- package/dist/{chunk-4HBKHNU2.cjs → chunk-CZNW3R5E.cjs} +37 -37
- package/dist/{chunk-Q5D6OW6Q.js → chunk-DORX55MO.js} +1 -1
- package/dist/{chunk-OGZTQA24.cjs → chunk-EQAYMCXO.cjs} +64 -64
- package/dist/{chunk-HYI6LFMD.js → chunk-HEO2JG6C.js} +1 -1
- package/dist/{chunk-UP4XPH4J.js → chunk-I55J3KXD.js} +31 -31
- package/dist/{chunk-HZHSO7EW.cjs → chunk-IDV2JYJ6.cjs} +39 -39
- package/dist/{chunk-BAG6YWCP.cjs → chunk-IEJULBKB.cjs} +63 -63
- package/dist/{chunk-Y6KCSM3V.js → chunk-IJAF6PAY.js} +1 -1
- package/dist/{chunk-WMJVSBBE.cjs → chunk-J3ASFPCX.cjs} +57 -57
- package/dist/{chunk-COWGGUL4.js → chunk-JKMYAUGY.js} +1 -1
- package/dist/{chunk-SIYYMFCC.cjs → chunk-KCH4BQXK.cjs} +37 -37
- package/dist/{chunk-VOU7PNHI.js → chunk-KLPWJU6W.js} +89 -0
- package/dist/{chunk-NZ7GYEMT.js → chunk-KNLPX3YA.js} +1 -1
- package/dist/{chunk-A33U4WVS.cjs → chunk-KTVN4P6J.cjs} +67 -67
- package/dist/{chunk-7KBAWOBA.js → chunk-KYVTM5VI.js} +1 -1
- package/dist/{chunk-RZ3UML47.js → chunk-MD2OA7SE.js} +1 -1
- package/dist/chunk-MH7537FB.cjs +2095 -0
- package/dist/{chunk-SHMA4PBY.js → chunk-N2V7Z37J.js} +1 -1
- package/dist/chunk-O5DQ44TM.js +446 -0
- package/dist/{chunk-HO44OANK.cjs → chunk-QGIHC6BA.cjs} +36 -36
- package/dist/{chunk-PKEOQSSZ.cjs → chunk-RIIA4ALQ.cjs} +37 -37
- package/dist/{chunk-XZE5R57R.cjs → chunk-VZHL2U2N.cjs} +37 -37
- package/dist/{chunk-RW4UG7CN.js → chunk-XHAP2YST.js} +1 -1
- package/dist/{chunk-JTRU76JN.cjs → chunk-Y4FRXYX6.cjs} +59 -59
- package/dist/{codec-yJ_axwtp.d.cts → codec-B1snaM9L.d.cts} +1 -1
- package/dist/{codec-Tdey03Bo.d.ts → codec-BLYAy2OP.d.ts} +1 -1
- package/dist/{codec-DqHwYWM-.d.ts → codec-BNS3gS77.d.ts} +1 -1
- package/dist/{codec-CBLLytyP.d.cts → codec-BOtv3R5j.d.cts} +1 -1
- package/dist/{codec-C17JvsEU.d.cts → codec-BOyrk_C9.d.cts} +1 -1
- package/dist/{codec-BsSNjvB3.d.cts → codec-BqqoYdh_.d.cts} +1 -1
- package/dist/{codec-BhW5CGZq.d.ts → codec-CI0BjmHc.d.ts} +1 -1
- package/dist/{codec-BvzKRqiP.d.ts → codec-CWj5iTxA.d.ts} +1 -1
- package/dist/{codec-DbpLHKXN.d.cts → codec-CyApDKwf.d.cts} +1 -1
- package/dist/{codec-6s9d5yZm.d.ts → codec-D2JbI2tp.d.ts} +1 -1
- package/dist/{codec-BzRIVIzS.d.ts → codec-D47r_-Rl.d.ts} +1 -1
- package/dist/{codec-GayA_uN0.d.ts → codec-D49OofBr.d.ts} +1 -1
- package/dist/{codec-MxIhLDR5.d.cts → codec-D89DWXbv.d.cts} +1 -1
- package/dist/{codec-CzBmYisK.d.cts → codec-D95gT98n.d.cts} +1 -1
- package/dist/codec-DAePx2NL.d.ts +30 -0
- package/dist/{codec-D_9X0i31.d.ts → codec-DJmV04i0.d.ts} +1 -1
- package/dist/{codec-Cbv3sG2y.d.ts → codec-DL0njGkL.d.ts} +1 -1
- package/dist/{codec-D2YMCU11.d.cts → codec-DQWQSam3.d.cts} +1 -1
- package/dist/{codec-Bp4HPezr.d.ts → codec-DplRgIKq.d.ts} +1 -1
- package/dist/{codec-3ZgEK-Yj.d.ts → codec-DujHf55Z.d.ts} +1 -1
- package/dist/{codec-DS-As0Pp.d.cts → codec-DvcJgYKq.d.cts} +1 -1
- package/dist/{codec-D5Ss123f.d.cts → codec-NMsTK0GX.d.cts} +1 -1
- package/dist/{codec-BvSmr-Jp.d.ts → codec-WwwUipaU.d.ts} +1 -1
- package/dist/{codec-B6ouUJrm.d.cts → codec-cou9XBMF.d.cts} +1 -1
- package/dist/{codec-R28KwiGM.d.cts → codec-hvkJfCF5.d.cts} +1 -1
- package/dist/codec-xeuGZY77.d.cts +30 -0
- package/dist/draft07-session.d.cts +3 -3
- package/dist/draft07-session.d.ts +3 -3
- package/dist/draft07.cjs +4 -4
- package/dist/draft07.d.cts +3 -3
- package/dist/draft07.d.ts +3 -3
- package/dist/draft07.js +2 -2
- package/dist/draft08-session.d.cts +3 -3
- package/dist/draft08-session.d.ts +3 -3
- package/dist/draft08.cjs +3 -3
- package/dist/draft08.d.cts +4 -4
- package/dist/draft08.d.ts +4 -4
- package/dist/draft08.js +2 -2
- package/dist/draft09-session.d.cts +3 -3
- package/dist/draft09-session.d.ts +3 -3
- package/dist/draft09.cjs +3 -3
- package/dist/draft09.d.cts +4 -4
- package/dist/draft09.d.ts +4 -4
- package/dist/draft09.js +2 -2
- package/dist/draft10-session.d.cts +3 -3
- package/dist/draft10-session.d.ts +3 -3
- package/dist/draft10.cjs +3 -3
- package/dist/draft10.d.cts +4 -4
- package/dist/draft10.d.ts +4 -4
- package/dist/draft10.js +2 -2
- package/dist/draft11-session.d.cts +3 -3
- package/dist/draft11-session.d.ts +3 -3
- package/dist/draft11.cjs +3 -3
- package/dist/draft11.d.cts +4 -4
- package/dist/draft11.d.ts +4 -4
- package/dist/draft11.js +2 -2
- package/dist/draft12-session.d.cts +3 -3
- package/dist/draft12-session.d.ts +3 -3
- package/dist/draft12.cjs +3 -3
- package/dist/draft12.d.cts +4 -4
- package/dist/draft12.d.ts +4 -4
- package/dist/draft12.js +2 -2
- package/dist/draft13-session.d.cts +3 -3
- package/dist/draft13-session.d.ts +3 -3
- package/dist/draft13.cjs +3 -3
- package/dist/draft13.d.cts +4 -4
- package/dist/draft13.d.ts +4 -4
- package/dist/draft13.js +2 -2
- package/dist/draft14-session.d.cts +3 -3
- package/dist/draft14-session.d.ts +3 -3
- package/dist/draft14.cjs +3 -3
- package/dist/draft14.d.cts +4 -4
- package/dist/draft14.d.ts +4 -4
- package/dist/draft14.js +2 -2
- package/dist/draft15-session.d.cts +3 -3
- package/dist/draft15-session.d.ts +3 -3
- package/dist/draft15.cjs +3 -3
- package/dist/draft15.d.cts +4 -4
- package/dist/draft15.d.ts +4 -4
- package/dist/draft15.js +2 -2
- package/dist/draft16-session.d.cts +3 -3
- package/dist/draft16-session.d.ts +3 -3
- package/dist/draft16.cjs +3 -3
- package/dist/draft16.d.cts +4 -4
- package/dist/draft16.d.ts +4 -4
- package/dist/draft16.js +2 -2
- package/dist/draft17-session.d.cts +3 -3
- package/dist/draft17-session.d.ts +3 -3
- package/dist/draft17.cjs +3 -3
- package/dist/draft17.d.cts +3 -3
- package/dist/draft17.d.ts +3 -3
- package/dist/draft17.js +2 -2
- package/dist/draft18-session.d.cts +3 -3
- package/dist/draft18-session.d.ts +3 -3
- package/dist/draft18.cjs +3 -3
- package/dist/draft18.d.cts +3 -3
- package/dist/draft18.d.ts +3 -3
- package/dist/draft18.js +2 -2
- package/dist/draft19-session.cjs +8 -0
- package/dist/draft19-session.d.cts +50 -0
- package/dist/draft19-session.d.ts +50 -0
- package/dist/draft19-session.js +8 -0
- package/dist/draft19.cjs +189 -0
- package/dist/draft19.d.cts +130 -0
- package/dist/draft19.d.ts +130 -0
- package/dist/draft19.js +189 -0
- package/dist/index.cjs +33 -27
- package/dist/index.d.cts +20 -15
- package/dist/index.d.ts +20 -15
- package/dist/index.js +20 -14
- package/dist/{session-types-DBpCRtrL.d.ts → session-types-C0l_-Ups.d.ts} +1 -1
- package/dist/{session-types-sBaTRwDh.d.cts → session-types-KsqyVp6y.d.cts} +1 -1
- package/dist/session.cjs +5 -1
- package/dist/session.d.cts +5 -3
- package/dist/session.d.ts +5 -3
- package/dist/session.js +5 -1
- package/dist/{types-CnBuq68e.d.cts → types-CdCSIfvI.d.cts} +1 -1
- package/dist/{types-CnBuq68e.d.ts → types-CdCSIfvI.d.ts} +1 -1
- package/dist/types-zHgCS6o5.d.cts +265 -0
- package/dist/types-zHgCS6o5.d.ts +265 -0
- package/package.json +14 -2
- package/src/core/buffer-reader.ts +74 -2
- package/src/core/buffer-writer.ts +56 -4
- package/src/core/types.ts +1 -0
- package/src/drafts/draft17/codec.ts +2 -2
- package/src/drafts/draft17/data-streams.ts +2 -2
- package/src/drafts/draft18/codec.ts +2 -2
- package/src/drafts/draft18/data-streams.ts +2 -2
- package/src/drafts/draft19/codec.ts +1425 -0
- package/src/drafts/draft19/data-streams.ts +996 -0
- package/src/drafts/draft19/error-codes.ts +78 -0
- package/src/drafts/draft19/index.ts +126 -0
- package/src/drafts/draft19/messages.ts +58 -0
- package/src/drafts/draft19/rules.ts +85 -0
- package/src/drafts/draft19/session-fsm.ts +451 -0
- package/src/drafts/draft19/session.ts +15 -0
- package/src/drafts/draft19/types.ts +368 -0
- package/src/index.ts +9 -1
- package/src/session.ts +4 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const textEncoder = /* @__PURE__ */ new TextEncoder()
|
|
2
2
|
|
|
3
3
|
export class BufferWriter {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
protected buffer: Uint8Array
|
|
5
|
+
protected view: DataView
|
|
6
|
+
protected pos: number
|
|
7
7
|
|
|
8
8
|
constructor(initialSize = 256) {
|
|
9
9
|
this.buffer = new Uint8Array(initialSize)
|
|
@@ -15,7 +15,7 @@ export class BufferWriter {
|
|
|
15
15
|
return this.pos
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
protected ensureCapacity(needed: number): void {
|
|
19
19
|
const required = this.pos + needed
|
|
20
20
|
if (required <= this.buffer.byteLength) return
|
|
21
21
|
|
|
@@ -98,3 +98,55 @@ export class BufferWriter {
|
|
|
98
98
|
return this.buffer.subarray(0, this.pos)
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Writer for drafts 17 and later, which dropped the RFC 9000 varint for MoQT's
|
|
104
|
+
* own (§1.4.1). See {@link MoqtBufferReader} for the encoding.
|
|
105
|
+
*
|
|
106
|
+
* Values are always written in the fewest bytes that hold them. Longer forms
|
|
107
|
+
* are legal on the wire and decode fine, but there is no reason to emit them.
|
|
108
|
+
*/
|
|
109
|
+
export class MoqtBufferWriter extends BufferWriter {
|
|
110
|
+
/** Draft-17 omits the 7-byte length; draft-18 restored it. */
|
|
111
|
+
protected get allowSevenByte(): boolean {
|
|
112
|
+
return true
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
override writeVarInt(value: number | bigint): void {
|
|
116
|
+
const v = BigInt(value)
|
|
117
|
+
if (v < 0n) throw new Error('VarInt value must be non-negative')
|
|
118
|
+
if (v > 0xffffffffffffffffn) throw new Error('VarInt value exceeds 64-bit range')
|
|
119
|
+
|
|
120
|
+
let length = 9
|
|
121
|
+
for (let n = 1; n <= 8; n++) {
|
|
122
|
+
if (n === 7 && !this.allowSevenByte) continue
|
|
123
|
+
if (v < 1n << BigInt(7 * n)) {
|
|
124
|
+
length = n
|
|
125
|
+
break
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
this.ensureCapacity(length)
|
|
130
|
+
if (length === 9) {
|
|
131
|
+
this.view.setUint8(this.pos, 0xff)
|
|
132
|
+
this.view.setBigUint64(this.pos + 1, v)
|
|
133
|
+
this.pos += 9
|
|
134
|
+
return
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// (length - 1) leading 1 bits, then a 0, in the top `length` bits.
|
|
138
|
+
const prefix = BigInt(((1 << (length - 1)) - 1) << (9 - length)) & 0xffn
|
|
139
|
+
const combined = (prefix << BigInt(8 * (length - 1))) | v
|
|
140
|
+
for (let i = 0; i < length; i++) {
|
|
141
|
+
this.view.setUint8(this.pos + i, Number((combined >> BigInt(8 * (length - 1 - i))) & 0xffn))
|
|
142
|
+
}
|
|
143
|
+
this.pos += length
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** Draft-17's writer, which never emits the 7-byte form draft-18 restored. */
|
|
148
|
+
export class Draft17BufferWriter extends MoqtBufferWriter {
|
|
149
|
+
protected override get allowSevenByte(): boolean {
|
|
150
|
+
return false
|
|
151
|
+
}
|
|
152
|
+
}
|
package/src/core/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
-
import { BufferWriter } from '../../core/buffer-writer.js'
|
|
1
|
+
import { Draft17BufferReader as BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
+
import { Draft17BufferWriter as BufferWriter } from '../../core/buffer-writer.js'
|
|
3
3
|
import { bytesToHex, hexToBytes } from '../../core/hex.js'
|
|
4
4
|
import type { BaseCodec, DecodeResult } from '../../core/types.js'
|
|
5
5
|
import { DecodeError } from '../../core/types.js'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
-
import { BufferWriter } from '../../core/buffer-writer.js'
|
|
1
|
+
import { Draft17BufferReader as BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
+
import { Draft17BufferWriter as BufferWriter } from '../../core/buffer-writer.js'
|
|
3
3
|
import type { DecodeResult } from '../../core/types.js'
|
|
4
4
|
import { DecodeError } from '../../core/types.js'
|
|
5
5
|
import type {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
-
import { BufferWriter } from '../../core/buffer-writer.js'
|
|
1
|
+
import { MoqtBufferReader as BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
+
import { MoqtBufferWriter as BufferWriter } from '../../core/buffer-writer.js'
|
|
3
3
|
import { bytesToHex, hexToBytes } from '../../core/hex.js'
|
|
4
4
|
import type { BaseCodec, DecodeResult } from '../../core/types.js'
|
|
5
5
|
import { DecodeError } from '../../core/types.js'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
-
import { BufferWriter } from '../../core/buffer-writer.js'
|
|
1
|
+
import { MoqtBufferReader as BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
+
import { MoqtBufferWriter as BufferWriter } from '../../core/buffer-writer.js'
|
|
3
3
|
import type { DecodeResult } from '../../core/types.js'
|
|
4
4
|
import { DecodeError } from '../../core/types.js'
|
|
5
5
|
import type {
|