@netkitty/codec 1.0.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 (463) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +352 -0
  4. package/README.zh-CN.md +342 -0
  5. package/dist/Codec.d.ts +133 -0
  6. package/dist/Codec.js +632 -0
  7. package/dist/PacketHeaders.d.ts +189 -0
  8. package/dist/PacketHeaders.js +384 -0
  9. package/dist/abstracts/BaseHeader.d.ts +325 -0
  10. package/dist/abstracts/BaseHeader.js +734 -0
  11. package/dist/errors/CodecSchemaValidateError.d.ts +4 -0
  12. package/dist/errors/CodecSchemaValidateError.js +11 -0
  13. package/dist/headers/ADSAMS.d.ts +33 -0
  14. package/dist/headers/ADSAMS.js +208 -0
  15. package/dist/headers/AH.d.ts +28 -0
  16. package/dist/headers/AH.js +137 -0
  17. package/dist/headers/AMQP.d.ts +31 -0
  18. package/dist/headers/AMQP.js +316 -0
  19. package/dist/headers/ARP.d.ts +26 -0
  20. package/dist/headers/ARP.js +243 -0
  21. package/dist/headers/BACnetIP.d.ts +27 -0
  22. package/dist/headers/BACnetIP.js +97 -0
  23. package/dist/headers/BFD.d.ts +28 -0
  24. package/dist/headers/BFD.js +155 -0
  25. package/dist/headers/BGP.d.ts +27 -0
  26. package/dist/headers/BGP.js +111 -0
  27. package/dist/headers/BSAPIP.d.ts +33 -0
  28. package/dist/headers/BSAPIP.js +78 -0
  29. package/dist/headers/Babel.d.ts +32 -0
  30. package/dist/headers/Babel.js +224 -0
  31. package/dist/headers/BitTorrent.d.ts +28 -0
  32. package/dist/headers/BitTorrent.js +72 -0
  33. package/dist/headers/C37118.d.ts +26 -0
  34. package/dist/headers/C37118.js +147 -0
  35. package/dist/headers/CAPWAP.d.ts +38 -0
  36. package/dist/headers/CAPWAP.js +275 -0
  37. package/dist/headers/CDP.d.ts +25 -0
  38. package/dist/headers/CDP.js +117 -0
  39. package/dist/headers/CMS.d.ts +33 -0
  40. package/dist/headers/CMS.js +238 -0
  41. package/dist/headers/COTP.d.ts +30 -0
  42. package/dist/headers/COTP.js +193 -0
  43. package/dist/headers/CassandraCQL.d.ts +28 -0
  44. package/dist/headers/CassandraCQL.js +117 -0
  45. package/dist/headers/CoAP.d.ts +29 -0
  46. package/dist/headers/CoAP.js +140 -0
  47. package/dist/headers/Codesys.d.ts +32 -0
  48. package/dist/headers/Codesys.js +119 -0
  49. package/dist/headers/Collectd.d.ts +29 -0
  50. package/dist/headers/Collectd.js +154 -0
  51. package/dist/headers/DCCP.d.ts +30 -0
  52. package/dist/headers/DCCP.js +204 -0
  53. package/dist/headers/DHCP.d.ts +26 -0
  54. package/dist/headers/DHCP.js +148 -0
  55. package/dist/headers/DHCPFailover.d.ts +30 -0
  56. package/dist/headers/DHCPFailover.js +104 -0
  57. package/dist/headers/DHCPv6.d.ts +25 -0
  58. package/dist/headers/DHCPv6.js +145 -0
  59. package/dist/headers/DNP3.d.ts +27 -0
  60. package/dist/headers/DNP3.js +150 -0
  61. package/dist/headers/DNS.d.ts +55 -0
  62. package/dist/headers/DNS.js +309 -0
  63. package/dist/headers/DTLS.d.ts +33 -0
  64. package/dist/headers/DTLS.js +142 -0
  65. package/dist/headers/Diameter.d.ts +34 -0
  66. package/dist/headers/Diameter.js +229 -0
  67. package/dist/headers/EAPOL.d.ts +32 -0
  68. package/dist/headers/EAPOL.js +135 -0
  69. package/dist/headers/EIGRP.d.ts +28 -0
  70. package/dist/headers/EIGRP.js +165 -0
  71. package/dist/headers/ENIP.d.ts +31 -0
  72. package/dist/headers/ENIP.js +164 -0
  73. package/dist/headers/ESP.d.ts +27 -0
  74. package/dist/headers/ESP.js +140 -0
  75. package/dist/headers/Elasticsearch.d.ts +30 -0
  76. package/dist/headers/Elasticsearch.js +125 -0
  77. package/dist/headers/EtherCAT.d.ts +35 -0
  78. package/dist/headers/EtherCAT.js +150 -0
  79. package/dist/headers/EthernetII.d.ts +28 -0
  80. package/dist/headers/EthernetII.js +117 -0
  81. package/dist/headers/FCoE.d.ts +38 -0
  82. package/dist/headers/FCoE.js +210 -0
  83. package/dist/headers/FTP.d.ts +34 -0
  84. package/dist/headers/FTP.js +158 -0
  85. package/dist/headers/Finger.d.ts +41 -0
  86. package/dist/headers/Finger.js +135 -0
  87. package/dist/headers/FoundationFieldbusHSE.d.ts +43 -0
  88. package/dist/headers/FoundationFieldbusHSE.js +163 -0
  89. package/dist/headers/GELF.d.ts +35 -0
  90. package/dist/headers/GELF.js +261 -0
  91. package/dist/headers/GENEVE.d.ts +26 -0
  92. package/dist/headers/GENEVE.js +209 -0
  93. package/dist/headers/GESRTP.d.ts +32 -0
  94. package/dist/headers/GESRTP.js +141 -0
  95. package/dist/headers/GLBP.d.ts +29 -0
  96. package/dist/headers/GLBP.js +159 -0
  97. package/dist/headers/GRE.d.ts +27 -0
  98. package/dist/headers/GRE.js +181 -0
  99. package/dist/headers/GTPU.d.ts +25 -0
  100. package/dist/headers/GTPU.js +203 -0
  101. package/dist/headers/GTPv2C.d.ts +30 -0
  102. package/dist/headers/GTPv2C.js +281 -0
  103. package/dist/headers/GitProtocol.d.ts +34 -0
  104. package/dist/headers/GitProtocol.js +141 -0
  105. package/dist/headers/Goose.d.ts +115 -0
  106. package/dist/headers/Goose.js +1067 -0
  107. package/dist/headers/Gopher.d.ts +43 -0
  108. package/dist/headers/Gopher.js +182 -0
  109. package/dist/headers/HARTIP.d.ts +30 -0
  110. package/dist/headers/HARTIP.js +145 -0
  111. package/dist/headers/HSR.d.ts +27 -0
  112. package/dist/headers/HSR.js +105 -0
  113. package/dist/headers/HSRP.d.ts +26 -0
  114. package/dist/headers/HSRP.js +173 -0
  115. package/dist/headers/HTTP.d.ts +32 -0
  116. package/dist/headers/HTTP.js +153 -0
  117. package/dist/headers/HTTP2.d.ts +34 -0
  118. package/dist/headers/HTTP2.js +190 -0
  119. package/dist/headers/IAX2.d.ts +33 -0
  120. package/dist/headers/IAX2.js +274 -0
  121. package/dist/headers/ICMP.d.ts +15 -0
  122. package/dist/headers/ICMP.js +148 -0
  123. package/dist/headers/ICMPv6.d.ts +15 -0
  124. package/dist/headers/ICMPv6.js +129 -0
  125. package/dist/headers/IEC104_I_Frame.d.ts +23 -0
  126. package/dist/headers/IEC104_I_Frame.js +6489 -0
  127. package/dist/headers/IEC104_S_Frame.d.ts +26 -0
  128. package/dist/headers/IEC104_S_Frame.js +135 -0
  129. package/dist/headers/IEC104_U_Frame.d.ts +27 -0
  130. package/dist/headers/IEC104_U_Frame.js +176 -0
  131. package/dist/headers/IEC61850SampledValues.d.ts +20 -0
  132. package/dist/headers/IEC61850SampledValues.js +420 -0
  133. package/dist/headers/IGMP.d.ts +31 -0
  134. package/dist/headers/IGMP.js +274 -0
  135. package/dist/headers/IMAP.d.ts +32 -0
  136. package/dist/headers/IMAP.js +185 -0
  137. package/dist/headers/IPFIX.d.ts +29 -0
  138. package/dist/headers/IPFIX.js +156 -0
  139. package/dist/headers/IPv4.d.ts +20 -0
  140. package/dist/headers/IPv4.js +370 -0
  141. package/dist/headers/IPv6.d.ts +29 -0
  142. package/dist/headers/IPv6.js +209 -0
  143. package/dist/headers/IPv6HopByHopOptions.d.ts +81 -0
  144. package/dist/headers/IPv6HopByHopOptions.js +495 -0
  145. package/dist/headers/IRC.d.ts +34 -0
  146. package/dist/headers/IRC.js +175 -0
  147. package/dist/headers/ISAKMP.d.ts +29 -0
  148. package/dist/headers/ISAKMP.js +197 -0
  149. package/dist/headers/ISCSI.d.ts +39 -0
  150. package/dist/headers/ISCSI.js +289 -0
  151. package/dist/headers/ISIS.d.ts +25 -0
  152. package/dist/headers/ISIS.js +79 -0
  153. package/dist/headers/ISOSession.d.ts +27 -0
  154. package/dist/headers/ISOSession.js +343 -0
  155. package/dist/headers/Ident.d.ts +42 -0
  156. package/dist/headers/Ident.js +184 -0
  157. package/dist/headers/KNXnetIP.d.ts +30 -0
  158. package/dist/headers/KNXnetIP.js +135 -0
  159. package/dist/headers/Kafka.d.ts +35 -0
  160. package/dist/headers/Kafka.js +128 -0
  161. package/dist/headers/Kerberos.d.ts +30 -0
  162. package/dist/headers/Kerberos.js +217 -0
  163. package/dist/headers/L2TP.d.ts +26 -0
  164. package/dist/headers/L2TP.js +297 -0
  165. package/dist/headers/LACP.d.ts +31 -0
  166. package/dist/headers/LACP.js +151 -0
  167. package/dist/headers/LDAP.d.ts +31 -0
  168. package/dist/headers/LDAP.js +226 -0
  169. package/dist/headers/LDP.d.ts +31 -0
  170. package/dist/headers/LDP.js +138 -0
  171. package/dist/headers/LISP.d.ts +30 -0
  172. package/dist/headers/LISP.js +103 -0
  173. package/dist/headers/LLC.d.ts +27 -0
  174. package/dist/headers/LLC.js +81 -0
  175. package/dist/headers/LLDP.d.ts +26 -0
  176. package/dist/headers/LLDP.js +126 -0
  177. package/dist/headers/LLMNR.d.ts +23 -0
  178. package/dist/headers/LLMNR.js +40 -0
  179. package/dist/headers/LPD.d.ts +31 -0
  180. package/dist/headers/LPD.js +159 -0
  181. package/dist/headers/MACsec.d.ts +34 -0
  182. package/dist/headers/MACsec.js +178 -0
  183. package/dist/headers/MDNS.d.ts +26 -0
  184. package/dist/headers/MDNS.js +45 -0
  185. package/dist/headers/MGCP.d.ts +30 -0
  186. package/dist/headers/MGCP.js +155 -0
  187. package/dist/headers/MMS.d.ts +29 -0
  188. package/dist/headers/MMS.js +243 -0
  189. package/dist/headers/MPLS.d.ts +31 -0
  190. package/dist/headers/MPLS.js +145 -0
  191. package/dist/headers/MQTT.d.ts +30 -0
  192. package/dist/headers/MQTT.js +173 -0
  193. package/dist/headers/MQTTSN.d.ts +34 -0
  194. package/dist/headers/MQTTSN.js +177 -0
  195. package/dist/headers/MarkerProtocol.d.ts +32 -0
  196. package/dist/headers/MarkerProtocol.js +153 -0
  197. package/dist/headers/Megaco.d.ts +32 -0
  198. package/dist/headers/Megaco.js +144 -0
  199. package/dist/headers/Memcached.d.ts +44 -0
  200. package/dist/headers/Memcached.js +285 -0
  201. package/dist/headers/ModbusTCP.d.ts +25 -0
  202. package/dist/headers/ModbusTCP.js +99 -0
  203. package/dist/headers/ModbusUDP.d.ts +26 -0
  204. package/dist/headers/ModbusUDP.js +100 -0
  205. package/dist/headers/MongoDB.d.ts +33 -0
  206. package/dist/headers/MongoDB.js +143 -0
  207. package/dist/headers/MySQL.d.ts +30 -0
  208. package/dist/headers/MySQL.js +114 -0
  209. package/dist/headers/NATS.d.ts +29 -0
  210. package/dist/headers/NATS.js +135 -0
  211. package/dist/headers/NBDS.d.ts +34 -0
  212. package/dist/headers/NBDS.js +176 -0
  213. package/dist/headers/NBNS.d.ts +34 -0
  214. package/dist/headers/NBNS.js +78 -0
  215. package/dist/headers/NBSS.d.ts +36 -0
  216. package/dist/headers/NBSS.js +137 -0
  217. package/dist/headers/NFS.d.ts +36 -0
  218. package/dist/headers/NFS.js +273 -0
  219. package/dist/headers/NHRP.d.ts +32 -0
  220. package/dist/headers/NHRP.js +154 -0
  221. package/dist/headers/NNTP.d.ts +35 -0
  222. package/dist/headers/NNTP.js +162 -0
  223. package/dist/headers/NTP.d.ts +18 -0
  224. package/dist/headers/NTP.js +73 -0
  225. package/dist/headers/NetFlowV5.d.ts +28 -0
  226. package/dist/headers/NetFlowV5.js +205 -0
  227. package/dist/headers/OLSR.d.ts +31 -0
  228. package/dist/headers/OLSR.js +213 -0
  229. package/dist/headers/OPCUA.d.ts +33 -0
  230. package/dist/headers/OPCUA.js +165 -0
  231. package/dist/headers/OPCUAPubSub.d.ts +33 -0
  232. package/dist/headers/OPCUAPubSub.js +144 -0
  233. package/dist/headers/OSPF.d.ts +31 -0
  234. package/dist/headers/OSPF.js +365 -0
  235. package/dist/headers/OmronFINS.d.ts +31 -0
  236. package/dist/headers/OmronFINS.js +90 -0
  237. package/dist/headers/OpenFlow.d.ts +30 -0
  238. package/dist/headers/OpenFlow.js +113 -0
  239. package/dist/headers/OpenVPN.d.ts +35 -0
  240. package/dist/headers/OpenVPN.js +214 -0
  241. package/dist/headers/PCWorx.d.ts +35 -0
  242. package/dist/headers/PCWorx.js +115 -0
  243. package/dist/headers/PIM.d.ts +27 -0
  244. package/dist/headers/PIM.js +129 -0
  245. package/dist/headers/POP3.d.ts +31 -0
  246. package/dist/headers/POP3.js +152 -0
  247. package/dist/headers/POWERLINK.d.ts +28 -0
  248. package/dist/headers/POWERLINK.js +116 -0
  249. package/dist/headers/PPPoEDiscovery.d.ts +29 -0
  250. package/dist/headers/PPPoEDiscovery.js +198 -0
  251. package/dist/headers/PPPoESession.d.ts +28 -0
  252. package/dist/headers/PPPoESession.js +125 -0
  253. package/dist/headers/PPTP.d.ts +30 -0
  254. package/dist/headers/PPTP.js +122 -0
  255. package/dist/headers/PROFINETRT.d.ts +28 -0
  256. package/dist/headers/PROFINETRT.js +74 -0
  257. package/dist/headers/PTP.d.ts +34 -0
  258. package/dist/headers/PTP.js +213 -0
  259. package/dist/headers/PostgreSQL.d.ts +40 -0
  260. package/dist/headers/PostgreSQL.js +236 -0
  261. package/dist/headers/QUIC.d.ts +34 -0
  262. package/dist/headers/QUIC.js +308 -0
  263. package/dist/headers/RADIUS.d.ts +24 -0
  264. package/dist/headers/RADIUS.js +138 -0
  265. package/dist/headers/RDP.d.ts +27 -0
  266. package/dist/headers/RDP.js +93 -0
  267. package/dist/headers/RFB.d.ts +39 -0
  268. package/dist/headers/RFB.js +151 -0
  269. package/dist/headers/RGoose.d.ts +72 -0
  270. package/dist/headers/RGoose.js +340 -0
  271. package/dist/headers/RIP.d.ts +29 -0
  272. package/dist/headers/RIP.js +133 -0
  273. package/dist/headers/RIPng.d.ts +26 -0
  274. package/dist/headers/RIPng.js +140 -0
  275. package/dist/headers/RMCP.d.ts +26 -0
  276. package/dist/headers/RMCP.js +155 -0
  277. package/dist/headers/RSVP.d.ts +31 -0
  278. package/dist/headers/RSVP.js +263 -0
  279. package/dist/headers/RTCP.d.ts +34 -0
  280. package/dist/headers/RTCP.js +217 -0
  281. package/dist/headers/RTP.d.ts +33 -0
  282. package/dist/headers/RTP.js +291 -0
  283. package/dist/headers/RTPS.d.ts +33 -0
  284. package/dist/headers/RTPS.js +182 -0
  285. package/dist/headers/RTSP.d.ts +36 -0
  286. package/dist/headers/RTSP.js +184 -0
  287. package/dist/headers/RawData.d.ts +17 -0
  288. package/dist/headers/RawData.js +43 -0
  289. package/dist/headers/Redis.d.ts +32 -0
  290. package/dist/headers/Redis.js +202 -0
  291. package/dist/headers/Rlogin.d.ts +42 -0
  292. package/dist/headers/Rlogin.js +139 -0
  293. package/dist/headers/Rsync.d.ts +28 -0
  294. package/dist/headers/Rsync.js +117 -0
  295. package/dist/headers/S7comm.d.ts +36 -0
  296. package/dist/headers/S7comm.js +244 -0
  297. package/dist/headers/SCTP.d.ts +35 -0
  298. package/dist/headers/SCTP.js +174 -0
  299. package/dist/headers/SFlow.d.ts +29 -0
  300. package/dist/headers/SFlow.js +242 -0
  301. package/dist/headers/SIP.d.ts +27 -0
  302. package/dist/headers/SIP.js +146 -0
  303. package/dist/headers/SLMP.d.ts +36 -0
  304. package/dist/headers/SLMP.js +154 -0
  305. package/dist/headers/SLP.d.ts +30 -0
  306. package/dist/headers/SLP.js +207 -0
  307. package/dist/headers/SLPv1.d.ts +32 -0
  308. package/dist/headers/SLPv1.js +138 -0
  309. package/dist/headers/SMB1.d.ts +37 -0
  310. package/dist/headers/SMB1.js +200 -0
  311. package/dist/headers/SMB2.d.ts +36 -0
  312. package/dist/headers/SMB2.js +203 -0
  313. package/dist/headers/SMPP.d.ts +33 -0
  314. package/dist/headers/SMPP.js +119 -0
  315. package/dist/headers/SMTP.d.ts +33 -0
  316. package/dist/headers/SMTP.js +157 -0
  317. package/dist/headers/SNAP.d.ts +22 -0
  318. package/dist/headers/SNAP.js +68 -0
  319. package/dist/headers/SNMP.d.ts +28 -0
  320. package/dist/headers/SNMP.js +302 -0
  321. package/dist/headers/SOCKS4.d.ts +42 -0
  322. package/dist/headers/SOCKS4.js +302 -0
  323. package/dist/headers/SOCKS5.d.ts +45 -0
  324. package/dist/headers/SOCKS5.js +223 -0
  325. package/dist/headers/SSDP.d.ts +27 -0
  326. package/dist/headers/SSDP.js +161 -0
  327. package/dist/headers/SSH.d.ts +44 -0
  328. package/dist/headers/SSH.js +274 -0
  329. package/dist/headers/STOMP.d.ts +48 -0
  330. package/dist/headers/STOMP.js +177 -0
  331. package/dist/headers/STP.d.ts +26 -0
  332. package/dist/headers/STP.js +150 -0
  333. package/dist/headers/STUN.d.ts +25 -0
  334. package/dist/headers/STUN.js +183 -0
  335. package/dist/headers/SercosIII.d.ts +43 -0
  336. package/dist/headers/SercosIII.js +199 -0
  337. package/dist/headers/Skinny.d.ts +32 -0
  338. package/dist/headers/Skinny.js +139 -0
  339. package/dist/headers/StatsD.d.ts +27 -0
  340. package/dist/headers/StatsD.js +134 -0
  341. package/dist/headers/SunRPC.d.ts +34 -0
  342. package/dist/headers/SunRPC.js +268 -0
  343. package/dist/headers/Syslog.d.ts +21 -0
  344. package/dist/headers/Syslog.js +91 -0
  345. package/dist/headers/TCP.d.ts +19 -0
  346. package/dist/headers/TCP.js +905 -0
  347. package/dist/headers/TFTP.d.ts +28 -0
  348. package/dist/headers/TFTP.js +224 -0
  349. package/dist/headers/TLS_Alert.d.ts +24 -0
  350. package/dist/headers/TLS_Alert.js +639 -0
  351. package/dist/headers/TLS_ApplicationData.d.ts +24 -0
  352. package/dist/headers/TLS_ApplicationData.js +170 -0
  353. package/dist/headers/TLS_ChangeCipherSpec.d.ts +23 -0
  354. package/dist/headers/TLS_ChangeCipherSpec.js +168 -0
  355. package/dist/headers/TLS_Handshake.d.ts +65 -0
  356. package/dist/headers/TLS_Handshake.js +860 -0
  357. package/dist/headers/TLS_Heartbeat.d.ts +27 -0
  358. package/dist/headers/TLS_Heartbeat.js +247 -0
  359. package/dist/headers/TPKT.d.ts +26 -0
  360. package/dist/headers/TPKT.js +99 -0
  361. package/dist/headers/TacacsPlus.d.ts +27 -0
  362. package/dist/headers/TacacsPlus.js +133 -0
  363. package/dist/headers/Telnet.d.ts +40 -0
  364. package/dist/headers/Telnet.js +193 -0
  365. package/dist/headers/Teredo.d.ts +40 -0
  366. package/dist/headers/Teredo.js +251 -0
  367. package/dist/headers/TimeProtocol.d.ts +25 -0
  368. package/dist/headers/TimeProtocol.js +53 -0
  369. package/dist/headers/UDP.d.ts +19 -0
  370. package/dist/headers/UDP.js +171 -0
  371. package/dist/headers/VLAN_802dot1Q.d.ts +24 -0
  372. package/dist/headers/VLAN_802dot1Q.js +96 -0
  373. package/dist/headers/VRRP.d.ts +26 -0
  374. package/dist/headers/VRRP.js +309 -0
  375. package/dist/headers/VXLAN.d.ts +24 -0
  376. package/dist/headers/VXLAN.js +75 -0
  377. package/dist/headers/WCCP.d.ts +29 -0
  378. package/dist/headers/WCCP.js +117 -0
  379. package/dist/headers/WHOIS.d.ts +37 -0
  380. package/dist/headers/WHOIS.js +126 -0
  381. package/dist/headers/WSDiscovery.d.ts +29 -0
  382. package/dist/headers/WSDiscovery.js +118 -0
  383. package/dist/headers/WakeOnLAN.d.ts +30 -0
  384. package/dist/headers/WakeOnLAN.js +126 -0
  385. package/dist/headers/WebSocket.d.ts +26 -0
  386. package/dist/headers/WebSocket.js +173 -0
  387. package/dist/headers/WireGuard.d.ts +38 -0
  388. package/dist/headers/WireGuard.js +216 -0
  389. package/dist/headers/XMPP.d.ts +37 -0
  390. package/dist/headers/XMPP.js +149 -0
  391. package/dist/headers/Zabbix.d.ts +35 -0
  392. package/dist/headers/Zabbix.js +153 -0
  393. package/dist/headers/cms/AcsiPdu.d.ts +45 -0
  394. package/dist/headers/cms/AcsiPdu.js +112 -0
  395. package/dist/headers/cms/PerDecoder.d.ts +68 -0
  396. package/dist/headers/cms/PerDecoder.js +211 -0
  397. package/dist/headers/cms/PerReader.d.ts +64 -0
  398. package/dist/headers/cms/PerReader.js +155 -0
  399. package/dist/helper/BufferToHex.d.ts +5 -0
  400. package/dist/helper/BufferToHex.js +10 -0
  401. package/dist/helper/BufferToIP.d.ts +12 -0
  402. package/dist/helper/BufferToIP.js +23 -0
  403. package/dist/helper/BufferToNumber.d.ts +18 -0
  404. package/dist/helper/BufferToNumber.js +47 -0
  405. package/dist/helper/HexToBuffer.d.ts +7 -0
  406. package/dist/helper/HexToBuffer.js +27 -0
  407. package/dist/helper/HexToNumber.d.ts +18 -0
  408. package/dist/helper/HexToNumber.js +48 -0
  409. package/dist/helper/IPToBuffer.d.ts +12 -0
  410. package/dist/helper/IPToBuffer.js +34 -0
  411. package/dist/helper/NumberToBERBuffer.d.ts +18 -0
  412. package/dist/helper/NumberToBERBuffer.js +31 -0
  413. package/dist/helper/NumberToBERHex.d.ts +18 -0
  414. package/dist/helper/NumberToBERHex.js +52 -0
  415. package/dist/helper/NumberToBuffer.d.ts +18 -0
  416. package/dist/helper/NumberToBuffer.js +38 -0
  417. package/dist/helper/NumberToHex.d.ts +18 -0
  418. package/dist/helper/NumberToHex.js +35 -0
  419. package/dist/index.d.ts +52 -0
  420. package/dist/index.js +113 -0
  421. package/dist/lib/FlexibleObject.d.ts +27 -0
  422. package/dist/lib/FlexibleObject.js +113 -0
  423. package/dist/lib/GetBERIntegerLengthFromBuffer.d.ts +6 -0
  424. package/dist/lib/GetBERIntegerLengthFromBuffer.js +16 -0
  425. package/dist/lib/ProcessPacketPostHandlers.d.ts +13 -0
  426. package/dist/lib/ProcessPacketPostHandlers.js +53 -0
  427. package/dist/lib/SortPostHandlers.d.ts +7 -0
  428. package/dist/lib/SortPostHandlers.js +11 -0
  429. package/dist/lib/StringContentEncodingEnum.d.ts +10 -0
  430. package/dist/lib/StringContentEncodingEnum.js +14 -0
  431. package/dist/schema/ProtocolFieldJSONSchema.d.ts +35 -0
  432. package/dist/schema/ProtocolFieldJSONSchema.js +2 -0
  433. package/dist/schema/ProtocolFieldJSONSchemaDefinition.d.ts +2 -0
  434. package/dist/schema/ProtocolFieldJSONSchemaDefinition.js +2 -0
  435. package/dist/schema/ProtocolJSONSchema.d.ts +32 -0
  436. package/dist/schema/ProtocolJSONSchema.js +2 -0
  437. package/dist/types/CodecData.d.ts +7 -0
  438. package/dist/types/CodecData.js +2 -0
  439. package/dist/types/CodecDecodeResult.d.ts +10 -0
  440. package/dist/types/CodecDecodeResult.js +2 -0
  441. package/dist/types/CodecEncodeInput.d.ts +2 -0
  442. package/dist/types/CodecEncodeInput.js +2 -0
  443. package/dist/types/CodecEncodeResult.d.ts +5 -0
  444. package/dist/types/CodecEncodeResult.js +2 -0
  445. package/dist/types/CodecErrorInfo.d.ts +5 -0
  446. package/dist/types/CodecErrorInfo.js +2 -0
  447. package/dist/types/CodecModule.d.ts +2 -0
  448. package/dist/types/CodecModule.js +2 -0
  449. package/dist/types/CodecModuleConstructor.d.ts +2 -0
  450. package/dist/types/CodecModuleConstructor.js +2 -0
  451. package/dist/types/CodecSchema.d.ts +6 -0
  452. package/dist/types/CodecSchema.js +2 -0
  453. package/dist/types/DemuxProducer.d.ts +23 -0
  454. package/dist/types/DemuxProducer.js +2 -0
  455. package/dist/types/Dissection.d.ts +23 -0
  456. package/dist/types/Dissection.js +2 -0
  457. package/dist/types/HeaderTreeNode.d.ts +4 -0
  458. package/dist/types/HeaderTreeNode.js +2 -0
  459. package/dist/types/LayerGraph.d.ts +32 -0
  460. package/dist/types/LayerGraph.js +2 -0
  461. package/dist/types/PostHandlerItem.d.ts +4 -0
  462. package/dist/types/PostHandlerItem.js +2 -0
  463. package/package.json +141 -0
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SunRPC = void 0;
4
+ const BaseHeader_1 = require("../abstracts/BaseHeader");
5
+ const BufferToHex_1 = require("../helper/BufferToHex");
6
+ const HexToBuffer_1 = require("../helper/HexToBuffer");
7
+ const BufferToNumber_1 = require("../helper/BufferToNumber");
8
+ const NumberToBuffer_1 = require("../helper/NumberToBuffer");
9
+ const StringContentEncodingEnum_1 = require("../lib/StringContentEncodingEnum");
10
+ /**
11
+ * ONC RPC / SunRPC (RFC 5531), the portmapper transport on TCP + UDP port 111. Every RPC message is a
12
+ * 4-byte XID followed by a 4-byte Message Type (0 CALL, 1 REPLY). A CALL body continues with the RPC
13
+ * version (== 2), the program number, the program version, the procedure, then the credential and
14
+ * verifier auth structures (each a 4-byte flavor + 4-byte length + body) and the procedure arguments.
15
+ * The portmapper program is 100000.
16
+ *
17
+ * Transport framing differs by L4 (RFC 5531 §11): over UDP the RPC message is the whole datagram; over
18
+ * TCP a 4-byte Record Marking prefix precedes it — the high bit is the last-fragment flag and the low 31
19
+ * bits are the fragment length. This header detects the transport via prevCodecModule.id and structures
20
+ * accordingly: TCP → recordMark (lastFragment + fragmentLength) then the message at offset 4; UDP → the
21
+ * message directly at offset 0.
22
+ *
23
+ * Byte-perfect strategy (minimal slice): structure the XID and Message Type, and for a CALL the four
24
+ * fixed program-identity words (rpcVersion / program / programVersion / procedure); the remainder — the
25
+ * credential, verifier and procedure arguments for a CALL, or the whole REPLY body — is kept verbatim as
26
+ * `body` hex, bounded by the transport payload (UDP length − 8, or the TCP Record Marking fragment
27
+ * length). The TCP fragmentLength is honored when supplied (a crafted frame may lie) else derived as the
28
+ * encoded message length; a well-formed message round-trips byte-for-byte. Trailing / pipelined bytes are
29
+ * left to the codec's recursion / RawData.
30
+ */
31
+ class SunRPC extends BaseHeader_1.BaseHeader {
32
+ constructor() {
33
+ super(...arguments);
34
+ this.id = 'sunrpc';
35
+ this.name = 'ONC RPC';
36
+ this.nickname = 'SunRPC';
37
+ //Portmapper ports 111 on both TCP and UDP.
38
+ this.matchKeys = ['tcpport:111', 'udpport:111'];
39
+ //A leaf header — the credential / verifier / arguments / REPLY body are kept verbatim for now.
40
+ this.demuxProducers = [];
41
+ }
42
+ static #schemaCache;
43
+ get SCHEMA() {
44
+ return (SunRPC.#schemaCache ??= SunRPC.#buildSchema());
45
+ }
46
+ /** True when this RPC message rides on TCP (a 4-byte Record Marking prefix precedes the message). */
47
+ #isTcp() {
48
+ return !!this.prevCodecModule && this.prevCodecModule.id === 'tcp';
49
+ }
50
+ /** Offset of the RPC message within this header: 4 bytes past startPos for TCP, 0 for UDP. */
51
+ #messageOffset() {
52
+ return this.#isTcp() ? 4 : 0;
53
+ }
54
+ /**
55
+ * Header-relative end offset of the bytes this SunRPC layer consumes, so a lying length never reads
56
+ * past the real transport payload and trailing / pipelined data is left to the codec. Over UDP the
57
+ * bound is (udp.length − 8); over TCP it is 4 (Record Marking) + the fragment length carried in that
58
+ * prefix; both clamped to the captured bytes.
59
+ */
60
+ #payloadEnd() {
61
+ let end = this.packet.length - this.startPos;
62
+ const prev = this.prevCodecModule;
63
+ if (prev && prev.id === 'udp') {
64
+ const udpLength = prev.instance.length.getValue(0);
65
+ if (udpLength >= 8 && udpLength - 8 < end)
66
+ end = udpLength - 8;
67
+ }
68
+ else if (prev && prev.id === 'tcp') {
69
+ const word = (0, BufferToNumber_1.BufferToUInt32)(this.readBytes(0, 4, true));
70
+ const fragmentLength = (word & 0x7fffffff) >>> 0;
71
+ const total = 4 + fragmentLength;
72
+ if (total < end)
73
+ end = total;
74
+ }
75
+ return end < 0 ? 0 : end;
76
+ }
77
+ /** A 4-byte big-endian unsigned integer at the RPC-message offset + `wordOffset`, only for a CALL. */
78
+ static #callWord(name, wordOffset, label) {
79
+ return {
80
+ type: 'integer',
81
+ label: label,
82
+ minimum: 0,
83
+ maximum: 4294967295,
84
+ decode: function () {
85
+ if (this.instance.msgType.getValue(0) !== 0)
86
+ return;
87
+ const offset = this.#messageOffset() + wordOffset;
88
+ if (this.#payloadEnd() < offset + 4)
89
+ return;
90
+ this.instance[name].setValue((0, BufferToNumber_1.BufferToUInt32)(this.readBytes(offset, 4)));
91
+ },
92
+ encode: function () {
93
+ if (this.instance.msgType.getValue(0) !== 0)
94
+ return;
95
+ const node = this.instance[name];
96
+ let value = node.getValue(0, (nodePath) => this.recordError(nodePath, 'Not Found'));
97
+ if (value > 4294967295) {
98
+ this.recordError(node.getPath(), 'Maximum value is 4294967295');
99
+ value = 4294967295;
100
+ }
101
+ if (value < 0) {
102
+ this.recordError(node.getPath(), 'Minimum value is 0');
103
+ value = 0;
104
+ }
105
+ node.setValue(value);
106
+ this.writeBytes(this.#messageOffset() + wordOffset, (0, NumberToBuffer_1.UInt32ToBuffer)(value));
107
+ }
108
+ };
109
+ }
110
+ static #buildSchema() {
111
+ return {
112
+ type: 'object',
113
+ summary: 'SunRPC xid=${xid} type=${msgType}',
114
+ properties: {
115
+ //==== TCP-only Record Marking prefix (RFC 5531 §11) ====
116
+ //The 4-byte word's high bit is the last-fragment flag; the low 31 bits are the fragment
117
+ //length (message bytes that follow). Absent over UDP. The 4-byte word is written together
118
+ //by fragmentLength (colocated) so the flag and length stay a single field on the wire.
119
+ lastFragment: {
120
+ type: 'boolean',
121
+ label: 'Last Fragment',
122
+ decode: function () {
123
+ if (!this.#isTcp())
124
+ return;
125
+ this.instance.lastFragment.setValue(!!this.readBits(0, 1, 0, 1));
126
+ },
127
+ encode: function () {
128
+ //Display only; the combined 4-byte word is emitted by fragmentLength below.
129
+ if (!this.#isTcp())
130
+ return;
131
+ this.instance.lastFragment.setValue(!!this.instance.lastFragment.getValue(true));
132
+ }
133
+ },
134
+ fragmentLength: {
135
+ type: 'integer',
136
+ label: 'Fragment Length',
137
+ minimum: 0,
138
+ maximum: 2147483647,
139
+ decode: function () {
140
+ if (!this.#isTcp())
141
+ return;
142
+ const word = (0, BufferToNumber_1.BufferToUInt32)(this.readBytes(0, 4));
143
+ this.instance.fragmentLength.setValue((word & 0x7fffffff) >>> 0);
144
+ },
145
+ encode: function () {
146
+ if (!this.#isTcp())
147
+ return;
148
+ const last = !!this.instance.lastFragment.getValue(true);
149
+ const provided = this.instance.fragmentLength.getValue();
150
+ if (provided !== undefined && provided !== null) {
151
+ //Honored verbatim (a crafted frame may lie about the fragment length).
152
+ let value = provided;
153
+ if (value > 2147483647) {
154
+ this.recordError(this.instance.fragmentLength.getPath(), 'Maximum value is 2147483647');
155
+ value = 2147483647;
156
+ }
157
+ if (value < 0) {
158
+ this.recordError(this.instance.fragmentLength.getPath(), 'Minimum value is 0');
159
+ value = 0;
160
+ }
161
+ this.instance.fragmentLength.setValue(value);
162
+ this.writeBytes(0, (0, NumberToBuffer_1.UInt32ToBuffer)(((last ? 0x80000000 : 0) + value) >>> 0));
163
+ }
164
+ else {
165
+ //Derive after the message bytes are written: the fragment length counts exactly
166
+ //the RPC message (everything after this 4-byte prefix).
167
+ this.writeBytes(0, (0, NumberToBuffer_1.UInt32ToBuffer)(last ? 0x80000000 : 0));
168
+ this.addPostSelfEncodeHandler(() => {
169
+ const messageLength = this.headerLength - 4;
170
+ const value = messageLength > 0 ? messageLength : 0;
171
+ this.instance.fragmentLength.setValue(value);
172
+ this.writeBytes(0, (0, NumberToBuffer_1.UInt32ToBuffer)(((last ? 0x80000000 : 0) + value) >>> 0));
173
+ }, 0);
174
+ }
175
+ }
176
+ },
177
+ //==== RPC message (RFC 5531 §9) ====
178
+ //The transaction id — an opaque 4-byte value a caller matches its REPLY to, kept as hex.
179
+ xid: {
180
+ type: 'string',
181
+ label: 'XID',
182
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX,
183
+ decode: function () {
184
+ const offset = this.#messageOffset();
185
+ if (this.#payloadEnd() < offset + 4)
186
+ return;
187
+ this.instance.xid.setValue((0, BufferToHex_1.BufferToHex)(this.readBytes(offset, 4)));
188
+ },
189
+ encode: function () {
190
+ this.writeBytes(this.#messageOffset(), (0, HexToBuffer_1.HexToBuffer)(this.instance.xid.getValue('00000000')));
191
+ }
192
+ },
193
+ //0 = CALL, 1 = REPLY. Drives whether the fixed CALL identity words are structured below.
194
+ msgType: {
195
+ type: 'integer',
196
+ label: 'Message Type',
197
+ minimum: 0,
198
+ maximum: 4294967295,
199
+ decode: function () {
200
+ const offset = this.#messageOffset() + 4;
201
+ if (this.#payloadEnd() < offset + 4)
202
+ return;
203
+ this.instance.msgType.setValue((0, BufferToNumber_1.BufferToUInt32)(this.readBytes(offset, 4)));
204
+ },
205
+ encode: function () {
206
+ const node = this.instance.msgType;
207
+ let value = node.getValue(0, (nodePath) => this.recordError(nodePath, 'Not Found'));
208
+ if (value > 4294967295) {
209
+ this.recordError(node.getPath(), 'Maximum value is 4294967295');
210
+ value = 4294967295;
211
+ }
212
+ if (value < 0) {
213
+ this.recordError(node.getPath(), 'Minimum value is 0');
214
+ value = 0;
215
+ }
216
+ node.setValue(value);
217
+ this.writeBytes(this.#messageOffset() + 4, (0, NumberToBuffer_1.UInt32ToBuffer)(value));
218
+ }
219
+ },
220
+ //==== CALL identity (RFC 5531 §9, decoded only for msgType == 0) ====
221
+ rpcVersion: this.#callWord('rpcVersion', 8, 'RPC Version'),
222
+ program: this.#callWord('program', 12, 'Program'),
223
+ programVersion: this.#callWord('programVersion', 16, 'Program Version'),
224
+ procedure: this.#callWord('procedure', 20, 'Procedure'),
225
+ //The remainder kept verbatim: for a CALL the credential + verifier + procedure arguments
226
+ //(from message offset 24); for a REPLY / other the whole body (from message offset 8).
227
+ //Bounded by #payloadEnd so a lying length can't read past the transport payload.
228
+ body: {
229
+ type: 'string',
230
+ label: 'Body',
231
+ contentEncoding: StringContentEncodingEnum_1.StringContentEncodingEnum.HEX,
232
+ decode: function () {
233
+ const isCall = this.instance.msgType.getValue(0) === 0;
234
+ const start = this.#messageOffset() + (isCall ? 24 : 8);
235
+ const end = this.#payloadEnd();
236
+ this.instance.body.setValue(end > start ? (0, BufferToHex_1.BufferToHex)(this.readBytes(start, end - start)) : '');
237
+ },
238
+ encode: function () {
239
+ const isCall = this.instance.msgType.getValue(0) === 0;
240
+ const start = this.#messageOffset() + (isCall ? 24 : 8);
241
+ const body = this.instance.body.getValue('');
242
+ if (body)
243
+ this.writeBytes(start, (0, HexToBuffer_1.HexToBuffer)(body));
244
+ }
245
+ }
246
+ }
247
+ };
248
+ }
249
+ match() {
250
+ //SunRPC rides UDP/TCP port 111 (selected via the udpport:111 / tcpport:111 buckets). This stays a
251
+ //port-bucket protocol: matchKeys only, NO heuristicFallback — the signature (XID + a Message Type
252
+ //of 0 or 1) is too weak to claim RPC off port 111, and non-RPC traffic on 111 must fall through to
253
+ //raw. Over TCP the message sits after the 4-byte Record Marking prefix; over UDP it is the first
254
+ //byte. Require the fixed XID + Message Type within the transport payload and a valid Message Type.
255
+ if (!this.prevCodecModule)
256
+ return false;
257
+ const isTcp = this.prevCodecModule.id === 'tcp';
258
+ const isUdp = this.prevCodecModule.id === 'udp';
259
+ if (!isTcp && !isUdp)
260
+ return false;
261
+ const offset = isTcp ? 4 : 0;
262
+ if (this.#payloadEnd() < offset + 8)
263
+ return false;
264
+ const msgType = (0, BufferToNumber_1.BufferToUInt32)(this.readBytes(offset + 4, 4, true));
265
+ return msgType === 0 || msgType === 1;
266
+ }
267
+ }
268
+ exports.SunRPC = SunRPC;
@@ -0,0 +1,21 @@
1
+ import { BaseHeader } from '../abstracts/BaseHeader';
2
+ import { ProtocolJSONSchema } from '../schema/ProtocolJSONSchema';
3
+ import { DemuxProducer } from '../types/DemuxProducer';
4
+ /**
5
+ * Syslog — the BSD/IETF system logging protocol (RFC 3164 / RFC 5424) carried over UDP port 514. A
6
+ * message is text: an optional priority value `<PRI>` (a decimal number in angle brackets, where
7
+ * PRI = facility*8 + severity) followed by the message body. The body's internal structure differs
8
+ * between RFC 3164 (loose: timestamp + host + tag + text) and RFC 5424 (version + timestamp + host +
9
+ * app + procid + msgid + structured-data + msg), so it is kept verbatim as `message` — byte-perfect
10
+ * for either format — with only the PRI split into the facility/severity it encodes (for display).
11
+ */
12
+ export declare class Syslog extends BaseHeader {
13
+ #private;
14
+ get SCHEMA(): ProtocolJSONSchema;
15
+ readonly id: string;
16
+ readonly name: string;
17
+ readonly nickname: string;
18
+ readonly matchKeys: string[];
19
+ match(): boolean;
20
+ readonly demuxProducers: DemuxProducer[];
21
+ }
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Syslog = void 0;
4
+ const BaseHeader_1 = require("../abstracts/BaseHeader");
5
+ /**
6
+ * Syslog — the BSD/IETF system logging protocol (RFC 3164 / RFC 5424) carried over UDP port 514. A
7
+ * message is text: an optional priority value `<PRI>` (a decimal number in angle brackets, where
8
+ * PRI = facility*8 + severity) followed by the message body. The body's internal structure differs
9
+ * between RFC 3164 (loose: timestamp + host + tag + text) and RFC 5424 (version + timestamp + host +
10
+ * app + procid + msgid + structured-data + msg), so it is kept verbatim as `message` — byte-perfect
11
+ * for either format — with only the PRI split into the facility/severity it encodes (for display).
12
+ */
13
+ class Syslog extends BaseHeader_1.BaseHeader {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.id = 'syslog';
17
+ this.name = 'Syslog';
18
+ this.nickname = 'Syslog';
19
+ this.matchKeys = ['udpport:514'];
20
+ //A leaf header — nothing demuxes above Syslog.
21
+ this.demuxProducers = [];
22
+ }
23
+ static #schemaCache;
24
+ get SCHEMA() {
25
+ return (Syslog.#schemaCache ??= Syslog.#buildSchema());
26
+ }
27
+ /** The payload text bounded by the UDP datagram length (so a retained FCS/padding is not absorbed). */
28
+ #payloadText() {
29
+ let available = this.packet.length - this.startPos;
30
+ if (this.prevCodecModule && this.prevCodecModule.id === 'udp') {
31
+ const udpLength = this.prevCodecModule.instance.length.getValue(0);
32
+ if (udpLength >= 8 && udpLength - 8 < available)
33
+ available = udpLength - 8;
34
+ }
35
+ if (available <= 0)
36
+ return '';
37
+ return this.readBytes(0, available).toString('latin1');
38
+ }
39
+ static #buildSchema() {
40
+ return {
41
+ type: 'object',
42
+ summary: 'Syslog <${pri}> ${message}',
43
+ properties: {
44
+ //The whole text message is parsed/emitted here; the fields below carry schema metadata.
45
+ //`pri` is present only when the message begins with a well-formed <PRI>.
46
+ pri: {
47
+ type: 'integer',
48
+ label: 'Priority',
49
+ minimum: 0,
50
+ maximum: 191,
51
+ decode: function () {
52
+ const text = this.#payloadText();
53
+ const match = text.match(/^<(\d{1,3})>([\s\S]*)$/);
54
+ //A well-formed PRI is 0..191 with no leading zeros (RFC 5424 §6.2.1). Only split
55
+ //it off when it is in range AND its digits re-emit identically (String(n)===text)
56
+ //— an out-of-range value ("<999>") or a leading-zero form ("<013>") is not a valid
57
+ //PRI, so the whole payload stays the message. That keeps facility/severity within
58
+ //their schema bounds and round-trips the exact text verbatim (encode re-emits the
59
+ //parsed number, which would otherwise drop leading zeros).
60
+ if (match && Number(match[1]) <= 191 && String(Number(match[1])) === match[1]) {
61
+ const pri = Number(match[1]);
62
+ this.instance.pri.setValue(pri);
63
+ this.instance.facility.setValue(pri >> 3);
64
+ this.instance.severity.setValue(pri & 0x07);
65
+ this.instance.message.setValue(match[2]);
66
+ }
67
+ else {
68
+ //No (valid) priority prefix — keep the whole payload as the message.
69
+ this.instance.message.setValue(text);
70
+ }
71
+ },
72
+ encode: function () {
73
+ const pri = this.instance.pri.getValue();
74
+ const message = this.instance.message.getValue('');
75
+ const text = (pri === undefined || pri === null) ? message : `<${pri}>${message}`;
76
+ this.writeBytes(0, Buffer.from(text, 'latin1'));
77
+ }
78
+ },
79
+ //Derived from PRI (display only; encode reconstructs PRI, not these): facility = PRI>>3,
80
+ //severity = PRI&7.
81
+ facility: { type: 'integer', label: 'Facility', minimum: 0, maximum: 23 },
82
+ severity: { type: 'integer', label: 'Severity', minimum: 0, maximum: 7 },
83
+ message: { type: 'string', label: 'Message' }
84
+ }
85
+ };
86
+ }
87
+ match() {
88
+ return !!this.prevCodecModule && this.prevCodecModule.id === 'udp';
89
+ }
90
+ }
91
+ exports.Syslog = Syslog;
@@ -0,0 +1,19 @@
1
+ import { ProtocolJSONSchema } from '../schema/ProtocolJSONSchema';
2
+ import { BaseHeader } from '../abstracts/BaseHeader';
3
+ import { DemuxProducer } from '../types/DemuxProducer';
4
+ export declare class TCP extends BaseHeader {
5
+ #private;
6
+ /**
7
+ * Calculate TCP Checksum
8
+ * @param tcpHeaderBuffer
9
+ * @protected
10
+ */
11
+ protected calculateTCPChecksum(tcpHeaderBuffer: Buffer): number;
12
+ get SCHEMA(): ProtocolJSONSchema;
13
+ readonly id: string;
14
+ readonly matchKeys: string[];
15
+ readonly demuxProducers: DemuxProducer[];
16
+ readonly name: string;
17
+ readonly nickname: string;
18
+ match(): boolean;
19
+ }