@moqtap/codec 0.8.1 → 0.10.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 (194) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +16 -4
  3. package/dist/{chunk-KCH4BQXK.cjs → chunk-AQ445VV7.cjs} +15 -9
  4. package/dist/{chunk-UZO5Z2XT.cjs → chunk-BIBMDTU5.cjs} +12 -6
  5. package/dist/chunk-BMJMY6FX.cjs +868 -0
  6. package/dist/{chunk-23KRITJ6.js → chunk-BX2N7TZM.js} +14 -8
  7. package/dist/{chunk-XQGEOFGE.js → chunk-CF5DDD3Q.js} +14 -8
  8. package/dist/chunk-FT3HDNIB.js +2374 -0
  9. package/dist/{chunk-TMXRYOBS.js → chunk-G53WYUXL.js} +13 -7
  10. package/dist/{chunk-JKMYAUGY.js → chunk-K2B3OVFK.js} +11 -8
  11. package/dist/{chunk-3YAR3I3S.js → chunk-KGDVC4O6.js} +36 -22
  12. package/dist/{chunk-VWXUT5R2.cjs → chunk-KTNERCTZ.cjs} +36 -22
  13. package/dist/{chunk-H6DTAIWM.js → chunk-L5DRACXS.js} +22 -16
  14. package/dist/{chunk-UA5XFP4O.cjs → chunk-OUNN4IQB.cjs} +14 -8
  15. package/dist/{chunk-NH4L6NIY.js → chunk-OZRK73NQ.js} +12 -6
  16. package/dist/{chunk-PU2KV7VP.cjs → chunk-RYKQXBG6.cjs} +12 -6
  17. package/dist/{chunk-EVCPBFSR.cjs → chunk-SDJTSMOW.cjs} +23 -17
  18. package/dist/chunk-T4VWPKDG.cjs +2374 -0
  19. package/dist/{chunk-2XH6PHXR.js → chunk-TSUZ6GJV.js} +12 -6
  20. package/dist/{chunk-QGIHC6BA.cjs → chunk-UKKDOOUO.cjs} +12 -9
  21. package/dist/{chunk-BV6MITLO.js → chunk-WCPENYNE.js} +14 -8
  22. package/dist/{chunk-IADVBKEJ.cjs → chunk-WCTMPDUX.cjs} +15 -9
  23. package/dist/chunk-WX5PU7HF.js +868 -0
  24. package/dist/{chunk-7ENEWAMZ.cjs → chunk-XCRCAUGI.cjs} +15 -9
  25. package/dist/{codec-BLYAy2OP.d.ts → codec--CVeqGQv.d.ts} +1 -1
  26. package/dist/{codec-BNS3gS77.d.ts → codec-08ZOr5wI.d.ts} +2 -2
  27. package/dist/{codec-DujHf55Z.d.ts → codec-BJ7BHuiZ.d.ts} +1 -1
  28. package/dist/{codec-CI0BjmHc.d.ts → codec-BNy5syCU.d.ts} +1 -1
  29. package/dist/{codec-N3g1lxQQ.d.cts → codec-Bd60SGKH.d.cts} +2 -2
  30. package/dist/{codec-xeuGZY77.d.cts → codec-BrTi4K7r.d.cts} +3 -3
  31. package/dist/{codec-DJmV04i0.d.ts → codec-Bux_Q40X.d.ts} +2 -2
  32. package/dist/{codec-BqqoYdh_.d.cts → codec-BxQTybUX.d.cts} +2 -2
  33. package/dist/{codec-D2JbI2tp.d.ts → codec-C3mdsGx3.d.ts} +2 -2
  34. package/dist/{codec-DQWQSam3.d.cts → codec-C6Mx4bwz.d.cts} +1 -1
  35. package/dist/{codec-DAePx2NL.d.ts → codec-CBdOIfMY.d.ts} +3 -3
  36. package/dist/codec-CFWu5KVT.d.cts +49 -0
  37. package/dist/{codec-CyApDKwf.d.cts → codec-CWnf8mn_.d.cts} +2 -2
  38. package/dist/{codec-DvcJgYKq.d.cts → codec-CXCjya_G.d.cts} +1 -1
  39. package/dist/{codec-BOyrk_C9.d.cts → codec-Cfo_z5ET.d.cts} +1 -1
  40. package/dist/{codec-v6Vloc7H.d.ts → codec-Cm3D261p.d.ts} +2 -2
  41. package/dist/codec-CwZ6OCPP.d.ts +49 -0
  42. package/dist/{codec-NMsTK0GX.d.cts → codec-Czejcmxr.d.cts} +2 -2
  43. package/dist/{codec-hvkJfCF5.d.cts → codec-DNmiG2e0.d.cts} +2 -2
  44. package/dist/{codec-CWj5iTxA.d.ts → codec-DOmAmFkI.d.ts} +2 -2
  45. package/dist/{codec-WwwUipaU.d.ts → codec-DaXjRrOV.d.ts} +2 -2
  46. package/dist/{codec-DplRgIKq.d.ts → codec-Dl_QIXMz.d.ts} +1 -1
  47. package/dist/{codec-D95gT98n.d.cts → codec-DzkdW4kO.d.cts} +1 -1
  48. package/dist/{codec-cou9XBMF.d.cts → codec-EvybrBuY.d.cts} +2 -2
  49. package/dist/{codec-DL0njGkL.d.ts → codec-alVA27Uc.d.ts} +2 -2
  50. package/dist/{codec-D89DWXbv.d.cts → codec-f7vxeVIS.d.cts} +2 -2
  51. package/dist/{codec-D47r_-Rl.d.ts → codec-gl4_QEva.d.ts} +2 -2
  52. package/dist/{codec-BOtv3R5j.d.cts → codec-guzqtfMk.d.cts} +2 -2
  53. package/dist/draft07-session.d.cts +3 -3
  54. package/dist/draft07-session.d.ts +3 -3
  55. package/dist/draft07.d.cts +3 -3
  56. package/dist/draft07.d.ts +3 -3
  57. package/dist/draft08-session.d.cts +3 -3
  58. package/dist/draft08-session.d.ts +3 -3
  59. package/dist/draft08.d.cts +4 -4
  60. package/dist/draft08.d.ts +4 -4
  61. package/dist/draft09-session.d.cts +3 -3
  62. package/dist/draft09-session.d.ts +3 -3
  63. package/dist/draft09.d.cts +4 -4
  64. package/dist/draft09.d.ts +4 -4
  65. package/dist/draft10-session.d.cts +3 -3
  66. package/dist/draft10-session.d.ts +3 -3
  67. package/dist/draft10.d.cts +4 -4
  68. package/dist/draft10.d.ts +4 -4
  69. package/dist/draft11-session.d.cts +4 -4
  70. package/dist/draft11-session.d.ts +4 -4
  71. package/dist/draft11.cjs +2 -2
  72. package/dist/draft11.d.cts +6 -6
  73. package/dist/draft11.d.ts +6 -6
  74. package/dist/draft11.js +1 -1
  75. package/dist/draft12-session.d.cts +4 -4
  76. package/dist/draft12-session.d.ts +4 -4
  77. package/dist/draft12.cjs +2 -2
  78. package/dist/draft12.d.cts +6 -6
  79. package/dist/draft12.d.ts +6 -6
  80. package/dist/draft12.js +1 -1
  81. package/dist/draft13-session.d.cts +4 -4
  82. package/dist/draft13-session.d.ts +4 -4
  83. package/dist/draft13.cjs +2 -2
  84. package/dist/draft13.d.cts +6 -6
  85. package/dist/draft13.d.ts +6 -6
  86. package/dist/draft13.js +1 -1
  87. package/dist/draft14-session.d.cts +4 -4
  88. package/dist/draft14-session.d.ts +4 -4
  89. package/dist/draft14.cjs +2 -2
  90. package/dist/draft14.d.cts +6 -6
  91. package/dist/draft14.d.ts +6 -6
  92. package/dist/draft14.js +1 -1
  93. package/dist/draft15-session.d.cts +4 -4
  94. package/dist/draft15-session.d.ts +4 -4
  95. package/dist/draft15.cjs +2 -2
  96. package/dist/draft15.d.cts +6 -6
  97. package/dist/draft15.d.ts +6 -6
  98. package/dist/draft15.js +1 -1
  99. package/dist/draft16-session.d.cts +4 -4
  100. package/dist/draft16-session.d.ts +4 -4
  101. package/dist/draft16.cjs +2 -2
  102. package/dist/draft16.d.cts +6 -6
  103. package/dist/draft16.d.ts +6 -6
  104. package/dist/draft16.js +1 -1
  105. package/dist/draft17-session.d.cts +4 -4
  106. package/dist/draft17-session.d.ts +4 -4
  107. package/dist/draft17.cjs +2 -2
  108. package/dist/draft17.d.cts +5 -5
  109. package/dist/draft17.d.ts +5 -5
  110. package/dist/draft17.js +1 -1
  111. package/dist/draft18-session.d.cts +4 -4
  112. package/dist/draft18-session.d.ts +4 -4
  113. package/dist/draft18.cjs +2 -2
  114. package/dist/draft18.d.cts +5 -5
  115. package/dist/draft18.d.ts +5 -5
  116. package/dist/draft18.js +1 -1
  117. package/dist/draft19-session.d.cts +4 -4
  118. package/dist/draft19-session.d.ts +4 -4
  119. package/dist/draft19.cjs +2 -2
  120. package/dist/draft19.d.cts +5 -5
  121. package/dist/draft19.d.ts +5 -5
  122. package/dist/draft19.js +1 -1
  123. package/dist/draft20-session.cjs +8 -0
  124. package/dist/draft20-session.d.cts +195 -0
  125. package/dist/draft20-session.d.ts +195 -0
  126. package/dist/draft20-session.js +8 -0
  127. package/dist/draft20.cjs +217 -0
  128. package/dist/draft20.d.cts +175 -0
  129. package/dist/draft20.d.ts +175 -0
  130. package/dist/draft20.js +217 -0
  131. package/dist/index.cjs +25 -19
  132. package/dist/index.d.cts +41 -26
  133. package/dist/index.d.ts +41 -26
  134. package/dist/index.js +16 -10
  135. package/dist/{session-types-KsqyVp6y.d.cts → session-types-B9idsih-.d.cts} +13 -1
  136. package/dist/{session-types-C0l_-Ups.d.ts → session-types-Dn7b3RZM.d.ts} +13 -1
  137. package/dist/session.cjs +5 -1
  138. package/dist/session.d.cts +14 -12
  139. package/dist/session.d.ts +14 -12
  140. package/dist/session.js +5 -1
  141. package/dist/{types-Cqp10JtB.d.cts → types-Bg86GGVZ.d.cts} +2 -2
  142. package/dist/{types-Cqp10JtB.d.ts → types-Bg86GGVZ.d.ts} +2 -2
  143. package/dist/{types-zHgCS6o5.d.cts → types-C1rxh-id.d.cts} +7 -7
  144. package/dist/{types-zHgCS6o5.d.ts → types-C1rxh-id.d.ts} +7 -7
  145. package/dist/{types-Bio-91Rt.d.cts → types-CI_SX4Xe.d.cts} +2 -2
  146. package/dist/{types-Bio-91Rt.d.ts → types-CI_SX4Xe.d.ts} +2 -2
  147. package/dist/types-CY-QWxd-.d.cts +359 -0
  148. package/dist/types-CY-QWxd-.d.ts +359 -0
  149. package/dist/{types-Cm9fjeYC.d.cts → types-CZTzbIzQ.d.cts} +2 -2
  150. package/dist/{types-Cm9fjeYC.d.ts → types-CZTzbIzQ.d.ts} +2 -2
  151. package/dist/{types-HI_bbXka.d.cts → types-CmqT0jUf.d.cts} +1 -1
  152. package/dist/{types-HI_bbXka.d.ts → types-CmqT0jUf.d.ts} +1 -1
  153. package/dist/{types-Ck45Ex5S.d.cts → types-D0kTgUuL.d.cts} +1 -1
  154. package/dist/{types-Ck45Ex5S.d.ts → types-D0kTgUuL.d.ts} +1 -1
  155. package/dist/{types-D9eiB_9A.d.cts → types-D4bmW8rY.d.cts} +2 -2
  156. package/dist/{types-D9eiB_9A.d.ts → types-D4bmW8rY.d.ts} +2 -2
  157. package/dist/{types-CdCSIfvI.d.cts → types-DG5_iKuv.d.cts} +1 -1
  158. package/dist/{types-CdCSIfvI.d.ts → types-DG5_iKuv.d.ts} +1 -1
  159. package/dist/{types-CXlSn0I9.d.cts → types-DjxexghA.d.cts} +2 -2
  160. package/dist/{types-CXlSn0I9.d.ts → types-DjxexghA.d.ts} +2 -2
  161. package/dist/{types-CPaYBsMG.d.cts → types-pShrs3fN.d.cts} +2 -2
  162. package/dist/{types-CPaYBsMG.d.ts → types-pShrs3fN.d.ts} +2 -2
  163. package/package.json +16 -3
  164. package/src/core/session-types.ts +7 -0
  165. package/src/core/types.ts +1 -0
  166. package/src/drafts/draft11/codec.ts +11 -8
  167. package/src/drafts/draft11/types.ts +1 -1
  168. package/src/drafts/draft12/codec.ts +22 -16
  169. package/src/drafts/draft12/types.ts +2 -2
  170. package/src/drafts/draft13/codec.ts +14 -8
  171. package/src/drafts/draft13/types.ts +2 -2
  172. package/src/drafts/draft14/codec.ts +14 -8
  173. package/src/drafts/draft14/types.ts +1 -1
  174. package/src/drafts/draft15/codec.ts +14 -8
  175. package/src/drafts/draft15/types.ts +2 -2
  176. package/src/drafts/draft16/codec.ts +13 -7
  177. package/src/drafts/draft16/types.ts +2 -2
  178. package/src/drafts/draft17/codec.ts +12 -6
  179. package/src/drafts/draft17/types.ts +2 -2
  180. package/src/drafts/draft18/codec.ts +12 -6
  181. package/src/drafts/draft18/types.ts +2 -2
  182. package/src/drafts/draft19/codec.ts +37 -23
  183. package/src/drafts/draft19/types.ts +10 -7
  184. package/src/drafts/draft20/codec.ts +1749 -0
  185. package/src/drafts/draft20/data-streams.ts +1291 -0
  186. package/src/drafts/draft20/error-codes.ts +135 -0
  187. package/src/drafts/draft20/index.ts +165 -0
  188. package/src/drafts/draft20/messages.ts +68 -0
  189. package/src/drafts/draft20/rules.ts +107 -0
  190. package/src/drafts/draft20/session-fsm.ts +1063 -0
  191. package/src/drafts/draft20/session.ts +21 -0
  192. package/src/drafts/draft20/types.ts +461 -0
  193. package/src/index.ts +20 -2
  194. package/src/session.ts +4 -0
