@moqtap/codec 0.2.3 → 0.4.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-73MWUKSJ.js → chunk-2UTVXWFF.js} +190 -102
- package/dist/{chunk-JTVCOMBI.cjs → chunk-3XKO6PCR.cjs} +290 -183
- package/dist/{chunk-ACQ4CUJP.cjs → chunk-4BDEU3D4.cjs} +237 -158
- package/dist/{chunk-4N4INRE7.cjs → chunk-4HBKHNU2.cjs} +144 -110
- package/dist/{chunk-2ZT6CVSE.js → chunk-4IVZZOY3.js} +269 -162
- package/dist/{chunk-GLBQDG4L.cjs → chunk-5O764MBD.cjs} +508 -117
- 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-UYXTY6ZQ.cjs → chunk-E65QKRSN.cjs} +20 -12
- package/dist/{chunk-BISI45MN.cjs → chunk-EAHE3IOG.cjs} +44 -12
- package/dist/{chunk-PZBPH2D7.js → chunk-GCBFHZW6.js} +216 -137
- package/dist/{chunk-GXEW4COZ.cjs → chunk-H5NSL4MO.cjs} +36 -10
- package/dist/chunk-HZHSO7EW.cjs +1212 -0
- package/dist/{chunk-KZCYQ7ED.cjs → chunk-IILNSDEQ.cjs} +69 -41
- package/dist/{chunk-4XYGE53S.cjs → chunk-J3XCPBW3.cjs} +36 -10
- package/dist/{chunk-6AEHWULA.cjs → chunk-JKOEJZ5B.cjs} +28 -8
- package/dist/{chunk-RUPCJTC3.cjs → chunk-JL3NEW3O.cjs} +23 -1
- 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-S74DWJE2.cjs → chunk-OKG2HT25.cjs} +277 -88
- package/dist/{chunk-BGWGVINJ.cjs → chunk-PKEOQSSZ.cjs} +144 -110
- package/dist/{chunk-2GODRVT5.js → chunk-Q46ZURKX.js} +325 -48
- package/dist/{chunk-UR6JKS56.js → chunk-Q7IGWV3P.js} +41 -9
- package/dist/{chunk-XSNX2IUJ.js → chunk-RW4UG7CN.js} +121 -87
- package/dist/{chunk-DWK5ZQZ4.js → chunk-RZTLQAKF.js} +28 -8
- package/dist/{chunk-UNS34PTA.cjs → chunk-S6IPIN66.cjs} +44 -12
- package/dist/{chunk-YIG2C3LF.cjs → chunk-SDWRXXOO.cjs} +214 -126
- package/dist/{chunk-CEH7ESNC.js → chunk-SHMA4PBY.js} +121 -87
- package/dist/{chunk-MC7W6PMI.js → chunk-U3ZVLT5L.js} +483 -135
- package/dist/{chunk-VJUUZ4W2.cjs → chunk-UJU63EFY.cjs} +374 -97
- package/dist/{chunk-7L43FE6P.js → chunk-VOU7PNHI.js} +23 -1
- package/dist/{chunk-E6E3NQYU.js → chunk-WRHGCVYN.js} +44 -12
- package/dist/{chunk-FPISPJ5N.cjs → chunk-XNWYLVGU.cjs} +529 -181
- package/dist/{chunk-U3IPZYPX.js → chunk-XS77RBY7.js} +228 -39
- package/dist/{chunk-JGG7CMSZ.cjs → chunk-XZE5R57R.cjs} +144 -110
- package/dist/{chunk-77MNXX3M.js → chunk-Y6KCSM3V.js} +121 -87
- package/dist/{chunk-TLYNOOQP.cjs → chunk-YTPZZI2M.cjs} +41 -9
- package/dist/{chunk-7DUBLRXC.js → chunk-YWRCSQBA.js} +44 -12
- package/dist/{chunk-MRJWLGYH.js → chunk-Z3VKP3PJ.js} +69 -41
- package/dist/{chunk-E6P74GDT.js → chunk-Z6U26IRI.js} +464 -73
- package/dist/{codec-FvGCxIhr.d.ts → codec-25u4_1HS.d.ts} +4 -4
- package/dist/{codec-DRcsBCsb.d.ts → codec-3Ppy_5Gd.d.ts} +4 -4
- package/dist/{codec-BdVMRMOI.d.ts → codec-BB0U8MF2.d.cts} +4 -4
- package/dist/{codec-B2cH-f5V.d.cts → codec-BHHfBTnV.d.ts} +4 -4
- package/dist/{codec-B5K73Bdj.d.ts → codec-BN6jk0Td.d.cts} +4 -4
- package/dist/{codec-R8GrCPt2.d.ts → codec-BU0gaSZm.d.ts} +4 -4
- package/dist/{codec-Bq-tLtfP.d.ts → codec-C-Yk2RNa.d.ts} +4 -4
- package/dist/codec-CFWQY9Lj.d.cts +18 -0
- package/dist/{codec-CPlK3Pi5.d.ts → codec-COy4uuPO.d.cts} +4 -4
- package/dist/codec-CewFCsEy.d.ts +18 -0
- package/dist/{codec-KXHvXZVb.d.cts → codec-Ck7ZwFF1.d.cts} +4 -4
- package/dist/{codec-DZhZSIii.d.cts → codec-D2QVSH9D.d.ts} +4 -4
- package/dist/{codec-BwFgpeQu.d.ts → codec-DDUBJGn0.d.cts} +4 -4
- package/dist/{codec-BFeliJFc.d.ts → codec-DNfml-se.d.ts} +4 -4
- package/dist/{codec-C4n1PS09.d.cts → codec-DoOGjjDq.d.cts} +4 -4
- package/dist/{codec-Bap882Fh.d.cts → codec-J7ekOSMc.d.ts} +4 -4
- package/dist/{codec-SKBeHQk7.d.ts → codec-R9TJCq-E.d.cts} +4 -4
- package/dist/{codec-DNUIgLqc.d.cts → codec-ZwV-Njt6.d.ts} +4 -4
- package/dist/{codec-HgBgHkFI.d.cts → codec-j819z_hL.d.cts} +4 -4
- package/dist/{codec-DY4QH364.d.cts → codec-w8z2j_uo.d.cts} +4 -4
- package/dist/{codec-CPvPq0sb.d.cts → codec-wtt6WF1K.d.ts} +4 -4
- package/dist/{codec-BUMjz0J4.d.cts → codec-z6_2PSzi.d.cts} +4 -4
- package/dist/{draft7-session.cjs → draft07-session.cjs} +2 -2
- package/dist/draft07-session.d.cts +8 -0
- package/dist/draft07-session.d.ts +8 -0
- package/dist/{draft7-session.js → draft07-session.js} +1 -1
- package/dist/draft07.cjs +129 -0
- package/dist/draft07.d.cts +67 -0
- package/dist/draft07.d.ts +67 -0
- package/dist/draft07.js +129 -0
- package/dist/draft08-session.cjs +6 -0
- package/dist/draft08-session.d.cts +8 -0
- package/dist/draft08-session.d.ts +8 -0
- package/dist/{draft8-session.js → draft08-session.js} +1 -1
- package/dist/draft08.cjs +119 -0
- package/dist/{draft8.d.cts → draft08.d.cts} +15 -13
- package/dist/{draft8.d.ts → draft08.d.ts} +15 -13
- package/dist/{draft8.js → draft08.js} +7 -4
- package/dist/draft09-session.cjs +6 -0
- package/dist/draft09-session.d.cts +8 -0
- package/dist/draft09-session.d.ts +8 -0
- package/dist/{draft9-session.js → draft09-session.js} +1 -1
- package/dist/draft09.cjs +119 -0
- package/dist/{draft9.d.cts → draft09.d.cts} +15 -13
- package/dist/{draft9.d.ts → draft09.d.ts} +15 -13
- package/dist/{draft9.js → draft09.js} +7 -4
- 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 -5
- package/dist/draft10.d.cts +14 -12
- package/dist/draft10.d.ts +14 -12
- package/dist/draft10.js +16 -13
- 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 -5
- package/dist/draft11.d.cts +14 -12
- package/dist/draft11.d.ts +14 -12
- package/dist/draft11.js +16 -13
- 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 -5
- package/dist/draft12.d.cts +16 -14
- package/dist/draft12.d.ts +16 -14
- package/dist/draft12.js +16 -13
- 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 -5
- package/dist/draft13.d.cts +16 -14
- package/dist/draft13.d.ts +16 -14
- package/dist/draft13.js +16 -13
- 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 -5
- package/dist/draft14.d.cts +14 -12
- package/dist/draft14.d.ts +14 -12
- package/dist/draft14.js +13 -4
- 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 -5
- package/dist/draft15.d.cts +14 -12
- package/dist/draft15.d.ts +14 -12
- package/dist/draft15.js +16 -13
- 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 -5
- package/dist/draft16.d.cts +14 -12
- package/dist/draft16.d.ts +14 -12
- package/dist/draft16.js +16 -13
- 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 -5
- package/dist/draft17.d.cts +11 -9
- package/dist/draft17.d.ts +11 -9
- package/dist/draft17.js +16 -13
- package/dist/index.cjs +52 -74
- package/dist/index.d.cts +41 -60
- package/dist/index.d.ts +41 -60
- package/dist/index.js +40 -62
- 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 +46 -13
- package/dist/session.d.cts +29 -11
- package/dist/session.d.ts +29 -11
- package/dist/session.js +46 -13
- package/dist/{types-DxSFvL2b.d.cts → types--Q7_DcvP.d.cts} +43 -39
- package/dist/{types-DxSFvL2b.d.ts → types--Q7_DcvP.d.ts} +43 -39
- package/dist/{types-B0FT5Qs2.d.cts → types-0IWbU9Z_.d.cts} +36 -36
- package/dist/{types-B0FT5Qs2.d.ts → types-0IWbU9Z_.d.ts} +36 -36
- package/dist/{types-gQsr0AAA.d.cts → types-B3g5G9KP.d.cts} +36 -36
- package/dist/{types-gQsr0AAA.d.ts → types-B3g5G9KP.d.ts} +36 -36
- package/dist/{types-Pme7sua0.d.cts → types-BFpFNM_m.d.cts} +57 -32
- package/dist/{types-Pme7sua0.d.ts → types-BFpFNM_m.d.ts} +57 -32
- package/dist/{types-8gUGeMgs.d.cts → types-Br7fm2mf.d.cts} +48 -26
- package/dist/{types-8gUGeMgs.d.ts → types-Br7fm2mf.d.ts} +48 -26
- package/dist/{types-BeAVNU-F.d.cts → types-C2qKTRR_.d.cts} +50 -45
- package/dist/{types-BeAVNU-F.d.ts → types-C2qKTRR_.d.ts} +50 -45
- package/dist/{types-DKpsfD3i.d.cts → types-DEaypVsD.d.cts} +115 -55
- package/dist/{types-DKpsfD3i.d.ts → types-DEaypVsD.d.ts} +115 -55
- package/dist/types-Dl4IaAHR.d.cts +282 -0
- package/dist/types-Dl4IaAHR.d.ts +282 -0
- package/dist/{types-CDa7F5ct.d.cts → types-DrQpTW1G.d.cts} +58 -50
- package/dist/{types-CDa7F5ct.d.ts → types-DrQpTW1G.d.ts} +58 -50
- package/dist/types-DuIO7cWK.d.cts +25 -0
- package/dist/types-DuIO7cWK.d.ts +25 -0
- package/dist/{types-B9A2g05r.d.cts → types-DuxfOYiO.d.cts} +47 -31
- package/dist/{types-B9A2g05r.d.ts → types-DuxfOYiO.d.ts} +47 -31
- package/dist/{types-D1dI_oTX.d.cts → types-jV1yDDBA.d.cts} +36 -36
- package/dist/{types-D1dI_oTX.d.ts → types-jV1yDDBA.d.ts} +36 -36
- package/package.json +192 -192
- package/src/core/buffer-reader.ts +130 -130
- package/src/core/buffer-writer.ts +100 -100
- package/src/core/errors.ts +1 -1
- package/src/core/hex.ts +21 -21
- package/src/core/session-types.ts +61 -59
- package/src/core/types.ts +18 -361
- package/src/drafts/draft07/codec.ts +1058 -938
- package/src/drafts/draft07/data-streams.ts +240 -240
- 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 +51 -51
- package/src/drafts/draft08/codec.ts +985 -953
- package/src/drafts/draft08/data-streams.ts +363 -359
- 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 -945
- package/src/drafts/draft09/data-streams.ts +336 -332
- 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 -945
- package/src/drafts/draft10/data-streams.ts +336 -332
- 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 -988
- package/src/drafts/draft11/data-streams.ts +316 -269
- 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 -1122
- package/src/drafts/draft12/data-streams.ts +324 -275
- 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 -1206
- package/src/drafts/draft13/data-streams.ts +326 -275
- 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 -1043
- package/src/drafts/draft14/data-streams.ts +831 -813
- 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 -978
- package/src/drafts/draft15/data-streams.ts +842 -794
- 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 -966
- package/src/drafts/draft16/data-streams.ts +835 -789
- 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 -971
- package/src/drafts/draft17/data-streams.ts +969 -758
- 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 +63 -25
- package/dist/chunk-FZDIEHQL.cjs +0 -1042
- package/dist/chunk-HDWJ2GDE.js +0 -24
- package/dist/chunk-KNDYS3DK.cjs +0 -24
- package/dist/chunk-N2KBF5Q2.js +0 -1042
- package/dist/draft7-session.d.cts +0 -7
- package/dist/draft7-session.d.ts +0 -7
- package/dist/draft7.cjs +0 -72
- package/dist/draft7.d.cts +0 -148
- package/dist/draft7.d.ts +0 -148
- package/dist/draft7.js +0 -72
- package/dist/draft8-session.cjs +0 -6
- package/dist/draft8-session.d.cts +0 -8
- package/dist/draft8-session.d.ts +0 -8
- package/dist/draft8.cjs +0 -116
- package/dist/draft9-session.cjs +0 -6
- package/dist/draft9-session.d.cts +0 -8
- package/dist/draft9-session.d.ts +0 -8
- package/dist/draft9.cjs +0 -116
- 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,12 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
bytesToHex,
|
|
3
|
-
hexToBytes
|
|
4
|
-
} from "./chunk-HDWJ2GDE.js";
|
|
5
1
|
import {
|
|
6
2
|
BufferReader,
|
|
7
3
|
BufferWriter,
|
|
8
|
-
DecodeError
|
|
9
|
-
|
|
4
|
+
DecodeError,
|
|
5
|
+
bytesToHex,
|
|
6
|
+
hexToBytes
|
|
7
|
+
} from "./chunk-VOU7PNHI.js";
|
|
10
8
|
|
|
11
9
|
// src/drafts/draft17/messages.ts
|
|
12
10
|
var MSG_REQUEST_UPDATE = 0x02n;
|
|
@@ -28,6 +26,7 @@ var MSG_PUBLISH = 0x1dn;
|
|
|
28
26
|
var MSG_PUBLISH_OK = 0x1en;
|
|
29
27
|
var MSG_SETUP = 0x2f00n;
|
|
30
28
|
var SETUP_OPT_PATH = 0x01n;
|
|
29
|
+
var SETUP_OPT_AUTHORIZATION_TOKEN = 0x03n;
|
|
31
30
|
var SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE = 0x04n;
|
|
32
31
|
var SETUP_OPT_AUTHORITY = 0x05n;
|
|
33
32
|
var SETUP_OPT_MOQT_IMPLEMENTATION = 0x07n;
|
|
@@ -57,11 +56,56 @@ var MESSAGE_ID_MAP = new Map(
|
|
|
57
56
|
|
|
58
57
|
// src/drafts/draft17/data-streams.ts
|
|
59
58
|
var FETCH_STREAM_TYPE = 0x05n;
|
|
59
|
+
var OBJPROP_PRIOR_GROUP_ID_GAP = 0x3cn;
|
|
60
|
+
var OBJPROP_PRIOR_OBJECT_ID_GAP = 0x3en;
|
|
61
|
+
var KNOWN_OBJ_PROPS = /* @__PURE__ */ new Map([
|
|
62
|
+
[OBJPROP_PRIOR_OBJECT_ID_GAP, "prior_object_id_gap"],
|
|
63
|
+
[OBJPROP_PRIOR_GROUP_ID_GAP, "prior_group_id_gap"]
|
|
64
|
+
]);
|
|
65
|
+
function decodeObjectProperties(r, propsLength) {
|
|
66
|
+
const endOff = r.offset + propsLength;
|
|
67
|
+
const props = {};
|
|
68
|
+
let prevType = 0n;
|
|
69
|
+
while (r.offset < endOff) {
|
|
70
|
+
const delta = r.readVarInt();
|
|
71
|
+
const propType = prevType + delta;
|
|
72
|
+
prevType = propType;
|
|
73
|
+
if (propType % 2n === 0n) {
|
|
74
|
+
const value = r.readVarInt();
|
|
75
|
+
const name = KNOWN_OBJ_PROPS.get(propType) ?? `0x${propType.toString(16)}`;
|
|
76
|
+
props[name] = value;
|
|
77
|
+
} else {
|
|
78
|
+
const length = Number(r.readVarInt());
|
|
79
|
+
r.readBytes(length);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return props;
|
|
83
|
+
}
|
|
84
|
+
function encodeObjectProperties(props, w) {
|
|
85
|
+
const reverseMap = /* @__PURE__ */ new Map();
|
|
86
|
+
for (const [id, name] of KNOWN_OBJ_PROPS) {
|
|
87
|
+
reverseMap.set(name, id);
|
|
88
|
+
}
|
|
89
|
+
const entries = [];
|
|
90
|
+
for (const [name, value] of Object.entries(props)) {
|
|
91
|
+
const typeId = reverseMap.get(name);
|
|
92
|
+
if (typeId !== void 0) {
|
|
93
|
+
entries.push({ type: typeId, value });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
entries.sort((a, b) => a.type < b.type ? -1 : a.type > b.type ? 1 : 0);
|
|
97
|
+
let prevType = 0n;
|
|
98
|
+
for (const entry of entries) {
|
|
99
|
+
w.writeVarInt(entry.type - prevType);
|
|
100
|
+
w.writeVarInt(entry.value);
|
|
101
|
+
prevType = entry.type;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
60
104
|
function encodeSubgroupStream(stream) {
|
|
61
105
|
const w = new BufferWriter();
|
|
62
106
|
const streamType = stream.headerType;
|
|
63
107
|
w.writeVarInt(BigInt(streamType));
|
|
64
|
-
const
|
|
108
|
+
const propertiesPresent = (streamType & 1) !== 0;
|
|
65
109
|
const hasSubgroupField = (streamType & 4) !== 0;
|
|
66
110
|
const hasPriority = streamType < 48;
|
|
67
111
|
w.writeVarInt(stream.trackAlias);
|
|
@@ -76,9 +120,16 @@ function encodeSubgroupStream(stream) {
|
|
|
76
120
|
for (const obj of stream.objects) {
|
|
77
121
|
const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
|
|
78
122
|
w.writeVarInt(delta);
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
|
|
123
|
+
if (propertiesPresent) {
|
|
124
|
+
if (obj.objectProperties && Object.keys(obj.objectProperties).length > 0) {
|
|
125
|
+
const tmpW = new BufferWriter(32);
|
|
126
|
+
encodeObjectProperties(obj.objectProperties, tmpW);
|
|
127
|
+
const raw = tmpW.finish();
|
|
128
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
129
|
+
w.writeBytes(raw);
|
|
130
|
+
} else {
|
|
131
|
+
w.writeVarInt(0n);
|
|
132
|
+
}
|
|
82
133
|
}
|
|
83
134
|
w.writeVarInt(BigInt(obj.payloadLength));
|
|
84
135
|
if (obj.payloadLength === 0) {
|
|
@@ -99,12 +150,24 @@ function encodeDatagram(dg) {
|
|
|
99
150
|
const objectIdAbsent = (dgType & 4) !== 0;
|
|
100
151
|
const isStatus = (dgType & 32) !== 0;
|
|
101
152
|
const defaultPriority = (dgType & 8) !== 0;
|
|
153
|
+
const propertiesPresent = (dgType & 1) !== 0;
|
|
102
154
|
if (!objectIdAbsent) {
|
|
103
155
|
w.writeVarInt(dg.objectId);
|
|
104
156
|
}
|
|
105
157
|
if (!defaultPriority) {
|
|
106
158
|
w.writeUint8(dg.publisherPriority);
|
|
107
159
|
}
|
|
160
|
+
if (propertiesPresent) {
|
|
161
|
+
if (dg.objectProperties && Object.keys(dg.objectProperties).length > 0) {
|
|
162
|
+
const tmpW = new BufferWriter(32);
|
|
163
|
+
encodeObjectProperties(dg.objectProperties, tmpW);
|
|
164
|
+
const raw = tmpW.finish();
|
|
165
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
166
|
+
w.writeBytes(raw);
|
|
167
|
+
} else {
|
|
168
|
+
w.writeVarInt(0n);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
108
171
|
if (isStatus) {
|
|
109
172
|
w.writeVarInt(dg.objectStatus ?? 0n);
|
|
110
173
|
} else {
|
|
@@ -123,6 +186,25 @@ function encodeFetchStream(stream) {
|
|
|
123
186
|
w.writeVarInt(obj.groupId);
|
|
124
187
|
w.writeVarInt(obj.objectId);
|
|
125
188
|
w.writeVarInt(BigInt(obj.payloadLength));
|
|
189
|
+
} else if (flags & 64) {
|
|
190
|
+
if (flags & 8) w.writeVarInt(obj.groupId);
|
|
191
|
+
if (flags & 4) w.writeVarInt(obj.objectId);
|
|
192
|
+
if (flags & 16) w.writeUint8(obj.publisherPriority);
|
|
193
|
+
if (flags & 32) {
|
|
194
|
+
if (obj.objectProperties && Object.keys(obj.objectProperties).length > 0) {
|
|
195
|
+
const tmpW = new BufferWriter(32);
|
|
196
|
+
encodeObjectProperties(obj.objectProperties, tmpW);
|
|
197
|
+
const raw = tmpW.finish();
|
|
198
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
199
|
+
w.writeBytes(raw);
|
|
200
|
+
} else {
|
|
201
|
+
w.writeVarInt(0n);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
w.writeVarInt(BigInt(obj.payloadLength));
|
|
205
|
+
if (obj.payloadLength > 0) {
|
|
206
|
+
w.writeBytes(obj.payload);
|
|
207
|
+
}
|
|
126
208
|
} else {
|
|
127
209
|
if (flags & 8) w.writeVarInt(obj.groupId);
|
|
128
210
|
const subgroupEncoding = flags & 3;
|
|
@@ -130,8 +212,15 @@ function encodeFetchStream(stream) {
|
|
|
130
212
|
if (flags & 4) w.writeVarInt(obj.objectId);
|
|
131
213
|
if (flags & 16) w.writeUint8(obj.publisherPriority);
|
|
132
214
|
if (flags & 32) {
|
|
133
|
-
|
|
134
|
-
|
|
215
|
+
if (obj.objectProperties && Object.keys(obj.objectProperties).length > 0) {
|
|
216
|
+
const tmpW = new BufferWriter(32);
|
|
217
|
+
encodeObjectProperties(obj.objectProperties, tmpW);
|
|
218
|
+
const raw = tmpW.finish();
|
|
219
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
220
|
+
w.writeBytes(raw);
|
|
221
|
+
} else {
|
|
222
|
+
w.writeVarInt(0n);
|
|
223
|
+
}
|
|
135
224
|
}
|
|
136
225
|
w.writeVarInt(BigInt(obj.payloadLength));
|
|
137
226
|
if (obj.payloadLength > 0) {
|
|
@@ -155,10 +244,11 @@ function decodeSubgroupStream(bytes) {
|
|
|
155
244
|
)
|
|
156
245
|
};
|
|
157
246
|
}
|
|
158
|
-
const
|
|
247
|
+
const propertiesPresent = (streamType & 1) !== 0;
|
|
159
248
|
const hasSubgroupField = (streamType & 4) !== 0;
|
|
160
249
|
const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
|
|
161
250
|
const hasPriority = streamType < 48;
|
|
251
|
+
const endOfGroup = (streamType & 8) !== 0;
|
|
162
252
|
const trackAlias = r.readVarInt();
|
|
163
253
|
const groupId = r.readVarInt();
|
|
164
254
|
let subgroupId = 0n;
|
|
@@ -185,10 +275,13 @@ function decodeSubgroupStream(bytes) {
|
|
|
185
275
|
} else {
|
|
186
276
|
objectId = prevObjectId + 1n + delta;
|
|
187
277
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
278
|
+
const extensionData = new Uint8Array(0);
|
|
279
|
+
let objectProperties;
|
|
280
|
+
if (propertiesPresent) {
|
|
281
|
+
const propsLen = Number(r.readVarInt());
|
|
282
|
+
if (propsLen > 0) {
|
|
283
|
+
objectProperties = decodeObjectProperties(r, propsLen);
|
|
284
|
+
}
|
|
192
285
|
}
|
|
193
286
|
const payloadLength = Number(r.readVarInt());
|
|
194
287
|
let payload;
|
|
@@ -202,22 +295,34 @@ function decodeSubgroupStream(bytes) {
|
|
|
202
295
|
payloadByteOffset = r.offset;
|
|
203
296
|
payload = r.readBytesView(payloadLength);
|
|
204
297
|
}
|
|
205
|
-
const obj = {
|
|
298
|
+
const obj = {
|
|
299
|
+
type: "object",
|
|
300
|
+
byteOffset,
|
|
301
|
+
payloadByteOffset,
|
|
302
|
+
objectId,
|
|
303
|
+
payloadLength,
|
|
304
|
+
payload,
|
|
305
|
+
extensionData
|
|
306
|
+
};
|
|
206
307
|
if (status !== void 0) obj.status = status;
|
|
308
|
+
if (objectProperties !== void 0)
|
|
309
|
+
obj.objectProperties = objectProperties;
|
|
207
310
|
objects.push(obj);
|
|
208
311
|
prevObjectId = objectId;
|
|
209
312
|
}
|
|
313
|
+
const result = {
|
|
314
|
+
type: "subgroup",
|
|
315
|
+
headerType: streamType,
|
|
316
|
+
trackAlias,
|
|
317
|
+
groupId,
|
|
318
|
+
subgroupId,
|
|
319
|
+
publisherPriority,
|
|
320
|
+
objects
|
|
321
|
+
};
|
|
322
|
+
if (endOfGroup) result.endOfGroup = true;
|
|
210
323
|
return {
|
|
211
324
|
ok: true,
|
|
212
|
-
value:
|
|
213
|
-
type: "subgroup",
|
|
214
|
-
headerType: streamType,
|
|
215
|
-
trackAlias,
|
|
216
|
-
groupId,
|
|
217
|
-
subgroupId,
|
|
218
|
-
publisherPriority,
|
|
219
|
-
objects
|
|
220
|
-
},
|
|
325
|
+
value: result,
|
|
221
326
|
bytesRead: r.offset
|
|
222
327
|
};
|
|
223
328
|
} catch (e) {
|
|
@@ -233,6 +338,7 @@ function decodeDatagram(bytes) {
|
|
|
233
338
|
const endOfGroup = (dgType & 2) !== 0;
|
|
234
339
|
const isStatus = (dgType & 32) !== 0;
|
|
235
340
|
const defaultPriority = (dgType & 8) !== 0;
|
|
341
|
+
const propertiesPresent = (dgType & 1) !== 0;
|
|
236
342
|
const trackAlias = r.readVarInt();
|
|
237
343
|
const groupId = r.readVarInt();
|
|
238
344
|
let objectId = 0n;
|
|
@@ -243,6 +349,13 @@ function decodeDatagram(bytes) {
|
|
|
243
349
|
if (!defaultPriority) {
|
|
244
350
|
publisherPriority = r.readUint8();
|
|
245
351
|
}
|
|
352
|
+
let objectProperties;
|
|
353
|
+
if (propertiesPresent) {
|
|
354
|
+
const propsLen = Number(r.readVarInt());
|
|
355
|
+
if (propsLen > 0) {
|
|
356
|
+
objectProperties = decodeObjectProperties(r, propsLen);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
246
359
|
let objectStatus;
|
|
247
360
|
let payload;
|
|
248
361
|
if (isStatus) {
|
|
@@ -265,6 +378,8 @@ function decodeDatagram(bytes) {
|
|
|
265
378
|
if (endOfGroup) result.endOfGroup = true;
|
|
266
379
|
if (objectStatus !== void 0)
|
|
267
380
|
result.objectStatus = objectStatus;
|
|
381
|
+
if (objectProperties !== void 0)
|
|
382
|
+
result.objectProperties = objectProperties;
|
|
268
383
|
return { ok: true, value: result, bytesRead: r.offset };
|
|
269
384
|
} catch (e) {
|
|
270
385
|
if (e instanceof DecodeError) return { ok: false, error: e };
|
|
@@ -301,7 +416,7 @@ function decodeFetchStream(bytes) {
|
|
|
301
416
|
let payloadLength;
|
|
302
417
|
let payload;
|
|
303
418
|
let payloadByteOffset;
|
|
304
|
-
|
|
419
|
+
const extensionData = new Uint8Array(0);
|
|
305
420
|
if (flags >= 128) {
|
|
306
421
|
if (flags !== 140 && flags !== 268) {
|
|
307
422
|
return {
|
|
@@ -318,22 +433,56 @@ function decodeFetchStream(bytes) {
|
|
|
318
433
|
payloadLength = Number(r.readVarInt());
|
|
319
434
|
payloadByteOffset = r.offset;
|
|
320
435
|
payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
436
|
+
} else if (flags & 64) {
|
|
437
|
+
const objectIdPresent = (flags & 4) !== 0;
|
|
438
|
+
const groupIdPresent = (flags & 8) !== 0;
|
|
439
|
+
const priorityPresent = (flags & 16) !== 0;
|
|
440
|
+
const propsPresent = (flags & 32) !== 0;
|
|
441
|
+
if (groupIdPresent) {
|
|
442
|
+
groupId = r.readVarInt();
|
|
443
|
+
}
|
|
444
|
+
if (objectIdPresent) {
|
|
445
|
+
objectId = r.readVarInt();
|
|
446
|
+
}
|
|
447
|
+
if (priorityPresent) {
|
|
448
|
+
prevPriority = r.readUint8();
|
|
449
|
+
}
|
|
450
|
+
let objectProperties;
|
|
451
|
+
if (propsPresent) {
|
|
452
|
+
const propsLen = Number(r.readVarInt());
|
|
453
|
+
if (propsLen > 0) {
|
|
454
|
+
objectProperties = decodeObjectProperties(r, propsLen);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
payloadLength = Number(r.readVarInt());
|
|
458
|
+
payloadByteOffset = r.offset;
|
|
459
|
+
payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
460
|
+
const obj2 = {
|
|
461
|
+
type: "object",
|
|
462
|
+
byteOffset,
|
|
463
|
+
payloadByteOffset,
|
|
464
|
+
serializationFlags: flags,
|
|
465
|
+
groupId,
|
|
466
|
+
subgroupId: 0n,
|
|
467
|
+
objectId,
|
|
468
|
+
publisherPriority: prevPriority,
|
|
469
|
+
payloadLength,
|
|
470
|
+
payload,
|
|
471
|
+
extensionData
|
|
472
|
+
};
|
|
473
|
+
if (objectProperties)
|
|
474
|
+
obj2.objectProperties = objectProperties;
|
|
475
|
+
objects.push(obj2);
|
|
476
|
+
prevGroupId = groupId;
|
|
477
|
+
prevObjectId = objectId;
|
|
478
|
+
first = false;
|
|
479
|
+
continue;
|
|
321
480
|
} else {
|
|
322
481
|
const subgroupEncoding = flags & 3;
|
|
323
482
|
const objectIdPresent = (flags & 4) !== 0;
|
|
324
483
|
const groupIdPresent = (flags & 8) !== 0;
|
|
325
484
|
const priorityPresent = (flags & 16) !== 0;
|
|
326
|
-
const
|
|
327
|
-
if (flags & 64) {
|
|
328
|
-
return {
|
|
329
|
-
ok: false,
|
|
330
|
-
error: new DecodeError(
|
|
331
|
-
"CONSTRAINT_VIOLATION",
|
|
332
|
-
"Reserved bits set in fetch object flags",
|
|
333
|
-
r.offset
|
|
334
|
-
)
|
|
335
|
-
};
|
|
336
|
-
}
|
|
485
|
+
const propsPresent = (flags & 32) !== 0;
|
|
337
486
|
if (groupIdPresent) {
|
|
338
487
|
groupId = r.readVarInt();
|
|
339
488
|
} else if (first) {
|
|
@@ -390,15 +539,38 @@ function decodeFetchStream(bytes) {
|
|
|
390
539
|
if (priorityPresent) {
|
|
391
540
|
prevPriority = r.readUint8();
|
|
392
541
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
542
|
+
let objectProperties;
|
|
543
|
+
if (propsPresent) {
|
|
544
|
+
const propsLen = Number(r.readVarInt());
|
|
545
|
+
if (propsLen > 0) {
|
|
546
|
+
objectProperties = decodeObjectProperties(r, propsLen);
|
|
397
547
|
}
|
|
398
548
|
}
|
|
399
549
|
payloadLength = Number(r.readVarInt());
|
|
400
550
|
payloadByteOffset = r.offset;
|
|
401
551
|
payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
552
|
+
if (objectProperties) {
|
|
553
|
+
const obj2 = {
|
|
554
|
+
type: "object",
|
|
555
|
+
byteOffset,
|
|
556
|
+
payloadByteOffset,
|
|
557
|
+
serializationFlags: flags,
|
|
558
|
+
groupId,
|
|
559
|
+
subgroupId,
|
|
560
|
+
objectId,
|
|
561
|
+
publisherPriority: prevPriority,
|
|
562
|
+
payloadLength,
|
|
563
|
+
payload,
|
|
564
|
+
extensionData
|
|
565
|
+
};
|
|
566
|
+
obj2.objectProperties = objectProperties;
|
|
567
|
+
objects.push(obj2);
|
|
568
|
+
prevGroupId = groupId;
|
|
569
|
+
prevSubgroupId = subgroupId;
|
|
570
|
+
prevObjectId = objectId;
|
|
571
|
+
first = false;
|
|
572
|
+
continue;
|
|
573
|
+
}
|
|
402
574
|
}
|
|
403
575
|
const obj = {
|
|
404
576
|
type: "object",
|
|
@@ -525,7 +697,15 @@ function createSubgroupStreamDecoder() {
|
|
|
525
697
|
const payloadLength = Number(r.readVarInt());
|
|
526
698
|
const payloadByteOffset = r.offset;
|
|
527
699
|
const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
528
|
-
controller.enqueue({
|
|
700
|
+
controller.enqueue({
|
|
701
|
+
type: "object",
|
|
702
|
+
objectId,
|
|
703
|
+
payloadLength,
|
|
704
|
+
payload,
|
|
705
|
+
extensionData,
|
|
706
|
+
byteOffset: 0,
|
|
707
|
+
payloadByteOffset
|
|
708
|
+
});
|
|
529
709
|
offset += r.offset;
|
|
530
710
|
prevObjectId = objectId;
|
|
531
711
|
} catch (e) {
|
|
@@ -606,7 +786,15 @@ function createFetchStreamDecoder() {
|
|
|
606
786
|
const payloadLength = Number(r.readVarInt());
|
|
607
787
|
const payloadByteOffset = r.offset;
|
|
608
788
|
const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
|
|
609
|
-
controller.enqueue({
|
|
789
|
+
controller.enqueue({
|
|
790
|
+
type: "object",
|
|
791
|
+
objectId,
|
|
792
|
+
payloadLength,
|
|
793
|
+
payload,
|
|
794
|
+
extensionData,
|
|
795
|
+
byteOffset: 0,
|
|
796
|
+
payloadByteOffset
|
|
797
|
+
});
|
|
610
798
|
offset += r.offset;
|
|
611
799
|
} catch (e) {
|
|
612
800
|
if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
|
|
@@ -722,6 +910,18 @@ function encodeSetupOptions(opts, writer) {
|
|
|
722
910
|
}
|
|
723
911
|
});
|
|
724
912
|
}
|
|
913
|
+
if (opts.authorization_token !== void 0) {
|
|
914
|
+
entries.push({
|
|
915
|
+
type: SETUP_OPT_AUTHORIZATION_TOKEN,
|
|
916
|
+
encode: (w) => {
|
|
917
|
+
const tmpW = new BufferWriter(64);
|
|
918
|
+
encodeAuthorizationToken(opts.authorization_token, tmpW);
|
|
919
|
+
const raw = tmpW.finish();
|
|
920
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
921
|
+
w.writeBytes(raw);
|
|
922
|
+
}
|
|
923
|
+
});
|
|
924
|
+
}
|
|
725
925
|
if (opts.max_auth_token_cache_size !== void 0) {
|
|
726
926
|
entries.push({
|
|
727
927
|
type: SETUP_OPT_MAX_AUTH_TOKEN_CACHE_SIZE,
|
|
@@ -802,27 +1002,95 @@ function decodeSetupOptions(reader, payloadEnd) {
|
|
|
802
1002
|
const bytes = reader.readBytes(length);
|
|
803
1003
|
if (optType === SETUP_OPT_PATH) {
|
|
804
1004
|
result.path = textDecoder.decode(bytes);
|
|
1005
|
+
} else if (optType === SETUP_OPT_AUTHORIZATION_TOKEN) {
|
|
1006
|
+
result.authorization_token = decodeAuthorizationToken(new BufferReader(bytes));
|
|
805
1007
|
} else if (optType === SETUP_OPT_AUTHORITY) {
|
|
806
1008
|
result.authority = textDecoder.decode(bytes);
|
|
807
1009
|
} else if (optType === SETUP_OPT_MOQT_IMPLEMENTATION) {
|
|
808
1010
|
result.moqt_implementation = textDecoder.decode(bytes);
|
|
809
1011
|
} else {
|
|
810
|
-
unknown.push({
|
|
1012
|
+
unknown.push({
|
|
1013
|
+
id: `0x${optType.toString(16)}`,
|
|
1014
|
+
length,
|
|
1015
|
+
raw_hex: bytesToHex(bytes)
|
|
1016
|
+
});
|
|
811
1017
|
}
|
|
812
1018
|
}
|
|
813
1019
|
}
|
|
814
1020
|
if (unknown.length > 0) result.unknown = unknown;
|
|
815
1021
|
return result;
|
|
816
1022
|
}
|
|
1023
|
+
function encodeAuthorizationToken(token, w) {
|
|
1024
|
+
const aliasType = Number(token.alias_type);
|
|
1025
|
+
w.writeVarInt(token.alias_type);
|
|
1026
|
+
if (aliasType === 0 || aliasType === 1 || aliasType === 2) {
|
|
1027
|
+
w.writeVarInt(token.token_alias ?? 0n);
|
|
1028
|
+
}
|
|
1029
|
+
if (aliasType === 1 || aliasType === 3) {
|
|
1030
|
+
w.writeVarInt(token.token_type ?? 0n);
|
|
1031
|
+
const encoded = textEncoder.encode(token.token_value ?? "");
|
|
1032
|
+
w.writeVarInt(BigInt(encoded.byteLength));
|
|
1033
|
+
w.writeBytes(encoded);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
function decodeAuthorizationToken(r) {
|
|
1037
|
+
const alias_type = r.readVarInt();
|
|
1038
|
+
const aliasType = Number(alias_type);
|
|
1039
|
+
const result = { alias_type };
|
|
1040
|
+
if (aliasType === 0 || aliasType === 1 || aliasType === 2) {
|
|
1041
|
+
;
|
|
1042
|
+
result.token_alias = r.readVarInt();
|
|
1043
|
+
}
|
|
1044
|
+
if (aliasType === 1 || aliasType === 3) {
|
|
1045
|
+
;
|
|
1046
|
+
result.token_type = r.readVarInt();
|
|
1047
|
+
const len = Number(r.readVarInt());
|
|
1048
|
+
const bytes = r.readBytes(len);
|
|
1049
|
+
result.token_value = textDecoder.decode(bytes);
|
|
1050
|
+
}
|
|
1051
|
+
return result;
|
|
1052
|
+
}
|
|
1053
|
+
var PARAM_DELIVERY_TIMEOUT = 0x02n;
|
|
1054
|
+
var PARAM_AUTHORIZATION_TOKEN = 0x03n;
|
|
1055
|
+
var PARAM_RENDEZVOUS_TIMEOUT = 0x04n;
|
|
817
1056
|
var PARAM_EXPIRES = 0x08n;
|
|
818
1057
|
var PARAM_LARGEST_OBJECT = 0x09n;
|
|
1058
|
+
var PARAM_FORWARD = 0x10n;
|
|
819
1059
|
var PARAM_SUBSCRIBER_PRIORITY = 0x20n;
|
|
820
1060
|
var PARAM_SUBSCRIPTION_FILTER = 0x21n;
|
|
821
1061
|
var PARAM_GROUP_ORDER = 0x22n;
|
|
1062
|
+
var PARAM_NEW_GROUP_REQUEST = 0x32n;
|
|
822
1063
|
function encodeParams(params, writer) {
|
|
823
1064
|
const entries = [];
|
|
1065
|
+
if (params.delivery_timeout !== void 0) {
|
|
1066
|
+
entries.push({
|
|
1067
|
+
type: PARAM_DELIVERY_TIMEOUT,
|
|
1068
|
+
encode: (w) => w.writeVarInt(params.delivery_timeout)
|
|
1069
|
+
});
|
|
1070
|
+
}
|
|
1071
|
+
if (params.authorization_token !== void 0) {
|
|
1072
|
+
entries.push({
|
|
1073
|
+
type: PARAM_AUTHORIZATION_TOKEN,
|
|
1074
|
+
encode: (w) => {
|
|
1075
|
+
const tmpW = new BufferWriter(64);
|
|
1076
|
+
encodeAuthorizationToken(params.authorization_token, tmpW);
|
|
1077
|
+
const raw = tmpW.finish();
|
|
1078
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
1079
|
+
w.writeBytes(raw);
|
|
1080
|
+
}
|
|
1081
|
+
});
|
|
1082
|
+
}
|
|
1083
|
+
if (params.rendezvous_timeout !== void 0) {
|
|
1084
|
+
entries.push({
|
|
1085
|
+
type: PARAM_RENDEZVOUS_TIMEOUT,
|
|
1086
|
+
encode: (w) => w.writeVarInt(params.rendezvous_timeout)
|
|
1087
|
+
});
|
|
1088
|
+
}
|
|
824
1089
|
if (params.expires !== void 0) {
|
|
825
|
-
entries.push({
|
|
1090
|
+
entries.push({
|
|
1091
|
+
type: PARAM_EXPIRES,
|
|
1092
|
+
encode: (w) => w.writeVarInt(params.expires)
|
|
1093
|
+
});
|
|
826
1094
|
}
|
|
827
1095
|
if (params.largest_object !== void 0) {
|
|
828
1096
|
entries.push({
|
|
@@ -833,6 +1101,12 @@ function encodeParams(params, writer) {
|
|
|
833
1101
|
}
|
|
834
1102
|
});
|
|
835
1103
|
}
|
|
1104
|
+
if (params.forward !== void 0) {
|
|
1105
|
+
entries.push({
|
|
1106
|
+
type: PARAM_FORWARD,
|
|
1107
|
+
encode: (w) => w.writeVarInt(params.forward)
|
|
1108
|
+
});
|
|
1109
|
+
}
|
|
836
1110
|
if (params.subscriber_priority !== void 0) {
|
|
837
1111
|
entries.push({
|
|
838
1112
|
type: PARAM_SUBSCRIBER_PRIORITY,
|
|
@@ -865,6 +1139,12 @@ function encodeParams(params, writer) {
|
|
|
865
1139
|
encode: (w) => w.writeUint8(Number(params.group_order))
|
|
866
1140
|
});
|
|
867
1141
|
}
|
|
1142
|
+
if (params.new_group_request !== void 0) {
|
|
1143
|
+
entries.push({
|
|
1144
|
+
type: PARAM_NEW_GROUP_REQUEST,
|
|
1145
|
+
encode: (w) => w.writeVarInt(params.new_group_request)
|
|
1146
|
+
});
|
|
1147
|
+
}
|
|
868
1148
|
if (params.unknown) {
|
|
869
1149
|
for (const u of params.unknown) {
|
|
870
1150
|
const id = BigInt(u.id);
|
|
@@ -895,7 +1175,15 @@ function decodeParams(reader) {
|
|
|
895
1175
|
const delta = reader.readVarInt();
|
|
896
1176
|
const paramType = prevType + delta;
|
|
897
1177
|
prevType = paramType;
|
|
898
|
-
if (paramType ===
|
|
1178
|
+
if (paramType === PARAM_DELIVERY_TIMEOUT) {
|
|
1179
|
+
result.delivery_timeout = reader.readVarInt();
|
|
1180
|
+
} else if (paramType === PARAM_AUTHORIZATION_TOKEN) {
|
|
1181
|
+
const length = Number(reader.readVarInt());
|
|
1182
|
+
const bytes = reader.readBytes(length);
|
|
1183
|
+
result.authorization_token = decodeAuthorizationToken(new BufferReader(bytes));
|
|
1184
|
+
} else if (paramType === PARAM_RENDEZVOUS_TIMEOUT) {
|
|
1185
|
+
result.rendezvous_timeout = reader.readVarInt();
|
|
1186
|
+
} else if (paramType === PARAM_EXPIRES) {
|
|
899
1187
|
result.expires = reader.readVarInt();
|
|
900
1188
|
} else if (paramType === PARAM_LARGEST_OBJECT) {
|
|
901
1189
|
const group = reader.readVarInt();
|
|
@@ -918,8 +1206,12 @@ function decodeParams(reader) {
|
|
|
918
1206
|
const consumed = reader.offset - startOff;
|
|
919
1207
|
if (consumed < length) reader.readBytes(length - consumed);
|
|
920
1208
|
result.subscription_filter = filter;
|
|
1209
|
+
} else if (paramType === PARAM_FORWARD) {
|
|
1210
|
+
result.forward = reader.readVarInt();
|
|
921
1211
|
} else if (paramType === PARAM_GROUP_ORDER) {
|
|
922
1212
|
result.group_order = BigInt(reader.readUint8());
|
|
1213
|
+
} else if (paramType === PARAM_NEW_GROUP_REQUEST) {
|
|
1214
|
+
result.new_group_request = reader.readVarInt();
|
|
923
1215
|
} else {
|
|
924
1216
|
if (paramType % 2n === 0n) {
|
|
925
1217
|
const value = reader.readVarInt();
|
|
@@ -934,29 +1226,89 @@ function decodeParams(reader) {
|
|
|
934
1226
|
} else {
|
|
935
1227
|
const length = Number(reader.readVarInt());
|
|
936
1228
|
const bytes = reader.readBytes(length);
|
|
937
|
-
unknown.push({
|
|
1229
|
+
unknown.push({
|
|
1230
|
+
id: `0x${paramType.toString(16)}`,
|
|
1231
|
+
length,
|
|
1232
|
+
raw_hex: bytesToHex(bytes)
|
|
1233
|
+
});
|
|
938
1234
|
}
|
|
939
1235
|
}
|
|
940
1236
|
}
|
|
941
1237
|
if (unknown.length > 0) result.unknown = unknown;
|
|
942
1238
|
return result;
|
|
943
1239
|
}
|
|
1240
|
+
var TPROP_DELIVERY_TIMEOUT = 0x02n;
|
|
1241
|
+
var TPROP_MAX_CACHE_DURATION = 0x04n;
|
|
1242
|
+
var TPROP_IMMUTABLE_PROPERTIES = 0x0bn;
|
|
1243
|
+
var TPROP_DEFAULT_PUBLISHER_PRIORITY = 0x0en;
|
|
1244
|
+
var TPROP_DEFAULT_PUBLISHER_GROUP_ORDER = 0x22n;
|
|
1245
|
+
var TPROP_DYNAMIC_GROUPS = 0x30n;
|
|
944
1246
|
function encodeTrackProperties(props, writer) {
|
|
945
|
-
|
|
946
|
-
|
|
1247
|
+
const entries = [];
|
|
1248
|
+
if (props.delivery_timeout !== void 0) {
|
|
1249
|
+
entries.push({
|
|
1250
|
+
type: TPROP_DELIVERY_TIMEOUT,
|
|
1251
|
+
encode: (w) => w.writeVarInt(props.delivery_timeout)
|
|
1252
|
+
});
|
|
1253
|
+
}
|
|
1254
|
+
if (props.max_cache_duration !== void 0) {
|
|
1255
|
+
entries.push({
|
|
1256
|
+
type: TPROP_MAX_CACHE_DURATION,
|
|
1257
|
+
encode: (w) => w.writeVarInt(props.max_cache_duration)
|
|
1258
|
+
});
|
|
1259
|
+
}
|
|
1260
|
+
if (props.immutable_properties !== void 0) {
|
|
1261
|
+
entries.push({
|
|
1262
|
+
type: TPROP_IMMUTABLE_PROPERTIES,
|
|
1263
|
+
encode: (w) => {
|
|
1264
|
+
const raw = hexToBytes(props.immutable_properties);
|
|
1265
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
1266
|
+
w.writeBytes(raw);
|
|
1267
|
+
}
|
|
1268
|
+
});
|
|
1269
|
+
}
|
|
1270
|
+
if (props.default_publisher_priority !== void 0) {
|
|
1271
|
+
entries.push({
|
|
1272
|
+
type: TPROP_DEFAULT_PUBLISHER_PRIORITY,
|
|
1273
|
+
encode: (w) => w.writeVarInt(props.default_publisher_priority)
|
|
1274
|
+
});
|
|
1275
|
+
}
|
|
1276
|
+
if (props.default_publisher_group_order !== void 0) {
|
|
1277
|
+
entries.push({
|
|
1278
|
+
type: TPROP_DEFAULT_PUBLISHER_GROUP_ORDER,
|
|
1279
|
+
encode: (w) => w.writeVarInt(props.default_publisher_group_order)
|
|
1280
|
+
});
|
|
1281
|
+
}
|
|
1282
|
+
if (props.dynamic_groups !== void 0) {
|
|
1283
|
+
entries.push({
|
|
1284
|
+
type: TPROP_DYNAMIC_GROUPS,
|
|
1285
|
+
encode: (w) => w.writeVarInt(props.dynamic_groups)
|
|
1286
|
+
});
|
|
1287
|
+
}
|
|
1288
|
+
if (props.unknown) {
|
|
1289
|
+
for (const u of props.unknown) {
|
|
1290
|
+
const id = BigInt(u.id);
|
|
1291
|
+
entries.push({
|
|
1292
|
+
type: id,
|
|
1293
|
+
encode: (w) => {
|
|
1294
|
+
if (id % 2n === 0n) {
|
|
1295
|
+
const raw = hexToBytes(u.raw_hex);
|
|
1296
|
+
const tmpReader = new BufferReader(raw);
|
|
1297
|
+
w.writeVarInt(tmpReader.readVarInt());
|
|
1298
|
+
} else {
|
|
1299
|
+
const raw = hexToBytes(u.raw_hex);
|
|
1300
|
+
w.writeVarInt(BigInt(raw.byteLength));
|
|
1301
|
+
w.writeBytes(raw);
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
});
|
|
1305
|
+
}
|
|
1306
|
+
}
|
|
947
1307
|
entries.sort((a, b) => a.type < b.type ? -1 : a.type > b.type ? 1 : 0);
|
|
948
1308
|
let prevType = 0n;
|
|
949
1309
|
for (const entry of entries) {
|
|
950
1310
|
writer.writeVarInt(entry.type - prevType);
|
|
951
|
-
|
|
952
|
-
const raw = hexToBytes(entry.raw.raw_hex);
|
|
953
|
-
const tmpReader = new BufferReader(raw);
|
|
954
|
-
writer.writeVarInt(tmpReader.readVarInt());
|
|
955
|
-
} else {
|
|
956
|
-
const raw = hexToBytes(entry.raw.raw_hex);
|
|
957
|
-
writer.writeVarInt(BigInt(raw.byteLength));
|
|
958
|
-
writer.writeBytes(raw);
|
|
959
|
-
}
|
|
1311
|
+
entry.encode(writer);
|
|
960
1312
|
prevType = entry.type;
|
|
961
1313
|
}
|
|
962
1314
|
}
|
|
@@ -970,18 +1322,38 @@ function decodeTrackProperties(reader, payloadEnd) {
|
|
|
970
1322
|
prevType = propType;
|
|
971
1323
|
if (propType % 2n === 0n) {
|
|
972
1324
|
const value = reader.readVarInt();
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1325
|
+
if (propType === TPROP_DELIVERY_TIMEOUT) {
|
|
1326
|
+
result.delivery_timeout = value;
|
|
1327
|
+
} else if (propType === TPROP_MAX_CACHE_DURATION) {
|
|
1328
|
+
result.max_cache_duration = value;
|
|
1329
|
+
} else if (propType === TPROP_DEFAULT_PUBLISHER_PRIORITY) {
|
|
1330
|
+
result.default_publisher_priority = value;
|
|
1331
|
+
} else if (propType === TPROP_DEFAULT_PUBLISHER_GROUP_ORDER) {
|
|
1332
|
+
result.default_publisher_group_order = value;
|
|
1333
|
+
} else if (propType === TPROP_DYNAMIC_GROUPS) {
|
|
1334
|
+
result.dynamic_groups = value;
|
|
1335
|
+
} else {
|
|
1336
|
+
const tmpWriter = new BufferWriter(16);
|
|
1337
|
+
tmpWriter.writeVarInt(value);
|
|
1338
|
+
const raw = tmpWriter.finish();
|
|
1339
|
+
unknown.push({
|
|
1340
|
+
id: `0x${propType.toString(16)}`,
|
|
1341
|
+
length: raw.byteLength,
|
|
1342
|
+
raw_hex: bytesToHex(raw)
|
|
1343
|
+
});
|
|
1344
|
+
}
|
|
981
1345
|
} else {
|
|
982
1346
|
const length = Number(reader.readVarInt());
|
|
983
1347
|
const bytes = reader.readBytes(length);
|
|
984
|
-
|
|
1348
|
+
if (propType === TPROP_IMMUTABLE_PROPERTIES) {
|
|
1349
|
+
result.immutable_properties = bytesToHex(bytes);
|
|
1350
|
+
} else {
|
|
1351
|
+
unknown.push({
|
|
1352
|
+
id: `0x${propType.toString(16)}`,
|
|
1353
|
+
length,
|
|
1354
|
+
raw_hex: bytesToHex(bytes)
|
|
1355
|
+
});
|
|
1356
|
+
}
|
|
985
1357
|
}
|
|
986
1358
|
}
|
|
987
1359
|
if (unknown.length > 0) result.unknown = unknown;
|
|
@@ -1120,7 +1492,12 @@ function decodeRequestUpdatePayload(r) {
|
|
|
1120
1492
|
const request_id = r.readVarInt();
|
|
1121
1493
|
const required_request_id_delta = r.readVarInt();
|
|
1122
1494
|
const parameters = decodeParams(r);
|
|
1123
|
-
return {
|
|
1495
|
+
return {
|
|
1496
|
+
type: "request_update",
|
|
1497
|
+
request_id,
|
|
1498
|
+
required_request_id_delta,
|
|
1499
|
+
parameters
|
|
1500
|
+
};
|
|
1124
1501
|
}
|
|
1125
1502
|
function decodePublishPayload(r, payloadEnd) {
|
|
1126
1503
|
const request_id = r.readVarInt();
|
|
@@ -1209,7 +1586,14 @@ function decodeFetchPayload(r) {
|
|
|
1209
1586
|
const start_object = r.readVarInt();
|
|
1210
1587
|
const end_group = r.readVarInt();
|
|
1211
1588
|
const end_object = r.readVarInt();
|
|
1212
|
-
standalone = {
|
|
1589
|
+
standalone = {
|
|
1590
|
+
track_namespace,
|
|
1591
|
+
track_name,
|
|
1592
|
+
start_group,
|
|
1593
|
+
start_object,
|
|
1594
|
+
end_group,
|
|
1595
|
+
end_object
|
|
1596
|
+
};
|
|
1213
1597
|
} else {
|
|
1214
1598
|
const joining_request_id = r.readVarInt();
|
|
1215
1599
|
const joining_start = r.readVarInt();
|
|
@@ -1232,7 +1616,14 @@ function decodeFetchOkPayload(r, payloadEnd) {
|
|
|
1232
1616
|
const end_object = r.readVarInt();
|
|
1233
1617
|
const parameters = decodeParams(r);
|
|
1234
1618
|
const track_properties = decodeTrackProperties(r, payloadEnd);
|
|
1235
|
-
return {
|
|
1619
|
+
return {
|
|
1620
|
+
type: "fetch_ok",
|
|
1621
|
+
end_of_track,
|
|
1622
|
+
end_group,
|
|
1623
|
+
end_object,
|
|
1624
|
+
parameters,
|
|
1625
|
+
track_properties
|
|
1626
|
+
};
|
|
1236
1627
|
}
|
|
1237
1628
|
function decodeTrackStatusPayload(r) {
|
|
1238
1629
|
const request_id = r.readVarInt();
|
|
@@ -1429,7 +1820,7 @@ function createStreamDecoder() {
|
|
|
1429
1820
|
}
|
|
1430
1821
|
function createDraft17Codec() {
|
|
1431
1822
|
return {
|
|
1432
|
-
draft: "
|
|
1823
|
+
draft: "17",
|
|
1433
1824
|
encodeMessage,
|
|
1434
1825
|
decodeMessage,
|
|
1435
1826
|
encodeSubgroupStream,
|