@livekit/rtc-node 0.13.23 → 0.13.25

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 (290) hide show
  1. package/dist/audio_filter.cjs +2 -2
  2. package/dist/audio_filter.cjs.map +1 -1
  3. package/dist/audio_filter.js +1 -1
  4. package/dist/audio_filter.js.map +1 -1
  5. package/dist/audio_frame.cjs +11 -7
  6. package/dist/audio_frame.cjs.map +1 -1
  7. package/dist/audio_frame.d.cts +3 -8
  8. package/dist/audio_frame.d.ts +3 -8
  9. package/dist/audio_frame.d.ts.map +1 -1
  10. package/dist/audio_frame.js +10 -6
  11. package/dist/audio_frame.js.map +1 -1
  12. package/dist/audio_mixer.cjs +11 -4
  13. package/dist/audio_mixer.cjs.map +1 -1
  14. package/dist/audio_mixer.d.cts +1 -6
  15. package/dist/audio_mixer.d.ts +1 -6
  16. package/dist/audio_mixer.d.ts.map +1 -1
  17. package/dist/audio_mixer.js +11 -4
  18. package/dist/audio_mixer.js.map +1 -1
  19. package/dist/audio_resampler.cjs +20 -12
  20. package/dist/audio_resampler.cjs.map +1 -1
  21. package/dist/audio_resampler.d.cts +6 -6
  22. package/dist/audio_resampler.d.ts +6 -6
  23. package/dist/audio_resampler.d.ts.map +1 -1
  24. package/dist/audio_resampler.js +12 -4
  25. package/dist/audio_resampler.js.map +1 -1
  26. package/dist/audio_source.cjs +11 -7
  27. package/dist/audio_source.cjs.map +1 -1
  28. package/dist/audio_source.d.cts +1 -7
  29. package/dist/audio_source.d.ts +1 -7
  30. package/dist/audio_source.d.ts.map +1 -1
  31. package/dist/audio_source.js +8 -3
  32. package/dist/audio_source.js.map +1 -1
  33. package/dist/audio_stream.cjs +17 -5
  34. package/dist/audio_stream.cjs.map +1 -1
  35. package/dist/audio_stream.d.cts +1 -14
  36. package/dist/audio_stream.d.ts +1 -14
  37. package/dist/audio_stream.d.ts.map +1 -1
  38. package/dist/audio_stream.js +16 -4
  39. package/dist/audio_stream.js.map +1 -1
  40. package/dist/data_streams/index.d.cts +2 -10
  41. package/dist/data_streams/index.d.ts +2 -10
  42. package/dist/data_streams/stream_reader.cjs +8 -0
  43. package/dist/data_streams/stream_reader.cjs.map +1 -1
  44. package/dist/data_streams/stream_reader.d.cts +2 -10
  45. package/dist/data_streams/stream_reader.d.ts +2 -10
  46. package/dist/data_streams/stream_reader.d.ts.map +1 -1
  47. package/dist/data_streams/stream_reader.js +8 -0
  48. package/dist/data_streams/stream_reader.js.map +1 -1
  49. package/dist/data_streams/stream_writer.d.cts +2 -10
  50. package/dist/data_streams/stream_writer.d.ts +2 -10
  51. package/dist/data_streams/types.cjs.map +1 -1
  52. package/dist/data_streams/types.d.cts +2 -10
  53. package/dist/data_streams/types.d.ts +2 -10
  54. package/dist/data_streams/types.d.ts.map +1 -1
  55. package/dist/e2ee.cjs +21 -21
  56. package/dist/e2ee.cjs.map +1 -1
  57. package/dist/e2ee.d.cts +1 -2
  58. package/dist/e2ee.d.ts +1 -2
  59. package/dist/e2ee.d.ts.map +1 -1
  60. package/dist/e2ee.js +2 -2
  61. package/dist/e2ee.js.map +1 -1
  62. package/dist/ffi_client.cjs +11 -12
  63. package/dist/ffi_client.cjs.map +1 -1
  64. package/dist/ffi_client.d.cts +3 -16
  65. package/dist/ffi_client.d.ts +3 -16
  66. package/dist/ffi_client.d.ts.map +1 -1
  67. package/dist/ffi_client.js +5 -3
  68. package/dist/ffi_client.js.map +1 -1
  69. package/dist/frame_processor.cjs +13 -2
  70. package/dist/frame_processor.cjs.map +1 -1
  71. package/dist/frame_processor.d.cts +5 -8
  72. package/dist/frame_processor.d.ts +5 -8
  73. package/dist/frame_processor.d.ts.map +1 -1
  74. package/dist/frame_processor.js +10 -1
  75. package/dist/frame_processor.js.map +1 -1
  76. package/dist/index.cjs +25 -23
  77. package/dist/index.cjs.map +1 -1
  78. package/dist/index.d.cts +3 -16
  79. package/dist/index.d.ts +3 -16
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +9 -7
  82. package/dist/index.js.map +1 -1
  83. package/dist/log.cjs +1 -10
  84. package/dist/log.cjs.map +1 -1
  85. package/dist/log.d.cts +4 -0
  86. package/dist/log.d.ts +4 -0
  87. package/dist/log.d.ts.map +1 -1
  88. package/dist/log.js +1 -10
  89. package/dist/log.js.map +1 -1
  90. package/dist/participant.cjs +38 -38
  91. package/dist/participant.cjs.map +1 -1
  92. package/dist/participant.d.cts +2 -15
  93. package/dist/participant.d.ts +2 -15
  94. package/dist/participant.d.ts.map +1 -1
  95. package/dist/participant.js +12 -12
  96. package/dist/participant.js.map +1 -1
  97. package/dist/room.cjs +48 -30
  98. package/dist/room.cjs.map +1 -1
  99. package/dist/room.d.cts +11 -16
  100. package/dist/room.d.ts +11 -16
  101. package/dist/room.d.ts.map +1 -1
  102. package/dist/room.js +44 -26
  103. package/dist/room.js.map +1 -1
  104. package/dist/rpc.cjs.map +1 -1
  105. package/dist/rpc.d.cts +1 -2
  106. package/dist/rpc.d.ts +1 -2
  107. package/dist/rpc.d.ts.map +1 -1
  108. package/dist/rpc.js.map +1 -1
  109. package/dist/{stream_reader-Ch2zvjU3.d.cts → stream_reader-CuG4b8Y-.d.cts} +1 -1
  110. package/dist/{stream_reader-DRyR29vo.d.ts → stream_reader-CuG4b8Y-.d.ts} +1 -1
  111. package/dist/track.cjs +3 -3
  112. package/dist/track.cjs.map +1 -1
  113. package/dist/track.d.cts +1 -14
  114. package/dist/track.d.ts +1 -14
  115. package/dist/track.d.ts.map +1 -1
  116. package/dist/track.js +1 -1
  117. package/dist/track.js.map +1 -1
  118. package/dist/track_publication.cjs +4 -4
  119. package/dist/track_publication.cjs.map +1 -1
  120. package/dist/track_publication.d.cts +1 -14
  121. package/dist/track_publication.d.ts +1 -14
  122. package/dist/track_publication.d.ts.map +1 -1
  123. package/dist/track_publication.js +2 -2
  124. package/dist/track_publication.js.map +1 -1
  125. package/dist/version.cjs +1 -1
  126. package/dist/version.cjs.map +1 -1
  127. package/dist/version.d.cts +1 -1
  128. package/dist/version.d.ts +1 -1
  129. package/dist/version.js +1 -1
  130. package/dist/version.js.map +1 -1
  131. package/dist/video_frame.cjs +42 -42
  132. package/dist/video_frame.cjs.map +1 -1
  133. package/dist/video_frame.d.cts +1 -6
  134. package/dist/video_frame.d.ts +1 -6
  135. package/dist/video_frame.d.ts.map +1 -1
  136. package/dist/video_frame.js +2 -2
  137. package/dist/video_frame.js.map +1 -1
  138. package/dist/video_source.cjs +5 -5
  139. package/dist/video_source.cjs.map +1 -1
  140. package/dist/video_source.d.cts +1 -14
  141. package/dist/video_source.d.ts +1 -14
  142. package/dist/video_source.d.ts.map +1 -1
  143. package/dist/video_source.js +2 -2
  144. package/dist/video_source.js.map +1 -1
  145. package/dist/video_stream.cjs +12 -4
  146. package/dist/video_stream.cjs.map +1 -1
  147. package/dist/video_stream.d.cts +1 -14
  148. package/dist/video_stream.d.ts +1 -14
  149. package/dist/video_stream.d.ts.map +1 -1
  150. package/dist/video_stream.js +10 -2
  151. package/dist/video_stream.js.map +1 -1
  152. package/package.json +9 -35
  153. package/src/audio_filter.ts +2 -2
  154. package/src/audio_frame.ts +26 -7
  155. package/src/audio_mixer.ts +15 -4
  156. package/src/audio_resampler.ts +14 -4
  157. package/src/audio_source.ts +13 -5
  158. package/src/audio_stream.ts +21 -5
  159. package/src/data_streams/stream_reader.ts +19 -1
  160. package/src/data_streams/types.ts +1 -1
  161. package/src/e2ee.ts +3 -3
  162. package/src/ffi_client.ts +7 -5
  163. package/src/frame_processor.ts +21 -0
  164. package/src/index.ts +6 -5
  165. package/src/log.ts +14 -10
  166. package/src/participant.ts +17 -17
  167. package/src/room.ts +65 -38
  168. package/src/rpc.ts +1 -1
  169. package/src/tests/e2e.test.ts +517 -0
  170. package/src/track.ts +4 -4
  171. package/src/track_publication.ts +6 -6
  172. package/src/version.ts +1 -1
  173. package/src/video_frame.ts +3 -3
  174. package/src/video_source.ts +3 -3
  175. package/src/video_stream.ts +15 -3
  176. package/Cargo.toml +0 -25
  177. package/build.rs +0 -9
  178. package/dist/napi/native.cjs +0 -301
  179. package/dist/napi/native.d.cjs +0 -17
  180. package/dist/napi/native.d.cjs.map +0 -1
  181. package/dist/napi/native.d.d.cts +0 -21
  182. package/dist/napi/native.d.d.ts +0 -21
  183. package/dist/napi/native.d.js +0 -1
  184. package/dist/napi/native.d.js.map +0 -1
  185. package/dist/napi/native.d.ts +0 -19
  186. package/dist/napi/native.js +0 -15
  187. package/dist/native.cjs +0 -301
  188. package/dist/native.d.ts +0 -19
  189. package/dist/native.js +0 -15
  190. package/dist/proto/audio_frame_pb.cjs +0 -1357
  191. package/dist/proto/audio_frame_pb.cjs.map +0 -1
  192. package/dist/proto/audio_frame_pb.d.cts +0 -1183
  193. package/dist/proto/audio_frame_pb.d.ts +0 -1183
  194. package/dist/proto/audio_frame_pb.d.ts.map +0 -1
  195. package/dist/proto/audio_frame_pb.js +0 -1283
  196. package/dist/proto/audio_frame_pb.js.map +0 -1
  197. package/dist/proto/data_stream_pb.cjs +0 -1638
  198. package/dist/proto/data_stream_pb.cjs.map +0 -1
  199. package/dist/proto/data_stream_pb.d.cts +0 -1449
  200. package/dist/proto/data_stream_pb.d.ts +0 -1449
  201. package/dist/proto/data_stream_pb.d.ts.map +0 -1
  202. package/dist/proto/data_stream_pb.js +0 -1559
  203. package/dist/proto/data_stream_pb.js.map +0 -1
  204. package/dist/proto/e2ee_pb.cjs +0 -746
  205. package/dist/proto/e2ee_pb.cjs.map +0 -1
  206. package/dist/proto/e2ee_pb.d.cts +0 -653
  207. package/dist/proto/e2ee_pb.d.ts +0 -653
  208. package/dist/proto/e2ee_pb.d.ts.map +0 -1
  209. package/dist/proto/e2ee_pb.js +0 -696
  210. package/dist/proto/e2ee_pb.js.map +0 -1
  211. package/dist/proto/ffi_pb.cjs +0 -477
  212. package/dist/proto/ffi_pb.cjs.map +0 -1
  213. package/dist/proto/ffi_pb.d.cts +0 -1321
  214. package/dist/proto/ffi_pb.d.ts +0 -1321
  215. package/dist/proto/ffi_pb.d.ts.map +0 -1
  216. package/dist/proto/ffi_pb.js +0 -444
  217. package/dist/proto/ffi_pb.js.map +0 -1
  218. package/dist/proto/handle_pb.cjs +0 -53
  219. package/dist/proto/handle_pb.cjs.map +0 -1
  220. package/dist/proto/handle_pb.d.cts +0 -31
  221. package/dist/proto/handle_pb.d.ts +0 -31
  222. package/dist/proto/handle_pb.d.ts.map +0 -1
  223. package/dist/proto/handle_pb.js +0 -29
  224. package/dist/proto/handle_pb.js.map +0 -1
  225. package/dist/proto/participant_pb.cjs +0 -173
  226. package/dist/proto/participant_pb.cjs.map +0 -1
  227. package/dist/proto/participant_pb.d.cts +0 -218
  228. package/dist/proto/participant_pb.d.ts +0 -218
  229. package/dist/proto/participant_pb.d.ts.map +0 -1
  230. package/dist/proto/participant_pb.js +0 -145
  231. package/dist/proto/participant_pb.js.map +0 -1
  232. package/dist/proto/room_pb.cjs +0 -3374
  233. package/dist/proto/room_pb.cjs.map +0 -1
  234. package/dist/proto/room_pb.d.cts +0 -3028
  235. package/dist/proto/room_pb.d.ts +0 -3028
  236. package/dist/proto/room_pb.d.ts.map +0 -1
  237. package/dist/proto/room_pb.js +0 -3232
  238. package/dist/proto/room_pb.js.map +0 -1
  239. package/dist/proto/rpc_pb.cjs +0 -328
  240. package/dist/proto/rpc_pb.cjs.map +0 -1
  241. package/dist/proto/rpc_pb.d.cts +0 -267
  242. package/dist/proto/rpc_pb.d.ts +0 -267
  243. package/dist/proto/rpc_pb.d.ts.map +0 -1
  244. package/dist/proto/rpc_pb.js +0 -294
  245. package/dist/proto/rpc_pb.js.map +0 -1
  246. package/dist/proto/stats_pb.cjs +0 -1370
  247. package/dist/proto/stats_pb.cjs.map +0 -1
  248. package/dist/proto/stats_pb.d.cts +0 -1764
  249. package/dist/proto/stats_pb.d.ts +0 -1764
  250. package/dist/proto/stats_pb.d.ts.map +0 -1
  251. package/dist/proto/stats_pb.js +0 -1300
  252. package/dist/proto/stats_pb.js.map +0 -1
  253. package/dist/proto/track_pb.cjs +0 -630
  254. package/dist/proto/track_pb.cjs.map +0 -1
  255. package/dist/proto/track_pb.d.cts +0 -542
  256. package/dist/proto/track_pb.d.ts +0 -542
  257. package/dist/proto/track_pb.d.ts.map +0 -1
  258. package/dist/proto/track_pb.js +0 -584
  259. package/dist/proto/track_pb.js.map +0 -1
  260. package/dist/proto/track_publication_pb.cjs +0 -194
  261. package/dist/proto/track_publication_pb.cjs.map +0 -1
  262. package/dist/proto/track_publication_pb.d.cts +0 -135
  263. package/dist/proto/track_publication_pb.d.ts +0 -135
  264. package/dist/proto/track_publication_pb.d.ts.map +0 -1
  265. package/dist/proto/track_publication_pb.js +0 -164
  266. package/dist/proto/track_publication_pb.js.map +0 -1
  267. package/dist/proto/video_frame_pb.cjs +0 -723
  268. package/dist/proto/video_frame_pb.cjs.map +0 -1
  269. package/dist/proto/video_frame_pb.d.cts +0 -667
  270. package/dist/proto/video_frame_pb.d.ts +0 -667
  271. package/dist/proto/video_frame_pb.d.ts.map +0 -1
  272. package/dist/proto/video_frame_pb.js +0 -673
  273. package/dist/proto/video_frame_pb.js.map +0 -1
  274. package/src/lib.rs +0 -9
  275. package/src/napi/native.cjs +0 -301
  276. package/src/napi/native.d.ts +0 -19
  277. package/src/napi/native.js +0 -15
  278. package/src/nodejs.rs +0 -134
  279. package/src/proto/audio_frame_pb.ts +0 -2270
  280. package/src/proto/data_stream_pb.ts +0 -2674
  281. package/src/proto/e2ee_pb.ts +0 -1231
  282. package/src/proto/ffi_pb.ts +0 -1700
  283. package/src/proto/handle_pb.ts +0 -69
  284. package/src/proto/participant_pb.ts +0 -351
  285. package/src/proto/room_pb.ts +0 -5661
  286. package/src/proto/rpc_pb.ts +0 -539
  287. package/src/proto/stats_pb.ts +0 -3050
  288. package/src/proto/track_pb.ts +0 -1040
  289. package/src/proto/track_publication_pb.ts +0 -284
  290. package/src/proto/video_frame_pb.ts +0 -1236
