@moqtap/codec 0.2.2 → 0.2.3
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/{chunk-LH4NTURO.js → chunk-2GODRVT5.js} +699 -589
- package/dist/{chunk-4RIXXEII.js → chunk-2ZT6CVSE.js} +274 -242
- package/dist/{chunk-XUUCOLWU.cjs → chunk-4N4INRE7.cjs} +332 -321
- package/dist/{chunk-PJRA2TQ5.js → chunk-73MWUKSJ.js} +274 -228
- package/dist/{chunk-NGVE2RZT.js → chunk-77MNXX3M.js} +549 -538
- package/dist/{chunk-A27S7HW7.js → chunk-7L43FE6P.js} +24 -3
- package/dist/{chunk-RVJAGE4S.cjs → chunk-ACQ4CUJP.cjs} +297 -265
- package/dist/{chunk-IBVM4DMJ.cjs → chunk-BGWGVINJ.cjs} +332 -321
- package/dist/{chunk-KFTCU2P6.js → chunk-C6KUWLQC.js} +0 -3
- package/dist/{chunk-CXDHOMHG.js → chunk-CEH7ESNC.js} +549 -538
- package/dist/{chunk-ZBKE2QRQ.js → chunk-E6P74GDT.js} +686 -599
- package/dist/{chunk-FUFTMAQD.cjs → chunk-FPISPJ5N.cjs} +785 -497
- package/dist/{chunk-7IVGHMKJ.cjs → chunk-FZDIEHQL.cjs} +300 -124
- package/dist/{chunk-ZSPO2GF2.cjs → chunk-GLBQDG4L.cjs} +971 -884
- package/dist/chunk-HDWJ2GDE.js +24 -0
- package/dist/{chunk-4YJANAXU.cjs → chunk-JGG7CMSZ.cjs} +469 -434
- package/dist/{chunk-IV2H5CFI.cjs → chunk-JTVCOMBI.cjs} +298 -266
- package/dist/chunk-KNDYS3DK.cjs +24 -0
- package/dist/{chunk-BPNL5YFQ.cjs → chunk-KZCYQ7ED.cjs} +5 -5
- package/dist/{chunk-U2B3B42P.js → chunk-MC7W6PMI.js} +709 -421
- package/dist/{chunk-MFAP7R6L.js → chunk-MRJWLGYH.js} +1 -1
- package/dist/{chunk-RWQ43Z4F.cjs → chunk-MZ7VU52O.cjs} +0 -3
- package/dist/{chunk-TMNGRIPL.js → chunk-N2KBF5Q2.js} +285 -109
- package/dist/{chunk-IV2HRJVT.js → chunk-PZBPH2D7.js} +274 -242
- package/dist/{chunk-FWISIR26.cjs → chunk-RUPCJTC3.cjs} +24 -3
- package/dist/{chunk-G26SJ6XS.cjs → chunk-S74DWJE2.cjs} +1001 -925
- package/dist/{chunk-NUX5BHWO.js → chunk-U3IPZYPX.js} +1113 -1037
- package/dist/{chunk-HSVYF6XX.cjs → chunk-VJUUZ4W2.cjs} +1106 -996
- package/dist/{chunk-ST24APEO.js → chunk-XSNX2IUJ.js} +574 -539
- package/dist/{chunk-K4OLITS2.cjs → chunk-YIG2C3LF.cjs} +295 -249
- package/dist/{drafts/draft15/codec.d.ts → codec-B2cH-f5V.d.cts} +11 -10
- package/dist/codec-B5K73Bdj.d.ts +30 -0
- package/dist/{codec-C_HMXNK_.d.ts → codec-BFeliJFc.d.ts} +4 -10
- package/dist/codec-BUMjz0J4.d.cts +30 -0
- package/dist/{codec-D0x8-SCw.d.cts → codec-Bap882Fh.d.cts} +3 -9
- package/dist/codec-BdVMRMOI.d.ts +34 -0
- package/dist/codec-Bq-tLtfP.d.ts +30 -0
- package/dist/codec-BwFgpeQu.d.ts +23 -0
- package/dist/{codec-95k8CAu5.d.cts → codec-C4n1PS09.d.cts} +3 -9
- package/dist/{codec-BECYPfY8.d.ts → codec-CPlK3Pi5.d.ts} +3 -9
- package/dist/{drafts/draft08/codec.d.ts → codec-CPvPq0sb.d.cts} +11 -9
- package/dist/codec-DNUIgLqc.d.cts +23 -0
- package/dist/codec-DRcsBCsb.d.ts +23 -0
- package/dist/{codec-CAevkgf5.d.cts → codec-DY4QH364.d.cts} +4 -10
- package/dist/codec-DZhZSIii.d.cts +30 -0
- package/dist/{drafts/draft14/codec.d.ts → codec-FvGCxIhr.d.ts} +11 -10
- package/dist/codec-HgBgHkFI.d.cts +23 -0
- package/dist/codec-KXHvXZVb.d.cts +35 -0
- package/dist/{codec-BC5jfvMb.d.ts → codec-R8GrCPt2.d.ts} +3 -9
- package/dist/{codec-BsPU1vNC.d.ts → codec-SKBeHQk7.d.ts} +3 -11
- package/dist/draft10-session.d.cts +1 -1
- package/dist/draft10-session.d.ts +1 -1
- package/dist/draft10.cjs +4 -3
- package/dist/draft10.d.cts +15 -5
- package/dist/draft10.d.ts +15 -5
- package/dist/draft10.js +3 -2
- package/dist/draft11-session.d.cts +1 -1
- package/dist/draft11-session.d.ts +1 -1
- package/dist/draft11.cjs +4 -3
- package/dist/draft11.d.cts +13 -5
- package/dist/draft11.d.ts +13 -5
- package/dist/draft11.js +3 -2
- package/dist/draft12-session.d.cts +1 -1
- package/dist/draft12-session.d.ts +1 -1
- package/dist/draft12.cjs +4 -3
- package/dist/draft12.d.cts +13 -5
- package/dist/draft12.d.ts +13 -5
- package/dist/draft12.js +3 -2
- package/dist/draft13-session.d.cts +1 -1
- package/dist/draft13-session.d.ts +1 -1
- package/dist/draft13.cjs +4 -3
- package/dist/draft13.d.cts +13 -5
- package/dist/draft13.d.ts +13 -5
- package/dist/draft13.js +3 -2
- package/dist/draft14-session.d.cts +1 -1
- package/dist/draft14-session.d.ts +1 -1
- package/dist/draft14.cjs +4 -3
- package/dist/draft14.d.cts +59 -5
- package/dist/draft14.d.ts +59 -5
- package/dist/draft14.js +3 -2
- package/dist/draft15-session.d.cts +1 -1
- package/dist/draft15-session.d.ts +1 -1
- package/dist/draft15.cjs +4 -3
- package/dist/draft15.d.cts +48 -5
- package/dist/draft15.d.ts +48 -5
- package/dist/draft15.js +3 -2
- package/dist/draft16-session.d.cts +1 -1
- package/dist/draft16-session.d.ts +1 -1
- package/dist/draft16.cjs +4 -3
- package/dist/draft16.d.cts +37 -5
- package/dist/draft16.d.ts +37 -5
- package/dist/draft16.js +3 -2
- package/dist/draft17-session.d.cts +1 -1
- package/dist/draft17-session.d.ts +1 -1
- package/dist/draft17.cjs +4 -3
- package/dist/draft17.d.cts +16 -5
- package/dist/draft17.d.ts +16 -5
- package/dist/draft17.js +3 -2
- package/dist/draft7-session.cjs +3 -3
- package/dist/draft7-session.js +2 -2
- package/dist/draft7.cjs +18 -6
- package/dist/draft7.d.cts +84 -8
- package/dist/draft7.d.ts +84 -8
- package/dist/draft7.js +15 -3
- package/dist/draft8-session.d.cts +1 -1
- package/dist/draft8-session.d.ts +1 -1
- package/dist/draft8.cjs +4 -3
- package/dist/draft8.d.cts +15 -5
- package/dist/draft8.d.ts +15 -5
- package/dist/draft8.js +3 -2
- package/dist/draft9-session.d.cts +1 -1
- package/dist/draft9-session.d.ts +1 -1
- package/dist/draft9.cjs +4 -3
- package/dist/draft9.d.cts +15 -5
- package/dist/draft9.d.ts +15 -5
- package/dist/draft9.js +3 -2
- package/dist/index.cjs +25 -24
- package/dist/index.d.cts +20 -20
- package/dist/index.d.ts +38 -46
- package/dist/index.js +111 -93
- package/dist/session.cjs +3 -3
- package/dist/session.d.ts +8 -4
- package/dist/session.js +26 -32
- package/dist/{types-ERexTpT8.d.cts → types-8gUGeMgs.d.cts} +4 -1
- package/dist/{types-ERexTpT8.d.ts → types-8gUGeMgs.d.ts} +4 -1
- package/dist/{types-Cw4WE9dh.d.ts → types-B0FT5Qs2.d.cts} +9 -1
- package/dist/{types-Cw4WE9dh.d.cts → types-B0FT5Qs2.d.ts} +9 -1
- package/dist/{types-DqCDFqgB.d.cts → types-B9A2g05r.d.cts} +4 -1
- package/dist/{types-DqCDFqgB.d.ts → types-B9A2g05r.d.ts} +4 -1
- package/dist/{types-Bg6QYNVt.d.cts → types-BeAVNU-F.d.cts} +7 -2
- package/dist/{types-Bg6QYNVt.d.ts → types-BeAVNU-F.d.ts} +7 -2
- package/dist/{types-C_1HrqBl.d.ts → types-CDa7F5ct.d.cts} +7 -2
- package/dist/{types-C_1HrqBl.d.cts → types-CDa7F5ct.d.ts} +7 -2
- package/dist/{types-r-CasCf1.d.cts → types-D1dI_oTX.d.cts} +8 -1
- package/dist/{types-r-CasCf1.d.ts → types-D1dI_oTX.d.ts} +8 -1
- package/dist/{types-BTFeKYCb.d.ts → types-DKpsfD3i.d.cts} +19 -4
- package/dist/{types-BTFeKYCb.d.cts → types-DKpsfD3i.d.ts} +19 -4
- package/dist/{types-4VxSL2Ho.d.ts → types-DxSFvL2b.d.cts} +7 -1
- package/dist/{types-4VxSL2Ho.d.cts → types-DxSFvL2b.d.ts} +7 -1
- package/dist/{types-B2afJZM-.d.ts → types-Pme7sua0.d.cts} +4 -1
- package/dist/{types-B2afJZM-.d.cts → types-Pme7sua0.d.ts} +4 -1
- package/dist/{types-D5gNQiDj.d.ts → types-gQsr0AAA.d.cts} +9 -1
- package/dist/{types-D5gNQiDj.d.cts → types-gQsr0AAA.d.ts} +9 -1
- package/package.json +192 -192
- package/src/core/buffer-reader.ts +130 -114
- package/src/core/buffer-writer.ts +100 -91
- package/src/core/hex.ts +7 -3
- package/src/drafts/draft07/codec.ts +14 -9
- package/src/drafts/draft07/data-streams.ts +240 -240
- package/src/drafts/draft07/varint.ts +51 -23
- package/src/drafts/draft08/codec.ts +19 -10
- package/src/drafts/draft08/data-streams.ts +359 -359
- package/src/drafts/draft09/codec.ts +19 -10
- package/src/drafts/draft09/data-streams.ts +332 -332
- package/src/drafts/draft10/codec.ts +19 -10
- package/src/drafts/draft10/data-streams.ts +332 -332
- package/src/drafts/draft11/codec.ts +19 -10
- package/src/drafts/draft11/data-streams.ts +269 -269
- package/src/drafts/draft12/codec.ts +19 -10
- package/src/drafts/draft12/data-streams.ts +275 -275
- package/src/drafts/draft13/codec.ts +19 -10
- package/src/drafts/draft13/data-streams.ts +275 -275
- package/src/drafts/draft14/codec.ts +19 -10
- package/src/drafts/draft14/data-streams.ts +813 -798
- package/src/drafts/draft15/codec.ts +21 -12
- package/src/drafts/draft15/data-streams.ts +794 -778
- package/src/drafts/draft16/codec.ts +21 -12
- package/src/drafts/draft16/data-streams.ts +789 -773
- package/src/drafts/draft17/codec.ts +21 -12
- package/src/drafts/draft17/data-streams.ts +758 -742
- package/dist/codec-AFuOxfsO.d.ts +0 -60
- package/dist/codec-B-UJ5Iow.d.cts +0 -75
- package/dist/codec-BvpuF-6u.d.cts +0 -39
- package/dist/codec-C8jZI5Cx.d.cts +0 -39
- package/dist/codec-CSUqCrRs.d.ts +0 -39
- package/dist/codec-CpuvYTSV.d.cts +0 -86
- package/dist/codec-D7ARhpG1.d.ts +0 -75
- package/dist/codec-DNAUGshO.d.cts +0 -60
- package/dist/codec-DPx_QNn0.d.ts +0 -31
- package/dist/codec-DRhCx_hw.d.ts +0 -86
- package/dist/codec-Db7YPe3l.d.ts +0 -31
- package/dist/codec-axkJpb7D.d.cts +0 -31
- package/dist/codec-ujAbFaep.d.cts +0 -31
- package/dist/core/buffer-reader.d.ts +0 -15
- package/dist/core/buffer-reader.d.ts.map +0 -1
- package/dist/core/buffer-reader.js +0 -98
- package/dist/core/buffer-reader.js.map +0 -1
- package/dist/core/buffer-writer.d.ts +0 -16
- package/dist/core/buffer-writer.d.ts.map +0 -1
- package/dist/core/buffer-writer.js +0 -86
- package/dist/core/buffer-writer.js.map +0 -1
- package/dist/core/errors.d.ts +0 -2
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -2
- package/dist/core/errors.js.map +0 -1
- package/dist/core/hex.d.ts +0 -5
- package/dist/core/hex.d.ts.map +0 -1
- package/dist/core/hex.js +0 -17
- package/dist/core/hex.js.map +0 -1
- package/dist/core/session-types.d.ts +0 -99
- package/dist/core/session-types.d.ts.map +0 -1
- package/dist/core/session-types.js +0 -2
- package/dist/core/session-types.js.map +0 -1
- package/dist/core/types.d.ts +0 -235
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -11
- package/dist/core/types.js.map +0 -1
- package/dist/drafts/draft07/announce-fsm.d.ts +0 -2
- package/dist/drafts/draft07/announce-fsm.d.ts.map +0 -1
- package/dist/drafts/draft07/announce-fsm.js +0 -2
- package/dist/drafts/draft07/announce-fsm.js.map +0 -1
- package/dist/drafts/draft07/codec.d.ts +0 -17
- package/dist/drafts/draft07/codec.d.ts.map +0 -1
- package/dist/drafts/draft07/codec.js +0 -722
- package/dist/drafts/draft07/codec.js.map +0 -1
- package/dist/drafts/draft07/data-streams.d.ts +0 -9
- package/dist/drafts/draft07/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft07/data-streams.js +0 -228
- package/dist/drafts/draft07/data-streams.js.map +0 -1
- package/dist/drafts/draft07/index.d.ts +0 -14
- package/dist/drafts/draft07/index.d.ts.map +0 -1
- package/dist/drafts/draft07/index.js +0 -18
- package/dist/drafts/draft07/index.js.map +0 -1
- package/dist/drafts/draft07/messages.d.ts +0 -32
- package/dist/drafts/draft07/messages.d.ts.map +0 -1
- package/dist/drafts/draft07/messages.js +0 -42
- package/dist/drafts/draft07/messages.js.map +0 -1
- package/dist/drafts/draft07/parameters.d.ts +0 -4
- package/dist/drafts/draft07/parameters.d.ts.map +0 -1
- package/dist/drafts/draft07/parameters.js +0 -10
- package/dist/drafts/draft07/parameters.js.map +0 -1
- package/dist/drafts/draft07/rules.d.ts +0 -8
- package/dist/drafts/draft07/rules.d.ts.map +0 -1
- package/dist/drafts/draft07/rules.js +0 -95
- package/dist/drafts/draft07/rules.js.map +0 -1
- package/dist/drafts/draft07/session-fsm.d.ts +0 -38
- package/dist/drafts/draft07/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft07/session-fsm.js +0 -354
- package/dist/drafts/draft07/session-fsm.js.map +0 -1
- package/dist/drafts/draft07/session.d.ts +0 -4
- package/dist/drafts/draft07/session.d.ts.map +0 -1
- package/dist/drafts/draft07/session.js +0 -5
- package/dist/drafts/draft07/session.js.map +0 -1
- package/dist/drafts/draft07/subscription-fsm.d.ts +0 -2
- package/dist/drafts/draft07/subscription-fsm.d.ts.map +0 -1
- package/dist/drafts/draft07/subscription-fsm.js +0 -2
- package/dist/drafts/draft07/subscription-fsm.js.map +0 -1
- package/dist/drafts/draft07/types.d.ts +0 -61
- package/dist/drafts/draft07/types.d.ts.map +0 -1
- package/dist/drafts/draft07/types.js +0 -4
- package/dist/drafts/draft07/types.js.map +0 -1
- package/dist/drafts/draft07/varint.d.ts +0 -4
- package/dist/drafts/draft07/varint.d.ts.map +0 -1
- package/dist/drafts/draft07/varint.js +0 -22
- package/dist/drafts/draft07/varint.js.map +0 -1
- package/dist/drafts/draft08/codec.d.ts.map +0 -1
- package/dist/drafts/draft08/codec.js +0 -729
- package/dist/drafts/draft08/codec.js.map +0 -1
- package/dist/drafts/draft08/data-streams.d.ts +0 -12
- package/dist/drafts/draft08/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft08/data-streams.js +0 -345
- package/dist/drafts/draft08/data-streams.js.map +0 -1
- package/dist/drafts/draft08/index.d.ts +0 -9
- package/dist/drafts/draft08/index.d.ts.map +0 -1
- package/dist/drafts/draft08/index.js +0 -7
- package/dist/drafts/draft08/index.js.map +0 -1
- package/dist/drafts/draft08/messages.d.ts +0 -34
- package/dist/drafts/draft08/messages.d.ts.map +0 -1
- package/dist/drafts/draft08/messages.js +0 -66
- package/dist/drafts/draft08/messages.js.map +0 -1
- package/dist/drafts/draft08/rules.d.ts +0 -8
- package/dist/drafts/draft08/rules.d.ts.map +0 -1
- package/dist/drafts/draft08/rules.js +0 -83
- package/dist/drafts/draft08/rules.js.map +0 -1
- package/dist/drafts/draft08/session-fsm.d.ts +0 -47
- package/dist/drafts/draft08/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft08/session-fsm.js +0 -483
- package/dist/drafts/draft08/session-fsm.js.map +0 -1
- package/dist/drafts/draft08/session.d.ts +0 -5
- package/dist/drafts/draft08/session.d.ts.map +0 -1
- package/dist/drafts/draft08/session.js +0 -5
- package/dist/drafts/draft08/session.js.map +0 -1
- package/dist/drafts/draft08/types.d.ts +0 -268
- package/dist/drafts/draft08/types.d.ts.map +0 -1
- package/dist/drafts/draft08/types.js +0 -4
- package/dist/drafts/draft08/types.js.map +0 -1
- package/dist/drafts/draft09/codec.d.ts +0 -21
- package/dist/drafts/draft09/codec.d.ts.map +0 -1
- package/dist/drafts/draft09/codec.js +0 -721
- package/dist/drafts/draft09/codec.js.map +0 -1
- package/dist/drafts/draft09/data-streams.d.ts +0 -12
- package/dist/drafts/draft09/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft09/data-streams.js +0 -307
- package/dist/drafts/draft09/data-streams.js.map +0 -1
- package/dist/drafts/draft09/index.d.ts +0 -9
- package/dist/drafts/draft09/index.d.ts.map +0 -1
- package/dist/drafts/draft09/index.js +0 -7
- package/dist/drafts/draft09/index.js.map +0 -1
- package/dist/drafts/draft09/messages.d.ts +0 -34
- package/dist/drafts/draft09/messages.d.ts.map +0 -1
- package/dist/drafts/draft09/messages.js +0 -66
- package/dist/drafts/draft09/messages.js.map +0 -1
- package/dist/drafts/draft09/rules.d.ts +0 -8
- package/dist/drafts/draft09/rules.d.ts.map +0 -1
- package/dist/drafts/draft09/rules.js +0 -83
- package/dist/drafts/draft09/rules.js.map +0 -1
- package/dist/drafts/draft09/session-fsm.d.ts +0 -47
- package/dist/drafts/draft09/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft09/session-fsm.js +0 -483
- package/dist/drafts/draft09/session-fsm.js.map +0 -1
- package/dist/drafts/draft09/session.d.ts +0 -5
- package/dist/drafts/draft09/session.d.ts.map +0 -1
- package/dist/drafts/draft09/session.js +0 -5
- package/dist/drafts/draft09/session.js.map +0 -1
- package/dist/drafts/draft09/types.d.ts +0 -268
- package/dist/drafts/draft09/types.d.ts.map +0 -1
- package/dist/drafts/draft09/types.js +0 -4
- package/dist/drafts/draft09/types.js.map +0 -1
- package/dist/drafts/draft10/codec.d.ts +0 -21
- package/dist/drafts/draft10/codec.d.ts.map +0 -1
- package/dist/drafts/draft10/codec.js +0 -721
- package/dist/drafts/draft10/codec.js.map +0 -1
- package/dist/drafts/draft10/data-streams.d.ts +0 -12
- package/dist/drafts/draft10/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft10/data-streams.js +0 -307
- package/dist/drafts/draft10/data-streams.js.map +0 -1
- package/dist/drafts/draft10/index.d.ts +0 -9
- package/dist/drafts/draft10/index.d.ts.map +0 -1
- package/dist/drafts/draft10/index.js +0 -7
- package/dist/drafts/draft10/index.js.map +0 -1
- package/dist/drafts/draft10/messages.d.ts +0 -34
- package/dist/drafts/draft10/messages.d.ts.map +0 -1
- package/dist/drafts/draft10/messages.js +0 -66
- package/dist/drafts/draft10/messages.js.map +0 -1
- package/dist/drafts/draft10/rules.d.ts +0 -8
- package/dist/drafts/draft10/rules.d.ts.map +0 -1
- package/dist/drafts/draft10/rules.js +0 -83
- package/dist/drafts/draft10/rules.js.map +0 -1
- package/dist/drafts/draft10/session-fsm.d.ts +0 -47
- package/dist/drafts/draft10/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft10/session-fsm.js +0 -483
- package/dist/drafts/draft10/session-fsm.js.map +0 -1
- package/dist/drafts/draft10/session.d.ts +0 -5
- package/dist/drafts/draft10/session.d.ts.map +0 -1
- package/dist/drafts/draft10/session.js +0 -5
- package/dist/drafts/draft10/session.js.map +0 -1
- package/dist/drafts/draft10/types.d.ts +0 -268
- package/dist/drafts/draft10/types.d.ts.map +0 -1
- package/dist/drafts/draft10/types.js +0 -4
- package/dist/drafts/draft10/types.js.map +0 -1
- package/dist/drafts/draft11/codec.d.ts +0 -25
- package/dist/drafts/draft11/codec.d.ts.map +0 -1
- package/dist/drafts/draft11/codec.js +0 -775
- package/dist/drafts/draft11/codec.js.map +0 -1
- package/dist/drafts/draft11/data-streams.d.ts +0 -10
- package/dist/drafts/draft11/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft11/data-streams.js +0 -253
- package/dist/drafts/draft11/data-streams.js.map +0 -1
- package/dist/drafts/draft11/index.d.ts +0 -9
- package/dist/drafts/draft11/index.d.ts.map +0 -1
- package/dist/drafts/draft11/index.js +0 -7
- package/dist/drafts/draft11/index.js.map +0 -1
- package/dist/drafts/draft11/messages.d.ts +0 -33
- package/dist/drafts/draft11/messages.d.ts.map +0 -1
- package/dist/drafts/draft11/messages.js +0 -65
- package/dist/drafts/draft11/messages.js.map +0 -1
- package/dist/drafts/draft11/rules.d.ts +0 -8
- package/dist/drafts/draft11/rules.d.ts.map +0 -1
- package/dist/drafts/draft11/rules.js +0 -88
- package/dist/drafts/draft11/rules.js.map +0 -1
- package/dist/drafts/draft11/session-fsm.d.ts +0 -52
- package/dist/drafts/draft11/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft11/session-fsm.js +0 -530
- package/dist/drafts/draft11/session-fsm.js.map +0 -1
- package/dist/drafts/draft11/session.d.ts +0 -5
- package/dist/drafts/draft11/session.d.ts.map +0 -1
- package/dist/drafts/draft11/session.js +0 -5
- package/dist/drafts/draft11/session.js.map +0 -1
- package/dist/drafts/draft11/types.d.ts +0 -266
- package/dist/drafts/draft11/types.d.ts.map +0 -1
- package/dist/drafts/draft11/types.js +0 -4
- package/dist/drafts/draft11/types.js.map +0 -1
- package/dist/drafts/draft12/codec.d.ts +0 -27
- package/dist/drafts/draft12/codec.d.ts.map +0 -1
- package/dist/drafts/draft12/codec.js +0 -918
- package/dist/drafts/draft12/codec.js.map +0 -1
- package/dist/drafts/draft12/data-streams.d.ts +0 -10
- package/dist/drafts/draft12/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft12/data-streams.js +0 -254
- package/dist/drafts/draft12/data-streams.js.map +0 -1
- package/dist/drafts/draft12/index.d.ts +0 -9
- package/dist/drafts/draft12/index.d.ts.map +0 -1
- package/dist/drafts/draft12/index.js +0 -7
- package/dist/drafts/draft12/index.js.map +0 -1
- package/dist/drafts/draft12/messages.d.ts +0 -37
- package/dist/drafts/draft12/messages.d.ts.map +0 -1
- package/dist/drafts/draft12/messages.js +0 -77
- package/dist/drafts/draft12/messages.js.map +0 -1
- package/dist/drafts/draft12/rules.d.ts +0 -8
- package/dist/drafts/draft12/rules.d.ts.map +0 -1
- package/dist/drafts/draft12/rules.js +0 -94
- package/dist/drafts/draft12/rules.js.map +0 -1
- package/dist/drafts/draft12/session-fsm.d.ts +0 -55
- package/dist/drafts/draft12/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft12/session-fsm.js +0 -569
- package/dist/drafts/draft12/session-fsm.js.map +0 -1
- package/dist/drafts/draft12/session.d.ts +0 -5
- package/dist/drafts/draft12/session.d.ts.map +0 -1
- package/dist/drafts/draft12/session.js +0 -5
- package/dist/drafts/draft12/session.js.map +0 -1
- package/dist/drafts/draft12/types.d.ts +0 -294
- package/dist/drafts/draft12/types.d.ts.map +0 -1
- package/dist/drafts/draft12/types.js +0 -4
- package/dist/drafts/draft12/types.js.map +0 -1
- package/dist/drafts/draft13/codec.d.ts +0 -27
- package/dist/drafts/draft13/codec.d.ts.map +0 -1
- package/dist/drafts/draft13/codec.js +0 -1000
- package/dist/drafts/draft13/codec.js.map +0 -1
- package/dist/drafts/draft13/data-streams.d.ts +0 -10
- package/dist/drafts/draft13/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft13/data-streams.js +0 -254
- package/dist/drafts/draft13/data-streams.js.map +0 -1
- package/dist/drafts/draft13/index.d.ts +0 -9
- package/dist/drafts/draft13/index.d.ts.map +0 -1
- package/dist/drafts/draft13/index.js +0 -7
- package/dist/drafts/draft13/index.js.map +0 -1
- package/dist/drafts/draft13/messages.d.ts +0 -38
- package/dist/drafts/draft13/messages.d.ts.map +0 -1
- package/dist/drafts/draft13/messages.js +0 -79
- package/dist/drafts/draft13/messages.js.map +0 -1
- package/dist/drafts/draft13/rules.d.ts +0 -8
- package/dist/drafts/draft13/rules.d.ts.map +0 -1
- package/dist/drafts/draft13/rules.js +0 -96
- package/dist/drafts/draft13/rules.js.map +0 -1
- package/dist/drafts/draft13/session-fsm.d.ts +0 -56
- package/dist/drafts/draft13/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft13/session-fsm.js +0 -581
- package/dist/drafts/draft13/session-fsm.js.map +0 -1
- package/dist/drafts/draft13/session.d.ts +0 -5
- package/dist/drafts/draft13/session.d.ts.map +0 -1
- package/dist/drafts/draft13/session.js +0 -5
- package/dist/drafts/draft13/session.js.map +0 -1
- package/dist/drafts/draft13/types.d.ts +0 -310
- package/dist/drafts/draft13/types.d.ts.map +0 -1
- package/dist/drafts/draft13/types.js +0 -4
- package/dist/drafts/draft13/types.js.map +0 -1
- package/dist/drafts/draft14/codec.d.ts.map +0 -1
- package/dist/drafts/draft14/codec.js +0 -752
- package/dist/drafts/draft14/codec.js.map +0 -1
- package/dist/drafts/draft14/data-streams.d.ts +0 -56
- package/dist/drafts/draft14/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft14/data-streams.js +0 -729
- package/dist/drafts/draft14/data-streams.js.map +0 -1
- package/dist/drafts/draft14/index.d.ts +0 -9
- package/dist/drafts/draft14/index.d.ts.map +0 -1
- package/dist/drafts/draft14/index.js +0 -7
- package/dist/drafts/draft14/index.js.map +0 -1
- package/dist/drafts/draft14/messages.d.ts +0 -36
- package/dist/drafts/draft14/messages.d.ts.map +0 -1
- package/dist/drafts/draft14/messages.js +0 -71
- package/dist/drafts/draft14/messages.js.map +0 -1
- package/dist/drafts/draft14/rules.d.ts +0 -8
- package/dist/drafts/draft14/rules.d.ts.map +0 -1
- package/dist/drafts/draft14/rules.js +0 -101
- package/dist/drafts/draft14/rules.js.map +0 -1
- package/dist/drafts/draft14/session-fsm.d.ts +0 -58
- package/dist/drafts/draft14/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft14/session-fsm.js +0 -648
- package/dist/drafts/draft14/session-fsm.js.map +0 -1
- package/dist/drafts/draft14/session.d.ts +0 -5
- package/dist/drafts/draft14/session.d.ts.map +0 -1
- package/dist/drafts/draft14/session.js +0 -5
- package/dist/drafts/draft14/session.js.map +0 -1
- package/dist/drafts/draft14/types.d.ts +0 -263
- package/dist/drafts/draft14/types.d.ts.map +0 -1
- package/dist/drafts/draft14/types.js +0 -4
- package/dist/drafts/draft14/types.js.map +0 -1
- package/dist/drafts/draft15/codec.d.ts.map +0 -1
- package/dist/drafts/draft15/codec.js +0 -742
- package/dist/drafts/draft15/codec.js.map +0 -1
- package/dist/drafts/draft15/data-streams.d.ts +0 -45
- package/dist/drafts/draft15/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft15/data-streams.js +0 -675
- package/dist/drafts/draft15/data-streams.js.map +0 -1
- package/dist/drafts/draft15/index.d.ts +0 -9
- package/dist/drafts/draft15/index.d.ts.map +0 -1
- package/dist/drafts/draft15/index.js +0 -7
- package/dist/drafts/draft15/index.js.map +0 -1
- package/dist/drafts/draft15/messages.d.ts +0 -31
- package/dist/drafts/draft15/messages.d.ts.map +0 -1
- package/dist/drafts/draft15/messages.js +0 -59
- package/dist/drafts/draft15/messages.js.map +0 -1
- package/dist/drafts/draft15/rules.d.ts +0 -8
- package/dist/drafts/draft15/rules.d.ts.map +0 -1
- package/dist/drafts/draft15/rules.js +0 -83
- package/dist/drafts/draft15/rules.js.map +0 -1
- package/dist/drafts/draft15/session-fsm.d.ts +0 -48
- package/dist/drafts/draft15/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft15/session-fsm.js +0 -479
- package/dist/drafts/draft15/session-fsm.js.map +0 -1
- package/dist/drafts/draft15/session.d.ts +0 -5
- package/dist/drafts/draft15/session.d.ts.map +0 -1
- package/dist/drafts/draft15/session.js +0 -5
- package/dist/drafts/draft15/session.js.map +0 -1
- package/dist/drafts/draft15/types.d.ts +0 -232
- package/dist/drafts/draft15/types.d.ts.map +0 -1
- package/dist/drafts/draft15/types.js +0 -4
- package/dist/drafts/draft15/types.js.map +0 -1
- package/dist/drafts/draft16/codec.d.ts +0 -29
- package/dist/drafts/draft16/codec.d.ts.map +0 -1
- package/dist/drafts/draft16/codec.js +0 -747
- package/dist/drafts/draft16/codec.js.map +0 -1
- package/dist/drafts/draft16/data-streams.d.ts +0 -34
- package/dist/drafts/draft16/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft16/data-streams.js +0 -667
- package/dist/drafts/draft16/data-streams.js.map +0 -1
- package/dist/drafts/draft16/index.d.ts +0 -9
- package/dist/drafts/draft16/index.d.ts.map +0 -1
- package/dist/drafts/draft16/index.js +0 -7
- package/dist/drafts/draft16/index.js.map +0 -1
- package/dist/drafts/draft16/messages.d.ts +0 -32
- package/dist/drafts/draft16/messages.d.ts.map +0 -1
- package/dist/drafts/draft16/messages.js +0 -62
- package/dist/drafts/draft16/messages.js.map +0 -1
- package/dist/drafts/draft16/rules.d.ts +0 -8
- package/dist/drafts/draft16/rules.d.ts.map +0 -1
- package/dist/drafts/draft16/rules.js +0 -84
- package/dist/drafts/draft16/rules.js.map +0 -1
- package/dist/drafts/draft16/session-fsm.d.ts +0 -48
- package/dist/drafts/draft16/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft16/session-fsm.js +0 -474
- package/dist/drafts/draft16/session-fsm.js.map +0 -1
- package/dist/drafts/draft16/session.d.ts +0 -5
- package/dist/drafts/draft16/session.d.ts.map +0 -1
- package/dist/drafts/draft16/session.js +0 -5
- package/dist/drafts/draft16/session.js.map +0 -1
- package/dist/drafts/draft16/types.d.ts +0 -238
- package/dist/drafts/draft16/types.d.ts.map +0 -1
- package/dist/drafts/draft16/types.js +0 -4
- package/dist/drafts/draft16/types.js.map +0 -1
- package/dist/drafts/draft17/codec.d.ts +0 -29
- package/dist/drafts/draft17/codec.d.ts.map +0 -1
- package/dist/drafts/draft17/codec.js +0 -799
- package/dist/drafts/draft17/codec.js.map +0 -1
- package/dist/drafts/draft17/data-streams.d.ts +0 -13
- package/dist/drafts/draft17/data-streams.d.ts.map +0 -1
- package/dist/drafts/draft17/data-streams.js +0 -633
- package/dist/drafts/draft17/data-streams.js.map +0 -1
- package/dist/drafts/draft17/index.d.ts +0 -8
- package/dist/drafts/draft17/index.d.ts.map +0 -1
- package/dist/drafts/draft17/index.js +0 -6
- package/dist/drafts/draft17/index.js.map +0 -1
- package/dist/drafts/draft17/messages.d.ts +0 -25
- package/dist/drafts/draft17/messages.d.ts.map +0 -1
- package/dist/drafts/draft17/messages.js +0 -48
- package/dist/drafts/draft17/messages.js.map +0 -1
- package/dist/drafts/draft17/rules.d.ts +0 -8
- package/dist/drafts/draft17/rules.d.ts.map +0 -1
- package/dist/drafts/draft17/rules.js +0 -71
- package/dist/drafts/draft17/rules.js.map +0 -1
- package/dist/drafts/draft17/session-fsm.d.ts +0 -45
- package/dist/drafts/draft17/session-fsm.d.ts.map +0 -1
- package/dist/drafts/draft17/session-fsm.js +0 -328
- package/dist/drafts/draft17/session-fsm.js.map +0 -1
- package/dist/drafts/draft17/session.d.ts +0 -5
- package/dist/drafts/draft17/session.d.ts.map +0 -1
- package/dist/drafts/draft17/session.js +0 -6
- package/dist/drafts/draft17/session.js.map +0 -1
- package/dist/drafts/draft17/types.d.ts +0 -219
- package/dist/drafts/draft17/types.d.ts.map +0 -1
- package/dist/drafts/draft17/types.js +0 -3
- package/dist/drafts/draft17/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js.map +0 -1
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
var _chunkKNDYS3DKcjs = require('./chunk-KNDYS3DK.cjs');
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkRUPCJTC3cjs = require('./chunk-RUPCJTC3.cjs');
|
|
6
10
|
|
|
7
11
|
// src/drafts/draft16/messages.ts
|
|
8
12
|
var MSG_REQUEST_UPDATE = 0x02n;
|
|
@@ -64,346 +68,996 @@ var MESSAGE_ID_MAP = new Map(
|
|
|
64
68
|
[...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
|
|
65
69
|
);
|
|
66
70
|
|
|
67
|
-
// src/drafts/draft16/
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return bytes;
|
|
81
|
-
}
|
|
82
|
-
function encodeSetupParams(params, writer) {
|
|
83
|
-
let count = 0;
|
|
84
|
-
if (params.path !== void 0) count++;
|
|
85
|
-
if (params.max_request_id !== void 0) count++;
|
|
86
|
-
if (params.max_auth_token_cache_size !== void 0) count++;
|
|
87
|
-
if (params.authority !== void 0) count++;
|
|
88
|
-
if (params.moqt_implementation !== void 0) count++;
|
|
89
|
-
if (params.unknown) count += params.unknown.length;
|
|
90
|
-
writer.writeVarInt(count);
|
|
91
|
-
if (params.path !== void 0) {
|
|
92
|
-
writer.writeVarInt(SETUP_PARAM_PATH);
|
|
93
|
-
const encoded = new TextEncoder().encode(params.path);
|
|
94
|
-
writer.writeVarInt(encoded.byteLength);
|
|
95
|
-
writer.writeBytes(encoded);
|
|
96
|
-
}
|
|
97
|
-
if (params.max_request_id !== void 0) {
|
|
98
|
-
writer.writeVarInt(SETUP_PARAM_MAX_REQUEST_ID);
|
|
99
|
-
writer.writeVarInt(params.max_request_id);
|
|
71
|
+
// src/drafts/draft16/data-streams.ts
|
|
72
|
+
var FETCH_STREAM_TYPE = 0x05n;
|
|
73
|
+
function encodeSubgroupStream(stream) {
|
|
74
|
+
const w = new (0, _chunkRUPCJTC3cjs.BufferWriter)();
|
|
75
|
+
const streamType = stream.headerType;
|
|
76
|
+
w.writeVarInt(BigInt(streamType));
|
|
77
|
+
const extensionsPresent = (streamType & 1) !== 0;
|
|
78
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
79
|
+
const hasPriority = streamType < 48;
|
|
80
|
+
w.writeVarInt(stream.trackAlias);
|
|
81
|
+
w.writeVarInt(stream.groupId);
|
|
82
|
+
if (hasSubgroupField) {
|
|
83
|
+
w.writeVarInt(stream.subgroupId);
|
|
100
84
|
}
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
writer.writeVarInt(params.max_auth_token_cache_size);
|
|
85
|
+
if (hasPriority) {
|
|
86
|
+
w.writeUint8(stream.publisherPriority);
|
|
104
87
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
88
|
+
let prevObjectId = -1n;
|
|
89
|
+
for (const obj of stream.objects) {
|
|
90
|
+
const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
|
|
91
|
+
w.writeVarInt(delta);
|
|
92
|
+
if (extensionsPresent) {
|
|
93
|
+
w.writeVarInt(BigInt(obj.extensionData.length));
|
|
94
|
+
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
|
|
95
|
+
}
|
|
96
|
+
w.writeVarInt(obj.payloadLength);
|
|
97
|
+
if (obj.payloadLength === 0) {
|
|
98
|
+
w.writeVarInt(_nullishCoalesce(obj.status, () => ( 0n)));
|
|
99
|
+
} else {
|
|
100
|
+
w.writeBytes(obj.payload);
|
|
101
|
+
}
|
|
102
|
+
prevObjectId = obj.objectId;
|
|
110
103
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
return w.finish();
|
|
105
|
+
}
|
|
106
|
+
function encodeDatagram(dg) {
|
|
107
|
+
const w = new (0, _chunkRUPCJTC3cjs.BufferWriter)();
|
|
108
|
+
const dgType = dg.datagramType;
|
|
109
|
+
w.writeVarInt(BigInt(dgType));
|
|
110
|
+
w.writeVarInt(dg.trackAlias);
|
|
111
|
+
w.writeVarInt(dg.groupId);
|
|
112
|
+
const objectIdAbsent = (dgType & 4) !== 0;
|
|
113
|
+
const isStatus = (dgType & 32) !== 0;
|
|
114
|
+
if (!objectIdAbsent) {
|
|
115
|
+
w.writeVarInt(dg.objectId);
|
|
116
116
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const raw = hexToBytes(u.raw_hex);
|
|
123
|
-
const tmpReader = new (0, _chunkFWISIR26cjs.BufferReader)(raw);
|
|
124
|
-
const value = tmpReader.readVarInt();
|
|
125
|
-
writer.writeVarInt(value);
|
|
126
|
-
} else {
|
|
127
|
-
const raw = hexToBytes(u.raw_hex);
|
|
128
|
-
writer.writeVarInt(raw.byteLength);
|
|
129
|
-
writer.writeBytes(raw);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
117
|
+
w.writeUint8(dg.publisherPriority);
|
|
118
|
+
if (isStatus) {
|
|
119
|
+
w.writeVarInt(_nullishCoalesce(dg.objectStatus, () => ( 0n)));
|
|
120
|
+
} else {
|
|
121
|
+
w.writeBytes(dg.payload);
|
|
132
122
|
}
|
|
123
|
+
return w.finish();
|
|
133
124
|
}
|
|
134
|
-
function
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
for (
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
result.max_auth_token_cache_size = value;
|
|
146
|
-
} else {
|
|
147
|
-
const tmpWriter = new (0, _chunkFWISIR26cjs.BufferWriter)(16);
|
|
148
|
-
tmpWriter.writeVarInt(value);
|
|
149
|
-
const raw = tmpWriter.finish();
|
|
150
|
-
unknown.push({
|
|
151
|
-
id: `0x${paramType.toString(16)}`,
|
|
152
|
-
length: raw.byteLength,
|
|
153
|
-
raw_hex: bytesToHex(raw)
|
|
154
|
-
});
|
|
155
|
-
}
|
|
125
|
+
function encodeFetchStream(stream) {
|
|
126
|
+
const w = new (0, _chunkRUPCJTC3cjs.BufferWriter)();
|
|
127
|
+
w.writeVarInt(FETCH_STREAM_TYPE);
|
|
128
|
+
w.writeVarInt(stream.requestId);
|
|
129
|
+
for (const obj of stream.objects) {
|
|
130
|
+
w.writeVarInt(BigInt(obj.serializationFlags));
|
|
131
|
+
const flags = obj.serializationFlags;
|
|
132
|
+
if (flags >= 128) {
|
|
133
|
+
w.writeVarInt(obj.groupId);
|
|
134
|
+
w.writeVarInt(obj.objectId);
|
|
135
|
+
w.writeVarInt(BigInt(obj.payloadLength));
|
|
156
136
|
} else {
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
if (
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
raw_hex: bytesToHex(bytes)
|
|
170
|
-
});
|
|
137
|
+
if (flags & 8) w.writeVarInt(obj.groupId);
|
|
138
|
+
const subgroupEncoding = flags & 3;
|
|
139
|
+
if (subgroupEncoding === 3) w.writeVarInt(obj.subgroupId);
|
|
140
|
+
if (flags & 4) w.writeVarInt(obj.objectId);
|
|
141
|
+
if (flags & 16) w.writeUint8(obj.publisherPriority);
|
|
142
|
+
if (flags & 32) {
|
|
143
|
+
w.writeVarInt(BigInt(obj.extensionData.length));
|
|
144
|
+
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
|
|
145
|
+
}
|
|
146
|
+
w.writeVarInt(BigInt(obj.payloadLength));
|
|
147
|
+
if (obj.payloadLength > 0) {
|
|
148
|
+
w.writeBytes(obj.payload);
|
|
171
149
|
}
|
|
172
150
|
}
|
|
173
151
|
}
|
|
174
|
-
|
|
175
|
-
result.unknown = unknown;
|
|
176
|
-
}
|
|
177
|
-
return result;
|
|
152
|
+
return w.finish();
|
|
178
153
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
if (params.expires !== void 0) {
|
|
193
|
-
writer.writeVarInt(PARAM_EXPIRES);
|
|
194
|
-
writer.writeVarInt(params.expires);
|
|
195
|
-
}
|
|
196
|
-
if (params.largest_object !== void 0) {
|
|
197
|
-
writer.writeVarInt(PARAM_LARGEST_OBJECT);
|
|
198
|
-
const tmpW = new (0, _chunkFWISIR26cjs.BufferWriter)(16);
|
|
199
|
-
tmpW.writeVarInt(params.largest_object.group);
|
|
200
|
-
tmpW.writeVarInt(params.largest_object.object);
|
|
201
|
-
const raw = tmpW.finish();
|
|
202
|
-
writer.writeVarInt(raw.byteLength);
|
|
203
|
-
writer.writeBytes(raw);
|
|
204
|
-
}
|
|
205
|
-
if (params.subscriber_priority !== void 0) {
|
|
206
|
-
writer.writeVarInt(PARAM_SUBSCRIBER_PRIORITY);
|
|
207
|
-
writer.writeVarInt(params.subscriber_priority);
|
|
208
|
-
}
|
|
209
|
-
if (params.subscription_filter !== void 0) {
|
|
210
|
-
writer.writeVarInt(PARAM_SUBSCRIPTION_FILTER);
|
|
211
|
-
const tmpW = new (0, _chunkFWISIR26cjs.BufferWriter)(32);
|
|
212
|
-
const f = params.subscription_filter;
|
|
213
|
-
tmpW.writeVarInt(f.filter_type);
|
|
214
|
-
if (f.filter_type === 3n || f.filter_type === 4n) {
|
|
215
|
-
tmpW.writeVarInt(f.start_group);
|
|
216
|
-
tmpW.writeVarInt(f.start_object);
|
|
154
|
+
function decodeSubgroupStream(bytes) {
|
|
155
|
+
try {
|
|
156
|
+
const r = new (0, _chunkRUPCJTC3cjs.BufferReader)(bytes);
|
|
157
|
+
const streamType = Number(r.readVarInt());
|
|
158
|
+
if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61) || (streamType & 6) === 6) {
|
|
159
|
+
return {
|
|
160
|
+
ok: false,
|
|
161
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
162
|
+
"CONSTRAINT_VIOLATION",
|
|
163
|
+
`Expected subgroup stream type 0x10-0x15/0x18-0x1D/0x30-0x35/0x38-0x3D, got 0x${streamType.toString(16)}`,
|
|
164
|
+
0
|
|
165
|
+
)
|
|
166
|
+
};
|
|
217
167
|
}
|
|
218
|
-
|
|
219
|
-
|
|
168
|
+
const extensionsPresent = (streamType & 1) !== 0;
|
|
169
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
170
|
+
const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
171
|
+
const hasPriority = streamType < 48;
|
|
172
|
+
const trackAlias = r.readVarInt();
|
|
173
|
+
const groupId = r.readVarInt();
|
|
174
|
+
let subgroupId = 0n;
|
|
175
|
+
if (hasSubgroupField) {
|
|
176
|
+
subgroupId = r.readVarInt();
|
|
220
177
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
178
|
+
let publisherPriority = 128;
|
|
179
|
+
if (hasPriority) {
|
|
180
|
+
publisherPriority = r.readUint8();
|
|
181
|
+
}
|
|
182
|
+
const objects = [];
|
|
183
|
+
let prevObjectId = -1n;
|
|
184
|
+
let firstObject = true;
|
|
185
|
+
while (r.remaining > 0) {
|
|
186
|
+
const byteOffset = r.offset;
|
|
187
|
+
const delta = r.readVarInt();
|
|
188
|
+
let objectId;
|
|
189
|
+
if (firstObject) {
|
|
190
|
+
objectId = delta;
|
|
191
|
+
if (subgroupIsFirstObjId && firstObject) {
|
|
192
|
+
subgroupId = objectId;
|
|
193
|
+
}
|
|
194
|
+
firstObject = false;
|
|
238
195
|
} else {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
196
|
+
objectId = prevObjectId + 1n + delta;
|
|
197
|
+
}
|
|
198
|
+
let extensionData = new Uint8Array(0);
|
|
199
|
+
if (extensionsPresent) {
|
|
200
|
+
const extLen = Number(r.readVarInt());
|
|
201
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
202
|
+
}
|
|
203
|
+
const payloadLength = Number(r.readVarInt());
|
|
204
|
+
let payload;
|
|
205
|
+
let status;
|
|
206
|
+
let payloadByteOffset;
|
|
207
|
+
if (payloadLength === 0) {
|
|
208
|
+
status = r.readVarInt();
|
|
209
|
+
payloadByteOffset = r.offset;
|
|
210
|
+
payload = new Uint8Array(0);
|
|
211
|
+
} else {
|
|
212
|
+
payloadByteOffset = r.offset;
|
|
213
|
+
payload = r.readBytesView(payloadLength);
|
|
242
214
|
}
|
|
215
|
+
const obj = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, extensionData, payload };
|
|
216
|
+
if (status !== void 0) obj.status = status;
|
|
217
|
+
objects.push(obj);
|
|
218
|
+
prevObjectId = objectId;
|
|
243
219
|
}
|
|
220
|
+
return {
|
|
221
|
+
ok: true,
|
|
222
|
+
value: {
|
|
223
|
+
type: "subgroup",
|
|
224
|
+
headerType: streamType,
|
|
225
|
+
trackAlias,
|
|
226
|
+
groupId,
|
|
227
|
+
subgroupId,
|
|
228
|
+
publisherPriority,
|
|
229
|
+
objects
|
|
230
|
+
},
|
|
231
|
+
bytesRead: r.offset
|
|
232
|
+
};
|
|
233
|
+
} catch (e) {
|
|
234
|
+
if (e instanceof _chunkRUPCJTC3cjs.DecodeError) return { ok: false, error: e };
|
|
235
|
+
throw e;
|
|
244
236
|
}
|
|
245
237
|
}
|
|
246
|
-
function
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
result.largest_object = { group, object };
|
|
266
|
-
} else if (paramType === PARAM_SUBSCRIPTION_FILTER) {
|
|
267
|
-
const length = Number(reader.readVarInt());
|
|
268
|
-
const startOff = reader.offset;
|
|
269
|
-
const filter_type = reader.readVarInt();
|
|
270
|
-
const filter = { filter_type };
|
|
271
|
-
if (filter_type === 3n || filter_type === 4n) {
|
|
272
|
-
filter.start_group = reader.readVarInt();
|
|
273
|
-
filter.start_object = reader.readVarInt();
|
|
274
|
-
}
|
|
275
|
-
if (filter_type === 4n) {
|
|
276
|
-
filter.end_group = reader.readVarInt();
|
|
277
|
-
}
|
|
278
|
-
const consumed = reader.offset - startOff;
|
|
279
|
-
if (consumed < length) reader.readBytes(length - consumed);
|
|
280
|
-
result.subscription_filter = filter;
|
|
281
|
-
} else if (paramType % 2n === 0n) {
|
|
282
|
-
const value = reader.readVarInt();
|
|
283
|
-
const tmpWriter = new (0, _chunkFWISIR26cjs.BufferWriter)(16);
|
|
284
|
-
tmpWriter.writeVarInt(value);
|
|
285
|
-
const raw = tmpWriter.finish();
|
|
286
|
-
unknown.push({
|
|
287
|
-
id: `0x${paramType.toString(16)}`,
|
|
288
|
-
length: raw.byteLength,
|
|
289
|
-
raw_hex: bytesToHex(raw)
|
|
290
|
-
});
|
|
238
|
+
function decodeDatagram(bytes) {
|
|
239
|
+
try {
|
|
240
|
+
const r = new (0, _chunkRUPCJTC3cjs.BufferReader)(bytes);
|
|
241
|
+
const dgType = Number(r.readVarInt());
|
|
242
|
+
const objectIdAbsent = (dgType & 4) !== 0;
|
|
243
|
+
const endOfGroup = (dgType & 2) !== 0;
|
|
244
|
+
const isStatus = (dgType & 32) !== 0;
|
|
245
|
+
const trackAlias = r.readVarInt();
|
|
246
|
+
const groupId = r.readVarInt();
|
|
247
|
+
let objectId = 0n;
|
|
248
|
+
if (!objectIdAbsent) {
|
|
249
|
+
objectId = r.readVarInt();
|
|
250
|
+
}
|
|
251
|
+
const publisherPriority = r.readUint8();
|
|
252
|
+
let objectStatus;
|
|
253
|
+
let payload;
|
|
254
|
+
if (isStatus) {
|
|
255
|
+
objectStatus = r.readVarInt();
|
|
256
|
+
payload = new Uint8Array(0);
|
|
291
257
|
} else {
|
|
292
|
-
|
|
293
|
-
const bytes = reader.readBytes(length);
|
|
294
|
-
unknown.push({
|
|
295
|
-
id: `0x${paramType.toString(16)}`,
|
|
296
|
-
length,
|
|
297
|
-
raw_hex: bytesToHex(bytes)
|
|
298
|
-
});
|
|
258
|
+
payload = r.readBytesView(r.remaining);
|
|
299
259
|
}
|
|
260
|
+
const payloadLength = payload.byteLength;
|
|
261
|
+
const result = {
|
|
262
|
+
type: "datagram",
|
|
263
|
+
datagramType: dgType,
|
|
264
|
+
trackAlias,
|
|
265
|
+
groupId,
|
|
266
|
+
objectId,
|
|
267
|
+
publisherPriority,
|
|
268
|
+
payloadLength,
|
|
269
|
+
payload
|
|
270
|
+
};
|
|
271
|
+
if (endOfGroup) result.endOfGroup = true;
|
|
272
|
+
if (objectStatus !== void 0)
|
|
273
|
+
result.objectStatus = objectStatus;
|
|
274
|
+
return { ok: true, value: result, bytesRead: r.offset };
|
|
275
|
+
} catch (e) {
|
|
276
|
+
if (e instanceof _chunkRUPCJTC3cjs.DecodeError) return { ok: false, error: e };
|
|
277
|
+
throw e;
|
|
300
278
|
}
|
|
301
|
-
if (unknown.length > 0) {
|
|
302
|
-
result.unknown = unknown;
|
|
303
|
-
}
|
|
304
|
-
return result;
|
|
305
|
-
}
|
|
306
|
-
function encodeClientSetupPayload(msg, w) {
|
|
307
|
-
encodeSetupParams(msg.parameters, w);
|
|
308
|
-
}
|
|
309
|
-
function encodeServerSetupPayload(msg, w) {
|
|
310
|
-
encodeSetupParams(msg.parameters, w);
|
|
311
|
-
}
|
|
312
|
-
function encodeSubscribePayload(msg, w) {
|
|
313
|
-
w.writeVarInt(msg.request_id);
|
|
314
|
-
w.writeTuple(msg.track_namespace);
|
|
315
|
-
w.writeString(msg.track_name);
|
|
316
|
-
encodeParams(msg.parameters, w);
|
|
317
|
-
}
|
|
318
|
-
function encodeSubscribeOkPayload(msg, w) {
|
|
319
|
-
w.writeVarInt(msg.request_id);
|
|
320
|
-
w.writeVarInt(msg.track_alias);
|
|
321
|
-
encodeParams(msg.parameters, w);
|
|
322
|
-
}
|
|
323
|
-
function encodeRequestUpdatePayload(msg, w) {
|
|
324
|
-
w.writeVarInt(msg.request_id);
|
|
325
|
-
w.writeVarInt(msg.existing_request_id);
|
|
326
|
-
encodeParams(msg.parameters, w);
|
|
327
|
-
}
|
|
328
|
-
function encodeUnsubscribePayload(msg, w) {
|
|
329
|
-
w.writeVarInt(msg.request_id);
|
|
330
|
-
}
|
|
331
|
-
function encodePublishPayload(msg, w) {
|
|
332
|
-
w.writeVarInt(msg.request_id);
|
|
333
|
-
w.writeTuple(msg.track_namespace);
|
|
334
|
-
w.writeString(msg.track_name);
|
|
335
|
-
w.writeVarInt(msg.track_alias);
|
|
336
|
-
encodeParams(msg.parameters, w);
|
|
337
|
-
}
|
|
338
|
-
function encodePublishOkPayload(msg, w) {
|
|
339
|
-
w.writeVarInt(msg.request_id);
|
|
340
|
-
encodeParams(msg.parameters, w);
|
|
341
|
-
}
|
|
342
|
-
function encodePublishDonePayload(msg, w) {
|
|
343
|
-
w.writeVarInt(msg.request_id);
|
|
344
|
-
w.writeVarInt(msg.status_code);
|
|
345
|
-
w.writeVarInt(msg.stream_count);
|
|
346
|
-
w.writeString(msg.reason_phrase);
|
|
347
|
-
}
|
|
348
|
-
function encodePublishNamespacePayload(msg, w) {
|
|
349
|
-
w.writeVarInt(msg.request_id);
|
|
350
|
-
w.writeTuple(msg.track_namespace);
|
|
351
|
-
encodeParams(msg.parameters, w);
|
|
352
279
|
}
|
|
353
|
-
function
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
280
|
+
function decodeFetchStream(bytes) {
|
|
281
|
+
try {
|
|
282
|
+
const r = new (0, _chunkRUPCJTC3cjs.BufferReader)(bytes);
|
|
283
|
+
const streamType = r.readVarInt();
|
|
284
|
+
if (streamType !== FETCH_STREAM_TYPE) {
|
|
285
|
+
return {
|
|
286
|
+
ok: false,
|
|
287
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
288
|
+
"CONSTRAINT_VIOLATION",
|
|
289
|
+
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
290
|
+
0
|
|
291
|
+
)
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
const requestId = r.readVarInt();
|
|
295
|
+
const objects = [];
|
|
296
|
+
let prevGroupId = 0n;
|
|
297
|
+
let prevSubgroupId = 0n;
|
|
298
|
+
let prevObjectId = 0n;
|
|
299
|
+
let prevPriority = 128;
|
|
300
|
+
let first = true;
|
|
301
|
+
while (r.remaining > 0) {
|
|
302
|
+
const byteOffset = r.offset;
|
|
303
|
+
const flags = Number(r.readVarInt());
|
|
304
|
+
let groupId = prevGroupId;
|
|
305
|
+
let subgroupId = prevSubgroupId;
|
|
306
|
+
let objectId = prevObjectId + 1n;
|
|
307
|
+
let payloadLength;
|
|
308
|
+
let payload;
|
|
309
|
+
if (flags >= 128) {
|
|
310
|
+
if (flags !== 140 && flags !== 268) {
|
|
311
|
+
return {
|
|
312
|
+
ok: false,
|
|
313
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
314
|
+
"CONSTRAINT_VIOLATION",
|
|
315
|
+
`Unknown serialization flags value: 0x${flags.toString(16)}`,
|
|
316
|
+
r.offset
|
|
317
|
+
)
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
groupId = r.readVarInt();
|
|
321
|
+
objectId = r.readVarInt();
|
|
322
|
+
payloadLength = Number(r.readVarInt());
|
|
323
|
+
const payloadByteOffset = r.offset;
|
|
324
|
+
payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
325
|
+
objects.push({
|
|
326
|
+
type: "object",
|
|
327
|
+
byteOffset,
|
|
328
|
+
payloadByteOffset,
|
|
329
|
+
serializationFlags: flags,
|
|
330
|
+
groupId,
|
|
331
|
+
subgroupId,
|
|
332
|
+
objectId,
|
|
333
|
+
publisherPriority: prevPriority,
|
|
334
|
+
payloadLength,
|
|
335
|
+
extensionData: new Uint8Array(0),
|
|
336
|
+
payload
|
|
337
|
+
});
|
|
338
|
+
} else {
|
|
339
|
+
const subgroupEncoding = flags & 3;
|
|
340
|
+
const objectIdPresent = (flags & 4) !== 0;
|
|
341
|
+
const groupIdPresent = (flags & 8) !== 0;
|
|
342
|
+
const priorityPresent = (flags & 16) !== 0;
|
|
343
|
+
const extensionsPresent = (flags & 32) !== 0;
|
|
344
|
+
if (flags & 64) {
|
|
345
|
+
return {
|
|
346
|
+
ok: false,
|
|
347
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
348
|
+
"CONSTRAINT_VIOLATION",
|
|
349
|
+
"Reserved bits set in fetch object flags",
|
|
350
|
+
r.offset
|
|
351
|
+
)
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
if (groupIdPresent) {
|
|
355
|
+
groupId = r.readVarInt();
|
|
356
|
+
} else if (first) {
|
|
357
|
+
return {
|
|
358
|
+
ok: false,
|
|
359
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
360
|
+
"CONSTRAINT_VIOLATION",
|
|
361
|
+
"First fetch object must include groupId",
|
|
362
|
+
r.offset
|
|
363
|
+
)
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
if (subgroupEncoding === 0) {
|
|
367
|
+
subgroupId = 0n;
|
|
368
|
+
} else if (subgroupEncoding === 1) {
|
|
369
|
+
if (first) {
|
|
370
|
+
return {
|
|
371
|
+
ok: false,
|
|
372
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
373
|
+
"CONSTRAINT_VIOLATION",
|
|
374
|
+
"First fetch object cannot reference prior subgroupId",
|
|
375
|
+
r.offset
|
|
376
|
+
)
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
} else if (subgroupEncoding === 2) {
|
|
380
|
+
if (first) {
|
|
381
|
+
return {
|
|
382
|
+
ok: false,
|
|
383
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
384
|
+
"CONSTRAINT_VIOLATION",
|
|
385
|
+
"First fetch object cannot reference prior subgroupId",
|
|
386
|
+
r.offset
|
|
387
|
+
)
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
subgroupId = prevSubgroupId + 1n;
|
|
391
|
+
} else {
|
|
392
|
+
subgroupId = r.readVarInt();
|
|
393
|
+
}
|
|
394
|
+
if (objectIdPresent) {
|
|
395
|
+
objectId = r.readVarInt();
|
|
396
|
+
} else if (first) {
|
|
397
|
+
return {
|
|
398
|
+
ok: false,
|
|
399
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
400
|
+
"CONSTRAINT_VIOLATION",
|
|
401
|
+
"First fetch object must include objectId",
|
|
402
|
+
r.offset
|
|
403
|
+
)
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
if (priorityPresent) {
|
|
407
|
+
prevPriority = r.readUint8();
|
|
408
|
+
}
|
|
409
|
+
let extensionData = new Uint8Array(0);
|
|
410
|
+
if (extensionsPresent) {
|
|
411
|
+
const extLen = Number(r.readVarInt());
|
|
412
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
413
|
+
}
|
|
414
|
+
payloadLength = Number(r.readVarInt());
|
|
415
|
+
const payloadByteOffset = r.offset;
|
|
416
|
+
payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
417
|
+
objects.push({
|
|
418
|
+
type: "object",
|
|
419
|
+
byteOffset,
|
|
420
|
+
payloadByteOffset,
|
|
421
|
+
serializationFlags: flags,
|
|
422
|
+
groupId,
|
|
423
|
+
subgroupId,
|
|
424
|
+
objectId,
|
|
425
|
+
publisherPriority: prevPriority,
|
|
426
|
+
payloadLength,
|
|
427
|
+
extensionData,
|
|
428
|
+
payload
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
prevGroupId = groupId;
|
|
432
|
+
prevSubgroupId = subgroupId;
|
|
433
|
+
prevObjectId = objectId;
|
|
434
|
+
first = false;
|
|
435
|
+
}
|
|
436
|
+
return {
|
|
437
|
+
ok: true,
|
|
438
|
+
value: { type: "fetch", requestId, objects },
|
|
439
|
+
bytesRead: r.offset
|
|
440
|
+
};
|
|
441
|
+
} catch (e) {
|
|
442
|
+
if (e instanceof _chunkRUPCJTC3cjs.DecodeError) return { ok: false, error: e };
|
|
443
|
+
throw e;
|
|
387
444
|
}
|
|
388
|
-
encodeParams(msg.parameters, w);
|
|
389
|
-
}
|
|
390
|
-
function encodeFetchOkPayload(msg, w) {
|
|
391
|
-
w.writeVarInt(msg.request_id);
|
|
392
|
-
w.writeUint8(msg.end_of_track);
|
|
393
|
-
w.writeVarInt(msg.end_group);
|
|
394
|
-
w.writeVarInt(msg.end_object);
|
|
395
|
-
encodeParams(msg.parameters, w);
|
|
396
|
-
}
|
|
397
|
-
function encodeFetchCancelPayload(msg, w) {
|
|
398
|
-
w.writeVarInt(msg.request_id);
|
|
399
445
|
}
|
|
400
|
-
function
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
446
|
+
function decodeDataStream(streamType, bytes) {
|
|
447
|
+
switch (streamType) {
|
|
448
|
+
case "subgroup":
|
|
449
|
+
return decodeSubgroupStream(bytes);
|
|
450
|
+
case "datagram":
|
|
451
|
+
return decodeDatagram(bytes);
|
|
452
|
+
case "fetch":
|
|
453
|
+
return decodeFetchStream(bytes);
|
|
454
|
+
default: {
|
|
455
|
+
const _exhaustive = streamType;
|
|
456
|
+
throw new Error(`Unknown stream type: ${_exhaustive}`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
405
459
|
}
|
|
406
|
-
function
|
|
460
|
+
function createSubgroupStreamDecoder() {
|
|
461
|
+
let buffer = new Uint8Array(0);
|
|
462
|
+
let offset = 0;
|
|
463
|
+
let headerEmitted = false;
|
|
464
|
+
let prevObjectId = -1n;
|
|
465
|
+
let firstObject = true;
|
|
466
|
+
let _subgroupIsFirstObjId = false;
|
|
467
|
+
let _extensionsPresent = false;
|
|
468
|
+
return new TransformStream({
|
|
469
|
+
transform(chunk, controller) {
|
|
470
|
+
if (offset > 0) {
|
|
471
|
+
buffer = buffer.subarray(offset);
|
|
472
|
+
offset = 0;
|
|
473
|
+
}
|
|
474
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
475
|
+
newBuffer.set(buffer, 0);
|
|
476
|
+
newBuffer.set(chunk, buffer.length);
|
|
477
|
+
buffer = newBuffer;
|
|
478
|
+
if (!headerEmitted) {
|
|
479
|
+
try {
|
|
480
|
+
const r = new (0, _chunkRUPCJTC3cjs.BufferReader)(buffer.subarray(offset));
|
|
481
|
+
const streamType = Number(r.readVarInt());
|
|
482
|
+
if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
|
|
483
|
+
controller.error(
|
|
484
|
+
new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
485
|
+
"CONSTRAINT_VIOLATION",
|
|
486
|
+
`Expected subgroup stream type, got 0x${streamType.toString(16)}`,
|
|
487
|
+
0
|
|
488
|
+
)
|
|
489
|
+
);
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
_extensionsPresent = (streamType & 1) !== 0;
|
|
493
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
494
|
+
_subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
495
|
+
const hasPriority = streamType < 48;
|
|
496
|
+
const trackAlias = r.readVarInt();
|
|
497
|
+
const groupId = r.readVarInt();
|
|
498
|
+
let subgroupId = 0n;
|
|
499
|
+
if (hasSubgroupField) {
|
|
500
|
+
subgroupId = r.readVarInt();
|
|
501
|
+
}
|
|
502
|
+
let publisherPriority = 128;
|
|
503
|
+
if (hasPriority) {
|
|
504
|
+
publisherPriority = r.readUint8();
|
|
505
|
+
}
|
|
506
|
+
controller.enqueue({
|
|
507
|
+
type: "subgroup_header",
|
|
508
|
+
trackAlias,
|
|
509
|
+
groupId,
|
|
510
|
+
subgroupId,
|
|
511
|
+
publisherPriority
|
|
512
|
+
});
|
|
513
|
+
headerEmitted = true;
|
|
514
|
+
offset += r.offset;
|
|
515
|
+
} catch (e) {
|
|
516
|
+
if (e instanceof _chunkRUPCJTC3cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
controller.error(e);
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
while (offset < buffer.length) {
|
|
524
|
+
try {
|
|
525
|
+
const r = new (0, _chunkRUPCJTC3cjs.BufferReader)(buffer.subarray(offset));
|
|
526
|
+
const delta = r.readVarInt();
|
|
527
|
+
let objectId;
|
|
528
|
+
if (firstObject) {
|
|
529
|
+
objectId = delta;
|
|
530
|
+
firstObject = false;
|
|
531
|
+
} else {
|
|
532
|
+
objectId = prevObjectId + 1n + delta;
|
|
533
|
+
}
|
|
534
|
+
let extensionData = new Uint8Array(0);
|
|
535
|
+
if (_extensionsPresent) {
|
|
536
|
+
const extLen = Number(r.readVarInt());
|
|
537
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
538
|
+
}
|
|
539
|
+
const payloadLength = Number(r.readVarInt());
|
|
540
|
+
let payloadByteOffset;
|
|
541
|
+
let status;
|
|
542
|
+
if (payloadLength === 0) {
|
|
543
|
+
status = r.readVarInt();
|
|
544
|
+
payloadByteOffset = r.offset;
|
|
545
|
+
} else {
|
|
546
|
+
payloadByteOffset = r.offset;
|
|
547
|
+
}
|
|
548
|
+
const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
549
|
+
const obj = { type: "object", byteOffset: 0, payloadByteOffset, objectId, payloadLength, payload, extensionData };
|
|
550
|
+
if (status !== void 0) obj.status = status;
|
|
551
|
+
controller.enqueue(obj);
|
|
552
|
+
offset += r.offset;
|
|
553
|
+
prevObjectId = objectId;
|
|
554
|
+
} catch (e) {
|
|
555
|
+
if (e instanceof _chunkRUPCJTC3cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
556
|
+
break;
|
|
557
|
+
}
|
|
558
|
+
controller.error(e);
|
|
559
|
+
return;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
flush(controller) {
|
|
564
|
+
if (offset < buffer.length) {
|
|
565
|
+
controller.error(new (0, _chunkRUPCJTC3cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
function createFetchStreamDecoder() {
|
|
571
|
+
let buffer = new Uint8Array(0);
|
|
572
|
+
let offset = 0;
|
|
573
|
+
let headerEmitted = false;
|
|
574
|
+
return new TransformStream({
|
|
575
|
+
transform(chunk, controller) {
|
|
576
|
+
if (offset > 0) {
|
|
577
|
+
buffer = buffer.subarray(offset);
|
|
578
|
+
offset = 0;
|
|
579
|
+
}
|
|
580
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
581
|
+
newBuffer.set(buffer, 0);
|
|
582
|
+
newBuffer.set(chunk, buffer.length);
|
|
583
|
+
buffer = newBuffer;
|
|
584
|
+
if (!headerEmitted) {
|
|
585
|
+
try {
|
|
586
|
+
const r = new (0, _chunkRUPCJTC3cjs.BufferReader)(buffer.subarray(offset));
|
|
587
|
+
const streamType = r.readVarInt();
|
|
588
|
+
if (streamType !== FETCH_STREAM_TYPE) {
|
|
589
|
+
controller.error(
|
|
590
|
+
new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
591
|
+
"CONSTRAINT_VIOLATION",
|
|
592
|
+
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
593
|
+
0
|
|
594
|
+
)
|
|
595
|
+
);
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
const requestId = r.readVarInt();
|
|
599
|
+
controller.enqueue({ type: "fetch_header", requestId });
|
|
600
|
+
headerEmitted = true;
|
|
601
|
+
offset += r.offset;
|
|
602
|
+
} catch (e) {
|
|
603
|
+
if (e instanceof _chunkRUPCJTC3cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
606
|
+
controller.error(e);
|
|
607
|
+
return;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
while (offset < buffer.length) {
|
|
611
|
+
try {
|
|
612
|
+
const r = new (0, _chunkRUPCJTC3cjs.BufferReader)(buffer.subarray(offset));
|
|
613
|
+
const flags = Number(r.readVarInt());
|
|
614
|
+
const objectIdPresent = (flags & 4) !== 0;
|
|
615
|
+
const groupIdPresent = (flags & 8) !== 0;
|
|
616
|
+
const priorityPresent = (flags & 16) !== 0;
|
|
617
|
+
const extensionsPresent = (flags & 32) !== 0;
|
|
618
|
+
const subgroupEncoding = flags & 3;
|
|
619
|
+
if (groupIdPresent) r.readVarInt();
|
|
620
|
+
if (subgroupEncoding === 3) r.readVarInt();
|
|
621
|
+
let objectId = 0n;
|
|
622
|
+
if (objectIdPresent) objectId = r.readVarInt();
|
|
623
|
+
if (priorityPresent) r.readUint8();
|
|
624
|
+
let extensionData = new Uint8Array(0);
|
|
625
|
+
if (extensionsPresent) {
|
|
626
|
+
const extLen = Number(r.readVarInt());
|
|
627
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
628
|
+
}
|
|
629
|
+
const payloadLength = Number(r.readVarInt());
|
|
630
|
+
const payloadByteOffset = r.offset;
|
|
631
|
+
const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
632
|
+
controller.enqueue({ type: "object", byteOffset: 0, payloadByteOffset, objectId, payloadLength, payload, extensionData });
|
|
633
|
+
offset += r.offset;
|
|
634
|
+
} catch (e) {
|
|
635
|
+
if (e instanceof _chunkRUPCJTC3cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
636
|
+
break;
|
|
637
|
+
}
|
|
638
|
+
controller.error(e);
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
},
|
|
643
|
+
flush(controller) {
|
|
644
|
+
if (offset < buffer.length) {
|
|
645
|
+
controller.error(new (0, _chunkRUPCJTC3cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
function createDataStreamDecoder() {
|
|
651
|
+
let buffer = new Uint8Array(0);
|
|
652
|
+
let offset = 0;
|
|
653
|
+
let inner = null;
|
|
654
|
+
return new TransformStream({
|
|
655
|
+
transform(chunk, controller) {
|
|
656
|
+
if (offset > 0) {
|
|
657
|
+
buffer = buffer.subarray(offset);
|
|
658
|
+
offset = 0;
|
|
659
|
+
}
|
|
660
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
661
|
+
newBuffer.set(buffer, 0);
|
|
662
|
+
newBuffer.set(chunk, buffer.length);
|
|
663
|
+
buffer = newBuffer;
|
|
664
|
+
if (inner === null) {
|
|
665
|
+
if (offset >= buffer.length) return;
|
|
666
|
+
const firstByte = buffer[offset];
|
|
667
|
+
if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
|
|
668
|
+
const decoder = createSubgroupStreamDecoder();
|
|
669
|
+
inner = decoder;
|
|
670
|
+
} else if (firstByte === 5) {
|
|
671
|
+
const decoder = createFetchStreamDecoder();
|
|
672
|
+
inner = decoder;
|
|
673
|
+
} else {
|
|
674
|
+
controller.error(
|
|
675
|
+
new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
676
|
+
"CONSTRAINT_VIOLATION",
|
|
677
|
+
`Unknown data stream type: 0x${firstByte.toString(16)}`,
|
|
678
|
+
0
|
|
679
|
+
)
|
|
680
|
+
);
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
},
|
|
685
|
+
flush(controller) {
|
|
686
|
+
if (offset >= buffer.length) return;
|
|
687
|
+
const view = buffer.subarray(offset);
|
|
688
|
+
const firstByte = view[0];
|
|
689
|
+
let result;
|
|
690
|
+
if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
|
|
691
|
+
result = decodeSubgroupStream(view);
|
|
692
|
+
} else if (firstByte === 5) {
|
|
693
|
+
result = decodeFetchStream(view);
|
|
694
|
+
} else {
|
|
695
|
+
controller.error(
|
|
696
|
+
new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
697
|
+
"CONSTRAINT_VIOLATION",
|
|
698
|
+
`Unknown data stream type: 0x${firstByte.toString(16)}`,
|
|
699
|
+
0
|
|
700
|
+
)
|
|
701
|
+
);
|
|
702
|
+
return;
|
|
703
|
+
}
|
|
704
|
+
if (!result.ok) {
|
|
705
|
+
controller.error(result.error);
|
|
706
|
+
return;
|
|
707
|
+
}
|
|
708
|
+
const stream = result.value;
|
|
709
|
+
if (stream.type === "subgroup") {
|
|
710
|
+
controller.enqueue({
|
|
711
|
+
type: "subgroup_header",
|
|
712
|
+
trackAlias: stream.trackAlias,
|
|
713
|
+
groupId: stream.groupId,
|
|
714
|
+
subgroupId: stream.subgroupId,
|
|
715
|
+
publisherPriority: stream.publisherPriority
|
|
716
|
+
});
|
|
717
|
+
for (const obj of stream.objects) {
|
|
718
|
+
controller.enqueue(obj);
|
|
719
|
+
}
|
|
720
|
+
} else if (stream.type === "fetch") {
|
|
721
|
+
controller.enqueue({
|
|
722
|
+
type: "fetch_header",
|
|
723
|
+
requestId: stream.requestId
|
|
724
|
+
});
|
|
725
|
+
for (const obj of stream.objects) {
|
|
726
|
+
controller.enqueue(obj);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
});
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
// src/drafts/draft16/codec.ts
|
|
734
|
+
var textEncoder = /* @__PURE__ */ new TextEncoder();
|
|
735
|
+
var textDecoder = /* @__PURE__ */ new TextDecoder();
|
|
736
|
+
function encodeSetupParams(params, writer) {
|
|
737
|
+
let count = 0;
|
|
738
|
+
if (params.path !== void 0) count++;
|
|
739
|
+
if (params.max_request_id !== void 0) count++;
|
|
740
|
+
if (params.max_auth_token_cache_size !== void 0) count++;
|
|
741
|
+
if (params.authority !== void 0) count++;
|
|
742
|
+
if (params.moqt_implementation !== void 0) count++;
|
|
743
|
+
if (params.unknown) count += params.unknown.length;
|
|
744
|
+
writer.writeVarInt(count);
|
|
745
|
+
if (params.path !== void 0) {
|
|
746
|
+
writer.writeVarInt(SETUP_PARAM_PATH);
|
|
747
|
+
const encoded = textEncoder.encode(params.path);
|
|
748
|
+
writer.writeVarInt(encoded.byteLength);
|
|
749
|
+
writer.writeBytes(encoded);
|
|
750
|
+
}
|
|
751
|
+
if (params.max_request_id !== void 0) {
|
|
752
|
+
writer.writeVarInt(SETUP_PARAM_MAX_REQUEST_ID);
|
|
753
|
+
writer.writeVarInt(params.max_request_id);
|
|
754
|
+
}
|
|
755
|
+
if (params.max_auth_token_cache_size !== void 0) {
|
|
756
|
+
writer.writeVarInt(SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE);
|
|
757
|
+
writer.writeVarInt(params.max_auth_token_cache_size);
|
|
758
|
+
}
|
|
759
|
+
if (params.authority !== void 0) {
|
|
760
|
+
writer.writeVarInt(SETUP_PARAM_AUTHORITY);
|
|
761
|
+
const encoded = textEncoder.encode(params.authority);
|
|
762
|
+
writer.writeVarInt(encoded.byteLength);
|
|
763
|
+
writer.writeBytes(encoded);
|
|
764
|
+
}
|
|
765
|
+
if (params.moqt_implementation !== void 0) {
|
|
766
|
+
writer.writeVarInt(SETUP_PARAM_MOQT_IMPLEMENTATION);
|
|
767
|
+
const encoded = textEncoder.encode(params.moqt_implementation);
|
|
768
|
+
writer.writeVarInt(encoded.byteLength);
|
|
769
|
+
writer.writeBytes(encoded);
|
|
770
|
+
}
|
|
771
|
+
if (params.unknown) {
|
|
772
|
+
for (const u of params.unknown) {
|
|
773
|
+
const id = BigInt(u.id);
|
|
774
|
+
writer.writeVarInt(id);
|
|
775
|
+
if (id % 2n === 0n) {
|
|
776
|
+
const raw = _chunkKNDYS3DKcjs.hexToBytes.call(void 0, u.raw_hex);
|
|
777
|
+
const tmpReader = new (0, _chunkRUPCJTC3cjs.BufferReader)(raw);
|
|
778
|
+
const value = tmpReader.readVarInt();
|
|
779
|
+
writer.writeVarInt(value);
|
|
780
|
+
} else {
|
|
781
|
+
const raw = _chunkKNDYS3DKcjs.hexToBytes.call(void 0, u.raw_hex);
|
|
782
|
+
writer.writeVarInt(raw.byteLength);
|
|
783
|
+
writer.writeBytes(raw);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
function decodeSetupParams(reader) {
|
|
789
|
+
const count = Number(reader.readVarInt());
|
|
790
|
+
const result = {};
|
|
791
|
+
const unknown = [];
|
|
792
|
+
for (let i = 0; i < count; i++) {
|
|
793
|
+
const paramType = reader.readVarInt();
|
|
794
|
+
if (paramType % 2n === 0n) {
|
|
795
|
+
const value = reader.readVarInt();
|
|
796
|
+
if (paramType === SETUP_PARAM_MAX_REQUEST_ID) {
|
|
797
|
+
result.max_request_id = value;
|
|
798
|
+
} else if (paramType === SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE) {
|
|
799
|
+
result.max_auth_token_cache_size = value;
|
|
800
|
+
} else {
|
|
801
|
+
const tmpWriter = new (0, _chunkRUPCJTC3cjs.BufferWriter)(16);
|
|
802
|
+
tmpWriter.writeVarInt(value);
|
|
803
|
+
const raw = tmpWriter.finish();
|
|
804
|
+
unknown.push({
|
|
805
|
+
id: `0x${paramType.toString(16)}`,
|
|
806
|
+
length: raw.byteLength,
|
|
807
|
+
raw_hex: _chunkKNDYS3DKcjs.bytesToHex.call(void 0, raw)
|
|
808
|
+
});
|
|
809
|
+
}
|
|
810
|
+
} else {
|
|
811
|
+
const length = Number(reader.readVarInt());
|
|
812
|
+
const bytes = reader.readBytes(length);
|
|
813
|
+
if (paramType === SETUP_PARAM_PATH) {
|
|
814
|
+
result.path = textDecoder.decode(bytes);
|
|
815
|
+
} else if (paramType === SETUP_PARAM_AUTHORITY) {
|
|
816
|
+
result.authority = textDecoder.decode(bytes);
|
|
817
|
+
} else if (paramType === SETUP_PARAM_MOQT_IMPLEMENTATION) {
|
|
818
|
+
result.moqt_implementation = textDecoder.decode(bytes);
|
|
819
|
+
} else {
|
|
820
|
+
unknown.push({
|
|
821
|
+
id: `0x${paramType.toString(16)}`,
|
|
822
|
+
length,
|
|
823
|
+
raw_hex: _chunkKNDYS3DKcjs.bytesToHex.call(void 0, bytes)
|
|
824
|
+
});
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
if (unknown.length > 0) {
|
|
829
|
+
result.unknown = unknown;
|
|
830
|
+
}
|
|
831
|
+
return result;
|
|
832
|
+
}
|
|
833
|
+
var PARAM_EXPIRES = 0x08n;
|
|
834
|
+
var PARAM_LARGEST_OBJECT = 0x09n;
|
|
835
|
+
var PARAM_SUBSCRIBER_PRIORITY = 0x20n;
|
|
836
|
+
var PARAM_SUBSCRIPTION_FILTER = 0x21n;
|
|
837
|
+
var PARAM_GROUP_ORDER = 0x22n;
|
|
838
|
+
function encodeParams(params, writer) {
|
|
839
|
+
let count = params.unknown ? params.unknown.length : 0;
|
|
840
|
+
if (params.expires !== void 0) count++;
|
|
841
|
+
if (params.largest_object !== void 0) count++;
|
|
842
|
+
if (params.subscriber_priority !== void 0) count++;
|
|
843
|
+
if (params.subscription_filter !== void 0) count++;
|
|
844
|
+
if (params.group_order !== void 0) count++;
|
|
845
|
+
writer.writeVarInt(count);
|
|
846
|
+
if (params.expires !== void 0) {
|
|
847
|
+
writer.writeVarInt(PARAM_EXPIRES);
|
|
848
|
+
writer.writeVarInt(params.expires);
|
|
849
|
+
}
|
|
850
|
+
if (params.largest_object !== void 0) {
|
|
851
|
+
writer.writeVarInt(PARAM_LARGEST_OBJECT);
|
|
852
|
+
const tmpW = new (0, _chunkRUPCJTC3cjs.BufferWriter)(16);
|
|
853
|
+
tmpW.writeVarInt(params.largest_object.group);
|
|
854
|
+
tmpW.writeVarInt(params.largest_object.object);
|
|
855
|
+
const raw = tmpW.finish();
|
|
856
|
+
writer.writeVarInt(raw.byteLength);
|
|
857
|
+
writer.writeBytes(raw);
|
|
858
|
+
}
|
|
859
|
+
if (params.subscriber_priority !== void 0) {
|
|
860
|
+
writer.writeVarInt(PARAM_SUBSCRIBER_PRIORITY);
|
|
861
|
+
writer.writeVarInt(params.subscriber_priority);
|
|
862
|
+
}
|
|
863
|
+
if (params.subscription_filter !== void 0) {
|
|
864
|
+
writer.writeVarInt(PARAM_SUBSCRIPTION_FILTER);
|
|
865
|
+
const tmpW = new (0, _chunkRUPCJTC3cjs.BufferWriter)(32);
|
|
866
|
+
const f = params.subscription_filter;
|
|
867
|
+
tmpW.writeVarInt(f.filter_type);
|
|
868
|
+
if (f.filter_type === 3n || f.filter_type === 4n) {
|
|
869
|
+
tmpW.writeVarInt(f.start_group);
|
|
870
|
+
tmpW.writeVarInt(f.start_object);
|
|
871
|
+
}
|
|
872
|
+
if (f.filter_type === 4n) {
|
|
873
|
+
tmpW.writeVarInt(f.end_group);
|
|
874
|
+
}
|
|
875
|
+
const raw = tmpW.finish();
|
|
876
|
+
writer.writeVarInt(raw.byteLength);
|
|
877
|
+
writer.writeBytes(raw);
|
|
878
|
+
}
|
|
879
|
+
if (params.group_order !== void 0) {
|
|
880
|
+
writer.writeVarInt(PARAM_GROUP_ORDER);
|
|
881
|
+
writer.writeVarInt(params.group_order);
|
|
882
|
+
}
|
|
883
|
+
if (params.unknown) {
|
|
884
|
+
for (const u of params.unknown) {
|
|
885
|
+
const id = BigInt(u.id);
|
|
886
|
+
writer.writeVarInt(id);
|
|
887
|
+
if (id % 2n === 0n) {
|
|
888
|
+
const raw = _chunkKNDYS3DKcjs.hexToBytes.call(void 0, u.raw_hex);
|
|
889
|
+
const tmpReader = new (0, _chunkRUPCJTC3cjs.BufferReader)(raw);
|
|
890
|
+
const value = tmpReader.readVarInt();
|
|
891
|
+
writer.writeVarInt(value);
|
|
892
|
+
} else {
|
|
893
|
+
const raw = _chunkKNDYS3DKcjs.hexToBytes.call(void 0, u.raw_hex);
|
|
894
|
+
writer.writeVarInt(raw.byteLength);
|
|
895
|
+
writer.writeBytes(raw);
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
function decodeParams(reader) {
|
|
901
|
+
const count = Number(reader.readVarInt());
|
|
902
|
+
const result = {};
|
|
903
|
+
const unknown = [];
|
|
904
|
+
for (let i = 0; i < count; i++) {
|
|
905
|
+
const paramType = reader.readVarInt();
|
|
906
|
+
if (paramType === PARAM_EXPIRES) {
|
|
907
|
+
result.expires = reader.readVarInt();
|
|
908
|
+
} else if (paramType === PARAM_SUBSCRIBER_PRIORITY) {
|
|
909
|
+
result.subscriber_priority = reader.readVarInt();
|
|
910
|
+
} else if (paramType === PARAM_GROUP_ORDER) {
|
|
911
|
+
result.group_order = reader.readVarInt();
|
|
912
|
+
} else if (paramType === PARAM_LARGEST_OBJECT) {
|
|
913
|
+
const length = Number(reader.readVarInt());
|
|
914
|
+
const startOff = reader.offset;
|
|
915
|
+
const group = reader.readVarInt();
|
|
916
|
+
const object = reader.readVarInt();
|
|
917
|
+
const consumed = reader.offset - startOff;
|
|
918
|
+
if (consumed < length) reader.readBytes(length - consumed);
|
|
919
|
+
result.largest_object = { group, object };
|
|
920
|
+
} else if (paramType === PARAM_SUBSCRIPTION_FILTER) {
|
|
921
|
+
const length = Number(reader.readVarInt());
|
|
922
|
+
const startOff = reader.offset;
|
|
923
|
+
const filter_type = reader.readVarInt();
|
|
924
|
+
const filter = { filter_type };
|
|
925
|
+
if (filter_type === 3n || filter_type === 4n) {
|
|
926
|
+
filter.start_group = reader.readVarInt();
|
|
927
|
+
filter.start_object = reader.readVarInt();
|
|
928
|
+
}
|
|
929
|
+
if (filter_type === 4n) {
|
|
930
|
+
filter.end_group = reader.readVarInt();
|
|
931
|
+
}
|
|
932
|
+
const consumed = reader.offset - startOff;
|
|
933
|
+
if (consumed < length) reader.readBytes(length - consumed);
|
|
934
|
+
result.subscription_filter = filter;
|
|
935
|
+
} else if (paramType % 2n === 0n) {
|
|
936
|
+
const value = reader.readVarInt();
|
|
937
|
+
const tmpWriter = new (0, _chunkRUPCJTC3cjs.BufferWriter)(16);
|
|
938
|
+
tmpWriter.writeVarInt(value);
|
|
939
|
+
const raw = tmpWriter.finish();
|
|
940
|
+
unknown.push({
|
|
941
|
+
id: `0x${paramType.toString(16)}`,
|
|
942
|
+
length: raw.byteLength,
|
|
943
|
+
raw_hex: _chunkKNDYS3DKcjs.bytesToHex.call(void 0, raw)
|
|
944
|
+
});
|
|
945
|
+
} else {
|
|
946
|
+
const length = Number(reader.readVarInt());
|
|
947
|
+
const bytes = reader.readBytes(length);
|
|
948
|
+
unknown.push({
|
|
949
|
+
id: `0x${paramType.toString(16)}`,
|
|
950
|
+
length,
|
|
951
|
+
raw_hex: _chunkKNDYS3DKcjs.bytesToHex.call(void 0, bytes)
|
|
952
|
+
});
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
if (unknown.length > 0) {
|
|
956
|
+
result.unknown = unknown;
|
|
957
|
+
}
|
|
958
|
+
return result;
|
|
959
|
+
}
|
|
960
|
+
function encodeClientSetupPayload(msg, w) {
|
|
961
|
+
encodeSetupParams(msg.parameters, w);
|
|
962
|
+
}
|
|
963
|
+
function encodeServerSetupPayload(msg, w) {
|
|
964
|
+
encodeSetupParams(msg.parameters, w);
|
|
965
|
+
}
|
|
966
|
+
function encodeSubscribePayload(msg, w) {
|
|
967
|
+
w.writeVarInt(msg.request_id);
|
|
968
|
+
w.writeTuple(msg.track_namespace);
|
|
969
|
+
w.writeString(msg.track_name);
|
|
970
|
+
encodeParams(msg.parameters, w);
|
|
971
|
+
}
|
|
972
|
+
function encodeSubscribeOkPayload(msg, w) {
|
|
973
|
+
w.writeVarInt(msg.request_id);
|
|
974
|
+
w.writeVarInt(msg.track_alias);
|
|
975
|
+
encodeParams(msg.parameters, w);
|
|
976
|
+
}
|
|
977
|
+
function encodeRequestUpdatePayload(msg, w) {
|
|
978
|
+
w.writeVarInt(msg.request_id);
|
|
979
|
+
w.writeVarInt(msg.existing_request_id);
|
|
980
|
+
encodeParams(msg.parameters, w);
|
|
981
|
+
}
|
|
982
|
+
function encodeUnsubscribePayload(msg, w) {
|
|
983
|
+
w.writeVarInt(msg.request_id);
|
|
984
|
+
}
|
|
985
|
+
function encodePublishPayload(msg, w) {
|
|
986
|
+
w.writeVarInt(msg.request_id);
|
|
987
|
+
w.writeTuple(msg.track_namespace);
|
|
988
|
+
w.writeString(msg.track_name);
|
|
989
|
+
w.writeVarInt(msg.track_alias);
|
|
990
|
+
encodeParams(msg.parameters, w);
|
|
991
|
+
}
|
|
992
|
+
function encodePublishOkPayload(msg, w) {
|
|
993
|
+
w.writeVarInt(msg.request_id);
|
|
994
|
+
encodeParams(msg.parameters, w);
|
|
995
|
+
}
|
|
996
|
+
function encodePublishDonePayload(msg, w) {
|
|
997
|
+
w.writeVarInt(msg.request_id);
|
|
998
|
+
w.writeVarInt(msg.status_code);
|
|
999
|
+
w.writeVarInt(msg.stream_count);
|
|
1000
|
+
w.writeString(msg.reason_phrase);
|
|
1001
|
+
}
|
|
1002
|
+
function encodePublishNamespacePayload(msg, w) {
|
|
1003
|
+
w.writeVarInt(msg.request_id);
|
|
1004
|
+
w.writeTuple(msg.track_namespace);
|
|
1005
|
+
encodeParams(msg.parameters, w);
|
|
1006
|
+
}
|
|
1007
|
+
function encodePublishNamespaceDonePayload(msg, w) {
|
|
1008
|
+
w.writeVarInt(msg.request_id);
|
|
1009
|
+
}
|
|
1010
|
+
function encodePublishNamespaceCancelPayload(msg, w) {
|
|
1011
|
+
w.writeVarInt(msg.request_id);
|
|
1012
|
+
w.writeVarInt(msg.error_code);
|
|
1013
|
+
w.writeString(msg.reason_phrase);
|
|
1014
|
+
}
|
|
1015
|
+
function encodeSubscribeNamespacePayload(msg, w) {
|
|
1016
|
+
w.writeVarInt(msg.request_id);
|
|
1017
|
+
w.writeTuple(msg.namespace_prefix);
|
|
1018
|
+
w.writeVarInt(msg.subscribe_options);
|
|
1019
|
+
encodeParams(msg.parameters, w);
|
|
1020
|
+
}
|
|
1021
|
+
function encodeNamespacePayload(msg, w) {
|
|
1022
|
+
w.writeTuple(msg.namespace_suffix);
|
|
1023
|
+
}
|
|
1024
|
+
function encodeNamespaceDonePayload(msg, w) {
|
|
1025
|
+
w.writeTuple(msg.namespace_suffix);
|
|
1026
|
+
}
|
|
1027
|
+
function encodeFetchPayload(msg, w) {
|
|
1028
|
+
w.writeVarInt(msg.request_id);
|
|
1029
|
+
w.writeVarInt(msg.fetch_type);
|
|
1030
|
+
const ft = Number(msg.fetch_type);
|
|
1031
|
+
if (ft === 1 && msg.standalone) {
|
|
1032
|
+
w.writeTuple(msg.standalone.track_namespace);
|
|
1033
|
+
w.writeString(msg.standalone.track_name);
|
|
1034
|
+
w.writeVarInt(msg.standalone.start_group);
|
|
1035
|
+
w.writeVarInt(msg.standalone.start_object);
|
|
1036
|
+
w.writeVarInt(msg.standalone.end_group);
|
|
1037
|
+
w.writeVarInt(msg.standalone.end_object);
|
|
1038
|
+
} else if ((ft === 2 || ft === 3) && msg.joining) {
|
|
1039
|
+
w.writeVarInt(msg.joining.joining_request_id);
|
|
1040
|
+
w.writeVarInt(msg.joining.joining_start);
|
|
1041
|
+
}
|
|
1042
|
+
encodeParams(msg.parameters, w);
|
|
1043
|
+
}
|
|
1044
|
+
function encodeFetchOkPayload(msg, w) {
|
|
1045
|
+
w.writeVarInt(msg.request_id);
|
|
1046
|
+
w.writeUint8(msg.end_of_track);
|
|
1047
|
+
w.writeVarInt(msg.end_group);
|
|
1048
|
+
w.writeVarInt(msg.end_object);
|
|
1049
|
+
encodeParams(msg.parameters, w);
|
|
1050
|
+
}
|
|
1051
|
+
function encodeFetchCancelPayload(msg, w) {
|
|
1052
|
+
w.writeVarInt(msg.request_id);
|
|
1053
|
+
}
|
|
1054
|
+
function encodeTrackStatusPayload(msg, w) {
|
|
1055
|
+
w.writeVarInt(msg.request_id);
|
|
1056
|
+
w.writeTuple(msg.track_namespace);
|
|
1057
|
+
w.writeString(msg.track_name);
|
|
1058
|
+
encodeParams(msg.parameters, w);
|
|
1059
|
+
}
|
|
1060
|
+
function encodeRequestOkPayload(msg, w) {
|
|
407
1061
|
w.writeVarInt(msg.request_id);
|
|
408
1062
|
encodeParams(msg.parameters, w);
|
|
409
1063
|
}
|
|
@@ -515,7 +1169,7 @@ function decodeFetchPayload(r) {
|
|
|
515
1169
|
const fetch_type = r.readVarInt();
|
|
516
1170
|
const ft = Number(fetch_type);
|
|
517
1171
|
if (ft < 1 || ft > 3) {
|
|
518
|
-
throw new (0,
|
|
1172
|
+
throw new (0, _chunkRUPCJTC3cjs.DecodeError)("CONSTRAINT_VIOLATION", `Invalid fetch_type: ${ft}`, r.offset);
|
|
519
1173
|
}
|
|
520
1174
|
let standalone;
|
|
521
1175
|
let joining;
|
|
@@ -579,463 +1233,156 @@ function decodeGoAwayPayload(r) {
|
|
|
579
1233
|
}
|
|
580
1234
|
function decodeMaxRequestIdPayload(r) {
|
|
581
1235
|
const max_request_id = r.readVarInt();
|
|
582
|
-
return { type: "max_request_id", max_request_id };
|
|
583
|
-
}
|
|
584
|
-
function decodeRequestsBlockedPayload(r) {
|
|
585
|
-
const maximum_request_id = r.readVarInt();
|
|
586
|
-
return { type: "requests_blocked", maximum_request_id };
|
|
587
|
-
}
|
|
588
|
-
var payloadDecoders = /* @__PURE__ */ new Map([
|
|
589
|
-
[MSG_CLIENT_SETUP, decodeClientSetupPayload],
|
|
590
|
-
[MSG_SERVER_SETUP, decodeServerSetupPayload],
|
|
591
|
-
[MSG_SUBSCRIBE, decodeSubscribePayload],
|
|
592
|
-
[MSG_SUBSCRIBE_OK, decodeSubscribeOkPayload],
|
|
593
|
-
[MSG_REQUEST_UPDATE, decodeRequestUpdatePayload],
|
|
594
|
-
[MSG_UNSUBSCRIBE, decodeUnsubscribePayload],
|
|
595
|
-
[MSG_PUBLISH, decodePublishPayload],
|
|
596
|
-
[MSG_PUBLISH_OK, decodePublishOkPayload],
|
|
597
|
-
[MSG_PUBLISH_DONE, decodePublishDonePayload],
|
|
598
|
-
[MSG_PUBLISH_NAMESPACE, decodePublishNamespacePayload],
|
|
599
|
-
[MSG_PUBLISH_NAMESPACE_DONE, decodePublishNamespaceDonePayload],
|
|
600
|
-
[MSG_PUBLISH_NAMESPACE_CANCEL, decodePublishNamespaceCancelPayload],
|
|
601
|
-
[MSG_SUBSCRIBE_NAMESPACE, decodeSubscribeNamespacePayload],
|
|
602
|
-
[MSG_NAMESPACE, decodeNamespacePayload],
|
|
603
|
-
[MSG_NAMESPACE_DONE, decodeNamespaceDonePayload],
|
|
604
|
-
[MSG_FETCH, decodeFetchPayload],
|
|
605
|
-
[MSG_FETCH_OK, decodeFetchOkPayload],
|
|
606
|
-
[MSG_FETCH_CANCEL, decodeFetchCancelPayload],
|
|
607
|
-
[MSG_TRACK_STATUS, decodeTrackStatusPayload],
|
|
608
|
-
[MSG_REQUEST_OK, decodeRequestOkPayload],
|
|
609
|
-
[MSG_REQUEST_ERROR, decodeRequestErrorPayload],
|
|
610
|
-
[MSG_GOAWAY, decodeGoAwayPayload],
|
|
611
|
-
[MSG_MAX_REQUEST_ID, decodeMaxRequestIdPayload],
|
|
612
|
-
[MSG_REQUESTS_BLOCKED, decodeRequestsBlockedPayload]
|
|
613
|
-
]);
|
|
614
|
-
function encodeMessage(message) {
|
|
615
|
-
const typeId = MESSAGE_ID_MAP.get(message.type);
|
|
616
|
-
if (typeId === void 0) {
|
|
617
|
-
throw new Error(`Unknown message type: ${message.type}`);
|
|
618
|
-
}
|
|
619
|
-
const payloadWriter = new (0, _chunkFWISIR26cjs.BufferWriter)();
|
|
620
|
-
encodePayload(message, payloadWriter);
|
|
621
|
-
const payload = payloadWriter.finish();
|
|
622
|
-
if (payload.byteLength > 65535) {
|
|
623
|
-
throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
|
|
624
|
-
}
|
|
625
|
-
const writer = new (0, _chunkFWISIR26cjs.BufferWriter)();
|
|
626
|
-
writer.writeVarInt(typeId);
|
|
627
|
-
writer.writeUint8(payload.byteLength >> 8 & 255);
|
|
628
|
-
writer.writeUint8(payload.byteLength & 255);
|
|
629
|
-
writer.writeBytes(payload);
|
|
630
|
-
return writer.finish();
|
|
631
|
-
}
|
|
632
|
-
function encodePayload(msg, w) {
|
|
633
|
-
switch (msg.type) {
|
|
634
|
-
case "client_setup":
|
|
635
|
-
return encodeClientSetupPayload(msg, w);
|
|
636
|
-
case "server_setup":
|
|
637
|
-
return encodeServerSetupPayload(msg, w);
|
|
638
|
-
case "subscribe":
|
|
639
|
-
return encodeSubscribePayload(msg, w);
|
|
640
|
-
case "subscribe_ok":
|
|
641
|
-
return encodeSubscribeOkPayload(msg, w);
|
|
642
|
-
case "request_update":
|
|
643
|
-
return encodeRequestUpdatePayload(msg, w);
|
|
644
|
-
case "unsubscribe":
|
|
645
|
-
return encodeUnsubscribePayload(msg, w);
|
|
646
|
-
case "publish":
|
|
647
|
-
return encodePublishPayload(msg, w);
|
|
648
|
-
case "publish_ok":
|
|
649
|
-
return encodePublishOkPayload(msg, w);
|
|
650
|
-
case "publish_done":
|
|
651
|
-
return encodePublishDonePayload(msg, w);
|
|
652
|
-
case "publish_namespace":
|
|
653
|
-
return encodePublishNamespacePayload(msg, w);
|
|
654
|
-
case "publish_namespace_done":
|
|
655
|
-
return encodePublishNamespaceDonePayload(msg, w);
|
|
656
|
-
case "publish_namespace_cancel":
|
|
657
|
-
return encodePublishNamespaceCancelPayload(msg, w);
|
|
658
|
-
case "subscribe_namespace":
|
|
659
|
-
return encodeSubscribeNamespacePayload(msg, w);
|
|
660
|
-
case "namespace":
|
|
661
|
-
return encodeNamespacePayload(msg, w);
|
|
662
|
-
case "namespace_done":
|
|
663
|
-
return encodeNamespaceDonePayload(msg, w);
|
|
664
|
-
case "fetch":
|
|
665
|
-
return encodeFetchPayload(msg, w);
|
|
666
|
-
case "fetch_ok":
|
|
667
|
-
return encodeFetchOkPayload(msg, w);
|
|
668
|
-
case "fetch_cancel":
|
|
669
|
-
return encodeFetchCancelPayload(msg, w);
|
|
670
|
-
case "track_status":
|
|
671
|
-
return encodeTrackStatusPayload(msg, w);
|
|
672
|
-
case "request_ok":
|
|
673
|
-
return encodeRequestOkPayload(msg, w);
|
|
674
|
-
case "request_error":
|
|
675
|
-
return encodeRequestErrorPayload(msg, w);
|
|
676
|
-
case "goaway":
|
|
677
|
-
return encodeGoAwayPayload(msg, w);
|
|
678
|
-
case "max_request_id":
|
|
679
|
-
return encodeMaxRequestIdPayload(msg, w);
|
|
680
|
-
case "requests_blocked":
|
|
681
|
-
return encodeRequestsBlockedPayload(msg, w);
|
|
682
|
-
default: {
|
|
683
|
-
const _exhaustive = msg;
|
|
684
|
-
throw new Error(`Unhandled message type: ${_exhaustive.type}`);
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
}
|
|
688
|
-
function decodeMessage(bytes) {
|
|
689
|
-
try {
|
|
690
|
-
const reader = new (0, _chunkFWISIR26cjs.BufferReader)(bytes);
|
|
691
|
-
const typeId = reader.readVarInt();
|
|
692
|
-
const lenHi = reader.readUint8();
|
|
693
|
-
const lenLo = reader.readUint8();
|
|
694
|
-
const payloadLength = lenHi << 8 | lenLo;
|
|
695
|
-
const payloadBytes = reader.readBytes(payloadLength);
|
|
696
|
-
const payloadReader = new (0, _chunkFWISIR26cjs.BufferReader)(payloadBytes);
|
|
697
|
-
const decoder = payloadDecoders.get(typeId);
|
|
698
|
-
if (!decoder) {
|
|
699
|
-
return {
|
|
700
|
-
ok: false,
|
|
701
|
-
error: new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
702
|
-
"UNKNOWN_MESSAGE_TYPE",
|
|
703
|
-
`Unknown message type ID: 0x${typeId.toString(16)}`,
|
|
704
|
-
0
|
|
705
|
-
)
|
|
706
|
-
};
|
|
707
|
-
}
|
|
708
|
-
const message = decoder(payloadReader);
|
|
709
|
-
return { ok: true, value: message, bytesRead: reader.offset };
|
|
710
|
-
} catch (e) {
|
|
711
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError) {
|
|
712
|
-
return { ok: false, error: e };
|
|
713
|
-
}
|
|
714
|
-
throw e;
|
|
715
|
-
}
|
|
716
|
-
}
|
|
717
|
-
var FETCH_STREAM_TYPE = 0x05n;
|
|
718
|
-
function encodeSubgroupStream(stream) {
|
|
719
|
-
const w = new (0, _chunkFWISIR26cjs.BufferWriter)();
|
|
720
|
-
const streamType = stream.headerType;
|
|
721
|
-
w.writeVarInt(BigInt(streamType));
|
|
722
|
-
const hasSubgroupField = (streamType & 4) !== 0;
|
|
723
|
-
const hasPriority = streamType < 48;
|
|
724
|
-
w.writeVarInt(stream.trackAlias);
|
|
725
|
-
w.writeVarInt(stream.groupId);
|
|
726
|
-
if (hasSubgroupField) {
|
|
727
|
-
w.writeVarInt(stream.subgroupId);
|
|
728
|
-
}
|
|
729
|
-
if (hasPriority) {
|
|
730
|
-
w.writeUint8(stream.publisherPriority);
|
|
731
|
-
}
|
|
732
|
-
let prevObjectId = -1n;
|
|
733
|
-
for (const obj of stream.objects) {
|
|
734
|
-
const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
|
|
735
|
-
w.writeVarInt(delta);
|
|
736
|
-
w.writeVarInt(obj.payloadLength);
|
|
737
|
-
if (obj.payloadLength === 0) {
|
|
738
|
-
w.writeVarInt(_nullishCoalesce(obj.status, () => ( 0n)));
|
|
739
|
-
} else {
|
|
740
|
-
w.writeBytes(obj.payload);
|
|
741
|
-
}
|
|
742
|
-
prevObjectId = obj.objectId;
|
|
743
|
-
}
|
|
744
|
-
return w.finish();
|
|
745
|
-
}
|
|
746
|
-
function encodeDatagram(dg) {
|
|
747
|
-
const w = new (0, _chunkFWISIR26cjs.BufferWriter)();
|
|
748
|
-
const dgType = dg.datagramType;
|
|
749
|
-
w.writeVarInt(BigInt(dgType));
|
|
750
|
-
w.writeVarInt(dg.trackAlias);
|
|
751
|
-
w.writeVarInt(dg.groupId);
|
|
752
|
-
const objectIdAbsent = (dgType & 4) !== 0;
|
|
753
|
-
const isStatus = (dgType & 32) !== 0;
|
|
754
|
-
if (!objectIdAbsent) {
|
|
755
|
-
w.writeVarInt(dg.objectId);
|
|
756
|
-
}
|
|
757
|
-
w.writeUint8(dg.publisherPriority);
|
|
758
|
-
if (isStatus) {
|
|
759
|
-
w.writeVarInt(_nullishCoalesce(dg.objectStatus, () => ( 0n)));
|
|
760
|
-
} else {
|
|
761
|
-
w.writeBytes(dg.payload);
|
|
762
|
-
}
|
|
763
|
-
return w.finish();
|
|
1236
|
+
return { type: "max_request_id", max_request_id };
|
|
764
1237
|
}
|
|
765
|
-
function
|
|
766
|
-
const
|
|
767
|
-
|
|
768
|
-
w.writeVarInt(stream.requestId);
|
|
769
|
-
for (const obj of stream.objects) {
|
|
770
|
-
w.writeUint8(obj.serializationFlags);
|
|
771
|
-
const flags = obj.serializationFlags;
|
|
772
|
-
if (flags & 8) w.writeVarInt(obj.groupId);
|
|
773
|
-
const subgroupEncoding = flags & 3;
|
|
774
|
-
if (subgroupEncoding === 3) w.writeVarInt(obj.subgroupId);
|
|
775
|
-
if (flags & 4) w.writeVarInt(obj.objectId);
|
|
776
|
-
if (flags & 16) w.writeUint8(obj.publisherPriority);
|
|
777
|
-
w.writeVarInt(obj.payloadLength);
|
|
778
|
-
if (obj.payloadLength === 0) {
|
|
779
|
-
w.writeVarInt(_nullishCoalesce(obj.status, () => ( 0n)));
|
|
780
|
-
} else {
|
|
781
|
-
w.writeBytes(obj.payload);
|
|
782
|
-
}
|
|
783
|
-
}
|
|
784
|
-
return w.finish();
|
|
1238
|
+
function decodeRequestsBlockedPayload(r) {
|
|
1239
|
+
const maximum_request_id = r.readVarInt();
|
|
1240
|
+
return { type: "requests_blocked", maximum_request_id };
|
|
785
1241
|
}
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
while (r.remaining > 0) {
|
|
817
|
-
const delta = r.readVarInt();
|
|
818
|
-
let objectId;
|
|
819
|
-
if (firstObject) {
|
|
820
|
-
objectId = delta;
|
|
821
|
-
if (subgroupIsFirstObjId && firstObject) {
|
|
822
|
-
subgroupId = objectId;
|
|
823
|
-
}
|
|
824
|
-
firstObject = false;
|
|
825
|
-
} else {
|
|
826
|
-
objectId = prevObjectId + 1n + delta;
|
|
827
|
-
}
|
|
828
|
-
const payloadLength = Number(r.readVarInt());
|
|
829
|
-
let payload;
|
|
830
|
-
let status;
|
|
831
|
-
if (payloadLength === 0) {
|
|
832
|
-
status = r.readVarInt();
|
|
833
|
-
payload = new Uint8Array(0);
|
|
834
|
-
} else {
|
|
835
|
-
payload = r.readBytes(payloadLength);
|
|
836
|
-
}
|
|
837
|
-
const obj = { type: "object", objectId, payloadLength, payload };
|
|
838
|
-
if (status !== void 0) obj.status = status;
|
|
839
|
-
objects.push(obj);
|
|
840
|
-
prevObjectId = objectId;
|
|
841
|
-
}
|
|
842
|
-
return {
|
|
843
|
-
ok: true,
|
|
844
|
-
value: {
|
|
845
|
-
type: "subgroup",
|
|
846
|
-
headerType: streamType,
|
|
847
|
-
trackAlias,
|
|
848
|
-
groupId,
|
|
849
|
-
subgroupId,
|
|
850
|
-
publisherPriority,
|
|
851
|
-
objects
|
|
852
|
-
},
|
|
853
|
-
bytesRead: r.offset
|
|
854
|
-
};
|
|
855
|
-
} catch (e) {
|
|
856
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError) return { ok: false, error: e };
|
|
857
|
-
throw e;
|
|
1242
|
+
var payloadDecoders = /* @__PURE__ */ new Map([
|
|
1243
|
+
[MSG_CLIENT_SETUP, decodeClientSetupPayload],
|
|
1244
|
+
[MSG_SERVER_SETUP, decodeServerSetupPayload],
|
|
1245
|
+
[MSG_SUBSCRIBE, decodeSubscribePayload],
|
|
1246
|
+
[MSG_SUBSCRIBE_OK, decodeSubscribeOkPayload],
|
|
1247
|
+
[MSG_REQUEST_UPDATE, decodeRequestUpdatePayload],
|
|
1248
|
+
[MSG_UNSUBSCRIBE, decodeUnsubscribePayload],
|
|
1249
|
+
[MSG_PUBLISH, decodePublishPayload],
|
|
1250
|
+
[MSG_PUBLISH_OK, decodePublishOkPayload],
|
|
1251
|
+
[MSG_PUBLISH_DONE, decodePublishDonePayload],
|
|
1252
|
+
[MSG_PUBLISH_NAMESPACE, decodePublishNamespacePayload],
|
|
1253
|
+
[MSG_PUBLISH_NAMESPACE_DONE, decodePublishNamespaceDonePayload],
|
|
1254
|
+
[MSG_PUBLISH_NAMESPACE_CANCEL, decodePublishNamespaceCancelPayload],
|
|
1255
|
+
[MSG_SUBSCRIBE_NAMESPACE, decodeSubscribeNamespacePayload],
|
|
1256
|
+
[MSG_NAMESPACE, decodeNamespacePayload],
|
|
1257
|
+
[MSG_NAMESPACE_DONE, decodeNamespaceDonePayload],
|
|
1258
|
+
[MSG_FETCH, decodeFetchPayload],
|
|
1259
|
+
[MSG_FETCH_OK, decodeFetchOkPayload],
|
|
1260
|
+
[MSG_FETCH_CANCEL, decodeFetchCancelPayload],
|
|
1261
|
+
[MSG_TRACK_STATUS, decodeTrackStatusPayload],
|
|
1262
|
+
[MSG_REQUEST_OK, decodeRequestOkPayload],
|
|
1263
|
+
[MSG_REQUEST_ERROR, decodeRequestErrorPayload],
|
|
1264
|
+
[MSG_GOAWAY, decodeGoAwayPayload],
|
|
1265
|
+
[MSG_MAX_REQUEST_ID, decodeMaxRequestIdPayload],
|
|
1266
|
+
[MSG_REQUESTS_BLOCKED, decodeRequestsBlockedPayload]
|
|
1267
|
+
]);
|
|
1268
|
+
function encodeMessage(message) {
|
|
1269
|
+
const typeId = MESSAGE_ID_MAP.get(message.type);
|
|
1270
|
+
if (typeId === void 0) {
|
|
1271
|
+
throw new Error(`Unknown message type: ${message.type}`);
|
|
858
1272
|
}
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
const objectIdAbsent = (dgType & 4) !== 0;
|
|
865
|
-
const endOfGroup = (dgType & 2) !== 0;
|
|
866
|
-
const isStatus = (dgType & 32) !== 0;
|
|
867
|
-
const trackAlias = r.readVarInt();
|
|
868
|
-
const groupId = r.readVarInt();
|
|
869
|
-
let objectId = 0n;
|
|
870
|
-
if (!objectIdAbsent) {
|
|
871
|
-
objectId = r.readVarInt();
|
|
872
|
-
}
|
|
873
|
-
const publisherPriority = r.readUint8();
|
|
874
|
-
let objectStatus;
|
|
875
|
-
let payload;
|
|
876
|
-
if (isStatus) {
|
|
877
|
-
objectStatus = r.readVarInt();
|
|
878
|
-
payload = new Uint8Array(0);
|
|
879
|
-
} else {
|
|
880
|
-
payload = r.readBytes(r.remaining);
|
|
881
|
-
}
|
|
882
|
-
const payloadLength = payload.byteLength;
|
|
883
|
-
const result = {
|
|
884
|
-
type: "datagram",
|
|
885
|
-
datagramType: dgType,
|
|
886
|
-
trackAlias,
|
|
887
|
-
groupId,
|
|
888
|
-
objectId,
|
|
889
|
-
publisherPriority,
|
|
890
|
-
payloadLength,
|
|
891
|
-
payload
|
|
892
|
-
};
|
|
893
|
-
if (endOfGroup) result.endOfGroup = true;
|
|
894
|
-
if (objectStatus !== void 0)
|
|
895
|
-
result.objectStatus = objectStatus;
|
|
896
|
-
return { ok: true, value: result, bytesRead: r.offset };
|
|
897
|
-
} catch (e) {
|
|
898
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError) return { ok: false, error: e };
|
|
899
|
-
throw e;
|
|
1273
|
+
const payloadWriter = new (0, _chunkRUPCJTC3cjs.BufferWriter)();
|
|
1274
|
+
encodePayload(message, payloadWriter);
|
|
1275
|
+
const payload = payloadWriter.finishView();
|
|
1276
|
+
if (payload.byteLength > 65535) {
|
|
1277
|
+
throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
|
|
900
1278
|
}
|
|
1279
|
+
const writer = new (0, _chunkRUPCJTC3cjs.BufferWriter)(payload.byteLength + 16);
|
|
1280
|
+
writer.writeVarInt(typeId);
|
|
1281
|
+
writer.writeUint8(payload.byteLength >> 8 & 255);
|
|
1282
|
+
writer.writeUint8(payload.byteLength & 255);
|
|
1283
|
+
writer.writeBytes(payload);
|
|
1284
|
+
return writer.finish();
|
|
901
1285
|
}
|
|
902
|
-
function
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
return
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
subgroupId = r.readVarInt();
|
|
956
|
-
}
|
|
957
|
-
let objectId = prevObjectId + 1n;
|
|
958
|
-
if (objectIdPresent) {
|
|
959
|
-
objectId = r.readVarInt();
|
|
960
|
-
} else if (first) {
|
|
961
|
-
return {
|
|
962
|
-
ok: false,
|
|
963
|
-
error: new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
964
|
-
"CONSTRAINT_VIOLATION",
|
|
965
|
-
"First fetch object must include objectId",
|
|
966
|
-
r.offset
|
|
967
|
-
)
|
|
968
|
-
};
|
|
969
|
-
}
|
|
970
|
-
if (priorityPresent) {
|
|
971
|
-
prevPriority = r.readUint8();
|
|
972
|
-
}
|
|
973
|
-
if (extensionsPresent) {
|
|
974
|
-
const extLen = Number(r.readVarInt());
|
|
975
|
-
if (extLen > 0) {
|
|
976
|
-
r.readBytes(extLen);
|
|
977
|
-
}
|
|
978
|
-
}
|
|
979
|
-
const payloadLength = Number(r.readVarInt());
|
|
980
|
-
let payload;
|
|
981
|
-
let status;
|
|
982
|
-
if (payloadLength > 0) {
|
|
983
|
-
payload = r.readBytes(payloadLength);
|
|
984
|
-
} else {
|
|
985
|
-
status = r.readVarInt();
|
|
986
|
-
payload = new Uint8Array(0);
|
|
987
|
-
}
|
|
988
|
-
const obj = {
|
|
989
|
-
type: "object",
|
|
990
|
-
serializationFlags: flags,
|
|
991
|
-
groupId,
|
|
992
|
-
subgroupId,
|
|
993
|
-
objectId,
|
|
994
|
-
publisherPriority: prevPriority,
|
|
995
|
-
payloadLength,
|
|
996
|
-
payload
|
|
997
|
-
};
|
|
998
|
-
if (status !== void 0) obj.status = status;
|
|
999
|
-
objects.push(obj);
|
|
1000
|
-
prevGroupId = groupId;
|
|
1001
|
-
prevSubgroupId = subgroupId;
|
|
1002
|
-
prevObjectId = objectId;
|
|
1003
|
-
first = false;
|
|
1286
|
+
function encodePayload(msg, w) {
|
|
1287
|
+
switch (msg.type) {
|
|
1288
|
+
case "client_setup":
|
|
1289
|
+
return encodeClientSetupPayload(msg, w);
|
|
1290
|
+
case "server_setup":
|
|
1291
|
+
return encodeServerSetupPayload(msg, w);
|
|
1292
|
+
case "subscribe":
|
|
1293
|
+
return encodeSubscribePayload(msg, w);
|
|
1294
|
+
case "subscribe_ok":
|
|
1295
|
+
return encodeSubscribeOkPayload(msg, w);
|
|
1296
|
+
case "request_update":
|
|
1297
|
+
return encodeRequestUpdatePayload(msg, w);
|
|
1298
|
+
case "unsubscribe":
|
|
1299
|
+
return encodeUnsubscribePayload(msg, w);
|
|
1300
|
+
case "publish":
|
|
1301
|
+
return encodePublishPayload(msg, w);
|
|
1302
|
+
case "publish_ok":
|
|
1303
|
+
return encodePublishOkPayload(msg, w);
|
|
1304
|
+
case "publish_done":
|
|
1305
|
+
return encodePublishDonePayload(msg, w);
|
|
1306
|
+
case "publish_namespace":
|
|
1307
|
+
return encodePublishNamespacePayload(msg, w);
|
|
1308
|
+
case "publish_namespace_done":
|
|
1309
|
+
return encodePublishNamespaceDonePayload(msg, w);
|
|
1310
|
+
case "publish_namespace_cancel":
|
|
1311
|
+
return encodePublishNamespaceCancelPayload(msg, w);
|
|
1312
|
+
case "subscribe_namespace":
|
|
1313
|
+
return encodeSubscribeNamespacePayload(msg, w);
|
|
1314
|
+
case "namespace":
|
|
1315
|
+
return encodeNamespacePayload(msg, w);
|
|
1316
|
+
case "namespace_done":
|
|
1317
|
+
return encodeNamespaceDonePayload(msg, w);
|
|
1318
|
+
case "fetch":
|
|
1319
|
+
return encodeFetchPayload(msg, w);
|
|
1320
|
+
case "fetch_ok":
|
|
1321
|
+
return encodeFetchOkPayload(msg, w);
|
|
1322
|
+
case "fetch_cancel":
|
|
1323
|
+
return encodeFetchCancelPayload(msg, w);
|
|
1324
|
+
case "track_status":
|
|
1325
|
+
return encodeTrackStatusPayload(msg, w);
|
|
1326
|
+
case "request_ok":
|
|
1327
|
+
return encodeRequestOkPayload(msg, w);
|
|
1328
|
+
case "request_error":
|
|
1329
|
+
return encodeRequestErrorPayload(msg, w);
|
|
1330
|
+
case "goaway":
|
|
1331
|
+
return encodeGoAwayPayload(msg, w);
|
|
1332
|
+
case "max_request_id":
|
|
1333
|
+
return encodeMaxRequestIdPayload(msg, w);
|
|
1334
|
+
case "requests_blocked":
|
|
1335
|
+
return encodeRequestsBlockedPayload(msg, w);
|
|
1336
|
+
default: {
|
|
1337
|
+
const _exhaustive = msg;
|
|
1338
|
+
throw new Error(`Unhandled message type: ${_exhaustive.type}`);
|
|
1004
1339
|
}
|
|
1005
|
-
return {
|
|
1006
|
-
ok: true,
|
|
1007
|
-
value: { type: "fetch", requestId, objects },
|
|
1008
|
-
bytesRead: r.offset
|
|
1009
|
-
};
|
|
1010
|
-
} catch (e) {
|
|
1011
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError) return { ok: false, error: e };
|
|
1012
|
-
throw e;
|
|
1013
1340
|
}
|
|
1014
1341
|
}
|
|
1015
|
-
function
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1342
|
+
function decodeMessage(bytes) {
|
|
1343
|
+
try {
|
|
1344
|
+
const reader = new (0, _chunkRUPCJTC3cjs.BufferReader)(bytes);
|
|
1345
|
+
const typeId = reader.readVarInt();
|
|
1346
|
+
const lenHi = reader.readUint8();
|
|
1347
|
+
const lenLo = reader.readUint8();
|
|
1348
|
+
const payloadLength = lenHi << 8 | lenLo;
|
|
1349
|
+
const payloadBytes = reader.readBytes(payloadLength);
|
|
1350
|
+
const payloadReader = new (0, _chunkRUPCJTC3cjs.BufferReader)(payloadBytes);
|
|
1351
|
+
const decoder = payloadDecoders.get(typeId);
|
|
1352
|
+
if (!decoder) {
|
|
1353
|
+
return {
|
|
1354
|
+
ok: false,
|
|
1355
|
+
error: new (0, _chunkRUPCJTC3cjs.DecodeError)(
|
|
1356
|
+
"UNKNOWN_MESSAGE_TYPE",
|
|
1357
|
+
`Unknown message type ID: 0x${typeId.toString(16)}`,
|
|
1358
|
+
0
|
|
1359
|
+
)
|
|
1360
|
+
};
|
|
1361
|
+
}
|
|
1362
|
+
const message = decoder(payloadReader);
|
|
1363
|
+
return { ok: true, value: message, bytesRead: reader.offset };
|
|
1364
|
+
} catch (e) {
|
|
1365
|
+
if (e instanceof _chunkRUPCJTC3cjs.DecodeError) {
|
|
1366
|
+
return { ok: false, error: e };
|
|
1026
1367
|
}
|
|
1368
|
+
throw e;
|
|
1027
1369
|
}
|
|
1028
1370
|
}
|
|
1029
1371
|
function createStreamDecoder() {
|
|
1030
1372
|
let buffer = new Uint8Array(0);
|
|
1373
|
+
let offset = 0;
|
|
1031
1374
|
return new TransformStream({
|
|
1032
1375
|
transform(chunk, controller) {
|
|
1376
|
+
if (offset > 0) {
|
|
1377
|
+
buffer = buffer.subarray(offset);
|
|
1378
|
+
offset = 0;
|
|
1379
|
+
}
|
|
1033
1380
|
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1034
1381
|
newBuffer.set(buffer, 0);
|
|
1035
1382
|
newBuffer.set(chunk, buffer.length);
|
|
1036
1383
|
buffer = newBuffer;
|
|
1037
|
-
while (buffer.length
|
|
1038
|
-
const result = decodeMessage(buffer);
|
|
1384
|
+
while (offset < buffer.length) {
|
|
1385
|
+
const result = decodeMessage(buffer.subarray(offset));
|
|
1039
1386
|
if (!result.ok) {
|
|
1040
1387
|
if (result.error.code === "UNEXPECTED_END") {
|
|
1041
1388
|
break;
|
|
@@ -1044,251 +1391,14 @@ function createStreamDecoder() {
|
|
|
1044
1391
|
return;
|
|
1045
1392
|
}
|
|
1046
1393
|
controller.enqueue(result.value);
|
|
1047
|
-
|
|
1048
|
-
}
|
|
1049
|
-
},
|
|
1050
|
-
flush(controller) {
|
|
1051
|
-
if (buffer.length > 0) {
|
|
1052
|
-
controller.error(
|
|
1053
|
-
new (0, _chunkFWISIR26cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete message data", 0)
|
|
1054
|
-
);
|
|
1055
|
-
}
|
|
1056
|
-
}
|
|
1057
|
-
});
|
|
1058
|
-
}
|
|
1059
|
-
function createSubgroupStreamDecoder() {
|
|
1060
|
-
let buffer = new Uint8Array(0);
|
|
1061
|
-
let headerEmitted = false;
|
|
1062
|
-
let prevObjectId = -1n;
|
|
1063
|
-
let firstObject = true;
|
|
1064
|
-
let _subgroupIsFirstObjId = false;
|
|
1065
|
-
return new TransformStream({
|
|
1066
|
-
transform(chunk, controller) {
|
|
1067
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1068
|
-
newBuffer.set(buffer, 0);
|
|
1069
|
-
newBuffer.set(chunk, buffer.length);
|
|
1070
|
-
buffer = newBuffer;
|
|
1071
|
-
if (!headerEmitted) {
|
|
1072
|
-
try {
|
|
1073
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(buffer);
|
|
1074
|
-
const streamType = Number(r.readVarInt());
|
|
1075
|
-
if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
|
|
1076
|
-
controller.error(
|
|
1077
|
-
new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
1078
|
-
"CONSTRAINT_VIOLATION",
|
|
1079
|
-
`Expected subgroup stream type, got 0x${streamType.toString(16)}`,
|
|
1080
|
-
0
|
|
1081
|
-
)
|
|
1082
|
-
);
|
|
1083
|
-
return;
|
|
1084
|
-
}
|
|
1085
|
-
const hasSubgroupField = (streamType & 4) !== 0;
|
|
1086
|
-
_subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
1087
|
-
const hasPriority = streamType < 48;
|
|
1088
|
-
const trackAlias = r.readVarInt();
|
|
1089
|
-
const groupId = r.readVarInt();
|
|
1090
|
-
let subgroupId = 0n;
|
|
1091
|
-
if (hasSubgroupField) {
|
|
1092
|
-
subgroupId = r.readVarInt();
|
|
1093
|
-
}
|
|
1094
|
-
let publisherPriority = 128;
|
|
1095
|
-
if (hasPriority) {
|
|
1096
|
-
publisherPriority = r.readUint8();
|
|
1097
|
-
}
|
|
1098
|
-
controller.enqueue({
|
|
1099
|
-
type: "subgroup_header",
|
|
1100
|
-
trackAlias,
|
|
1101
|
-
groupId,
|
|
1102
|
-
subgroupId,
|
|
1103
|
-
publisherPriority
|
|
1104
|
-
});
|
|
1105
|
-
headerEmitted = true;
|
|
1106
|
-
buffer = buffer.slice(r.offset);
|
|
1107
|
-
} catch (e) {
|
|
1108
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
1109
|
-
return;
|
|
1110
|
-
}
|
|
1111
|
-
controller.error(e);
|
|
1112
|
-
return;
|
|
1113
|
-
}
|
|
1114
|
-
}
|
|
1115
|
-
while (buffer.length > 0) {
|
|
1116
|
-
try {
|
|
1117
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(buffer);
|
|
1118
|
-
const delta = r.readVarInt();
|
|
1119
|
-
let objectId;
|
|
1120
|
-
if (firstObject) {
|
|
1121
|
-
objectId = delta;
|
|
1122
|
-
firstObject = false;
|
|
1123
|
-
} else {
|
|
1124
|
-
objectId = prevObjectId + 1n + delta;
|
|
1125
|
-
}
|
|
1126
|
-
const payloadLength = Number(r.readVarInt());
|
|
1127
|
-
const payload = payloadLength > 0 ? r.readBytes(payloadLength) : new Uint8Array(0);
|
|
1128
|
-
controller.enqueue({ type: "object", objectId, payloadLength, payload });
|
|
1129
|
-
buffer = buffer.slice(r.offset);
|
|
1130
|
-
prevObjectId = objectId;
|
|
1131
|
-
} catch (e) {
|
|
1132
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
1133
|
-
break;
|
|
1134
|
-
}
|
|
1135
|
-
controller.error(e);
|
|
1136
|
-
return;
|
|
1137
|
-
}
|
|
1138
|
-
}
|
|
1139
|
-
},
|
|
1140
|
-
flush(controller) {
|
|
1141
|
-
if (buffer.length > 0) {
|
|
1142
|
-
controller.error(new (0, _chunkFWISIR26cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
1143
|
-
}
|
|
1144
|
-
}
|
|
1145
|
-
});
|
|
1146
|
-
}
|
|
1147
|
-
function createFetchStreamDecoder() {
|
|
1148
|
-
let buffer = new Uint8Array(0);
|
|
1149
|
-
let headerEmitted = false;
|
|
1150
|
-
return new TransformStream({
|
|
1151
|
-
transform(chunk, controller) {
|
|
1152
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1153
|
-
newBuffer.set(buffer, 0);
|
|
1154
|
-
newBuffer.set(chunk, buffer.length);
|
|
1155
|
-
buffer = newBuffer;
|
|
1156
|
-
if (!headerEmitted) {
|
|
1157
|
-
try {
|
|
1158
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(buffer);
|
|
1159
|
-
const streamType = r.readVarInt();
|
|
1160
|
-
if (streamType !== FETCH_STREAM_TYPE) {
|
|
1161
|
-
controller.error(
|
|
1162
|
-
new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
1163
|
-
"CONSTRAINT_VIOLATION",
|
|
1164
|
-
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
1165
|
-
0
|
|
1166
|
-
)
|
|
1167
|
-
);
|
|
1168
|
-
return;
|
|
1169
|
-
}
|
|
1170
|
-
const requestId = r.readVarInt();
|
|
1171
|
-
controller.enqueue({ type: "fetch_header", requestId });
|
|
1172
|
-
headerEmitted = true;
|
|
1173
|
-
buffer = buffer.slice(r.offset);
|
|
1174
|
-
} catch (e) {
|
|
1175
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
1176
|
-
return;
|
|
1177
|
-
}
|
|
1178
|
-
controller.error(e);
|
|
1179
|
-
return;
|
|
1180
|
-
}
|
|
1181
|
-
}
|
|
1182
|
-
while (buffer.length > 0) {
|
|
1183
|
-
try {
|
|
1184
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(buffer);
|
|
1185
|
-
const flags = r.readUint8();
|
|
1186
|
-
const objectIdPresent = (flags & 4) !== 0;
|
|
1187
|
-
const groupIdPresent = (flags & 8) !== 0;
|
|
1188
|
-
const priorityPresent = (flags & 16) !== 0;
|
|
1189
|
-
const extensionsPresent = (flags & 32) !== 0;
|
|
1190
|
-
const subgroupEncoding = flags & 3;
|
|
1191
|
-
if (groupIdPresent) r.readVarInt();
|
|
1192
|
-
if (subgroupEncoding === 3) r.readVarInt();
|
|
1193
|
-
let objectId = 0n;
|
|
1194
|
-
if (objectIdPresent) objectId = r.readVarInt();
|
|
1195
|
-
if (priorityPresent) r.readUint8();
|
|
1196
|
-
if (extensionsPresent) {
|
|
1197
|
-
const extLen = Number(r.readVarInt());
|
|
1198
|
-
if (extLen > 0) r.readBytes(extLen);
|
|
1199
|
-
}
|
|
1200
|
-
const payloadLength = Number(r.readVarInt());
|
|
1201
|
-
const payload = payloadLength > 0 ? r.readBytes(payloadLength) : new Uint8Array(0);
|
|
1202
|
-
controller.enqueue({ type: "object", objectId, payloadLength, payload });
|
|
1203
|
-
buffer = buffer.slice(r.offset);
|
|
1204
|
-
} catch (e) {
|
|
1205
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
1206
|
-
break;
|
|
1207
|
-
}
|
|
1208
|
-
controller.error(e);
|
|
1209
|
-
return;
|
|
1210
|
-
}
|
|
1211
|
-
}
|
|
1212
|
-
},
|
|
1213
|
-
flush(controller) {
|
|
1214
|
-
if (buffer.length > 0) {
|
|
1215
|
-
controller.error(new (0, _chunkFWISIR26cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
1216
|
-
}
|
|
1217
|
-
}
|
|
1218
|
-
});
|
|
1219
|
-
}
|
|
1220
|
-
function createDataStreamDecoder() {
|
|
1221
|
-
let buffer = new Uint8Array(0);
|
|
1222
|
-
let inner = null;
|
|
1223
|
-
return new TransformStream({
|
|
1224
|
-
transform(chunk, controller) {
|
|
1225
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1226
|
-
newBuffer.set(buffer, 0);
|
|
1227
|
-
newBuffer.set(chunk, buffer.length);
|
|
1228
|
-
buffer = newBuffer;
|
|
1229
|
-
if (inner === null) {
|
|
1230
|
-
if (buffer.length === 0) return;
|
|
1231
|
-
const firstByte = buffer[0];
|
|
1232
|
-
if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
|
|
1233
|
-
const decoder = createSubgroupStreamDecoder();
|
|
1234
|
-
inner = decoder;
|
|
1235
|
-
} else if (firstByte === 5) {
|
|
1236
|
-
const decoder = createFetchStreamDecoder();
|
|
1237
|
-
inner = decoder;
|
|
1238
|
-
} else {
|
|
1239
|
-
controller.error(
|
|
1240
|
-
new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
1241
|
-
"CONSTRAINT_VIOLATION",
|
|
1242
|
-
`Unknown data stream type: 0x${firstByte.toString(16)}`,
|
|
1243
|
-
0
|
|
1244
|
-
)
|
|
1245
|
-
);
|
|
1246
|
-
return;
|
|
1247
|
-
}
|
|
1394
|
+
offset += result.bytesRead;
|
|
1248
1395
|
}
|
|
1249
1396
|
},
|
|
1250
1397
|
flush(controller) {
|
|
1251
|
-
if (buffer.length
|
|
1252
|
-
const firstByte = buffer[0];
|
|
1253
|
-
let result;
|
|
1254
|
-
if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
|
|
1255
|
-
result = decodeSubgroupStream(buffer);
|
|
1256
|
-
} else if (firstByte === 5) {
|
|
1257
|
-
result = decodeFetchStream(buffer);
|
|
1258
|
-
} else {
|
|
1398
|
+
if (offset < buffer.length) {
|
|
1259
1399
|
controller.error(
|
|
1260
|
-
new (0,
|
|
1261
|
-
"CONSTRAINT_VIOLATION",
|
|
1262
|
-
`Unknown data stream type: 0x${firstByte.toString(16)}`,
|
|
1263
|
-
0
|
|
1264
|
-
)
|
|
1400
|
+
new (0, _chunkRUPCJTC3cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete message data", 0)
|
|
1265
1401
|
);
|
|
1266
|
-
return;
|
|
1267
|
-
}
|
|
1268
|
-
if (!result.ok) {
|
|
1269
|
-
controller.error(result.error);
|
|
1270
|
-
return;
|
|
1271
|
-
}
|
|
1272
|
-
const stream = result.value;
|
|
1273
|
-
if (stream.type === "subgroup") {
|
|
1274
|
-
controller.enqueue({
|
|
1275
|
-
type: "subgroup_header",
|
|
1276
|
-
trackAlias: stream.trackAlias,
|
|
1277
|
-
groupId: stream.groupId,
|
|
1278
|
-
subgroupId: stream.subgroupId,
|
|
1279
|
-
publisherPriority: stream.publisherPriority
|
|
1280
|
-
});
|
|
1281
|
-
for (const obj of stream.objects) {
|
|
1282
|
-
controller.enqueue(obj);
|
|
1283
|
-
}
|
|
1284
|
-
} else if (stream.type === "fetch") {
|
|
1285
|
-
controller.enqueue({
|
|
1286
|
-
type: "fetch_header",
|
|
1287
|
-
requestId: stream.requestId
|
|
1288
|
-
});
|
|
1289
|
-
for (const obj of stream.objects) {
|
|
1290
|
-
controller.enqueue(obj);
|
|
1291
|
-
}
|
|
1292
1402
|
}
|
|
1293
1403
|
}
|
|
1294
1404
|
});
|
|
@@ -1358,4 +1468,4 @@ function createDraft16Codec() {
|
|
|
1358
1468
|
|
|
1359
1469
|
|
|
1360
1470
|
|
|
1361
|
-
exports.MSG_REQUEST_UPDATE = MSG_REQUEST_UPDATE; exports.MSG_SUBSCRIBE = MSG_SUBSCRIBE; exports.MSG_SUBSCRIBE_OK = MSG_SUBSCRIBE_OK; exports.MSG_REQUEST_ERROR = MSG_REQUEST_ERROR; exports.MSG_PUBLISH_NAMESPACE = MSG_PUBLISH_NAMESPACE; exports.MSG_REQUEST_OK = MSG_REQUEST_OK; exports.MSG_NAMESPACE = MSG_NAMESPACE; exports.MSG_PUBLISH_NAMESPACE_DONE = MSG_PUBLISH_NAMESPACE_DONE; exports.MSG_UNSUBSCRIBE = MSG_UNSUBSCRIBE; exports.MSG_PUBLISH_DONE = MSG_PUBLISH_DONE; exports.MSG_PUBLISH_NAMESPACE_CANCEL = MSG_PUBLISH_NAMESPACE_CANCEL; exports.MSG_TRACK_STATUS = MSG_TRACK_STATUS; exports.MSG_NAMESPACE_DONE = MSG_NAMESPACE_DONE; exports.MSG_GOAWAY = MSG_GOAWAY; exports.MSG_SUBSCRIBE_NAMESPACE = MSG_SUBSCRIBE_NAMESPACE; exports.MSG_MAX_REQUEST_ID = MSG_MAX_REQUEST_ID; exports.MSG_FETCH = MSG_FETCH; exports.MSG_FETCH_CANCEL = MSG_FETCH_CANCEL; exports.MSG_FETCH_OK = MSG_FETCH_OK; exports.MSG_REQUESTS_BLOCKED = MSG_REQUESTS_BLOCKED; exports.MSG_PUBLISH = MSG_PUBLISH; exports.MSG_PUBLISH_OK = MSG_PUBLISH_OK; exports.MSG_CLIENT_SETUP = MSG_CLIENT_SETUP; exports.MSG_SERVER_SETUP = MSG_SERVER_SETUP; exports.SETUP_PARAM_PATH = SETUP_PARAM_PATH; exports.SETUP_PARAM_MAX_REQUEST_ID = SETUP_PARAM_MAX_REQUEST_ID; exports.SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE = SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE; exports.SETUP_PARAM_AUTHORITY = SETUP_PARAM_AUTHORITY; exports.SETUP_PARAM_MOQT_IMPLEMENTATION = SETUP_PARAM_MOQT_IMPLEMENTATION; exports.MESSAGE_TYPE_MAP = MESSAGE_TYPE_MAP; exports.MESSAGE_ID_MAP = MESSAGE_ID_MAP; exports.
|
|
1471
|
+
exports.MSG_REQUEST_UPDATE = MSG_REQUEST_UPDATE; exports.MSG_SUBSCRIBE = MSG_SUBSCRIBE; exports.MSG_SUBSCRIBE_OK = MSG_SUBSCRIBE_OK; exports.MSG_REQUEST_ERROR = MSG_REQUEST_ERROR; exports.MSG_PUBLISH_NAMESPACE = MSG_PUBLISH_NAMESPACE; exports.MSG_REQUEST_OK = MSG_REQUEST_OK; exports.MSG_NAMESPACE = MSG_NAMESPACE; exports.MSG_PUBLISH_NAMESPACE_DONE = MSG_PUBLISH_NAMESPACE_DONE; exports.MSG_UNSUBSCRIBE = MSG_UNSUBSCRIBE; exports.MSG_PUBLISH_DONE = MSG_PUBLISH_DONE; exports.MSG_PUBLISH_NAMESPACE_CANCEL = MSG_PUBLISH_NAMESPACE_CANCEL; exports.MSG_TRACK_STATUS = MSG_TRACK_STATUS; exports.MSG_NAMESPACE_DONE = MSG_NAMESPACE_DONE; exports.MSG_GOAWAY = MSG_GOAWAY; exports.MSG_SUBSCRIBE_NAMESPACE = MSG_SUBSCRIBE_NAMESPACE; exports.MSG_MAX_REQUEST_ID = MSG_MAX_REQUEST_ID; exports.MSG_FETCH = MSG_FETCH; exports.MSG_FETCH_CANCEL = MSG_FETCH_CANCEL; exports.MSG_FETCH_OK = MSG_FETCH_OK; exports.MSG_REQUESTS_BLOCKED = MSG_REQUESTS_BLOCKED; exports.MSG_PUBLISH = MSG_PUBLISH; exports.MSG_PUBLISH_OK = MSG_PUBLISH_OK; exports.MSG_CLIENT_SETUP = MSG_CLIENT_SETUP; exports.MSG_SERVER_SETUP = MSG_SERVER_SETUP; exports.SETUP_PARAM_PATH = SETUP_PARAM_PATH; exports.SETUP_PARAM_MAX_REQUEST_ID = SETUP_PARAM_MAX_REQUEST_ID; exports.SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE = SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE; exports.SETUP_PARAM_AUTHORITY = SETUP_PARAM_AUTHORITY; exports.SETUP_PARAM_MOQT_IMPLEMENTATION = SETUP_PARAM_MOQT_IMPLEMENTATION; exports.MESSAGE_TYPE_MAP = MESSAGE_TYPE_MAP; exports.MESSAGE_ID_MAP = MESSAGE_ID_MAP; exports.encodeSubgroupStream = encodeSubgroupStream; exports.encodeDatagram = encodeDatagram; exports.encodeFetchStream = encodeFetchStream; exports.decodeSubgroupStream = decodeSubgroupStream; exports.decodeDatagram = decodeDatagram; exports.decodeFetchStream = decodeFetchStream; exports.decodeDataStream = decodeDataStream; exports.createSubgroupStreamDecoder = createSubgroupStreamDecoder; exports.createFetchStreamDecoder = createFetchStreamDecoder; exports.createDataStreamDecoder = createDataStreamDecoder; exports.encodeMessage = encodeMessage; exports.decodeMessage = decodeMessage; exports.createStreamDecoder = createStreamDecoder; exports.createDraft16Codec = createDraft16Codec;
|