@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,7 +1,7 @@
|
|
|
1
|
-
import { BufferReader } from
|
|
2
|
-
import { BufferWriter } from
|
|
3
|
-
import type { DecodeResult } from
|
|
4
|
-
import { DecodeError } from
|
|
1
|
+
import { BufferReader } from '../../core/buffer-reader.js'
|
|
2
|
+
import { BufferWriter } from '../../core/buffer-writer.js'
|
|
3
|
+
import type { DecodeResult } from '../../core/types.js'
|
|
4
|
+
import { DecodeError } from '../../core/types.js'
|
|
5
5
|
import type {
|
|
6
6
|
DatagramObject,
|
|
7
7
|
DataStreamEvent,
|
|
@@ -12,11 +12,11 @@ import type {
|
|
|
12
12
|
ObjectPayload,
|
|
13
13
|
SubgroupStream,
|
|
14
14
|
SubgroupStreamHeader,
|
|
15
|
-
} from
|
|
15
|
+
} from './types.js'
|
|
16
16
|
|
|
17
17
|
// ─── Data Stream Constants ────────────────────────────────────────────────────
|
|
18
18
|
|
|
19
|
-
const FETCH_STREAM_TYPE = 0x05n
|
|
19
|
+
const FETCH_STREAM_TYPE = 0x05n
|
|
20
20
|
|
|
21
21
|
// Valid subgroup stream types: 0x10-0x1D (12 types)
|
|
22
22
|
// Bit 0: extensions present
|
|
@@ -25,70 +25,53 @@ const FETCH_STREAM_TYPE = 0x05n;
|
|
|
25
25
|
// Bit 3: end-of-group
|
|
26
26
|
function isValidSubgroupType(t: number): boolean {
|
|
27
27
|
// 12 defined types: 0x10-0x15, 0x18-0x1D
|
|
28
|
-
return (t >= 0x10 && t <= 0x15) || (t >= 0x18 && t <= 0x1d)
|
|
28
|
+
return (t >= 0x10 && t <= 0x15) || (t >= 0x18 && t <= 0x1d)
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// ─── Data Stream Encoding/Decoding ─────────────────────────────────────────────
|
|
32
32
|
|
|
33
|
-
/**
|
|
34
|
-
* Compute the subgroup stream type byte from header properties.
|
|
35
|
-
*/
|
|
36
|
-
function computeSubgroupType(opts: {
|
|
37
|
-
hasSubgroupField: boolean;
|
|
38
|
-
subgroupIsFirstObjId: boolean;
|
|
39
|
-
extensionsPresent: boolean;
|
|
40
|
-
endOfGroup: boolean;
|
|
41
|
-
}): number {
|
|
42
|
-
let t = 0x10;
|
|
43
|
-
if (opts.extensionsPresent) t |= 0x01;
|
|
44
|
-
if (opts.subgroupIsFirstObjId) t |= 0x02;
|
|
45
|
-
if (opts.hasSubgroupField) t |= 0x04;
|
|
46
|
-
if (opts.endOfGroup) t |= 0x08;
|
|
47
|
-
return t;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
33
|
/**
|
|
51
34
|
* Encode a subgroup stream header + objects.
|
|
52
35
|
* Uses delta-encoded Object IDs per draft-14 §10.4.2.
|
|
53
36
|
*/
|
|
54
37
|
export function encodeSubgroupStream(stream: SubgroupStream): Uint8Array {
|
|
55
|
-
const w = new BufferWriter()
|
|
56
|
-
w.writeVarInt(BigInt(stream.headerType))
|
|
57
|
-
w.writeVarInt(stream.trackAlias)
|
|
58
|
-
w.writeVarInt(stream.groupId)
|
|
38
|
+
const w = new BufferWriter()
|
|
39
|
+
w.writeVarInt(BigInt(stream.headerType))
|
|
40
|
+
w.writeVarInt(stream.trackAlias)
|
|
41
|
+
w.writeVarInt(stream.groupId)
|
|
59
42
|
|
|
60
|
-
const hasSubgroupField = (stream.headerType & 0x04) !== 0
|
|
61
|
-
const extensionsPresent = (stream.headerType & 0x01) !== 0
|
|
43
|
+
const hasSubgroupField = (stream.headerType & 0x04) !== 0
|
|
44
|
+
const extensionsPresent = (stream.headerType & 0x01) !== 0
|
|
62
45
|
if (hasSubgroupField) {
|
|
63
|
-
w.writeVarInt(stream.subgroupId)
|
|
46
|
+
w.writeVarInt(stream.subgroupId)
|
|
64
47
|
}
|
|
65
|
-
w.writeUint8(stream.publisherPriority)
|
|
48
|
+
w.writeUint8(stream.publisherPriority)
|
|
66
49
|
|
|
67
|
-
let prevObjectId = -1n
|
|
68
|
-
let first = true
|
|
50
|
+
let prevObjectId = -1n
|
|
51
|
+
let first = true
|
|
69
52
|
for (const obj of stream.objects) {
|
|
70
53
|
// Delta encoding: first object delta IS the object ID,
|
|
71
54
|
// subsequent deltas: objectId - prevObjectId - 1
|
|
72
|
-
const delta = first ? obj.objectId : obj.objectId - prevObjectId - 1n
|
|
73
|
-
w.writeVarInt(delta)
|
|
74
|
-
first = false
|
|
75
|
-
prevObjectId = obj.objectId
|
|
55
|
+
const delta = first ? obj.objectId : obj.objectId - prevObjectId - 1n
|
|
56
|
+
w.writeVarInt(delta)
|
|
57
|
+
first = false
|
|
58
|
+
prevObjectId = obj.objectId
|
|
76
59
|
|
|
77
60
|
// Extension headers
|
|
78
61
|
if (extensionsPresent) {
|
|
79
|
-
w.writeVarInt(BigInt(obj.extensionData.length))
|
|
80
|
-
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData)
|
|
62
|
+
w.writeVarInt(BigInt(obj.extensionData.length))
|
|
63
|
+
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData)
|
|
81
64
|
}
|
|
82
65
|
|
|
83
66
|
if (obj.payloadLength === 0) {
|
|
84
|
-
w.writeVarInt(0)
|
|
85
|
-
w.writeVarInt(obj.status ?? 0n)
|
|
67
|
+
w.writeVarInt(0)
|
|
68
|
+
w.writeVarInt(obj.status ?? 0n)
|
|
86
69
|
} else {
|
|
87
|
-
w.writeVarInt(obj.payloadLength)
|
|
88
|
-
w.writeBytes(obj.payload)
|
|
70
|
+
w.writeVarInt(obj.payloadLength)
|
|
71
|
+
w.writeBytes(obj.payload)
|
|
89
72
|
}
|
|
90
73
|
}
|
|
91
|
-
return w.finish()
|
|
74
|
+
return w.finish()
|
|
92
75
|
}
|
|
93
76
|
|
|
94
77
|
/**
|
|
@@ -96,30 +79,32 @@ export function encodeSubgroupStream(stream: SubgroupStream): Uint8Array {
|
|
|
96
79
|
* Draft-14 datagram types: 0x00-0x07, 0x20-0x21.
|
|
97
80
|
*/
|
|
98
81
|
export function encodeDatagram(dg: DatagramObject): Uint8Array {
|
|
99
|
-
const w = new BufferWriter()
|
|
100
|
-
w.writeVarInt(BigInt(dg.datagramType))
|
|
101
|
-
w.writeVarInt(dg.trackAlias)
|
|
102
|
-
w.writeVarInt(dg.groupId)
|
|
82
|
+
const w = new BufferWriter()
|
|
83
|
+
w.writeVarInt(BigInt(dg.datagramType))
|
|
84
|
+
w.writeVarInt(dg.trackAlias)
|
|
85
|
+
w.writeVarInt(dg.groupId)
|
|
103
86
|
|
|
104
|
-
const objectIdPresent = (dg.datagramType & 0x04) === 0
|
|
105
|
-
const isStatus = dg.datagramType >= 0x20
|
|
106
|
-
const extensionsPresent = (dg.datagramType & 0x01) !== 0
|
|
87
|
+
const objectIdPresent = (dg.datagramType & 0x04) === 0
|
|
88
|
+
const isStatus = dg.datagramType >= 0x20
|
|
89
|
+
const extensionsPresent = (dg.datagramType & 0x01) !== 0
|
|
107
90
|
|
|
108
91
|
if (objectIdPresent) {
|
|
109
|
-
w.writeVarInt(dg.objectId)
|
|
92
|
+
w.writeVarInt(dg.objectId)
|
|
110
93
|
}
|
|
111
|
-
w.writeUint8(dg.publisherPriority)
|
|
94
|
+
w.writeUint8(dg.publisherPriority)
|
|
112
95
|
|
|
113
96
|
if (extensionsPresent) {
|
|
114
|
-
|
|
97
|
+
const extData = dg.extensionData ?? new Uint8Array(0)
|
|
98
|
+
w.writeVarInt(extData.byteLength)
|
|
99
|
+
if (extData.byteLength > 0) w.writeBytes(extData)
|
|
115
100
|
}
|
|
116
101
|
|
|
117
102
|
if (isStatus) {
|
|
118
|
-
w.writeVarInt(dg.objectStatus ?? 0n)
|
|
103
|
+
w.writeVarInt(dg.objectStatus ?? 0n)
|
|
119
104
|
} else {
|
|
120
|
-
w.writeBytes(dg.payload)
|
|
105
|
+
w.writeBytes(dg.payload)
|
|
121
106
|
}
|
|
122
|
-
return w.finish()
|
|
107
|
+
return w.finish()
|
|
123
108
|
}
|
|
124
109
|
|
|
125
110
|
/**
|
|
@@ -129,25 +114,25 @@ export function encodeDatagram(dg: DatagramObject): Uint8Array {
|
|
|
129
114
|
* [ObjectStatus], Payload.
|
|
130
115
|
*/
|
|
131
116
|
export function encodeFetchStream(stream: FetchStream): Uint8Array {
|
|
132
|
-
const w = new BufferWriter()
|
|
133
|
-
w.writeVarInt(FETCH_STREAM_TYPE)
|
|
134
|
-
w.writeVarInt(stream.requestId)
|
|
117
|
+
const w = new BufferWriter()
|
|
118
|
+
w.writeVarInt(FETCH_STREAM_TYPE)
|
|
119
|
+
w.writeVarInt(stream.requestId)
|
|
135
120
|
for (const obj of stream.objects) {
|
|
136
|
-
w.writeVarInt(obj.groupId)
|
|
137
|
-
w.writeVarInt(obj.subgroupId)
|
|
138
|
-
w.writeVarInt(obj.objectId)
|
|
139
|
-
w.writeUint8(obj.publisherPriority)
|
|
140
|
-
w.writeVarInt(BigInt(obj.extensionData.length))
|
|
141
|
-
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData)
|
|
121
|
+
w.writeVarInt(obj.groupId)
|
|
122
|
+
w.writeVarInt(obj.subgroupId)
|
|
123
|
+
w.writeVarInt(obj.objectId)
|
|
124
|
+
w.writeUint8(obj.publisherPriority)
|
|
125
|
+
w.writeVarInt(BigInt(obj.extensionData.length))
|
|
126
|
+
if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData)
|
|
142
127
|
if (obj.payloadLength === 0) {
|
|
143
|
-
w.writeVarInt(0)
|
|
144
|
-
w.writeVarInt(obj.status ?? 0n)
|
|
128
|
+
w.writeVarInt(0)
|
|
129
|
+
w.writeVarInt(obj.status ?? 0n)
|
|
145
130
|
} else {
|
|
146
|
-
w.writeVarInt(obj.payloadLength)
|
|
147
|
-
w.writeBytes(obj.payload)
|
|
131
|
+
w.writeVarInt(obj.payloadLength)
|
|
132
|
+
w.writeBytes(obj.payload)
|
|
148
133
|
}
|
|
149
134
|
}
|
|
150
|
-
return w.finish()
|
|
135
|
+
return w.finish()
|
|
151
136
|
}
|
|
152
137
|
|
|
153
138
|
/**
|
|
@@ -156,81 +141,89 @@ export function encodeFetchStream(stream: FetchStream): Uint8Array {
|
|
|
156
141
|
*/
|
|
157
142
|
export function decodeSubgroupStream(bytes: Uint8Array): DecodeResult<SubgroupStream> {
|
|
158
143
|
try {
|
|
159
|
-
const r = new BufferReader(bytes)
|
|
160
|
-
const streamType = Number(r.readVarInt())
|
|
144
|
+
const r = new BufferReader(bytes)
|
|
145
|
+
const streamType = Number(r.readVarInt())
|
|
161
146
|
|
|
162
147
|
if (!isValidSubgroupType(streamType)) {
|
|
163
148
|
return {
|
|
164
149
|
ok: false,
|
|
165
150
|
error: new DecodeError(
|
|
166
|
-
|
|
151
|
+
'CONSTRAINT_VIOLATION',
|
|
167
152
|
`Expected subgroup stream type 0x10-0x1D, got 0x${streamType.toString(16)}`,
|
|
168
153
|
0,
|
|
169
154
|
),
|
|
170
|
-
}
|
|
155
|
+
}
|
|
171
156
|
}
|
|
172
157
|
|
|
173
158
|
// Decode type flags
|
|
174
|
-
const extensionsPresent = (streamType & 0x01) !== 0
|
|
175
|
-
const hasSubgroupField = (streamType & 0x04) !== 0
|
|
176
|
-
const subgroupIsFirstObjId = (streamType & 0x02) !== 0 && !hasSubgroupField
|
|
159
|
+
const extensionsPresent = (streamType & 0x01) !== 0
|
|
160
|
+
const hasSubgroupField = (streamType & 0x04) !== 0
|
|
161
|
+
const subgroupIsFirstObjId = (streamType & 0x02) !== 0 && !hasSubgroupField
|
|
177
162
|
|
|
178
|
-
const trackAlias = r.readVarInt()
|
|
179
|
-
const groupId = r.readVarInt()
|
|
163
|
+
const trackAlias = r.readVarInt()
|
|
164
|
+
const groupId = r.readVarInt()
|
|
180
165
|
|
|
181
|
-
let subgroupId = 0n
|
|
166
|
+
let subgroupId = 0n
|
|
182
167
|
if (hasSubgroupField) {
|
|
183
|
-
subgroupId = r.readVarInt()
|
|
168
|
+
subgroupId = r.readVarInt()
|
|
184
169
|
}
|
|
185
|
-
const publisherPriority = r.readUint8()
|
|
170
|
+
const publisherPriority = r.readUint8()
|
|
186
171
|
|
|
187
|
-
const objects: ObjectPayload[] = []
|
|
188
|
-
let prevObjectId = -1n
|
|
189
|
-
let firstObject = true
|
|
172
|
+
const objects: ObjectPayload[] = []
|
|
173
|
+
let prevObjectId = -1n
|
|
174
|
+
let firstObject = true
|
|
190
175
|
|
|
191
176
|
while (r.remaining > 0) {
|
|
192
|
-
const byteOffset = r.offset
|
|
193
|
-
const delta = r.readVarInt()
|
|
194
|
-
let objectId: bigint
|
|
177
|
+
const byteOffset = r.offset
|
|
178
|
+
const delta = r.readVarInt()
|
|
179
|
+
let objectId: bigint
|
|
195
180
|
if (firstObject) {
|
|
196
|
-
objectId = delta
|
|
181
|
+
objectId = delta
|
|
197
182
|
if (subgroupIsFirstObjId) {
|
|
198
|
-
subgroupId = objectId
|
|
183
|
+
subgroupId = objectId
|
|
199
184
|
}
|
|
200
|
-
firstObject = false
|
|
185
|
+
firstObject = false
|
|
201
186
|
} else {
|
|
202
|
-
objectId = prevObjectId + 1n + delta
|
|
187
|
+
objectId = prevObjectId + 1n + delta
|
|
203
188
|
}
|
|
204
189
|
|
|
205
190
|
// Read extension headers if type indicates they're present
|
|
206
|
-
let extensionData = new Uint8Array(0)
|
|
191
|
+
let extensionData = new Uint8Array(0)
|
|
207
192
|
if (extensionsPresent) {
|
|
208
|
-
const extLen = Number(r.readVarInt())
|
|
209
|
-
extensionData = extLen > 0 ? r.
|
|
193
|
+
const extLen = Number(r.readVarInt())
|
|
194
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0)
|
|
210
195
|
}
|
|
211
196
|
|
|
212
|
-
const payloadLength = Number(r.readVarInt())
|
|
213
|
-
let payload: Uint8Array
|
|
214
|
-
let status: bigint | undefined
|
|
215
|
-
let payloadByteOffset: number
|
|
197
|
+
const payloadLength = Number(r.readVarInt())
|
|
198
|
+
let payload: Uint8Array
|
|
199
|
+
let status: bigint | undefined
|
|
200
|
+
let payloadByteOffset: number
|
|
216
201
|
if (payloadLength === 0) {
|
|
217
|
-
status = r.readVarInt()
|
|
218
|
-
payloadByteOffset = r.offset
|
|
219
|
-
payload = new Uint8Array(0)
|
|
202
|
+
status = r.readVarInt()
|
|
203
|
+
payloadByteOffset = r.offset
|
|
204
|
+
payload = new Uint8Array(0)
|
|
220
205
|
} else {
|
|
221
|
-
payloadByteOffset = r.offset
|
|
222
|
-
payload = r.
|
|
206
|
+
payloadByteOffset = r.offset
|
|
207
|
+
payload = r.readBytesView(payloadLength)
|
|
208
|
+
}
|
|
209
|
+
const obj: ObjectPayload = {
|
|
210
|
+
type: 'object',
|
|
211
|
+
byteOffset,
|
|
212
|
+
payloadByteOffset,
|
|
213
|
+
objectId,
|
|
214
|
+
payloadLength,
|
|
215
|
+
payload,
|
|
216
|
+
extensionData,
|
|
223
217
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
prevObjectId = objectId;
|
|
218
|
+
if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status
|
|
219
|
+
objects.push(obj)
|
|
220
|
+
prevObjectId = objectId
|
|
228
221
|
}
|
|
229
222
|
|
|
230
223
|
return {
|
|
231
224
|
ok: true,
|
|
232
225
|
value: {
|
|
233
|
-
type:
|
|
226
|
+
type: 'subgroup',
|
|
234
227
|
headerType: streamType,
|
|
235
228
|
trackAlias,
|
|
236
229
|
groupId,
|
|
@@ -239,10 +232,10 @@ export function decodeSubgroupStream(bytes: Uint8Array): DecodeResult<SubgroupSt
|
|
|
239
232
|
objects,
|
|
240
233
|
},
|
|
241
234
|
bytesRead: r.offset,
|
|
242
|
-
}
|
|
235
|
+
}
|
|
243
236
|
} catch (e) {
|
|
244
|
-
if (e instanceof DecodeError) return { ok: false, error: e }
|
|
245
|
-
throw e
|
|
237
|
+
if (e instanceof DecodeError) return { ok: false, error: e }
|
|
238
|
+
throw e
|
|
246
239
|
}
|
|
247
240
|
}
|
|
248
241
|
|
|
@@ -252,54 +245,53 @@ export function decodeSubgroupStream(bytes: Uint8Array): DecodeResult<SubgroupSt
|
|
|
252
245
|
*/
|
|
253
246
|
export function decodeDatagram(bytes: Uint8Array): DecodeResult<DatagramObject> {
|
|
254
247
|
try {
|
|
255
|
-
const r = new BufferReader(bytes)
|
|
256
|
-
const dgType = Number(r.readVarInt())
|
|
248
|
+
const r = new BufferReader(bytes)
|
|
249
|
+
const dgType = Number(r.readVarInt())
|
|
257
250
|
|
|
258
251
|
// Validate datagram type
|
|
259
|
-
const validDatagram = (dgType >= 0x00 && dgType <= 0x07) || dgType === 0x20 || dgType === 0x21
|
|
252
|
+
const validDatagram = (dgType >= 0x00 && dgType <= 0x07) || dgType === 0x20 || dgType === 0x21
|
|
260
253
|
if (!validDatagram) {
|
|
261
254
|
return {
|
|
262
255
|
ok: false,
|
|
263
256
|
error: new DecodeError(
|
|
264
|
-
|
|
257
|
+
'CONSTRAINT_VIOLATION',
|
|
265
258
|
`Expected datagram type 0x00-0x07 or 0x20-0x21, got 0x${dgType.toString(16)}`,
|
|
266
259
|
0,
|
|
267
260
|
),
|
|
268
|
-
}
|
|
261
|
+
}
|
|
269
262
|
}
|
|
270
263
|
|
|
271
|
-
const objectIdPresent = (dgType & 0x04) === 0
|
|
272
|
-
const endOfGroup = (dgType & 0x02) !== 0
|
|
273
|
-
const extensionsPresent = (dgType & 0x01) !== 0
|
|
274
|
-
const isStatus = dgType >= 0x20
|
|
264
|
+
const objectIdPresent = (dgType & 0x04) === 0
|
|
265
|
+
const endOfGroup = (dgType & 0x02) !== 0
|
|
266
|
+
const extensionsPresent = (dgType & 0x01) !== 0
|
|
267
|
+
const isStatus = dgType >= 0x20
|
|
275
268
|
|
|
276
|
-
const trackAlias = r.readVarInt()
|
|
277
|
-
const groupId = r.readVarInt()
|
|
278
|
-
let objectId = 0n
|
|
269
|
+
const trackAlias = r.readVarInt()
|
|
270
|
+
const groupId = r.readVarInt()
|
|
271
|
+
let objectId = 0n
|
|
279
272
|
if (objectIdPresent) {
|
|
280
|
-
objectId = r.readVarInt()
|
|
273
|
+
objectId = r.readVarInt()
|
|
281
274
|
}
|
|
282
|
-
const publisherPriority = r.readUint8()
|
|
275
|
+
const publisherPriority = r.readUint8()
|
|
283
276
|
|
|
277
|
+
let extensionData: Uint8Array | undefined
|
|
284
278
|
if (extensionsPresent) {
|
|
285
|
-
const extLen = Number(r.readVarInt())
|
|
286
|
-
|
|
287
|
-
r.readBytes(extLen); // skip extension data
|
|
288
|
-
}
|
|
279
|
+
const extLen = Number(r.readVarInt())
|
|
280
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0)
|
|
289
281
|
}
|
|
290
282
|
|
|
291
|
-
let objectStatus: bigint | undefined
|
|
292
|
-
let payload: Uint8Array
|
|
283
|
+
let objectStatus: bigint | undefined
|
|
284
|
+
let payload: Uint8Array
|
|
293
285
|
if (isStatus) {
|
|
294
|
-
objectStatus = r.readVarInt()
|
|
295
|
-
payload = new Uint8Array(0)
|
|
286
|
+
objectStatus = r.readVarInt()
|
|
287
|
+
payload = new Uint8Array(0)
|
|
296
288
|
} else {
|
|
297
|
-
payload = r.
|
|
289
|
+
payload = r.readBytesView(r.remaining)
|
|
298
290
|
}
|
|
299
|
-
const payloadLength = payload.byteLength
|
|
291
|
+
const payloadLength = payload.byteLength
|
|
300
292
|
|
|
301
293
|
const result: DatagramObject = {
|
|
302
|
-
type:
|
|
294
|
+
type: 'datagram',
|
|
303
295
|
datagramType: dgType,
|
|
304
296
|
trackAlias,
|
|
305
297
|
groupId,
|
|
@@ -307,16 +299,18 @@ export function decodeDatagram(bytes: Uint8Array): DecodeResult<DatagramObject>
|
|
|
307
299
|
publisherPriority,
|
|
308
300
|
payloadLength,
|
|
309
301
|
payload,
|
|
310
|
-
}
|
|
302
|
+
}
|
|
311
303
|
|
|
312
|
-
if (endOfGroup) (result as unknown as Record<string, unknown>).endOfGroup = true
|
|
304
|
+
if (endOfGroup) (result as unknown as Record<string, unknown>).endOfGroup = true
|
|
313
305
|
if (objectStatus !== undefined)
|
|
314
|
-
(result as unknown as Record<string, unknown>).objectStatus = objectStatus
|
|
306
|
+
(result as unknown as Record<string, unknown>).objectStatus = objectStatus
|
|
307
|
+
if (extensionData !== undefined)
|
|
308
|
+
(result as unknown as Record<string, unknown>).extensionData = extensionData
|
|
315
309
|
|
|
316
|
-
return { ok: true, value: result, bytesRead: r.offset }
|
|
310
|
+
return { ok: true, value: result, bytesRead: r.offset }
|
|
317
311
|
} catch (e) {
|
|
318
|
-
if (e instanceof DecodeError) return { ok: false, error: e }
|
|
319
|
-
throw e
|
|
312
|
+
if (e instanceof DecodeError) return { ok: false, error: e }
|
|
313
|
+
throw e
|
|
320
314
|
}
|
|
321
315
|
}
|
|
322
316
|
|
|
@@ -326,43 +320,42 @@ export function decodeDatagram(bytes: Uint8Array): DecodeResult<DatagramObject>
|
|
|
326
320
|
*/
|
|
327
321
|
export function decodeFetchStream(bytes: Uint8Array): DecodeResult<FetchStream> {
|
|
328
322
|
try {
|
|
329
|
-
const r = new BufferReader(bytes)
|
|
330
|
-
const streamType = r.readVarInt()
|
|
323
|
+
const r = new BufferReader(bytes)
|
|
324
|
+
const streamType = r.readVarInt()
|
|
331
325
|
if (streamType !== FETCH_STREAM_TYPE) {
|
|
332
326
|
return {
|
|
333
327
|
ok: false,
|
|
334
328
|
error: new DecodeError(
|
|
335
|
-
|
|
329
|
+
'CONSTRAINT_VIOLATION',
|
|
336
330
|
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
337
331
|
0,
|
|
338
332
|
),
|
|
339
|
-
}
|
|
333
|
+
}
|
|
340
334
|
}
|
|
341
|
-
const requestId = r.readVarInt()
|
|
342
|
-
const objects: FetchObjectPayload[] = []
|
|
335
|
+
const requestId = r.readVarInt()
|
|
336
|
+
const objects: FetchObjectPayload[] = []
|
|
343
337
|
while (r.remaining > 0) {
|
|
344
|
-
const byteOffset = r.offset
|
|
345
|
-
const groupId = r.readVarInt()
|
|
346
|
-
const subgroupId = r.readVarInt()
|
|
347
|
-
const objectId = r.readVarInt()
|
|
348
|
-
const publisherPriority = r.readUint8()
|
|
349
|
-
|
|
350
|
-
const
|
|
351
|
-
const
|
|
352
|
-
|
|
353
|
-
let
|
|
354
|
-
let
|
|
355
|
-
let payloadByteOffset: number;
|
|
338
|
+
const byteOffset = r.offset
|
|
339
|
+
const groupId = r.readVarInt()
|
|
340
|
+
const subgroupId = r.readVarInt()
|
|
341
|
+
const objectId = r.readVarInt()
|
|
342
|
+
const publisherPriority = r.readUint8()
|
|
343
|
+
const extLen = Number(r.readVarInt())
|
|
344
|
+
const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0)
|
|
345
|
+
const payloadLength = Number(r.readVarInt())
|
|
346
|
+
let payload: Uint8Array
|
|
347
|
+
let status: bigint | undefined
|
|
348
|
+
let payloadByteOffset: number
|
|
356
349
|
if (payloadLength === 0) {
|
|
357
|
-
status = r.readVarInt()
|
|
358
|
-
payloadByteOffset = r.offset
|
|
359
|
-
payload = new Uint8Array(0)
|
|
350
|
+
status = r.readVarInt()
|
|
351
|
+
payloadByteOffset = r.offset
|
|
352
|
+
payload = new Uint8Array(0)
|
|
360
353
|
} else {
|
|
361
|
-
payloadByteOffset = r.offset
|
|
362
|
-
payload = r.
|
|
354
|
+
payloadByteOffset = r.offset
|
|
355
|
+
payload = r.readBytesView(payloadLength)
|
|
363
356
|
}
|
|
364
357
|
const obj: FetchObjectPayload = {
|
|
365
|
-
type:
|
|
358
|
+
type: 'object',
|
|
366
359
|
byteOffset,
|
|
367
360
|
payloadByteOffset,
|
|
368
361
|
groupId,
|
|
@@ -372,18 +365,18 @@ export function decodeFetchStream(bytes: Uint8Array): DecodeResult<FetchStream>
|
|
|
372
365
|
payloadLength,
|
|
373
366
|
payload,
|
|
374
367
|
extensionData,
|
|
375
|
-
}
|
|
376
|
-
if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status
|
|
377
|
-
objects.push(obj)
|
|
368
|
+
}
|
|
369
|
+
if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status
|
|
370
|
+
objects.push(obj)
|
|
378
371
|
}
|
|
379
372
|
return {
|
|
380
373
|
ok: true,
|
|
381
|
-
value: { type:
|
|
374
|
+
value: { type: 'fetch', requestId, objects },
|
|
382
375
|
bytesRead: r.offset,
|
|
383
|
-
}
|
|
376
|
+
}
|
|
384
377
|
} catch (e) {
|
|
385
|
-
if (e instanceof DecodeError) return { ok: false, error: e }
|
|
386
|
-
throw e
|
|
378
|
+
if (e instanceof DecodeError) return { ok: false, error: e }
|
|
379
|
+
throw e
|
|
387
380
|
}
|
|
388
381
|
}
|
|
389
382
|
|
|
@@ -391,19 +384,19 @@ export function decodeFetchStream(bytes: Uint8Array): DecodeResult<FetchStream>
|
|
|
391
384
|
* Decode a data stream, dispatching by stream type.
|
|
392
385
|
*/
|
|
393
386
|
export function decodeDataStream(
|
|
394
|
-
streamType:
|
|
387
|
+
streamType: 'subgroup' | 'datagram' | 'fetch',
|
|
395
388
|
bytes: Uint8Array,
|
|
396
389
|
): DecodeResult<Draft14DataStream> {
|
|
397
390
|
switch (streamType) {
|
|
398
|
-
case
|
|
399
|
-
return decodeSubgroupStream(bytes)
|
|
400
|
-
case
|
|
401
|
-
return decodeDatagram(bytes)
|
|
402
|
-
case
|
|
403
|
-
return decodeFetchStream(bytes)
|
|
391
|
+
case 'subgroup':
|
|
392
|
+
return decodeSubgroupStream(bytes)
|
|
393
|
+
case 'datagram':
|
|
394
|
+
return decodeDatagram(bytes)
|
|
395
|
+
case 'fetch':
|
|
396
|
+
return decodeFetchStream(bytes)
|
|
404
397
|
default: {
|
|
405
|
-
const _exhaustive: never = streamType
|
|
406
|
-
throw new Error(`Unknown stream type: ${_exhaustive}`)
|
|
398
|
+
const _exhaustive: never = streamType
|
|
399
|
+
throw new Error(`Unknown stream type: ${_exhaustive}`)
|
|
407
400
|
}
|
|
408
401
|
}
|
|
409
402
|
}
|
|
@@ -419,109 +412,122 @@ export function createSubgroupStreamDecoder(): TransformStream<
|
|
|
419
412
|
Uint8Array,
|
|
420
413
|
SubgroupStreamHeader | ObjectPayload
|
|
421
414
|
> {
|
|
422
|
-
let buffer = new Uint8Array(0)
|
|
423
|
-
let
|
|
424
|
-
let
|
|
425
|
-
let
|
|
426
|
-
let
|
|
415
|
+
let buffer = new Uint8Array(0)
|
|
416
|
+
let offset = 0
|
|
417
|
+
let headerEmitted = false
|
|
418
|
+
let extensionsPresent = false
|
|
419
|
+
let prevObjectId = -1n
|
|
420
|
+
let firstObject = true
|
|
427
421
|
|
|
428
422
|
return new TransformStream<Uint8Array, SubgroupStreamHeader | ObjectPayload>({
|
|
429
423
|
transform(chunk, controller) {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
424
|
+
if (offset > 0) {
|
|
425
|
+
buffer = buffer.subarray(offset)
|
|
426
|
+
offset = 0
|
|
427
|
+
}
|
|
428
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length)
|
|
429
|
+
newBuffer.set(buffer, 0)
|
|
430
|
+
newBuffer.set(chunk, buffer.length)
|
|
431
|
+
buffer = newBuffer
|
|
434
432
|
|
|
435
433
|
if (!headerEmitted) {
|
|
436
434
|
try {
|
|
437
|
-
const r = new BufferReader(buffer)
|
|
438
|
-
const streamType = Number(r.readVarInt())
|
|
435
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
436
|
+
const streamType = Number(r.readVarInt())
|
|
439
437
|
if (!isValidSubgroupType(streamType)) {
|
|
440
438
|
controller.error(
|
|
441
439
|
new DecodeError(
|
|
442
|
-
|
|
440
|
+
'CONSTRAINT_VIOLATION',
|
|
443
441
|
`Expected subgroup stream type 0x10-0x1D, got 0x${streamType.toString(16)}`,
|
|
444
442
|
0,
|
|
445
443
|
),
|
|
446
|
-
)
|
|
447
|
-
return
|
|
444
|
+
)
|
|
445
|
+
return
|
|
448
446
|
}
|
|
449
|
-
extensionsPresent = (streamType & 0x01) !== 0
|
|
450
|
-
const hasSubgroupField = (streamType & 0x04) !== 0
|
|
451
|
-
const trackAlias = r.readVarInt()
|
|
452
|
-
const groupId = r.readVarInt()
|
|
453
|
-
let subgroupId = 0n
|
|
447
|
+
extensionsPresent = (streamType & 0x01) !== 0
|
|
448
|
+
const hasSubgroupField = (streamType & 0x04) !== 0
|
|
449
|
+
const trackAlias = r.readVarInt()
|
|
450
|
+
const groupId = r.readVarInt()
|
|
451
|
+
let subgroupId = 0n
|
|
454
452
|
if (hasSubgroupField) {
|
|
455
|
-
subgroupId = r.readVarInt()
|
|
453
|
+
subgroupId = r.readVarInt()
|
|
456
454
|
}
|
|
457
|
-
const publisherPriority = r.readUint8()
|
|
455
|
+
const publisherPriority = r.readUint8()
|
|
458
456
|
|
|
459
457
|
controller.enqueue({
|
|
460
|
-
type:
|
|
458
|
+
type: 'subgroup_header',
|
|
461
459
|
headerType: streamType,
|
|
462
460
|
trackAlias,
|
|
463
461
|
groupId,
|
|
464
462
|
subgroupId,
|
|
465
463
|
publisherPriority,
|
|
466
|
-
})
|
|
467
|
-
headerEmitted = true
|
|
468
|
-
|
|
464
|
+
})
|
|
465
|
+
headerEmitted = true
|
|
466
|
+
offset += r.offset
|
|
469
467
|
} catch (e) {
|
|
470
|
-
if (e instanceof DecodeError && e.code ===
|
|
471
|
-
return
|
|
468
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') {
|
|
469
|
+
return
|
|
472
470
|
}
|
|
473
|
-
controller.error(e)
|
|
474
|
-
return
|
|
471
|
+
controller.error(e)
|
|
472
|
+
return
|
|
475
473
|
}
|
|
476
474
|
}
|
|
477
475
|
|
|
478
|
-
while (buffer.length
|
|
476
|
+
while (offset < buffer.length) {
|
|
479
477
|
try {
|
|
480
|
-
const r = new BufferReader(buffer)
|
|
481
|
-
const byteOffset = r.offset
|
|
482
|
-
const delta = r.readVarInt()
|
|
483
|
-
const objectId = firstObject ? delta : prevObjectId + 1n + delta
|
|
484
|
-
firstObject = false
|
|
478
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
479
|
+
const byteOffset = r.offset
|
|
480
|
+
const delta = r.readVarInt()
|
|
481
|
+
const objectId = firstObject ? delta : prevObjectId + 1n + delta
|
|
482
|
+
firstObject = false
|
|
485
483
|
|
|
486
|
-
let extensionData = new Uint8Array(0)
|
|
484
|
+
let extensionData = new Uint8Array(0)
|
|
487
485
|
if (extensionsPresent) {
|
|
488
|
-
const extLen = Number(r.readVarInt())
|
|
489
|
-
extensionData = extLen > 0 ? r.
|
|
486
|
+
const extLen = Number(r.readVarInt())
|
|
487
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0)
|
|
490
488
|
}
|
|
491
489
|
|
|
492
|
-
const payloadLength = Number(r.readVarInt())
|
|
493
|
-
let payload: Uint8Array
|
|
494
|
-
let status: bigint | undefined
|
|
495
|
-
let payloadByteOffset: number
|
|
490
|
+
const payloadLength = Number(r.readVarInt())
|
|
491
|
+
let payload: Uint8Array
|
|
492
|
+
let status: bigint | undefined
|
|
493
|
+
let payloadByteOffset: number
|
|
496
494
|
if (payloadLength === 0) {
|
|
497
|
-
status = r.readVarInt()
|
|
498
|
-
payloadByteOffset = r.offset
|
|
499
|
-
payload = new Uint8Array(0)
|
|
495
|
+
status = r.readVarInt()
|
|
496
|
+
payloadByteOffset = r.offset
|
|
497
|
+
payload = new Uint8Array(0)
|
|
500
498
|
} else {
|
|
501
|
-
payloadByteOffset = r.offset
|
|
502
|
-
payload = r.
|
|
499
|
+
payloadByteOffset = r.offset
|
|
500
|
+
payload = r.readBytesView(payloadLength)
|
|
501
|
+
}
|
|
502
|
+
const obj: ObjectPayload = {
|
|
503
|
+
type: 'object',
|
|
504
|
+
byteOffset,
|
|
505
|
+
payloadByteOffset,
|
|
506
|
+
objectId,
|
|
507
|
+
payloadLength,
|
|
508
|
+
payload,
|
|
509
|
+
extensionData,
|
|
503
510
|
}
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
buffer = buffer.slice(r.offset);
|
|
511
|
+
if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status
|
|
512
|
+
controller.enqueue(obj)
|
|
513
|
+
prevObjectId = objectId
|
|
514
|
+
offset += r.offset
|
|
509
515
|
} catch (e) {
|
|
510
|
-
if (e instanceof DecodeError && e.code ===
|
|
511
|
-
break
|
|
516
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') {
|
|
517
|
+
break
|
|
512
518
|
}
|
|
513
|
-
controller.error(e)
|
|
514
|
-
return
|
|
519
|
+
controller.error(e)
|
|
520
|
+
return
|
|
515
521
|
}
|
|
516
522
|
}
|
|
517
523
|
},
|
|
518
524
|
|
|
519
525
|
flush(controller) {
|
|
520
|
-
if (buffer.length
|
|
521
|
-
controller.error(new DecodeError(
|
|
526
|
+
if (offset < buffer.length) {
|
|
527
|
+
controller.error(new DecodeError('UNEXPECTED_END', 'Stream ended with incomplete data', 0))
|
|
522
528
|
}
|
|
523
529
|
},
|
|
524
|
-
})
|
|
530
|
+
})
|
|
525
531
|
}
|
|
526
532
|
|
|
527
533
|
/**
|
|
@@ -533,68 +539,73 @@ export function createFetchStreamDecoder(): TransformStream<
|
|
|
533
539
|
Uint8Array,
|
|
534
540
|
FetchStreamHeader | ObjectPayload
|
|
535
541
|
> {
|
|
536
|
-
let buffer = new Uint8Array(0)
|
|
537
|
-
let
|
|
542
|
+
let buffer = new Uint8Array(0)
|
|
543
|
+
let offset = 0
|
|
544
|
+
let headerEmitted = false
|
|
538
545
|
|
|
539
546
|
return new TransformStream<Uint8Array, FetchStreamHeader | ObjectPayload>({
|
|
540
547
|
transform(chunk, controller) {
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
548
|
+
if (offset > 0) {
|
|
549
|
+
buffer = buffer.subarray(offset)
|
|
550
|
+
offset = 0
|
|
551
|
+
}
|
|
552
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length)
|
|
553
|
+
newBuffer.set(buffer, 0)
|
|
554
|
+
newBuffer.set(chunk, buffer.length)
|
|
555
|
+
buffer = newBuffer
|
|
545
556
|
|
|
546
557
|
if (!headerEmitted) {
|
|
547
558
|
try {
|
|
548
|
-
const r = new BufferReader(buffer)
|
|
549
|
-
const streamType = r.readVarInt()
|
|
559
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
560
|
+
const streamType = r.readVarInt()
|
|
550
561
|
if (streamType !== FETCH_STREAM_TYPE) {
|
|
551
562
|
controller.error(
|
|
552
563
|
new DecodeError(
|
|
553
|
-
|
|
564
|
+
'CONSTRAINT_VIOLATION',
|
|
554
565
|
`Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
|
|
555
566
|
0,
|
|
556
567
|
),
|
|
557
|
-
)
|
|
558
|
-
return
|
|
568
|
+
)
|
|
569
|
+
return
|
|
559
570
|
}
|
|
560
|
-
const requestId = r.readVarInt()
|
|
571
|
+
const requestId = r.readVarInt()
|
|
561
572
|
|
|
562
|
-
controller.enqueue({ type:
|
|
563
|
-
headerEmitted = true
|
|
564
|
-
|
|
573
|
+
controller.enqueue({ type: 'fetch_header', requestId })
|
|
574
|
+
headerEmitted = true
|
|
575
|
+
offset += r.offset
|
|
565
576
|
} catch (e) {
|
|
566
|
-
if (e instanceof DecodeError && e.code ===
|
|
567
|
-
return
|
|
577
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') {
|
|
578
|
+
return
|
|
568
579
|
}
|
|
569
|
-
controller.error(e)
|
|
570
|
-
return
|
|
580
|
+
controller.error(e)
|
|
581
|
+
return
|
|
571
582
|
}
|
|
572
583
|
}
|
|
573
584
|
|
|
574
|
-
while (buffer.length
|
|
585
|
+
while (offset < buffer.length) {
|
|
575
586
|
try {
|
|
576
|
-
const r = new BufferReader(buffer)
|
|
577
|
-
const byteOffset = r.offset
|
|
578
|
-
const groupId = r.readVarInt()
|
|
579
|
-
const subgroupId = r.readVarInt()
|
|
580
|
-
const objectId = r.readVarInt()
|
|
581
|
-
const publisherPriority = r.readUint8()
|
|
582
|
-
const extLen = Number(r.readVarInt())
|
|
583
|
-
const extensionData = extLen > 0 ? r.
|
|
584
|
-
const payloadLength = Number(r.readVarInt())
|
|
585
|
-
let payload: Uint8Array
|
|
586
|
-
let status: bigint | undefined
|
|
587
|
-
let payloadByteOffset: number
|
|
587
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
588
|
+
const byteOffset = r.offset
|
|
589
|
+
const groupId = r.readVarInt()
|
|
590
|
+
const subgroupId = r.readVarInt()
|
|
591
|
+
const objectId = r.readVarInt()
|
|
592
|
+
const publisherPriority = r.readUint8()
|
|
593
|
+
const extLen = Number(r.readVarInt())
|
|
594
|
+
const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0)
|
|
595
|
+
const payloadLength = Number(r.readVarInt())
|
|
596
|
+
let payload: Uint8Array
|
|
597
|
+
let status: bigint | undefined
|
|
598
|
+
let payloadByteOffset: number
|
|
588
599
|
if (payloadLength === 0) {
|
|
589
|
-
status = r.readVarInt()
|
|
590
|
-
payloadByteOffset = r.offset
|
|
591
|
-
payload = new Uint8Array(0)
|
|
600
|
+
status = r.readVarInt()
|
|
601
|
+
payloadByteOffset = r.offset
|
|
602
|
+
payload = new Uint8Array(0)
|
|
592
603
|
} else {
|
|
593
|
-
payloadByteOffset = r.offset
|
|
594
|
-
payload = r.
|
|
604
|
+
payloadByteOffset = r.offset
|
|
605
|
+
payload = r.readBytesView(payloadLength)
|
|
595
606
|
}
|
|
596
607
|
const obj: FetchObjectPayload = {
|
|
597
|
-
type:
|
|
608
|
+
type: 'object',
|
|
598
609
|
byteOffset,
|
|
599
610
|
payloadByteOffset,
|
|
600
611
|
groupId,
|
|
@@ -604,26 +615,26 @@ export function createFetchStreamDecoder(): TransformStream<
|
|
|
604
615
|
payloadLength,
|
|
605
616
|
payload,
|
|
606
617
|
extensionData,
|
|
607
|
-
}
|
|
608
|
-
if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status
|
|
609
|
-
controller.enqueue(obj)
|
|
610
|
-
|
|
618
|
+
}
|
|
619
|
+
if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status
|
|
620
|
+
controller.enqueue(obj)
|
|
621
|
+
offset += r.offset
|
|
611
622
|
} catch (e) {
|
|
612
|
-
if (e instanceof DecodeError && e.code ===
|
|
613
|
-
break
|
|
623
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') {
|
|
624
|
+
break
|
|
614
625
|
}
|
|
615
|
-
controller.error(e)
|
|
616
|
-
return
|
|
626
|
+
controller.error(e)
|
|
627
|
+
return
|
|
617
628
|
}
|
|
618
629
|
}
|
|
619
630
|
},
|
|
620
631
|
|
|
621
632
|
flush(controller) {
|
|
622
|
-
if (buffer.length
|
|
623
|
-
controller.error(new DecodeError(
|
|
633
|
+
if (offset < buffer.length) {
|
|
634
|
+
controller.error(new DecodeError('UNEXPECTED_END', 'Stream ended with incomplete data', 0))
|
|
624
635
|
}
|
|
625
636
|
},
|
|
626
|
-
})
|
|
637
|
+
})
|
|
627
638
|
}
|
|
628
639
|
|
|
629
640
|
/**
|
|
@@ -631,168 +642,190 @@ export function createFetchStreamDecoder(): TransformStream<
|
|
|
631
642
|
* Reads the stream type varint: 0x10-0x1D = subgroup, 0x05 = fetch.
|
|
632
643
|
*/
|
|
633
644
|
export function createDataStreamDecoder(): TransformStream<Uint8Array, DataStreamEvent> {
|
|
634
|
-
let buffer = new Uint8Array(0)
|
|
635
|
-
let
|
|
636
|
-
let
|
|
637
|
-
let
|
|
638
|
-
let
|
|
639
|
-
let
|
|
645
|
+
let buffer = new Uint8Array(0)
|
|
646
|
+
let offset = 0
|
|
647
|
+
let detectedType: 'subgroup' | 'fetch' | null = null
|
|
648
|
+
let headerEmitted = false
|
|
649
|
+
let extensionsPresent = false
|
|
650
|
+
let prevObjectId = -1n
|
|
651
|
+
let firstObject = true
|
|
640
652
|
|
|
641
653
|
return new TransformStream<Uint8Array, DataStreamEvent>({
|
|
642
654
|
transform(chunk, controller) {
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
655
|
+
if (offset > 0) {
|
|
656
|
+
buffer = buffer.subarray(offset)
|
|
657
|
+
offset = 0
|
|
658
|
+
}
|
|
659
|
+
const newBuffer = new Uint8Array(buffer.length + chunk.length)
|
|
660
|
+
newBuffer.set(buffer, 0)
|
|
661
|
+
newBuffer.set(chunk, buffer.length)
|
|
662
|
+
buffer = newBuffer
|
|
647
663
|
|
|
648
664
|
if (detectedType === null) {
|
|
649
665
|
try {
|
|
650
|
-
const r = new BufferReader(buffer)
|
|
651
|
-
const streamType = Number(r.readVarInt())
|
|
666
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
667
|
+
const streamType = Number(r.readVarInt())
|
|
652
668
|
if (isValidSubgroupType(streamType)) {
|
|
653
|
-
detectedType =
|
|
669
|
+
detectedType = 'subgroup'
|
|
654
670
|
} else if (streamType === 0x05) {
|
|
655
|
-
detectedType =
|
|
671
|
+
detectedType = 'fetch'
|
|
656
672
|
} else {
|
|
657
673
|
controller.error(
|
|
658
674
|
new DecodeError(
|
|
659
|
-
|
|
675
|
+
'CONSTRAINT_VIOLATION',
|
|
660
676
|
`Unknown data stream type: 0x${streamType.toString(16)}`,
|
|
661
677
|
0,
|
|
662
678
|
),
|
|
663
|
-
)
|
|
664
|
-
return
|
|
679
|
+
)
|
|
680
|
+
return
|
|
665
681
|
}
|
|
666
682
|
} catch (e) {
|
|
667
|
-
if (e instanceof DecodeError && e.code ===
|
|
668
|
-
return
|
|
683
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') {
|
|
684
|
+
return
|
|
669
685
|
}
|
|
670
|
-
controller.error(e)
|
|
671
|
-
return
|
|
686
|
+
controller.error(e)
|
|
687
|
+
return
|
|
672
688
|
}
|
|
673
689
|
}
|
|
674
690
|
|
|
675
|
-
if (detectedType ===
|
|
691
|
+
if (detectedType === 'subgroup') {
|
|
676
692
|
if (!headerEmitted) {
|
|
677
693
|
try {
|
|
678
|
-
const r = new BufferReader(buffer)
|
|
679
|
-
const streamType = Number(r.readVarInt())
|
|
680
|
-
extensionsPresent = (streamType & 0x01) !== 0
|
|
681
|
-
const hasSubgroupField = (streamType & 0x04) !== 0
|
|
682
|
-
const trackAlias = r.readVarInt()
|
|
683
|
-
const groupId = r.readVarInt()
|
|
684
|
-
let subgroupId = 0n
|
|
685
|
-
if (hasSubgroupField) subgroupId = r.readVarInt()
|
|
686
|
-
const publisherPriority = r.readUint8()
|
|
694
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
695
|
+
const streamType = Number(r.readVarInt())
|
|
696
|
+
extensionsPresent = (streamType & 0x01) !== 0
|
|
697
|
+
const hasSubgroupField = (streamType & 0x04) !== 0
|
|
698
|
+
const trackAlias = r.readVarInt()
|
|
699
|
+
const groupId = r.readVarInt()
|
|
700
|
+
let subgroupId = 0n
|
|
701
|
+
if (hasSubgroupField) subgroupId = r.readVarInt()
|
|
702
|
+
const publisherPriority = r.readUint8()
|
|
687
703
|
controller.enqueue({
|
|
688
|
-
type:
|
|
704
|
+
type: 'subgroup_header',
|
|
689
705
|
headerType: streamType,
|
|
690
706
|
trackAlias,
|
|
691
707
|
groupId,
|
|
692
708
|
subgroupId,
|
|
693
709
|
publisherPriority,
|
|
694
|
-
})
|
|
695
|
-
headerEmitted = true
|
|
696
|
-
|
|
710
|
+
})
|
|
711
|
+
headerEmitted = true
|
|
712
|
+
offset += r.offset
|
|
697
713
|
} catch (e) {
|
|
698
|
-
if (e instanceof DecodeError && e.code ===
|
|
699
|
-
controller.error(e)
|
|
700
|
-
return
|
|
714
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') return
|
|
715
|
+
controller.error(e)
|
|
716
|
+
return
|
|
701
717
|
}
|
|
702
718
|
}
|
|
703
719
|
|
|
704
|
-
while (buffer.length
|
|
720
|
+
while (offset < buffer.length) {
|
|
705
721
|
try {
|
|
706
|
-
const r = new BufferReader(buffer)
|
|
707
|
-
const byteOffset = r.offset
|
|
708
|
-
const delta = r.readVarInt()
|
|
709
|
-
const objectId = firstObject ? delta : prevObjectId + 1n + delta
|
|
710
|
-
firstObject = false
|
|
711
|
-
let extensionData = new Uint8Array(0)
|
|
722
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
723
|
+
const byteOffset = r.offset
|
|
724
|
+
const delta = r.readVarInt()
|
|
725
|
+
const objectId = firstObject ? delta : prevObjectId + 1n + delta
|
|
726
|
+
firstObject = false
|
|
727
|
+
let extensionData = new Uint8Array(0)
|
|
712
728
|
if (extensionsPresent) {
|
|
713
|
-
const extLen = Number(r.readVarInt())
|
|
714
|
-
extensionData = extLen > 0 ? r.
|
|
729
|
+
const extLen = Number(r.readVarInt())
|
|
730
|
+
extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0)
|
|
715
731
|
}
|
|
716
|
-
const payloadLength = Number(r.readVarInt())
|
|
717
|
-
let payload: Uint8Array
|
|
718
|
-
let status: bigint | undefined
|
|
719
|
-
let payloadByteOffset: number
|
|
732
|
+
const payloadLength = Number(r.readVarInt())
|
|
733
|
+
let payload: Uint8Array
|
|
734
|
+
let status: bigint | undefined
|
|
735
|
+
let payloadByteOffset: number
|
|
720
736
|
if (payloadLength === 0) {
|
|
721
|
-
status = r.readVarInt()
|
|
722
|
-
payloadByteOffset = r.offset
|
|
723
|
-
payload = new Uint8Array(0)
|
|
737
|
+
status = r.readVarInt()
|
|
738
|
+
payloadByteOffset = r.offset
|
|
739
|
+
payload = new Uint8Array(0)
|
|
724
740
|
} else {
|
|
725
|
-
payloadByteOffset = r.offset
|
|
726
|
-
payload = r.
|
|
741
|
+
payloadByteOffset = r.offset
|
|
742
|
+
payload = r.readBytesView(payloadLength)
|
|
743
|
+
}
|
|
744
|
+
const obj: ObjectPayload = {
|
|
745
|
+
type: 'object',
|
|
746
|
+
byteOffset,
|
|
747
|
+
payloadByteOffset,
|
|
748
|
+
objectId,
|
|
749
|
+
payloadLength,
|
|
750
|
+
payload,
|
|
751
|
+
extensionData,
|
|
727
752
|
}
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
prevObjectId = objectId;
|
|
733
|
-
buffer = buffer.slice(r.offset);
|
|
753
|
+
if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status
|
|
754
|
+
controller.enqueue(obj)
|
|
755
|
+
prevObjectId = objectId
|
|
756
|
+
offset += r.offset
|
|
734
757
|
} catch (e) {
|
|
735
|
-
if (e instanceof DecodeError && e.code ===
|
|
736
|
-
controller.error(e)
|
|
737
|
-
return
|
|
758
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') break
|
|
759
|
+
controller.error(e)
|
|
760
|
+
return
|
|
738
761
|
}
|
|
739
762
|
}
|
|
740
763
|
} else {
|
|
741
764
|
if (!headerEmitted) {
|
|
742
765
|
try {
|
|
743
|
-
const r = new BufferReader(buffer)
|
|
744
|
-
r.readVarInt()
|
|
745
|
-
const requestId = r.readVarInt()
|
|
746
|
-
controller.enqueue({ type:
|
|
747
|
-
headerEmitted = true
|
|
748
|
-
|
|
766
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
767
|
+
r.readVarInt() // stream type (0x05)
|
|
768
|
+
const requestId = r.readVarInt()
|
|
769
|
+
controller.enqueue({ type: 'fetch_header', requestId })
|
|
770
|
+
headerEmitted = true
|
|
771
|
+
offset += r.offset
|
|
749
772
|
} catch (e) {
|
|
750
|
-
if (e instanceof DecodeError && e.code ===
|
|
751
|
-
controller.error(e)
|
|
752
|
-
return
|
|
773
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') return
|
|
774
|
+
controller.error(e)
|
|
775
|
+
return
|
|
753
776
|
}
|
|
754
777
|
}
|
|
755
778
|
|
|
756
|
-
while (buffer.length
|
|
779
|
+
while (offset < buffer.length) {
|
|
757
780
|
try {
|
|
758
|
-
const r = new BufferReader(buffer)
|
|
759
|
-
const byteOffset = r.offset
|
|
760
|
-
const groupId = r.readVarInt()
|
|
761
|
-
const subgroupId = r.readVarInt()
|
|
762
|
-
const objectId = r.readVarInt()
|
|
763
|
-
const publisherPriority = r.readUint8()
|
|
764
|
-
const extLen = Number(r.readVarInt())
|
|
765
|
-
const extensionData = extLen > 0 ? r.
|
|
766
|
-
const payloadLength = Number(r.readVarInt())
|
|
767
|
-
let payload: Uint8Array
|
|
768
|
-
let status: bigint | undefined
|
|
769
|
-
let payloadByteOffset: number
|
|
781
|
+
const r = new BufferReader(buffer.subarray(offset))
|
|
782
|
+
const byteOffset = r.offset
|
|
783
|
+
const groupId = r.readVarInt()
|
|
784
|
+
const subgroupId = r.readVarInt()
|
|
785
|
+
const objectId = r.readVarInt()
|
|
786
|
+
const publisherPriority = r.readUint8()
|
|
787
|
+
const extLen = Number(r.readVarInt())
|
|
788
|
+
const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0)
|
|
789
|
+
const payloadLength = Number(r.readVarInt())
|
|
790
|
+
let payload: Uint8Array
|
|
791
|
+
let status: bigint | undefined
|
|
792
|
+
let payloadByteOffset: number
|
|
770
793
|
if (payloadLength === 0) {
|
|
771
|
-
status = r.readVarInt()
|
|
772
|
-
payloadByteOffset = r.offset
|
|
773
|
-
payload = new Uint8Array(0)
|
|
794
|
+
status = r.readVarInt()
|
|
795
|
+
payloadByteOffset = r.offset
|
|
796
|
+
payload = new Uint8Array(0)
|
|
774
797
|
} else {
|
|
775
|
-
payloadByteOffset = r.offset
|
|
776
|
-
payload = r.
|
|
798
|
+
payloadByteOffset = r.offset
|
|
799
|
+
payload = r.readBytesView(payloadLength)
|
|
800
|
+
}
|
|
801
|
+
const obj: FetchObjectPayload = {
|
|
802
|
+
type: 'object',
|
|
803
|
+
byteOffset,
|
|
804
|
+
payloadByteOffset,
|
|
805
|
+
groupId,
|
|
806
|
+
subgroupId,
|
|
807
|
+
objectId,
|
|
808
|
+
publisherPriority,
|
|
809
|
+
payloadLength,
|
|
810
|
+
payload,
|
|
811
|
+
extensionData,
|
|
777
812
|
}
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
controller.enqueue(obj);
|
|
782
|
-
buffer = buffer.slice(r.offset);
|
|
813
|
+
if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status
|
|
814
|
+
controller.enqueue(obj)
|
|
815
|
+
offset += r.offset
|
|
783
816
|
} catch (e) {
|
|
784
|
-
if (e instanceof DecodeError && e.code ===
|
|
785
|
-
controller.error(e)
|
|
786
|
-
return
|
|
817
|
+
if (e instanceof DecodeError && e.code === 'UNEXPECTED_END') break
|
|
818
|
+
controller.error(e)
|
|
819
|
+
return
|
|
787
820
|
}
|
|
788
821
|
}
|
|
789
822
|
}
|
|
790
823
|
},
|
|
791
824
|
|
|
792
825
|
flush(controller) {
|
|
793
|
-
if (buffer.length
|
|
794
|
-
controller.error(new DecodeError(
|
|
826
|
+
if (offset < buffer.length) {
|
|
827
|
+
controller.error(new DecodeError('UNEXPECTED_END', 'Stream ended with incomplete data', 0))
|
|
795
828
|
}
|
|
796
829
|
},
|
|
797
|
-
})
|
|
830
|
+
})
|
|
798
831
|
}
|