package/dist/e2ee.d.cts CHANGED
@@ -1,5 +1,4 @@
1
- import { EncryptionType } from './proto/e2ee_pb.cjs';
2
- import '@bufbuild/protobuf';
1
+ import { EncryptionType } from '@livekit/rtc-ffi-bindings';
3
2
 
4
3
  interface KeyProviderOptions {
5
4
  sharedKey?: Uint8Array;
package/dist/e2ee.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { EncryptionType } from './proto/e2ee_pb.js';
2
- import '@bufbuild/protobuf';
1
+ import { EncryptionType } from '@livekit/rtc-ffi-bindings';
3
2
 
4
3
  interface KeyProviderOptions {
5
4
  sharedKey?: Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"e2ee.d.ts","sourceRoot":"","sources":["../src/e2ee.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,cAAc,EASf,MAAM,oBAAoB,CAAC;AAM5B,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAIvC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAE,WAGhC,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,EAAE,kBAAkB,CAAC;IAE5B,eAAe;gBACH,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB;IAKxD,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAoBpD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAqB7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAqB9C,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAoBpD,SAAS,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAsBpE,UAAU,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;CAqBtE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;gBAEL,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAO/F,UAAU,CAAC,OAAO,EAAE,OAAO;IAqB3B,WAAW,CAAC,QAAQ,EAAE,MAAM;CAoB7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,EAAE,OAAO,CAAC;gBAEL,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAWlD,UAAU,CAAC,OAAO,EAAE,OAAO;IAoB3B,aAAa,IAAI,YAAY,EAAE;CA8BhC"}
1
+ {"version":3,"file":"e2ee.d.ts","sourceRoot":"","sources":["../src/e2ee.ts"],"names":[],"mappings":"AAWA,OAAO,EAGL,cAAc,EASf,MAAM,2BAA2B,CAAC;AAOnC,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAIvC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAE,WAGhC,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,EAAE,kBAAkB,CAAC;IAE5B,eAAe;gBACH,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB;IAKxD,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAoBpD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAqB7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAqB9C,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAoBpD,SAAS,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAsBpE,UAAU,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;CAqBtE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;gBAEL,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAO/F,UAAU,CAAC,OAAO,EAAE,OAAO;IAqB3B,WAAW,CAAC,QAAQ,EAAE,MAAM;CAoB7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,EAAE,OAAO,CAAC;gBAEL,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAWlD,UAAU,CAAC,OAAO,EAAE,OAAO;IAoB3B,aAAa,IAAI,YAAY,EAAE;CA8BhC"}
package/dist/e2ee.js CHANGED
@@ -1,4 +1,3 @@
1
- import { FfiClient } from "./ffi_client.js";
2
1
  import {
3
2
  E2eeManagerSetEnabledRequest,
4
3
  E2eeRequest,
@@ -11,7 +10,8 @@ import {
11
10
  RatchetSharedKeyRequest,
12
11
  SetKeyRequest,
13
12
  SetSharedKeyRequest
14
- } from "./proto/e2ee_pb.js";
13
+ } from "@livekit/rtc-ffi-bindings";
14
+ import { FfiClient } from "./ffi_client.js";
15
15
  const DEFAULT_RATCHET_SALT = new TextEncoder().encode("LKFrameEncryptionKey");
16
16
  const DEFAULT_RATCHET_WINDOW_SIZE = 16;
17
17
  const DEFAULT_FAILURE_TOLERANCE = -1;
package/dist/e2ee.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/e2ee.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { FfiClient } from './ffi_client.js';\nimport type {\n E2eeManagerGetFrameCryptorsResponse,\n E2eeResponse,\n GetKeyResponse,\n GetSharedKeyResponse,\n RatchetKeyResponse,\n RatchetSharedKeyResponse,\n} from './proto/e2ee_pb.js';\nimport {\n E2eeManagerSetEnabledRequest,\n E2eeRequest,\n EncryptionType,\n FrameCryptorSetEnabledRequest,\n FrameCryptorSetKeyIndexRequest,\n GetKeyRequest,\n GetSharedKeyRequest,\n RatchetKeyRequest,\n RatchetSharedKeyRequest,\n SetKeyRequest,\n SetSharedKeyRequest,\n} from './proto/e2ee_pb.js';\n\nconst DEFAULT_RATCHET_SALT = new TextEncoder().encode('LKFrameEncryptionKey');\nconst DEFAULT_RATCHET_WINDOW_SIZE = 16;\nconst DEFAULT_FAILURE_TOLERANCE = -1;\n\nexport interface KeyProviderOptions {\n sharedKey?: Uint8Array;\n ratchetSalt?: Uint8Array;\n ratchetWindowSize?: number;\n failureTolerance?: number;\n}\n\nexport const defaultKeyProviderOptions: KeyProviderOptions = {\n ratchetSalt: DEFAULT_RATCHET_SALT,\n ratchetWindowSize: DEFAULT_RATCHET_WINDOW_SIZE,\n failureTolerance: DEFAULT_FAILURE_TOLERANCE,\n};\n\nexport interface E2EEOptions {\n keyProviderOptions: KeyProviderOptions;\n encryptionType?: EncryptionType;\n}\n\nexport const defaultE2EEOptions: E2EEOptions = {\n keyProviderOptions: defaultKeyProviderOptions,\n encryptionType: EncryptionType.GCM,\n};\n\nexport class KeyProvider {\n private roomHandle: bigint;\n options: KeyProviderOptions;\n\n /** internal */\n constructor(roomHandle: bigint, opts: KeyProviderOptions) {\n this.roomHandle = roomHandle;\n this.options = opts;\n }\n\n setSharedKey(sharedKey: Uint8Array, keyIndex: number) {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'setSharedKey',\n value: new SetSharedKeyRequest({\n keyIndex: keyIndex,\n sharedKey: sharedKey,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n\n exportSharedKey(keyIndex: number): Uint8Array {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'getSharedKey',\n value: new GetSharedKeyRequest({\n keyIndex: keyIndex,\n }),\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n return (res.message.value as GetSharedKeyResponse).key!;\n }\n\n ratchetSharedKey(keyIndex: number): Uint8Array {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'ratchetSharedKey',\n value: new RatchetSharedKeyRequest({\n keyIndex: keyIndex,\n }),\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n return (res.message.value as RatchetSharedKeyResponse).newKey!;\n }\n\n setKey(participantIdentity: string, keyIndex: number) {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'setKey',\n value: new SetKeyRequest({\n keyIndex: keyIndex,\n participantIdentity: participantIdentity,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n\n exportKey(participantIdentity: string, keyIndex: number): Uint8Array {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'getKey',\n value: new GetKeyRequest({\n keyIndex: keyIndex,\n participantIdentity: participantIdentity,\n }),\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n return (res.message.value as GetKeyResponse).key!;\n }\n\n ratchetKey(participantIdentity: string, keyIndex: number): Uint8Array {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'ratchetKey',\n value: new RatchetKeyRequest({\n keyIndex: keyIndex,\n participantIdentity: participantIdentity,\n }),\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n return (res.message.value as RatchetKeyResponse).newKey!;\n }\n}\n\nexport class FrameCryptor {\n private roomHandle = BigInt(0);\n participantIdentity: string;\n keyIndex: number;\n enabled: boolean;\n\n constructor(roomHandle: bigint, participantIdentity: string, keyIndex: number, enabled: boolean) {\n this.roomHandle = roomHandle;\n this.participantIdentity = participantIdentity;\n this.keyIndex = keyIndex;\n this.enabled = enabled;\n }\n\n setEnabled(enabled: boolean) {\n this.enabled = enabled;\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'cryptorSetEnabled',\n value: new FrameCryptorSetEnabledRequest({\n participantIdentity: this.participantIdentity,\n enabled: this.enabled,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n\n setKeyIndex(keyIndex: number) {\n this.keyIndex = keyIndex;\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'cryptorSetKeyIndex',\n value: new FrameCryptorSetKeyIndexRequest({\n participantIdentity: this.participantIdentity,\n keyIndex: this.keyIndex,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n}\n\nexport class E2EEManager {\n private roomHandle = BigInt(0);\n private options: E2EEOptions;\n private keyProvider: KeyProvider;\n\n enabled: boolean;\n\n constructor(roomHandle: bigint, opts?: E2EEOptions) {\n this.roomHandle = roomHandle;\n this.enabled = opts !== undefined;\n\n opts ??= defaultE2EEOptions;\n const options = { ...defaultE2EEOptions, ...opts };\n\n this.options = options;\n this.keyProvider = new KeyProvider(roomHandle, options.keyProviderOptions);\n }\n\n setEnabled(enabled: boolean) {\n this.enabled = enabled;\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'managerSetEnabled',\n value: new E2eeManagerSetEnabledRequest({\n enabled: this.enabled,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n\n frameCryptors(): FrameCryptor[] {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'managerGetFrameCryptors',\n value: {},\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n const frameCryptors = (\n res.message.value as E2eeManagerGetFrameCryptorsResponse\n ).frameCryptors.map(\n (cryptor) =>\n new FrameCryptor(\n this.roomHandle,\n cryptor.participantIdentity!,\n cryptor.keyIndex!,\n cryptor.enabled!,\n ),\n );\n\n return frameCryptors;\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/e2ee.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type {\n E2eeManagerGetFrameCryptorsResponse,\n E2eeResponse,\n GetKeyResponse,\n GetSharedKeyResponse,\n RatchetKeyResponse,\n RatchetSharedKeyResponse,\n} from '@livekit/rtc-ffi-bindings';\nimport {\n E2eeManagerSetEnabledRequest,\n E2eeRequest,\n EncryptionType,\n FrameCryptorSetEnabledRequest,\n FrameCryptorSetKeyIndexRequest,\n GetKeyRequest,\n GetSharedKeyRequest,\n RatchetKeyRequest,\n RatchetSharedKeyRequest,\n SetKeyRequest,\n SetSharedKeyRequest,\n} from '@livekit/rtc-ffi-bindings';\nimport { FfiClient } from './ffi_client.js';\n\nconst DEFAULT_RATCHET_SALT = new TextEncoder().encode('LKFrameEncryptionKey');\nconst DEFAULT_RATCHET_WINDOW_SIZE = 16;\nconst DEFAULT_FAILURE_TOLERANCE = -1;\n\nexport interface KeyProviderOptions {\n sharedKey?: Uint8Array;\n ratchetSalt?: Uint8Array;\n ratchetWindowSize?: number;\n failureTolerance?: number;\n}\n\nexport const defaultKeyProviderOptions: KeyProviderOptions = {\n ratchetSalt: DEFAULT_RATCHET_SALT,\n ratchetWindowSize: DEFAULT_RATCHET_WINDOW_SIZE,\n failureTolerance: DEFAULT_FAILURE_TOLERANCE,\n};\n\nexport interface E2EEOptions {\n keyProviderOptions: KeyProviderOptions;\n encryptionType?: EncryptionType;\n}\n\nexport const defaultE2EEOptions: E2EEOptions = {\n keyProviderOptions: defaultKeyProviderOptions,\n encryptionType: EncryptionType.GCM,\n};\n\nexport class KeyProvider {\n private roomHandle: bigint;\n options: KeyProviderOptions;\n\n /** internal */\n constructor(roomHandle: bigint, opts: KeyProviderOptions) {\n this.roomHandle = roomHandle;\n this.options = opts;\n }\n\n setSharedKey(sharedKey: Uint8Array, keyIndex: number) {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'setSharedKey',\n value: new SetSharedKeyRequest({\n keyIndex: keyIndex,\n sharedKey: sharedKey,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n\n exportSharedKey(keyIndex: number): Uint8Array {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'getSharedKey',\n value: new GetSharedKeyRequest({\n keyIndex: keyIndex,\n }),\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n return (res.message.value as GetSharedKeyResponse).key!;\n }\n\n ratchetSharedKey(keyIndex: number): Uint8Array {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'ratchetSharedKey',\n value: new RatchetSharedKeyRequest({\n keyIndex: keyIndex,\n }),\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n return (res.message.value as RatchetSharedKeyResponse).newKey!;\n }\n\n setKey(participantIdentity: string, keyIndex: number) {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'setKey',\n value: new SetKeyRequest({\n keyIndex: keyIndex,\n participantIdentity: participantIdentity,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n\n exportKey(participantIdentity: string, keyIndex: number): Uint8Array {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'getKey',\n value: new GetKeyRequest({\n keyIndex: keyIndex,\n participantIdentity: participantIdentity,\n }),\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n return (res.message.value as GetKeyResponse).key!;\n }\n\n ratchetKey(participantIdentity: string, keyIndex: number): Uint8Array {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'ratchetKey',\n value: new RatchetKeyRequest({\n keyIndex: keyIndex,\n participantIdentity: participantIdentity,\n }),\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n return (res.message.value as RatchetKeyResponse).newKey!;\n }\n}\n\nexport class FrameCryptor {\n private roomHandle = BigInt(0);\n participantIdentity: string;\n keyIndex: number;\n enabled: boolean;\n\n constructor(roomHandle: bigint, participantIdentity: string, keyIndex: number, enabled: boolean) {\n this.roomHandle = roomHandle;\n this.participantIdentity = participantIdentity;\n this.keyIndex = keyIndex;\n this.enabled = enabled;\n }\n\n setEnabled(enabled: boolean) {\n this.enabled = enabled;\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'cryptorSetEnabled',\n value: new FrameCryptorSetEnabledRequest({\n participantIdentity: this.participantIdentity,\n enabled: this.enabled,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n\n setKeyIndex(keyIndex: number) {\n this.keyIndex = keyIndex;\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'cryptorSetKeyIndex',\n value: new FrameCryptorSetKeyIndexRequest({\n participantIdentity: this.participantIdentity,\n keyIndex: this.keyIndex,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n}\n\nexport class E2EEManager {\n private roomHandle = BigInt(0);\n private options: E2EEOptions;\n private keyProvider: KeyProvider;\n\n enabled: boolean;\n\n constructor(roomHandle: bigint, opts?: E2EEOptions) {\n this.roomHandle = roomHandle;\n this.enabled = opts !== undefined;\n\n opts ??= defaultE2EEOptions;\n const options = { ...defaultE2EEOptions, ...opts };\n\n this.options = options;\n this.keyProvider = new KeyProvider(roomHandle, options.keyProviderOptions);\n }\n\n setEnabled(enabled: boolean) {\n this.enabled = enabled;\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'managerSetEnabled',\n value: new E2eeManagerSetEnabledRequest({\n enabled: this.enabled,\n }),\n },\n });\n\n FfiClient.instance.request({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n }\n\n frameCryptors(): FrameCryptor[] {\n const req = new E2eeRequest({\n roomHandle: this.roomHandle,\n message: {\n case: 'managerGetFrameCryptors',\n value: {},\n },\n });\n\n const res = FfiClient.instance.request<E2eeResponse>({\n message: {\n case: 'e2ee',\n value: req,\n },\n });\n\n const frameCryptors = (\n res.message.value as E2eeManagerGetFrameCryptorsResponse\n ).frameCryptors.map(\n (cryptor) =>\n new FrameCryptor(\n this.roomHandle,\n cryptor.participantIdentity!,\n cryptor.keyIndex!,\n cryptor.enabled!,\n ),\n );\n\n return frameCryptors;\n }\n}\n"],"mappings":"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","names":[]}
@@ -30,14 +30,13 @@ var ffi_client_exports = {};
30
30
  __export(ffi_client_exports, {
31
31
  FfiClient: () => FfiClient,
32
32
  FfiClientEvent: () => FfiClientEvent,
33
- FfiHandle: () => import_native.FfiHandle,
34
- FfiRequest: () => import_ffi_pb.FfiRequest,
35
- dispose: () => import_native.livekitDispose
33
+ FfiHandle: () => import_rtc_ffi_bindings.FfiHandle,
34
+ FfiRequest: () => import_rtc_ffi_bindings.FfiRequest,
35
+ dispose: () => import_rtc_ffi_bindings.livekitDispose
36
36
  });
37
37
  module.exports = __toCommonJS(ffi_client_exports);
38
+ var import_rtc_ffi_bindings = require("@livekit/rtc-ffi-bindings");
38
39
  var import_events = __toESM(require("events"), 1);
39
- var import_native = require("./napi/native.cjs");
40
- var import_ffi_pb = require("./proto/ffi_pb.cjs");
41
40
  var import_version = require("./version.cjs");
42
41
  var FfiClientEvent = /* @__PURE__ */ ((FfiClientEvent2) => {
43
42
  FfiClientEvent2["FfiEvent"] = "ffi_event";
@@ -54,9 +53,9 @@ class FfiClient extends import_events.default {
54
53
  constructor() {
55
54
  super();
56
55
  this.setMaxListeners(0);
57
- (0, import_native.livekitInitialize)(
56
+ (0, import_rtc_ffi_bindings.livekitInitialize)(
58
57
  (event_data) => {
59
- const event = import_ffi_pb.FfiEvent.fromBinary(event_data);
58
+ const event = import_rtc_ffi_bindings.FfiEvent.fromBinary(event_data);
60
59
  this.emit("ffi_event" /* FfiEvent */, event);
61
60
  },
62
61
  true,
@@ -64,16 +63,16 @@ class FfiClient extends import_events.default {
64
63
  );
65
64
  }
66
65
  request(req) {
67
- const request = new import_ffi_pb.FfiRequest(req);
66
+ const request = new import_rtc_ffi_bindings.FfiRequest(req);
68
67
  const req_data = request.toBinary();
69
- const res_data = (0, import_native.livekitFfiRequest)(req_data);
70
- return import_ffi_pb.FfiResponse.fromBinary(res_data).message.value;
68
+ const res_data = (0, import_rtc_ffi_bindings.livekitFfiRequest)(req_data);
69
+ return import_rtc_ffi_bindings.FfiResponse.fromBinary(res_data).message.value;
71
70
  }
72
71
  copyBuffer(ptr, len) {
73
- return (0, import_native.livekitCopyBuffer)(ptr, len);
72
+ return (0, import_rtc_ffi_bindings.livekitCopyBuffer)(ptr, len);
74
73
  }
75
74
  retrievePtr(data) {
76
- return (0, import_native.livekitRetrievePtr)(data);
75
+ return (0, import_rtc_ffi_bindings.livekitRetrievePtr)(data);
77
76
  }
78
77
  async waitFor(predicate) {
79
78
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ffi_client.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { PartialMessage } from '@bufbuild/protobuf';\nimport type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';\nimport EventEmitter from 'events';\nimport {\n FfiHandle,\n livekitCopyBuffer,\n livekitDispose,\n livekitFfiRequest,\n livekitInitialize,\n livekitRetrievePtr,\n} from './napi/native.js';\nimport { FfiEvent, FfiRequest, FfiResponse } from './proto/ffi_pb.js';\nimport { SDK_VERSION } from './version.js';\n\nexport { FfiHandle, type FfiEvent, type FfiResponse, FfiRequest, livekitDispose as dispose };\n\nexport type FfiClientCallbacks = {\n ffi_event: (event: FfiEvent) => void;\n};\n\nexport enum FfiClientEvent {\n FfiEvent = 'ffi_event',\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var _ffiClientInstance: FfiClient | undefined;\n}\n\nexport class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClientCallbacks>) {\n /** @internal */\n static get instance(): FfiClient {\n if (!globalThis._ffiClientInstance) {\n globalThis._ffiClientInstance = new FfiClient();\n }\n return globalThis._ffiClientInstance;\n }\n\n constructor() {\n super();\n this.setMaxListeners(0);\n\n livekitInitialize(\n (event_data: Uint8Array) => {\n const event = FfiEvent.fromBinary(event_data);\n this.emit(FfiClientEvent.FfiEvent, event);\n },\n true,\n SDK_VERSION,\n );\n }\n\n request<T>(req: PartialMessage<FfiRequest>): T {\n const request = new FfiRequest(req);\n const req_data = request.toBinary();\n const res_data = livekitFfiRequest(req_data);\n return FfiResponse.fromBinary(res_data).message.value as T;\n }\n\n copyBuffer(ptr: bigint, len: number): Uint8Array {\n return livekitCopyBuffer(ptr, len);\n }\n\n retrievePtr(data: Uint8Array): bigint {\n return livekitRetrievePtr(data);\n }\n\n async waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T> {\n return new Promise<T>((resolve) => {\n const listener = (ev: FfiEvent) => {\n if (predicate(ev)) {\n this.off(FfiClientEvent.FfiEvent, listener);\n resolve(ev.message.value as T);\n }\n };\n this.on(FfiClientEvent.FfiEvent, listener);\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAAyB;AACzB,oBAOO;AACP,oBAAkD;AAClD,qBAA4B;AAQrB,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,cAAW;AADD,SAAAA;AAAA,GAAA;AASL,MAAM,kBAAmB,cAAAC,QAA4D;AAAA;AAAA,EAE1F,WAAW,WAAsB;AAC/B,QAAI,CAAC,WAAW,oBAAoB;AAClC,iBAAW,qBAAqB,IAAI,UAAU;AAAA,IAChD;AACA,WAAO,WAAW;AAAA,EACpB;AAAA,EAEA,cAAc;AACZ,UAAM;AACN,SAAK,gBAAgB,CAAC;AAEtB;AAAA,MACE,CAAC,eAA2B;AAC1B,cAAM,QAAQ,uBAAS,WAAW,UAAU;AAC5C,aAAK,KAAK,4BAAyB,KAAK;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAW,KAAoC;AAC7C,UAAM,UAAU,IAAI,yBAAW,GAAG;AAClC,UAAM,WAAW,QAAQ,SAAS;AAClC,UAAM,eAAW,iCAAkB,QAAQ;AAC3C,WAAO,0BAAY,WAAW,QAAQ,EAAE,QAAQ;AAAA,EAClD;AAAA,EAEA,WAAW,KAAa,KAAyB;AAC/C,eAAO,iCAAkB,KAAK,GAAG;AAAA,EACnC;AAAA,EAEA,YAAY,MAA0B;AACpC,eAAO,kCAAmB,IAAI;AAAA,EAChC;AAAA,EAEA,MAAM,QAAW,WAAkD;AACjE,WAAO,IAAI,QAAW,CAAC,YAAY;AACjC,YAAM,WAAW,CAAC,OAAiB;AACjC,YAAI,UAAU,EAAE,GAAG;AACjB,eAAK,IAAI,4BAAyB,QAAQ;AAC1C,kBAAQ,GAAG,QAAQ,KAAU;AAAA,QAC/B;AAAA,MACF;AACA,WAAK,GAAG,4BAAyB,QAAQ;AAAA,IAC3C,CAAC;AAAA,EACH;AACF;","names":["FfiClientEvent","EventEmitter"]}
1
+ {"version":3,"sources":["../src/ffi_client.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport {\n FfiEvent,\n FfiHandle,\n FfiRequest,\n FfiResponse,\n type PartialMessage,\n livekitCopyBuffer,\n livekitDispose,\n livekitFfiRequest,\n livekitInitialize,\n livekitRetrievePtr,\n} from '@livekit/rtc-ffi-bindings';\nimport type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';\nimport EventEmitter from 'events';\nimport { SDK_VERSION } from './version.js';\n\nexport { FfiHandle, type FfiEvent, type FfiResponse, FfiRequest, livekitDispose as dispose };\n\nexport type FfiClientCallbacks = {\n ffi_event: (event: FfiEvent) => void;\n};\n\nexport enum FfiClientEvent {\n FfiEvent = 'ffi_event',\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var _ffiClientInstance: FfiClient | undefined;\n}\n\nexport class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClientCallbacks>) {\n /** @internal */\n static get instance(): FfiClient {\n if (!globalThis._ffiClientInstance) {\n globalThis._ffiClientInstance = new FfiClient();\n }\n return globalThis._ffiClientInstance;\n }\n\n constructor() {\n super();\n this.setMaxListeners(0);\n\n livekitInitialize(\n (event_data: Uint8Array) => {\n const event = FfiEvent.fromBinary(event_data);\n this.emit(FfiClientEvent.FfiEvent, event);\n },\n true,\n SDK_VERSION,\n );\n }\n\n request<T>(req: PartialMessage<FfiRequest>): T {\n const request = new FfiRequest(req);\n const req_data = request.toBinary();\n const res_data = livekitFfiRequest(req_data);\n return FfiResponse.fromBinary(res_data).message.value as T;\n }\n\n copyBuffer(ptr: bigint, len: number): Uint8Array {\n return livekitCopyBuffer(ptr, len);\n }\n\n retrievePtr(data: Uint8Array): bigint {\n return livekitRetrievePtr(data);\n }\n\n async waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T> {\n return new Promise<T>((resolve) => {\n const listener = (ev: FfiEvent) => {\n if (predicate(ev)) {\n this.off(FfiClientEvent.FfiEvent, listener);\n resolve(ev.message.value as T);\n }\n };\n this.on(FfiClientEvent.FfiEvent, listener);\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,8BAWO;AAEP,oBAAyB;AACzB,qBAA4B;AAQrB,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,cAAW;AADD,SAAAA;AAAA,GAAA;AASL,MAAM,kBAAmB,cAAAC,QAA4D;AAAA;AAAA,EAE1F,WAAW,WAAsB;AAC/B,QAAI,CAAC,WAAW,oBAAoB;AAClC,iBAAW,qBAAqB,IAAI,UAAU;AAAA,IAChD;AACA,WAAO,WAAW;AAAA,EACpB;AAAA,EAEA,cAAc;AACZ,UAAM;AACN,SAAK,gBAAgB,CAAC;AAEtB;AAAA,MACE,CAAC,eAA2B;AAC1B,cAAM,QAAQ,iCAAS,WAAW,UAAU;AAC5C,aAAK,KAAK,4BAAyB,KAAK;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAW,KAAoC;AAC7C,UAAM,UAAU,IAAI,mCAAW,GAAG;AAClC,UAAM,WAAW,QAAQ,SAAS;AAClC,UAAM,eAAW,2CAAkB,QAAQ;AAC3C,WAAO,oCAAY,WAAW,QAAQ,EAAE,QAAQ;AAAA,EAClD;AAAA,EAEA,WAAW,KAAa,KAAyB;AAC/C,eAAO,2CAAkB,KAAK,GAAG;AAAA,EACnC;AAAA,EAEA,YAAY,MAA0B;AACpC,eAAO,4CAAmB,IAAI;AAAA,EAChC;AAAA,EAEA,MAAM,QAAW,WAAkD;AACjE,WAAO,IAAI,QAAW,CAAC,YAAY;AACjC,YAAM,WAAW,CAAC,OAAiB;AACjC,YAAI,UAAU,EAAE,GAAG;AACjB,eAAK,IAAI,4BAAyB,QAAQ;AAC1C,kBAAQ,GAAG,QAAQ,KAAU;AAAA,QAC/B;AAAA,MACF;AACA,WAAK,GAAG,4BAAyB,QAAQ;AAAA,IAC3C,CAAC;AAAA,EACH;AACF;","names":["FfiClientEvent","EventEmitter"]}
@@ -1,19 +1,6 @@
1
- import { PartialMessage } from '@bufbuild/protobuf';
1
+ import { FfiEvent, PartialMessage, FfiRequest } from '@livekit/rtc-ffi-bindings';
2
+ export { FfiEvent, FfiHandle, FfiRequest, FfiResponse, livekitDispose as dispose } from '@livekit/rtc-ffi-bindings';
2
3
  import { TypedEventEmitter } from '@livekit/typed-emitter';
3
- export { FfiHandle, livekitDispose as dispose } from './napi/native.d.cjs';
4
- import { FfiEvent, FfiRequest } from './proto/ffi_pb.cjs';
5
- export { FfiResponse } from './proto/ffi_pb.cjs';
6
- import './proto/room_pb.cjs';
7
- import './proto/participant_pb.cjs';
8
- import './proto/handle_pb.cjs';
9
- import './proto/track_pb.cjs';
10
- import './proto/stats_pb.cjs';
11
- import './proto/e2ee_pb.cjs';
12
- import './proto/video_frame_pb.cjs';
13
- import './proto/data_stream_pb.cjs';
14
- import './proto/audio_frame_pb.cjs';
15
- import './proto/rpc_pb.cjs';
16
- import './proto/track_publication_pb.cjs';
17
4
 
18
5
  type FfiClientCallbacks = {
19
6
  ffi_event: (event: FfiEvent) => void;
@@ -35,4 +22,4 @@ declare class FfiClient extends FfiClient_base {
35
22
  waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T>;
36
23
  }
37
24
 
38
- export { FfiClient, type FfiClientCallbacks, FfiClientEvent, FfiEvent, FfiRequest };
25
+ export { FfiClient, type FfiClientCallbacks, FfiClientEvent };
@@ -1,19 +1,6 @@
1
- import { PartialMessage } from '@bufbuild/protobuf';
1
+ import { FfiEvent, PartialMessage, FfiRequest } from '@livekit/rtc-ffi-bindings';
2
+ export { FfiEvent, FfiHandle, FfiRequest, FfiResponse, livekitDispose as dispose } from '@livekit/rtc-ffi-bindings';
2
3
  import { TypedEventEmitter } from '@livekit/typed-emitter';
3
- export { FfiHandle, livekitDispose as dispose } from './napi/native.d.js';
4
- import { FfiEvent, FfiRequest } from './proto/ffi_pb.js';
5
- export { FfiResponse } from './proto/ffi_pb.js';
6
- import './proto/room_pb.js';
7
- import './proto/participant_pb.js';
8
- import './proto/handle_pb.js';
9
- import './proto/track_pb.js';
10
- import './proto/stats_pb.js';
11
- import './proto/e2ee_pb.js';
12
- import './proto/video_frame_pb.js';
13
- import './proto/data_stream_pb.js';
14
- import './proto/audio_frame_pb.js';
15
- import './proto/rpc_pb.js';
16
- import './proto/track_publication_pb.js';
17
4
 
18
5
  type FfiClientCallbacks = {
19
6
  ffi_event: (event: FfiEvent) => void;
@@ -35,4 +22,4 @@ declare class FfiClient extends FfiClient_base {
35
22
  waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T>;
36
23
  }
37
24
 
38
- export { FfiClient, type FfiClientCallbacks, FfiClientEvent, FfiEvent, FfiRequest };
25
+ export { FfiClient, type FfiClientCallbacks, FfiClientEvent };
@@ -1 +1 @@
1
- {"version":3,"file":"ffi_client.d.ts","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EACL,SAAS,EAET,cAAc,EAIf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,OAAO,EAAE,CAAC;AAE7F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,oBAAY,cAAc;IACxB,QAAQ,cAAc;CACvB;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,kBAAkB,EAAE,SAAS,GAAG,SAAS,CAAC;CAC/C;8BAE+C,UAAU,YAAY,CAAC,kBAAkB,CAAC;AAA1F,qBAAa,SAAU,SAAQ,cAA4D;IACzF,gBAAgB;IAChB,MAAM,KAAK,QAAQ,IAAI,SAAS,CAK/B;;IAgBD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;IAO9C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU;IAIhD,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAI/B,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAWnE"}
1
+ {"version":3,"file":"ffi_client.d.ts","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,cAAc,EAEnB,cAAc,EAIf,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAIhF,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,OAAO,EAAE,CAAC;AAE7F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,oBAAY,cAAc;IACxB,QAAQ,cAAc;CACvB;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,kBAAkB,EAAE,SAAS,GAAG,SAAS,CAAC;CAC/C;8BAE+C,UAAU,YAAY,CAAC,kBAAkB,CAAC;AAA1F,qBAAa,SAAU,SAAQ,cAA4D;IACzF,gBAAgB;IAChB,MAAM,KAAK,QAAQ,IAAI,SAAS,CAK/B;;IAgBD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;IAO9C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU;IAIhD,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAI/B,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAWnE"}
@@ -1,13 +1,15 @@
1
- import EventEmitter from "events";
2
1
  import {
2
+ FfiEvent,
3
3
  FfiHandle,
4
+ FfiRequest,
5
+ FfiResponse,
4
6
  livekitCopyBuffer,
5
7
  livekitDispose,
6
8
  livekitFfiRequest,
7
9
  livekitInitialize,
8
10
  livekitRetrievePtr
9
- } from "./napi/native.js";
10
- import { FfiEvent, FfiRequest, FfiResponse } from "./proto/ffi_pb.js";
11
+ } from "@livekit/rtc-ffi-bindings";
12
+ import EventEmitter from "events";
11
13
  import { SDK_VERSION } from "./version.js";
12
14
  var FfiClientEvent = /* @__PURE__ */ ((FfiClientEvent2) => {
13
15
  FfiClientEvent2["FfiEvent"] = "ffi_event";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ffi_client.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { PartialMessage } from '@bufbuild/protobuf';\nimport type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';\nimport EventEmitter from 'events';\nimport {\n FfiHandle,\n livekitCopyBuffer,\n livekitDispose,\n livekitFfiRequest,\n livekitInitialize,\n livekitRetrievePtr,\n} from './napi/native.js';\nimport { FfiEvent, FfiRequest, FfiResponse } from './proto/ffi_pb.js';\nimport { SDK_VERSION } from './version.js';\n\nexport { FfiHandle, type FfiEvent, type FfiResponse, FfiRequest, livekitDispose as dispose };\n\nexport type FfiClientCallbacks = {\n ffi_event: (event: FfiEvent) => void;\n};\n\nexport enum FfiClientEvent {\n FfiEvent = 'ffi_event',\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var _ffiClientInstance: FfiClient | undefined;\n}\n\nexport class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClientCallbacks>) {\n /** @internal */\n static get instance(): FfiClient {\n if (!globalThis._ffiClientInstance) {\n globalThis._ffiClientInstance = new FfiClient();\n }\n return globalThis._ffiClientInstance;\n }\n\n constructor() {\n super();\n this.setMaxListeners(0);\n\n livekitInitialize(\n (event_data: Uint8Array) => {\n const event = FfiEvent.fromBinary(event_data);\n this.emit(FfiClientEvent.FfiEvent, event);\n },\n true,\n SDK_VERSION,\n );\n }\n\n request<T>(req: PartialMessage<FfiRequest>): T {\n const request = new FfiRequest(req);\n const req_data = request.toBinary();\n const res_data = livekitFfiRequest(req_data);\n return FfiResponse.fromBinary(res_data).message.value as T;\n }\n\n copyBuffer(ptr: bigint, len: number): Uint8Array {\n return livekitCopyBuffer(ptr, len);\n }\n\n retrievePtr(data: Uint8Array): bigint {\n return livekitRetrievePtr(data);\n }\n\n async waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T> {\n return new Promise<T>((resolve) => {\n const listener = (ev: FfiEvent) => {\n if (predicate(ev)) {\n this.off(FfiClientEvent.FfiEvent, listener);\n resolve(ev.message.value as T);\n }\n };\n this.on(FfiClientEvent.FfiEvent, listener);\n });\n }\n}\n"],"mappings":"AAKA,OAAO,kBAAkB;AACzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,UAAU,YAAY,mBAAmB;AAClD,SAAS,mBAAmB;AAQrB,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,cAAW;AADD,SAAAA;AAAA,GAAA;AASL,MAAM,kBAAmB,aAA4D;AAAA;AAAA,EAE1F,WAAW,WAAsB;AAC/B,QAAI,CAAC,WAAW,oBAAoB;AAClC,iBAAW,qBAAqB,IAAI,UAAU;AAAA,IAChD;AACA,WAAO,WAAW;AAAA,EACpB;AAAA,EAEA,cAAc;AACZ,UAAM;AACN,SAAK,gBAAgB,CAAC;AAEtB;AAAA,MACE,CAAC,eAA2B;AAC1B,cAAM,QAAQ,SAAS,WAAW,UAAU;AAC5C,aAAK,KAAK,4BAAyB,KAAK;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAW,KAAoC;AAC7C,UAAM,UAAU,IAAI,WAAW,GAAG;AAClC,UAAM,WAAW,QAAQ,SAAS;AAClC,UAAM,WAAW,kBAAkB,QAAQ;AAC3C,WAAO,YAAY,WAAW,QAAQ,EAAE,QAAQ;AAAA,EAClD;AAAA,EAEA,WAAW,KAAa,KAAyB;AAC/C,WAAO,kBAAkB,KAAK,GAAG;AAAA,EACnC;AAAA,EAEA,YAAY,MAA0B;AACpC,WAAO,mBAAmB,IAAI;AAAA,EAChC;AAAA,EAEA,MAAM,QAAW,WAAkD;AACjE,WAAO,IAAI,QAAW,CAAC,YAAY;AACjC,YAAM,WAAW,CAAC,OAAiB;AACjC,YAAI,UAAU,EAAE,GAAG;AACjB,eAAK,IAAI,4BAAyB,QAAQ;AAC1C,kBAAQ,GAAG,QAAQ,KAAU;AAAA,QAC/B;AAAA,MACF;AACA,WAAK,GAAG,4BAAyB,QAAQ;AAAA,IAC3C,CAAC;AAAA,EACH;AACF;","names":["FfiClientEvent"]}
1
+ {"version":3,"sources":["../src/ffi_client.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport {\n FfiEvent,\n FfiHandle,\n FfiRequest,\n FfiResponse,\n type PartialMessage,\n livekitCopyBuffer,\n livekitDispose,\n livekitFfiRequest,\n livekitInitialize,\n livekitRetrievePtr,\n} from '@livekit/rtc-ffi-bindings';\nimport type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';\nimport EventEmitter from 'events';\nimport { SDK_VERSION } from './version.js';\n\nexport { FfiHandle, type FfiEvent, type FfiResponse, FfiRequest, livekitDispose as dispose };\n\nexport type FfiClientCallbacks = {\n ffi_event: (event: FfiEvent) => void;\n};\n\nexport enum FfiClientEvent {\n FfiEvent = 'ffi_event',\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var _ffiClientInstance: FfiClient | undefined;\n}\n\nexport class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClientCallbacks>) {\n /** @internal */\n static get instance(): FfiClient {\n if (!globalThis._ffiClientInstance) {\n globalThis._ffiClientInstance = new FfiClient();\n }\n return globalThis._ffiClientInstance;\n }\n\n constructor() {\n super();\n this.setMaxListeners(0);\n\n livekitInitialize(\n (event_data: Uint8Array) => {\n const event = FfiEvent.fromBinary(event_data);\n this.emit(FfiClientEvent.FfiEvent, event);\n },\n true,\n SDK_VERSION,\n );\n }\n\n request<T>(req: PartialMessage<FfiRequest>): T {\n const request = new FfiRequest(req);\n const req_data = request.toBinary();\n const res_data = livekitFfiRequest(req_data);\n return FfiResponse.fromBinary(res_data).message.value as T;\n }\n\n copyBuffer(ptr: bigint, len: number): Uint8Array {\n return livekitCopyBuffer(ptr, len);\n }\n\n retrievePtr(data: Uint8Array): bigint {\n return livekitRetrievePtr(data);\n }\n\n async waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T> {\n return new Promise<T>((resolve) => {\n const listener = (ev: FfiEvent) => {\n if (predicate(ev)) {\n this.off(FfiClientEvent.FfiEvent, listener);\n resolve(ev.message.value as T);\n }\n };\n this.on(FfiClientEvent.FfiEvent, listener);\n });\n }\n}\n"],"mappings":"AAGA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,OAAO,kBAAkB;AACzB,SAAS,mBAAmB;AAQrB,IAAK,iBAAL,kBAAKA,oBAAL;AACL,EAAAA,gBAAA,cAAW;AADD,SAAAA;AAAA,GAAA;AASL,MAAM,kBAAmB,aAA4D;AAAA;AAAA,EAE1F,WAAW,WAAsB;AAC/B,QAAI,CAAC,WAAW,oBAAoB;AAClC,iBAAW,qBAAqB,IAAI,UAAU;AAAA,IAChD;AACA,WAAO,WAAW;AAAA,EACpB;AAAA,EAEA,cAAc;AACZ,UAAM;AACN,SAAK,gBAAgB,CAAC;AAEtB;AAAA,MACE,CAAC,eAA2B;AAC1B,cAAM,QAAQ,SAAS,WAAW,UAAU;AAC5C,aAAK,KAAK,4BAAyB,KAAK;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAW,KAAoC;AAC7C,UAAM,UAAU,IAAI,WAAW,GAAG;AAClC,UAAM,WAAW,QAAQ,SAAS;AAClC,UAAM,WAAW,kBAAkB,QAAQ;AAC3C,WAAO,YAAY,WAAW,QAAQ,EAAE,QAAQ;AAAA,EAClD;AAAA,EAEA,WAAW,KAAa,KAAyB;AAC/C,WAAO,kBAAkB,KAAK,GAAG;AAAA,EACnC;AAAA,EAEA,YAAY,MAA0B;AACpC,WAAO,mBAAmB,IAAI;AAAA,EAChC;AAAA,EAEA,MAAM,QAAW,WAAkD;AACjE,WAAO,IAAI,QAAW,CAAC,YAAY;AACjC,YAAM,WAAW,CAAC,OAAiB;AACjC,YAAI,UAAU,EAAE,GAAG;AACjB,eAAK,IAAI,4BAAyB,QAAQ;AAC1C,kBAAQ,GAAG,QAAQ,KAAU;AAAA,QAC/B;AAAA,MACF;AACA,WAAK,GAAG,4BAAyB,QAAQ;AAAA,IAC3C,CAAC;AAAA,EACH;AACF;","names":["FfiClientEvent"]}
@@ -18,12 +18,21 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var frame_processor_exports = {};
20
20
  __export(frame_processor_exports, {
21
- FrameProcessor: () => FrameProcessor
21
+ FrameProcessor: () => FrameProcessor,
22
+ FrameProcessorSymbol: () => FrameProcessorSymbol,
23
+ isFrameProcessor: () => isFrameProcessor
22
24
  });
23
25
  module.exports = __toCommonJS(frame_processor_exports);
24
26
  var import_audio_frame = require("./audio_frame.cjs");
25
27
  var import_video_frame = require("./video_frame.cjs");
28
+ const FrameProcessorSymbol = Symbol.for("lk.frame-processor");
29
+ function isFrameProcessor(maybeProcessor) {
30
+ return maybeProcessor !== null && typeof maybeProcessor === "object" && "symbol" in maybeProcessor && maybeProcessor.symbol === FrameProcessorSymbol;
31
+ }
26
32
  class FrameProcessor {
33
+ constructor() {
34
+ this.symbol = FrameProcessorSymbol;
35
+ }
27
36
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
28
37
  onStreamInfoUpdated(_info) {
29
38
  }
@@ -33,6 +42,8 @@ class FrameProcessor {
33
42
  }
34
43
  // Annotate the CommonJS export names for ESM import in node:
35
44
  0 && (module.exports = {
36
- FrameProcessor
45
+ FrameProcessor,
46
+ FrameProcessorSymbol,
47
+ isFrameProcessor
37
48
  });
38
49
  //# sourceMappingURL=frame_processor.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/frame_processor.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { type AudioFrame } from './audio_frame.js';\nimport { type VideoFrame } from './video_frame.js';\n\nexport type FrameProcessorStreamInfo = {\n roomName: string;\n participantIdentity: string;\n publicationSid: string;\n};\n\nexport type FrameProcessorCredentials = {\n token: string;\n url: string;\n};\n\nexport abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {\n abstract isEnabled(): boolean;\n abstract setEnabled(enabled: boolean): void;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onStreamInfoUpdated(_info: FrameProcessorStreamInfo): void {}\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onCredentialsUpdated(_credentials: FrameProcessorCredentials): void {}\n\n abstract process(frame: Frame): Frame;\n abstract close(): void;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAgC;AAChC,yBAAgC;AAazB,MAAe,eAAsD;AAAA;AAAA,EAK1E,oBAAoB,OAAuC;AAAA,EAAC;AAAA;AAAA,EAE5D,qBAAqB,cAA+C;AAAA,EAAC;AAIvE;","names":[]}
1
+ {"version":3,"sources":["../src/frame_processor.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { type AudioFrame } from './audio_frame.js';\nimport { type VideoFrame } from './video_frame.js';\n\nexport type FrameProcessorStreamInfo = {\n roomName: string;\n participantIdentity: string;\n publicationSid: string;\n};\n\nexport type FrameProcessorCredentials = {\n token: string;\n url: string;\n};\n\nexport const FrameProcessorSymbol = Symbol.for('lk.frame-processor');\n\nexport function isFrameProcessor<\n T extends FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame> | unknown,\n>(\n maybeProcessor: unknown,\n): maybeProcessor is T extends FrameProcessor<AudioFrame>\n ? FrameProcessor<AudioFrame>\n : T extends FrameProcessor<VideoFrame>\n ? FrameProcessor<VideoFrame>\n : FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame> {\n return (\n maybeProcessor !== null &&\n typeof maybeProcessor === 'object' &&\n 'symbol' in maybeProcessor &&\n maybeProcessor.symbol === FrameProcessorSymbol\n );\n}\n\nexport abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {\n readonly symbol = FrameProcessorSymbol;\n\n abstract isEnabled(): boolean;\n abstract setEnabled(enabled: boolean): void;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onStreamInfoUpdated(_info: FrameProcessorStreamInfo): void {}\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onCredentialsUpdated(_credentials: FrameProcessorCredentials): void {}\n\n abstract process(frame: Frame): Frame;\n abstract close(): void;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAgC;AAChC,yBAAgC;AAazB,MAAM,uBAAuB,OAAO,IAAI,oBAAoB;AAE5D,SAAS,iBAGd,gBAK4D;AAC5D,SACE,mBAAmB,QACnB,OAAO,mBAAmB,YAC1B,YAAY,kBACZ,eAAe,WAAW;AAE9B;AAEO,MAAe,eAAsD;AAAA,EAArE;AACL,SAAS,SAAS;AAAA;AAAA;AAAA,EAMlB,oBAAoB,OAAuC;AAAA,EAAC;AAAA;AAAA,EAE5D,qBAAqB,cAA+C;AAAA,EAAC;AAIvE;","names":[]}
@@ -1,12 +1,6 @@
1
1
  import { AudioFrame } from './audio_frame.cjs';
2
2
  import { VideoFrame } from './video_frame.cjs';
3
- import './proto/audio_frame_pb.cjs';
4
- import '@bufbuild/protobuf';
5
- import './proto/track_pb.cjs';
6
- import './proto/stats_pb.cjs';
7
- import './proto/e2ee_pb.cjs';
8
- import './proto/handle_pb.cjs';
9
- import './proto/video_frame_pb.cjs';
3
+ import '@livekit/rtc-ffi-bindings';
10
4
 
11
5
  type FrameProcessorStreamInfo = {
12
6
  roomName: string;
@@ -17,7 +11,10 @@ type FrameProcessorCredentials = {
17
11
  token: string;
18
12
  url: string;
19
13
  };
14
+ declare const FrameProcessorSymbol: unique symbol;
15
+ declare function isFrameProcessor<T extends FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame> | unknown>(maybeProcessor: unknown): maybeProcessor is T extends FrameProcessor<AudioFrame> ? FrameProcessor<AudioFrame> : T extends FrameProcessor<VideoFrame> ? FrameProcessor<VideoFrame> : FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame>;
20
16
  declare abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {
17
+ readonly symbol: symbol;
21
18
  abstract isEnabled(): boolean;
22
19
  abstract setEnabled(enabled: boolean): void;
23
20
  onStreamInfoUpdated(_info: FrameProcessorStreamInfo): void;
@@ -26,4 +23,4 @@ declare abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {
26
23
  abstract close(): void;
27
24
  }
28
25
 
29
- export { FrameProcessor, type FrameProcessorCredentials, type FrameProcessorStreamInfo };
26
+ export { FrameProcessor, type FrameProcessorCredentials, type FrameProcessorStreamInfo, FrameProcessorSymbol, isFrameProcessor };
@@ -1,12 +1,6 @@
1
1
  import { AudioFrame } from './audio_frame.js';
2
2
  import { VideoFrame } from './video_frame.js';
3
- import './proto/audio_frame_pb.js';
4
- import '@bufbuild/protobuf';
5
- import './proto/track_pb.js';
6
- import './proto/stats_pb.js';
7
- import './proto/e2ee_pb.js';
8
- import './proto/handle_pb.js';
9
- import './proto/video_frame_pb.js';
3
+ import '@livekit/rtc-ffi-bindings';
10
4
 
11
5
  type FrameProcessorStreamInfo = {
12
6
  roomName: string;
@@ -17,7 +11,10 @@ type FrameProcessorCredentials = {
17
11
  token: string;
18
12
  url: string;
19
13
  };
14
+ declare const FrameProcessorSymbol: unique symbol;
15
+ declare function isFrameProcessor<T extends FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame> | unknown>(maybeProcessor: unknown): maybeProcessor is T extends FrameProcessor<AudioFrame> ? FrameProcessor<AudioFrame> : T extends FrameProcessor<VideoFrame> ? FrameProcessor<VideoFrame> : FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame>;
20
16
  declare abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {
17
+ readonly symbol: symbol;
21
18
  abstract isEnabled(): boolean;
22
19
  abstract setEnabled(enabled: boolean): void;
23
20
  onStreamInfoUpdated(_info: FrameProcessorStreamInfo): void;
@@ -26,4 +23,4 @@ declare abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {
26
23
  abstract close(): void;
27
24
  }
28
25
 
29
- export { FrameProcessor, type FrameProcessorCredentials, type FrameProcessorStreamInfo };
26
+ export { FrameProcessor, type FrameProcessorCredentials, type FrameProcessorStreamInfo, FrameProcessorSymbol, isFrameProcessor };
@@ -1 +1 @@
1
- {"version":3,"file":"frame_processor.d.ts","sourceRoot":"","sources":["../src/frame_processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,8BAAsB,cAAc,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU;IACxE,QAAQ,CAAC,SAAS,IAAI,OAAO;IAC7B,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAG3C,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI;IAE1D,oBAAoB,CAAC,YAAY,EAAE,yBAAyB,GAAG,IAAI;IAEnE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IACrC,QAAQ,CAAC,KAAK,IAAI,IAAI;CACvB"}
1
+ {"version":3,"file":"frame_processor.d.ts","sourceRoot":"","sources":["../src/frame_processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,oBAAoB,eAAmC,CAAC;AAErE,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,EAE3E,cAAc,EAAE,OAAO,GACtB,cAAc,IAAI,CAAC,SAAS,cAAc,CAAC,UAAU,CAAC,GACrD,cAAc,CAAC,UAAU,CAAC,GAC1B,CAAC,SAAS,cAAc,CAAC,UAAU,CAAC,GAClC,cAAc,CAAC,UAAU,CAAC,GAC1B,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAO5D;AAED,8BAAsB,cAAc,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU;IACxE,QAAQ,CAAC,MAAM,SAAwB;IAEvC,QAAQ,CAAC,SAAS,IAAI,OAAO;IAC7B,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAG3C,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI;IAE1D,oBAAoB,CAAC,YAAY,EAAE,yBAAyB,GAAG,IAAI;IAEnE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IACrC,QAAQ,CAAC,KAAK,IAAI,IAAI;CACvB"}
@@ -1,6 +1,13 @@
1
1
  import {} from "./audio_frame.js";
2
2
  import {} from "./video_frame.js";
3
+ const FrameProcessorSymbol = Symbol.for("lk.frame-processor");
4
+ function isFrameProcessor(maybeProcessor) {
5
+ return maybeProcessor !== null && typeof maybeProcessor === "object" && "symbol" in maybeProcessor && maybeProcessor.symbol === FrameProcessorSymbol;
6
+ }
3
7
  class FrameProcessor {
8
+ constructor() {
9
+ this.symbol = FrameProcessorSymbol;
10
+ }
4
11
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
12
  onStreamInfoUpdated(_info) {
6
13
  }
@@ -9,6 +16,8 @@ class FrameProcessor {
9
16
  }
10
17
  }
11
18
  export {
12
- FrameProcessor
19
+ FrameProcessor,
20
+ FrameProcessorSymbol,
21
+ isFrameProcessor
13
22
  };
14
23
  //# sourceMappingURL=frame_processor.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/frame_processor.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { type AudioFrame } from './audio_frame.js';\nimport { type VideoFrame } from './video_frame.js';\n\nexport type FrameProcessorStreamInfo = {\n roomName: string;\n participantIdentity: string;\n publicationSid: string;\n};\n\nexport type FrameProcessorCredentials = {\n token: string;\n url: string;\n};\n\nexport abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {\n abstract isEnabled(): boolean;\n abstract setEnabled(enabled: boolean): void;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onStreamInfoUpdated(_info: FrameProcessorStreamInfo): void {}\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onCredentialsUpdated(_credentials: FrameProcessorCredentials): void {}\n\n abstract process(frame: Frame): Frame;\n abstract close(): void;\n}\n"],"mappings":"AAGA,eAAgC;AAChC,eAAgC;AAazB,MAAe,eAAsD;AAAA;AAAA,EAK1E,oBAAoB,OAAuC;AAAA,EAAC;AAAA;AAAA,EAE5D,qBAAqB,cAA+C;AAAA,EAAC;AAIvE;","names":[]}
1
+ {"version":3,"sources":["../src/frame_processor.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { type AudioFrame } from './audio_frame.js';\nimport { type VideoFrame } from './video_frame.js';\n\nexport type FrameProcessorStreamInfo = {\n roomName: string;\n participantIdentity: string;\n publicationSid: string;\n};\n\nexport type FrameProcessorCredentials = {\n token: string;\n url: string;\n};\n\nexport const FrameProcessorSymbol = Symbol.for('lk.frame-processor');\n\nexport function isFrameProcessor<\n T extends FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame> | unknown,\n>(\n maybeProcessor: unknown,\n): maybeProcessor is T extends FrameProcessor<AudioFrame>\n ? FrameProcessor<AudioFrame>\n : T extends FrameProcessor<VideoFrame>\n ? FrameProcessor<VideoFrame>\n : FrameProcessor<AudioFrame> | FrameProcessor<VideoFrame> {\n return (\n maybeProcessor !== null &&\n typeof maybeProcessor === 'object' &&\n 'symbol' in maybeProcessor &&\n maybeProcessor.symbol === FrameProcessorSymbol\n );\n}\n\nexport abstract class FrameProcessor<Frame extends VideoFrame | AudioFrame> {\n readonly symbol = FrameProcessorSymbol;\n\n abstract isEnabled(): boolean;\n abstract setEnabled(enabled: boolean): void;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onStreamInfoUpdated(_info: FrameProcessorStreamInfo): void {}\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onCredentialsUpdated(_credentials: FrameProcessorCredentials): void {}\n\n abstract process(frame: Frame): Frame;\n abstract close(): void;\n}\n"],"mappings":"AAGA,eAAgC;AAChC,eAAgC;AAazB,MAAM,uBAAuB,OAAO,IAAI,oBAAoB;AAE5D,SAAS,iBAGd,gBAK4D;AAC5D,SACE,mBAAmB,QACnB,OAAO,mBAAmB,YAC1B,YAAY,kBACZ,eAAe,WAAW;AAE9B;AAEO,MAAe,eAAsD;AAAA,EAArE;AACL,SAAS,SAAS;AAAA;AAAA;AAAA,EAMlB,oBAAoB,OAAuC;AAAA,EAAC;AAAA;AAAA,EAE5D,qBAAqB,cAA+C;AAAA,EAAC;AAIvE;","names":[]}
package/dist/index.cjs CHANGED
@@ -27,25 +27,25 @@ __export(index_exports, {
27
27
  AudioSource: () => import_audio_source.AudioSource,
28
28
  AudioStream: () => import_audio_stream.AudioStream,
29
29
  ConnectError: () => import_room.ConnectError,
30
- ConnectionQuality: () => import_room_pb.ConnectionQuality,
31
- ConnectionState: () => import_room_pb.ConnectionState,
32
- ContinualGatheringPolicy: () => import_room_pb.ContinualGatheringPolicy,
33
- DataPacketKind: () => import_room_pb.DataPacketKind,
34
- DisconnectReason: () => import_participant_pb.DisconnectReason,
30
+ ConnectionQuality: () => import_rtc_ffi_bindings3.ConnectionQuality,
31
+ ConnectionState: () => import_rtc_ffi_bindings3.ConnectionState,
32
+ ContinualGatheringPolicy: () => import_rtc_ffi_bindings3.ContinualGatheringPolicy,
33
+ DataPacketKind: () => import_rtc_ffi_bindings3.DataPacketKind,
34
+ DisconnectReason: () => import_rtc_ffi_bindings2.DisconnectReason,
35
35
  E2EEManager: () => import_e2ee.E2EEManager,
36
- EncryptionState: () => import_e2ee_pb.EncryptionState,
37
- EncryptionType: () => import_e2ee_pb.EncryptionType,
36
+ EncryptionState: () => import_rtc_ffi_bindings.EncryptionState,
37
+ EncryptionType: () => import_rtc_ffi_bindings.EncryptionType,
38
38
  FrameCryptor: () => import_e2ee.FrameCryptor,
39
39
  FrameProcessor: () => import_frame_processor.FrameProcessor,
40
- IceServer: () => import_room_pb.IceServer,
41
- IceTransportType: () => import_room_pb.IceTransportType,
40
+ IceServer: () => import_rtc_ffi_bindings3.IceServer,
41
+ IceTransportType: () => import_rtc_ffi_bindings3.IceTransportType,
42
42
  KeyProvider: () => import_e2ee.KeyProvider,
43
43
  LocalAudioTrack: () => import_track.LocalAudioTrack,
44
44
  LocalParticipant: () => import_participant.LocalParticipant,
45
45
  LocalTrackPublication: () => import_track_publication.LocalTrackPublication,
46
46
  LocalVideoTrack: () => import_track.LocalVideoTrack,
47
47
  Participant: () => import_participant.Participant,
48
- ParticipantKind: () => import_participant_pb.ParticipantKind,
48
+ ParticipantKind: () => import_rtc_ffi_bindings2.ParticipantKind,
49
49
  RemoteAudioTrack: () => import_track.RemoteAudioTrack,
50
50
  RemoteParticipant: () => import_participant.RemoteParticipant,
51
51
  RemoteTrackPublication: () => import_track_publication.RemoteTrackPublication,
@@ -53,20 +53,21 @@ __export(index_exports, {
53
53
  Room: () => import_room.Room,
54
54
  RoomEvent: () => import_room.RoomEvent,
55
55
  RpcError: () => import_rpc.RpcError,
56
- StreamState: () => import_track_pb.StreamState,
56
+ StreamState: () => import_rtc_ffi_bindings4.StreamState,
57
57
  Track: () => import_track.Track,
58
- TrackKind: () => import_track_pb.TrackKind,
58
+ TrackKind: () => import_rtc_ffi_bindings4.TrackKind,
59
59
  TrackPublication: () => import_track_publication.TrackPublication,
60
- TrackPublishOptions: () => import_room_pb.TrackPublishOptions,
61
- TrackSource: () => import_track_pb.TrackSource,
62
- VideoBufferType: () => import_video_frame_pb.VideoBufferType,
63
- VideoCodec: () => import_video_frame_pb.VideoCodec,
60
+ TrackPublishOptions: () => import_rtc_ffi_bindings3.TrackPublishOptions,
61
+ TrackSource: () => import_rtc_ffi_bindings4.TrackSource,
62
+ VideoBufferType: () => import_rtc_ffi_bindings5.VideoBufferType,
63
+ VideoCodec: () => import_rtc_ffi_bindings5.VideoCodec,
64
64
  VideoFrame: () => import_video_frame.VideoFrame,
65
- VideoRotation: () => import_video_frame_pb.VideoRotation,
65
+ VideoRotation: () => import_rtc_ffi_bindings5.VideoRotation,
66
66
  VideoSource: () => import_video_source.VideoSource,
67
67
  VideoStream: () => import_video_stream.VideoStream,
68
68
  combineAudioFrames: () => import_audio_frame.combineAudioFrames,
69
- dispose: () => import_ffi_client.dispose
69
+ dispose: () => import_ffi_client.dispose,
70
+ isFrameProcessor: () => import_frame_processor.isFrameProcessor
70
71
  });
71
72
  module.exports = __toCommonJS(index_exports);
72
73
  var import_audio_frame = require("./audio_frame.cjs");
@@ -79,11 +80,11 @@ __reExport(index_exports, require("./data_streams/index.cjs"), module.exports);
79
80
  var import_e2ee = require("./e2ee.cjs");
80
81
  var import_ffi_client = require("./ffi_client.cjs");
81
82
  var import_participant = require("./participant.cjs");
82
- var import_e2ee_pb = require("./proto/e2ee_pb.cjs");
83
- var import_participant_pb = require("./proto/participant_pb.cjs");
84
- var import_room_pb = require("./proto/room_pb.cjs");
85
- var import_track_pb = require("./proto/track_pb.cjs");
86
- var import_video_frame_pb = require("./proto/video_frame_pb.cjs");
83
+ var import_rtc_ffi_bindings = require("@livekit/rtc-ffi-bindings");
84
+ var import_rtc_ffi_bindings2 = require("@livekit/rtc-ffi-bindings");
85
+ var import_rtc_ffi_bindings3 = require("@livekit/rtc-ffi-bindings");
86
+ var import_rtc_ffi_bindings4 = require("@livekit/rtc-ffi-bindings");
87
+ var import_rtc_ffi_bindings5 = require("@livekit/rtc-ffi-bindings");
87
88
  var import_room = require("./room.cjs");
88
89
  var import_rpc = require("./rpc.cjs");
89
90
  var import_track = require("./track.cjs");
@@ -142,6 +143,7 @@ var import_frame_processor = require("./frame_processor.cjs");
142
143
  VideoStream,
143
144
  combineAudioFrames,
144
145
  dispose,
146
+ isFrameProcessor,
145
147
  ...require("./data_streams/index.cjs")
146
148
  });
147
149
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\nexport { AudioFrame, combineAudioFrames } from './audio_frame.js';\nexport { AudioResampler, AudioResamplerQuality } from './audio_resampler.js';\nexport { AudioSource } from './audio_source.js';\nexport { AudioStream } from './audio_stream.js';\nexport type { NoiseCancellationOptions } from './audio_stream.js';\nexport { AudioFilter } from './audio_filter.js';\nexport { AudioMixer, type AudioMixerOptions } from './audio_mixer.js';\nexport * from './data_streams/index.js';\nexport { E2EEManager, FrameCryptor, KeyProvider } from './e2ee.js';\nexport type { E2EEOptions, KeyProviderOptions } from './e2ee.js';\nexport { dispose } from './ffi_client.js';\nexport { LocalParticipant, Participant, RemoteParticipant } from './participant.js';\nexport { EncryptionState, EncryptionType } from './proto/e2ee_pb.js';\nexport { DisconnectReason, ParticipantKind } from './proto/participant_pb.js';\nexport {\n ConnectionQuality,\n ConnectionState,\n ContinualGatheringPolicy,\n DataPacketKind,\n IceServer,\n IceTransportType,\n TrackPublishOptions,\n} from './proto/room_pb.js';\nexport { StreamState, TrackKind, TrackSource } from './proto/track_pb.js';\nexport { VideoBufferType, VideoCodec, VideoRotation } from './proto/video_frame_pb.js';\nexport { ConnectError, Room, RoomEvent, type RoomOptions, type RtcConfiguration } from './room.js';\nexport { RpcError, type PerformRpcParams, type RpcInvocationData } from './rpc.js';\nexport {\n LocalAudioTrack,\n LocalVideoTrack,\n RemoteAudioTrack,\n RemoteVideoTrack,\n Track,\n type AudioTrack,\n type LocalTrack,\n type RemoteTrack,\n type VideoTrack,\n} from './track.js';\nexport {\n LocalTrackPublication,\n RemoteTrackPublication,\n TrackPublication,\n} from './track_publication.js';\nexport type { Transcription, TranscriptionSegment } from './transcription.js';\nexport type { ChatMessage } from './types.js';\nexport { VideoFrame } from './video_frame.js';\nexport { VideoSource } from './video_source.js';\nexport { VideoStream, type VideoFrameEvent } from './video_stream.js';\nexport {\n FrameProcessor,\n type FrameProcessorStreamInfo,\n type FrameProcessorCredentials,\n} from './frame_processor.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yBAA+C;AAC/C,6BAAsD;AACtD,0BAA4B;AAC5B,0BAA4B;AAE5B,0BAA4B;AAC5B,yBAAmD;AACnD,0BAAc,oCAXd;AAYA,kBAAuD;AAEvD,wBAAwB;AACxB,yBAAiE;AACjE,qBAAgD;AAChD,4BAAkD;AAClD,qBAQO;AACP,sBAAoD;AACpD,4BAA2D;AAC3D,kBAAuF;AACvF,iBAAwE;AACxE,mBAUO;AACP,+BAIO;AAGP,yBAA2B;AAC3B,0BAA4B;AAC5B,0BAAkD;AAClD,6BAIO;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\nexport { AudioFrame, combineAudioFrames } from './audio_frame.js';\nexport { AudioResampler, AudioResamplerQuality } from './audio_resampler.js';\nexport { AudioSource } from './audio_source.js';\nexport { AudioStream } from './audio_stream.js';\nexport type { NoiseCancellationOptions } from './audio_stream.js';\nexport { AudioFilter } from './audio_filter.js';\nexport { AudioMixer, type AudioMixerOptions } from './audio_mixer.js';\nexport * from './data_streams/index.js';\nexport { E2EEManager, FrameCryptor, KeyProvider } from './e2ee.js';\nexport type { E2EEOptions, KeyProviderOptions } from './e2ee.js';\nexport { dispose } from './ffi_client.js';\nexport { LocalParticipant, Participant, RemoteParticipant } from './participant.js';\nexport { EncryptionState, EncryptionType } from '@livekit/rtc-ffi-bindings';\nexport { DisconnectReason, ParticipantKind } from '@livekit/rtc-ffi-bindings';\nexport {\n ConnectionQuality,\n ConnectionState,\n ContinualGatheringPolicy,\n DataPacketKind,\n IceServer,\n IceTransportType,\n TrackPublishOptions,\n} from '@livekit/rtc-ffi-bindings';\nexport { StreamState, TrackKind, TrackSource } from '@livekit/rtc-ffi-bindings';\nexport { VideoBufferType, VideoCodec, VideoRotation } from '@livekit/rtc-ffi-bindings';\nexport { ConnectError, Room, RoomEvent, type RoomOptions, type RtcConfiguration } from './room.js';\nexport { RpcError, type PerformRpcParams, type RpcInvocationData } from './rpc.js';\nexport {\n LocalAudioTrack,\n LocalVideoTrack,\n RemoteAudioTrack,\n RemoteVideoTrack,\n Track,\n type AudioTrack,\n type LocalTrack,\n type RemoteTrack,\n type VideoTrack,\n} from './track.js';\nexport {\n LocalTrackPublication,\n RemoteTrackPublication,\n TrackPublication,\n} from './track_publication.js';\nexport type { Transcription, TranscriptionSegment } from './transcription.js';\nexport type { ChatMessage } from './types.js';\nexport { VideoFrame } from './video_frame.js';\nexport { VideoSource } from './video_source.js';\nexport { VideoStream, type VideoFrameEvent } from './video_stream.js';\nexport {\n FrameProcessor,\n type FrameProcessorStreamInfo,\n type FrameProcessorCredentials,\n isFrameProcessor,\n} from './frame_processor.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yBAA+C;AAC/C,6BAAsD;AACtD,0BAA4B;AAC5B,0BAA4B;AAE5B,0BAA4B;AAC5B,yBAAmD;AACnD,0BAAc,oCAXd;AAYA,kBAAuD;AAEvD,wBAAwB;AACxB,yBAAiE;AACjE,8BAAgD;AAChD,IAAAA,2BAAkD;AAClD,IAAAA,2BAQO;AACP,IAAAA,2BAAoD;AACpD,IAAAA,2BAA2D;AAC3D,kBAAuF;AACvF,iBAAwE;AACxE,mBAUO;AACP,+BAIO;AAGP,yBAA2B;AAC3B,0BAA4B;AAC5B,0BAAkD;AAClD,6BAKO;","names":["import_rtc_ffi_bindings"]}
package/dist/index.d.cts CHANGED
@@ -4,16 +4,12 @@ export { AudioSource } from './audio_source.cjs';
4
4
  export { AudioStream, NoiseCancellationOptions } from './audio_stream.cjs';
5
5
  export { AudioFilter } from './audio_filter.cjs';
6
6
  export { AudioMixer, AudioMixerOptions } from './audio_mixer.cjs';
7
- export { a as BaseStreamInfo, f as ByteStreamHandler, b as ByteStreamInfo, e as ByteStreamOptions, B as ByteStreamReader, D as DataStreamOptions, S as StreamController, g as TextStreamHandler, c as TextStreamInfo, d as TextStreamOptions, T as TextStreamReader } from './stream_reader-Ch2zvjU3.cjs';
7
+ export { a as BaseStreamInfo, f as ByteStreamHandler, b as ByteStreamInfo, e as ByteStreamOptions, B as ByteStreamReader, D as DataStreamOptions, S as StreamController, g as TextStreamHandler, c as TextStreamInfo, d as TextStreamOptions, T as TextStreamReader } from './stream_reader-CuG4b8Y-.cjs';
8
8
  export { ByteStreamWriter, TextStreamWriter } from './data_streams/stream_writer.cjs';
9
9
  export { E2EEManager, E2EEOptions, FrameCryptor, KeyProvider, KeyProviderOptions } from './e2ee.cjs';
10
10
  import './ffi_client.cjs';
11
11
  export { LocalParticipant, Participant, RemoteParticipant } from './participant.cjs';
12
- export { EncryptionState, EncryptionType } from './proto/e2ee_pb.cjs';
13
- export { DisconnectReason, ParticipantKind } from './proto/participant_pb.cjs';
14
- export { ConnectionQuality, ConnectionState, ContinualGatheringPolicy, DataPacketKind, IceServer, IceTransportType, TrackPublishOptions } from './proto/room_pb.cjs';
15
- export { StreamState, TrackKind, TrackSource } from './proto/track_pb.cjs';
16
- export { VideoBufferType, VideoCodec, VideoRotation } from './proto/video_frame_pb.cjs';
12
+ export { ConnectionQuality, ConnectionState, ContinualGatheringPolicy, DataPacketKind, DisconnectReason, EncryptionState, EncryptionType, IceServer, IceTransportType, ParticipantKind, StreamState, TrackKind, TrackPublishOptions, TrackSource, VideoBufferType, VideoCodec, VideoRotation, livekitDispose as dispose } from '@livekit/rtc-ffi-bindings';
17
13
  export { ConnectError, Room, RoomEvent, RoomOptions, RtcConfiguration } from './room.cjs';
18
14
  export { PerformRpcParams, RpcError, RpcInvocationData } from './rpc.cjs';
19
15
  export { AudioTrack, LocalAudioTrack, LocalTrack, LocalVideoTrack, RemoteAudioTrack, RemoteTrack, RemoteVideoTrack, Track, VideoTrack } from './track.cjs';
@@ -23,17 +19,8 @@ export { ChatMessage } from './types.cjs';
23
19
  export { VideoFrame } from './video_frame.cjs';
24
20
  export { VideoSource } from './video_source.cjs';
25
21
  export { VideoFrameEvent, VideoStream } from './video_stream.cjs';
26
- export { FrameProcessor, FrameProcessorCredentials, FrameProcessorStreamInfo } from './frame_processor.cjs';
27
- export { livekitDispose as dispose } from './napi/native.d.cjs';
28
- import './proto/audio_frame_pb.cjs';
29
- import '@bufbuild/protobuf';
30
- import './proto/handle_pb.cjs';
22
+ export { FrameProcessor, FrameProcessorCredentials, FrameProcessorStreamInfo, isFrameProcessor } from './frame_processor.cjs';
31
23
  import './async_queue.cjs';
32
24
  import '@livekit/typed-emitter';
33
- import './proto/ffi_pb.cjs';
34
- import './proto/rpc_pb.cjs';
35
- import './proto/track_publication_pb.cjs';
36
- import './proto/data_stream_pb.cjs';
37
25
  import '@livekit/mutex';
38
26
  import 'node:fs';
39
- import './proto/stats_pb.cjs';