@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,177 +1,504 @@
|
|
|
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
|
-
// src/drafts/draft08/
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
var MSG_FETCH_OK = 0x18n;
|
|
30
|
-
var MSG_FETCH_ERROR = 0x19n;
|
|
31
|
-
var MSG_SUBSCRIBES_BLOCKED = 0x1an;
|
|
32
|
-
var MSG_CLIENT_SETUP = 0x40n;
|
|
33
|
-
var MSG_SERVER_SETUP = 0x41n;
|
|
34
|
-
var SETUP_PARAM_PATH = 0x01n;
|
|
35
|
-
var SETUP_PARAM_MAX_SUBSCRIBE_ID = 0x02n;
|
|
36
|
-
var PARAM_AUTHORIZATION_INFO = 0x02n;
|
|
37
|
-
var PARAM_DELIVERY_TIMEOUT = 0x03n;
|
|
38
|
-
var PARAM_MAX_CACHE_DURATION = 0x04n;
|
|
39
|
-
var MESSAGE_TYPE_MAP = /* @__PURE__ */ new Map([
|
|
40
|
-
[MSG_CLIENT_SETUP, "client_setup"],
|
|
41
|
-
[MSG_SERVER_SETUP, "server_setup"],
|
|
42
|
-
[MSG_SUBSCRIBE, "subscribe"],
|
|
43
|
-
[MSG_SUBSCRIBE_OK, "subscribe_ok"],
|
|
44
|
-
[MSG_SUBSCRIBE_ERROR, "subscribe_error"],
|
|
45
|
-
[MSG_SUBSCRIBE_UPDATE, "subscribe_update"],
|
|
46
|
-
[MSG_SUBSCRIBE_DONE, "subscribe_done"],
|
|
47
|
-
[MSG_UNSUBSCRIBE, "unsubscribe"],
|
|
48
|
-
[MSG_ANNOUNCE, "announce"],
|
|
49
|
-
[MSG_ANNOUNCE_OK, "announce_ok"],
|
|
50
|
-
[MSG_ANNOUNCE_ERROR, "announce_error"],
|
|
51
|
-
[MSG_UNANNOUNCE, "unannounce"],
|
|
52
|
-
[MSG_ANNOUNCE_CANCEL, "announce_cancel"],
|
|
53
|
-
[MSG_SUBSCRIBE_ANNOUNCES, "subscribe_announces"],
|
|
54
|
-
[MSG_SUBSCRIBE_ANNOUNCES_OK, "subscribe_announces_ok"],
|
|
55
|
-
[MSG_SUBSCRIBE_ANNOUNCES_ERROR, "subscribe_announces_error"],
|
|
56
|
-
[MSG_UNSUBSCRIBE_ANNOUNCES, "unsubscribe_announces"],
|
|
57
|
-
[MSG_FETCH, "fetch"],
|
|
58
|
-
[MSG_FETCH_OK, "fetch_ok"],
|
|
59
|
-
[MSG_FETCH_ERROR, "fetch_error"],
|
|
60
|
-
[MSG_FETCH_CANCEL, "fetch_cancel"],
|
|
61
|
-
[MSG_TRACK_STATUS_REQUEST, "track_status_request"],
|
|
62
|
-
[MSG_TRACK_STATUS, "track_status"],
|
|
63
|
-
[MSG_GOAWAY, "goaway"],
|
|
64
|
-
[MSG_MAX_SUBSCRIBE_ID, "max_subscribe_id"],
|
|
65
|
-
[MSG_SUBSCRIBES_BLOCKED, "subscribes_blocked"]
|
|
66
|
-
]);
|
|
67
|
-
var MESSAGE_ID_MAP = new Map(
|
|
68
|
-
[...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
// src/drafts/draft08/codec.ts
|
|
72
|
-
function bytesToHex(bytes) {
|
|
73
|
-
let hex = "";
|
|
74
|
-
for (let i = 0; i < bytes.byteLength; i++) {
|
|
75
|
-
hex += bytes[i].toString(16).padStart(2, "0");
|
|
9
|
+
// src/drafts/draft08/data-streams.ts
|
|
10
|
+
var SUBGROUP_STREAM_TYPE = 0x04n;
|
|
11
|
+
var DATAGRAM_TYPE = 0x01n;
|
|
12
|
+
var DATAGRAM_STATUS_TYPE = 0x02n;
|
|
13
|
+
var FETCH_STREAM_TYPE = 0x05n;
|
|
14
|
+
function encodeSubgroupStream(stream) {
|
|
15
|
+
const w = new BufferWriter();
|
|
16
|
+
w.writeVarInt(SUBGROUP_STREAM_TYPE);
|
|
17
|
+
w.writeVarInt(stream.trackAlias);
|
|
18
|
+
w.writeVarInt(stream.groupId);
|
|
19
|
+
w.writeVarInt(stream.subgroupId);
|
|
20
|
+
w.writeUint8(stream.publisherPriority);
|
|
21
|
+
for (const obj of stream.objects) {
|
|
22
|
+
w.writeVarInt(obj.objectId);
|
|
23
|
+
w.writeVarInt(obj.extensionCount);
|
|
24
|
+
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
|
|
25
|
+
w.writeVarInt(obj.payloadLength);
|
|
26
|
+
if (obj.payloadLength === 0 && obj.status !== void 0) {
|
|
27
|
+
w.writeVarInt(obj.status);
|
|
28
|
+
} else {
|
|
29
|
+
w.writeBytes(obj.payload);
|
|
30
|
+
}
|
|
76
31
|
}
|
|
77
|
-
return
|
|
32
|
+
return w.finish();
|
|
78
33
|
}
|
|
79
|
-
function
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
34
|
+
function encodeDatagram(dg) {
|
|
35
|
+
const w = new BufferWriter();
|
|
36
|
+
w.writeVarInt(DATAGRAM_TYPE);
|
|
37
|
+
w.writeVarInt(dg.trackAlias);
|
|
38
|
+
w.writeVarInt(dg.groupId);
|
|
39
|
+
w.writeVarInt(dg.objectId);
|
|
40
|
+
w.writeUint8(dg.publisherPriority);
|
|
41
|
+
w.writeVarInt(dg.extensionCount);
|
|
42
|
+
if (dg.extensionData.length > 0) w.writeBytes(dg.extensionData);
|
|
43
|
+
w.writeVarInt(dg.payloadLength);
|
|
44
|
+
if (dg.payloadLength === 0 && dg.objectStatus !== void 0) {
|
|
45
|
+
w.writeVarInt(dg.objectStatus);
|
|
46
|
+
} else {
|
|
47
|
+
w.writeBytes(dg.payload);
|
|
83
48
|
}
|
|
84
|
-
return
|
|
49
|
+
return w.finish();
|
|
85
50
|
}
|
|
86
|
-
function
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
w.writeVarInt(
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
w.writeVarInt(encoded.byteLength);
|
|
96
|
-
w.writeBytes(encoded);
|
|
97
|
-
}
|
|
98
|
-
if (params.max_subscribe_id !== void 0) {
|
|
99
|
-
w.writeVarInt(SETUP_PARAM_MAX_SUBSCRIBE_ID);
|
|
100
|
-
const tmpW = new BufferWriter(16);
|
|
101
|
-
tmpW.writeVarInt(params.max_subscribe_id);
|
|
102
|
-
const raw = tmpW.finish();
|
|
103
|
-
w.writeVarInt(raw.byteLength);
|
|
104
|
-
w.writeBytes(raw);
|
|
105
|
-
}
|
|
106
|
-
if (params.unknown) {
|
|
107
|
-
for (const u of params.unknown) {
|
|
108
|
-
w.writeVarInt(BigInt(u.id));
|
|
109
|
-
const raw = hexToBytes(u.raw_hex);
|
|
110
|
-
w.writeVarInt(raw.byteLength);
|
|
111
|
-
w.writeBytes(raw);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
51
|
+
function encodeDatagramStatus(dg) {
|
|
52
|
+
const w = new BufferWriter();
|
|
53
|
+
w.writeVarInt(DATAGRAM_STATUS_TYPE);
|
|
54
|
+
w.writeVarInt(dg.trackAlias);
|
|
55
|
+
w.writeVarInt(dg.groupId);
|
|
56
|
+
w.writeVarInt(dg.objectId);
|
|
57
|
+
w.writeUint8(dg.publisherPriority);
|
|
58
|
+
w.writeVarInt(dg.objectStatus);
|
|
59
|
+
return w.finish();
|
|
114
60
|
}
|
|
115
|
-
function
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
for (
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
61
|
+
function encodeFetchStream(stream) {
|
|
62
|
+
const w = new BufferWriter();
|
|
63
|
+
w.writeVarInt(FETCH_STREAM_TYPE);
|
|
64
|
+
w.writeVarInt(stream.subscribeId);
|
|
65
|
+
for (const obj of stream.objects) {
|
|
66
|
+
w.writeVarInt(obj.groupId);
|
|
67
|
+
w.writeVarInt(obj.subgroupId);
|
|
68
|
+
w.writeVarInt(obj.objectId);
|
|
69
|
+
w.writeUint8(obj.publisherPriority);
|
|
70
|
+
w.writeVarInt(obj.extensionCount);
|
|
71
|
+
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
|
|
72
|
+
w.writeVarInt(obj.payloadLength);
|
|
73
|
+
if (obj.payloadLength === 0 && obj.status !== void 0) {
|
|
74
|
+
w.writeVarInt(obj.status);
|
|
129
75
|
} else {
|
|
130
|
-
|
|
131
|
-
unknown.push({ id: `0x${paramType.toString(16)}`, length, raw_hex: bytesToHex(bytes) });
|
|
76
|
+
w.writeBytes(obj.payload);
|
|
132
77
|
}
|
|
133
78
|
}
|
|
134
|
-
|
|
135
|
-
return result;
|
|
79
|
+
return w.finish();
|
|
136
80
|
}
|
|
137
|
-
function
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
81
|
+
function decodeSubgroupStream(bytes) {
|
|
82
|
+
try {
|
|
83
|
+
const r = new BufferReader(bytes);
|
|
84
|
+
const streamType = Number(r.readVarInt());
|
|
85
|
+
if (streamType !== 4) {
|
|
86
|
+
return {
|
|
87
|
+
ok: false,
|
|
88
|
+
error: new DecodeError(
|
|
89
|
+
"CONSTRAINT_VIOLATION",
|
|
90
|
+
`Expected subgroup type 0x04, got 0x${streamType.toString(16)}`,
|
|
91
|
+
0
|
|
92
|
+
)
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const trackAlias = r.readVarInt();
|
|
96
|
+
const groupId = r.readVarInt();
|
|
97
|
+
const subgroupId = r.readVarInt();
|
|
98
|
+
const publisherPriority = r.readUint8();
|
|
99
|
+
const objects = [];
|
|
100
|
+
while (r.remaining > 0) {
|
|
101
|
+
const byteOffset = r.offset;
|
|
102
|
+
const objectId = r.readVarInt();
|
|
103
|
+
const extensionCount = Number(r.readVarInt());
|
|
104
|
+
const extStart = r.offset;
|
|
105
|
+
for (let i = 0; i < extensionCount; i++) {
|
|
106
|
+
const extType = Number(r.readVarInt());
|
|
107
|
+
if (extType % 2 === 0) {
|
|
108
|
+
r.readVarInt();
|
|
109
|
+
} else {
|
|
110
|
+
const extLen = Number(r.readVarInt());
|
|
111
|
+
if (extLen > 0) r.readBytesView(extLen);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const extensionData = r.buffer.slice(extStart, r.offset);
|
|
115
|
+
const payloadLength = Number(r.readVarInt());
|
|
116
|
+
let payload;
|
|
117
|
+
let status;
|
|
118
|
+
let payloadByteOffset;
|
|
119
|
+
if (payloadLength === 0) {
|
|
120
|
+
status = r.readVarInt();
|
|
121
|
+
payloadByteOffset = r.offset;
|
|
122
|
+
payload = new Uint8Array(0);
|
|
123
|
+
} else {
|
|
124
|
+
payloadByteOffset = r.offset;
|
|
125
|
+
payload = r.readBytesView(payloadLength);
|
|
126
|
+
}
|
|
127
|
+
const obj = {
|
|
128
|
+
type: "object",
|
|
129
|
+
byteOffset,
|
|
130
|
+
payloadByteOffset,
|
|
131
|
+
objectId,
|
|
132
|
+
extensionCount: BigInt(extensionCount),
|
|
133
|
+
extensionData,
|
|
134
|
+
payloadLength,
|
|
135
|
+
payload
|
|
136
|
+
};
|
|
137
|
+
if (status !== void 0) obj.status = status;
|
|
138
|
+
objects.push(obj);
|
|
171
139
|
}
|
|
140
|
+
return {
|
|
141
|
+
ok: true,
|
|
142
|
+
value: {
|
|
143
|
+
type: "subgroup",
|
|
144
|
+
streamTypeId: 4,
|
|
145
|
+
trackAlias,
|
|
146
|
+
groupId,
|
|
147
|
+
subgroupId,
|
|
148
|
+
publisherPriority,
|
|
149
|
+
objects
|
|
150
|
+
},
|
|
151
|
+
bytesRead: r.offset
|
|
152
|
+
};
|
|
153
|
+
} catch (e) {
|
|
154
|
+
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
155
|
+
throw e;
|
|
172
156
|
}
|
|
173
157
|
}
|
|
174
|
-
function
|
|
158
|
+
function decodeDatagram(bytes) {
|
|
159
|
+
try {
|
|
160
|
+
const r = new BufferReader(bytes);
|
|
161
|
+
const streamType = Number(r.readVarInt());
|
|
162
|
+
if (streamType !== 1) {
|
|
163
|
+
return {
|
|
164
|
+
ok: false,
|
|
165
|
+
error: new DecodeError(
|
|
166
|
+
"CONSTRAINT_VIOLATION",
|
|
167
|
+
`Expected datagram type 0x01, got 0x${streamType.toString(16)}`,
|
|
168
|
+
0
|
|
169
|
+
)
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const trackAlias = r.readVarInt();
|
|
173
|
+
const groupId = r.readVarInt();
|
|
174
|
+
const objectId = r.readVarInt();
|
|
175
|
+
const publisherPriority = r.readUint8();
|
|
176
|
+
const extensionCount = Number(r.readVarInt());
|
|
177
|
+
const extStart = r.offset;
|
|
178
|
+
for (let i = 0; i < extensionCount; i++) {
|
|
179
|
+
const extType = Number(r.readVarInt());
|
|
180
|
+
if (extType % 2 === 0) {
|
|
181
|
+
r.readVarInt();
|
|
182
|
+
} else {
|
|
183
|
+
const extLen = Number(r.readVarInt());
|
|
184
|
+
if (extLen > 0) r.readBytesView(extLen);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const extensionData = r.buffer.slice(extStart, r.offset);
|
|
188
|
+
const payloadLength = Number(r.readVarInt());
|
|
189
|
+
let objectStatus;
|
|
190
|
+
let payload;
|
|
191
|
+
if (payloadLength === 0) {
|
|
192
|
+
objectStatus = r.readVarInt();
|
|
193
|
+
payload = new Uint8Array(0);
|
|
194
|
+
} else {
|
|
195
|
+
payload = r.readBytesView(payloadLength);
|
|
196
|
+
}
|
|
197
|
+
const result = {
|
|
198
|
+
type: "datagram",
|
|
199
|
+
streamTypeId: 1,
|
|
200
|
+
trackAlias,
|
|
201
|
+
groupId,
|
|
202
|
+
objectId,
|
|
203
|
+
publisherPriority,
|
|
204
|
+
extensionCount: BigInt(extensionCount),
|
|
205
|
+
extensionData,
|
|
206
|
+
objectStatus: objectStatus ?? 0n,
|
|
207
|
+
payloadLength,
|
|
208
|
+
payload
|
|
209
|
+
};
|
|
210
|
+
return { ok: true, value: result, bytesRead: r.offset };
|
|
211
|
+
} catch (e) {
|
|
212
|
+
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
213
|
+
throw e;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
function decodeDatagramStatus(bytes) {
|
|
217
|
+
try {
|
|
218
|
+
const r = new BufferReader(bytes);
|
|
219
|
+
const streamType = Number(r.readVarInt());
|
|
220
|
+
if (streamType !== 2) {
|
|
221
|
+
return {
|
|
222
|
+
ok: false,
|
|
223
|
+
error: new DecodeError(
|
|
224
|
+
"CONSTRAINT_VIOLATION",
|
|
225
|
+
`Expected datagram_status type 0x02, got 0x${streamType.toString(16)}`,
|
|
226
|
+
0
|
|
227
|
+
)
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
const trackAlias = r.readVarInt();
|
|
231
|
+
const groupId = r.readVarInt();
|
|
232
|
+
const objectId = r.readVarInt();
|
|
233
|
+
const publisherPriority = r.readUint8();
|
|
234
|
+
const objectStatus = r.readVarInt();
|
|
235
|
+
return {
|
|
236
|
+
ok: true,
|
|
237
|
+
value: {
|
|
238
|
+
type: "datagram_status",
|
|
239
|
+
streamTypeId: 2,
|
|
240
|
+
trackAlias,
|
|
241
|
+
groupId,
|
|
242
|
+
objectId,
|
|
243
|
+
publisherPriority,
|
|
244
|
+
objectStatus
|
|
245
|
+
},
|
|
246
|
+
bytesRead: r.offset
|
|
247
|
+
};
|
|
248
|
+
} catch (e) {
|
|
249
|
+
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
250
|
+
throw e;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
function decodeFetchStream(bytes) {
|
|
254
|
+
try {
|
|
255
|
+
const r = new BufferReader(bytes);
|
|
256
|
+
const streamType = r.readVarInt();
|
|
257
|
+
if (streamType !== FETCH_STREAM_TYPE) {
|
|
258
|
+
return {
|
|
259
|
+
ok: false,
|
|
260
|
+
error: new DecodeError(
|
|
261
|
+
"CONSTRAINT_VIOLATION",
|
|
262
|
+
`Expected fetch type 0x05, got 0x${streamType.toString(16)}`,
|
|
263
|
+
0
|
|
264
|
+
)
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
const subscribeId = r.readVarInt();
|
|
268
|
+
const objects = [];
|
|
269
|
+
while (r.remaining > 0) {
|
|
270
|
+
const byteOffset = r.offset;
|
|
271
|
+
const groupId = r.readVarInt();
|
|
272
|
+
const subgroupId = r.readVarInt();
|
|
273
|
+
const objectId = r.readVarInt();
|
|
274
|
+
const publisherPriority = r.readUint8();
|
|
275
|
+
const extensionCount = Number(r.readVarInt());
|
|
276
|
+
const extStart = r.offset;
|
|
277
|
+
for (let i = 0; i < extensionCount; i++) {
|
|
278
|
+
const extType = Number(r.readVarInt());
|
|
279
|
+
if (extType % 2 === 0) {
|
|
280
|
+
r.readVarInt();
|
|
281
|
+
} else {
|
|
282
|
+
const extLen = Number(r.readVarInt());
|
|
283
|
+
if (extLen > 0) r.readBytesView(extLen);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const extensionData = r.buffer.slice(extStart, r.offset);
|
|
287
|
+
const payloadLength = Number(r.readVarInt());
|
|
288
|
+
let payload;
|
|
289
|
+
let status;
|
|
290
|
+
let payloadByteOffset;
|
|
291
|
+
if (payloadLength === 0) {
|
|
292
|
+
status = r.readVarInt();
|
|
293
|
+
payloadByteOffset = r.offset;
|
|
294
|
+
payload = new Uint8Array(0);
|
|
295
|
+
} else {
|
|
296
|
+
payloadByteOffset = r.offset;
|
|
297
|
+
payload = r.readBytesView(payloadLength);
|
|
298
|
+
}
|
|
299
|
+
const obj = {
|
|
300
|
+
type: "object",
|
|
301
|
+
byteOffset,
|
|
302
|
+
payloadByteOffset,
|
|
303
|
+
groupId,
|
|
304
|
+
subgroupId,
|
|
305
|
+
objectId,
|
|
306
|
+
publisherPriority,
|
|
307
|
+
extensionCount: BigInt(extensionCount),
|
|
308
|
+
extensionData,
|
|
309
|
+
payloadLength,
|
|
310
|
+
payload
|
|
311
|
+
};
|
|
312
|
+
if (status !== void 0) obj.status = status;
|
|
313
|
+
objects.push(obj);
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
ok: true,
|
|
317
|
+
value: { type: "fetch", subscribeId, objects },
|
|
318
|
+
bytesRead: r.offset
|
|
319
|
+
};
|
|
320
|
+
} catch (e) {
|
|
321
|
+
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
322
|
+
throw e;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
function decodeDataStream(streamType, bytes) {
|
|
326
|
+
switch (streamType) {
|
|
327
|
+
case "subgroup":
|
|
328
|
+
return decodeSubgroupStream(bytes);
|
|
329
|
+
case "datagram":
|
|
330
|
+
return decodeDatagram(bytes);
|
|
331
|
+
case "datagram_status":
|
|
332
|
+
return decodeDatagramStatus(bytes);
|
|
333
|
+
case "fetch":
|
|
334
|
+
return decodeFetchStream(bytes);
|
|
335
|
+
default: {
|
|
336
|
+
const _ = streamType;
|
|
337
|
+
throw new Error(`Unknown: ${_}`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// src/drafts/draft08/messages.ts
|
|
343
|
+
var MSG_SUBSCRIBE_UPDATE = 0x02n;
|
|
344
|
+
var MSG_SUBSCRIBE = 0x03n;
|
|
345
|
+
var MSG_SUBSCRIBE_OK = 0x04n;
|
|
346
|
+
var MSG_SUBSCRIBE_ERROR = 0x05n;
|
|
347
|
+
var MSG_ANNOUNCE = 0x06n;
|
|
348
|
+
var MSG_ANNOUNCE_OK = 0x07n;
|
|
349
|
+
var MSG_ANNOUNCE_ERROR = 0x08n;
|
|
350
|
+
var MSG_UNANNOUNCE = 0x09n;
|
|
351
|
+
var MSG_UNSUBSCRIBE = 0x0an;
|
|
352
|
+
var MSG_SUBSCRIBE_DONE = 0x0bn;
|
|
353
|
+
var MSG_ANNOUNCE_CANCEL = 0x0cn;
|
|
354
|
+
var MSG_TRACK_STATUS_REQUEST = 0x0dn;
|
|
355
|
+
var MSG_TRACK_STATUS = 0x0en;
|
|
356
|
+
var MSG_GOAWAY = 0x10n;
|
|
357
|
+
var MSG_SUBSCRIBE_ANNOUNCES = 0x11n;
|
|
358
|
+
var MSG_SUBSCRIBE_ANNOUNCES_OK = 0x12n;
|
|
359
|
+
var MSG_SUBSCRIBE_ANNOUNCES_ERROR = 0x13n;
|
|
360
|
+
var MSG_UNSUBSCRIBE_ANNOUNCES = 0x14n;
|
|
361
|
+
var MSG_MAX_SUBSCRIBE_ID = 0x15n;
|
|
362
|
+
var MSG_FETCH = 0x16n;
|
|
363
|
+
var MSG_FETCH_CANCEL = 0x17n;
|
|
364
|
+
var MSG_FETCH_OK = 0x18n;
|
|
365
|
+
var MSG_FETCH_ERROR = 0x19n;
|
|
366
|
+
var MSG_SUBSCRIBES_BLOCKED = 0x1an;
|
|
367
|
+
var MSG_CLIENT_SETUP = 0x40n;
|
|
368
|
+
var MSG_SERVER_SETUP = 0x41n;
|
|
369
|
+
var SETUP_PARAM_PATH = 0x01n;
|
|
370
|
+
var SETUP_PARAM_MAX_SUBSCRIBE_ID = 0x02n;
|
|
371
|
+
var PARAM_AUTHORIZATION_INFO = 0x02n;
|
|
372
|
+
var PARAM_DELIVERY_TIMEOUT = 0x03n;
|
|
373
|
+
var PARAM_MAX_CACHE_DURATION = 0x04n;
|
|
374
|
+
var MESSAGE_TYPE_MAP = /* @__PURE__ */ new Map([
|
|
375
|
+
[MSG_CLIENT_SETUP, "client_setup"],
|
|
376
|
+
[MSG_SERVER_SETUP, "server_setup"],
|
|
377
|
+
[MSG_SUBSCRIBE, "subscribe"],
|
|
378
|
+
[MSG_SUBSCRIBE_OK, "subscribe_ok"],
|
|
379
|
+
[MSG_SUBSCRIBE_ERROR, "subscribe_error"],
|
|
380
|
+
[MSG_SUBSCRIBE_UPDATE, "subscribe_update"],
|
|
381
|
+
[MSG_SUBSCRIBE_DONE, "subscribe_done"],
|
|
382
|
+
[MSG_UNSUBSCRIBE, "unsubscribe"],
|
|
383
|
+
[MSG_ANNOUNCE, "announce"],
|
|
384
|
+
[MSG_ANNOUNCE_OK, "announce_ok"],
|
|
385
|
+
[MSG_ANNOUNCE_ERROR, "announce_error"],
|
|
386
|
+
[MSG_UNANNOUNCE, "unannounce"],
|
|
387
|
+
[MSG_ANNOUNCE_CANCEL, "announce_cancel"],
|
|
388
|
+
[MSG_SUBSCRIBE_ANNOUNCES, "subscribe_announces"],
|
|
389
|
+
[MSG_SUBSCRIBE_ANNOUNCES_OK, "subscribe_announces_ok"],
|
|
390
|
+
[MSG_SUBSCRIBE_ANNOUNCES_ERROR, "subscribe_announces_error"],
|
|
391
|
+
[MSG_UNSUBSCRIBE_ANNOUNCES, "unsubscribe_announces"],
|
|
392
|
+
[MSG_FETCH, "fetch"],
|
|
393
|
+
[MSG_FETCH_OK, "fetch_ok"],
|
|
394
|
+
[MSG_FETCH_ERROR, "fetch_error"],
|
|
395
|
+
[MSG_FETCH_CANCEL, "fetch_cancel"],
|
|
396
|
+
[MSG_TRACK_STATUS_REQUEST, "track_status_request"],
|
|
397
|
+
[MSG_TRACK_STATUS, "track_status"],
|
|
398
|
+
[MSG_GOAWAY, "goaway"],
|
|
399
|
+
[MSG_MAX_SUBSCRIBE_ID, "max_subscribe_id"],
|
|
400
|
+
[MSG_SUBSCRIBES_BLOCKED, "subscribes_blocked"]
|
|
401
|
+
]);
|
|
402
|
+
var MESSAGE_ID_MAP = new Map(
|
|
403
|
+
[...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
|
|
404
|
+
);
|
|
405
|
+
|
|
406
|
+
// src/drafts/draft08/codec.ts
|
|
407
|
+
var textEncoder = /* @__PURE__ */ new TextEncoder();
|
|
408
|
+
var textDecoder = /* @__PURE__ */ new TextDecoder();
|
|
409
|
+
function encodeSetupParams(params, w) {
|
|
410
|
+
let count = 0;
|
|
411
|
+
if (params.path !== void 0) count++;
|
|
412
|
+
if (params.max_subscribe_id !== void 0) count++;
|
|
413
|
+
if (params.unknown) count += params.unknown.length;
|
|
414
|
+
w.writeVarInt(count);
|
|
415
|
+
if (params.path !== void 0) {
|
|
416
|
+
w.writeVarInt(SETUP_PARAM_PATH);
|
|
417
|
+
const encoded = textEncoder.encode(params.path);
|
|
418
|
+
w.writeVarInt(encoded.byteLength);
|
|
419
|
+
w.writeBytes(encoded);
|
|
420
|
+
}
|
|
421
|
+
if (params.max_subscribe_id !== void 0) {
|
|
422
|
+
w.writeVarInt(SETUP_PARAM_MAX_SUBSCRIBE_ID);
|
|
423
|
+
const tmpW = new BufferWriter(16);
|
|
424
|
+
tmpW.writeVarInt(params.max_subscribe_id);
|
|
425
|
+
const raw = tmpW.finish();
|
|
426
|
+
w.writeVarInt(raw.byteLength);
|
|
427
|
+
w.writeBytes(raw);
|
|
428
|
+
}
|
|
429
|
+
if (params.unknown) {
|
|
430
|
+
for (const u of params.unknown) {
|
|
431
|
+
w.writeVarInt(BigInt(u.id));
|
|
432
|
+
const raw = hexToBytes(u.raw_hex);
|
|
433
|
+
w.writeVarInt(raw.byteLength);
|
|
434
|
+
w.writeBytes(raw);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
function decodeSetupParams(r) {
|
|
439
|
+
const count = Number(r.readVarInt());
|
|
440
|
+
const result = {};
|
|
441
|
+
const unknown = [];
|
|
442
|
+
for (let i = 0; i < count; i++) {
|
|
443
|
+
const paramType = r.readVarInt();
|
|
444
|
+
const length = Number(r.readVarInt());
|
|
445
|
+
if (paramType === SETUP_PARAM_PATH) {
|
|
446
|
+
const bytes = r.readBytes(length);
|
|
447
|
+
result.path = textDecoder.decode(bytes);
|
|
448
|
+
} else if (paramType === SETUP_PARAM_MAX_SUBSCRIBE_ID) {
|
|
449
|
+
const blob = r.readBytes(length);
|
|
450
|
+
const tmpReader = new BufferReader(blob);
|
|
451
|
+
result.max_subscribe_id = tmpReader.readVarInt();
|
|
452
|
+
} else {
|
|
453
|
+
const bytes = r.readBytes(length);
|
|
454
|
+
unknown.push({
|
|
455
|
+
id: `0x${paramType.toString(16)}`,
|
|
456
|
+
length,
|
|
457
|
+
raw_hex: bytesToHex(bytes)
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
if (unknown.length > 0) result.unknown = unknown;
|
|
462
|
+
return result;
|
|
463
|
+
}
|
|
464
|
+
function encodeParams(params, w) {
|
|
465
|
+
let count = params.unknown ? params.unknown.length : 0;
|
|
466
|
+
if (params.authorization_info !== void 0) count++;
|
|
467
|
+
if (params.delivery_timeout !== void 0) count++;
|
|
468
|
+
if (params.max_cache_duration !== void 0) count++;
|
|
469
|
+
w.writeVarInt(count);
|
|
470
|
+
if (params.authorization_info !== void 0) {
|
|
471
|
+
w.writeVarInt(PARAM_AUTHORIZATION_INFO);
|
|
472
|
+
const encoded = textEncoder.encode(params.authorization_info);
|
|
473
|
+
w.writeVarInt(encoded.byteLength);
|
|
474
|
+
w.writeBytes(encoded);
|
|
475
|
+
}
|
|
476
|
+
if (params.delivery_timeout !== void 0) {
|
|
477
|
+
w.writeVarInt(PARAM_DELIVERY_TIMEOUT);
|
|
478
|
+
const tmpW = new BufferWriter(16);
|
|
479
|
+
tmpW.writeVarInt(params.delivery_timeout);
|
|
480
|
+
const raw = tmpW.finish();
|
|
481
|
+
w.writeVarInt(raw.byteLength);
|
|
482
|
+
w.writeBytes(raw);
|
|
483
|
+
}
|
|
484
|
+
if (params.max_cache_duration !== void 0) {
|
|
485
|
+
w.writeVarInt(PARAM_MAX_CACHE_DURATION);
|
|
486
|
+
const tmpW = new BufferWriter(16);
|
|
487
|
+
tmpW.writeVarInt(params.max_cache_duration);
|
|
488
|
+
const raw = tmpW.finish();
|
|
489
|
+
w.writeVarInt(raw.byteLength);
|
|
490
|
+
w.writeBytes(raw);
|
|
491
|
+
}
|
|
492
|
+
if (params.unknown) {
|
|
493
|
+
for (const u of params.unknown) {
|
|
494
|
+
w.writeVarInt(BigInt(u.id));
|
|
495
|
+
const raw = hexToBytes(u.raw_hex);
|
|
496
|
+
w.writeVarInt(raw.byteLength);
|
|
497
|
+
w.writeBytes(raw);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
function decodeParams(r) {
|
|
175
502
|
const count = Number(r.readVarInt());
|
|
176
503
|
const result = {};
|
|
177
504
|
const unknown = [];
|
|
@@ -180,7 +507,7 @@ function decodeParams(r) {
|
|
|
180
507
|
const length = Number(r.readVarInt());
|
|
181
508
|
if (paramType === PARAM_AUTHORIZATION_INFO) {
|
|
182
509
|
const bytes = r.readBytes(length);
|
|
183
|
-
result.authorization_info =
|
|
510
|
+
result.authorization_info = textDecoder.decode(bytes);
|
|
184
511
|
} else if (paramType === PARAM_DELIVERY_TIMEOUT) {
|
|
185
512
|
const blob = r.readBytes(length);
|
|
186
513
|
const tmpReader = new BufferReader(blob);
|
|
@@ -191,7 +518,11 @@ function decodeParams(r) {
|
|
|
191
518
|
result.max_cache_duration = tmpReader.readVarInt();
|
|
192
519
|
} else {
|
|
193
520
|
const bytes = r.readBytes(length);
|
|
194
|
-
unknown.push({
|
|
521
|
+
unknown.push({
|
|
522
|
+
id: `0x${paramType.toString(16)}`,
|
|
523
|
+
length,
|
|
524
|
+
raw_hex: bytesToHex(bytes)
|
|
525
|
+
});
|
|
195
526
|
}
|
|
196
527
|
}
|
|
197
528
|
if (unknown.length > 0) result.unknown = unknown;
|
|
@@ -431,7 +762,13 @@ function decodeSubscribeErrorPayload(r) {
|
|
|
431
762
|
const error_code = r.readVarInt();
|
|
432
763
|
const reason_phrase = r.readString();
|
|
433
764
|
const track_alias = r.readVarInt();
|
|
434
|
-
return {
|
|
765
|
+
return {
|
|
766
|
+
type: "subscribe_error",
|
|
767
|
+
subscribe_id,
|
|
768
|
+
error_code,
|
|
769
|
+
reason_phrase,
|
|
770
|
+
track_alias
|
|
771
|
+
};
|
|
435
772
|
}
|
|
436
773
|
function decodeSubscribeUpdatePayload(r) {
|
|
437
774
|
const subscribe_id = r.readVarInt();
|
|
@@ -455,7 +792,13 @@ function decodeSubscribeDonePayload(r) {
|
|
|
455
792
|
const status_code = r.readVarInt();
|
|
456
793
|
const stream_count = r.readVarInt();
|
|
457
794
|
const reason_phrase = r.readString();
|
|
458
|
-
return {
|
|
795
|
+
return {
|
|
796
|
+
type: "subscribe_done",
|
|
797
|
+
subscribe_id,
|
|
798
|
+
status_code,
|
|
799
|
+
stream_count,
|
|
800
|
+
reason_phrase
|
|
801
|
+
};
|
|
459
802
|
}
|
|
460
803
|
function decodeUnsubscribePayload(r) {
|
|
461
804
|
const subscribe_id = r.readVarInt();
|
|
@@ -484,566 +827,292 @@ function decodeAnnounceCancelPayload(r) {
|
|
|
484
827
|
const track_namespace = r.readTuple();
|
|
485
828
|
const error_code = r.readVarInt();
|
|
486
829
|
const reason_phrase = r.readString();
|
|
487
|
-
return { type: "announce_cancel", track_namespace, error_code, reason_phrase };
|
|
488
|
-
}
|
|
489
|
-
function decodeSubscribeAnnouncesPayload(r) {
|
|
490
|
-
const track_namespace_prefix = r.readTuple();
|
|
491
|
-
const parameters = decodeParams(r);
|
|
492
|
-
return { type: "subscribe_announces", track_namespace_prefix, parameters };
|
|
493
|
-
}
|
|
494
|
-
function decodeSubscribeAnnouncesOkPayload(r) {
|
|
495
|
-
const track_namespace_prefix = r.readTuple();
|
|
496
|
-
return { type: "subscribe_announces_ok", track_namespace_prefix };
|
|
497
|
-
}
|
|
498
|
-
function decodeSubscribeAnnouncesErrorPayload(r) {
|
|
499
|
-
const track_namespace_prefix = r.readTuple();
|
|
500
|
-
const error_code = r.readVarInt();
|
|
501
|
-
const reason_phrase = r.readString();
|
|
502
|
-
return { type: "subscribe_announces_error", track_namespace_prefix, error_code, reason_phrase };
|
|
503
|
-
}
|
|
504
|
-
function decodeUnsubscribeAnnouncesPayload(r) {
|
|
505
|
-
const track_namespace_prefix = r.readTuple();
|
|
506
|
-
return { type: "unsubscribe_announces", track_namespace_prefix };
|
|
507
|
-
}
|
|
508
|
-
function decodeFetchPayload(r) {
|
|
509
|
-
const subscribe_id = r.readVarInt();
|
|
510
|
-
const subscriber_priority = r.readUint8();
|
|
511
|
-
const group_order = r.readUint8();
|
|
512
|
-
const fetch_type = r.readVarInt();
|
|
513
|
-
const ft = Number(fetch_type);
|
|
514
|
-
if (ft < 1 || ft > 2) {
|
|
515
|
-
throw new DecodeError("CONSTRAINT_VIOLATION", `Invalid fetch_type: ${ft}`, r.offset);
|
|
516
|
-
}
|
|
517
|
-
let standalone;
|
|
518
|
-
let joining;
|
|
519
|
-
if (ft === 1) {
|
|
520
|
-
const track_namespace = r.readTuple();
|
|
521
|
-
const track_name = r.readString();
|
|
522
|
-
const start_group = r.readVarInt();
|
|
523
|
-
const start_object = r.readVarInt();
|
|
524
|
-
const end_group = r.readVarInt();
|
|
525
|
-
const end_object = r.readVarInt();
|
|
526
|
-
standalone = { track_namespace, track_name, start_group, start_object, end_group, end_object };
|
|
527
|
-
} else {
|
|
528
|
-
const joining_subscribe_id = r.readVarInt();
|
|
529
|
-
const preceding_group_offset = r.readVarInt();
|
|
530
|
-
joining = { joining_subscribe_id, preceding_group_offset };
|
|
531
|
-
}
|
|
532
|
-
const parameters = decodeParams(r);
|
|
533
|
-
return {
|
|
534
|
-
type: "fetch",
|
|
535
|
-
subscribe_id,
|
|
536
|
-
subscriber_priority,
|
|
537
|
-
group_order,
|
|
538
|
-
fetch_type,
|
|
539
|
-
standalone,
|
|
540
|
-
joining,
|
|
541
|
-
parameters
|
|
542
|
-
};
|
|
543
|
-
}
|
|
544
|
-
function decodeFetchOkPayload(r) {
|
|
545
|
-
const subscribe_id = r.readVarInt();
|
|
546
|
-
const group_order = r.readUint8();
|
|
547
|
-
const end_of_track = r.readUint8();
|
|
548
|
-
const largest_group_id = r.readVarInt();
|
|
549
|
-
const largest_object_id = r.readVarInt();
|
|
550
|
-
const parameters = decodeParams(r);
|
|
551
|
-
return {
|
|
552
|
-
type: "fetch_ok",
|
|
553
|
-
subscribe_id,
|
|
554
|
-
group_order,
|
|
555
|
-
end_of_track,
|
|
556
|
-
largest_group_id,
|
|
557
|
-
largest_object_id,
|
|
558
|
-
parameters
|
|
559
|
-
};
|
|
560
|
-
}
|
|
561
|
-
function decodeFetchErrorPayload(r) {
|
|
562
|
-
const subscribe_id = r.readVarInt();
|
|
563
|
-
const error_code = r.readVarInt();
|
|
564
|
-
const reason_phrase = r.readString();
|
|
565
|
-
return { type: "fetch_error", subscribe_id, error_code, reason_phrase };
|
|
566
|
-
}
|
|
567
|
-
function decodeFetchCancelPayload(r) {
|
|
568
|
-
const subscribe_id = r.readVarInt();
|
|
569
|
-
return { type: "fetch_cancel", subscribe_id };
|
|
570
|
-
}
|
|
571
|
-
function decodeTrackStatusRequestPayload(r) {
|
|
572
|
-
const track_namespace = r.readTuple();
|
|
573
|
-
const track_name = r.readString();
|
|
574
|
-
return { type: "track_status_request", track_namespace, track_name };
|
|
575
|
-
}
|
|
576
|
-
function decodeTrackStatusPayload(r) {
|
|
577
|
-
const track_namespace = r.readTuple();
|
|
578
|
-
const track_name = r.readString();
|
|
579
|
-
const status_code = r.readVarInt();
|
|
580
|
-
const last_group_id = r.readVarInt();
|
|
581
|
-
const last_object_id = r.readVarInt();
|
|
582
|
-
return {
|
|
583
|
-
type: "track_status",
|
|
584
|
-
track_namespace,
|
|
585
|
-
track_name,
|
|
586
|
-
status_code,
|
|
587
|
-
last_group_id,
|
|
588
|
-
last_object_id
|
|
589
|
-
};
|
|
590
|
-
}
|
|
591
|
-
function decodeGoAwayPayload(r) {
|
|
592
|
-
const new_session_uri = r.readString();
|
|
593
|
-
return { type: "goaway", new_session_uri };
|
|
594
|
-
}
|
|
595
|
-
function decodeMaxSubscribeIdPayload(r) {
|
|
596
|
-
const subscribe_id = r.readVarInt();
|
|
597
|
-
return { type: "max_subscribe_id", subscribe_id };
|
|
598
|
-
}
|
|
599
|
-
function decodeSubscribesBlockedPayload(r) {
|
|
600
|
-
const maximum_subscribe_id = r.readVarInt();
|
|
601
|
-
return { type: "subscribes_blocked", maximum_subscribe_id };
|
|
602
|
-
}
|
|
603
|
-
var payloadDecoders = /* @__PURE__ */ new Map([
|
|
604
|
-
[MSG_CLIENT_SETUP, decodeClientSetupPayload],
|
|
605
|
-
[MSG_SERVER_SETUP, decodeServerSetupPayload],
|
|
606
|
-
[MSG_SUBSCRIBE, decodeSubscribePayload],
|
|
607
|
-
[MSG_SUBSCRIBE_OK, decodeSubscribeOkPayload],
|
|
608
|
-
[MSG_SUBSCRIBE_ERROR, decodeSubscribeErrorPayload],
|
|
609
|
-
[MSG_SUBSCRIBE_UPDATE, decodeSubscribeUpdatePayload],
|
|
610
|
-
[MSG_SUBSCRIBE_DONE, decodeSubscribeDonePayload],
|
|
611
|
-
[MSG_UNSUBSCRIBE, decodeUnsubscribePayload],
|
|
612
|
-
[MSG_ANNOUNCE, decodeAnnouncePayload],
|
|
613
|
-
[MSG_ANNOUNCE_OK, decodeAnnounceOkPayload],
|
|
614
|
-
[MSG_ANNOUNCE_ERROR, decodeAnnounceErrorPayload],
|
|
615
|
-
[MSG_UNANNOUNCE, decodeUnannouncePayload],
|
|
616
|
-
[MSG_ANNOUNCE_CANCEL, decodeAnnounceCancelPayload],
|
|
617
|
-
[MSG_SUBSCRIBE_ANNOUNCES, decodeSubscribeAnnouncesPayload],
|
|
618
|
-
[MSG_SUBSCRIBE_ANNOUNCES_OK, decodeSubscribeAnnouncesOkPayload],
|
|
619
|
-
[MSG_SUBSCRIBE_ANNOUNCES_ERROR, decodeSubscribeAnnouncesErrorPayload],
|
|
620
|
-
[MSG_UNSUBSCRIBE_ANNOUNCES, decodeUnsubscribeAnnouncesPayload],
|
|
621
|
-
[MSG_FETCH, decodeFetchPayload],
|
|
622
|
-
[MSG_FETCH_OK, decodeFetchOkPayload],
|
|
623
|
-
[MSG_FETCH_ERROR, decodeFetchErrorPayload],
|
|
624
|
-
[MSG_FETCH_CANCEL, decodeFetchCancelPayload],
|
|
625
|
-
[MSG_TRACK_STATUS_REQUEST, decodeTrackStatusRequestPayload],
|
|
626
|
-
[MSG_TRACK_STATUS, decodeTrackStatusPayload],
|
|
627
|
-
[MSG_GOAWAY, decodeGoAwayPayload],
|
|
628
|
-
[MSG_MAX_SUBSCRIBE_ID, decodeMaxSubscribeIdPayload],
|
|
629
|
-
[MSG_SUBSCRIBES_BLOCKED, decodeSubscribesBlockedPayload]
|
|
630
|
-
]);
|
|
631
|
-
function encodeMessage(message) {
|
|
632
|
-
const typeId = MESSAGE_ID_MAP.get(message.type);
|
|
633
|
-
if (typeId === void 0) throw new Error(`Unknown message type: ${message.type}`);
|
|
634
|
-
const payloadWriter = new BufferWriter();
|
|
635
|
-
encodePayload(message, payloadWriter);
|
|
636
|
-
const payload = payloadWriter.finish();
|
|
637
|
-
const writer = new BufferWriter();
|
|
638
|
-
writer.writeVarInt(typeId);
|
|
639
|
-
writer.writeVarInt(payload.byteLength);
|
|
640
|
-
writer.writeBytes(payload);
|
|
641
|
-
return writer.finish();
|
|
642
|
-
}
|
|
643
|
-
function encodePayload(msg, w) {
|
|
644
|
-
switch (msg.type) {
|
|
645
|
-
case "client_setup":
|
|
646
|
-
return encodeClientSetupPayload(msg, w);
|
|
647
|
-
case "server_setup":
|
|
648
|
-
return encodeServerSetupPayload(msg, w);
|
|
649
|
-
case "subscribe":
|
|
650
|
-
return encodeSubscribePayload(msg, w);
|
|
651
|
-
case "subscribe_ok":
|
|
652
|
-
return encodeSubscribeOkPayload(msg, w);
|
|
653
|
-
case "subscribe_error":
|
|
654
|
-
return encodeSubscribeErrorPayload(msg, w);
|
|
655
|
-
case "subscribe_update":
|
|
656
|
-
return encodeSubscribeUpdatePayload(msg, w);
|
|
657
|
-
case "subscribe_done":
|
|
658
|
-
return encodeSubscribeDonePayload(msg, w);
|
|
659
|
-
case "unsubscribe":
|
|
660
|
-
return encodeUnsubscribePayload(msg, w);
|
|
661
|
-
case "announce":
|
|
662
|
-
return encodeAnnouncePayload(msg, w);
|
|
663
|
-
case "announce_ok":
|
|
664
|
-
return encodeAnnounceOkPayload(msg, w);
|
|
665
|
-
case "announce_error":
|
|
666
|
-
return encodeAnnounceErrorPayload(msg, w);
|
|
667
|
-
case "unannounce":
|
|
668
|
-
return encodeUnannouncePayload(msg, w);
|
|
669
|
-
case "announce_cancel":
|
|
670
|
-
return encodeAnnounceCancelPayload(msg, w);
|
|
671
|
-
case "subscribe_announces":
|
|
672
|
-
return encodeSubscribeAnnouncesPayload(msg, w);
|
|
673
|
-
case "subscribe_announces_ok":
|
|
674
|
-
return encodeSubscribeAnnouncesOkPayload(msg, w);
|
|
675
|
-
case "subscribe_announces_error":
|
|
676
|
-
return encodeSubscribeAnnouncesErrorPayload(msg, w);
|
|
677
|
-
case "unsubscribe_announces":
|
|
678
|
-
return encodeUnsubscribeAnnouncesPayload(msg, w);
|
|
679
|
-
case "fetch":
|
|
680
|
-
return encodeFetchPayload(msg, w);
|
|
681
|
-
case "fetch_ok":
|
|
682
|
-
return encodeFetchOkPayload(msg, w);
|
|
683
|
-
case "fetch_error":
|
|
684
|
-
return encodeFetchErrorPayload(msg, w);
|
|
685
|
-
case "fetch_cancel":
|
|
686
|
-
return encodeFetchCancelPayload(msg, w);
|
|
687
|
-
case "track_status_request":
|
|
688
|
-
return encodeTrackStatusRequestPayload(msg, w);
|
|
689
|
-
case "track_status":
|
|
690
|
-
return encodeTrackStatusPayload(msg, w);
|
|
691
|
-
case "goaway":
|
|
692
|
-
return encodeGoAwayPayload(msg, w);
|
|
693
|
-
case "max_subscribe_id":
|
|
694
|
-
return encodeMaxSubscribeIdPayload(msg, w);
|
|
695
|
-
case "subscribes_blocked":
|
|
696
|
-
return encodeSubscribesBlockedPayload(msg, w);
|
|
697
|
-
default: {
|
|
698
|
-
const _exhaustive = msg;
|
|
699
|
-
throw new Error(`Unhandled message type: ${_exhaustive.type}`);
|
|
700
|
-
}
|
|
701
|
-
}
|
|
830
|
+
return { type: "announce_cancel", track_namespace, error_code, reason_phrase };
|
|
702
831
|
}
|
|
703
|
-
function
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
const payloadLength = Number(reader.readVarInt());
|
|
708
|
-
const payloadBytes = reader.readBytes(payloadLength);
|
|
709
|
-
const payloadReader = new BufferReader(payloadBytes);
|
|
710
|
-
const decoder = payloadDecoders.get(typeId);
|
|
711
|
-
if (!decoder) {
|
|
712
|
-
return {
|
|
713
|
-
ok: false,
|
|
714
|
-
error: new DecodeError(
|
|
715
|
-
"UNKNOWN_MESSAGE_TYPE",
|
|
716
|
-
`Unknown message type ID: 0x${typeId.toString(16)}`,
|
|
717
|
-
0
|
|
718
|
-
)
|
|
719
|
-
};
|
|
720
|
-
}
|
|
721
|
-
const message = decoder(payloadReader);
|
|
722
|
-
return { ok: true, value: message, bytesRead: reader.offset };
|
|
723
|
-
} catch (e) {
|
|
724
|
-
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
725
|
-
throw e;
|
|
726
|
-
}
|
|
832
|
+
function decodeSubscribeAnnouncesPayload(r) {
|
|
833
|
+
const track_namespace_prefix = r.readTuple();
|
|
834
|
+
const parameters = decodeParams(r);
|
|
835
|
+
return { type: "subscribe_announces", track_namespace_prefix, parameters };
|
|
727
836
|
}
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
var FETCH_STREAM_TYPE = 0x05n;
|
|
732
|
-
function encodeSubgroupStream(stream) {
|
|
733
|
-
const w = new BufferWriter();
|
|
734
|
-
w.writeVarInt(SUBGROUP_STREAM_TYPE);
|
|
735
|
-
w.writeVarInt(stream.trackAlias);
|
|
736
|
-
w.writeVarInt(stream.groupId);
|
|
737
|
-
w.writeVarInt(stream.subgroupId);
|
|
738
|
-
w.writeUint8(stream.publisherPriority);
|
|
739
|
-
for (const obj of stream.objects) {
|
|
740
|
-
w.writeVarInt(obj.objectId);
|
|
741
|
-
w.writeVarInt(0);
|
|
742
|
-
w.writeVarInt(obj.payloadLength);
|
|
743
|
-
if (obj.payloadLength === 0 && obj.status !== void 0) {
|
|
744
|
-
w.writeVarInt(obj.status);
|
|
745
|
-
} else {
|
|
746
|
-
w.writeBytes(obj.payload);
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
|
-
return w.finish();
|
|
837
|
+
function decodeSubscribeAnnouncesOkPayload(r) {
|
|
838
|
+
const track_namespace_prefix = r.readTuple();
|
|
839
|
+
return { type: "subscribe_announces_ok", track_namespace_prefix };
|
|
750
840
|
}
|
|
751
|
-
function
|
|
752
|
-
const
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
w.writeVarInt(dg.objectStatus);
|
|
762
|
-
} else {
|
|
763
|
-
w.writeBytes(dg.payload);
|
|
764
|
-
}
|
|
765
|
-
return w.finish();
|
|
841
|
+
function decodeSubscribeAnnouncesErrorPayload(r) {
|
|
842
|
+
const track_namespace_prefix = r.readTuple();
|
|
843
|
+
const error_code = r.readVarInt();
|
|
844
|
+
const reason_phrase = r.readString();
|
|
845
|
+
return {
|
|
846
|
+
type: "subscribe_announces_error",
|
|
847
|
+
track_namespace_prefix,
|
|
848
|
+
error_code,
|
|
849
|
+
reason_phrase
|
|
850
|
+
};
|
|
766
851
|
}
|
|
767
|
-
function
|
|
768
|
-
const
|
|
769
|
-
|
|
770
|
-
w.writeVarInt(dg.trackAlias);
|
|
771
|
-
w.writeVarInt(dg.groupId);
|
|
772
|
-
w.writeVarInt(dg.objectId);
|
|
773
|
-
w.writeUint8(dg.publisherPriority);
|
|
774
|
-
w.writeVarInt(dg.objectStatus);
|
|
775
|
-
return w.finish();
|
|
852
|
+
function decodeUnsubscribeAnnouncesPayload(r) {
|
|
853
|
+
const track_namespace_prefix = r.readTuple();
|
|
854
|
+
return { type: "unsubscribe_announces", track_namespace_prefix };
|
|
776
855
|
}
|
|
777
|
-
function
|
|
778
|
-
const
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
w.writeUint8(obj.publisherPriority);
|
|
786
|
-
w.writeVarInt(0);
|
|
787
|
-
w.writeVarInt(obj.payloadLength);
|
|
788
|
-
if (obj.payloadLength === 0 && obj.status !== void 0) {
|
|
789
|
-
w.writeVarInt(obj.status);
|
|
790
|
-
} else {
|
|
791
|
-
w.writeBytes(obj.payload);
|
|
792
|
-
}
|
|
856
|
+
function decodeFetchPayload(r) {
|
|
857
|
+
const subscribe_id = r.readVarInt();
|
|
858
|
+
const subscriber_priority = r.readUint8();
|
|
859
|
+
const group_order = r.readUint8();
|
|
860
|
+
const fetch_type = r.readVarInt();
|
|
861
|
+
const ft = Number(fetch_type);
|
|
862
|
+
if (ft < 1 || ft > 2) {
|
|
863
|
+
throw new DecodeError("CONSTRAINT_VIOLATION", `Invalid fetch_type: ${ft}`, r.offset);
|
|
793
864
|
}
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
const
|
|
799
|
-
const
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
const trackAlias = r.readVarInt();
|
|
811
|
-
const groupId = r.readVarInt();
|
|
812
|
-
const subgroupId = r.readVarInt();
|
|
813
|
-
const publisherPriority = r.readUint8();
|
|
814
|
-
const objects = [];
|
|
815
|
-
while (r.remaining > 0) {
|
|
816
|
-
const objectId = r.readVarInt();
|
|
817
|
-
const extensionCount = Number(r.readVarInt());
|
|
818
|
-
for (let i = 0; i < extensionCount; i++) {
|
|
819
|
-
r.readVarInt();
|
|
820
|
-
const extLen = Number(r.readVarInt());
|
|
821
|
-
r.readBytes(extLen);
|
|
822
|
-
}
|
|
823
|
-
const payloadLength = Number(r.readVarInt());
|
|
824
|
-
let payload;
|
|
825
|
-
let status;
|
|
826
|
-
if (payloadLength === 0) {
|
|
827
|
-
status = r.readVarInt();
|
|
828
|
-
payload = new Uint8Array(0);
|
|
829
|
-
} else {
|
|
830
|
-
payload = r.readBytes(payloadLength);
|
|
831
|
-
}
|
|
832
|
-
const obj = {
|
|
833
|
-
type: "object",
|
|
834
|
-
objectId,
|
|
835
|
-
extensionCount: BigInt(extensionCount),
|
|
836
|
-
payloadLength,
|
|
837
|
-
payload
|
|
838
|
-
};
|
|
839
|
-
if (status !== void 0) obj.status = status;
|
|
840
|
-
objects.push(obj);
|
|
841
|
-
}
|
|
842
|
-
return {
|
|
843
|
-
ok: true,
|
|
844
|
-
value: {
|
|
845
|
-
type: "subgroup",
|
|
846
|
-
streamTypeId: 4,
|
|
847
|
-
trackAlias,
|
|
848
|
-
groupId,
|
|
849
|
-
subgroupId,
|
|
850
|
-
publisherPriority,
|
|
851
|
-
objects
|
|
852
|
-
},
|
|
853
|
-
bytesRead: r.offset
|
|
865
|
+
let standalone;
|
|
866
|
+
let joining;
|
|
867
|
+
if (ft === 1) {
|
|
868
|
+
const track_namespace = r.readTuple();
|
|
869
|
+
const track_name = r.readString();
|
|
870
|
+
const start_group = r.readVarInt();
|
|
871
|
+
const start_object = r.readVarInt();
|
|
872
|
+
const end_group = r.readVarInt();
|
|
873
|
+
const end_object = r.readVarInt();
|
|
874
|
+
standalone = {
|
|
875
|
+
track_namespace,
|
|
876
|
+
track_name,
|
|
877
|
+
start_group,
|
|
878
|
+
start_object,
|
|
879
|
+
end_group,
|
|
880
|
+
end_object
|
|
854
881
|
};
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
|
|
882
|
+
} else {
|
|
883
|
+
const joining_subscribe_id = r.readVarInt();
|
|
884
|
+
const preceding_group_offset = r.readVarInt();
|
|
885
|
+
joining = { joining_subscribe_id, preceding_group_offset };
|
|
858
886
|
}
|
|
887
|
+
const parameters = decodeParams(r);
|
|
888
|
+
return {
|
|
889
|
+
type: "fetch",
|
|
890
|
+
subscribe_id,
|
|
891
|
+
subscriber_priority,
|
|
892
|
+
group_order,
|
|
893
|
+
fetch_type,
|
|
894
|
+
standalone,
|
|
895
|
+
joining,
|
|
896
|
+
parameters
|
|
897
|
+
};
|
|
859
898
|
}
|
|
860
|
-
function
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
r.readBytes(extLen);
|
|
883
|
-
}
|
|
884
|
-
const payloadLength = Number(r.readVarInt());
|
|
885
|
-
let objectStatus;
|
|
886
|
-
let payload;
|
|
887
|
-
if (payloadLength === 0) {
|
|
888
|
-
objectStatus = r.readVarInt();
|
|
889
|
-
payload = new Uint8Array(0);
|
|
890
|
-
} else {
|
|
891
|
-
payload = r.readBytes(payloadLength);
|
|
892
|
-
}
|
|
893
|
-
const result = {
|
|
894
|
-
type: "datagram",
|
|
895
|
-
streamTypeId: 1,
|
|
896
|
-
trackAlias,
|
|
897
|
-
groupId,
|
|
898
|
-
objectId,
|
|
899
|
-
publisherPriority,
|
|
900
|
-
extensionCount: BigInt(extensionCount),
|
|
901
|
-
objectStatus: objectStatus ?? 0n,
|
|
902
|
-
payloadLength,
|
|
903
|
-
payload
|
|
904
|
-
};
|
|
905
|
-
return { ok: true, value: result, bytesRead: r.offset };
|
|
906
|
-
} catch (e) {
|
|
907
|
-
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
908
|
-
throw e;
|
|
909
|
-
}
|
|
899
|
+
function decodeFetchOkPayload(r) {
|
|
900
|
+
const subscribe_id = r.readVarInt();
|
|
901
|
+
const group_order = r.readUint8();
|
|
902
|
+
const end_of_track = r.readUint8();
|
|
903
|
+
const largest_group_id = r.readVarInt();
|
|
904
|
+
const largest_object_id = r.readVarInt();
|
|
905
|
+
const parameters = decodeParams(r);
|
|
906
|
+
return {
|
|
907
|
+
type: "fetch_ok",
|
|
908
|
+
subscribe_id,
|
|
909
|
+
group_order,
|
|
910
|
+
end_of_track,
|
|
911
|
+
largest_group_id,
|
|
912
|
+
largest_object_id,
|
|
913
|
+
parameters
|
|
914
|
+
};
|
|
915
|
+
}
|
|
916
|
+
function decodeFetchErrorPayload(r) {
|
|
917
|
+
const subscribe_id = r.readVarInt();
|
|
918
|
+
const error_code = r.readVarInt();
|
|
919
|
+
const reason_phrase = r.readString();
|
|
920
|
+
return { type: "fetch_error", subscribe_id, error_code, reason_phrase };
|
|
910
921
|
}
|
|
911
|
-
function
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
922
|
+
function decodeFetchCancelPayload(r) {
|
|
923
|
+
const subscribe_id = r.readVarInt();
|
|
924
|
+
return { type: "fetch_cancel", subscribe_id };
|
|
925
|
+
}
|
|
926
|
+
function decodeTrackStatusRequestPayload(r) {
|
|
927
|
+
const track_namespace = r.readTuple();
|
|
928
|
+
const track_name = r.readString();
|
|
929
|
+
return { type: "track_status_request", track_namespace, track_name };
|
|
930
|
+
}
|
|
931
|
+
function decodeTrackStatusPayload(r) {
|
|
932
|
+
const track_namespace = r.readTuple();
|
|
933
|
+
const track_name = r.readString();
|
|
934
|
+
const status_code = r.readVarInt();
|
|
935
|
+
const last_group_id = r.readVarInt();
|
|
936
|
+
const last_object_id = r.readVarInt();
|
|
937
|
+
return {
|
|
938
|
+
type: "track_status",
|
|
939
|
+
track_namespace,
|
|
940
|
+
track_name,
|
|
941
|
+
status_code,
|
|
942
|
+
last_group_id,
|
|
943
|
+
last_object_id
|
|
944
|
+
};
|
|
945
|
+
}
|
|
946
|
+
function decodeGoAwayPayload(r) {
|
|
947
|
+
const new_session_uri = r.readString();
|
|
948
|
+
return { type: "goaway", new_session_uri };
|
|
949
|
+
}
|
|
950
|
+
function decodeMaxSubscribeIdPayload(r) {
|
|
951
|
+
const subscribe_id = r.readVarInt();
|
|
952
|
+
return { type: "max_subscribe_id", subscribe_id };
|
|
953
|
+
}
|
|
954
|
+
function decodeSubscribesBlockedPayload(r) {
|
|
955
|
+
const maximum_subscribe_id = r.readVarInt();
|
|
956
|
+
return { type: "subscribes_blocked", maximum_subscribe_id };
|
|
957
|
+
}
|
|
958
|
+
var payloadDecoders = /* @__PURE__ */ new Map([
|
|
959
|
+
[MSG_CLIENT_SETUP, decodeClientSetupPayload],
|
|
960
|
+
[MSG_SERVER_SETUP, decodeServerSetupPayload],
|
|
961
|
+
[MSG_SUBSCRIBE, decodeSubscribePayload],
|
|
962
|
+
[MSG_SUBSCRIBE_OK, decodeSubscribeOkPayload],
|
|
963
|
+
[MSG_SUBSCRIBE_ERROR, decodeSubscribeErrorPayload],
|
|
964
|
+
[MSG_SUBSCRIBE_UPDATE, decodeSubscribeUpdatePayload],
|
|
965
|
+
[MSG_SUBSCRIBE_DONE, decodeSubscribeDonePayload],
|
|
966
|
+
[MSG_UNSUBSCRIBE, decodeUnsubscribePayload],
|
|
967
|
+
[MSG_ANNOUNCE, decodeAnnouncePayload],
|
|
968
|
+
[MSG_ANNOUNCE_OK, decodeAnnounceOkPayload],
|
|
969
|
+
[MSG_ANNOUNCE_ERROR, decodeAnnounceErrorPayload],
|
|
970
|
+
[MSG_UNANNOUNCE, decodeUnannouncePayload],
|
|
971
|
+
[MSG_ANNOUNCE_CANCEL, decodeAnnounceCancelPayload],
|
|
972
|
+
[MSG_SUBSCRIBE_ANNOUNCES, decodeSubscribeAnnouncesPayload],
|
|
973
|
+
[MSG_SUBSCRIBE_ANNOUNCES_OK, decodeSubscribeAnnouncesOkPayload],
|
|
974
|
+
[MSG_SUBSCRIBE_ANNOUNCES_ERROR, decodeSubscribeAnnouncesErrorPayload],
|
|
975
|
+
[MSG_UNSUBSCRIBE_ANNOUNCES, decodeUnsubscribeAnnouncesPayload],
|
|
976
|
+
[MSG_FETCH, decodeFetchPayload],
|
|
977
|
+
[MSG_FETCH_OK, decodeFetchOkPayload],
|
|
978
|
+
[MSG_FETCH_ERROR, decodeFetchErrorPayload],
|
|
979
|
+
[MSG_FETCH_CANCEL, decodeFetchCancelPayload],
|
|
980
|
+
[MSG_TRACK_STATUS_REQUEST, decodeTrackStatusRequestPayload],
|
|
981
|
+
[MSG_TRACK_STATUS, decodeTrackStatusPayload],
|
|
982
|
+
[MSG_GOAWAY, decodeGoAwayPayload],
|
|
983
|
+
[MSG_MAX_SUBSCRIBE_ID, decodeMaxSubscribeIdPayload],
|
|
984
|
+
[MSG_SUBSCRIBES_BLOCKED, decodeSubscribesBlockedPayload]
|
|
985
|
+
]);
|
|
986
|
+
function encodeMessage(message) {
|
|
987
|
+
const typeId = MESSAGE_ID_MAP.get(message.type);
|
|
988
|
+
if (typeId === void 0) throw new Error(`Unknown message type: ${message.type}`);
|
|
989
|
+
const payloadWriter = new BufferWriter();
|
|
990
|
+
encodePayload(message, payloadWriter);
|
|
991
|
+
const payload = payloadWriter.finishView();
|
|
992
|
+
const writer = new BufferWriter(payload.byteLength + 16);
|
|
993
|
+
writer.writeVarInt(typeId);
|
|
994
|
+
writer.writeVarInt(payload.byteLength);
|
|
995
|
+
writer.writeBytes(payload);
|
|
996
|
+
return writer.finish();
|
|
997
|
+
}
|
|
998
|
+
function encodePayload(msg, w) {
|
|
999
|
+
switch (msg.type) {
|
|
1000
|
+
case "client_setup":
|
|
1001
|
+
return encodeClientSetupPayload(msg, w);
|
|
1002
|
+
case "server_setup":
|
|
1003
|
+
return encodeServerSetupPayload(msg, w);
|
|
1004
|
+
case "subscribe":
|
|
1005
|
+
return encodeSubscribePayload(msg, w);
|
|
1006
|
+
case "subscribe_ok":
|
|
1007
|
+
return encodeSubscribeOkPayload(msg, w);
|
|
1008
|
+
case "subscribe_error":
|
|
1009
|
+
return encodeSubscribeErrorPayload(msg, w);
|
|
1010
|
+
case "subscribe_update":
|
|
1011
|
+
return encodeSubscribeUpdatePayload(msg, w);
|
|
1012
|
+
case "subscribe_done":
|
|
1013
|
+
return encodeSubscribeDonePayload(msg, w);
|
|
1014
|
+
case "unsubscribe":
|
|
1015
|
+
return encodeUnsubscribePayload(msg, w);
|
|
1016
|
+
case "announce":
|
|
1017
|
+
return encodeAnnouncePayload(msg, w);
|
|
1018
|
+
case "announce_ok":
|
|
1019
|
+
return encodeAnnounceOkPayload(msg, w);
|
|
1020
|
+
case "announce_error":
|
|
1021
|
+
return encodeAnnounceErrorPayload(msg, w);
|
|
1022
|
+
case "unannounce":
|
|
1023
|
+
return encodeUnannouncePayload(msg, w);
|
|
1024
|
+
case "announce_cancel":
|
|
1025
|
+
return encodeAnnounceCancelPayload(msg, w);
|
|
1026
|
+
case "subscribe_announces":
|
|
1027
|
+
return encodeSubscribeAnnouncesPayload(msg, w);
|
|
1028
|
+
case "subscribe_announces_ok":
|
|
1029
|
+
return encodeSubscribeAnnouncesOkPayload(msg, w);
|
|
1030
|
+
case "subscribe_announces_error":
|
|
1031
|
+
return encodeSubscribeAnnouncesErrorPayload(msg, w);
|
|
1032
|
+
case "unsubscribe_announces":
|
|
1033
|
+
return encodeUnsubscribeAnnouncesPayload(msg, w);
|
|
1034
|
+
case "fetch":
|
|
1035
|
+
return encodeFetchPayload(msg, w);
|
|
1036
|
+
case "fetch_ok":
|
|
1037
|
+
return encodeFetchOkPayload(msg, w);
|
|
1038
|
+
case "fetch_error":
|
|
1039
|
+
return encodeFetchErrorPayload(msg, w);
|
|
1040
|
+
case "fetch_cancel":
|
|
1041
|
+
return encodeFetchCancelPayload(msg, w);
|
|
1042
|
+
case "track_status_request":
|
|
1043
|
+
return encodeTrackStatusRequestPayload(msg, w);
|
|
1044
|
+
case "track_status":
|
|
1045
|
+
return encodeTrackStatusPayload(msg, w);
|
|
1046
|
+
case "goaway":
|
|
1047
|
+
return encodeGoAwayPayload(msg, w);
|
|
1048
|
+
case "max_subscribe_id":
|
|
1049
|
+
return encodeMaxSubscribeIdPayload(msg, w);
|
|
1050
|
+
case "subscribes_blocked":
|
|
1051
|
+
return encodeSubscribesBlockedPayload(msg, w);
|
|
1052
|
+
default: {
|
|
1053
|
+
const _exhaustive = msg;
|
|
1054
|
+
throw new Error(`Unhandled message type: ${_exhaustive.type}`);
|
|
924
1055
|
}
|
|
925
|
-
const trackAlias = r.readVarInt();
|
|
926
|
-
const groupId = r.readVarInt();
|
|
927
|
-
const objectId = r.readVarInt();
|
|
928
|
-
const publisherPriority = r.readUint8();
|
|
929
|
-
const objectStatus = r.readVarInt();
|
|
930
|
-
return {
|
|
931
|
-
ok: true,
|
|
932
|
-
value: {
|
|
933
|
-
type: "datagram_status",
|
|
934
|
-
streamTypeId: 2,
|
|
935
|
-
trackAlias,
|
|
936
|
-
groupId,
|
|
937
|
-
objectId,
|
|
938
|
-
publisherPriority,
|
|
939
|
-
objectStatus
|
|
940
|
-
},
|
|
941
|
-
bytesRead: r.offset
|
|
942
|
-
};
|
|
943
|
-
} catch (e) {
|
|
944
|
-
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
945
|
-
throw e;
|
|
946
1056
|
}
|
|
947
1057
|
}
|
|
948
|
-
function
|
|
1058
|
+
function decodeMessage(bytes) {
|
|
949
1059
|
try {
|
|
950
|
-
const
|
|
951
|
-
const
|
|
952
|
-
|
|
1060
|
+
const reader = new BufferReader(bytes);
|
|
1061
|
+
const typeId = reader.readVarInt();
|
|
1062
|
+
const payloadLength = Number(reader.readVarInt());
|
|
1063
|
+
const payloadBytes = reader.readBytes(payloadLength);
|
|
1064
|
+
const payloadReader = new BufferReader(payloadBytes);
|
|
1065
|
+
const decoder = payloadDecoders.get(typeId);
|
|
1066
|
+
if (!decoder) {
|
|
953
1067
|
return {
|
|
954
1068
|
ok: false,
|
|
955
1069
|
error: new DecodeError(
|
|
956
|
-
"
|
|
957
|
-
`
|
|
1070
|
+
"UNKNOWN_MESSAGE_TYPE",
|
|
1071
|
+
`Unknown message type ID: 0x${typeId.toString(16)}`,
|
|
958
1072
|
0
|
|
959
1073
|
)
|
|
960
1074
|
};
|
|
961
1075
|
}
|
|
962
|
-
const
|
|
963
|
-
|
|
964
|
-
while (r.remaining > 0) {
|
|
965
|
-
const groupId = r.readVarInt();
|
|
966
|
-
const subgroupId = r.readVarInt();
|
|
967
|
-
const objectId = r.readVarInt();
|
|
968
|
-
const publisherPriority = r.readUint8();
|
|
969
|
-
const extensionCount = Number(r.readVarInt());
|
|
970
|
-
for (let i = 0; i < extensionCount; i++) {
|
|
971
|
-
r.readVarInt();
|
|
972
|
-
const extLen = Number(r.readVarInt());
|
|
973
|
-
r.readBytes(extLen);
|
|
974
|
-
}
|
|
975
|
-
const payloadLength = Number(r.readVarInt());
|
|
976
|
-
let payload;
|
|
977
|
-
let status;
|
|
978
|
-
if (payloadLength === 0) {
|
|
979
|
-
status = r.readVarInt();
|
|
980
|
-
payload = new Uint8Array(0);
|
|
981
|
-
} else {
|
|
982
|
-
payload = r.readBytes(payloadLength);
|
|
983
|
-
}
|
|
984
|
-
const obj = {
|
|
985
|
-
type: "object",
|
|
986
|
-
groupId,
|
|
987
|
-
subgroupId,
|
|
988
|
-
objectId,
|
|
989
|
-
publisherPriority,
|
|
990
|
-
extensionCount: BigInt(extensionCount),
|
|
991
|
-
payloadLength,
|
|
992
|
-
payload
|
|
993
|
-
};
|
|
994
|
-
if (status !== void 0) obj.status = status;
|
|
995
|
-
objects.push(obj);
|
|
996
|
-
}
|
|
997
|
-
return { ok: true, value: { type: "fetch", subscribeId, objects }, bytesRead: r.offset };
|
|
1076
|
+
const message = decoder(payloadReader);
|
|
1077
|
+
return { ok: true, value: message, bytesRead: reader.offset };
|
|
998
1078
|
} catch (e) {
|
|
999
1079
|
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
1000
1080
|
throw e;
|
|
1001
1081
|
}
|
|
1002
1082
|
}
|
|
1003
|
-
function decodeDataStream(streamType, bytes) {
|
|
1004
|
-
switch (streamType) {
|
|
1005
|
-
case "subgroup":
|
|
1006
|
-
return decodeSubgroupStream(bytes);
|
|
1007
|
-
case "datagram":
|
|
1008
|
-
return decodeDatagram(bytes);
|
|
1009
|
-
case "datagram_status":
|
|
1010
|
-
return decodeDatagramStatus(bytes);
|
|
1011
|
-
case "fetch":
|
|
1012
|
-
return decodeFetchStream(bytes);
|
|
1013
|
-
default: {
|
|
1014
|
-
const _ = streamType;
|
|
1015
|
-
throw new Error(`Unknown: ${_}`);
|
|
1016
|
-
}
|
|
1017
|
-
}
|
|
1018
|
-
}
|
|
1019
1083
|
function createStreamDecoder() {
|
|
1020
1084
|
let buffer = new Uint8Array(0);
|
|
1085
|
+
let offset = 0;
|
|
1021
1086
|
return new TransformStream({
|
|
1022
1087
|
transform(chunk, controller) {
|
|
1088
|
+
if (offset > 0) {
|
|
1089
|
+
buffer = buffer.subarray(offset);
|
|
1090
|
+
offset = 0;
|
|
1091
|
+
}
|
|
1023
1092
|
const newBuffer = new Uint8Array(buffer.length + chunk.length);
|
|
1024
1093
|
newBuffer.set(buffer, 0);
|
|
1025
1094
|
newBuffer.set(chunk, buffer.length);
|
|
1026
1095
|
buffer = newBuffer;
|
|
1027
|
-
while (buffer.length
|
|
1028
|
-
const result = decodeMessage(buffer);
|
|
1096
|
+
while (offset < buffer.length) {
|
|
1097
|
+
const result = decodeMessage(buffer.subarray(offset));
|
|
1029
1098
|
if (!result.ok) {
|
|
1030
1099
|
if (result.error.code === "UNEXPECTED_END") break;
|
|
1031
1100
|
controller.error(result.error);
|
|
1032
1101
|
return;
|
|
1033
1102
|
}
|
|
1034
1103
|
controller.enqueue(result.value);
|
|
1035
|
-
|
|
1104
|
+
offset += result.bytesRead;
|
|
1036
1105
|
}
|
|
1037
1106
|
},
|
|
1038
1107
|
flush(controller) {
|
|
1039
|
-
if (buffer.length
|
|
1108
|
+
if (offset < buffer.length)
|
|
1040
1109
|
controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
|
|
1041
1110
|
}
|
|
1042
1111
|
});
|
|
1043
1112
|
}
|
|
1044
1113
|
function createDraft08Codec() {
|
|
1045
1114
|
return {
|
|
1046
|
-
draft: "
|
|
1115
|
+
draft: "08",
|
|
1047
1116
|
encodeMessage,
|
|
1048
1117
|
decodeMessage,
|
|
1049
1118
|
encodeSubgroupStream,
|
|
@@ -1060,6 +1129,15 @@ function createDraft08Codec() {
|
|
|
1060
1129
|
}
|
|
1061
1130
|
|
|
1062
1131
|
export {
|
|
1132
|
+
encodeSubgroupStream,
|
|
1133
|
+
encodeDatagram,
|
|
1134
|
+
encodeDatagramStatus,
|
|
1135
|
+
encodeFetchStream,
|
|
1136
|
+
decodeSubgroupStream,
|
|
1137
|
+
decodeDatagram,
|
|
1138
|
+
decodeDatagramStatus,
|
|
1139
|
+
decodeFetchStream,
|
|
1140
|
+
decodeDataStream,
|
|
1063
1141
|
MSG_SUBSCRIBE_UPDATE,
|
|
1064
1142
|
MSG_SUBSCRIBE,
|
|
1065
1143
|
MSG_SUBSCRIBE_OK,
|
|
@@ -1095,15 +1173,6 @@ export {
|
|
|
1095
1173
|
MESSAGE_ID_MAP,
|
|
1096
1174
|
encodeMessage,
|
|
1097
1175
|
decodeMessage,
|
|
1098
|
-
encodeSubgroupStream,
|
|
1099
|
-
encodeDatagram,
|
|
1100
|
-
encodeDatagramStatus,
|
|
1101
|
-
encodeFetchStream,
|
|
1102
|
-
decodeSubgroupStream,
|
|
1103
|
-
decodeDatagram,
|
|
1104
|
-
decodeDatagramStatus,
|
|
1105
|
-
decodeFetchStream,
|
|
1106
|
-
decodeDataStream,
|
|
1107
1176
|
createStreamDecoder,
|
|
1108
1177
|
createDraft08Codec
|
|
1109
1178
|
};
|