@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
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BufferReader,
|
|
3
3
|
BufferWriter,
|
|
4
|
-
DecodeError
|
|
5
|
-
|
|
4
|
+
DecodeError,
|
|
5
|
+
bytesToHex,
|
|
6
|
+
hexToBytes
|
|
7
|
+
} from "./chunk-VOU7PNHI.js";
|
|
6
8
|
|
|
7
9
|
// src/drafts/draft14/messages.ts
|
|
8
10
|
var MSG_SUBSCRIBE_UPDATE = 0x02n;
|
|
@@ -74,26 +76,732 @@ var MESSAGE_ID_MAP = new Map(
|
|
|
74
76
|
[...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
|
|
75
77
|
);
|
|
76
78
|
|
|
77
|
-
// src/drafts/draft14/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
// src/drafts/draft14/types.ts
|
|
80
|
+
var FilterType = {
|
|
81
|
+
NextGroupStart: 1n,
|
|
82
|
+
LargestObject: 2n,
|
|
83
|
+
AbsoluteStart: 3n,
|
|
84
|
+
AbsoluteRange: 4n
|
|
85
|
+
};
|
|
86
|
+
var GroupOrder = {
|
|
87
|
+
PublisherChoice: 0n,
|
|
88
|
+
Ascending: 1n,
|
|
89
|
+
Descending: 2n
|
|
90
|
+
};
|
|
91
|
+
var FetchType = {
|
|
92
|
+
Standalone: 1n,
|
|
93
|
+
RelativeJoining: 2n,
|
|
94
|
+
AbsoluteJoining: 3n
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// src/drafts/draft14/data-streams.ts
|
|
98
|
+
var FETCH_STREAM_TYPE = 0x05n;
|
|
99
|
+
function isValidSubgroupType(t) {
|
|
100
|
+
return t >= 16 && t <= 21 || t >= 24 && t <= 29;
|
|
101
|
+
}
|
|
102
|
+
function encodeSubgroupStream(stream) {
|
|
103
|
+
const w = new BufferWriter();
|
|
104
|
+
w.writeVarInt(BigInt(stream.headerType));
|
|
105
|
+
w.writeVarInt(stream.trackAlias);
|
|
106
|
+
w.writeVarInt(stream.groupId);
|
|
107
|
+
const hasSubgroupField = (stream.headerType & 4) !== 0;
|
|
108
|
+
const extensionsPresent = (stream.headerType & 1) !== 0;
|
|
109
|
+
if (hasSubgroupField) {
|
|
110
|
+
w.writeVarInt(stream.subgroupId);
|
|
111
|
+
}
|
|
112
|
+
w.writeUint8(stream.publisherPriority);
|
|
113
|
+
let prevObjectId = -1n;
|
|
114
|
+
let first = true;
|
|
115
|
+
for (const obj of stream.objects) {
|
|
116
|
+
const delta = first ? obj.objectId : obj.objectId - prevObjectId - 1n;
|
|
117
|
+
w.writeVarInt(delta);
|
|
118
|
+
first = false;
|
|
119
|
+
prevObjectId = obj.objectId;
|
|
120
|
+
if (extensionsPresent) {
|
|
121
|
+
w.writeVarInt(BigInt(obj.extensionData.length));
|
|
122
|
+
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
|
|
123
|
+
}
|
|
124
|
+
if (obj.payloadLength === 0) {
|
|
125
|
+
w.writeVarInt(0);
|
|
126
|
+
w.writeVarInt(obj.status ?? 0n);
|
|
127
|
+
} else {
|
|
128
|
+
w.writeVarInt(obj.payloadLength);
|
|
129
|
+
w.writeBytes(obj.payload);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return w.finish();
|
|
133
|
+
}
|
|
134
|
+
function encodeDatagram(dg) {
|
|
135
|
+
const w = new BufferWriter();
|
|
136
|
+
w.writeVarInt(BigInt(dg.datagramType));
|
|
137
|
+
w.writeVarInt(dg.trackAlias);
|
|
138
|
+
w.writeVarInt(dg.groupId);
|
|
139
|
+
const objectIdPresent = (dg.datagramType & 4) === 0;
|
|
140
|
+
const isStatus = dg.datagramType >= 32;
|
|
141
|
+
const extensionsPresent = (dg.datagramType & 1) !== 0;
|
|
142
|
+
if (objectIdPresent) {
|
|
143
|
+
w.writeVarInt(dg.objectId);
|
|
144
|
+
}
|
|
145
|
+
w.writeUint8(dg.publisherPriority);
|
|
146
|
+
if (extensionsPresent) {
|
|
147
|
+
const extData = dg.extensionData ?? new Uint8Array(0);
|
|
148
|
+
w.writeVarInt(extData.byteLength);
|
|
149
|
+
if (extData.byteLength > 0) w.writeBytes(extData);
|
|
150
|
+
}
|
|
151
|
+
if (isStatus) {
|
|
152
|
+
w.writeVarInt(dg.objectStatus ?? 0n);
|
|
153
|
+
} else {
|
|
154
|
+
w.writeBytes(dg.payload);
|
|
155
|
+
}
|
|
156
|
+
return w.finish();
|
|
157
|
+
}
|
|
158
|
+
function encodeFetchStream(stream) {
|
|
159
|
+
const w = new BufferWriter();
|
|
160
|
+
w.writeVarInt(FETCH_STREAM_TYPE);
|
|
161
|
+
w.writeVarInt(stream.requestId);
|
|
162
|
+
for (const obj of stream.objects) {
|
|
163
|
+
w.writeVarInt(obj.groupId);
|
|
164
|
+
w.writeVarInt(obj.subgroupId);
|
|
165
|
+
w.writeVarInt(obj.objectId);
|
|
166
|
+
w.writeUint8(obj.publisherPriority);
|
|
167
|
+
w.writeVarInt(BigInt(obj.extensionData.length));
|
|
168
|
+
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
|
|
169
|
+
if (obj.payloadLength === 0) {
|
|
170
|
+
w.writeVarInt(0);
|
|
171
|
+
w.writeVarInt(obj.status ?? 0n);
|
|
172
|
+
} else {
|
|
173
|
+
w.writeVarInt(obj.payloadLength);
|
|
174
|
+
w.writeBytes(obj.payload);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return w.finish();
|
|
178
|
+
}
|
|
179
|
+
function decodeSubgroupStream(bytes) {
|
|
180
|
+
try {
|
|
181
|
+
const r = new BufferReader(bytes);
|
|
182
|
+
const streamType = Number(r.readVarInt());
|
|
183
|
+
if (!isValidSubgroupType(streamType)) {
|
|
184
|
+
return {
|
|
185
|
+
ok: false,
|
|
186
|
+
error: new DecodeError(
|
|
187
|
+
"CONSTRAINT_VIOLATION",
|
|
188
|
+
`Expected subgroup stream type 0x10-0x1D, got 0x${streamType.toString(16)}`,
|
|
189
|
+
0
|
|
190
|
+
)
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
const extensionsPresent = (streamType & 1) !== 0;
|
|
194
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
195
|
+
const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
196
|
+
const trackAlias = r.readVarInt();
|
|
197
|
+
const groupId = r.readVarInt();
|
|
198
|
+
let subgroupId = 0n;
|
|
199
|
+
if (hasSubgroupField) {
|
|
200
|
+
subgroupId = r.readVarInt();
|
|
201
|
+
}
|
|
202
|
+
const publisherPriority = r.readUint8();
|
|
203
|
+
const objects = [];
|
|
204
|
+
let prevObjectId = -1n;
|
|
205
|
+
let firstObject = true;
|
|
206
|
+
while (r.remaining > 0) {
|
|
207
|
+
const byteOffset = r.offset;
|
|
208
|
+
const delta = r.readVarInt();
|
|
209
|
+
let objectId;
|
|
210
|
+
if (firstObject) {
|
|
211
|
+
objectId = delta;
|
|
212
|
+
if (subgroupIsFirstObjId) {
|
|
213
|
+
subgroupId = objectId;
|
|
214
|
+
}
|
|
215
|
+
firstObject = false;
|
|
216
|
+
} else {
|
|
217
|
+
objectId = prevObjectId + 1n + delta;
|
|
218
|
+
}
|
|
219
|
+
let extensionData = new Uint8Array(0);
|
|
220
|
+
if (extensionsPresent) {
|
|
221
|
+
const extLen = Number(r.readVarInt());
|
|
222
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
223
|
+
}
|
|
224
|
+
const payloadLength = Number(r.readVarInt());
|
|
225
|
+
let payload;
|
|
226
|
+
let status;
|
|
227
|
+
let payloadByteOffset;
|
|
228
|
+
if (payloadLength === 0) {
|
|
229
|
+
status = r.readVarInt();
|
|
230
|
+
payloadByteOffset = r.offset;
|
|
231
|
+
payload = new Uint8Array(0);
|
|
232
|
+
} else {
|
|
233
|
+
payloadByteOffset = r.offset;
|
|
234
|
+
payload = r.readBytesView(payloadLength);
|
|
235
|
+
}
|
|
236
|
+
const obj = {
|
|
237
|
+
type: "object",
|
|
238
|
+
byteOffset,
|
|
239
|
+
payloadByteOffset,
|
|
240
|
+
objectId,
|
|
241
|
+
payloadLength,
|
|
242
|
+
payload,
|
|
243
|
+
extensionData
|
|
244
|
+
};
|
|
245
|
+
if (status !== void 0) obj.status = status;
|
|
246
|
+
objects.push(obj);
|
|
247
|
+
prevObjectId = objectId;
|
|
248
|
+
}
|
|
249
|
+
return {
|
|
250
|
+
ok: true,
|
|
251
|
+
value: {
|
|
252
|
+
type: "subgroup",
|
|
253
|
+
headerType: streamType,
|
|
254
|
+
trackAlias,
|
|
255
|
+
groupId,
|
|
256
|
+
subgroupId,
|
|
257
|
+
publisherPriority,
|
|
258
|
+
objects
|
|
259
|
+
},
|
|
260
|
+
bytesRead: r.offset
|
|
261
|
+
};
|
|
262
|
+
} catch (e) {
|
|
263
|
+
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
264
|
+
throw e;
|
|
82
265
|
}
|
|
83
|
-
return hex;
|
|
84
266
|
}
|
|
85
|
-
function
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
267
|
+
function decodeDatagram(bytes) {
|
|
268
|
+
try {
|
|
269
|
+
const r = new BufferReader(bytes);
|
|
270
|
+
const dgType = Number(r.readVarInt());
|
|
271
|
+
const validDatagram = dgType >= 0 && dgType <= 7 || dgType === 32 || dgType === 33;
|
|
272
|
+
if (!validDatagram) {
|
|
273
|
+
return {
|
|
274
|
+
ok: false,
|
|
275
|
+
error: new DecodeError(
|
|
276
|
+
"CONSTRAINT_VIOLATION",
|
|
277
|
+
`Expected datagram type 0x00-0x07 or 0x20-0x21, got 0x${dgType.toString(16)}`,
|
|
278
|
+
0
|
|
279
|
+
)
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
const objectIdPresent = (dgType & 4) === 0;
|
|
283
|
+
const endOfGroup = (dgType & 2) !== 0;
|
|
284
|
+
const extensionsPresent = (dgType & 1) !== 0;
|
|
285
|
+
const isStatus = dgType >= 32;
|
|
286
|
+
const trackAlias = r.readVarInt();
|
|
287
|
+
const groupId = r.readVarInt();
|
|
288
|
+
let objectId = 0n;
|
|
289
|
+
if (objectIdPresent) {
|
|
290
|
+
objectId = r.readVarInt();
|
|
291
|
+
}
|
|
292
|
+
const publisherPriority = r.readUint8();
|
|
293
|
+
let extensionData;
|
|
294
|
+
if (extensionsPresent) {
|
|
295
|
+
const extLen = Number(r.readVarInt());
|
|
296
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
297
|
+
}
|
|
298
|
+
let objectStatus;
|
|
299
|
+
let payload;
|
|
300
|
+
if (isStatus) {
|
|
301
|
+
objectStatus = r.readVarInt();
|
|
302
|
+
payload = new Uint8Array(0);
|
|
303
|
+
} else {
|
|
304
|
+
payload = r.readBytesView(r.remaining);
|
|
305
|
+
}
|
|
306
|
+
const payloadLength = payload.byteLength;
|
|
307
|
+
const result = {
|
|
308
|
+
type: "datagram",
|
|
309
|
+
datagramType: dgType,
|
|
310
|
+
trackAlias,
|
|
311
|
+
groupId,
|
|
312
|
+
objectId,
|
|
313
|
+
publisherPriority,
|
|
314
|
+
payloadLength,
|
|
315
|
+
payload
|
|
316
|
+
};
|
|
317
|
+
if (endOfGroup) result.endOfGroup = true;
|
|
318
|
+
if (objectStatus !== void 0)
|
|
319
|
+
result.objectStatus = objectStatus;
|
|
320
|
+
if (extensionData !== void 0)
|
|
321
|
+
result.extensionData = extensionData;
|
|
322
|
+
return { ok: true, value: result, bytesRead: r.offset };
|
|
323
|
+
} catch (e) {
|
|
324
|
+
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
325
|
+
throw e;
|
|
89
326
|
}
|
|
90
|
-
return bytes;
|
|
91
327
|
}
|
|
92
|
-
function
|
|
328
|
+
function decodeFetchStream(bytes) {
|
|
329
|
+
try {
|
|
330
|
+
const r = new BufferReader(bytes);
|
|
331
|
+
const streamType = r.readVarInt();
|
|
332
|
+
if (streamType !== FETCH_STREAM_TYPE) {
|
|
333
|
+
return {
|
|
334
|
+
ok: false,
|
|
335
|
+
error: new DecodeError(
|
|
336
|
+
"CONSTRAINT_VIOLATION",
|
|
337
|
+
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
338
|
+
0
|
|
339
|
+
)
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
const requestId = r.readVarInt();
|
|
343
|
+
const objects = [];
|
|
344
|
+
while (r.remaining > 0) {
|
|
345
|
+
const byteOffset = r.offset;
|
|
346
|
+
const groupId = r.readVarInt();
|
|
347
|
+
const subgroupId = r.readVarInt();
|
|
348
|
+
const objectId = r.readVarInt();
|
|
349
|
+
const publisherPriority = r.readUint8();
|
|
350
|
+
const extLen = Number(r.readVarInt());
|
|
351
|
+
const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
352
|
+
const payloadLength = Number(r.readVarInt());
|
|
353
|
+
let payload;
|
|
354
|
+
let status;
|
|
355
|
+
let payloadByteOffset;
|
|
356
|
+
if (payloadLength === 0) {
|
|
357
|
+
status = r.readVarInt();
|
|
358
|
+
payloadByteOffset = r.offset;
|
|
359
|
+
payload = new Uint8Array(0);
|
|
360
|
+
} else {
|
|
361
|
+
payloadByteOffset = r.offset;
|
|
362
|
+
payload = r.readBytesView(payloadLength);
|
|
363
|
+
}
|
|
364
|
+
const obj = {
|
|
365
|
+
type: "object",
|
|
366
|
+
byteOffset,
|
|
367
|
+
payloadByteOffset,
|
|
368
|
+
groupId,
|
|
369
|
+
subgroupId,
|
|
370
|
+
objectId,
|
|
371
|
+
publisherPriority,
|
|
372
|
+
payloadLength,
|
|
373
|
+
payload,
|
|
374
|
+
extensionData
|
|
375
|
+
};
|
|
376
|
+
if (status !== void 0) obj.status = status;
|
|
377
|
+
objects.push(obj);
|
|
378
|
+
}
|
|
379
|
+
return {
|
|
380
|
+
ok: true,
|
|
381
|
+
value: { type: "fetch", requestId, objects },
|
|
382
|
+
bytesRead: r.offset
|
|
383
|
+
};
|
|
384
|
+
} catch (e) {
|
|
385
|
+
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
386
|
+
throw e;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
function decodeDataStream(streamType, bytes) {
|
|
390
|
+
switch (streamType) {
|
|
391
|
+
case "subgroup":
|
|
392
|
+
return decodeSubgroupStream(bytes);
|
|
393
|
+
case "datagram":
|
|
394
|
+
return decodeDatagram(bytes);
|
|
395
|
+
case "fetch":
|
|
396
|
+
return decodeFetchStream(bytes);
|
|
397
|
+
default: {
|
|
398
|
+
const _exhaustive = streamType;
|
|
399
|
+
throw new Error(`Unknown stream type: ${_exhaustive}`);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
function createSubgroupStreamDecoder() {
|
|
404
|
+
let buffer = new Uint8Array(0);
|
|
405
|
+
let offset = 0;
|
|
406
|
+
let headerEmitted = false;
|
|
407
|
+
let extensionsPresent = false;
|
|
408
|
+
let prevObjectId = -1n;
|
|
409
|
+
let firstObject = true;
|
|
410
|
+
return new TransformStream({
|
|
411
|
+
transform(chunk, controller) {
|
|
412
|
+
if (offset > 0) {
|
|
413
|
+
buffer = buffer.subarray(offset);
|
|
414
|
+
offset = 0;
|
|
415
|
+
}
|
|
416
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
417
|
+
newBuffer.set(buffer, 0);
|
|
418
|
+
newBuffer.set(chunk, buffer.length);
|
|
419
|
+
buffer = newBuffer;
|
|
420
|
+
if (!headerEmitted) {
|
|
421
|
+
try {
|
|
422
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
423
|
+
const streamType = Number(r.readVarInt());
|
|
424
|
+
if (!isValidSubgroupType(streamType)) {
|
|
425
|
+
controller.error(
|
|
426
|
+
new DecodeError(
|
|
427
|
+
"CONSTRAINT_VIOLATION",
|
|
428
|
+
`Expected subgroup stream type 0x10-0x1D, got 0x${streamType.toString(16)}`,
|
|
429
|
+
0
|
|
430
|
+
)
|
|
431
|
+
);
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
extensionsPresent = (streamType & 1) !== 0;
|
|
435
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
436
|
+
const trackAlias = r.readVarInt();
|
|
437
|
+
const groupId = r.readVarInt();
|
|
438
|
+
let subgroupId = 0n;
|
|
439
|
+
if (hasSubgroupField) {
|
|
440
|
+
subgroupId = r.readVarInt();
|
|
441
|
+
}
|
|
442
|
+
const publisherPriority = r.readUint8();
|
|
443
|
+
controller.enqueue({
|
|
444
|
+
type: "subgroup_header",
|
|
445
|
+
headerType: streamType,
|
|
446
|
+
trackAlias,
|
|
447
|
+
groupId,
|
|
448
|
+
subgroupId,
|
|
449
|
+
publisherPriority
|
|
450
|
+
});
|
|
451
|
+
headerEmitted = true;
|
|
452
|
+
offset += r.offset;
|
|
453
|
+
} catch (e) {
|
|
454
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
controller.error(e);
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
while (offset < buffer.length) {
|
|
462
|
+
try {
|
|
463
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
464
|
+
const byteOffset = r.offset;
|
|
465
|
+
const delta = r.readVarInt();
|
|
466
|
+
const objectId = firstObject ? delta : prevObjectId + 1n + delta;
|
|
467
|
+
firstObject = false;
|
|
468
|
+
let extensionData = new Uint8Array(0);
|
|
469
|
+
if (extensionsPresent) {
|
|
470
|
+
const extLen = Number(r.readVarInt());
|
|
471
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
472
|
+
}
|
|
473
|
+
const payloadLength = Number(r.readVarInt());
|
|
474
|
+
let payload;
|
|
475
|
+
let status;
|
|
476
|
+
let payloadByteOffset;
|
|
477
|
+
if (payloadLength === 0) {
|
|
478
|
+
status = r.readVarInt();
|
|
479
|
+
payloadByteOffset = r.offset;
|
|
480
|
+
payload = new Uint8Array(0);
|
|
481
|
+
} else {
|
|
482
|
+
payloadByteOffset = r.offset;
|
|
483
|
+
payload = r.readBytesView(payloadLength);
|
|
484
|
+
}
|
|
485
|
+
const obj = {
|
|
486
|
+
type: "object",
|
|
487
|
+
byteOffset,
|
|
488
|
+
payloadByteOffset,
|
|
489
|
+
objectId,
|
|
490
|
+
payloadLength,
|
|
491
|
+
payload,
|
|
492
|
+
extensionData
|
|
493
|
+
};
|
|
494
|
+
if (status !== void 0) obj.status = status;
|
|
495
|
+
controller.enqueue(obj);
|
|
496
|
+
prevObjectId = objectId;
|
|
497
|
+
offset += r.offset;
|
|
498
|
+
} catch (e) {
|
|
499
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
500
|
+
break;
|
|
501
|
+
}
|
|
502
|
+
controller.error(e);
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
},
|
|
507
|
+
flush(controller) {
|
|
508
|
+
if (offset < buffer.length) {
|
|
509
|
+
controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
function createFetchStreamDecoder() {
|
|
515
|
+
let buffer = new Uint8Array(0);
|
|
516
|
+
let offset = 0;
|
|
517
|
+
let headerEmitted = false;
|
|
518
|
+
return new TransformStream({
|
|
519
|
+
transform(chunk, controller) {
|
|
520
|
+
if (offset > 0) {
|
|
521
|
+
buffer = buffer.subarray(offset);
|
|
522
|
+
offset = 0;
|
|
523
|
+
}
|
|
524
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
525
|
+
newBuffer.set(buffer, 0);
|
|
526
|
+
newBuffer.set(chunk, buffer.length);
|
|
527
|
+
buffer = newBuffer;
|
|
528
|
+
if (!headerEmitted) {
|
|
529
|
+
try {
|
|
530
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
531
|
+
const streamType = r.readVarInt();
|
|
532
|
+
if (streamType !== FETCH_STREAM_TYPE) {
|
|
533
|
+
controller.error(
|
|
534
|
+
new DecodeError(
|
|
535
|
+
"CONSTRAINT_VIOLATION",
|
|
536
|
+
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
537
|
+
0
|
|
538
|
+
)
|
|
539
|
+
);
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
const requestId = r.readVarInt();
|
|
543
|
+
controller.enqueue({ type: "fetch_header", requestId });
|
|
544
|
+
headerEmitted = true;
|
|
545
|
+
offset += r.offset;
|
|
546
|
+
} catch (e) {
|
|
547
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
550
|
+
controller.error(e);
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
while (offset < buffer.length) {
|
|
555
|
+
try {
|
|
556
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
557
|
+
const byteOffset = r.offset;
|
|
558
|
+
const groupId = r.readVarInt();
|
|
559
|
+
const subgroupId = r.readVarInt();
|
|
560
|
+
const objectId = r.readVarInt();
|
|
561
|
+
const publisherPriority = r.readUint8();
|
|
562
|
+
const extLen = Number(r.readVarInt());
|
|
563
|
+
const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
564
|
+
const payloadLength = Number(r.readVarInt());
|
|
565
|
+
let payload;
|
|
566
|
+
let status;
|
|
567
|
+
let payloadByteOffset;
|
|
568
|
+
if (payloadLength === 0) {
|
|
569
|
+
status = r.readVarInt();
|
|
570
|
+
payloadByteOffset = r.offset;
|
|
571
|
+
payload = new Uint8Array(0);
|
|
572
|
+
} else {
|
|
573
|
+
payloadByteOffset = r.offset;
|
|
574
|
+
payload = r.readBytesView(payloadLength);
|
|
575
|
+
}
|
|
576
|
+
const obj = {
|
|
577
|
+
type: "object",
|
|
578
|
+
byteOffset,
|
|
579
|
+
payloadByteOffset,
|
|
580
|
+
groupId,
|
|
581
|
+
subgroupId,
|
|
582
|
+
objectId,
|
|
583
|
+
publisherPriority,
|
|
584
|
+
payloadLength,
|
|
585
|
+
payload,
|
|
586
|
+
extensionData
|
|
587
|
+
};
|
|
588
|
+
if (status !== void 0) obj.status = status;
|
|
589
|
+
controller.enqueue(obj);
|
|
590
|
+
offset += r.offset;
|
|
591
|
+
} catch (e) {
|
|
592
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
593
|
+
break;
|
|
594
|
+
}
|
|
595
|
+
controller.error(e);
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
},
|
|
600
|
+
flush(controller) {
|
|
601
|
+
if (offset < buffer.length) {
|
|
602
|
+
controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
function createDataStreamDecoder() {
|
|
608
|
+
let buffer = new Uint8Array(0);
|
|
609
|
+
let offset = 0;
|
|
610
|
+
let detectedType = null;
|
|
611
|
+
let headerEmitted = false;
|
|
612
|
+
let extensionsPresent = false;
|
|
613
|
+
let prevObjectId = -1n;
|
|
614
|
+
let firstObject = true;
|
|
615
|
+
return new TransformStream({
|
|
616
|
+
transform(chunk, controller) {
|
|
617
|
+
if (offset > 0) {
|
|
618
|
+
buffer = buffer.subarray(offset);
|
|
619
|
+
offset = 0;
|
|
620
|
+
}
|
|
621
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
622
|
+
newBuffer.set(buffer, 0);
|
|
623
|
+
newBuffer.set(chunk, buffer.length);
|
|
624
|
+
buffer = newBuffer;
|
|
625
|
+
if (detectedType === null) {
|
|
626
|
+
try {
|
|
627
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
628
|
+
const streamType = Number(r.readVarInt());
|
|
629
|
+
if (isValidSubgroupType(streamType)) {
|
|
630
|
+
detectedType = "subgroup";
|
|
631
|
+
} else if (streamType === 5) {
|
|
632
|
+
detectedType = "fetch";
|
|
633
|
+
} else {
|
|
634
|
+
controller.error(
|
|
635
|
+
new DecodeError(
|
|
636
|
+
"CONSTRAINT_VIOLATION",
|
|
637
|
+
`Unknown data stream type: 0x${streamType.toString(16)}`,
|
|
638
|
+
0
|
|
639
|
+
)
|
|
640
|
+
);
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
643
|
+
} catch (e) {
|
|
644
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
647
|
+
controller.error(e);
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
if (detectedType === "subgroup") {
|
|
652
|
+
if (!headerEmitted) {
|
|
653
|
+
try {
|
|
654
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
655
|
+
const streamType = Number(r.readVarInt());
|
|
656
|
+
extensionsPresent = (streamType & 1) !== 0;
|
|
657
|
+
const hasSubgroupField = (streamType & 4) !== 0;
|
|
658
|
+
const trackAlias = r.readVarInt();
|
|
659
|
+
const groupId = r.readVarInt();
|
|
660
|
+
let subgroupId = 0n;
|
|
661
|
+
if (hasSubgroupField) subgroupId = r.readVarInt();
|
|
662
|
+
const publisherPriority = r.readUint8();
|
|
663
|
+
controller.enqueue({
|
|
664
|
+
type: "subgroup_header",
|
|
665
|
+
headerType: streamType,
|
|
666
|
+
trackAlias,
|
|
667
|
+
groupId,
|
|
668
|
+
subgroupId,
|
|
669
|
+
publisherPriority
|
|
670
|
+
});
|
|
671
|
+
headerEmitted = true;
|
|
672
|
+
offset += r.offset;
|
|
673
|
+
} catch (e) {
|
|
674
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") return;
|
|
675
|
+
controller.error(e);
|
|
676
|
+
return;
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
while (offset < buffer.length) {
|
|
680
|
+
try {
|
|
681
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
682
|
+
const byteOffset = r.offset;
|
|
683
|
+
const delta = r.readVarInt();
|
|
684
|
+
const objectId = firstObject ? delta : prevObjectId + 1n + delta;
|
|
685
|
+
firstObject = false;
|
|
686
|
+
let extensionData = new Uint8Array(0);
|
|
687
|
+
if (extensionsPresent) {
|
|
688
|
+
const extLen = Number(r.readVarInt());
|
|
689
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
690
|
+
}
|
|
691
|
+
const payloadLength = Number(r.readVarInt());
|
|
692
|
+
let payload;
|
|
693
|
+
let status;
|
|
694
|
+
let payloadByteOffset;
|
|
695
|
+
if (payloadLength === 0) {
|
|
696
|
+
status = r.readVarInt();
|
|
697
|
+
payloadByteOffset = r.offset;
|
|
698
|
+
payload = new Uint8Array(0);
|
|
699
|
+
} else {
|
|
700
|
+
payloadByteOffset = r.offset;
|
|
701
|
+
payload = r.readBytesView(payloadLength);
|
|
702
|
+
}
|
|
703
|
+
const obj = {
|
|
704
|
+
type: "object",
|
|
705
|
+
byteOffset,
|
|
706
|
+
payloadByteOffset,
|
|
707
|
+
objectId,
|
|
708
|
+
payloadLength,
|
|
709
|
+
payload,
|
|
710
|
+
extensionData
|
|
711
|
+
};
|
|
712
|
+
if (status !== void 0) obj.status = status;
|
|
713
|
+
controller.enqueue(obj);
|
|
714
|
+
prevObjectId = objectId;
|
|
715
|
+
offset += r.offset;
|
|
716
|
+
} catch (e) {
|
|
717
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") break;
|
|
718
|
+
controller.error(e);
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
} else {
|
|
723
|
+
if (!headerEmitted) {
|
|
724
|
+
try {
|
|
725
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
726
|
+
r.readVarInt();
|
|
727
|
+
const requestId = r.readVarInt();
|
|
728
|
+
controller.enqueue({ type: "fetch_header", requestId });
|
|
729
|
+
headerEmitted = true;
|
|
730
|
+
offset += r.offset;
|
|
731
|
+
} catch (e) {
|
|
732
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") return;
|
|
733
|
+
controller.error(e);
|
|
734
|
+
return;
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
while (offset < buffer.length) {
|
|
738
|
+
try {
|
|
739
|
+
const r = new BufferReader(buffer.subarray(offset));
|
|
740
|
+
const byteOffset = r.offset;
|
|
741
|
+
const groupId = r.readVarInt();
|
|
742
|
+
const subgroupId = r.readVarInt();
|
|
743
|
+
const objectId = r.readVarInt();
|
|
744
|
+
const publisherPriority = r.readUint8();
|
|
745
|
+
const extLen = Number(r.readVarInt());
|
|
746
|
+
const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
|
|
747
|
+
const payloadLength = Number(r.readVarInt());
|
|
748
|
+
let payload;
|
|
749
|
+
let status;
|
|
750
|
+
let payloadByteOffset;
|
|
751
|
+
if (payloadLength === 0) {
|
|
752
|
+
status = r.readVarInt();
|
|
753
|
+
payloadByteOffset = r.offset;
|
|
754
|
+
payload = new Uint8Array(0);
|
|
755
|
+
} else {
|
|
756
|
+
payloadByteOffset = r.offset;
|
|
757
|
+
payload = r.readBytesView(payloadLength);
|
|
758
|
+
}
|
|
759
|
+
const obj = {
|
|
760
|
+
type: "object",
|
|
761
|
+
byteOffset,
|
|
762
|
+
payloadByteOffset,
|
|
763
|
+
groupId,
|
|
764
|
+
subgroupId,
|
|
765
|
+
objectId,
|
|
766
|
+
publisherPriority,
|
|
767
|
+
payloadLength,
|
|
768
|
+
payload,
|
|
769
|
+
extensionData
|
|
770
|
+
};
|
|
771
|
+
if (status !== void 0) obj.status = status;
|
|
772
|
+
controller.enqueue(obj);
|
|
773
|
+
offset += r.offset;
|
|
774
|
+
} catch (e) {
|
|
775
|
+
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") break;
|
|
776
|
+
controller.error(e);
|
|
777
|
+
return;
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
},
|
|
782
|
+
flush(controller) {
|
|
783
|
+
if (offset < buffer.length) {
|
|
784
|
+
controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
});
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
// src/drafts/draft14/codec.ts
|
|
791
|
+
var textEncoder = /* @__PURE__ */ new TextEncoder();
|
|
792
|
+
var textDecoder = /* @__PURE__ */ new TextDecoder();
|
|
793
|
+
var PARAM_AUTHORITY = 0x05n;
|
|
794
|
+
var PARAM_MAX_AUTH_TOKEN_CACHE_SIZE = 0x04n;
|
|
795
|
+
var PARAM_DELIVERY_TIMEOUT = 0x02n;
|
|
796
|
+
var PARAM_AUTHORIZATION_TOKEN = 0x03n;
|
|
797
|
+
var PARAM_MAX_CACHE_DURATION = 0x04n;
|
|
798
|
+
function encodeSetupParams(params, writer) {
|
|
93
799
|
let count = 0;
|
|
94
800
|
if (params.role !== void 0) count++;
|
|
95
801
|
if (params.path !== void 0) count++;
|
|
96
802
|
if (params.max_request_id !== void 0) count++;
|
|
803
|
+
if (params.authority !== void 0) count++;
|
|
804
|
+
if (params.max_auth_token_cache_size !== void 0) count++;
|
|
97
805
|
if (params.unknown) count += params.unknown.length;
|
|
98
806
|
writer.writeVarInt(count);
|
|
99
807
|
if (params.role !== void 0) {
|
|
@@ -102,7 +810,7 @@ function encodeParams(params, writer) {
|
|
|
102
810
|
}
|
|
103
811
|
if (params.path !== void 0) {
|
|
104
812
|
writer.writeVarInt(PARAM_PATH);
|
|
105
|
-
const encoded =
|
|
813
|
+
const encoded = textEncoder.encode(params.path);
|
|
106
814
|
writer.writeVarInt(encoded.byteLength);
|
|
107
815
|
writer.writeBytes(encoded);
|
|
108
816
|
}
|
|
@@ -110,6 +818,16 @@ function encodeParams(params, writer) {
|
|
|
110
818
|
writer.writeVarInt(PARAM_MAX_REQUEST_ID);
|
|
111
819
|
writer.writeVarInt(params.max_request_id);
|
|
112
820
|
}
|
|
821
|
+
if (params.max_auth_token_cache_size !== void 0) {
|
|
822
|
+
writer.writeVarInt(PARAM_MAX_AUTH_TOKEN_CACHE_SIZE);
|
|
823
|
+
writer.writeVarInt(params.max_auth_token_cache_size);
|
|
824
|
+
}
|
|
825
|
+
if (params.authority !== void 0) {
|
|
826
|
+
writer.writeVarInt(PARAM_AUTHORITY);
|
|
827
|
+
const encoded = textEncoder.encode(params.authority);
|
|
828
|
+
writer.writeVarInt(encoded.byteLength);
|
|
829
|
+
writer.writeBytes(encoded);
|
|
830
|
+
}
|
|
113
831
|
if (params.unknown) {
|
|
114
832
|
for (const u of params.unknown) {
|
|
115
833
|
const id = BigInt(u.id);
|
|
@@ -120,7 +838,7 @@ function encodeParams(params, writer) {
|
|
|
120
838
|
}
|
|
121
839
|
}
|
|
122
840
|
}
|
|
123
|
-
function
|
|
841
|
+
function decodeSetupParams(reader) {
|
|
124
842
|
const count = Number(reader.readVarInt());
|
|
125
843
|
const result = {};
|
|
126
844
|
const unknown = [];
|
|
@@ -132,6 +850,8 @@ function decodeParams(reader) {
|
|
|
132
850
|
result.role = value;
|
|
133
851
|
} else if (paramType === PARAM_MAX_REQUEST_ID) {
|
|
134
852
|
result.max_request_id = value;
|
|
853
|
+
} else if (paramType === PARAM_MAX_AUTH_TOKEN_CACHE_SIZE) {
|
|
854
|
+
result.max_auth_token_cache_size = value;
|
|
135
855
|
} else {
|
|
136
856
|
const tmpWriter = new BufferWriter(16);
|
|
137
857
|
tmpWriter.writeVarInt(value);
|
|
@@ -146,7 +866,9 @@ function decodeParams(reader) {
|
|
|
146
866
|
const length = Number(reader.readVarInt());
|
|
147
867
|
const bytes = reader.readBytes(length);
|
|
148
868
|
if (paramType === PARAM_PATH) {
|
|
149
|
-
result.path =
|
|
869
|
+
result.path = textDecoder.decode(bytes);
|
|
870
|
+
} else if (paramType === PARAM_AUTHORITY) {
|
|
871
|
+
result.authority = textDecoder.decode(bytes);
|
|
150
872
|
} else {
|
|
151
873
|
unknown.push({
|
|
152
874
|
id: `0x${paramType.toString(16)}`,
|
|
@@ -156,9 +878,99 @@ function decodeParams(reader) {
|
|
|
156
878
|
}
|
|
157
879
|
}
|
|
158
880
|
}
|
|
159
|
-
if (unknown.length > 0)
|
|
160
|
-
|
|
881
|
+
if (unknown.length > 0) result.unknown = unknown;
|
|
882
|
+
return result;
|
|
883
|
+
}
|
|
884
|
+
function encodeMessageParams(params, writer) {
|
|
885
|
+
let count = 0;
|
|
886
|
+
if (params.delivery_timeout !== void 0) count++;
|
|
887
|
+
if (params.authorization_token !== void 0) count++;
|
|
888
|
+
if (params.max_cache_duration !== void 0) count++;
|
|
889
|
+
if (params.unknown) count += params.unknown.length;
|
|
890
|
+
writer.writeVarInt(count);
|
|
891
|
+
if (params.delivery_timeout !== void 0) {
|
|
892
|
+
writer.writeVarInt(PARAM_DELIVERY_TIMEOUT);
|
|
893
|
+
writer.writeVarInt(params.delivery_timeout);
|
|
894
|
+
}
|
|
895
|
+
if (params.authorization_token !== void 0) {
|
|
896
|
+
writer.writeVarInt(PARAM_AUTHORIZATION_TOKEN);
|
|
897
|
+
const tok = params.authorization_token;
|
|
898
|
+
const tmpWriter = new BufferWriter(64);
|
|
899
|
+
tmpWriter.writeVarInt(tok.alias_type);
|
|
900
|
+
if (tok.token_type !== void 0) {
|
|
901
|
+
tmpWriter.writeVarInt(tok.token_type);
|
|
902
|
+
}
|
|
903
|
+
if (tok.token_value !== void 0) {
|
|
904
|
+
tmpWriter.writeBytes(hexToBytes(tok.token_value));
|
|
905
|
+
}
|
|
906
|
+
if (tok.token_alias !== void 0) {
|
|
907
|
+
tmpWriter.writeVarInt(tok.token_alias);
|
|
908
|
+
}
|
|
909
|
+
const tokenBytes = tmpWriter.finish();
|
|
910
|
+
writer.writeVarInt(tokenBytes.byteLength);
|
|
911
|
+
writer.writeBytes(tokenBytes);
|
|
912
|
+
}
|
|
913
|
+
if (params.max_cache_duration !== void 0) {
|
|
914
|
+
writer.writeVarInt(PARAM_MAX_CACHE_DURATION);
|
|
915
|
+
writer.writeVarInt(params.max_cache_duration);
|
|
161
916
|
}
|
|
917
|
+
if (params.unknown) {
|
|
918
|
+
for (const u of params.unknown) {
|
|
919
|
+
const id = BigInt(u.id);
|
|
920
|
+
writer.writeVarInt(id);
|
|
921
|
+
const raw = hexToBytes(u.raw_hex);
|
|
922
|
+
writer.writeVarInt(raw.byteLength);
|
|
923
|
+
writer.writeBytes(raw);
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
function decodeMessageParams(reader) {
|
|
928
|
+
const count = Number(reader.readVarInt());
|
|
929
|
+
const result = {};
|
|
930
|
+
const unknown = [];
|
|
931
|
+
for (let i = 0; i < count; i++) {
|
|
932
|
+
const paramType = reader.readVarInt();
|
|
933
|
+
if (paramType % 2n === 0n) {
|
|
934
|
+
const value = reader.readVarInt();
|
|
935
|
+
if (paramType === PARAM_DELIVERY_TIMEOUT) {
|
|
936
|
+
result.delivery_timeout = value;
|
|
937
|
+
} else if (paramType === PARAM_MAX_CACHE_DURATION) {
|
|
938
|
+
result.max_cache_duration = value;
|
|
939
|
+
} else {
|
|
940
|
+
const tmpWriter = new BufferWriter(16);
|
|
941
|
+
tmpWriter.writeVarInt(value);
|
|
942
|
+
const raw = tmpWriter.finish();
|
|
943
|
+
unknown.push({
|
|
944
|
+
id: `0x${paramType.toString(16)}`,
|
|
945
|
+
length: raw.byteLength,
|
|
946
|
+
raw_hex: bytesToHex(raw)
|
|
947
|
+
});
|
|
948
|
+
}
|
|
949
|
+
} else {
|
|
950
|
+
const length = Number(reader.readVarInt());
|
|
951
|
+
const bytes = reader.readBytes(length);
|
|
952
|
+
if (paramType === PARAM_AUTHORIZATION_TOKEN) {
|
|
953
|
+
const tokenReader = new BufferReader(bytes);
|
|
954
|
+
const alias_type = tokenReader.readVarInt();
|
|
955
|
+
const tok = { alias_type };
|
|
956
|
+
if (tokenReader.remaining > 0) {
|
|
957
|
+
tok.token_type = tokenReader.readVarInt();
|
|
958
|
+
if (tokenReader.remaining > 0) {
|
|
959
|
+
const tokenValue = tokenReader.readBytesView(tokenReader.remaining);
|
|
960
|
+
tok.token_value = bytesToHex(tokenValue);
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
result.authorization_token = tok;
|
|
964
|
+
} else {
|
|
965
|
+
unknown.push({
|
|
966
|
+
id: `0x${paramType.toString(16)}`,
|
|
967
|
+
length,
|
|
968
|
+
raw_hex: bytesToHex(bytes)
|
|
969
|
+
});
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
if (unknown.length > 0) result.unknown = unknown;
|
|
162
974
|
return result;
|
|
163
975
|
}
|
|
164
976
|
function encodeClientSetupPayload(msg, w) {
|
|
@@ -166,50 +978,51 @@ function encodeClientSetupPayload(msg, w) {
|
|
|
166
978
|
for (const v of msg.supported_versions) {
|
|
167
979
|
w.writeVarInt(v);
|
|
168
980
|
}
|
|
169
|
-
|
|
981
|
+
encodeSetupParams(msg.parameters, w);
|
|
170
982
|
}
|
|
171
983
|
function encodeServerSetupPayload(msg, w) {
|
|
172
984
|
w.writeVarInt(msg.selected_version);
|
|
173
|
-
|
|
985
|
+
encodeSetupParams(msg.parameters, w);
|
|
174
986
|
}
|
|
175
987
|
function encodeSubscribePayload(msg, w) {
|
|
176
988
|
w.writeVarInt(msg.request_id);
|
|
177
989
|
w.writeTuple(msg.track_namespace);
|
|
178
990
|
w.writeString(msg.track_name);
|
|
179
991
|
w.writeUint8(Number(msg.subscriber_priority));
|
|
180
|
-
w.
|
|
992
|
+
w.writeUint8(Number(msg.group_order));
|
|
181
993
|
w.writeVarInt(msg.forward);
|
|
182
994
|
w.writeVarInt(msg.filter_type);
|
|
183
|
-
const ft =
|
|
184
|
-
if (ft >=
|
|
995
|
+
const ft = msg.filter_type;
|
|
996
|
+
if (ft >= FilterType.AbsoluteStart) {
|
|
185
997
|
w.writeVarInt(msg.start_group);
|
|
186
998
|
w.writeVarInt(msg.start_object);
|
|
187
999
|
}
|
|
188
|
-
if (ft ===
|
|
1000
|
+
if (ft === FilterType.AbsoluteRange) {
|
|
189
1001
|
w.writeVarInt(msg.end_group);
|
|
190
1002
|
}
|
|
191
|
-
|
|
1003
|
+
encodeMessageParams(msg.parameters, w);
|
|
192
1004
|
}
|
|
193
1005
|
function encodeSubscribeOkPayload(msg, w) {
|
|
194
1006
|
w.writeVarInt(msg.request_id);
|
|
195
1007
|
w.writeVarInt(msg.track_alias);
|
|
196
1008
|
w.writeVarInt(msg.expires);
|
|
197
|
-
w.
|
|
1009
|
+
w.writeUint8(Number(msg.group_order));
|
|
198
1010
|
w.writeVarInt(msg.content_exists);
|
|
199
|
-
if (
|
|
200
|
-
w.writeVarInt(msg.
|
|
201
|
-
w.writeVarInt(msg.
|
|
1011
|
+
if (msg.content_exists === 1n) {
|
|
1012
|
+
w.writeVarInt(msg.largest_location.group);
|
|
1013
|
+
w.writeVarInt(msg.largest_location.object);
|
|
202
1014
|
}
|
|
203
|
-
|
|
1015
|
+
encodeMessageParams(msg.parameters, w);
|
|
204
1016
|
}
|
|
205
1017
|
function encodeSubscribeUpdatePayload(msg, w) {
|
|
206
1018
|
w.writeVarInt(msg.request_id);
|
|
1019
|
+
w.writeVarInt(msg.subscription_request_id);
|
|
207
1020
|
w.writeVarInt(msg.start_group);
|
|
208
1021
|
w.writeVarInt(msg.start_object);
|
|
209
1022
|
w.writeVarInt(msg.end_group);
|
|
210
1023
|
w.writeUint8(Number(msg.subscriber_priority));
|
|
211
1024
|
w.writeVarInt(msg.forward);
|
|
212
|
-
|
|
1025
|
+
encodeMessageParams(msg.parameters, w);
|
|
213
1026
|
}
|
|
214
1027
|
function encodeSubscribeErrorPayload(msg, w) {
|
|
215
1028
|
w.writeVarInt(msg.request_id);
|
|
@@ -223,14 +1036,31 @@ function encodePublishPayload(msg, w) {
|
|
|
223
1036
|
w.writeVarInt(msg.request_id);
|
|
224
1037
|
w.writeTuple(msg.track_namespace);
|
|
225
1038
|
w.writeString(msg.track_name);
|
|
1039
|
+
w.writeVarInt(msg.track_alias);
|
|
1040
|
+
w.writeUint8(Number(msg.group_order));
|
|
1041
|
+
w.writeVarInt(msg.content_exists);
|
|
1042
|
+
if (msg.content_exists === 1n) {
|
|
1043
|
+
w.writeVarInt(msg.largest_location.group);
|
|
1044
|
+
w.writeVarInt(msg.largest_location.object);
|
|
1045
|
+
}
|
|
226
1046
|
w.writeVarInt(msg.forward);
|
|
227
|
-
|
|
1047
|
+
encodeMessageParams(msg.parameters, w);
|
|
228
1048
|
}
|
|
229
1049
|
function encodePublishOkPayload(msg, w) {
|
|
230
1050
|
w.writeVarInt(msg.request_id);
|
|
231
|
-
w.writeVarInt(msg.track_alias);
|
|
232
1051
|
w.writeVarInt(msg.forward);
|
|
233
|
-
|
|
1052
|
+
w.writeUint8(Number(msg.subscriber_priority));
|
|
1053
|
+
w.writeUint8(Number(msg.group_order));
|
|
1054
|
+
w.writeVarInt(msg.filter_type);
|
|
1055
|
+
const ft = msg.filter_type;
|
|
1056
|
+
if (ft >= FilterType.AbsoluteStart) {
|
|
1057
|
+
w.writeVarInt(msg.start_group);
|
|
1058
|
+
w.writeVarInt(msg.start_object);
|
|
1059
|
+
}
|
|
1060
|
+
if (ft === FilterType.AbsoluteRange) {
|
|
1061
|
+
w.writeVarInt(msg.end_group);
|
|
1062
|
+
}
|
|
1063
|
+
encodeMessageParams(msg.parameters, w);
|
|
234
1064
|
}
|
|
235
1065
|
function encodePublishErrorPayload(msg, w) {
|
|
236
1066
|
w.writeVarInt(msg.request_id);
|
|
@@ -240,16 +1070,17 @@ function encodePublishErrorPayload(msg, w) {
|
|
|
240
1070
|
function encodePublishDonePayload(msg, w) {
|
|
241
1071
|
w.writeVarInt(msg.request_id);
|
|
242
1072
|
w.writeVarInt(msg.status_code);
|
|
1073
|
+
w.writeVarInt(msg.stream_count);
|
|
243
1074
|
w.writeString(msg.reason_phrase);
|
|
244
1075
|
}
|
|
245
1076
|
function encodePublishNamespacePayload(msg, w) {
|
|
246
1077
|
w.writeVarInt(msg.request_id);
|
|
247
1078
|
w.writeTuple(msg.track_namespace);
|
|
248
|
-
|
|
1079
|
+
encodeMessageParams(msg.parameters, w);
|
|
249
1080
|
}
|
|
250
1081
|
function encodePublishNamespaceOkPayload(msg, w) {
|
|
251
1082
|
w.writeVarInt(msg.request_id);
|
|
252
|
-
|
|
1083
|
+
encodeMessageParams(msg.parameters, w);
|
|
253
1084
|
}
|
|
254
1085
|
function encodePublishNamespaceErrorPayload(msg, w) {
|
|
255
1086
|
w.writeVarInt(msg.request_id);
|
|
@@ -257,21 +1088,21 @@ function encodePublishNamespaceErrorPayload(msg, w) {
|
|
|
257
1088
|
w.writeString(msg.reason_phrase);
|
|
258
1089
|
}
|
|
259
1090
|
function encodePublishNamespaceDonePayload(msg, w) {
|
|
260
|
-
w.
|
|
261
|
-
|
|
1091
|
+
w.writeTuple(msg.track_namespace);
|
|
1092
|
+
}
|
|
1093
|
+
function encodePublishNamespaceCancelPayload(msg, w) {
|
|
1094
|
+
w.writeTuple(msg.track_namespace);
|
|
1095
|
+
w.writeVarInt(msg.error_code);
|
|
262
1096
|
w.writeString(msg.reason_phrase);
|
|
263
1097
|
}
|
|
264
|
-
function encodePublishNamespaceCancelPayload(msg, w) {
|
|
265
|
-
w.writeVarInt(msg.request_id);
|
|
266
|
-
}
|
|
267
1098
|
function encodeSubscribeNamespacePayload(msg, w) {
|
|
268
1099
|
w.writeVarInt(msg.request_id);
|
|
269
1100
|
w.writeTuple(msg.namespace_prefix);
|
|
270
|
-
|
|
1101
|
+
encodeMessageParams(msg.parameters, w);
|
|
271
1102
|
}
|
|
272
1103
|
function encodeSubscribeNamespaceOkPayload(msg, w) {
|
|
273
1104
|
w.writeVarInt(msg.request_id);
|
|
274
|
-
|
|
1105
|
+
encodeMessageParams(msg.parameters, w);
|
|
275
1106
|
}
|
|
276
1107
|
function encodeSubscribeNamespaceErrorPayload(msg, w) {
|
|
277
1108
|
w.writeVarInt(msg.request_id);
|
|
@@ -279,22 +1110,34 @@ function encodeSubscribeNamespaceErrorPayload(msg, w) {
|
|
|
279
1110
|
w.writeString(msg.reason_phrase);
|
|
280
1111
|
}
|
|
281
1112
|
function encodeUnsubscribeNamespacePayload(msg, w) {
|
|
282
|
-
w.
|
|
1113
|
+
w.writeTuple(msg.track_namespace_prefix);
|
|
283
1114
|
}
|
|
284
1115
|
function encodeFetchPayload(msg, w) {
|
|
285
1116
|
w.writeVarInt(msg.request_id);
|
|
286
|
-
w.
|
|
287
|
-
w.
|
|
288
|
-
w.writeVarInt(msg.
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
1117
|
+
w.writeUint8(Number(msg.subscriber_priority));
|
|
1118
|
+
w.writeUint8(Number(msg.group_order));
|
|
1119
|
+
w.writeVarInt(msg.fetch_type);
|
|
1120
|
+
const ft = msg.fetch_type;
|
|
1121
|
+
if (ft === FetchType.Standalone) {
|
|
1122
|
+
w.writeTuple(msg.track_namespace);
|
|
1123
|
+
w.writeString(msg.track_name);
|
|
1124
|
+
w.writeVarInt(msg.start_group);
|
|
1125
|
+
w.writeVarInt(msg.start_object);
|
|
1126
|
+
w.writeVarInt(msg.end_group);
|
|
1127
|
+
w.writeVarInt(msg.end_object);
|
|
1128
|
+
} else {
|
|
1129
|
+
w.writeVarInt(msg.joining_request_id);
|
|
1130
|
+
w.writeVarInt(msg.joining_start);
|
|
1131
|
+
}
|
|
1132
|
+
encodeMessageParams(msg.parameters, w);
|
|
292
1133
|
}
|
|
293
1134
|
function encodeFetchOkPayload(msg, w) {
|
|
294
1135
|
w.writeVarInt(msg.request_id);
|
|
295
|
-
w.
|
|
1136
|
+
w.writeUint8(Number(msg.group_order));
|
|
296
1137
|
w.writeVarInt(msg.end_of_track);
|
|
297
|
-
|
|
1138
|
+
w.writeVarInt(msg.end_location.group);
|
|
1139
|
+
w.writeVarInt(msg.end_location.object);
|
|
1140
|
+
encodeMessageParams(msg.parameters, w);
|
|
298
1141
|
}
|
|
299
1142
|
function encodeFetchErrorPayload(msg, w) {
|
|
300
1143
|
w.writeVarInt(msg.request_id);
|
|
@@ -308,17 +1151,28 @@ function encodeTrackStatusPayload(msg, w) {
|
|
|
308
1151
|
w.writeVarInt(msg.request_id);
|
|
309
1152
|
w.writeTuple(msg.track_namespace);
|
|
310
1153
|
w.writeString(msg.track_name);
|
|
311
|
-
|
|
1154
|
+
w.writeUint8(Number(msg.subscriber_priority));
|
|
1155
|
+
w.writeUint8(Number(msg.group_order));
|
|
1156
|
+
w.writeVarInt(msg.forward);
|
|
1157
|
+
w.writeVarInt(msg.filter_type);
|
|
1158
|
+
const ft = msg.filter_type;
|
|
1159
|
+
if (ft >= FilterType.AbsoluteStart) {
|
|
1160
|
+
w.writeVarInt(msg.start_group);
|
|
1161
|
+
w.writeVarInt(msg.start_object);
|
|
1162
|
+
}
|
|
1163
|
+
encodeMessageParams(msg.parameters, w);
|
|
312
1164
|
}
|
|
313
1165
|
function encodeTrackStatusOkPayload(msg, w) {
|
|
314
1166
|
w.writeVarInt(msg.request_id);
|
|
315
|
-
w.writeVarInt(msg.
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
1167
|
+
w.writeVarInt(msg.track_alias);
|
|
1168
|
+
w.writeVarInt(msg.expires);
|
|
1169
|
+
w.writeUint8(Number(msg.group_order));
|
|
1170
|
+
w.writeVarInt(msg.content_exists);
|
|
1171
|
+
if (msg.content_exists === 1n) {
|
|
1172
|
+
w.writeVarInt(msg.largest_location.group);
|
|
1173
|
+
w.writeVarInt(msg.largest_location.object);
|
|
320
1174
|
}
|
|
321
|
-
|
|
1175
|
+
encodeMessageParams(msg.parameters, w);
|
|
322
1176
|
}
|
|
323
1177
|
function encodeTrackStatusErrorPayload(msg, w) {
|
|
324
1178
|
w.writeVarInt(msg.request_id);
|
|
@@ -347,12 +1201,12 @@ function decodeClientSetupPayload(r) {
|
|
|
347
1201
|
for (let i = 0; i < numVersions; i++) {
|
|
348
1202
|
supported_versions.push(r.readVarInt());
|
|
349
1203
|
}
|
|
350
|
-
const parameters =
|
|
1204
|
+
const parameters = decodeSetupParams(r);
|
|
351
1205
|
return { type: "client_setup", supported_versions, parameters };
|
|
352
1206
|
}
|
|
353
1207
|
function decodeServerSetupPayload(r) {
|
|
354
1208
|
const selected_version = r.readVarInt();
|
|
355
|
-
const parameters =
|
|
1209
|
+
const parameters = decodeSetupParams(r);
|
|
356
1210
|
return { type: "server_setup", selected_version, parameters };
|
|
357
1211
|
}
|
|
358
1212
|
function decodeSubscribePayload(r) {
|
|
@@ -360,24 +1214,23 @@ function decodeSubscribePayload(r) {
|
|
|
360
1214
|
const track_namespace = r.readTuple();
|
|
361
1215
|
const track_name = r.readString();
|
|
362
1216
|
const subscriber_priority = BigInt(r.readUint8());
|
|
363
|
-
const group_order = r.
|
|
1217
|
+
const group_order = BigInt(r.readUint8());
|
|
364
1218
|
const forward = r.readVarInt();
|
|
365
1219
|
const filter_type = r.readVarInt();
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
throw new DecodeError("CONSTRAINT_VIOLATION", `Invalid filter_type: ${ft}`, r.offset);
|
|
1220
|
+
if (filter_type < FilterType.NextGroupStart || filter_type > FilterType.AbsoluteRange) {
|
|
1221
|
+
throw new DecodeError("CONSTRAINT_VIOLATION", `Invalid filter_type: ${filter_type}`, r.offset);
|
|
369
1222
|
}
|
|
370
1223
|
let start_group;
|
|
371
1224
|
let start_object;
|
|
372
1225
|
let end_group;
|
|
373
|
-
if (
|
|
1226
|
+
if (filter_type >= FilterType.AbsoluteStart) {
|
|
374
1227
|
start_group = r.readVarInt();
|
|
375
1228
|
start_object = r.readVarInt();
|
|
376
1229
|
}
|
|
377
|
-
if (
|
|
1230
|
+
if (filter_type === FilterType.AbsoluteRange) {
|
|
378
1231
|
end_group = r.readVarInt();
|
|
379
1232
|
}
|
|
380
|
-
const parameters =
|
|
1233
|
+
const parameters = decodeMessageParams(r);
|
|
381
1234
|
const msg = {
|
|
382
1235
|
type: "subscribe",
|
|
383
1236
|
request_id,
|
|
@@ -398,16 +1251,17 @@ function decodeSubscribeOkPayload(r) {
|
|
|
398
1251
|
const request_id = r.readVarInt();
|
|
399
1252
|
const track_alias = r.readVarInt();
|
|
400
1253
|
const expires = r.readVarInt();
|
|
401
|
-
const group_order = r.
|
|
1254
|
+
const group_order = BigInt(r.readUint8());
|
|
402
1255
|
const content_exists = r.readVarInt();
|
|
403
|
-
let
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
1256
|
+
let largest_location;
|
|
1257
|
+
if (content_exists === 1n) {
|
|
1258
|
+
largest_location = {
|
|
1259
|
+
group: r.readVarInt(),
|
|
1260
|
+
object: r.readVarInt()
|
|
1261
|
+
};
|
|
408
1262
|
}
|
|
409
|
-
const parameters =
|
|
410
|
-
|
|
1263
|
+
const parameters = decodeMessageParams(r);
|
|
1264
|
+
return {
|
|
411
1265
|
type: "subscribe_ok",
|
|
412
1266
|
request_id,
|
|
413
1267
|
track_alias,
|
|
@@ -415,21 +1269,22 @@ function decodeSubscribeOkPayload(r) {
|
|
|
415
1269
|
group_order,
|
|
416
1270
|
content_exists,
|
|
417
1271
|
parameters,
|
|
418
|
-
...
|
|
1272
|
+
...largest_location !== void 0 ? { largest_location } : {}
|
|
419
1273
|
};
|
|
420
|
-
return msg;
|
|
421
1274
|
}
|
|
422
1275
|
function decodeSubscribeUpdatePayload(r) {
|
|
423
1276
|
const request_id = r.readVarInt();
|
|
1277
|
+
const subscription_request_id = r.readVarInt();
|
|
424
1278
|
const start_group = r.readVarInt();
|
|
425
1279
|
const start_object = r.readVarInt();
|
|
426
1280
|
const end_group = r.readVarInt();
|
|
427
1281
|
const subscriber_priority = BigInt(r.readUint8());
|
|
428
1282
|
const forward = r.readVarInt();
|
|
429
|
-
const parameters =
|
|
1283
|
+
const parameters = decodeMessageParams(r);
|
|
430
1284
|
return {
|
|
431
1285
|
type: "subscribe_update",
|
|
432
1286
|
request_id,
|
|
1287
|
+
subscription_request_id,
|
|
433
1288
|
start_group,
|
|
434
1289
|
start_object,
|
|
435
1290
|
end_group,
|
|
@@ -452,16 +1307,61 @@ function decodePublishPayload(r) {
|
|
|
452
1307
|
const request_id = r.readVarInt();
|
|
453
1308
|
const track_namespace = r.readTuple();
|
|
454
1309
|
const track_name = r.readString();
|
|
1310
|
+
const track_alias = r.readVarInt();
|
|
1311
|
+
const group_order = BigInt(r.readUint8());
|
|
1312
|
+
const content_exists = r.readVarInt();
|
|
1313
|
+
let largest_location;
|
|
1314
|
+
if (content_exists === 1n) {
|
|
1315
|
+
largest_location = {
|
|
1316
|
+
group: r.readVarInt(),
|
|
1317
|
+
object: r.readVarInt()
|
|
1318
|
+
};
|
|
1319
|
+
}
|
|
455
1320
|
const forward = r.readVarInt();
|
|
456
|
-
const parameters =
|
|
457
|
-
return {
|
|
1321
|
+
const parameters = decodeMessageParams(r);
|
|
1322
|
+
return {
|
|
1323
|
+
type: "publish",
|
|
1324
|
+
request_id,
|
|
1325
|
+
track_namespace,
|
|
1326
|
+
track_name,
|
|
1327
|
+
track_alias,
|
|
1328
|
+
group_order,
|
|
1329
|
+
content_exists,
|
|
1330
|
+
forward,
|
|
1331
|
+
parameters,
|
|
1332
|
+
...largest_location !== void 0 ? { largest_location } : {}
|
|
1333
|
+
};
|
|
458
1334
|
}
|
|
459
1335
|
function decodePublishOkPayload(r) {
|
|
460
1336
|
const request_id = r.readVarInt();
|
|
461
|
-
const track_alias = r.readVarInt();
|
|
462
1337
|
const forward = r.readVarInt();
|
|
463
|
-
const
|
|
464
|
-
|
|
1338
|
+
const subscriber_priority = BigInt(r.readUint8());
|
|
1339
|
+
const group_order = BigInt(r.readUint8());
|
|
1340
|
+
const filter_type = r.readVarInt();
|
|
1341
|
+
let start_group;
|
|
1342
|
+
let start_object;
|
|
1343
|
+
let end_group;
|
|
1344
|
+
if (filter_type >= FilterType.AbsoluteStart) {
|
|
1345
|
+
start_group = r.readVarInt();
|
|
1346
|
+
start_object = r.readVarInt();
|
|
1347
|
+
}
|
|
1348
|
+
if (filter_type === FilterType.AbsoluteRange) {
|
|
1349
|
+
end_group = r.readVarInt();
|
|
1350
|
+
}
|
|
1351
|
+
const parameters = decodeMessageParams(r);
|
|
1352
|
+
const msg = {
|
|
1353
|
+
type: "publish_ok",
|
|
1354
|
+
request_id,
|
|
1355
|
+
forward,
|
|
1356
|
+
subscriber_priority,
|
|
1357
|
+
group_order,
|
|
1358
|
+
filter_type,
|
|
1359
|
+
parameters
|
|
1360
|
+
};
|
|
1361
|
+
if (start_group !== void 0) msg.start_group = start_group;
|
|
1362
|
+
if (start_object !== void 0) msg.start_object = start_object;
|
|
1363
|
+
if (end_group !== void 0) msg.end_group = end_group;
|
|
1364
|
+
return msg;
|
|
465
1365
|
}
|
|
466
1366
|
function decodePublishErrorPayload(r) {
|
|
467
1367
|
const request_id = r.readVarInt();
|
|
@@ -472,82 +1372,147 @@ function decodePublishErrorPayload(r) {
|
|
|
472
1372
|
function decodePublishDonePayload(r) {
|
|
473
1373
|
const request_id = r.readVarInt();
|
|
474
1374
|
const status_code = r.readVarInt();
|
|
1375
|
+
const stream_count = r.readVarInt();
|
|
475
1376
|
const reason_phrase = r.readString();
|
|
476
|
-
return {
|
|
1377
|
+
return {
|
|
1378
|
+
type: "publish_done",
|
|
1379
|
+
request_id,
|
|
1380
|
+
status_code,
|
|
1381
|
+
stream_count,
|
|
1382
|
+
reason_phrase
|
|
1383
|
+
};
|
|
477
1384
|
}
|
|
478
1385
|
function decodePublishNamespacePayload(r) {
|
|
479
1386
|
const request_id = r.readVarInt();
|
|
480
1387
|
const track_namespace = r.readTuple();
|
|
481
|
-
const parameters =
|
|
1388
|
+
const parameters = decodeMessageParams(r);
|
|
482
1389
|
return { type: "publish_namespace", request_id, track_namespace, parameters };
|
|
483
1390
|
}
|
|
484
1391
|
function decodePublishNamespaceOkPayload(r) {
|
|
485
1392
|
const request_id = r.readVarInt();
|
|
486
|
-
const parameters =
|
|
1393
|
+
const parameters = decodeMessageParams(r);
|
|
487
1394
|
return { type: "publish_namespace_ok", request_id, parameters };
|
|
488
1395
|
}
|
|
489
1396
|
function decodePublishNamespaceErrorPayload(r) {
|
|
490
1397
|
const request_id = r.readVarInt();
|
|
491
1398
|
const error_code = r.readVarInt();
|
|
492
1399
|
const reason_phrase = r.readString();
|
|
493
|
-
return {
|
|
1400
|
+
return {
|
|
1401
|
+
type: "publish_namespace_error",
|
|
1402
|
+
request_id,
|
|
1403
|
+
error_code,
|
|
1404
|
+
reason_phrase
|
|
1405
|
+
};
|
|
494
1406
|
}
|
|
495
1407
|
function decodePublishNamespaceDonePayload(r) {
|
|
496
|
-
const
|
|
497
|
-
|
|
498
|
-
const reason_phrase = r.readString();
|
|
499
|
-
return { type: "publish_namespace_done", request_id, status_code, reason_phrase };
|
|
1408
|
+
const track_namespace = r.readTuple();
|
|
1409
|
+
return { type: "publish_namespace_done", track_namespace };
|
|
500
1410
|
}
|
|
501
1411
|
function decodePublishNamespaceCancelPayload(r) {
|
|
502
|
-
const
|
|
503
|
-
|
|
1412
|
+
const track_namespace = r.readTuple();
|
|
1413
|
+
const error_code = r.readVarInt();
|
|
1414
|
+
const reason_phrase = r.readString();
|
|
1415
|
+
return {
|
|
1416
|
+
type: "publish_namespace_cancel",
|
|
1417
|
+
track_namespace,
|
|
1418
|
+
error_code,
|
|
1419
|
+
reason_phrase
|
|
1420
|
+
};
|
|
504
1421
|
}
|
|
505
1422
|
function decodeSubscribeNamespacePayload(r) {
|
|
506
1423
|
const request_id = r.readVarInt();
|
|
507
1424
|
const namespace_prefix = r.readTuple();
|
|
508
|
-
const parameters =
|
|
509
|
-
return {
|
|
1425
|
+
const parameters = decodeMessageParams(r);
|
|
1426
|
+
return {
|
|
1427
|
+
type: "subscribe_namespace",
|
|
1428
|
+
request_id,
|
|
1429
|
+
namespace_prefix,
|
|
1430
|
+
parameters
|
|
1431
|
+
};
|
|
510
1432
|
}
|
|
511
1433
|
function decodeSubscribeNamespaceOkPayload(r) {
|
|
512
1434
|
const request_id = r.readVarInt();
|
|
513
|
-
const parameters =
|
|
1435
|
+
const parameters = decodeMessageParams(r);
|
|
514
1436
|
return { type: "subscribe_namespace_ok", request_id, parameters };
|
|
515
1437
|
}
|
|
516
1438
|
function decodeSubscribeNamespaceErrorPayload(r) {
|
|
517
1439
|
const request_id = r.readVarInt();
|
|
518
1440
|
const error_code = r.readVarInt();
|
|
519
1441
|
const reason_phrase = r.readString();
|
|
520
|
-
return {
|
|
1442
|
+
return {
|
|
1443
|
+
type: "subscribe_namespace_error",
|
|
1444
|
+
request_id,
|
|
1445
|
+
error_code,
|
|
1446
|
+
reason_phrase
|
|
1447
|
+
};
|
|
521
1448
|
}
|
|
522
1449
|
function decodeUnsubscribeNamespacePayload(r) {
|
|
523
|
-
const
|
|
524
|
-
return { type: "unsubscribe_namespace",
|
|
1450
|
+
const track_namespace_prefix = r.readTuple();
|
|
1451
|
+
return { type: "unsubscribe_namespace", track_namespace_prefix };
|
|
525
1452
|
}
|
|
526
1453
|
function decodeFetchPayload(r) {
|
|
527
1454
|
const request_id = r.readVarInt();
|
|
528
|
-
const
|
|
529
|
-
const
|
|
530
|
-
const
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
1455
|
+
const subscriber_priority = BigInt(r.readUint8());
|
|
1456
|
+
const group_order = BigInt(r.readUint8());
|
|
1457
|
+
const fetch_type = r.readVarInt();
|
|
1458
|
+
if (fetch_type < FetchType.Standalone || fetch_type > FetchType.AbsoluteJoining) {
|
|
1459
|
+
throw new DecodeError("CONSTRAINT_VIOLATION", `Invalid fetch_type: ${fetch_type}`, r.offset);
|
|
1460
|
+
}
|
|
1461
|
+
if (fetch_type === FetchType.Standalone) {
|
|
1462
|
+
const track_namespace = r.readTuple();
|
|
1463
|
+
const track_name = r.readString();
|
|
1464
|
+
const start_group = r.readVarInt();
|
|
1465
|
+
const start_object = r.readVarInt();
|
|
1466
|
+
const end_group = r.readVarInt();
|
|
1467
|
+
const end_object = r.readVarInt();
|
|
1468
|
+
const parameters = decodeMessageParams(r);
|
|
1469
|
+
return {
|
|
1470
|
+
type: "fetch",
|
|
1471
|
+
request_id,
|
|
1472
|
+
subscriber_priority,
|
|
1473
|
+
group_order,
|
|
1474
|
+
fetch_type,
|
|
1475
|
+
track_namespace,
|
|
1476
|
+
track_name,
|
|
1477
|
+
start_group,
|
|
1478
|
+
start_object,
|
|
1479
|
+
end_group,
|
|
1480
|
+
end_object,
|
|
1481
|
+
parameters
|
|
1482
|
+
};
|
|
1483
|
+
} else {
|
|
1484
|
+
const joining_request_id = r.readVarInt();
|
|
1485
|
+
const joining_start = r.readVarInt();
|
|
1486
|
+
const parameters = decodeMessageParams(r);
|
|
1487
|
+
return {
|
|
1488
|
+
type: "fetch",
|
|
1489
|
+
request_id,
|
|
1490
|
+
subscriber_priority,
|
|
1491
|
+
group_order,
|
|
1492
|
+
fetch_type,
|
|
1493
|
+
joining_request_id,
|
|
1494
|
+
joining_start,
|
|
1495
|
+
parameters
|
|
1496
|
+
};
|
|
1497
|
+
}
|
|
544
1498
|
}
|
|
545
1499
|
function decodeFetchOkPayload(r) {
|
|
546
1500
|
const request_id = r.readVarInt();
|
|
547
|
-
const
|
|
1501
|
+
const group_order = BigInt(r.readUint8());
|
|
548
1502
|
const end_of_track = r.readVarInt();
|
|
549
|
-
const
|
|
550
|
-
|
|
1503
|
+
const end_location = {
|
|
1504
|
+
group: r.readVarInt(),
|
|
1505
|
+
object: r.readVarInt()
|
|
1506
|
+
};
|
|
1507
|
+
const parameters = decodeMessageParams(r);
|
|
1508
|
+
return {
|
|
1509
|
+
type: "fetch_ok",
|
|
1510
|
+
request_id,
|
|
1511
|
+
group_order,
|
|
1512
|
+
end_of_track,
|
|
1513
|
+
end_location,
|
|
1514
|
+
parameters
|
|
1515
|
+
};
|
|
551
1516
|
}
|
|
552
1517
|
function decodeFetchErrorPayload(r) {
|
|
553
1518
|
const request_id = r.readVarInt();
|
|
@@ -563,26 +1528,55 @@ function decodeTrackStatusPayload(r) {
|
|
|
563
1528
|
const request_id = r.readVarInt();
|
|
564
1529
|
const track_namespace = r.readTuple();
|
|
565
1530
|
const track_name = r.readString();
|
|
566
|
-
const
|
|
567
|
-
|
|
1531
|
+
const subscriber_priority = BigInt(r.readUint8());
|
|
1532
|
+
const group_order = BigInt(r.readUint8());
|
|
1533
|
+
const forward = r.readVarInt();
|
|
1534
|
+
const filter_type = r.readVarInt();
|
|
1535
|
+
let start_group;
|
|
1536
|
+
let start_object;
|
|
1537
|
+
if (filter_type >= FilterType.AbsoluteStart) {
|
|
1538
|
+
start_group = r.readVarInt();
|
|
1539
|
+
start_object = r.readVarInt();
|
|
1540
|
+
}
|
|
1541
|
+
const parameters = decodeMessageParams(r);
|
|
1542
|
+
const msg = {
|
|
1543
|
+
type: "track_status",
|
|
1544
|
+
request_id,
|
|
1545
|
+
track_namespace,
|
|
1546
|
+
track_name,
|
|
1547
|
+
subscriber_priority,
|
|
1548
|
+
group_order,
|
|
1549
|
+
forward,
|
|
1550
|
+
filter_type,
|
|
1551
|
+
parameters
|
|
1552
|
+
};
|
|
1553
|
+
if (start_group !== void 0) msg.start_group = start_group;
|
|
1554
|
+
if (start_object !== void 0) msg.start_object = start_object;
|
|
1555
|
+
return msg;
|
|
568
1556
|
}
|
|
569
1557
|
function decodeTrackStatusOkPayload(r) {
|
|
570
1558
|
const request_id = r.readVarInt();
|
|
571
|
-
const
|
|
572
|
-
const
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
1559
|
+
const track_alias = r.readVarInt();
|
|
1560
|
+
const expires = r.readVarInt();
|
|
1561
|
+
const group_order = BigInt(r.readUint8());
|
|
1562
|
+
const content_exists = r.readVarInt();
|
|
1563
|
+
let largest_location;
|
|
1564
|
+
if (content_exists === 1n) {
|
|
1565
|
+
largest_location = {
|
|
1566
|
+
group: r.readVarInt(),
|
|
1567
|
+
object: r.readVarInt()
|
|
1568
|
+
};
|
|
578
1569
|
}
|
|
579
|
-
const parameters =
|
|
1570
|
+
const parameters = decodeMessageParams(r);
|
|
580
1571
|
return {
|
|
581
1572
|
type: "track_status_ok",
|
|
582
1573
|
request_id,
|
|
583
|
-
|
|
1574
|
+
track_alias,
|
|
1575
|
+
expires,
|
|
1576
|
+
group_order,
|
|
1577
|
+
content_exists,
|
|
584
1578
|
parameters,
|
|
585
|
-
...
|
|
1579
|
+
...largest_location !== void 0 ? { largest_location } : {}
|
|
586
1580
|
};
|
|
587
1581
|
}
|
|
588
1582
|
function decodeTrackStatusErrorPayload(r) {
|
|
@@ -642,11 +1636,11 @@ function encodeMessage(message) {
|
|
|
642
1636
|
}
|
|
643
1637
|
const payloadWriter = new BufferWriter();
|
|
644
1638
|
encodePayload(message, payloadWriter);
|
|
645
|
-
const payload = payloadWriter.
|
|
1639
|
+
const payload = payloadWriter.finishView();
|
|
646
1640
|
if (payload.byteLength > 65535) {
|
|
647
1641
|
throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
|
|
648
1642
|
}
|
|
649
|
-
const writer = new BufferWriter();
|
|
1643
|
+
const writer = new BufferWriter(payload.byteLength + 16);
|
|
650
1644
|
writer.writeVarInt(typeId);
|
|
651
1645
|
writer.writeUint8(payload.byteLength >> 8 & 255);
|
|
652
1646
|
writer.writeUint8(payload.byteLength & 255);
|
|
@@ -704,195 +1698,67 @@ function encodePayload(msg, w) {
|
|
|
704
1698
|
case "fetch_cancel":
|
|
705
1699
|
return encodeFetchCancelPayload(msg, w);
|
|
706
1700
|
case "track_status":
|
|
707
|
-
return encodeTrackStatusPayload(msg, w);
|
|
708
|
-
case "track_status_ok":
|
|
709
|
-
return encodeTrackStatusOkPayload(msg, w);
|
|
710
|
-
case "track_status_error":
|
|
711
|
-
return encodeTrackStatusErrorPayload(msg, w);
|
|
712
|
-
case "goaway":
|
|
713
|
-
return encodeGoAwayPayload(msg, w);
|
|
714
|
-
case "max_request_id":
|
|
715
|
-
return encodeMaxRequestIdPayload(msg, w);
|
|
716
|
-
case "requests_blocked":
|
|
717
|
-
return encodeRequestsBlockedPayload(msg, w);
|
|
718
|
-
default: {
|
|
719
|
-
const _exhaustive = msg;
|
|
720
|
-
throw new Error(`Unhandled message type: ${_exhaustive.type}`);
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
}
|
|
724
|
-
function decodeMessage(bytes) {
|
|
725
|
-
try {
|
|
726
|
-
const reader = new BufferReader(bytes);
|
|
727
|
-
const typeId = reader.readVarInt();
|
|
728
|
-
const lenHi = reader.readUint8();
|
|
729
|
-
const lenLo = reader.readUint8();
|
|
730
|
-
const payloadLength = lenHi << 8 | lenLo;
|
|
731
|
-
const payloadBytes = reader.readBytes(payloadLength);
|
|
732
|
-
const payloadReader = new BufferReader(payloadBytes);
|
|
733
|
-
const decoder = payloadDecoders.get(typeId);
|
|
734
|
-
if (!decoder) {
|
|
735
|
-
return {
|
|
736
|
-
ok: false,
|
|
737
|
-
error: new DecodeError(
|
|
738
|
-
"UNKNOWN_MESSAGE_TYPE",
|
|
739
|
-
`Unknown message type ID: 0x${typeId.toString(16)}`,
|
|
740
|
-
0
|
|
741
|
-
)
|
|
742
|
-
};
|
|
743
|
-
}
|
|
744
|
-
const message = decoder(payloadReader);
|
|
745
|
-
return { ok: true, value: message, bytesRead: reader.offset };
|
|
746
|
-
} catch (e) {
|
|
747
|
-
if (e instanceof DecodeError) {
|
|
748
|
-
return { ok: false, error: e };
|
|
749
|
-
}
|
|
750
|
-
throw e;
|
|
751
|
-
}
|
|
752
|
-
}
|
|
753
|
-
function encodeSubgroupStream(stream) {
|
|
754
|
-
const w = new BufferWriter();
|
|
755
|
-
w.writeVarInt(0n);
|
|
756
|
-
w.writeVarInt(stream.trackAlias);
|
|
757
|
-
w.writeVarInt(stream.groupId);
|
|
758
|
-
w.writeVarInt(stream.subgroupId);
|
|
759
|
-
w.writeUint8(stream.publisherPriority);
|
|
760
|
-
for (const obj of stream.objects) {
|
|
761
|
-
w.writeVarInt(obj.objectId);
|
|
762
|
-
w.writeVarInt(obj.payloadLength);
|
|
763
|
-
w.writeBytes(obj.payload);
|
|
764
|
-
}
|
|
765
|
-
return w.finish();
|
|
766
|
-
}
|
|
767
|
-
function encodeDatagram(dg) {
|
|
768
|
-
const w = new BufferWriter();
|
|
769
|
-
w.writeVarInt(dg.trackAlias);
|
|
770
|
-
w.writeVarInt(dg.groupId);
|
|
771
|
-
w.writeVarInt(dg.objectId);
|
|
772
|
-
w.writeVarInt(dg.payloadLength);
|
|
773
|
-
w.writeBytes(dg.payload);
|
|
774
|
-
return w.finish();
|
|
775
|
-
}
|
|
776
|
-
function encodeFetchStream(stream) {
|
|
777
|
-
const w = new BufferWriter();
|
|
778
|
-
w.writeVarInt(2n);
|
|
779
|
-
w.writeVarInt(stream.subscribeRequestId);
|
|
780
|
-
for (const obj of stream.objects) {
|
|
781
|
-
w.writeVarInt(obj.objectId);
|
|
782
|
-
w.writeVarInt(obj.payloadLength);
|
|
783
|
-
w.writeBytes(obj.payload);
|
|
784
|
-
}
|
|
785
|
-
return w.finish();
|
|
786
|
-
}
|
|
787
|
-
function decodeSubgroupStream(bytes) {
|
|
788
|
-
try {
|
|
789
|
-
const r = new BufferReader(bytes);
|
|
790
|
-
const streamType = r.readVarInt();
|
|
791
|
-
if (streamType !== 0n) {
|
|
792
|
-
return {
|
|
793
|
-
ok: false,
|
|
794
|
-
error: new DecodeError(
|
|
795
|
-
"CONSTRAINT_VIOLATION",
|
|
796
|
-
`Expected subgroup stream type 0, got ${streamType}`,
|
|
797
|
-
0
|
|
798
|
-
)
|
|
799
|
-
};
|
|
800
|
-
}
|
|
801
|
-
const trackAlias = r.readVarInt();
|
|
802
|
-
const groupId = r.readVarInt();
|
|
803
|
-
const subgroupId = r.readVarInt();
|
|
804
|
-
const publisherPriority = r.readUint8();
|
|
805
|
-
const objects = [];
|
|
806
|
-
while (r.remaining > 0) {
|
|
807
|
-
const objectId = r.readVarInt();
|
|
808
|
-
const payloadLength = Number(r.readVarInt());
|
|
809
|
-
const payload = r.readBytes(payloadLength);
|
|
810
|
-
objects.push({ type: "object", objectId, payloadLength, payload });
|
|
811
|
-
}
|
|
812
|
-
return {
|
|
813
|
-
ok: true,
|
|
814
|
-
value: { type: "subgroup", trackAlias, groupId, subgroupId, publisherPriority, objects },
|
|
815
|
-
bytesRead: r.offset
|
|
816
|
-
};
|
|
817
|
-
} catch (e) {
|
|
818
|
-
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
819
|
-
throw e;
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
function decodeDatagram(bytes) {
|
|
823
|
-
try {
|
|
824
|
-
const r = new BufferReader(bytes);
|
|
825
|
-
const trackAlias = r.readVarInt();
|
|
826
|
-
const groupId = r.readVarInt();
|
|
827
|
-
const objectId = r.readVarInt();
|
|
828
|
-
const payloadLength = Number(r.readVarInt());
|
|
829
|
-
const payload = r.readBytes(payloadLength);
|
|
830
|
-
return {
|
|
831
|
-
ok: true,
|
|
832
|
-
value: { type: "datagram", trackAlias, groupId, objectId, payloadLength, payload },
|
|
833
|
-
bytesRead: r.offset
|
|
834
|
-
};
|
|
835
|
-
} catch (e) {
|
|
836
|
-
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
837
|
-
throw e;
|
|
1701
|
+
return encodeTrackStatusPayload(msg, w);
|
|
1702
|
+
case "track_status_ok":
|
|
1703
|
+
return encodeTrackStatusOkPayload(msg, w);
|
|
1704
|
+
case "track_status_error":
|
|
1705
|
+
return encodeTrackStatusErrorPayload(msg, w);
|
|
1706
|
+
case "goaway":
|
|
1707
|
+
return encodeGoAwayPayload(msg, w);
|
|
1708
|
+
case "max_request_id":
|
|
1709
|
+
return encodeMaxRequestIdPayload(msg, w);
|
|
1710
|
+
case "requests_blocked":
|
|
1711
|
+
return encodeRequestsBlockedPayload(msg, w);
|
|
1712
|
+
default: {
|
|
1713
|
+
const _exhaustive = msg;
|
|
1714
|
+
throw new Error(`Unhandled message type: ${_exhaustive.type}`);
|
|
1715
|
+
}
|
|
838
1716
|
}
|
|
839
1717
|
}
|
|
840
|
-
function
|
|
1718
|
+
function decodeMessage(bytes) {
|
|
841
1719
|
try {
|
|
842
|
-
const
|
|
843
|
-
const
|
|
844
|
-
|
|
1720
|
+
const reader = new BufferReader(bytes);
|
|
1721
|
+
const typeId = reader.readVarInt();
|
|
1722
|
+
const lenHi = reader.readUint8();
|
|
1723
|
+
const lenLo = reader.readUint8();
|
|
1724
|
+
const payloadLength = lenHi << 8 | lenLo;
|
|
1725
|
+
const payloadBytes = reader.readBytes(payloadLength);
|
|
1726
|
+
const payloadReader = new BufferReader(payloadBytes);
|
|
1727
|
+
const decoder = payloadDecoders.get(typeId);
|
|
1728
|
+
if (!decoder) {
|
|
845
1729
|
return {
|
|
846
1730
|
ok: false,
|
|
847
1731
|
error: new DecodeError(
|
|
848
|
-
"
|
|
849
|
-
`
|
|
1732
|
+
"UNKNOWN_MESSAGE_TYPE",
|
|
1733
|
+
`Unknown message type ID: 0x${typeId.toString(16)}`,
|
|
850
1734
|
0
|
|
851
1735
|
)
|
|
852
1736
|
};
|
|
853
1737
|
}
|
|
854
|
-
const
|
|
855
|
-
|
|
856
|
-
while (r.remaining > 0) {
|
|
857
|
-
const objectId = r.readVarInt();
|
|
858
|
-
const payloadLength = Number(r.readVarInt());
|
|
859
|
-
const payload = r.readBytes(payloadLength);
|
|
860
|
-
objects.push({ type: "object", objectId, payloadLength, payload });
|
|
861
|
-
}
|
|
862
|
-
return {
|
|
863
|
-
ok: true,
|
|
864
|
-
value: { type: "fetch", subscribeRequestId, objects },
|
|
865
|
-
bytesRead: r.offset
|
|
866
|
-
};
|
|
1738
|
+
const message = decoder(payloadReader);
|
|
1739
|
+
return { ok: true, value: message, bytesRead: reader.offset };
|
|
867
1740
|
} catch (e) {
|
|
868
|
-
if (e instanceof DecodeError)
|
|
869
|
-
|
|
870
|
-
}
|
|
871
|
-
}
|
|
872
|
-
function decodeDataStream(streamType, bytes) {
|
|
873
|
-
switch (streamType) {
|
|
874
|
-
case "subgroup":
|
|
875
|
-
return decodeSubgroupStream(bytes);
|
|
876
|
-
case "datagram":
|
|
877
|
-
return decodeDatagram(bytes);
|
|
878
|
-
case "fetch":
|
|
879
|
-
return decodeFetchStream(bytes);
|
|
880
|
-
default: {
|
|
881
|
-
const _exhaustive = streamType;
|
|
882
|
-
throw new Error(`Unknown stream type: ${_exhaustive}`);
|
|
1741
|
+
if (e instanceof DecodeError) {
|
|
1742
|
+
return { ok: false, error: e };
|
|
883
1743
|
}
|
|
1744
|
+
throw e;
|
|
884
1745
|
}
|
|
885
1746
|
}
|
|
886
1747
|
function createStreamDecoder() {
|
|
887
1748
|
let buffer = new Uint8Array(0);
|
|
1749
|
+
let offset = 0;
|
|
888
1750
|
return new TransformStream({
|
|
889
1751
|
transform(chunk, controller) {
|
|
1752
|
+
if (offset > 0) {
|
|
1753
|
+
buffer = buffer.subarray(offset);
|
|
1754
|
+
offset = 0;
|
|
1755
|
+
}
|
|
890
1756
|
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
891
1757
|
newBuffer.set(buffer, 0);
|
|
892
1758
|
newBuffer.set(chunk, buffer.length);
|
|
893
1759
|
buffer = newBuffer;
|
|
894
|
-
while (buffer.length
|
|
895
|
-
const result = decodeMessage(buffer);
|
|
1760
|
+
while (offset < buffer.length) {
|
|
1761
|
+
const result = decodeMessage(buffer.subarray(offset));
|
|
896
1762
|
if (!result.ok) {
|
|
897
1763
|
if (result.error.code === "UNEXPECTED_END") {
|
|
898
1764
|
break;
|
|
@@ -901,11 +1767,11 @@ function createStreamDecoder() {
|
|
|
901
1767
|
return;
|
|
902
1768
|
}
|
|
903
1769
|
controller.enqueue(result.value);
|
|
904
|
-
|
|
1770
|
+
offset += result.bytesRead;
|
|
905
1771
|
}
|
|
906
1772
|
},
|
|
907
1773
|
flush(controller) {
|
|
908
|
-
if (buffer.length
|
|
1774
|
+
if (offset < buffer.length) {
|
|
909
1775
|
controller.error(
|
|
910
1776
|
new DecodeError("UNEXPECTED_END", "Stream ended with incomplete message data", 0)
|
|
911
1777
|
);
|
|
@@ -913,242 +1779,9 @@ function createStreamDecoder() {
|
|
|
913
1779
|
}
|
|
914
1780
|
});
|
|
915
1781
|
}
|
|
916
|
-
function createSubgroupStreamDecoder() {
|
|
917
|
-
let buffer = new Uint8Array(0);
|
|
918
|
-
let headerEmitted = false;
|
|
919
|
-
return new TransformStream({
|
|
920
|
-
transform(chunk, controller) {
|
|
921
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
922
|
-
newBuffer.set(buffer, 0);
|
|
923
|
-
newBuffer.set(chunk, buffer.length);
|
|
924
|
-
buffer = newBuffer;
|
|
925
|
-
if (!headerEmitted) {
|
|
926
|
-
try {
|
|
927
|
-
const r = new BufferReader(buffer);
|
|
928
|
-
const streamType = r.readVarInt();
|
|
929
|
-
if (streamType !== 0n) {
|
|
930
|
-
controller.error(
|
|
931
|
-
new DecodeError(
|
|
932
|
-
"CONSTRAINT_VIOLATION",
|
|
933
|
-
`Expected subgroup stream type 0, got ${streamType}`,
|
|
934
|
-
0
|
|
935
|
-
)
|
|
936
|
-
);
|
|
937
|
-
return;
|
|
938
|
-
}
|
|
939
|
-
const trackAlias = r.readVarInt();
|
|
940
|
-
const groupId = r.readVarInt();
|
|
941
|
-
const subgroupId = r.readVarInt();
|
|
942
|
-
const publisherPriority = r.readUint8();
|
|
943
|
-
controller.enqueue({
|
|
944
|
-
type: "subgroup_header",
|
|
945
|
-
trackAlias,
|
|
946
|
-
groupId,
|
|
947
|
-
subgroupId,
|
|
948
|
-
publisherPriority
|
|
949
|
-
});
|
|
950
|
-
headerEmitted = true;
|
|
951
|
-
buffer = buffer.slice(r.offset);
|
|
952
|
-
} catch (e) {
|
|
953
|
-
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
954
|
-
return;
|
|
955
|
-
}
|
|
956
|
-
controller.error(e);
|
|
957
|
-
return;
|
|
958
|
-
}
|
|
959
|
-
}
|
|
960
|
-
while (buffer.length > 0) {
|
|
961
|
-
try {
|
|
962
|
-
const r = new BufferReader(buffer);
|
|
963
|
-
const objectId = r.readVarInt();
|
|
964
|
-
const payloadLength = Number(r.readVarInt());
|
|
965
|
-
const payload = r.readBytes(payloadLength);
|
|
966
|
-
controller.enqueue({ type: "object", objectId, payloadLength, payload });
|
|
967
|
-
buffer = buffer.slice(r.offset);
|
|
968
|
-
} catch (e) {
|
|
969
|
-
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
970
|
-
break;
|
|
971
|
-
}
|
|
972
|
-
controller.error(e);
|
|
973
|
-
return;
|
|
974
|
-
}
|
|
975
|
-
}
|
|
976
|
-
},
|
|
977
|
-
flush(controller) {
|
|
978
|
-
if (buffer.length > 0) {
|
|
979
|
-
controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
980
|
-
}
|
|
981
|
-
}
|
|
982
|
-
});
|
|
983
|
-
}
|
|
984
|
-
function createFetchStreamDecoder() {
|
|
985
|
-
let buffer = new Uint8Array(0);
|
|
986
|
-
let headerEmitted = false;
|
|
987
|
-
return new TransformStream({
|
|
988
|
-
transform(chunk, controller) {
|
|
989
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
990
|
-
newBuffer.set(buffer, 0);
|
|
991
|
-
newBuffer.set(chunk, buffer.length);
|
|
992
|
-
buffer = newBuffer;
|
|
993
|
-
if (!headerEmitted) {
|
|
994
|
-
try {
|
|
995
|
-
const r = new BufferReader(buffer);
|
|
996
|
-
const streamType = r.readVarInt();
|
|
997
|
-
if (streamType !== 2n) {
|
|
998
|
-
controller.error(
|
|
999
|
-
new DecodeError(
|
|
1000
|
-
"CONSTRAINT_VIOLATION",
|
|
1001
|
-
`Expected fetch stream type 2, got ${streamType}`,
|
|
1002
|
-
0
|
|
1003
|
-
)
|
|
1004
|
-
);
|
|
1005
|
-
return;
|
|
1006
|
-
}
|
|
1007
|
-
const subscribeRequestId = r.readVarInt();
|
|
1008
|
-
controller.enqueue({
|
|
1009
|
-
type: "fetch_header",
|
|
1010
|
-
subscribeRequestId
|
|
1011
|
-
});
|
|
1012
|
-
headerEmitted = true;
|
|
1013
|
-
buffer = buffer.slice(r.offset);
|
|
1014
|
-
} catch (e) {
|
|
1015
|
-
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
1016
|
-
return;
|
|
1017
|
-
}
|
|
1018
|
-
controller.error(e);
|
|
1019
|
-
return;
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
|
-
while (buffer.length > 0) {
|
|
1023
|
-
try {
|
|
1024
|
-
const r = new BufferReader(buffer);
|
|
1025
|
-
const objectId = r.readVarInt();
|
|
1026
|
-
const payloadLength = Number(r.readVarInt());
|
|
1027
|
-
const payload = r.readBytes(payloadLength);
|
|
1028
|
-
controller.enqueue({ type: "object", objectId, payloadLength, payload });
|
|
1029
|
-
buffer = buffer.slice(r.offset);
|
|
1030
|
-
} catch (e) {
|
|
1031
|
-
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
1032
|
-
break;
|
|
1033
|
-
}
|
|
1034
|
-
controller.error(e);
|
|
1035
|
-
return;
|
|
1036
|
-
}
|
|
1037
|
-
}
|
|
1038
|
-
},
|
|
1039
|
-
flush(controller) {
|
|
1040
|
-
if (buffer.length > 0) {
|
|
1041
|
-
controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
1042
|
-
}
|
|
1043
|
-
}
|
|
1044
|
-
});
|
|
1045
|
-
}
|
|
1046
|
-
function createDataStreamDecoder() {
|
|
1047
|
-
let buffer = new Uint8Array(0);
|
|
1048
|
-
let detectedType = null;
|
|
1049
|
-
let headerEmitted = false;
|
|
1050
|
-
return new TransformStream({
|
|
1051
|
-
transform(chunk, controller) {
|
|
1052
|
-
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1053
|
-
newBuffer.set(buffer, 0);
|
|
1054
|
-
newBuffer.set(chunk, buffer.length);
|
|
1055
|
-
buffer = newBuffer;
|
|
1056
|
-
if (detectedType === null) {
|
|
1057
|
-
try {
|
|
1058
|
-
const r = new BufferReader(buffer);
|
|
1059
|
-
const streamType = r.readVarInt();
|
|
1060
|
-
if (streamType === 0n) {
|
|
1061
|
-
detectedType = "subgroup";
|
|
1062
|
-
} else if (streamType === 2n) {
|
|
1063
|
-
detectedType = "fetch";
|
|
1064
|
-
} else {
|
|
1065
|
-
controller.error(
|
|
1066
|
-
new DecodeError("CONSTRAINT_VIOLATION", `Unknown data stream type: ${streamType}`, 0)
|
|
1067
|
-
);
|
|
1068
|
-
return;
|
|
1069
|
-
}
|
|
1070
|
-
} catch (e) {
|
|
1071
|
-
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
1072
|
-
return;
|
|
1073
|
-
}
|
|
1074
|
-
controller.error(e);
|
|
1075
|
-
return;
|
|
1076
|
-
}
|
|
1077
|
-
}
|
|
1078
|
-
if (detectedType === "subgroup") {
|
|
1079
|
-
if (!headerEmitted) {
|
|
1080
|
-
try {
|
|
1081
|
-
const r = new BufferReader(buffer);
|
|
1082
|
-
r.readVarInt();
|
|
1083
|
-
const trackAlias = r.readVarInt();
|
|
1084
|
-
const groupId = r.readVarInt();
|
|
1085
|
-
const subgroupId = r.readVarInt();
|
|
1086
|
-
const publisherPriority = r.readUint8();
|
|
1087
|
-
controller.enqueue({
|
|
1088
|
-
type: "subgroup_header",
|
|
1089
|
-
trackAlias,
|
|
1090
|
-
groupId,
|
|
1091
|
-
subgroupId,
|
|
1092
|
-
publisherPriority
|
|
1093
|
-
});
|
|
1094
|
-
headerEmitted = true;
|
|
1095
|
-
buffer = buffer.slice(r.offset);
|
|
1096
|
-
} catch (e) {
|
|
1097
|
-
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
1098
|
-
return;
|
|
1099
|
-
}
|
|
1100
|
-
controller.error(e);
|
|
1101
|
-
return;
|
|
1102
|
-
}
|
|
1103
|
-
}
|
|
1104
|
-
} else {
|
|
1105
|
-
if (!headerEmitted) {
|
|
1106
|
-
try {
|
|
1107
|
-
const r = new BufferReader(buffer);
|
|
1108
|
-
r.readVarInt();
|
|
1109
|
-
const subscribeRequestId = r.readVarInt();
|
|
1110
|
-
controller.enqueue({
|
|
1111
|
-
type: "fetch_header",
|
|
1112
|
-
subscribeRequestId
|
|
1113
|
-
});
|
|
1114
|
-
headerEmitted = true;
|
|
1115
|
-
buffer = buffer.slice(r.offset);
|
|
1116
|
-
} catch (e) {
|
|
1117
|
-
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
1118
|
-
return;
|
|
1119
|
-
}
|
|
1120
|
-
controller.error(e);
|
|
1121
|
-
return;
|
|
1122
|
-
}
|
|
1123
|
-
}
|
|
1124
|
-
}
|
|
1125
|
-
while (buffer.length > 0) {
|
|
1126
|
-
try {
|
|
1127
|
-
const r = new BufferReader(buffer);
|
|
1128
|
-
const objectId = r.readVarInt();
|
|
1129
|
-
const payloadLength = Number(r.readVarInt());
|
|
1130
|
-
const payload = r.readBytes(payloadLength);
|
|
1131
|
-
controller.enqueue({ type: "object", objectId, payloadLength, payload });
|
|
1132
|
-
buffer = buffer.slice(r.offset);
|
|
1133
|
-
} catch (e) {
|
|
1134
|
-
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
1135
|
-
break;
|
|
1136
|
-
}
|
|
1137
|
-
controller.error(e);
|
|
1138
|
-
return;
|
|
1139
|
-
}
|
|
1140
|
-
}
|
|
1141
|
-
},
|
|
1142
|
-
flush(controller) {
|
|
1143
|
-
if (buffer.length > 0) {
|
|
1144
|
-
controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
1145
|
-
}
|
|
1146
|
-
}
|
|
1147
|
-
});
|
|
1148
|
-
}
|
|
1149
1782
|
function createDraft14Codec() {
|
|
1150
1783
|
return {
|
|
1151
|
-
draft: "
|
|
1784
|
+
draft: "14",
|
|
1152
1785
|
encodeMessage,
|
|
1153
1786
|
decodeMessage,
|
|
1154
1787
|
encodeSubgroupStream,
|
|
@@ -1201,8 +1834,9 @@ export {
|
|
|
1201
1834
|
PARAM_MAX_REQUEST_ID,
|
|
1202
1835
|
MESSAGE_TYPE_MAP,
|
|
1203
1836
|
MESSAGE_ID_MAP,
|
|
1204
|
-
|
|
1205
|
-
|
|
1837
|
+
FilterType,
|
|
1838
|
+
GroupOrder,
|
|
1839
|
+
FetchType,
|
|
1206
1840
|
encodeSubgroupStream,
|
|
1207
1841
|
encodeDatagram,
|
|
1208
1842
|
encodeFetchStream,
|
|
@@ -1210,9 +1844,11 @@ export {
|
|
|
1210
1844
|
decodeDatagram,
|
|
1211
1845
|
decodeFetchStream,
|
|
1212
1846
|
decodeDataStream,
|
|
1213
|
-
createStreamDecoder,
|
|
1214
1847
|
createSubgroupStreamDecoder,
|
|
1215
1848
|
createFetchStreamDecoder,
|
|
1216
1849
|
createDataStreamDecoder,
|
|
1850
|
+
encodeMessage,
|
|
1851
|
+
decodeMessage,
|
|
1852
|
+
createStreamDecoder,
|
|
1217
1853
|
createDraft14Codec
|
|
1218
1854
|
};
|