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