@moqtap/codec 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +100 -99
- package/dist/{chunk-RZHAPEXO.js → chunk-2A57DRXV.js} +36 -10
- package/dist/{chunk-PJRA2TQ5.js → chunk-2UTVXWFF.js} +388 -254
- package/dist/{chunk-IV2H5CFI.cjs → chunk-3XKO6PCR.cjs} +461 -322
- package/dist/{chunk-RVJAGE4S.cjs → chunk-4BDEU3D4.cjs} +415 -304
- package/dist/{chunk-XUUCOLWU.cjs → chunk-4HBKHNU2.cjs} +374 -329
- package/dist/{chunk-4RIXXEII.js → chunk-4IVZZOY3.js} +451 -312
- package/dist/{chunk-ZSPO2GF2.cjs → chunk-5O764MBD.cjs} +1320 -842
- package/dist/chunk-7KBAWOBA.js +1212 -0
- package/dist/{chunk-JSQM2MG3.js → chunk-7QOPNSDF.js} +44 -12
- package/dist/{chunk-SYHW3FLI.cjs → chunk-7RE6KSIY.cjs} +28 -8
- package/dist/{chunk-YG5KJESI.js → chunk-AY6IAHUM.js} +28 -8
- package/dist/{chunk-EFM5T7OM.js → chunk-BLQDWOSG.js} +36 -10
- package/dist/{chunk-KFTCU2P6.js → chunk-C6KUWLQC.js} +0 -3
- package/dist/{chunk-UYXTY6ZQ.cjs → chunk-E65QKRSN.cjs} +20 -12
- package/dist/{chunk-BISI45MN.cjs → chunk-EAHE3IOG.cjs} +44 -12
- package/dist/{chunk-IV2HRJVT.js → chunk-GCBFHZW6.js} +405 -294
- package/dist/{chunk-GXEW4COZ.cjs → chunk-H5NSL4MO.cjs} +36 -10
- package/dist/chunk-HZHSO7EW.cjs +1212 -0
- package/dist/{chunk-BPNL5YFQ.cjs → chunk-IILNSDEQ.cjs} +74 -46
- package/dist/{chunk-4XYGE53S.cjs → chunk-J3XCPBW3.cjs} +36 -10
- package/dist/{chunk-6AEHWULA.cjs → chunk-JKOEJZ5B.cjs} +28 -8
- package/dist/{chunk-FWISIR26.cjs → chunk-JL3NEW3O.cjs} +47 -4
- package/dist/{chunk-G7GI7LJA.js → chunk-LORZMJJB.js} +36 -10
- package/dist/{chunk-DUBCL3WF.cjs → chunk-LV5C6MEC.cjs} +36 -10
- package/dist/{chunk-ENURAVHI.cjs → chunk-MYXAD5JC.cjs} +44 -12
- package/dist/{chunk-FXZ2MYKJ.js → chunk-MZ7HUCGJ.js} +20 -12
- package/dist/{chunk-RWQ43Z4F.cjs → chunk-MZ7VU52O.cjs} +0 -3
- package/dist/{chunk-G26SJ6XS.cjs → chunk-OKG2HT25.cjs} +1193 -928
- package/dist/{chunk-IBVM4DMJ.cjs → chunk-PKEOQSSZ.cjs} +374 -329
- package/dist/{chunk-LH4NTURO.js → chunk-Q46ZURKX.js} +989 -602
- package/dist/{chunk-UR6JKS56.js → chunk-Q7IGWV3P.js} +41 -9
- package/dist/{chunk-ST24APEO.js → chunk-RW4UG7CN.js} +751 -682
- package/dist/{chunk-DWK5ZQZ4.js → chunk-RZTLQAKF.js} +28 -8
- package/dist/{chunk-UNS34PTA.cjs → chunk-S6IPIN66.cjs} +44 -12
- package/dist/{chunk-K4OLITS2.cjs → chunk-SDWRXXOO.cjs} +401 -267
- package/dist/{chunk-CXDHOMHG.js → chunk-SHMA4PBY.js} +476 -431
- package/dist/{chunk-U2B3B42P.js → chunk-U3ZVLT5L.js} +1176 -540
- package/dist/{chunk-HSVYF6XX.cjs → chunk-UJU63EFY.cjs} +1524 -1137
- package/dist/{chunk-A27S7HW7.js → chunk-VOU7PNHI.js} +47 -4
- package/dist/{chunk-E6E3NQYU.js → chunk-WRHGCVYN.js} +44 -12
- package/dist/chunk-XNWYLVGU.cjs +1854 -0
- package/dist/{chunk-NUX5BHWO.js → chunk-XS77RBY7.js} +1160 -895
- package/dist/{chunk-4YJANAXU.cjs → chunk-XZE5R57R.cjs} +829 -760
- package/dist/{chunk-NGVE2RZT.js → chunk-Y6KCSM3V.js} +476 -431
- package/dist/{chunk-TLYNOOQP.cjs → chunk-YTPZZI2M.cjs} +41 -9
- package/dist/{chunk-7DUBLRXC.js → chunk-YWRCSQBA.js} +44 -12
- package/dist/{chunk-MFAP7R6L.js → chunk-Z3VKP3PJ.js} +70 -42
- package/dist/{chunk-ZBKE2QRQ.js → chunk-Z6U26IRI.js} +1107 -629
- package/dist/codec-25u4_1HS.d.ts +35 -0
- package/dist/codec-3Ppy_5Gd.d.ts +23 -0
- package/dist/codec-BB0U8MF2.d.cts +34 -0
- package/dist/codec-BHHfBTnV.d.ts +34 -0
- package/dist/codec-BN6jk0Td.d.cts +30 -0
- package/dist/codec-BU0gaSZm.d.ts +29 -0
- package/dist/codec-C-Yk2RNa.d.ts +30 -0
- package/dist/codec-CFWQY9Lj.d.cts +18 -0
- package/dist/codec-COy4uuPO.d.cts +29 -0
- package/dist/codec-CewFCsEy.d.ts +18 -0
- package/dist/codec-Ck7ZwFF1.d.cts +35 -0
- package/dist/codec-D2QVSH9D.d.ts +30 -0
- package/dist/codec-DDUBJGn0.d.cts +23 -0
- package/dist/codec-DNfml-se.d.ts +27 -0
- package/dist/codec-DoOGjjDq.d.cts +29 -0
- package/dist/codec-J7ekOSMc.d.ts +29 -0
- package/dist/codec-R9TJCq-E.d.cts +31 -0
- package/dist/codec-ZwV-Njt6.d.ts +23 -0
- package/dist/codec-j819z_hL.d.cts +23 -0
- package/dist/codec-w8z2j_uo.d.cts +27 -0
- package/dist/codec-wtt6WF1K.d.ts +31 -0
- package/dist/codec-z6_2PSzi.d.cts +30 -0
- package/dist/draft10-session.cjs +2 -2
- package/dist/draft10-session.d.cts +6 -6
- package/dist/draft10-session.d.ts +6 -6
- package/dist/draft10-session.js +1 -1
- package/dist/draft10.cjs +8 -4
- package/dist/draft10.d.cts +23 -11
- package/dist/draft10.d.ts +23 -11
- package/dist/draft10.js +16 -12
- package/dist/draft11-session.cjs +2 -2
- package/dist/draft11-session.d.cts +6 -6
- package/dist/draft11-session.d.ts +6 -6
- package/dist/draft11-session.js +1 -1
- package/dist/draft11.cjs +8 -4
- package/dist/draft11.d.cts +21 -11
- package/dist/draft11.d.ts +21 -11
- package/dist/draft11.js +16 -12
- package/dist/draft12-session.cjs +2 -2
- package/dist/draft12-session.d.cts +6 -6
- package/dist/draft12-session.d.ts +6 -6
- package/dist/draft12-session.js +1 -1
- package/dist/draft12.cjs +8 -4
- package/dist/draft12.d.cts +23 -13
- package/dist/draft12.d.ts +23 -13
- package/dist/draft12.js +16 -12
- package/dist/draft13-session.cjs +2 -2
- package/dist/draft13-session.d.cts +6 -6
- package/dist/draft13-session.d.ts +6 -6
- package/dist/draft13-session.js +1 -1
- package/dist/draft13.cjs +8 -4
- package/dist/draft13.d.cts +23 -13
- package/dist/draft13.d.ts +23 -13
- package/dist/draft13.js +16 -12
- package/dist/draft14-session.cjs +2 -2
- package/dist/draft14-session.d.cts +6 -6
- package/dist/draft14-session.d.ts +6 -6
- package/dist/draft14-session.js +1 -1
- package/dist/draft14.cjs +14 -4
- package/dist/draft14.d.cts +67 -11
- package/dist/draft14.d.ts +67 -11
- package/dist/draft14.js +13 -3
- package/dist/draft15-session.cjs +2 -2
- package/dist/draft15-session.d.cts +6 -6
- package/dist/draft15-session.d.ts +6 -6
- package/dist/draft15-session.js +1 -1
- package/dist/draft15.cjs +8 -4
- package/dist/draft15.d.cts +56 -11
- package/dist/draft15.d.ts +56 -11
- package/dist/draft15.js +16 -12
- package/dist/draft16-session.cjs +2 -2
- package/dist/draft16-session.d.cts +6 -6
- package/dist/draft16-session.d.ts +6 -6
- package/dist/draft16-session.js +1 -1
- package/dist/draft16.cjs +8 -4
- package/dist/draft16.d.cts +45 -11
- package/dist/draft16.d.ts +45 -11
- package/dist/draft16.js +16 -12
- package/dist/draft17-session.cjs +2 -2
- package/dist/draft17-session.d.cts +7 -7
- package/dist/draft17-session.d.ts +7 -7
- package/dist/draft17-session.js +1 -1
- package/dist/draft17.cjs +8 -4
- package/dist/draft17.d.cts +21 -8
- package/dist/draft17.d.ts +21 -8
- package/dist/draft17.js +16 -12
- package/dist/draft7-session.cjs +3 -3
- package/dist/draft7-session.d.cts +6 -5
- package/dist/draft7-session.d.ts +6 -5
- package/dist/draft7-session.js +2 -2
- package/dist/draft7.cjs +83 -14
- package/dist/draft7.d.cts +59 -64
- package/dist/draft7.d.ts +59 -64
- package/dist/draft7.js +89 -20
- package/dist/draft8-session.cjs +2 -2
- package/dist/draft8-session.d.cts +6 -6
- package/dist/draft8-session.d.ts +6 -6
- package/dist/draft8-session.js +1 -1
- package/dist/draft8.cjs +8 -4
- package/dist/draft8.d.cts +23 -11
- package/dist/draft8.d.ts +23 -11
- package/dist/draft8.js +7 -3
- package/dist/draft9-session.cjs +2 -2
- package/dist/draft9-session.d.cts +6 -6
- package/dist/draft9-session.d.ts +6 -6
- package/dist/draft9-session.js +1 -1
- package/dist/draft9.cjs +8 -4
- package/dist/draft9.d.cts +23 -11
- package/dist/draft9.d.ts +23 -11
- package/dist/draft9.js +7 -3
- package/dist/index.cjs +52 -73
- package/dist/index.d.cts +41 -60
- package/dist/index.d.ts +55 -82
- package/dist/index.js +89 -93
- package/dist/{session-types-CJIFbTPd.d.ts → session-types-C7UONex5.d.cts} +28 -27
- package/dist/{session-types-Cbq8IGCP.d.cts → session-types-X-IYEGoG.d.ts} +28 -27
- package/dist/session.cjs +47 -14
- package/dist/session.d.cts +28 -9
- package/dist/session.d.ts +32 -9
- package/dist/session.js +59 -32
- package/dist/{types-4VxSL2Ho.d.ts → types--Q7_DcvP.d.cts} +49 -39
- package/dist/{types-4VxSL2Ho.d.cts → types--Q7_DcvP.d.ts} +49 -39
- package/dist/{types-Cw4WE9dh.d.ts → types-0IWbU9Z_.d.cts} +44 -36
- package/dist/{types-Cw4WE9dh.d.cts → types-0IWbU9Z_.d.ts} +44 -36
- package/dist/{types-D5gNQiDj.d.ts → types-B3g5G9KP.d.cts} +44 -36
- package/dist/{types-D5gNQiDj.d.cts → types-B3g5G9KP.d.ts} +44 -36
- package/dist/{types-B2afJZM-.d.cts → types-BFpFNM_m.d.cts} +60 -32
- package/dist/{types-B2afJZM-.d.ts → types-BFpFNM_m.d.ts} +60 -32
- package/dist/{types-ERexTpT8.d.ts → types-Br7fm2mf.d.cts} +51 -26
- package/dist/{types-ERexTpT8.d.cts → types-Br7fm2mf.d.ts} +51 -26
- package/dist/{types-Bg6QYNVt.d.cts → types-C2qKTRR_.d.cts} +55 -45
- package/dist/{types-Bg6QYNVt.d.ts → types-C2qKTRR_.d.ts} +55 -45
- package/dist/{types-BTFeKYCb.d.ts → types-DEaypVsD.d.cts} +133 -58
- package/dist/{types-BTFeKYCb.d.cts → types-DEaypVsD.d.ts} +133 -58
- package/dist/types-Dl4IaAHR.d.cts +282 -0
- package/dist/types-Dl4IaAHR.d.ts +282 -0
- package/dist/{types-C_1HrqBl.d.cts → types-DrQpTW1G.d.cts} +63 -50
- package/dist/{types-C_1HrqBl.d.ts → types-DrQpTW1G.d.ts} +63 -50
- package/dist/types-DuIO7cWK.d.cts +25 -0
- package/dist/types-DuIO7cWK.d.ts +25 -0
- package/dist/{types-DqCDFqgB.d.ts → types-DuxfOYiO.d.cts} +50 -31
- package/dist/{types-DqCDFqgB.d.cts → types-DuxfOYiO.d.ts} +50 -31
- package/dist/{types-r-CasCf1.d.cts → types-jV1yDDBA.d.cts} +43 -36
- package/dist/{types-r-CasCf1.d.ts → types-jV1yDDBA.d.ts} +43 -36
- package/package.json +15 -15
- package/src/core/buffer-reader.ts +69 -53
- package/src/core/buffer-writer.ts +55 -46
- package/src/core/errors.ts +1 -1
- package/src/core/hex.ts +21 -17
- package/src/core/session-types.ts +61 -59
- package/src/core/types.ts +18 -361
- package/src/drafts/draft07/codec.ts +1058 -933
- package/src/drafts/draft07/data-streams.ts +116 -116
- package/src/drafts/draft07/index.ts +124 -89
- package/src/drafts/draft07/messages.ts +76 -42
- package/src/drafts/draft07/rules.ts +107 -101
- package/src/drafts/draft07/session-fsm.ts +315 -287
- package/src/drafts/draft07/session.ts +8 -6
- package/src/drafts/draft07/types.ts +406 -72
- package/src/drafts/draft07/varint.ts +40 -12
- package/src/drafts/draft08/codec.ts +985 -944
- package/src/drafts/draft08/data-streams.ts +178 -174
- package/src/drafts/draft08/index.ts +10 -9
- package/src/drafts/draft08/messages.ts +59 -59
- package/src/drafts/draft08/rules.ts +73 -73
- package/src/drafts/draft08/session-fsm.ts +335 -303
- package/src/drafts/draft08/session.ts +6 -7
- package/src/drafts/draft08/types.ts +380 -384
- package/src/drafts/draft09/codec.ts +977 -936
- package/src/drafts/draft09/data-streams.ts +163 -159
- package/src/drafts/draft09/index.ts +10 -9
- package/src/drafts/draft09/messages.ts +59 -59
- package/src/drafts/draft09/rules.ts +73 -73
- package/src/drafts/draft09/session-fsm.ts +335 -303
- package/src/drafts/draft09/session.ts +6 -7
- package/src/drafts/draft09/types.ts +380 -384
- package/src/drafts/draft10/codec.ts +977 -936
- package/src/drafts/draft10/data-streams.ts +163 -159
- package/src/drafts/draft10/index.ts +10 -9
- package/src/drafts/draft10/messages.ts +59 -59
- package/src/drafts/draft10/rules.ts +73 -73
- package/src/drafts/draft10/session-fsm.ts +335 -303
- package/src/drafts/draft10/session.ts +6 -7
- package/src/drafts/draft10/types.ts +380 -384
- package/src/drafts/draft11/codec.ts +1054 -979
- package/src/drafts/draft11/data-streams.ts +189 -142
- package/src/drafts/draft11/index.ts +10 -9
- package/src/drafts/draft11/messages.ts +60 -59
- package/src/drafts/draft11/rules.ts +73 -73
- package/src/drafts/draft11/session-fsm.ts +359 -333
- package/src/drafts/draft11/session.ts +6 -7
- package/src/drafts/draft11/types.ts +385 -381
- package/src/drafts/draft12/codec.ts +1178 -1113
- package/src/drafts/draft12/data-streams.ts +192 -143
- package/src/drafts/draft12/index.ts +10 -9
- package/src/drafts/draft12/messages.ts +67 -66
- package/src/drafts/draft12/rules.ts +79 -79
- package/src/drafts/draft12/session-fsm.ts +384 -358
- package/src/drafts/draft12/session.ts +6 -7
- package/src/drafts/draft12/types.ts +424 -419
- package/src/drafts/draft13/codec.ts +1296 -1197
- package/src/drafts/draft13/data-streams.ts +194 -143
- package/src/drafts/draft13/index.ts +10 -9
- package/src/drafts/draft13/messages.ts +73 -68
- package/src/drafts/draft13/rules.ts +81 -81
- package/src/drafts/draft13/session-fsm.ts +392 -366
- package/src/drafts/draft13/session.ts +6 -7
- package/src/drafts/draft13/types.ts +447 -438
- package/src/drafts/draft14/codec.ts +1347 -1034
- package/src/drafts/draft14/data-streams.ts +429 -396
- package/src/drafts/draft14/index.ts +17 -9
- package/src/drafts/draft14/messages.ts +65 -65
- package/src/drafts/draft14/rules.ts +81 -81
- package/src/drafts/draft14/session-fsm.ts +415 -405
- package/src/drafts/draft14/session.ts +6 -7
- package/src/drafts/draft14/types.ts +451 -381
- package/src/drafts/draft15/codec.ts +1138 -969
- package/src/drafts/draft15/data-streams.ts +428 -364
- package/src/drafts/draft15/index.ts +10 -9
- package/src/drafts/draft15/messages.ts +54 -53
- package/src/drafts/draft15/rules.ts +67 -67
- package/src/drafts/draft15/session-fsm.ts +319 -299
- package/src/drafts/draft15/session.ts +6 -7
- package/src/drafts/draft15/types.ts +357 -339
- package/src/drafts/draft16/codec.ts +1242 -957
- package/src/drafts/draft16/data-streams.ts +433 -371
- package/src/drafts/draft16/index.ts +10 -9
- package/src/drafts/draft16/messages.ts +56 -55
- package/src/drafts/draft16/rules.ts +69 -69
- package/src/drafts/draft16/session-fsm.ts +319 -299
- package/src/drafts/draft16/session.ts +6 -7
- package/src/drafts/draft16/types.ts +386 -357
- package/src/drafts/draft17/codec.ts +1209 -962
- package/src/drafts/draft17/data-streams.ts +593 -366
- package/src/drafts/draft17/index.ts +9 -7
- package/src/drafts/draft17/messages.ts +43 -42
- package/src/drafts/draft17/rules.ts +58 -58
- package/src/drafts/draft17/session-fsm.ts +248 -216
- package/src/drafts/draft17/session.ts +5 -5
- package/src/drafts/draft17/types.ts +337 -313
- package/src/index.ts +85 -274
- package/src/session.ts +62 -23
- package/dist/chunk-7IVGHMKJ.cjs +0 -866
- package/dist/chunk-FUFTMAQD.cjs +0 -1218
- package/dist/chunk-TMNGRIPL.js +0 -866
- package/dist/codec-95k8CAu5.d.cts +0 -35
- package/dist/codec-AFuOxfsO.d.ts +0 -60
- package/dist/codec-B-UJ5Iow.d.cts +0 -75
- package/dist/codec-BC5jfvMb.d.ts +0 -35
- package/dist/codec-BECYPfY8.d.ts +0 -35
- package/dist/codec-BsPU1vNC.d.ts +0 -39
- package/dist/codec-BvpuF-6u.d.cts +0 -39
- package/dist/codec-C8jZI5Cx.d.cts +0 -39
- package/dist/codec-CAevkgf5.d.cts +0 -33
- package/dist/codec-CSUqCrRs.d.ts +0 -39
- package/dist/codec-C_HMXNK_.d.ts +0 -33
- package/dist/codec-CpuvYTSV.d.cts +0 -86
- package/dist/codec-D0x8-SCw.d.cts +0 -35
- 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 +0 -29
- 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 +0 -34
- 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 +0 -33
- 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
- package/dist/types-QNXoxC9Y.d.cts +0 -236
- package/dist/types-QNXoxC9Y.d.ts +0 -236
- package/src/drafts/draft07/announce-fsm.ts +0 -2
- package/src/drafts/draft07/parameters.ts +0 -12
- package/src/drafts/draft07/subscription-fsm.ts +0 -3
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkJL3NEW3Ocjs = require('./chunk-JL3NEW3O.cjs');
|
|
6
8
|
|
|
7
9
|
// src/drafts/draft17/messages.ts
|
|
8
10
|
var MSG_REQUEST_UPDATE = 0x02n;
|
|
@@ -24,6 +26,7 @@ var MSG_PUBLISH = 0x1dn;
|
|
|
24
26
|
var MSG_PUBLISH_OK = 0x1en;
|
|
25
27
|
var MSG_SETUP = 0x2f00n;
|
|
26
28
|
var SETUP_OPT_PATH = 0x01n;
|
|
29
|
+
var SETUP_OPT_AUTHORIZATION_TOKEN = 0x03n;
|
|
27
30
|
var SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE = 0x04n;
|
|
28
31
|
var SETUP_OPT_AUTHORITY = 0x05n;
|
|
29
32
|
var SETUP_OPT_MOQT_IMPLEMENTATION = 0x07n;
|
|
@@ -51,268 +54,1261 @@ var MESSAGE_ID_MAP = new Map(
|
|
|
51
54
|
[...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
|
|
52
55
|
);
|
|
53
56
|
|
|
54
|
-
// src/drafts/draft17/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
// src/drafts/draft17/data-streams.ts
|
|
58
|
+
var FETCH_STREAM_TYPE = 0x05n;
|
|
59
|
+
var OBJPROP_PRIOR_GROUP_ID_GAP = 0x3cn;
|
|
60
|
+
var OBJPROP_PRIOR_OBJECT_ID_GAP = 0x3en;
|
|
61
|
+
var KNOWN_OBJ_PROPS = /* @__PURE__ */ new Map([
|
|
62
|
+
[OBJPROP_PRIOR_OBJECT_ID_GAP, "prior_object_id_gap"],
|
|
63
|
+
[OBJPROP_PRIOR_GROUP_ID_GAP, "prior_group_id_gap"]
|
|
64
|
+
]);
|
|
65
|
+
function decodeObjectProperties(r, propsLength) {
|
|
66
|
+
const endOff = r.offset + propsLength;
|
|
67
|
+
const props = {};
|
|
68
|
+
let prevType = 0n;
|
|
69
|
+
while (r.offset < endOff) {
|
|
70
|
+
const delta = r.readVarInt();
|
|
71
|
+
const propType = prevType + delta;
|
|
72
|
+
prevType = propType;
|
|
73
|
+
if (propType % 2n === 0n) {
|
|
74
|
+
const value = r.readVarInt();
|
|
75
|
+
const name = _nullishCoalesce(KNOWN_OBJ_PROPS.get(propType), () => ( `0x${propType.toString(16)}`));
|
|
76
|
+
props[name] = value;
|
|
77
|
+
} else {
|
|
78
|
+
const length = Number(r.readVarInt());
|
|
79
|
+
r.readBytes(length);
|
|
80
|
+
}
|
|
59
81
|
}
|
|
60
|
-
return
|
|
82
|
+
return props;
|
|
61
83
|
}
|
|
62
|
-
function
|
|
63
|
-
const
|
|
64
|
-
for (
|
|
65
|
-
|
|
84
|
+
function encodeObjectProperties(props, w) {
|
|
85
|
+
const reverseMap = /* @__PURE__ */ new Map();
|
|
86
|
+
for (const [id, name] of KNOWN_OBJ_PROPS) {
|
|
87
|
+
reverseMap.set(name, id);
|
|
66
88
|
}
|
|
67
|
-
return bytes;
|
|
68
|
-
}
|
|
69
|
-
function encodeSetupOptions(opts, writer) {
|
|
70
89
|
const entries = [];
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const encoded = new TextEncoder().encode(opts.path);
|
|
76
|
-
w.writeVarInt(BigInt(encoded.byteLength));
|
|
77
|
-
w.writeBytes(encoded);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
if (opts.max_auth_token_cache_size !== void 0) {
|
|
82
|
-
entries.push({
|
|
83
|
-
type: SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE,
|
|
84
|
-
encode: (w) => w.writeVarInt(opts.max_auth_token_cache_size)
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
if (opts.authority !== void 0) {
|
|
88
|
-
entries.push({
|
|
89
|
-
type: SETUP_OPT_AUTHORITY,
|
|
90
|
-
encode: (w) => {
|
|
91
|
-
const encoded = new TextEncoder().encode(opts.authority);
|
|
92
|
-
w.writeVarInt(BigInt(encoded.byteLength));
|
|
93
|
-
w.writeBytes(encoded);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
if (opts.moqt_implementation !== void 0) {
|
|
98
|
-
entries.push({
|
|
99
|
-
type: SETUP_OPT_MOQT_IMPLEMENTATION,
|
|
100
|
-
encode: (w) => {
|
|
101
|
-
const encoded = new TextEncoder().encode(opts.moqt_implementation);
|
|
102
|
-
w.writeVarInt(BigInt(encoded.byteLength));
|
|
103
|
-
w.writeBytes(encoded);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
if (opts.unknown) {
|
|
108
|
-
for (const u of opts.unknown) {
|
|
109
|
-
const id = BigInt(u.id);
|
|
110
|
-
entries.push({
|
|
111
|
-
type: id,
|
|
112
|
-
encode: (w) => {
|
|
113
|
-
if (id % 2n === 0n) {
|
|
114
|
-
const raw = hexToBytes(u.raw_hex);
|
|
115
|
-
const tmpReader = new (0, _chunkFWISIR26cjs.BufferReader)(raw);
|
|
116
|
-
w.writeVarInt(tmpReader.readVarInt());
|
|
117
|
-
} else {
|
|
118
|
-
const raw = hexToBytes(u.raw_hex);
|
|
119
|
-
w.writeVarInt(BigInt(raw.byteLength));
|
|
120
|
-
w.writeBytes(raw);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
});
|
|
90
|
+
for (const [name, value] of Object.entries(props)) {
|
|
91
|
+
const typeId = reverseMap.get(name);
|
|
92
|
+
if (typeId !== void 0) {
|
|
93
|
+
entries.push({ type: typeId, value });
|
|
124
94
|
}
|
|
125
95
|
}
|
|
126
96
|
entries.sort((a, b) => a.type < b.type ? -1 : a.type > b.type ? 1 : 0);
|
|
127
97
|
let prevType = 0n;
|
|
128
98
|
for (const entry of entries) {
|
|
129
|
-
|
|
130
|
-
entry.
|
|
99
|
+
w.writeVarInt(entry.type - prevType);
|
|
100
|
+
w.writeVarInt(entry.value);
|
|
131
101
|
prevType = entry.type;
|
|
132
102
|
}
|
|
133
103
|
}
|
|
134
|
-
function
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
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${optType.toString(16)}`,
|
|
152
|
-
length: raw.byteLength,
|
|
153
|
-
raw_hex: bytesToHex(raw)
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
} else {
|
|
157
|
-
const length = Number(reader.readVarInt());
|
|
158
|
-
const bytes = reader.readBytes(length);
|
|
159
|
-
if (optType === SETUP_OPT_PATH) {
|
|
160
|
-
result.path = new TextDecoder().decode(bytes);
|
|
161
|
-
} else if (optType === SETUP_OPT_AUTHORITY) {
|
|
162
|
-
result.authority = new TextDecoder().decode(bytes);
|
|
163
|
-
} else if (optType === SETUP_OPT_MOQT_IMPLEMENTATION) {
|
|
164
|
-
result.moqt_implementation = new TextDecoder().decode(bytes);
|
|
165
|
-
} else {
|
|
166
|
-
unknown.push({ id: `0x${optType.toString(16)}`, length, raw_hex: bytesToHex(bytes) });
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
if (unknown.length > 0) result.unknown = unknown;
|
|
171
|
-
return result;
|
|
172
|
-
}
|
|
173
|
-
var PARAM_EXPIRES = 0x08n;
|
|
174
|
-
var PARAM_LARGEST_OBJECT = 0x09n;
|
|
175
|
-
var PARAM_SUBSCRIBER_PRIORITY = 0x20n;
|
|
176
|
-
var PARAM_SUBSCRIPTION_FILTER = 0x21n;
|
|
177
|
-
var PARAM_GROUP_ORDER = 0x22n;
|
|
178
|
-
function encodeParams(params, writer) {
|
|
179
|
-
const entries = [];
|
|
180
|
-
if (params.expires !== void 0) {
|
|
181
|
-
entries.push({ type: PARAM_EXPIRES, encode: (w) => w.writeVarInt(params.expires) });
|
|
182
|
-
}
|
|
183
|
-
if (params.largest_object !== void 0) {
|
|
184
|
-
entries.push({
|
|
185
|
-
type: PARAM_LARGEST_OBJECT,
|
|
186
|
-
encode: (w) => {
|
|
187
|
-
w.writeVarInt(params.largest_object.group);
|
|
188
|
-
w.writeVarInt(params.largest_object.object);
|
|
189
|
-
}
|
|
190
|
-
});
|
|
104
|
+
function encodeSubgroupStream(stream) {
|
|
105
|
+
const w = new (0, _chunkJL3NEW3Ocjs.BufferWriter)();
|
|
106
|
+
const streamType = stream.headerType;
|
|
107
|
+
w.writeVarInt(BigInt(streamType));
|
|
108
|
+
const propertiesPresent = (streamType & 1) !== 0;
|
|
109
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
110
|
+
const hasPriority = streamType < 48;
|
|
111
|
+
w.writeVarInt(stream.trackAlias);
|
|
112
|
+
w.writeVarInt(stream.groupId);
|
|
113
|
+
if (hasSubgroupField) {
|
|
114
|
+
w.writeVarInt(stream.subgroupId);
|
|
191
115
|
}
|
|
192
|
-
if (
|
|
193
|
-
|
|
194
|
-
type: PARAM_SUBSCRIBER_PRIORITY,
|
|
195
|
-
encode: (w) => w.writeUint8(Number(params.subscriber_priority))
|
|
196
|
-
});
|
|
116
|
+
if (hasPriority) {
|
|
117
|
+
w.writeUint8(stream.publisherPriority);
|
|
197
118
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
tmpW
|
|
205
|
-
|
|
206
|
-
tmpW.writeVarInt(f.start_group);
|
|
207
|
-
tmpW.writeVarInt(f.start_object);
|
|
208
|
-
}
|
|
209
|
-
if (f.filter_type === 4n) {
|
|
210
|
-
tmpW.writeVarInt(f.end_group);
|
|
211
|
-
}
|
|
119
|
+
let prevObjectId = -1n;
|
|
120
|
+
for (const obj of stream.objects) {
|
|
121
|
+
const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
|
|
122
|
+
w.writeVarInt(delta);
|
|
123
|
+
if (propertiesPresent) {
|
|
124
|
+
if (obj.objectProperties && Object.keys(obj.objectProperties).length > 0) {
|
|
125
|
+
const tmpW = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(32);
|
|
126
|
+
encodeObjectProperties(obj.objectProperties, tmpW);
|
|
212
127
|
const raw = tmpW.finish();
|
|
213
128
|
w.writeVarInt(BigInt(raw.byteLength));
|
|
214
129
|
w.writeBytes(raw);
|
|
130
|
+
} else {
|
|
131
|
+
w.writeVarInt(0n);
|
|
215
132
|
}
|
|
216
|
-
}
|
|
133
|
+
}
|
|
134
|
+
w.writeVarInt(BigInt(obj.payloadLength));
|
|
135
|
+
if (obj.payloadLength === 0) {
|
|
136
|
+
w.writeVarInt(_nullishCoalesce(obj.status, () => ( 0n)));
|
|
137
|
+
} else {
|
|
138
|
+
w.writeBytes(obj.payload);
|
|
139
|
+
}
|
|
140
|
+
prevObjectId = obj.objectId;
|
|
217
141
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
142
|
+
return w.finish();
|
|
143
|
+
}
|
|
144
|
+
function encodeDatagram(dg) {
|
|
145
|
+
const w = new (0, _chunkJL3NEW3Ocjs.BufferWriter)();
|
|
146
|
+
const dgType = dg.datagramType;
|
|
147
|
+
w.writeVarInt(BigInt(dgType));
|
|
148
|
+
w.writeVarInt(dg.trackAlias);
|
|
149
|
+
w.writeVarInt(dg.groupId);
|
|
150
|
+
const objectIdAbsent = (dgType & 4) !== 0;
|
|
151
|
+
const isStatus = (dgType & 32) !== 0;
|
|
152
|
+
const defaultPriority = (dgType & 8) !== 0;
|
|
153
|
+
const propertiesPresent = (dgType & 1) !== 0;
|
|
154
|
+
if (!objectIdAbsent) {
|
|
155
|
+
w.writeVarInt(dg.objectId);
|
|
223
156
|
}
|
|
224
|
-
if (
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
157
|
+
if (!defaultPriority) {
|
|
158
|
+
w.writeUint8(dg.publisherPriority);
|
|
159
|
+
}
|
|
160
|
+
if (propertiesPresent) {
|
|
161
|
+
if (dg.objectProperties && Object.keys(dg.objectProperties).length > 0) {
|
|
162
|
+
const tmpW = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(32);
|
|
163
|
+
encodeObjectProperties(dg.objectProperties, tmpW);
|
|
164
|
+
const raw = tmpW.finish();
|
|
165
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
166
|
+
w.writeBytes(raw);
|
|
167
|
+
} else {
|
|
168
|
+
w.writeVarInt(0n);
|
|
234
169
|
}
|
|
235
170
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
writer.writeVarInt(entry.type - prevType);
|
|
241
|
-
entry.encode(writer);
|
|
242
|
-
prevType = entry.type;
|
|
171
|
+
if (isStatus) {
|
|
172
|
+
w.writeVarInt(_nullishCoalesce(dg.objectStatus, () => ( 0n)));
|
|
173
|
+
} else {
|
|
174
|
+
w.writeBytes(dg.payload);
|
|
243
175
|
}
|
|
176
|
+
return w.finish();
|
|
244
177
|
}
|
|
245
|
-
function
|
|
246
|
-
const
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
} else if (
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
178
|
+
function encodeFetchStream(stream) {
|
|
179
|
+
const w = new (0, _chunkJL3NEW3Ocjs.BufferWriter)();
|
|
180
|
+
w.writeVarInt(FETCH_STREAM_TYPE);
|
|
181
|
+
w.writeVarInt(stream.requestId);
|
|
182
|
+
for (const obj of stream.objects) {
|
|
183
|
+
w.writeVarInt(BigInt(obj.serializationFlags));
|
|
184
|
+
const flags = obj.serializationFlags;
|
|
185
|
+
if (flags >= 128) {
|
|
186
|
+
w.writeVarInt(obj.groupId);
|
|
187
|
+
w.writeVarInt(obj.objectId);
|
|
188
|
+
w.writeVarInt(BigInt(obj.payloadLength));
|
|
189
|
+
} else if (flags & 64) {
|
|
190
|
+
if (flags & 8) w.writeVarInt(obj.groupId);
|
|
191
|
+
if (flags & 4) w.writeVarInt(obj.objectId);
|
|
192
|
+
if (flags & 16) w.writeUint8(obj.publisherPriority);
|
|
193
|
+
if (flags & 32) {
|
|
194
|
+
if (obj.objectProperties && Object.keys(obj.objectProperties).length > 0) {
|
|
195
|
+
const tmpW = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(32);
|
|
196
|
+
encodeObjectProperties(obj.objectProperties, tmpW);
|
|
197
|
+
const raw = tmpW.finish();
|
|
198
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
199
|
+
w.writeBytes(raw);
|
|
200
|
+
} else {
|
|
201
|
+
w.writeVarInt(0n);
|
|
202
|
+
}
|
|
270
203
|
}
|
|
271
|
-
|
|
272
|
-
|
|
204
|
+
w.writeVarInt(BigInt(obj.payloadLength));
|
|
205
|
+
if (obj.payloadLength > 0) {
|
|
206
|
+
w.writeBytes(obj.payload);
|
|
273
207
|
}
|
|
274
|
-
const consumed = reader.offset - startOff;
|
|
275
|
-
if (consumed < length) reader.readBytes(length - consumed);
|
|
276
|
-
result.subscription_filter = filter;
|
|
277
|
-
} else if (paramType === PARAM_GROUP_ORDER) {
|
|
278
|
-
result.group_order = BigInt(reader.readUint8());
|
|
279
208
|
} else {
|
|
280
|
-
if (
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
209
|
+
if (flags & 8) w.writeVarInt(obj.groupId);
|
|
210
|
+
const subgroupEncoding = flags & 3;
|
|
211
|
+
if (subgroupEncoding === 3) w.writeVarInt(obj.subgroupId);
|
|
212
|
+
if (flags & 4) w.writeVarInt(obj.objectId);
|
|
213
|
+
if (flags & 16) w.writeUint8(obj.publisherPriority);
|
|
214
|
+
if (flags & 32) {
|
|
215
|
+
if (obj.objectProperties && Object.keys(obj.objectProperties).length > 0) {
|
|
216
|
+
const tmpW = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(32);
|
|
217
|
+
encodeObjectProperties(obj.objectProperties, tmpW);
|
|
218
|
+
const raw = tmpW.finish();
|
|
219
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
220
|
+
w.writeBytes(raw);
|
|
221
|
+
} else {
|
|
222
|
+
w.writeVarInt(0n);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
w.writeVarInt(BigInt(obj.payloadLength));
|
|
226
|
+
if (obj.payloadLength > 0) {
|
|
227
|
+
w.writeBytes(obj.payload);
|
|
294
228
|
}
|
|
295
229
|
}
|
|
296
230
|
}
|
|
297
|
-
|
|
298
|
-
return result;
|
|
231
|
+
return w.finish();
|
|
299
232
|
}
|
|
300
|
-
function
|
|
301
|
-
|
|
302
|
-
|
|
233
|
+
function decodeSubgroupStream(bytes) {
|
|
234
|
+
try {
|
|
235
|
+
const r = new (0, _chunkJL3NEW3Ocjs.BufferReader)(bytes);
|
|
236
|
+
const streamType = Number(r.readVarInt());
|
|
237
|
+
if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61) || (streamType & 6) === 6) {
|
|
238
|
+
return {
|
|
239
|
+
ok: false,
|
|
240
|
+
error: new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
241
|
+
"CONSTRAINT_VIOLATION",
|
|
242
|
+
`Expected subgroup stream type 0x10-0x15/0x18-0x1D/0x30-0x35/0x38-0x3D, got 0x${streamType.toString(16)}`,
|
|
243
|
+
0
|
|
244
|
+
)
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
const propertiesPresent = (streamType & 1) !== 0;
|
|
248
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
249
|
+
const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
250
|
+
const hasPriority = streamType < 48;
|
|
251
|
+
const endOfGroup = (streamType & 8) !== 0;
|
|
252
|
+
const trackAlias = r.readVarInt();
|
|
253
|
+
const groupId = r.readVarInt();
|
|
254
|
+
let subgroupId = 0n;
|
|
255
|
+
if (hasSubgroupField) {
|
|
256
|
+
subgroupId = r.readVarInt();
|
|
257
|
+
}
|
|
258
|
+
let publisherPriority = 128;
|
|
259
|
+
if (hasPriority) {
|
|
260
|
+
publisherPriority = r.readUint8();
|
|
261
|
+
}
|
|
262
|
+
const objects = [];
|
|
263
|
+
let prevObjectId = -1n;
|
|
264
|
+
let firstObject = true;
|
|
265
|
+
while (r.remaining > 0) {
|
|
266
|
+
const byteOffset = r.offset;
|
|
267
|
+
const delta = r.readVarInt();
|
|
268
|
+
let objectId;
|
|
269
|
+
if (firstObject) {
|
|
270
|
+
objectId = delta;
|
|
271
|
+
if (subgroupIsFirstObjId && firstObject) {
|
|
272
|
+
subgroupId = objectId;
|
|
273
|
+
}
|
|
274
|
+
firstObject = false;
|
|
275
|
+
} else {
|
|
276
|
+
objectId = prevObjectId + 1n + delta;
|
|
277
|
+
}
|
|
278
|
+
const extensionData = new Uint8Array(0);
|
|
279
|
+
let objectProperties;
|
|
280
|
+
if (propertiesPresent) {
|
|
281
|
+
const propsLen = Number(r.readVarInt());
|
|
282
|
+
if (propsLen > 0) {
|
|
283
|
+
objectProperties = decodeObjectProperties(r, propsLen);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const payloadLength = Number(r.readVarInt());
|
|
287
|
+
let payload;
|
|
288
|
+
let status;
|
|
289
|
+
let payloadByteOffset;
|
|
290
|
+
if (payloadLength === 0) {
|
|
291
|
+
status = r.readVarInt();
|
|
292
|
+
payloadByteOffset = r.offset;
|
|
293
|
+
payload = new Uint8Array(0);
|
|
294
|
+
} else {
|
|
295
|
+
payloadByteOffset = r.offset;
|
|
296
|
+
payload = r.readBytesView(payloadLength);
|
|
297
|
+
}
|
|
298
|
+
const obj = {
|
|
299
|
+
type: "object",
|
|
300
|
+
byteOffset,
|
|
301
|
+
payloadByteOffset,
|
|
302
|
+
objectId,
|
|
303
|
+
payloadLength,
|
|
304
|
+
payload,
|
|
305
|
+
extensionData
|
|
306
|
+
};
|
|
307
|
+
if (status !== void 0) obj.status = status;
|
|
308
|
+
if (objectProperties !== void 0)
|
|
309
|
+
obj.objectProperties = objectProperties;
|
|
310
|
+
objects.push(obj);
|
|
311
|
+
prevObjectId = objectId;
|
|
312
|
+
}
|
|
313
|
+
const result = {
|
|
314
|
+
type: "subgroup",
|
|
315
|
+
headerType: streamType,
|
|
316
|
+
trackAlias,
|
|
317
|
+
groupId,
|
|
318
|
+
subgroupId,
|
|
319
|
+
publisherPriority,
|
|
320
|
+
objects
|
|
321
|
+
};
|
|
322
|
+
if (endOfGroup) result.endOfGroup = true;
|
|
323
|
+
return {
|
|
324
|
+
ok: true,
|
|
325
|
+
value: result,
|
|
326
|
+
bytesRead: r.offset
|
|
327
|
+
};
|
|
328
|
+
} catch (e) {
|
|
329
|
+
if (e instanceof _chunkJL3NEW3Ocjs.DecodeError) return { ok: false, error: e };
|
|
330
|
+
throw e;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
function decodeDatagram(bytes) {
|
|
334
|
+
try {
|
|
335
|
+
const r = new (0, _chunkJL3NEW3Ocjs.BufferReader)(bytes);
|
|
336
|
+
const dgType = Number(r.readVarInt());
|
|
337
|
+
const objectIdAbsent = (dgType & 4) !== 0;
|
|
338
|
+
const endOfGroup = (dgType & 2) !== 0;
|
|
339
|
+
const isStatus = (dgType & 32) !== 0;
|
|
340
|
+
const defaultPriority = (dgType & 8) !== 0;
|
|
341
|
+
const propertiesPresent = (dgType & 1) !== 0;
|
|
342
|
+
const trackAlias = r.readVarInt();
|
|
343
|
+
const groupId = r.readVarInt();
|
|
344
|
+
let objectId = 0n;
|
|
345
|
+
if (!objectIdAbsent) {
|
|
346
|
+
objectId = r.readVarInt();
|
|
347
|
+
}
|
|
348
|
+
let publisherPriority = 128;
|
|
349
|
+
if (!defaultPriority) {
|
|
350
|
+
publisherPriority = r.readUint8();
|
|
351
|
+
}
|
|
352
|
+
let objectProperties;
|
|
353
|
+
if (propertiesPresent) {
|
|
354
|
+
const propsLen = Number(r.readVarInt());
|
|
355
|
+
if (propsLen > 0) {
|
|
356
|
+
objectProperties = decodeObjectProperties(r, propsLen);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
let objectStatus;
|
|
360
|
+
let payload;
|
|
361
|
+
if (isStatus) {
|
|
362
|
+
objectStatus = r.readVarInt();
|
|
363
|
+
payload = new Uint8Array(0);
|
|
364
|
+
} else {
|
|
365
|
+
payload = r.readBytesView(r.remaining);
|
|
366
|
+
}
|
|
367
|
+
const payloadLength = payload.byteLength;
|
|
368
|
+
const result = {
|
|
369
|
+
type: "datagram",
|
|
370
|
+
datagramType: dgType,
|
|
371
|
+
trackAlias,
|
|
372
|
+
groupId,
|
|
373
|
+
objectId,
|
|
374
|
+
publisherPriority,
|
|
375
|
+
payloadLength,
|
|
376
|
+
payload
|
|
377
|
+
};
|
|
378
|
+
if (endOfGroup) result.endOfGroup = true;
|
|
379
|
+
if (objectStatus !== void 0)
|
|
380
|
+
result.objectStatus = objectStatus;
|
|
381
|
+
if (objectProperties !== void 0)
|
|
382
|
+
result.objectProperties = objectProperties;
|
|
383
|
+
return { ok: true, value: result, bytesRead: r.offset };
|
|
384
|
+
} catch (e) {
|
|
385
|
+
if (e instanceof _chunkJL3NEW3Ocjs.DecodeError) return { ok: false, error: e };
|
|
386
|
+
throw e;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
function decodeFetchStream(bytes) {
|
|
390
|
+
try {
|
|
391
|
+
const r = new (0, _chunkJL3NEW3Ocjs.BufferReader)(bytes);
|
|
392
|
+
const streamType = r.readVarInt();
|
|
393
|
+
if (streamType !== FETCH_STREAM_TYPE) {
|
|
394
|
+
return {
|
|
395
|
+
ok: false,
|
|
396
|
+
error: new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
397
|
+
"CONSTRAINT_VIOLATION",
|
|
398
|
+
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
399
|
+
0
|
|
400
|
+
)
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
const requestId = r.readVarInt();
|
|
404
|
+
const objects = [];
|
|
405
|
+
let prevGroupId = 0n;
|
|
406
|
+
let prevSubgroupId = 0n;
|
|
407
|
+
let prevObjectId = 0n;
|
|
408
|
+
let prevPriority = 128;
|
|
409
|
+
let first = true;
|
|
410
|
+
while (r.remaining > 0) {
|
|
411
|
+
const byteOffset = r.offset;
|
|
412
|
+
const flags = Number(r.readVarInt());
|
|
413
|
+
let groupId = prevGroupId;
|
|
414
|
+
let subgroupId = prevSubgroupId;
|
|
415
|
+
let objectId = prevObjectId + 1n;
|
|
416
|
+
let payloadLength;
|
|
417
|
+
let payload;
|
|
418
|
+
let payloadByteOffset;
|
|
419
|
+
const extensionData = new Uint8Array(0);
|
|
420
|
+
if (flags >= 128) {
|
|
421
|
+
if (flags !== 140 && flags !== 268) {
|
|
422
|
+
return {
|
|
423
|
+
ok: false,
|
|
424
|
+
error: new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
425
|
+
"CONSTRAINT_VIOLATION",
|
|
426
|
+
`Unknown serialization flags value: 0x${flags.toString(16)}`,
|
|
427
|
+
r.offset
|
|
428
|
+
)
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
groupId = r.readVarInt();
|
|
432
|
+
objectId = r.readVarInt();
|
|
433
|
+
payloadLength = Number(r.readVarInt());
|
|
434
|
+
payloadByteOffset = r.offset;
|
|
435
|
+
payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
436
|
+
} else if (flags & 64) {
|
|
437
|
+
const objectIdPresent = (flags & 4) !== 0;
|
|
438
|
+
const groupIdPresent = (flags & 8) !== 0;
|
|
439
|
+
const priorityPresent = (flags & 16) !== 0;
|
|
440
|
+
const propsPresent = (flags & 32) !== 0;
|
|
441
|
+
if (groupIdPresent) {
|
|
442
|
+
groupId = r.readVarInt();
|
|
443
|
+
}
|
|
444
|
+
if (objectIdPresent) {
|
|
445
|
+
objectId = r.readVarInt();
|
|
446
|
+
}
|
|
447
|
+
if (priorityPresent) {
|
|
448
|
+
prevPriority = r.readUint8();
|
|
449
|
+
}
|
|
450
|
+
let objectProperties;
|
|
451
|
+
if (propsPresent) {
|
|
452
|
+
const propsLen = Number(r.readVarInt());
|
|
453
|
+
if (propsLen > 0) {
|
|
454
|
+
objectProperties = decodeObjectProperties(r, propsLen);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
payloadLength = Number(r.readVarInt());
|
|
458
|
+
payloadByteOffset = r.offset;
|
|
459
|
+
payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
460
|
+
const obj2 = {
|
|
461
|
+
type: "object",
|
|
462
|
+
byteOffset,
|
|
463
|
+
payloadByteOffset,
|
|
464
|
+
serializationFlags: flags,
|
|
465
|
+
groupId,
|
|
466
|
+
subgroupId: 0n,
|
|
467
|
+
objectId,
|
|
468
|
+
publisherPriority: prevPriority,
|
|
469
|
+
payloadLength,
|
|
470
|
+
payload,
|
|
471
|
+
extensionData
|
|
472
|
+
};
|
|
473
|
+
if (objectProperties)
|
|
474
|
+
obj2.objectProperties = objectProperties;
|
|
475
|
+
objects.push(obj2);
|
|
476
|
+
prevGroupId = groupId;
|
|
477
|
+
prevObjectId = objectId;
|
|
478
|
+
first = false;
|
|
479
|
+
continue;
|
|
480
|
+
} else {
|
|
481
|
+
const subgroupEncoding = flags & 3;
|
|
482
|
+
const objectIdPresent = (flags & 4) !== 0;
|
|
483
|
+
const groupIdPresent = (flags & 8) !== 0;
|
|
484
|
+
const priorityPresent = (flags & 16) !== 0;
|
|
485
|
+
const propsPresent = (flags & 32) !== 0;
|
|
486
|
+
if (groupIdPresent) {
|
|
487
|
+
groupId = r.readVarInt();
|
|
488
|
+
} else if (first) {
|
|
489
|
+
return {
|
|
490
|
+
ok: false,
|
|
491
|
+
error: new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
492
|
+
"CONSTRAINT_VIOLATION",
|
|
493
|
+
"First fetch object must include groupId",
|
|
494
|
+
r.offset
|
|
495
|
+
)
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
if (subgroupEncoding === 0) {
|
|
499
|
+
subgroupId = 0n;
|
|
500
|
+
} else if (subgroupEncoding === 1) {
|
|
501
|
+
if (first) {
|
|
502
|
+
return {
|
|
503
|
+
ok: false,
|
|
504
|
+
error: new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
505
|
+
"CONSTRAINT_VIOLATION",
|
|
506
|
+
"First fetch object cannot reference prior subgroupId",
|
|
507
|
+
r.offset
|
|
508
|
+
)
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
subgroupId = prevSubgroupId;
|
|
512
|
+
} else if (subgroupEncoding === 2) {
|
|
513
|
+
if (first) {
|
|
514
|
+
return {
|
|
515
|
+
ok: false,
|
|
516
|
+
error: new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
517
|
+
"CONSTRAINT_VIOLATION",
|
|
518
|
+
"First fetch object cannot reference prior subgroupId",
|
|
519
|
+
r.offset
|
|
520
|
+
)
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
subgroupId = prevSubgroupId + 1n;
|
|
524
|
+
} else if (subgroupEncoding === 3) {
|
|
525
|
+
subgroupId = r.readVarInt();
|
|
526
|
+
}
|
|
527
|
+
if (objectIdPresent) {
|
|
528
|
+
objectId = r.readVarInt();
|
|
529
|
+
} else if (first) {
|
|
530
|
+
return {
|
|
531
|
+
ok: false,
|
|
532
|
+
error: new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
533
|
+
"CONSTRAINT_VIOLATION",
|
|
534
|
+
"First fetch object must include objectId",
|
|
535
|
+
r.offset
|
|
536
|
+
)
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
if (priorityPresent) {
|
|
540
|
+
prevPriority = r.readUint8();
|
|
541
|
+
}
|
|
542
|
+
let objectProperties;
|
|
543
|
+
if (propsPresent) {
|
|
544
|
+
const propsLen = Number(r.readVarInt());
|
|
545
|
+
if (propsLen > 0) {
|
|
546
|
+
objectProperties = decodeObjectProperties(r, propsLen);
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
payloadLength = Number(r.readVarInt());
|
|
550
|
+
payloadByteOffset = r.offset;
|
|
551
|
+
payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
552
|
+
if (objectProperties) {
|
|
553
|
+
const obj2 = {
|
|
554
|
+
type: "object",
|
|
555
|
+
byteOffset,
|
|
556
|
+
payloadByteOffset,
|
|
557
|
+
serializationFlags: flags,
|
|
558
|
+
groupId,
|
|
559
|
+
subgroupId,
|
|
560
|
+
objectId,
|
|
561
|
+
publisherPriority: prevPriority,
|
|
562
|
+
payloadLength,
|
|
563
|
+
payload,
|
|
564
|
+
extensionData
|
|
565
|
+
};
|
|
566
|
+
obj2.objectProperties = objectProperties;
|
|
567
|
+
objects.push(obj2);
|
|
568
|
+
prevGroupId = groupId;
|
|
569
|
+
prevSubgroupId = subgroupId;
|
|
570
|
+
prevObjectId = objectId;
|
|
571
|
+
first = false;
|
|
572
|
+
continue;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
const obj = {
|
|
576
|
+
type: "object",
|
|
577
|
+
byteOffset,
|
|
578
|
+
payloadByteOffset,
|
|
579
|
+
serializationFlags: flags,
|
|
580
|
+
groupId,
|
|
581
|
+
subgroupId,
|
|
582
|
+
objectId,
|
|
583
|
+
publisherPriority: prevPriority,
|
|
584
|
+
payloadLength,
|
|
585
|
+
payload,
|
|
586
|
+
extensionData
|
|
587
|
+
};
|
|
588
|
+
objects.push(obj);
|
|
589
|
+
prevGroupId = groupId;
|
|
590
|
+
prevSubgroupId = subgroupId;
|
|
591
|
+
prevObjectId = objectId;
|
|
592
|
+
first = false;
|
|
593
|
+
}
|
|
594
|
+
return {
|
|
595
|
+
ok: true,
|
|
596
|
+
value: { type: "fetch", requestId, objects },
|
|
597
|
+
bytesRead: r.offset
|
|
598
|
+
};
|
|
599
|
+
} catch (e) {
|
|
600
|
+
if (e instanceof _chunkJL3NEW3Ocjs.DecodeError) return { ok: false, error: e };
|
|
601
|
+
throw e;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
function decodeDataStream(streamType, bytes) {
|
|
605
|
+
switch (streamType) {
|
|
606
|
+
case "subgroup":
|
|
607
|
+
return decodeSubgroupStream(bytes);
|
|
608
|
+
case "datagram":
|
|
609
|
+
return decodeDatagram(bytes);
|
|
610
|
+
case "fetch":
|
|
611
|
+
return decodeFetchStream(bytes);
|
|
612
|
+
default: {
|
|
613
|
+
const _exhaustive = streamType;
|
|
614
|
+
throw new Error(`Unknown stream type: ${_exhaustive}`);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
function createSubgroupStreamDecoder() {
|
|
619
|
+
let buffer = new Uint8Array(0);
|
|
620
|
+
let offset = 0;
|
|
621
|
+
let headerEmitted = false;
|
|
622
|
+
let prevObjectId = -1n;
|
|
623
|
+
let firstObject = true;
|
|
624
|
+
let _subgroupIsFirstObjId = false;
|
|
625
|
+
let _extensionsPresent = false;
|
|
626
|
+
return new TransformStream({
|
|
627
|
+
transform(chunk, controller) {
|
|
628
|
+
if (offset > 0) {
|
|
629
|
+
buffer = buffer.subarray(offset);
|
|
630
|
+
offset = 0;
|
|
631
|
+
}
|
|
632
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
633
|
+
newBuffer.set(buffer, 0);
|
|
634
|
+
newBuffer.set(chunk, buffer.length);
|
|
635
|
+
buffer = newBuffer;
|
|
636
|
+
if (!headerEmitted) {
|
|
637
|
+
try {
|
|
638
|
+
const r = new (0, _chunkJL3NEW3Ocjs.BufferReader)(buffer.subarray(offset));
|
|
639
|
+
const streamType = Number(r.readVarInt());
|
|
640
|
+
if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
|
|
641
|
+
controller.error(
|
|
642
|
+
new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
643
|
+
"CONSTRAINT_VIOLATION",
|
|
644
|
+
`Expected subgroup stream type, got 0x${streamType.toString(16)}`,
|
|
645
|
+
0
|
|
646
|
+
)
|
|
647
|
+
);
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
_extensionsPresent = (streamType & 1) !== 0;
|
|
651
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
652
|
+
_subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
653
|
+
const hasPriority = streamType < 48;
|
|
654
|
+
const trackAlias = r.readVarInt();
|
|
655
|
+
const groupId = r.readVarInt();
|
|
656
|
+
let subgroupId = 0n;
|
|
657
|
+
if (hasSubgroupField) {
|
|
658
|
+
subgroupId = r.readVarInt();
|
|
659
|
+
}
|
|
660
|
+
let publisherPriority = 128;
|
|
661
|
+
if (hasPriority) {
|
|
662
|
+
publisherPriority = r.readUint8();
|
|
663
|
+
}
|
|
664
|
+
controller.enqueue({
|
|
665
|
+
type: "subgroup_header",
|
|
666
|
+
trackAlias,
|
|
667
|
+
groupId,
|
|
668
|
+
subgroupId,
|
|
669
|
+
publisherPriority
|
|
670
|
+
});
|
|
671
|
+
headerEmitted = true;
|
|
672
|
+
offset += r.offset;
|
|
673
|
+
} catch (e) {
|
|
674
|
+
if (e instanceof _chunkJL3NEW3Ocjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
controller.error(e);
|
|
678
|
+
return;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
while (offset < buffer.length) {
|
|
682
|
+
try {
|
|
683
|
+
const r = new (0, _chunkJL3NEW3Ocjs.BufferReader)(buffer.subarray(offset));
|
|
684
|
+
const delta = r.readVarInt();
|
|
685
|
+
let objectId;
|
|
686
|
+
if (firstObject) {
|
|
687
|
+
objectId = delta;
|
|
688
|
+
firstObject = false;
|
|
689
|
+
} else {
|
|
690
|
+
objectId = prevObjectId + 1n + delta;
|
|
691
|
+
}
|
|
692
|
+
let extensionData = new Uint8Array(0);
|
|
693
|
+
if (_extensionsPresent) {
|
|
694
|
+
const extLen = Number(r.readVarInt());
|
|
695
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
696
|
+
}
|
|
697
|
+
const payloadLength = Number(r.readVarInt());
|
|
698
|
+
const payloadByteOffset = r.offset;
|
|
699
|
+
const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
700
|
+
controller.enqueue({
|
|
701
|
+
type: "object",
|
|
702
|
+
objectId,
|
|
703
|
+
payloadLength,
|
|
704
|
+
payload,
|
|
705
|
+
extensionData,
|
|
706
|
+
byteOffset: 0,
|
|
707
|
+
payloadByteOffset
|
|
708
|
+
});
|
|
709
|
+
offset += r.offset;
|
|
710
|
+
prevObjectId = objectId;
|
|
711
|
+
} catch (e) {
|
|
712
|
+
if (e instanceof _chunkJL3NEW3Ocjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
713
|
+
break;
|
|
714
|
+
}
|
|
715
|
+
controller.error(e);
|
|
716
|
+
return;
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
},
|
|
720
|
+
flush(controller) {
|
|
721
|
+
if (offset < buffer.length) {
|
|
722
|
+
controller.error(new (0, _chunkJL3NEW3Ocjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
});
|
|
726
|
+
}
|
|
727
|
+
function createFetchStreamDecoder() {
|
|
728
|
+
let buffer = new Uint8Array(0);
|
|
729
|
+
let offset = 0;
|
|
730
|
+
let headerEmitted = false;
|
|
731
|
+
return new TransformStream({
|
|
732
|
+
transform(chunk, controller) {
|
|
733
|
+
if (offset > 0) {
|
|
734
|
+
buffer = buffer.subarray(offset);
|
|
735
|
+
offset = 0;
|
|
736
|
+
}
|
|
737
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
738
|
+
newBuffer.set(buffer, 0);
|
|
739
|
+
newBuffer.set(chunk, buffer.length);
|
|
740
|
+
buffer = newBuffer;
|
|
741
|
+
if (!headerEmitted) {
|
|
742
|
+
try {
|
|
743
|
+
const r = new (0, _chunkJL3NEW3Ocjs.BufferReader)(buffer.subarray(offset));
|
|
744
|
+
const streamType = r.readVarInt();
|
|
745
|
+
if (streamType !== FETCH_STREAM_TYPE) {
|
|
746
|
+
controller.error(
|
|
747
|
+
new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
748
|
+
"CONSTRAINT_VIOLATION",
|
|
749
|
+
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
750
|
+
0
|
|
751
|
+
)
|
|
752
|
+
);
|
|
753
|
+
return;
|
|
754
|
+
}
|
|
755
|
+
const requestId = r.readVarInt();
|
|
756
|
+
controller.enqueue({ type: "fetch_header", requestId });
|
|
757
|
+
headerEmitted = true;
|
|
758
|
+
offset += r.offset;
|
|
759
|
+
} catch (e) {
|
|
760
|
+
if (e instanceof _chunkJL3NEW3Ocjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
761
|
+
return;
|
|
762
|
+
}
|
|
763
|
+
controller.error(e);
|
|
764
|
+
return;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
while (offset < buffer.length) {
|
|
768
|
+
try {
|
|
769
|
+
const r = new (0, _chunkJL3NEW3Ocjs.BufferReader)(buffer.subarray(offset));
|
|
770
|
+
const flags = Number(r.readVarInt());
|
|
771
|
+
const objectIdPresent = (flags & 4) !== 0;
|
|
772
|
+
const groupIdPresent = (flags & 8) !== 0;
|
|
773
|
+
const priorityPresent = (flags & 16) !== 0;
|
|
774
|
+
const extensionsPresent = (flags & 32) !== 0;
|
|
775
|
+
const subgroupEncoding = flags & 3;
|
|
776
|
+
if (groupIdPresent) r.readVarInt();
|
|
777
|
+
if (subgroupEncoding === 3) r.readVarInt();
|
|
778
|
+
let objectId = 0n;
|
|
779
|
+
if (objectIdPresent) objectId = r.readVarInt();
|
|
780
|
+
if (priorityPresent) r.readUint8();
|
|
781
|
+
let extensionData = new Uint8Array(0);
|
|
782
|
+
if (extensionsPresent) {
|
|
783
|
+
const extLen = Number(r.readVarInt());
|
|
784
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
785
|
+
}
|
|
786
|
+
const payloadLength = Number(r.readVarInt());
|
|
787
|
+
const payloadByteOffset = r.offset;
|
|
788
|
+
const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
789
|
+
controller.enqueue({
|
|
790
|
+
type: "object",
|
|
791
|
+
objectId,
|
|
792
|
+
payloadLength,
|
|
793
|
+
payload,
|
|
794
|
+
extensionData,
|
|
795
|
+
byteOffset: 0,
|
|
796
|
+
payloadByteOffset
|
|
797
|
+
});
|
|
798
|
+
offset += r.offset;
|
|
799
|
+
} catch (e) {
|
|
800
|
+
if (e instanceof _chunkJL3NEW3Ocjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
801
|
+
break;
|
|
802
|
+
}
|
|
803
|
+
controller.error(e);
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
},
|
|
808
|
+
flush(controller) {
|
|
809
|
+
if (offset < buffer.length) {
|
|
810
|
+
controller.error(new (0, _chunkJL3NEW3Ocjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
});
|
|
814
|
+
}
|
|
815
|
+
function createDataStreamDecoder() {
|
|
816
|
+
let buffer = new Uint8Array(0);
|
|
817
|
+
let offset = 0;
|
|
818
|
+
let inner = null;
|
|
819
|
+
return new TransformStream({
|
|
820
|
+
transform(chunk, controller) {
|
|
821
|
+
if (offset > 0) {
|
|
822
|
+
buffer = buffer.subarray(offset);
|
|
823
|
+
offset = 0;
|
|
824
|
+
}
|
|
825
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
826
|
+
newBuffer.set(buffer, 0);
|
|
827
|
+
newBuffer.set(chunk, buffer.length);
|
|
828
|
+
buffer = newBuffer;
|
|
829
|
+
if (inner === null) {
|
|
830
|
+
if (offset >= buffer.length) return;
|
|
831
|
+
const firstByte = buffer[offset];
|
|
832
|
+
if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
|
|
833
|
+
const decoder = createSubgroupStreamDecoder();
|
|
834
|
+
inner = decoder;
|
|
835
|
+
} else if (firstByte === 5) {
|
|
836
|
+
const decoder = createFetchStreamDecoder();
|
|
837
|
+
inner = decoder;
|
|
838
|
+
} else {
|
|
839
|
+
controller.error(
|
|
840
|
+
new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
841
|
+
"CONSTRAINT_VIOLATION",
|
|
842
|
+
`Unknown data stream type: 0x${firstByte.toString(16)}`,
|
|
843
|
+
0
|
|
844
|
+
)
|
|
845
|
+
);
|
|
846
|
+
return;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
},
|
|
850
|
+
flush(controller) {
|
|
851
|
+
if (offset >= buffer.length) return;
|
|
852
|
+
const view = buffer.subarray(offset);
|
|
853
|
+
const firstByte = view[0];
|
|
854
|
+
let result;
|
|
855
|
+
if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
|
|
856
|
+
result = decodeSubgroupStream(view);
|
|
857
|
+
} else if (firstByte === 5) {
|
|
858
|
+
result = decodeFetchStream(view);
|
|
859
|
+
} else {
|
|
860
|
+
controller.error(
|
|
861
|
+
new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
862
|
+
"CONSTRAINT_VIOLATION",
|
|
863
|
+
`Unknown data stream type: 0x${firstByte.toString(16)}`,
|
|
864
|
+
0
|
|
865
|
+
)
|
|
866
|
+
);
|
|
867
|
+
return;
|
|
868
|
+
}
|
|
869
|
+
if (!result.ok) {
|
|
870
|
+
controller.error(result.error);
|
|
871
|
+
return;
|
|
872
|
+
}
|
|
873
|
+
const stream = result.value;
|
|
874
|
+
if (stream.type === "subgroup") {
|
|
875
|
+
controller.enqueue({
|
|
876
|
+
type: "subgroup_header",
|
|
877
|
+
trackAlias: stream.trackAlias,
|
|
878
|
+
groupId: stream.groupId,
|
|
879
|
+
subgroupId: stream.subgroupId,
|
|
880
|
+
publisherPriority: stream.publisherPriority
|
|
881
|
+
});
|
|
882
|
+
for (const obj of stream.objects) {
|
|
883
|
+
controller.enqueue(obj);
|
|
884
|
+
}
|
|
885
|
+
} else if (stream.type === "fetch") {
|
|
886
|
+
controller.enqueue({
|
|
887
|
+
type: "fetch_header",
|
|
888
|
+
requestId: stream.requestId
|
|
889
|
+
});
|
|
890
|
+
for (const obj of stream.objects) {
|
|
891
|
+
controller.enqueue(obj);
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
});
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
// src/drafts/draft17/codec.ts
|
|
899
|
+
var textEncoder = /* @__PURE__ */ new TextEncoder();
|
|
900
|
+
var textDecoder = /* @__PURE__ */ new TextDecoder();
|
|
901
|
+
function encodeSetupOptions(opts, writer) {
|
|
902
|
+
const entries = [];
|
|
903
|
+
if (opts.path !== void 0) {
|
|
904
|
+
entries.push({
|
|
905
|
+
type: SETUP_OPT_PATH,
|
|
906
|
+
encode: (w) => {
|
|
907
|
+
const encoded = textEncoder.encode(opts.path);
|
|
908
|
+
w.writeVarInt(BigInt(encoded.byteLength));
|
|
909
|
+
w.writeBytes(encoded);
|
|
910
|
+
}
|
|
911
|
+
});
|
|
912
|
+
}
|
|
913
|
+
if (opts.authorization_token !== void 0) {
|
|
914
|
+
entries.push({
|
|
915
|
+
type: SETUP_OPT_AUTHORIZATION_TOKEN,
|
|
916
|
+
encode: (w) => {
|
|
917
|
+
const tmpW = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(64);
|
|
918
|
+
encodeAuthorizationToken(opts.authorization_token, tmpW);
|
|
919
|
+
const raw = tmpW.finish();
|
|
920
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
921
|
+
w.writeBytes(raw);
|
|
922
|
+
}
|
|
923
|
+
});
|
|
924
|
+
}
|
|
925
|
+
if (opts.max_auth_token_cache_size !== void 0) {
|
|
926
|
+
entries.push({
|
|
927
|
+
type: SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE,
|
|
928
|
+
encode: (w) => w.writeVarInt(opts.max_auth_token_cache_size)
|
|
929
|
+
});
|
|
930
|
+
}
|
|
931
|
+
if (opts.authority !== void 0) {
|
|
932
|
+
entries.push({
|
|
933
|
+
type: SETUP_OPT_AUTHORITY,
|
|
934
|
+
encode: (w) => {
|
|
935
|
+
const encoded = textEncoder.encode(opts.authority);
|
|
936
|
+
w.writeVarInt(BigInt(encoded.byteLength));
|
|
937
|
+
w.writeBytes(encoded);
|
|
938
|
+
}
|
|
939
|
+
});
|
|
940
|
+
}
|
|
941
|
+
if (opts.moqt_implementation !== void 0) {
|
|
942
|
+
entries.push({
|
|
943
|
+
type: SETUP_OPT_MOQT_IMPLEMENTATION,
|
|
944
|
+
encode: (w) => {
|
|
945
|
+
const encoded = textEncoder.encode(opts.moqt_implementation);
|
|
946
|
+
w.writeVarInt(BigInt(encoded.byteLength));
|
|
947
|
+
w.writeBytes(encoded);
|
|
948
|
+
}
|
|
949
|
+
});
|
|
950
|
+
}
|
|
951
|
+
if (opts.unknown) {
|
|
952
|
+
for (const u of opts.unknown) {
|
|
953
|
+
const id = BigInt(u.id);
|
|
954
|
+
entries.push({
|
|
955
|
+
type: id,
|
|
956
|
+
encode: (w) => {
|
|
957
|
+
if (id % 2n === 0n) {
|
|
958
|
+
const raw = _chunkJL3NEW3Ocjs.hexToBytes.call(void 0, u.raw_hex);
|
|
959
|
+
const tmpReader = new (0, _chunkJL3NEW3Ocjs.BufferReader)(raw);
|
|
960
|
+
w.writeVarInt(tmpReader.readVarInt());
|
|
961
|
+
} else {
|
|
962
|
+
const raw = _chunkJL3NEW3Ocjs.hexToBytes.call(void 0, u.raw_hex);
|
|
963
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
964
|
+
w.writeBytes(raw);
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
});
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
entries.sort((a, b) => a.type < b.type ? -1 : a.type > b.type ? 1 : 0);
|
|
971
|
+
let prevType = 0n;
|
|
972
|
+
for (const entry of entries) {
|
|
973
|
+
writer.writeVarInt(entry.type - prevType);
|
|
974
|
+
entry.encode(writer);
|
|
975
|
+
prevType = entry.type;
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
function decodeSetupOptions(reader, payloadEnd) {
|
|
979
|
+
const result = {};
|
|
980
|
+
const unknown = [];
|
|
981
|
+
let prevType = 0n;
|
|
982
|
+
while (reader.offset < payloadEnd) {
|
|
983
|
+
const delta = reader.readVarInt();
|
|
984
|
+
const optType = prevType + delta;
|
|
985
|
+
prevType = optType;
|
|
986
|
+
if (optType % 2n === 0n) {
|
|
987
|
+
const value = reader.readVarInt();
|
|
988
|
+
if (optType === SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE) {
|
|
989
|
+
result.max_auth_token_cache_size = value;
|
|
990
|
+
} else {
|
|
991
|
+
const tmpWriter = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(16);
|
|
992
|
+
tmpWriter.writeVarInt(value);
|
|
993
|
+
const raw = tmpWriter.finish();
|
|
994
|
+
unknown.push({
|
|
995
|
+
id: `0x${optType.toString(16)}`,
|
|
996
|
+
length: raw.byteLength,
|
|
997
|
+
raw_hex: _chunkJL3NEW3Ocjs.bytesToHex.call(void 0, raw)
|
|
998
|
+
});
|
|
999
|
+
}
|
|
1000
|
+
} else {
|
|
1001
|
+
const length = Number(reader.readVarInt());
|
|
1002
|
+
const bytes = reader.readBytes(length);
|
|
1003
|
+
if (optType === SETUP_OPT_PATH) {
|
|
1004
|
+
result.path = textDecoder.decode(bytes);
|
|
1005
|
+
} else if (optType === SETUP_OPT_AUTHORIZATION_TOKEN) {
|
|
1006
|
+
result.authorization_token = decodeAuthorizationToken(new (0, _chunkJL3NEW3Ocjs.BufferReader)(bytes));
|
|
1007
|
+
} else if (optType === SETUP_OPT_AUTHORITY) {
|
|
1008
|
+
result.authority = textDecoder.decode(bytes);
|
|
1009
|
+
} else if (optType === SETUP_OPT_MOQT_IMPLEMENTATION) {
|
|
1010
|
+
result.moqt_implementation = textDecoder.decode(bytes);
|
|
1011
|
+
} else {
|
|
1012
|
+
unknown.push({
|
|
1013
|
+
id: `0x${optType.toString(16)}`,
|
|
1014
|
+
length,
|
|
1015
|
+
raw_hex: _chunkJL3NEW3Ocjs.bytesToHex.call(void 0, bytes)
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
if (unknown.length > 0) result.unknown = unknown;
|
|
1021
|
+
return result;
|
|
1022
|
+
}
|
|
1023
|
+
function encodeAuthorizationToken(token, w) {
|
|
1024
|
+
const aliasType = Number(token.alias_type);
|
|
1025
|
+
w.writeVarInt(token.alias_type);
|
|
1026
|
+
if (aliasType === 0 || aliasType === 1 || aliasType === 2) {
|
|
1027
|
+
w.writeVarInt(_nullishCoalesce(token.token_alias, () => ( 0n)));
|
|
1028
|
+
}
|
|
1029
|
+
if (aliasType === 1 || aliasType === 3) {
|
|
1030
|
+
w.writeVarInt(_nullishCoalesce(token.token_type, () => ( 0n)));
|
|
1031
|
+
const encoded = textEncoder.encode(_nullishCoalesce(token.token_value, () => ( "")));
|
|
1032
|
+
w.writeVarInt(BigInt(encoded.byteLength));
|
|
1033
|
+
w.writeBytes(encoded);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
function decodeAuthorizationToken(r) {
|
|
1037
|
+
const alias_type = r.readVarInt();
|
|
1038
|
+
const aliasType = Number(alias_type);
|
|
1039
|
+
const result = { alias_type };
|
|
1040
|
+
if (aliasType === 0 || aliasType === 1 || aliasType === 2) {
|
|
1041
|
+
;
|
|
1042
|
+
result.token_alias = r.readVarInt();
|
|
1043
|
+
}
|
|
1044
|
+
if (aliasType === 1 || aliasType === 3) {
|
|
1045
|
+
;
|
|
1046
|
+
result.token_type = r.readVarInt();
|
|
1047
|
+
const len = Number(r.readVarInt());
|
|
1048
|
+
const bytes = r.readBytes(len);
|
|
1049
|
+
result.token_value = textDecoder.decode(bytes);
|
|
1050
|
+
}
|
|
1051
|
+
return result;
|
|
1052
|
+
}
|
|
1053
|
+
var PARAM_DELIVERY_TIMEOUT = 0x02n;
|
|
1054
|
+
var PARAM_AUTHORIZATION_TOKEN = 0x03n;
|
|
1055
|
+
var PARAM_RENDEZVOUS_TIMEOUT = 0x04n;
|
|
1056
|
+
var PARAM_EXPIRES = 0x08n;
|
|
1057
|
+
var PARAM_LARGEST_OBJECT = 0x09n;
|
|
1058
|
+
var PARAM_FORWARD = 0x10n;
|
|
1059
|
+
var PARAM_SUBSCRIBER_PRIORITY = 0x20n;
|
|
1060
|
+
var PARAM_SUBSCRIPTION_FILTER = 0x21n;
|
|
1061
|
+
var PARAM_GROUP_ORDER = 0x22n;
|
|
1062
|
+
var PARAM_NEW_GROUP_REQUEST = 0x32n;
|
|
1063
|
+
function encodeParams(params, writer) {
|
|
1064
|
+
const entries = [];
|
|
1065
|
+
if (params.delivery_timeout !== void 0) {
|
|
1066
|
+
entries.push({
|
|
1067
|
+
type: PARAM_DELIVERY_TIMEOUT,
|
|
1068
|
+
encode: (w) => w.writeVarInt(params.delivery_timeout)
|
|
1069
|
+
});
|
|
1070
|
+
}
|
|
1071
|
+
if (params.authorization_token !== void 0) {
|
|
1072
|
+
entries.push({
|
|
1073
|
+
type: PARAM_AUTHORIZATION_TOKEN,
|
|
1074
|
+
encode: (w) => {
|
|
1075
|
+
const tmpW = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(64);
|
|
1076
|
+
encodeAuthorizationToken(params.authorization_token, tmpW);
|
|
1077
|
+
const raw = tmpW.finish();
|
|
1078
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
1079
|
+
w.writeBytes(raw);
|
|
1080
|
+
}
|
|
1081
|
+
});
|
|
1082
|
+
}
|
|
1083
|
+
if (params.rendezvous_timeout !== void 0) {
|
|
1084
|
+
entries.push({
|
|
1085
|
+
type: PARAM_RENDEZVOUS_TIMEOUT,
|
|
1086
|
+
encode: (w) => w.writeVarInt(params.rendezvous_timeout)
|
|
1087
|
+
});
|
|
1088
|
+
}
|
|
1089
|
+
if (params.expires !== void 0) {
|
|
1090
|
+
entries.push({
|
|
1091
|
+
type: PARAM_EXPIRES,
|
|
1092
|
+
encode: (w) => w.writeVarInt(params.expires)
|
|
1093
|
+
});
|
|
1094
|
+
}
|
|
1095
|
+
if (params.largest_object !== void 0) {
|
|
1096
|
+
entries.push({
|
|
1097
|
+
type: PARAM_LARGEST_OBJECT,
|
|
1098
|
+
encode: (w) => {
|
|
1099
|
+
w.writeVarInt(params.largest_object.group);
|
|
1100
|
+
w.writeVarInt(params.largest_object.object);
|
|
1101
|
+
}
|
|
1102
|
+
});
|
|
1103
|
+
}
|
|
1104
|
+
if (params.forward !== void 0) {
|
|
1105
|
+
entries.push({
|
|
1106
|
+
type: PARAM_FORWARD,
|
|
1107
|
+
encode: (w) => w.writeVarInt(params.forward)
|
|
1108
|
+
});
|
|
1109
|
+
}
|
|
1110
|
+
if (params.subscriber_priority !== void 0) {
|
|
1111
|
+
entries.push({
|
|
1112
|
+
type: PARAM_SUBSCRIBER_PRIORITY,
|
|
1113
|
+
encode: (w) => w.writeUint8(Number(params.subscriber_priority))
|
|
1114
|
+
});
|
|
1115
|
+
}
|
|
1116
|
+
if (params.subscription_filter !== void 0) {
|
|
1117
|
+
entries.push({
|
|
1118
|
+
type: PARAM_SUBSCRIPTION_FILTER,
|
|
1119
|
+
encode: (w) => {
|
|
1120
|
+
const f = params.subscription_filter;
|
|
1121
|
+
const tmpW = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(32);
|
|
1122
|
+
tmpW.writeVarInt(f.filter_type);
|
|
1123
|
+
if (f.filter_type === 3n || f.filter_type === 4n) {
|
|
1124
|
+
tmpW.writeVarInt(f.start_group);
|
|
1125
|
+
tmpW.writeVarInt(f.start_object);
|
|
1126
|
+
}
|
|
1127
|
+
if (f.filter_type === 4n) {
|
|
1128
|
+
tmpW.writeVarInt(f.end_group);
|
|
1129
|
+
}
|
|
1130
|
+
const raw = tmpW.finish();
|
|
1131
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
1132
|
+
w.writeBytes(raw);
|
|
1133
|
+
}
|
|
1134
|
+
});
|
|
1135
|
+
}
|
|
1136
|
+
if (params.group_order !== void 0) {
|
|
1137
|
+
entries.push({
|
|
1138
|
+
type: PARAM_GROUP_ORDER,
|
|
1139
|
+
encode: (w) => w.writeUint8(Number(params.group_order))
|
|
1140
|
+
});
|
|
1141
|
+
}
|
|
1142
|
+
if (params.new_group_request !== void 0) {
|
|
1143
|
+
entries.push({
|
|
1144
|
+
type: PARAM_NEW_GROUP_REQUEST,
|
|
1145
|
+
encode: (w) => w.writeVarInt(params.new_group_request)
|
|
1146
|
+
});
|
|
1147
|
+
}
|
|
1148
|
+
if (params.unknown) {
|
|
1149
|
+
for (const u of params.unknown) {
|
|
1150
|
+
const id = BigInt(u.id);
|
|
1151
|
+
entries.push({
|
|
1152
|
+
type: id,
|
|
1153
|
+
encode: (w) => {
|
|
1154
|
+
const raw = _chunkJL3NEW3Ocjs.hexToBytes.call(void 0, u.raw_hex);
|
|
1155
|
+
w.writeBytes(raw);
|
|
1156
|
+
}
|
|
1157
|
+
});
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
303
1160
|
entries.sort((a, b) => a.type < b.type ? -1 : a.type > b.type ? 1 : 0);
|
|
1161
|
+
writer.writeVarInt(BigInt(entries.length));
|
|
304
1162
|
let prevType = 0n;
|
|
305
1163
|
for (const entry of entries) {
|
|
306
1164
|
writer.writeVarInt(entry.type - prevType);
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
1165
|
+
entry.encode(writer);
|
|
1166
|
+
prevType = entry.type;
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
function decodeParams(reader) {
|
|
1170
|
+
const count = Number(reader.readVarInt());
|
|
1171
|
+
const result = {};
|
|
1172
|
+
const unknown = [];
|
|
1173
|
+
let prevType = 0n;
|
|
1174
|
+
for (let i = 0; i < count; i++) {
|
|
1175
|
+
const delta = reader.readVarInt();
|
|
1176
|
+
const paramType = prevType + delta;
|
|
1177
|
+
prevType = paramType;
|
|
1178
|
+
if (paramType === PARAM_DELIVERY_TIMEOUT) {
|
|
1179
|
+
result.delivery_timeout = reader.readVarInt();
|
|
1180
|
+
} else if (paramType === PARAM_AUTHORIZATION_TOKEN) {
|
|
1181
|
+
const length = Number(reader.readVarInt());
|
|
1182
|
+
const bytes = reader.readBytes(length);
|
|
1183
|
+
result.authorization_token = decodeAuthorizationToken(new (0, _chunkJL3NEW3Ocjs.BufferReader)(bytes));
|
|
1184
|
+
} else if (paramType === PARAM_RENDEZVOUS_TIMEOUT) {
|
|
1185
|
+
result.rendezvous_timeout = reader.readVarInt();
|
|
1186
|
+
} else if (paramType === PARAM_EXPIRES) {
|
|
1187
|
+
result.expires = reader.readVarInt();
|
|
1188
|
+
} else if (paramType === PARAM_LARGEST_OBJECT) {
|
|
1189
|
+
const group = reader.readVarInt();
|
|
1190
|
+
const object = reader.readVarInt();
|
|
1191
|
+
result.largest_object = { group, object };
|
|
1192
|
+
} else if (paramType === PARAM_SUBSCRIBER_PRIORITY) {
|
|
1193
|
+
result.subscriber_priority = BigInt(reader.readUint8());
|
|
1194
|
+
} else if (paramType === PARAM_SUBSCRIPTION_FILTER) {
|
|
1195
|
+
const length = Number(reader.readVarInt());
|
|
1196
|
+
const startOff = reader.offset;
|
|
1197
|
+
const filter_type = reader.readVarInt();
|
|
1198
|
+
const filter = { filter_type };
|
|
1199
|
+
if (filter_type === 3n || filter_type === 4n) {
|
|
1200
|
+
filter.start_group = reader.readVarInt();
|
|
1201
|
+
filter.start_object = reader.readVarInt();
|
|
1202
|
+
}
|
|
1203
|
+
if (filter_type === 4n) {
|
|
1204
|
+
filter.end_group = reader.readVarInt();
|
|
1205
|
+
}
|
|
1206
|
+
const consumed = reader.offset - startOff;
|
|
1207
|
+
if (consumed < length) reader.readBytes(length - consumed);
|
|
1208
|
+
result.subscription_filter = filter;
|
|
1209
|
+
} else if (paramType === PARAM_FORWARD) {
|
|
1210
|
+
result.forward = reader.readVarInt();
|
|
1211
|
+
} else if (paramType === PARAM_GROUP_ORDER) {
|
|
1212
|
+
result.group_order = BigInt(reader.readUint8());
|
|
1213
|
+
} else if (paramType === PARAM_NEW_GROUP_REQUEST) {
|
|
1214
|
+
result.new_group_request = reader.readVarInt();
|
|
311
1215
|
} else {
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
1216
|
+
if (paramType % 2n === 0n) {
|
|
1217
|
+
const value = reader.readVarInt();
|
|
1218
|
+
const tmpWriter = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(16);
|
|
1219
|
+
tmpWriter.writeVarInt(value);
|
|
1220
|
+
const raw = tmpWriter.finish();
|
|
1221
|
+
unknown.push({
|
|
1222
|
+
id: `0x${paramType.toString(16)}`,
|
|
1223
|
+
length: raw.byteLength,
|
|
1224
|
+
raw_hex: _chunkJL3NEW3Ocjs.bytesToHex.call(void 0, raw)
|
|
1225
|
+
});
|
|
1226
|
+
} else {
|
|
1227
|
+
const length = Number(reader.readVarInt());
|
|
1228
|
+
const bytes = reader.readBytes(length);
|
|
1229
|
+
unknown.push({
|
|
1230
|
+
id: `0x${paramType.toString(16)}`,
|
|
1231
|
+
length,
|
|
1232
|
+
raw_hex: _chunkJL3NEW3Ocjs.bytesToHex.call(void 0, bytes)
|
|
1233
|
+
});
|
|
1234
|
+
}
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
if (unknown.length > 0) result.unknown = unknown;
|
|
1238
|
+
return result;
|
|
1239
|
+
}
|
|
1240
|
+
var TPROP_DELIVERY_TIMEOUT = 0x02n;
|
|
1241
|
+
var TPROP_MAX_CACHE_DURATION = 0x04n;
|
|
1242
|
+
var TPROP_IMMUTABLE_PROPERTIES = 0x0bn;
|
|
1243
|
+
var TPROP_DEFAULT_PUBLISHER_PRIORITY = 0x0en;
|
|
1244
|
+
var TPROP_DEFAULT_PUBLISHER_GROUP_ORDER = 0x22n;
|
|
1245
|
+
var TPROP_DYNAMIC_GROUPS = 0x30n;
|
|
1246
|
+
function encodeTrackProperties(props, writer) {
|
|
1247
|
+
const entries = [];
|
|
1248
|
+
if (props.delivery_timeout !== void 0) {
|
|
1249
|
+
entries.push({
|
|
1250
|
+
type: TPROP_DELIVERY_TIMEOUT,
|
|
1251
|
+
encode: (w) => w.writeVarInt(props.delivery_timeout)
|
|
1252
|
+
});
|
|
1253
|
+
}
|
|
1254
|
+
if (props.max_cache_duration !== void 0) {
|
|
1255
|
+
entries.push({
|
|
1256
|
+
type: TPROP_MAX_CACHE_DURATION,
|
|
1257
|
+
encode: (w) => w.writeVarInt(props.max_cache_duration)
|
|
1258
|
+
});
|
|
1259
|
+
}
|
|
1260
|
+
if (props.immutable_properties !== void 0) {
|
|
1261
|
+
entries.push({
|
|
1262
|
+
type: TPROP_IMMUTABLE_PROPERTIES,
|
|
1263
|
+
encode: (w) => {
|
|
1264
|
+
const raw = _chunkJL3NEW3Ocjs.hexToBytes.call(void 0, props.immutable_properties);
|
|
1265
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
1266
|
+
w.writeBytes(raw);
|
|
1267
|
+
}
|
|
1268
|
+
});
|
|
1269
|
+
}
|
|
1270
|
+
if (props.default_publisher_priority !== void 0) {
|
|
1271
|
+
entries.push({
|
|
1272
|
+
type: TPROP_DEFAULT_PUBLISHER_PRIORITY,
|
|
1273
|
+
encode: (w) => w.writeVarInt(props.default_publisher_priority)
|
|
1274
|
+
});
|
|
1275
|
+
}
|
|
1276
|
+
if (props.default_publisher_group_order !== void 0) {
|
|
1277
|
+
entries.push({
|
|
1278
|
+
type: TPROP_DEFAULT_PUBLISHER_GROUP_ORDER,
|
|
1279
|
+
encode: (w) => w.writeVarInt(props.default_publisher_group_order)
|
|
1280
|
+
});
|
|
1281
|
+
}
|
|
1282
|
+
if (props.dynamic_groups !== void 0) {
|
|
1283
|
+
entries.push({
|
|
1284
|
+
type: TPROP_DYNAMIC_GROUPS,
|
|
1285
|
+
encode: (w) => w.writeVarInt(props.dynamic_groups)
|
|
1286
|
+
});
|
|
1287
|
+
}
|
|
1288
|
+
if (props.unknown) {
|
|
1289
|
+
for (const u of props.unknown) {
|
|
1290
|
+
const id = BigInt(u.id);
|
|
1291
|
+
entries.push({
|
|
1292
|
+
type: id,
|
|
1293
|
+
encode: (w) => {
|
|
1294
|
+
if (id % 2n === 0n) {
|
|
1295
|
+
const raw = _chunkJL3NEW3Ocjs.hexToBytes.call(void 0, u.raw_hex);
|
|
1296
|
+
const tmpReader = new (0, _chunkJL3NEW3Ocjs.BufferReader)(raw);
|
|
1297
|
+
w.writeVarInt(tmpReader.readVarInt());
|
|
1298
|
+
} else {
|
|
1299
|
+
const raw = _chunkJL3NEW3Ocjs.hexToBytes.call(void 0, u.raw_hex);
|
|
1300
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
1301
|
+
w.writeBytes(raw);
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
});
|
|
315
1305
|
}
|
|
1306
|
+
}
|
|
1307
|
+
entries.sort((a, b) => a.type < b.type ? -1 : a.type > b.type ? 1 : 0);
|
|
1308
|
+
let prevType = 0n;
|
|
1309
|
+
for (const entry of entries) {
|
|
1310
|
+
writer.writeVarInt(entry.type - prevType);
|
|
1311
|
+
entry.encode(writer);
|
|
316
1312
|
prevType = entry.type;
|
|
317
1313
|
}
|
|
318
1314
|
}
|
|
@@ -326,18 +1322,38 @@ function decodeTrackProperties(reader, payloadEnd) {
|
|
|
326
1322
|
prevType = propType;
|
|
327
1323
|
if (propType % 2n === 0n) {
|
|
328
1324
|
const value = reader.readVarInt();
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
1325
|
+
if (propType === TPROP_DELIVERY_TIMEOUT) {
|
|
1326
|
+
result.delivery_timeout = value;
|
|
1327
|
+
} else if (propType === TPROP_MAX_CACHE_DURATION) {
|
|
1328
|
+
result.max_cache_duration = value;
|
|
1329
|
+
} else if (propType === TPROP_DEFAULT_PUBLISHER_PRIORITY) {
|
|
1330
|
+
result.default_publisher_priority = value;
|
|
1331
|
+
} else if (propType === TPROP_DEFAULT_PUBLISHER_GROUP_ORDER) {
|
|
1332
|
+
result.default_publisher_group_order = value;
|
|
1333
|
+
} else if (propType === TPROP_DYNAMIC_GROUPS) {
|
|
1334
|
+
result.dynamic_groups = value;
|
|
1335
|
+
} else {
|
|
1336
|
+
const tmpWriter = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(16);
|
|
1337
|
+
tmpWriter.writeVarInt(value);
|
|
1338
|
+
const raw = tmpWriter.finish();
|
|
1339
|
+
unknown.push({
|
|
1340
|
+
id: `0x${propType.toString(16)}`,
|
|
1341
|
+
length: raw.byteLength,
|
|
1342
|
+
raw_hex: _chunkJL3NEW3Ocjs.bytesToHex.call(void 0, raw)
|
|
1343
|
+
});
|
|
1344
|
+
}
|
|
337
1345
|
} else {
|
|
338
1346
|
const length = Number(reader.readVarInt());
|
|
339
1347
|
const bytes = reader.readBytes(length);
|
|
340
|
-
|
|
1348
|
+
if (propType === TPROP_IMMUTABLE_PROPERTIES) {
|
|
1349
|
+
result.immutable_properties = _chunkJL3NEW3Ocjs.bytesToHex.call(void 0, bytes);
|
|
1350
|
+
} else {
|
|
1351
|
+
unknown.push({
|
|
1352
|
+
id: `0x${propType.toString(16)}`,
|
|
1353
|
+
length,
|
|
1354
|
+
raw_hex: _chunkJL3NEW3Ocjs.bytesToHex.call(void 0, bytes)
|
|
1355
|
+
});
|
|
1356
|
+
}
|
|
341
1357
|
}
|
|
342
1358
|
}
|
|
343
1359
|
if (unknown.length > 0) result.unknown = unknown;
|
|
@@ -476,7 +1492,12 @@ function decodeRequestUpdatePayload(r) {
|
|
|
476
1492
|
const request_id = r.readVarInt();
|
|
477
1493
|
const required_request_id_delta = r.readVarInt();
|
|
478
1494
|
const parameters = decodeParams(r);
|
|
479
|
-
return {
|
|
1495
|
+
return {
|
|
1496
|
+
type: "request_update",
|
|
1497
|
+
request_id,
|
|
1498
|
+
required_request_id_delta,
|
|
1499
|
+
parameters
|
|
1500
|
+
};
|
|
480
1501
|
}
|
|
481
1502
|
function decodePublishPayload(r, payloadEnd) {
|
|
482
1503
|
const request_id = r.readVarInt();
|
|
@@ -554,7 +1575,7 @@ function decodeFetchPayload(r) {
|
|
|
554
1575
|
const fetch_type = r.readVarInt();
|
|
555
1576
|
const ft = Number(fetch_type);
|
|
556
1577
|
if (ft < 1 || ft > 3) {
|
|
557
|
-
throw new (0,
|
|
1578
|
+
throw new (0, _chunkJL3NEW3Ocjs.DecodeError)("CONSTRAINT_VIOLATION", `Invalid fetch_type: ${ft}`, r.offset);
|
|
558
1579
|
}
|
|
559
1580
|
let standalone;
|
|
560
1581
|
let joining;
|
|
@@ -565,7 +1586,14 @@ function decodeFetchPayload(r) {
|
|
|
565
1586
|
const start_object = r.readVarInt();
|
|
566
1587
|
const end_group = r.readVarInt();
|
|
567
1588
|
const end_object = r.readVarInt();
|
|
568
|
-
standalone = {
|
|
1589
|
+
standalone = {
|
|
1590
|
+
track_namespace,
|
|
1591
|
+
track_name,
|
|
1592
|
+
start_group,
|
|
1593
|
+
start_object,
|
|
1594
|
+
end_group,
|
|
1595
|
+
end_object
|
|
1596
|
+
};
|
|
569
1597
|
} else {
|
|
570
1598
|
const joining_request_id = r.readVarInt();
|
|
571
1599
|
const joining_start = r.readVarInt();
|
|
@@ -588,7 +1616,14 @@ function decodeFetchOkPayload(r, payloadEnd) {
|
|
|
588
1616
|
const end_object = r.readVarInt();
|
|
589
1617
|
const parameters = decodeParams(r);
|
|
590
1618
|
const track_properties = decodeTrackProperties(r, payloadEnd);
|
|
591
|
-
return {
|
|
1619
|
+
return {
|
|
1620
|
+
type: "fetch_ok",
|
|
1621
|
+
end_of_track,
|
|
1622
|
+
end_group,
|
|
1623
|
+
end_object,
|
|
1624
|
+
parameters,
|
|
1625
|
+
track_properties
|
|
1626
|
+
};
|
|
592
1627
|
}
|
|
593
1628
|
function decodeTrackStatusPayload(r) {
|
|
594
1629
|
const request_id = r.readVarInt();
|
|
@@ -625,13 +1660,13 @@ function encodeMessage(message) {
|
|
|
625
1660
|
if (typeId === void 0) {
|
|
626
1661
|
throw new Error(`Unknown message type: ${message.type}`);
|
|
627
1662
|
}
|
|
628
|
-
const payloadWriter = new (0,
|
|
1663
|
+
const payloadWriter = new (0, _chunkJL3NEW3Ocjs.BufferWriter)();
|
|
629
1664
|
encodePayload(message, payloadWriter);
|
|
630
|
-
const payload = payloadWriter.
|
|
1665
|
+
const payload = payloadWriter.finishView();
|
|
631
1666
|
if (payload.byteLength > 65535) {
|
|
632
1667
|
throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
|
|
633
1668
|
}
|
|
634
|
-
const writer = new (0,
|
|
1669
|
+
const writer = new (0, _chunkJL3NEW3Ocjs.BufferWriter)(payload.byteLength + 16);
|
|
635
1670
|
writer.writeVarInt(typeId);
|
|
636
1671
|
writer.writeUint8(payload.byteLength >> 8 & 255);
|
|
637
1672
|
writer.writeUint8(payload.byteLength & 255);
|
|
@@ -684,7 +1719,7 @@ function encodePayload(msg, w) {
|
|
|
684
1719
|
}
|
|
685
1720
|
function decodeMessage(bytes) {
|
|
686
1721
|
try {
|
|
687
|
-
const reader = new (0,
|
|
1722
|
+
const reader = new (0, _chunkJL3NEW3Ocjs.BufferReader)(bytes);
|
|
688
1723
|
const typeId = reader.readVarInt();
|
|
689
1724
|
const lenHi = reader.readUint8();
|
|
690
1725
|
const lenLo = reader.readUint8();
|
|
@@ -692,7 +1727,7 @@ function decodeMessage(bytes) {
|
|
|
692
1727
|
const payloadStart = reader.offset;
|
|
693
1728
|
const _payloadEnd = payloadStart + payloadLength;
|
|
694
1729
|
const payloadBytes = reader.readBytes(payloadLength);
|
|
695
|
-
const payloadReader = new (0,
|
|
1730
|
+
const payloadReader = new (0, _chunkJL3NEW3Ocjs.BufferReader)(payloadBytes);
|
|
696
1731
|
let message;
|
|
697
1732
|
if (typeId === MSG_SETUP) {
|
|
698
1733
|
message = decodeSetupPayload(payloadReader, payloadLength);
|
|
@@ -713,376 +1748,56 @@ function decodeMessage(bytes) {
|
|
|
713
1748
|
} else if (typeId === MSG_NAMESPACE) {
|
|
714
1749
|
message = decodeNamespacePayload(payloadReader);
|
|
715
1750
|
} else if (typeId === MSG_NAMESPACE_DONE) {
|
|
716
|
-
message = decodeNamespaceDonePayload(payloadReader);
|
|
717
|
-
} else if (typeId === MSG_SUBSCRIBE_NAMESPACE) {
|
|
718
|
-
message = decodeSubscribeNamespacePayload(payloadReader);
|
|
719
|
-
} else if (typeId === MSG_PUBLISH_BLOCKED) {
|
|
720
|
-
message = decodePublishBlockedPayload(payloadReader);
|
|
721
|
-
} else if (typeId === MSG_FETCH) {
|
|
722
|
-
message = decodeFetchPayload(payloadReader);
|
|
723
|
-
} else if (typeId === MSG_FETCH_OK) {
|
|
724
|
-
message = decodeFetchOkPayload(payloadReader, payloadLength);
|
|
725
|
-
} else if (typeId === MSG_TRACK_STATUS) {
|
|
726
|
-
message = decodeTrackStatusPayload(payloadReader);
|
|
727
|
-
} else if (typeId === MSG_REQUEST_OK) {
|
|
728
|
-
message = decodeRequestOkPayload(payloadReader);
|
|
729
|
-
} else if (typeId === MSG_REQUEST_ERROR) {
|
|
730
|
-
message = decodeRequestErrorPayload(payloadReader);
|
|
731
|
-
} else if (typeId === MSG_GOAWAY) {
|
|
732
|
-
message = decodeGoAwayPayload(payloadReader);
|
|
733
|
-
} else {
|
|
734
|
-
return {
|
|
735
|
-
ok: false,
|
|
736
|
-
error: new (0,
|
|
737
|
-
"UNKNOWN_MESSAGE_TYPE",
|
|
738
|
-
`Unknown message type ID: 0x${typeId.toString(16)}`,
|
|
739
|
-
0
|
|
740
|
-
)
|
|
741
|
-
};
|
|
742
|
-
}
|
|
743
|
-
return { ok: true, value: message, bytesRead: reader.offset };
|
|
744
|
-
} catch (e) {
|
|
745
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError) {
|
|
746
|
-
return { ok: false, error: e };
|
|
747
|
-
}
|
|
748
|
-
throw e;
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
var FETCH_STREAM_TYPE = 0x05n;
|
|
752
|
-
function encodeSubgroupStream(stream) {
|
|
753
|
-
const w = new (0, _chunkFWISIR26cjs.BufferWriter)();
|
|
754
|
-
const streamType = stream.headerType;
|
|
755
|
-
w.writeVarInt(BigInt(streamType));
|
|
756
|
-
const hasSubgroupField = (streamType & 4) !== 0;
|
|
757
|
-
const hasPriority = streamType < 48;
|
|
758
|
-
w.writeVarInt(stream.trackAlias);
|
|
759
|
-
w.writeVarInt(stream.groupId);
|
|
760
|
-
if (hasSubgroupField) {
|
|
761
|
-
w.writeVarInt(stream.subgroupId);
|
|
762
|
-
}
|
|
763
|
-
if (hasPriority) {
|
|
764
|
-
w.writeUint8(stream.publisherPriority);
|
|
765
|
-
}
|
|
766
|
-
let prevObjectId = -1n;
|
|
767
|
-
for (const obj of stream.objects) {
|
|
768
|
-
const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
|
|
769
|
-
w.writeVarInt(delta);
|
|
770
|
-
w.writeVarInt(BigInt(obj.payloadLength));
|
|
771
|
-
if (obj.payloadLength === 0) {
|
|
772
|
-
w.writeVarInt(_nullishCoalesce(obj.status, () => ( 0n)));
|
|
773
|
-
} else {
|
|
774
|
-
w.writeBytes(obj.payload);
|
|
775
|
-
}
|
|
776
|
-
prevObjectId = obj.objectId;
|
|
777
|
-
}
|
|
778
|
-
return w.finish();
|
|
779
|
-
}
|
|
780
|
-
function encodeDatagram(dg) {
|
|
781
|
-
const w = new (0, _chunkFWISIR26cjs.BufferWriter)();
|
|
782
|
-
const dgType = dg.datagramType;
|
|
783
|
-
w.writeVarInt(BigInt(dgType));
|
|
784
|
-
w.writeVarInt(dg.trackAlias);
|
|
785
|
-
w.writeVarInt(dg.groupId);
|
|
786
|
-
const objectIdAbsent = (dgType & 4) !== 0;
|
|
787
|
-
const isStatus = (dgType & 32) !== 0;
|
|
788
|
-
const defaultPriority = (dgType & 8) !== 0;
|
|
789
|
-
if (!objectIdAbsent) {
|
|
790
|
-
w.writeVarInt(dg.objectId);
|
|
791
|
-
}
|
|
792
|
-
if (!defaultPriority) {
|
|
793
|
-
w.writeUint8(dg.publisherPriority);
|
|
794
|
-
}
|
|
795
|
-
if (isStatus) {
|
|
796
|
-
w.writeVarInt(_nullishCoalesce(dg.objectStatus, () => ( 0n)));
|
|
797
|
-
} else {
|
|
798
|
-
w.writeBytes(dg.payload);
|
|
799
|
-
}
|
|
800
|
-
return w.finish();
|
|
801
|
-
}
|
|
802
|
-
function encodeFetchStream(stream) {
|
|
803
|
-
const w = new (0, _chunkFWISIR26cjs.BufferWriter)();
|
|
804
|
-
w.writeVarInt(FETCH_STREAM_TYPE);
|
|
805
|
-
w.writeVarInt(stream.requestId);
|
|
806
|
-
for (const obj of stream.objects) {
|
|
807
|
-
w.writeUint8(obj.serializationFlags);
|
|
808
|
-
const flags = obj.serializationFlags;
|
|
809
|
-
if (flags & 8) w.writeVarInt(obj.groupId);
|
|
810
|
-
const subgroupEncoding = flags & 3;
|
|
811
|
-
if (subgroupEncoding === 3) w.writeVarInt(obj.subgroupId);
|
|
812
|
-
if (flags & 4) w.writeVarInt(obj.objectId);
|
|
813
|
-
if (flags & 16) w.writeUint8(obj.publisherPriority);
|
|
814
|
-
w.writeVarInt(BigInt(obj.payloadLength));
|
|
815
|
-
if (obj.payloadLength === 0) {
|
|
816
|
-
w.writeVarInt(_nullishCoalesce(obj.status, () => ( 0n)));
|
|
817
|
-
} else {
|
|
818
|
-
w.writeBytes(obj.payload);
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
return w.finish();
|
|
822
|
-
}
|
|
823
|
-
function decodeSubgroupStream(bytes) {
|
|
824
|
-
try {
|
|
825
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(bytes);
|
|
826
|
-
const streamType = Number(r.readVarInt());
|
|
827
|
-
if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
|
|
828
|
-
return {
|
|
829
|
-
ok: false,
|
|
830
|
-
error: new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
831
|
-
"CONSTRAINT_VIOLATION",
|
|
832
|
-
`Expected subgroup stream type 0x10-0x1D or 0x30-0x3D, got 0x${streamType.toString(16)}`,
|
|
833
|
-
0
|
|
834
|
-
)
|
|
835
|
-
};
|
|
836
|
-
}
|
|
837
|
-
const hasSubgroupField = (streamType & 4) !== 0;
|
|
838
|
-
const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
839
|
-
const hasPriority = streamType < 48;
|
|
840
|
-
const trackAlias = r.readVarInt();
|
|
841
|
-
const groupId = r.readVarInt();
|
|
842
|
-
let subgroupId = 0n;
|
|
843
|
-
if (hasSubgroupField) {
|
|
844
|
-
subgroupId = r.readVarInt();
|
|
845
|
-
}
|
|
846
|
-
let publisherPriority = 128;
|
|
847
|
-
if (hasPriority) {
|
|
848
|
-
publisherPriority = r.readUint8();
|
|
849
|
-
}
|
|
850
|
-
const objects = [];
|
|
851
|
-
let prevObjectId = -1n;
|
|
852
|
-
let firstObject = true;
|
|
853
|
-
while (r.remaining > 0) {
|
|
854
|
-
const delta = r.readVarInt();
|
|
855
|
-
let objectId;
|
|
856
|
-
if (firstObject) {
|
|
857
|
-
objectId = delta;
|
|
858
|
-
if (subgroupIsFirstObjId && firstObject) {
|
|
859
|
-
subgroupId = objectId;
|
|
860
|
-
}
|
|
861
|
-
firstObject = false;
|
|
862
|
-
} else {
|
|
863
|
-
objectId = prevObjectId + 1n + delta;
|
|
864
|
-
}
|
|
865
|
-
const payloadLength = Number(r.readVarInt());
|
|
866
|
-
let payload;
|
|
867
|
-
let status;
|
|
868
|
-
if (payloadLength === 0) {
|
|
869
|
-
status = r.readVarInt();
|
|
870
|
-
payload = new Uint8Array(0);
|
|
871
|
-
} else {
|
|
872
|
-
payload = r.readBytes(payloadLength);
|
|
873
|
-
}
|
|
874
|
-
const obj = { type: "object", objectId, payloadLength, payload };
|
|
875
|
-
if (status !== void 0) obj.status = status;
|
|
876
|
-
objects.push(obj);
|
|
877
|
-
prevObjectId = objectId;
|
|
878
|
-
}
|
|
879
|
-
return {
|
|
880
|
-
ok: true,
|
|
881
|
-
value: {
|
|
882
|
-
type: "subgroup",
|
|
883
|
-
headerType: streamType,
|
|
884
|
-
trackAlias,
|
|
885
|
-
groupId,
|
|
886
|
-
subgroupId,
|
|
887
|
-
publisherPriority,
|
|
888
|
-
objects
|
|
889
|
-
},
|
|
890
|
-
bytesRead: r.offset
|
|
891
|
-
};
|
|
892
|
-
} catch (e) {
|
|
893
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError) return { ok: false, error: e };
|
|
894
|
-
throw e;
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
function decodeDatagram(bytes) {
|
|
898
|
-
try {
|
|
899
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(bytes);
|
|
900
|
-
const dgType = Number(r.readVarInt());
|
|
901
|
-
const objectIdAbsent = (dgType & 4) !== 0;
|
|
902
|
-
const endOfGroup = (dgType & 2) !== 0;
|
|
903
|
-
const isStatus = (dgType & 32) !== 0;
|
|
904
|
-
const defaultPriority = (dgType & 8) !== 0;
|
|
905
|
-
const trackAlias = r.readVarInt();
|
|
906
|
-
const groupId = r.readVarInt();
|
|
907
|
-
let objectId = 0n;
|
|
908
|
-
if (!objectIdAbsent) {
|
|
909
|
-
objectId = r.readVarInt();
|
|
910
|
-
}
|
|
911
|
-
let publisherPriority = 128;
|
|
912
|
-
if (!defaultPriority) {
|
|
913
|
-
publisherPriority = r.readUint8();
|
|
914
|
-
}
|
|
915
|
-
let objectStatus;
|
|
916
|
-
let payload;
|
|
917
|
-
if (isStatus) {
|
|
918
|
-
objectStatus = r.readVarInt();
|
|
919
|
-
payload = new Uint8Array(0);
|
|
920
|
-
} else {
|
|
921
|
-
payload = r.readBytes(r.remaining);
|
|
922
|
-
}
|
|
923
|
-
const payloadLength = payload.byteLength;
|
|
924
|
-
const result = {
|
|
925
|
-
type: "datagram",
|
|
926
|
-
datagramType: dgType,
|
|
927
|
-
trackAlias,
|
|
928
|
-
groupId,
|
|
929
|
-
objectId,
|
|
930
|
-
publisherPriority,
|
|
931
|
-
payloadLength,
|
|
932
|
-
payload
|
|
933
|
-
};
|
|
934
|
-
if (endOfGroup) result.endOfGroup = true;
|
|
935
|
-
if (objectStatus !== void 0)
|
|
936
|
-
result.objectStatus = objectStatus;
|
|
937
|
-
return { ok: true, value: result, bytesRead: r.offset };
|
|
938
|
-
} catch (e) {
|
|
939
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError) return { ok: false, error: e };
|
|
940
|
-
throw e;
|
|
941
|
-
}
|
|
942
|
-
}
|
|
943
|
-
function decodeFetchStream(bytes) {
|
|
944
|
-
try {
|
|
945
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(bytes);
|
|
946
|
-
const streamType = r.readVarInt();
|
|
947
|
-
if (streamType !== FETCH_STREAM_TYPE) {
|
|
948
|
-
return {
|
|
949
|
-
ok: false,
|
|
950
|
-
error: new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
951
|
-
"CONSTRAINT_VIOLATION",
|
|
952
|
-
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
953
|
-
0
|
|
954
|
-
)
|
|
955
|
-
};
|
|
956
|
-
}
|
|
957
|
-
const requestId = r.readVarInt();
|
|
958
|
-
const objects = [];
|
|
959
|
-
let prevGroupId = 0n;
|
|
960
|
-
let prevSubgroupId = 0n;
|
|
961
|
-
let prevObjectId = 0n;
|
|
962
|
-
let prevPriority = 128;
|
|
963
|
-
let first = true;
|
|
964
|
-
while (r.remaining > 0) {
|
|
965
|
-
const flags = r.readUint8();
|
|
966
|
-
const subgroupEncoding = flags & 3;
|
|
967
|
-
const objectIdPresent = (flags & 4) !== 0;
|
|
968
|
-
const groupIdPresent = (flags & 8) !== 0;
|
|
969
|
-
const priorityPresent = (flags & 16) !== 0;
|
|
970
|
-
const extensionsPresent = (flags & 32) !== 0;
|
|
971
|
-
if (flags & 192) {
|
|
972
|
-
return {
|
|
973
|
-
ok: false,
|
|
974
|
-
error: new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
975
|
-
"CONSTRAINT_VIOLATION",
|
|
976
|
-
"Reserved bits set in fetch object flags",
|
|
977
|
-
r.offset
|
|
978
|
-
)
|
|
979
|
-
};
|
|
980
|
-
}
|
|
981
|
-
let groupId = prevGroupId;
|
|
982
|
-
if (groupIdPresent) {
|
|
983
|
-
groupId = r.readVarInt();
|
|
984
|
-
} else if (first) {
|
|
985
|
-
return {
|
|
986
|
-
ok: false,
|
|
987
|
-
error: new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
988
|
-
"CONSTRAINT_VIOLATION",
|
|
989
|
-
"First fetch object must include groupId",
|
|
990
|
-
r.offset
|
|
991
|
-
)
|
|
992
|
-
};
|
|
993
|
-
}
|
|
994
|
-
let subgroupId = prevSubgroupId;
|
|
995
|
-
if (subgroupEncoding === 0) {
|
|
996
|
-
subgroupId = 0n;
|
|
997
|
-
} else if (subgroupEncoding === 1) {
|
|
998
|
-
subgroupId = prevSubgroupId;
|
|
999
|
-
} else if (subgroupEncoding === 2) {
|
|
1000
|
-
subgroupId = prevSubgroupId + 1n;
|
|
1001
|
-
} else if (subgroupEncoding === 3) {
|
|
1002
|
-
subgroupId = r.readVarInt();
|
|
1003
|
-
}
|
|
1004
|
-
let objectId = prevObjectId + 1n;
|
|
1005
|
-
if (objectIdPresent) {
|
|
1006
|
-
objectId = r.readVarInt();
|
|
1007
|
-
} else if (first) {
|
|
1008
|
-
return {
|
|
1009
|
-
ok: false,
|
|
1010
|
-
error: new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
1011
|
-
"CONSTRAINT_VIOLATION",
|
|
1012
|
-
"First fetch object must include objectId",
|
|
1013
|
-
r.offset
|
|
1014
|
-
)
|
|
1015
|
-
};
|
|
1016
|
-
}
|
|
1017
|
-
if (priorityPresent) {
|
|
1018
|
-
prevPriority = r.readUint8();
|
|
1019
|
-
}
|
|
1020
|
-
if (extensionsPresent) {
|
|
1021
|
-
const extLen = Number(r.readVarInt());
|
|
1022
|
-
if (extLen > 0) {
|
|
1023
|
-
r.readBytes(extLen);
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
|
-
const payloadLength = Number(r.readVarInt());
|
|
1027
|
-
let payload;
|
|
1028
|
-
let status;
|
|
1029
|
-
if (payloadLength > 0) {
|
|
1030
|
-
payload = r.readBytes(payloadLength);
|
|
1031
|
-
} else {
|
|
1032
|
-
status = r.readVarInt();
|
|
1033
|
-
payload = new Uint8Array(0);
|
|
1034
|
-
}
|
|
1035
|
-
const obj = {
|
|
1036
|
-
type: "object",
|
|
1037
|
-
serializationFlags: flags,
|
|
1038
|
-
groupId,
|
|
1039
|
-
subgroupId,
|
|
1040
|
-
objectId,
|
|
1041
|
-
publisherPriority: prevPriority,
|
|
1042
|
-
payloadLength,
|
|
1043
|
-
payload
|
|
1751
|
+
message = decodeNamespaceDonePayload(payloadReader);
|
|
1752
|
+
} else if (typeId === MSG_SUBSCRIBE_NAMESPACE) {
|
|
1753
|
+
message = decodeSubscribeNamespacePayload(payloadReader);
|
|
1754
|
+
} else if (typeId === MSG_PUBLISH_BLOCKED) {
|
|
1755
|
+
message = decodePublishBlockedPayload(payloadReader);
|
|
1756
|
+
} else if (typeId === MSG_FETCH) {
|
|
1757
|
+
message = decodeFetchPayload(payloadReader);
|
|
1758
|
+
} else if (typeId === MSG_FETCH_OK) {
|
|
1759
|
+
message = decodeFetchOkPayload(payloadReader, payloadLength);
|
|
1760
|
+
} else if (typeId === MSG_TRACK_STATUS) {
|
|
1761
|
+
message = decodeTrackStatusPayload(payloadReader);
|
|
1762
|
+
} else if (typeId === MSG_REQUEST_OK) {
|
|
1763
|
+
message = decodeRequestOkPayload(payloadReader);
|
|
1764
|
+
} else if (typeId === MSG_REQUEST_ERROR) {
|
|
1765
|
+
message = decodeRequestErrorPayload(payloadReader);
|
|
1766
|
+
} else if (typeId === MSG_GOAWAY) {
|
|
1767
|
+
message = decodeGoAwayPayload(payloadReader);
|
|
1768
|
+
} else {
|
|
1769
|
+
return {
|
|
1770
|
+
ok: false,
|
|
1771
|
+
error: new (0, _chunkJL3NEW3Ocjs.DecodeError)(
|
|
1772
|
+
"UNKNOWN_MESSAGE_TYPE",
|
|
1773
|
+
`Unknown message type ID: 0x${typeId.toString(16)}`,
|
|
1774
|
+
0
|
|
1775
|
+
)
|
|
1044
1776
|
};
|
|
1045
|
-
if (status !== void 0) obj.status = status;
|
|
1046
|
-
objects.push(obj);
|
|
1047
|
-
prevGroupId = groupId;
|
|
1048
|
-
prevSubgroupId = subgroupId;
|
|
1049
|
-
prevObjectId = objectId;
|
|
1050
|
-
first = false;
|
|
1051
1777
|
}
|
|
1052
|
-
return {
|
|
1053
|
-
ok: true,
|
|
1054
|
-
value: { type: "fetch", requestId, objects },
|
|
1055
|
-
bytesRead: r.offset
|
|
1056
|
-
};
|
|
1778
|
+
return { ok: true, value: message, bytesRead: reader.offset };
|
|
1057
1779
|
} catch (e) {
|
|
1058
|
-
if (e instanceof
|
|
1059
|
-
|
|
1060
|
-
}
|
|
1061
|
-
}
|
|
1062
|
-
function decodeDataStream(streamType, bytes) {
|
|
1063
|
-
switch (streamType) {
|
|
1064
|
-
case "subgroup":
|
|
1065
|
-
return decodeSubgroupStream(bytes);
|
|
1066
|
-
case "datagram":
|
|
1067
|
-
return decodeDatagram(bytes);
|
|
1068
|
-
case "fetch":
|
|
1069
|
-
return decodeFetchStream(bytes);
|
|
1070
|
-
default: {
|
|
1071
|
-
const _exhaustive = streamType;
|
|
1072
|
-
throw new Error(`Unknown stream type: ${_exhaustive}`);
|
|
1780
|
+
if (e instanceof _chunkJL3NEW3Ocjs.DecodeError) {
|
|
1781
|
+
return { ok: false, error: e };
|
|
1073
1782
|
}
|
|
1783
|
+
throw e;
|
|
1074
1784
|
}
|
|
1075
1785
|
}
|
|
1076
1786
|
function createStreamDecoder() {
|
|
1077
1787
|
let buffer = new Uint8Array(0);
|
|
1788
|
+
let offset = 0;
|
|
1078
1789
|
return new TransformStream({
|
|
1079
1790
|
transform(chunk, controller) {
|
|
1791
|
+
if (offset > 0) {
|
|
1792
|
+
buffer = buffer.subarray(offset);
|
|
1793
|
+
offset = 0;
|
|
1794
|
+
}
|
|
1080
1795
|
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1081
1796
|
newBuffer.set(buffer, 0);
|
|
1082
1797
|
newBuffer.set(chunk, buffer.length);
|
|
1083
1798
|
buffer = newBuffer;
|
|
1084
|
-
while (buffer.length
|
|
1085
|
-
const result = decodeMessage(buffer);
|
|
1799
|
+
while (offset < buffer.length) {
|
|
1800
|
+
const result = decodeMessage(buffer.subarray(offset));
|
|
1086
1801
|
if (!result.ok) {
|
|
1087
1802
|
if (result.error.code === "UNEXPECTED_END") {
|
|
1088
1803
|
break;
|
|
@@ -1091,258 +1806,21 @@ function createStreamDecoder() {
|
|
|
1091
1806
|
return;
|
|
1092
1807
|
}
|
|
1093
1808
|
controller.enqueue(result.value);
|
|
1094
|
-
|
|
1095
|
-
}
|
|
1096
|
-
},
|
|
1097
|
-
flush(controller) {
|
|
1098
|
-
if (buffer.length > 0) {
|
|
1099
|
-
controller.error(
|
|
1100
|
-
new (0, _chunkFWISIR26cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete message data", 0)
|
|
1101
|
-
);
|
|
1102
|
-
}
|
|
1103
|
-
}
|
|
1104
|
-
});
|
|
1105
|
-
}
|
|
1106
|
-
function createSubgroupStreamDecoder() {
|
|
1107
|
-
let buffer = new Uint8Array(0);
|
|
1108
|
-
let headerEmitted = false;
|
|
1109
|
-
let prevObjectId = -1n;
|
|
1110
|
-
let firstObject = true;
|
|
1111
|
-
let _subgroupIsFirstObjId = false;
|
|
1112
|
-
return new TransformStream({
|
|
1113
|
-
transform(chunk, controller) {
|
|
1114
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1115
|
-
newBuffer.set(buffer, 0);
|
|
1116
|
-
newBuffer.set(chunk, buffer.length);
|
|
1117
|
-
buffer = newBuffer;
|
|
1118
|
-
if (!headerEmitted) {
|
|
1119
|
-
try {
|
|
1120
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(buffer);
|
|
1121
|
-
const streamType = Number(r.readVarInt());
|
|
1122
|
-
if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
|
|
1123
|
-
controller.error(
|
|
1124
|
-
new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
1125
|
-
"CONSTRAINT_VIOLATION",
|
|
1126
|
-
`Expected subgroup stream type, got 0x${streamType.toString(16)}`,
|
|
1127
|
-
0
|
|
1128
|
-
)
|
|
1129
|
-
);
|
|
1130
|
-
return;
|
|
1131
|
-
}
|
|
1132
|
-
const hasSubgroupField = (streamType & 4) !== 0;
|
|
1133
|
-
_subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
1134
|
-
const hasPriority = streamType < 48;
|
|
1135
|
-
const trackAlias = r.readVarInt();
|
|
1136
|
-
const groupId = r.readVarInt();
|
|
1137
|
-
let subgroupId = 0n;
|
|
1138
|
-
if (hasSubgroupField) {
|
|
1139
|
-
subgroupId = r.readVarInt();
|
|
1140
|
-
}
|
|
1141
|
-
let publisherPriority = 128;
|
|
1142
|
-
if (hasPriority) {
|
|
1143
|
-
publisherPriority = r.readUint8();
|
|
1144
|
-
}
|
|
1145
|
-
controller.enqueue({
|
|
1146
|
-
type: "subgroup_header",
|
|
1147
|
-
trackAlias,
|
|
1148
|
-
groupId,
|
|
1149
|
-
subgroupId,
|
|
1150
|
-
publisherPriority
|
|
1151
|
-
});
|
|
1152
|
-
headerEmitted = true;
|
|
1153
|
-
buffer = buffer.slice(r.offset);
|
|
1154
|
-
} catch (e) {
|
|
1155
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
1156
|
-
return;
|
|
1157
|
-
}
|
|
1158
|
-
controller.error(e);
|
|
1159
|
-
return;
|
|
1160
|
-
}
|
|
1161
|
-
}
|
|
1162
|
-
while (buffer.length > 0) {
|
|
1163
|
-
try {
|
|
1164
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(buffer);
|
|
1165
|
-
const delta = r.readVarInt();
|
|
1166
|
-
let objectId;
|
|
1167
|
-
if (firstObject) {
|
|
1168
|
-
objectId = delta;
|
|
1169
|
-
firstObject = false;
|
|
1170
|
-
} else {
|
|
1171
|
-
objectId = prevObjectId + 1n + delta;
|
|
1172
|
-
}
|
|
1173
|
-
const payloadLength = Number(r.readVarInt());
|
|
1174
|
-
const payload = payloadLength > 0 ? r.readBytes(payloadLength) : new Uint8Array(0);
|
|
1175
|
-
controller.enqueue({ type: "object", objectId, payloadLength, payload });
|
|
1176
|
-
buffer = buffer.slice(r.offset);
|
|
1177
|
-
prevObjectId = objectId;
|
|
1178
|
-
} catch (e) {
|
|
1179
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
1180
|
-
break;
|
|
1181
|
-
}
|
|
1182
|
-
controller.error(e);
|
|
1183
|
-
return;
|
|
1184
|
-
}
|
|
1185
|
-
}
|
|
1186
|
-
},
|
|
1187
|
-
flush(controller) {
|
|
1188
|
-
if (buffer.length > 0) {
|
|
1189
|
-
controller.error(new (0, _chunkFWISIR26cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
1190
|
-
}
|
|
1191
|
-
}
|
|
1192
|
-
});
|
|
1193
|
-
}
|
|
1194
|
-
function createFetchStreamDecoder() {
|
|
1195
|
-
let buffer = new Uint8Array(0);
|
|
1196
|
-
let headerEmitted = false;
|
|
1197
|
-
return new TransformStream({
|
|
1198
|
-
transform(chunk, controller) {
|
|
1199
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1200
|
-
newBuffer.set(buffer, 0);
|
|
1201
|
-
newBuffer.set(chunk, buffer.length);
|
|
1202
|
-
buffer = newBuffer;
|
|
1203
|
-
if (!headerEmitted) {
|
|
1204
|
-
try {
|
|
1205
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(buffer);
|
|
1206
|
-
const streamType = r.readVarInt();
|
|
1207
|
-
if (streamType !== FETCH_STREAM_TYPE) {
|
|
1208
|
-
controller.error(
|
|
1209
|
-
new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
1210
|
-
"CONSTRAINT_VIOLATION",
|
|
1211
|
-
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
1212
|
-
0
|
|
1213
|
-
)
|
|
1214
|
-
);
|
|
1215
|
-
return;
|
|
1216
|
-
}
|
|
1217
|
-
const requestId = r.readVarInt();
|
|
1218
|
-
controller.enqueue({ type: "fetch_header", requestId });
|
|
1219
|
-
headerEmitted = true;
|
|
1220
|
-
buffer = buffer.slice(r.offset);
|
|
1221
|
-
} catch (e) {
|
|
1222
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
1223
|
-
return;
|
|
1224
|
-
}
|
|
1225
|
-
controller.error(e);
|
|
1226
|
-
return;
|
|
1227
|
-
}
|
|
1228
|
-
}
|
|
1229
|
-
while (buffer.length > 0) {
|
|
1230
|
-
try {
|
|
1231
|
-
const r = new (0, _chunkFWISIR26cjs.BufferReader)(buffer);
|
|
1232
|
-
const flags = r.readUint8();
|
|
1233
|
-
const objectIdPresent = (flags & 4) !== 0;
|
|
1234
|
-
const groupIdPresent = (flags & 8) !== 0;
|
|
1235
|
-
const priorityPresent = (flags & 16) !== 0;
|
|
1236
|
-
const extensionsPresent = (flags & 32) !== 0;
|
|
1237
|
-
const subgroupEncoding = flags & 3;
|
|
1238
|
-
if (groupIdPresent) r.readVarInt();
|
|
1239
|
-
if (subgroupEncoding === 3) r.readVarInt();
|
|
1240
|
-
let objectId = 0n;
|
|
1241
|
-
if (objectIdPresent) objectId = r.readVarInt();
|
|
1242
|
-
if (priorityPresent) r.readUint8();
|
|
1243
|
-
if (extensionsPresent) {
|
|
1244
|
-
const extLen = Number(r.readVarInt());
|
|
1245
|
-
if (extLen > 0) r.readBytes(extLen);
|
|
1246
|
-
}
|
|
1247
|
-
const payloadLength = Number(r.readVarInt());
|
|
1248
|
-
const payload = payloadLength > 0 ? r.readBytes(payloadLength) : new Uint8Array(0);
|
|
1249
|
-
controller.enqueue({ type: "object", objectId, payloadLength, payload });
|
|
1250
|
-
buffer = buffer.slice(r.offset);
|
|
1251
|
-
} catch (e) {
|
|
1252
|
-
if (e instanceof _chunkFWISIR26cjs.DecodeError && e.code === "UNEXPECTED_END") {
|
|
1253
|
-
break;
|
|
1254
|
-
}
|
|
1255
|
-
controller.error(e);
|
|
1256
|
-
return;
|
|
1257
|
-
}
|
|
1258
|
-
}
|
|
1259
|
-
},
|
|
1260
|
-
flush(controller) {
|
|
1261
|
-
if (buffer.length > 0) {
|
|
1262
|
-
controller.error(new (0, _chunkFWISIR26cjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
1263
|
-
}
|
|
1264
|
-
}
|
|
1265
|
-
});
|
|
1266
|
-
}
|
|
1267
|
-
function createDataStreamDecoder() {
|
|
1268
|
-
let buffer = new Uint8Array(0);
|
|
1269
|
-
let inner = null;
|
|
1270
|
-
return new TransformStream({
|
|
1271
|
-
transform(chunk, controller) {
|
|
1272
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1273
|
-
newBuffer.set(buffer, 0);
|
|
1274
|
-
newBuffer.set(chunk, buffer.length);
|
|
1275
|
-
buffer = newBuffer;
|
|
1276
|
-
if (inner === null) {
|
|
1277
|
-
if (buffer.length === 0) return;
|
|
1278
|
-
const firstByte = buffer[0];
|
|
1279
|
-
if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
|
|
1280
|
-
const decoder = createSubgroupStreamDecoder();
|
|
1281
|
-
inner = decoder;
|
|
1282
|
-
} else if (firstByte === 5) {
|
|
1283
|
-
const decoder = createFetchStreamDecoder();
|
|
1284
|
-
inner = decoder;
|
|
1285
|
-
} else {
|
|
1286
|
-
controller.error(
|
|
1287
|
-
new (0, _chunkFWISIR26cjs.DecodeError)(
|
|
1288
|
-
"CONSTRAINT_VIOLATION",
|
|
1289
|
-
`Unknown data stream type: 0x${firstByte.toString(16)}`,
|
|
1290
|
-
0
|
|
1291
|
-
)
|
|
1292
|
-
);
|
|
1293
|
-
return;
|
|
1294
|
-
}
|
|
1809
|
+
offset += result.bytesRead;
|
|
1295
1810
|
}
|
|
1296
1811
|
},
|
|
1297
1812
|
flush(controller) {
|
|
1298
|
-
if (buffer.length
|
|
1299
|
-
const firstByte = buffer[0];
|
|
1300
|
-
let result;
|
|
1301
|
-
if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
|
|
1302
|
-
result = decodeSubgroupStream(buffer);
|
|
1303
|
-
} else if (firstByte === 5) {
|
|
1304
|
-
result = decodeFetchStream(buffer);
|
|
1305
|
-
} else {
|
|
1813
|
+
if (offset < buffer.length) {
|
|
1306
1814
|
controller.error(
|
|
1307
|
-
new (0,
|
|
1308
|
-
"CONSTRAINT_VIOLATION",
|
|
1309
|
-
`Unknown data stream type: 0x${firstByte.toString(16)}`,
|
|
1310
|
-
0
|
|
1311
|
-
)
|
|
1815
|
+
new (0, _chunkJL3NEW3Ocjs.DecodeError)("UNEXPECTED_END", "Stream ended with incomplete message data", 0)
|
|
1312
1816
|
);
|
|
1313
|
-
return;
|
|
1314
|
-
}
|
|
1315
|
-
if (!result.ok) {
|
|
1316
|
-
controller.error(result.error);
|
|
1317
|
-
return;
|
|
1318
|
-
}
|
|
1319
|
-
const stream = result.value;
|
|
1320
|
-
if (stream.type === "subgroup") {
|
|
1321
|
-
controller.enqueue({
|
|
1322
|
-
type: "subgroup_header",
|
|
1323
|
-
trackAlias: stream.trackAlias,
|
|
1324
|
-
groupId: stream.groupId,
|
|
1325
|
-
subgroupId: stream.subgroupId,
|
|
1326
|
-
publisherPriority: stream.publisherPriority
|
|
1327
|
-
});
|
|
1328
|
-
for (const obj of stream.objects) {
|
|
1329
|
-
controller.enqueue(obj);
|
|
1330
|
-
}
|
|
1331
|
-
} else if (stream.type === "fetch") {
|
|
1332
|
-
controller.enqueue({
|
|
1333
|
-
type: "fetch_header",
|
|
1334
|
-
requestId: stream.requestId
|
|
1335
|
-
});
|
|
1336
|
-
for (const obj of stream.objects) {
|
|
1337
|
-
controller.enqueue(obj);
|
|
1338
|
-
}
|
|
1339
1817
|
}
|
|
1340
1818
|
}
|
|
1341
1819
|
});
|
|
1342
1820
|
}
|
|
1343
1821
|
function createDraft17Codec() {
|
|
1344
1822
|
return {
|
|
1345
|
-
draft: "
|
|
1823
|
+
draft: "17",
|
|
1346
1824
|
encodeMessage,
|
|
1347
1825
|
decodeMessage,
|
|
1348
1826
|
encodeSubgroupStream,
|
|
@@ -1398,4 +1876,4 @@ function createDraft17Codec() {
|
|
|
1398
1876
|
|
|
1399
1877
|
|
|
1400
1878
|
|
|
1401
|
-
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_DONE = MSG_PUBLISH_DONE; exports.MSG_TRACK_STATUS = MSG_TRACK_STATUS; exports.MSG_NAMESPACE_DONE = MSG_NAMESPACE_DONE; exports.MSG_PUBLISH_BLOCKED = MSG_PUBLISH_BLOCKED; exports.MSG_GOAWAY = MSG_GOAWAY; exports.MSG_SUBSCRIBE_NAMESPACE = MSG_SUBSCRIBE_NAMESPACE; exports.MSG_FETCH = MSG_FETCH; exports.MSG_FETCH_OK = MSG_FETCH_OK; exports.MSG_PUBLISH = MSG_PUBLISH; exports.MSG_PUBLISH_OK = MSG_PUBLISH_OK; exports.MSG_SETUP = MSG_SETUP; exports.SETUP_OPT_PATH = SETUP_OPT_PATH; exports.SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE = SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE; exports.SETUP_OPT_AUTHORITY = SETUP_OPT_AUTHORITY; exports.SETUP_OPT_MOQT_IMPLEMENTATION = SETUP_OPT_MOQT_IMPLEMENTATION; exports.MESSAGE_TYPE_MAP = MESSAGE_TYPE_MAP; exports.MESSAGE_ID_MAP = MESSAGE_ID_MAP; exports.
|
|
1879
|
+
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_DONE = MSG_PUBLISH_DONE; exports.MSG_TRACK_STATUS = MSG_TRACK_STATUS; exports.MSG_NAMESPACE_DONE = MSG_NAMESPACE_DONE; exports.MSG_PUBLISH_BLOCKED = MSG_PUBLISH_BLOCKED; exports.MSG_GOAWAY = MSG_GOAWAY; exports.MSG_SUBSCRIBE_NAMESPACE = MSG_SUBSCRIBE_NAMESPACE; exports.MSG_FETCH = MSG_FETCH; exports.MSG_FETCH_OK = MSG_FETCH_OK; exports.MSG_PUBLISH = MSG_PUBLISH; exports.MSG_PUBLISH_OK = MSG_PUBLISH_OK; exports.MSG_SETUP = MSG_SETUP; exports.SETUP_OPT_PATH = SETUP_OPT_PATH; exports.SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE = SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE; exports.SETUP_OPT_AUTHORITY = SETUP_OPT_AUTHORITY; exports.SETUP_OPT_MOQT_IMPLEMENTATION = SETUP_OPT_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.createDraft17Codec = createDraft17Codec;
|