@@ -75,12 +75,12 @@ function encodeSetupOptions(opts: Draft19SetupOptions, writer: BufferWriter): vo
75
75
  },
76
76
  })
77
77
  }
78
- if (opts.authorization_token !== undefined) {
78
+ for (const token of opts.authorization_token ?? []) {
79
79
  entries.push({
80
80
  type: SETUP_OPT_AUTHORIZATION_TOKEN,
81
81
  encode: (w) => {
82
82
  const tmpW = new BufferWriter(64)
83
- encodeAuthorizationToken(opts.authorization_token!, tmpW)
83
+ encodeAuthorizationToken(token, tmpW)
84
84
  const raw = tmpW.finish()
85
85
  w.writeVarInt(BigInt(raw.byteLength))
86
86
  w.writeBytes(raw)
@@ -191,7 +191,10 @@ function decodeSetupOptions(reader: BufferReader, payloadEnd: number): Draft19Se
191
191
  if (optType === SETUP_OPT_PATH) {
192
192
  result.path = textDecoder.decode(bytes)
193
193
  } else if (optType === SETUP_OPT_AUTHORIZATION_TOKEN) {
194
- result.authorization_token = decodeAuthorizationToken(new BufferReader(bytes))
194
+ result.authorization_token = [
195
+ ...(result.authorization_token ?? []),
196
+ decodeAuthorizationToken(new BufferReader(bytes)),
197
+ ]
195
198
  } else if (optType === SETUP_OPT_AUTHORITY) {
196
199
  result.authority = textDecoder.decode(bytes)
197
200
  } else if (optType === SETUP_OPT_MOQT_IMPLEMENTATION) {
@@ -403,12 +406,12 @@ function encodeParams(params: Draft19Params, writer: BufferWriter): void {
403
406
  encode: (w) => w.writeVarInt(params.object_delivery_timeout!),
404
407
  })
405
408
  }
406
- if (params.authorization_token !== undefined) {
409
+ for (const token of params.authorization_token ?? []) {
407
410
  entries.push({
408
411
  type: PARAM_AUTHORIZATION_TOKEN,
409
412
  encode: (w) => {
410
413
  const tmpW = new BufferWriter(64)
411
- encodeAuthorizationToken(params.authorization_token!, tmpW)
414
+ encodeAuthorizationToken(token, tmpW)
412
415
  const raw = tmpW.finish()
413
416
  w.writeVarInt(BigInt(raw.byteLength))
414
417
  w.writeBytes(raw)
@@ -489,34 +492,34 @@ function encodeParams(params: Draft19Params, writer: BufferWriter): void {
489
492
  encode: (w) => w.writeUint8(Number(params.group_order!)),
490
493
  })
491
494
  }
492
- if (params.subgroup_filter !== undefined) {
495
+ for (const filter of params.subgroup_filter ?? []) {
493
496
  entries.push({
494
497
  type: PARAM_SUBGROUP_FILTER,
495
- encode: (w) => encodeRangeFilter(params.subgroup_filter!, false, w),
498
+ encode: (w) => encodeRangeFilter(filter, false, w),
496
499
  })
497
500
  }
498
- if (params.objectid_filter !== undefined) {
501
+ for (const filter of params.objectid_filter ?? []) {
499
502
  entries.push({
500
503
  type: PARAM_OBJECTID_FILTER,
501
- encode: (w) => encodeRangeFilter(params.objectid_filter!, false, w),
504
+ encode: (w) => encodeRangeFilter(filter, false, w),
502
505
  })
503
506
  }
504
- if (params.priority_filter !== undefined) {
507
+ for (const filter of params.priority_filter ?? []) {
505
508
  entries.push({
506
509
  type: PARAM_PRIORITY_FILTER,
507
- encode: (w) => encodeRangeFilter(params.priority_filter!, false, w),
510
+ encode: (w) => encodeRangeFilter(filter, false, w),
508
511
  })
509
512
  }
510
- if (params.object_property_filter !== undefined) {
513
+ for (const filter of params.object_property_filter ?? []) {
511
514
  entries.push({
512
515
  type: PARAM_OBJECT_PROPERTY_FILTER,
513
- encode: (w) => encodeRangeFilter(params.object_property_filter!, true, w),
516
+ encode: (w) => encodeRangeFilter(filter, true, w),
514
517
  })
515
518
  }
516
- if (params.track_property_filter !== undefined) {
519
+ for (const filter of params.track_property_filter ?? []) {
517
520
  entries.push({
518
521
  type: PARAM_TRACK_PROPERTY_FILTER,
519
- encode: (w) => encodeRangeFilter(params.track_property_filter!, true, w),
522
+ encode: (w) => encodeRangeFilter(filter, true, w),
520
523
  })
521
524
  }
522
525
  if (params.new_group_request !== undefined) {
@@ -587,7 +590,10 @@ function decodeParams(reader: BufferReader, messageType: string): Draft19Params
587
590
  } else if (paramType === PARAM_AUTHORIZATION_TOKEN) {
588
591
  const length = Number(reader.readVarInt())
589
592
  const bytes = reader.readBytes(length)
590
- result.authorization_token = decodeAuthorizationToken(new BufferReader(bytes))
593
+ result.authorization_token = [
594
+ ...(result.authorization_token ?? []),
595
+ decodeAuthorizationToken(new BufferReader(bytes)),
596
+ ]
591
597
  } else if (paramType === PARAM_RENDEZVOUS_TIMEOUT) {
592
598
  result.rendezvous_timeout = reader.readVarInt()
593
599
  } else if (paramType === PARAM_SUBGROUP_DELIVERY_TIMEOUT) {
@@ -632,15 +638,21 @@ function decodeParams(reader: BufferReader, messageType: string): Draft19Params
632
638
  // uint8: single raw byte
633
639
  result.group_order = BigInt(reader.readUint8())
634
640
  } else if (paramType === PARAM_SUBGROUP_FILTER) {
635
- result.subgroup_filter = decodeRangeFilter(reader, false)
641
+ result.subgroup_filter = [...(result.subgroup_filter ?? []), decodeRangeFilter(reader, false)]
636
642
  } else if (paramType === PARAM_OBJECTID_FILTER) {
637
- result.objectid_filter = decodeRangeFilter(reader, false)
643
+ result.objectid_filter = [...(result.objectid_filter ?? []), decodeRangeFilter(reader, false)]
638
644
  } else if (paramType === PARAM_PRIORITY_FILTER) {
639
- result.priority_filter = decodeRangeFilter(reader, false)
645
+ result.priority_filter = [...(result.priority_filter ?? []), decodeRangeFilter(reader, false)]
640
646
  } else if (paramType === PARAM_OBJECT_PROPERTY_FILTER) {
641
- result.object_property_filter = decodeRangeFilter(reader, true)
647
+ result.object_property_filter = [
648
+ ...(result.object_property_filter ?? []),
649
+ decodeRangeFilter(reader, true),
650
+ ]
642
651
  } else if (paramType === PARAM_TRACK_PROPERTY_FILTER) {
643
- result.track_property_filter = decodeRangeFilter(reader, true)
652
+ result.track_property_filter = [
653
+ ...(result.track_property_filter ?? []),
654
+ decodeRangeFilter(reader, true),
655
+ ]
644
656
  } else if (paramType === PARAM_NEW_GROUP_REQUEST) {
645
657
  result.new_group_request = reader.readVarInt()
646
658
  } else if (paramType === PARAM_TRACK_NAMESPACE_PREFIX) {
@@ -1429,7 +1441,7 @@ export function createStreamDecoder(): TransformStream<Uint8Array, Draft19Messag
1429
1441
  // ─── Codec Factory ─────────────────────────────────────────────────────────────
1430
1442
 
1431
1443
  export interface Draft19Codec extends BaseCodec<Draft19Message> {
1432
- readonly draft: '18'
1444
+ readonly draft: '19'
1433
1445
  encodeSubgroupStream(stream: SubgroupStream): Uint8Array
1434
1446
  encodeDatagram(dg: DatagramObject): Uint8Array
1435
1447
  encodeFetchStream(stream: FetchStream): Uint8Array
@@ -1448,7 +1460,9 @@ export interface Draft19Codec extends BaseCodec<Draft19Message> {
1448
1460
 
1449
1461
  export function createDraft19Codec(): Draft19Codec {
1450
1462
  return {
1451
- draft: '18',
1463
+ // Was '18' — a copy-paste from draft18/codec.ts. createSessionState() keys
1464
+ // off codec.draft, so a draft-19 codec was handing back a draft-18 FSM.
1465
+ draft: '19',
1452
1466
  encodeMessage,
1453
1467
  decodeMessage,
1454
1468
  encodeSubgroupStream,
@@ -18,7 +18,7 @@ export interface AuthorizationToken {
18
18
  // Setup options (KVP encoding, no count prefix)
19
19
  export interface Draft19SetupOptions {
20
20
  path?: string // 0x01 odd
21
- authorization_token?: AuthorizationToken // 0x03 odd
21
+ authorization_token?: readonly AuthorizationToken[] // 0x03 odd
22
22
  max_auth_token_cache_size?: bigint // 0x04 even
23
23
  authority?: string // 0x05 odd
24
24
  max_filter_ranges?: bigint // 0x06 even (NEW in draft-19)
@@ -58,7 +58,7 @@ export interface LargestObject {
58
58
  // Version-specific parameters (delta-encoded types, count-prefixed)
59
59
  export interface Draft19Params {
60
60
  object_delivery_timeout?: bigint // 0x02 varint (renamed from delivery_timeout in draft-17)
61
- authorization_token?: AuthorizationToken // 0x03 length-prefixed nested
61
+ authorization_token?: readonly AuthorizationToken[] // 0x03 length-prefixed nested
62
62
  rendezvous_timeout?: bigint // 0x04 varint
63
63
  subgroup_delivery_timeout?: bigint // 0x06 varint (NEW in draft-18)
64
64
  expires?: bigint // 0x08 varint
@@ -68,11 +68,14 @@ export interface Draft19Params {
68
68
  subscriber_priority?: bigint // 0x20 uint8
69
69
  location_filter?: LocationFilter // 0x21 length-prefixed (renamed from subscription_filter in draft-19)
70
70
  group_order?: bigint // 0x22 uint8
71
- subgroup_filter?: RangeFilter // 0x25 length-prefixed (NEW in draft-19)
72
- objectid_filter?: RangeFilter // 0x26 length-prefixed (NEW in draft-19)
73
- priority_filter?: RangeFilter // 0x27 length-prefixed (NEW in draft-19)
74
- object_property_filter?: RangeFilter // 0x28 length-prefixed (NEW in draft-19)
75
- track_property_filter?: RangeFilter // 0x29 length-prefixed (NEW in draft-19)
71
+ // Section 5.1.3 permits each of the five more than once in a message: a
72
+ // filter parameter carries one SetID, so two alternatives over the same
73
+ // field need two parameters. A single filter is a one-element list.
74
+ subgroup_filter?: readonly RangeFilter[] // 0x25 length-prefixed (NEW in draft-19)
75
+ objectid_filter?: readonly RangeFilter[] // 0x26 length-prefixed (NEW in draft-19)
76
+ priority_filter?: readonly RangeFilter[] // 0x27 length-prefixed (NEW in draft-19)
77
+ object_property_filter?: readonly RangeFilter[] // 0x28 length-prefixed (NEW in draft-19)
78
+ track_property_filter?: readonly RangeFilter[] // 0x29 length-prefixed (NEW in draft-19)
76
79
  new_group_request?: bigint // 0x32 varint
77
80
  track_namespace_prefix?: string[] // 0x34 Track Namespace encoding (NEW in draft-18)
78
81
  unknown?: UnknownParam[]