@signalwire/js 3.23.3 → 3.23.4

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 (175) hide show
  1. package/dist/core/src/BaseClient.d.ts.map +1 -1
  2. package/dist/core/src/BaseComponent.d.ts +8 -114
  3. package/dist/core/src/BaseComponent.d.ts.map +1 -1
  4. package/dist/core/src/BaseConsumer.d.ts +2 -2
  5. package/dist/core/src/BaseConsumer.d.ts.map +1 -1
  6. package/dist/core/src/BaseSession.d.ts.map +1 -1
  7. package/dist/core/src/RPCMessages/RPCConnect.d.ts +1 -0
  8. package/dist/core/src/RPCMessages/RPCConnect.d.ts.map +1 -1
  9. package/dist/core/src/chat/BaseChat.d.ts +5 -6
  10. package/dist/core/src/chat/BaseChat.d.ts.map +1 -1
  11. package/dist/core/src/chat/workers/chatWorker.d.ts.map +1 -1
  12. package/dist/core/src/index.d.ts +4 -5
  13. package/dist/core/src/index.d.ts.map +1 -1
  14. package/dist/core/src/memberPosition/workers.d.ts +1 -1
  15. package/dist/core/src/memberPosition/workers.d.ts.map +1 -1
  16. package/dist/core/src/pubSub/BasePubSub.d.ts +8 -9
  17. package/dist/core/src/pubSub/BasePubSub.d.ts.map +1 -1
  18. package/dist/core/src/pubSub/workers/pubSubWorker.d.ts.map +1 -1
  19. package/dist/core/src/redux/actions.d.ts +0 -9
  20. package/dist/core/src/redux/actions.d.ts.map +1 -1
  21. package/dist/core/src/redux/features/session/sessionSaga.d.ts +2 -3
  22. package/dist/core/src/redux/features/session/sessionSaga.d.ts.map +1 -1
  23. package/dist/core/src/redux/index.d.ts +1 -0
  24. package/dist/core/src/redux/index.d.ts.map +1 -1
  25. package/dist/core/src/redux/interfaces.d.ts +0 -1
  26. package/dist/core/src/redux/interfaces.d.ts.map +1 -1
  27. package/dist/core/src/redux/rootSaga.d.ts +10 -10
  28. package/dist/core/src/redux/rootSaga.d.ts.map +1 -1
  29. package/dist/core/src/redux/utils/useInstanceMap.d.ts +6 -0
  30. package/dist/core/src/redux/utils/useInstanceMap.d.ts.map +1 -0
  31. package/dist/core/src/redux/utils/useSession.d.ts +16 -0
  32. package/dist/core/src/redux/utils/useSession.d.ts.map +1 -0
  33. package/dist/core/src/rooms/RoomSessionPlayback.d.ts +20 -3
  34. package/dist/core/src/rooms/RoomSessionPlayback.d.ts.map +1 -1
  35. package/dist/core/src/rooms/RoomSessionRecording.d.ts +18 -5
  36. package/dist/core/src/rooms/RoomSessionRecording.d.ts.map +1 -1
  37. package/dist/core/src/rooms/RoomSessionStream.d.ts +19 -5
  38. package/dist/core/src/rooms/RoomSessionStream.d.ts.map +1 -1
  39. package/dist/core/src/rooms/index.d.ts +0 -4
  40. package/dist/core/src/rooms/index.d.ts.map +1 -1
  41. package/dist/core/src/rooms/methods.d.ts +6 -2
  42. package/dist/core/src/rooms/methods.d.ts.map +1 -1
  43. package/dist/core/src/testUtils.d.ts +3 -2
  44. package/dist/core/src/testUtils.d.ts.map +1 -1
  45. package/dist/core/src/types/chat.d.ts +0 -1
  46. package/dist/core/src/types/chat.d.ts.map +1 -1
  47. package/dist/core/src/types/index.d.ts +2 -0
  48. package/dist/core/src/types/index.d.ts.map +1 -1
  49. package/dist/core/src/types/messaging.d.ts +0 -1
  50. package/dist/core/src/types/messaging.d.ts.map +1 -1
  51. package/dist/core/src/types/pubSub.d.ts +0 -1
  52. package/dist/core/src/types/pubSub.d.ts.map +1 -1
  53. package/dist/core/src/types/video.d.ts +8 -7
  54. package/dist/core/src/types/video.d.ts.map +1 -1
  55. package/dist/core/src/types/videoRoomDevice.d.ts +6 -4
  56. package/dist/core/src/types/videoRoomDevice.d.ts.map +1 -1
  57. package/dist/core/src/types/videoRoomSession.d.ts +9 -0
  58. package/dist/core/src/types/videoRoomSession.d.ts.map +1 -1
  59. package/dist/core/src/types/voiceCall.d.ts +16 -5
  60. package/dist/core/src/types/voiceCall.d.ts.map +1 -1
  61. package/dist/core/src/utils/eventUtils.d.ts +2 -0
  62. package/dist/core/src/utils/eventUtils.d.ts.map +1 -0
  63. package/dist/core/src/utils/eventUtils.test.d.ts +2 -0
  64. package/dist/core/src/utils/eventUtils.test.d.ts.map +1 -0
  65. package/dist/core/src/utils/index.d.ts +3 -2
  66. package/dist/core/src/utils/index.d.ts.map +1 -1
  67. package/dist/core/src/utils/interfaces.d.ts +9 -117
  68. package/dist/core/src/utils/interfaces.d.ts.map +1 -1
  69. package/dist/index.esm.js +365 -320
  70. package/dist/index.esm.js.map +3 -3
  71. package/dist/index.js +366 -342
  72. package/dist/index.js.map +3 -3
  73. package/dist/index.umd.js +3 -3
  74. package/dist/index.umd.js.map +1 -1
  75. package/dist/js/src/BaseRoomSession.d.ts +5 -15
  76. package/dist/js/src/BaseRoomSession.d.ts.map +1 -1
  77. package/dist/js/src/Client.d.ts.map +1 -1
  78. package/dist/js/src/RoomSession.d.ts.map +1 -1
  79. package/dist/js/src/cantina/VideoManager.d.ts +4 -5
  80. package/dist/js/src/cantina/VideoManager.d.ts.map +1 -1
  81. package/dist/js/src/cantina/workers/index.d.ts +2 -0
  82. package/dist/js/src/cantina/workers/index.d.ts.map +1 -0
  83. package/dist/js/src/cantina/workers/videoManagerRoomWorker.d.ts +4 -0
  84. package/dist/js/src/cantina/workers/videoManagerRoomWorker.d.ts.map +1 -0
  85. package/dist/js/src/cantina/workers/videoManagerRoomsWorker.d.ts +4 -0
  86. package/dist/js/src/cantina/workers/videoManagerRoomsWorker.d.ts.map +1 -0
  87. package/dist/js/src/cantina/workers/videoManagerWorker.d.ts +7 -0
  88. package/dist/js/src/cantina/workers/videoManagerWorker.d.ts.map +1 -0
  89. package/dist/js/src/createRoomObject.d.ts.map +1 -1
  90. package/dist/js/src/fabric/WSClient.d.ts.map +1 -1
  91. package/dist/js/src/features/mediaElements/mediaElementsSagas.d.ts.map +1 -1
  92. package/dist/js/src/testUtils.d.ts +2 -0
  93. package/dist/js/src/testUtils.d.ts.map +1 -1
  94. package/dist/js/src/utils/interfaces.d.ts +2 -2
  95. package/dist/js/src/utils/interfaces.d.ts.map +1 -1
  96. package/dist/js/src/utils/videoElement.d.ts.map +1 -1
  97. package/dist/js/src/video/childMemberJoinedWorker.d.ts.map +1 -1
  98. package/dist/js/src/video/memberListUpdatedWorker.d.ts.map +1 -1
  99. package/dist/js/src/video/videoPlaybackWorker.d.ts +4 -0
  100. package/dist/js/src/video/videoPlaybackWorker.d.ts.map +1 -0
  101. package/dist/js/src/video/videoRecordWorker.d.ts +4 -0
  102. package/dist/js/src/video/videoRecordWorker.d.ts.map +1 -0
  103. package/dist/js/src/video/videoStreamWorker.d.ts +4 -0
  104. package/dist/js/src/video/videoStreamWorker.d.ts.map +1 -0
  105. package/dist/js/src/video/videoWorker.d.ts +7 -0
  106. package/dist/js/src/video/videoWorker.d.ts.map +1 -0
  107. package/dist/js/src/video/workers.d.ts +1 -1
  108. package/dist/js/src/video/workers.d.ts.map +1 -1
  109. package/dist/js/tsconfig.build.tsbuildinfo +1 -1
  110. package/dist/webrtc/src/BaseConnection.d.ts +4 -5
  111. package/dist/webrtc/src/BaseConnection.d.ts.map +1 -1
  112. package/dist/webrtc/src/RTCPeer.d.ts +1 -1
  113. package/dist/webrtc/src/RTCPeer.d.ts.map +1 -1
  114. package/dist/webrtc/src/workers/roomSubscribedWorker.d.ts.map +1 -1
  115. package/dist/webrtc/src/workers/vertoEventWorker.d.ts.map +1 -1
  116. package/package.json +4 -4
  117. package/src/BaseRoomSession.test.ts +4 -6
  118. package/src/BaseRoomSession.ts +47 -211
  119. package/src/Client.ts +1 -11
  120. package/src/RoomSession.ts +5 -5
  121. package/src/RoomSessionDevice.test.ts +0 -1
  122. package/src/RoomSessionScreenShare.test.ts +0 -1
  123. package/src/cantina/VideoManager.test.ts +0 -2
  124. package/src/cantina/VideoManager.ts +10 -51
  125. package/src/cantina/workers/index.ts +1 -0
  126. package/src/cantina/workers/videoManagerRoomWorker.ts +28 -0
  127. package/src/cantina/workers/videoManagerRoomsWorker.ts +33 -0
  128. package/src/cantina/workers/videoManagerWorker.ts +64 -0
  129. package/src/createRoomObject.ts +0 -1
  130. package/src/fabric/WSClient.ts +1 -2
  131. package/src/features/mediaElements/mediaElementsSagas.ts +7 -3
  132. package/src/utils/interfaces.ts +4 -2
  133. package/src/utils/videoElement.ts +1 -0
  134. package/src/video/childMemberJoinedWorker.test.ts +11 -12
  135. package/src/video/childMemberJoinedWorker.ts +0 -9
  136. package/src/video/memberListUpdatedWorker.ts +15 -15
  137. package/src/video/videoPlaybackWorker.ts +54 -0
  138. package/src/video/videoRecordWorker.ts +54 -0
  139. package/src/video/videoStreamWorker.ts +48 -0
  140. package/src/video/videoWorker.ts +96 -0
  141. package/src/video/workers.ts +1 -1
  142. package/dist/core/src/ApplyEventListeners.d.ts +0 -11
  143. package/dist/core/src/ApplyEventListeners.d.ts.map +0 -1
  144. package/dist/core/src/redux/features/pubSub/pubSubSaga.d.ts +0 -10
  145. package/dist/core/src/redux/features/pubSub/pubSubSaga.d.ts.map +0 -1
  146. package/dist/core/src/redux/features/pubSub/pubSubSaga.test.d.ts +0 -2
  147. package/dist/core/src/redux/features/pubSub/pubSubSaga.test.d.ts.map +0 -1
  148. package/dist/core/src/redux/features/session/sessionSaga.test.d.ts +0 -2
  149. package/dist/core/src/redux/features/session/sessionSaga.test.d.ts.map +0 -1
  150. package/dist/core/src/rooms/RoomSessionRTPlayback.d.ts +0 -47
  151. package/dist/core/src/rooms/RoomSessionRTPlayback.d.ts.map +0 -1
  152. package/dist/core/src/rooms/RoomSessionRTPlayback.test.d.ts +0 -2
  153. package/dist/core/src/rooms/RoomSessionRTPlayback.test.d.ts.map +0 -1
  154. package/dist/core/src/rooms/RoomSessionRTRecording.d.ts +0 -37
  155. package/dist/core/src/rooms/RoomSessionRTRecording.d.ts.map +0 -1
  156. package/dist/core/src/rooms/RoomSessionRTRecording.test.d.ts +0 -2
  157. package/dist/core/src/rooms/RoomSessionRTRecording.test.d.ts.map +0 -1
  158. package/dist/core/src/rooms/RoomSessionRTStream.d.ts +0 -36
  159. package/dist/core/src/rooms/RoomSessionRTStream.d.ts.map +0 -1
  160. package/dist/core/src/rooms/RoomSessionRTStream.test.d.ts +0 -2
  161. package/dist/core/src/rooms/RoomSessionRTStream.test.d.ts.map +0 -1
  162. package/dist/core/src/rooms/methodsRT.d.ts +0 -65
  163. package/dist/core/src/rooms/methodsRT.d.ts.map +0 -1
  164. package/dist/core/src/utils/eventTransformUtils.d.ts +0 -16
  165. package/dist/core/src/utils/eventTransformUtils.d.ts.map +0 -1
  166. package/dist/core/src/utils/eventTransformUtils.test.d.ts +0 -2
  167. package/dist/core/src/utils/eventTransformUtils.test.d.ts.map +0 -1
  168. package/dist/core/src/utils/proxyUtils.d.ts +0 -17
  169. package/dist/core/src/utils/proxyUtils.d.ts.map +0 -1
  170. package/dist/js/src/cantina/workers.d.ts +0 -4
  171. package/dist/js/src/cantina/workers.d.ts.map +0 -1
  172. package/dist/js/src/video/memberPositionWorker.d.ts +0 -3
  173. package/dist/js/src/video/memberPositionWorker.d.ts.map +0 -1
  174. package/src/cantina/workers.ts +0 -28
  175. package/src/video/memberPositionWorker.ts +0 -15
package/dist/index.js CHANGED
@@ -194,13 +194,13 @@ __export(video_exports, {
194
194
  });
195
195
 
196
196
  // src/createRoomObject.ts
197
- var import_core18 = require("@signalwire/core");
197
+ var import_core23 = require("@signalwire/core");
198
198
 
199
199
  // src/createClient.ts
200
- var import_core17 = require("@signalwire/core");
200
+ var import_core22 = require("@signalwire/core");
201
201
 
202
202
  // src/Client.ts
203
- var import_core13 = require("@signalwire/core");
203
+ var import_core18 = require("@signalwire/core");
204
204
 
205
205
  // src/features/mediaElements/mediaElementsSagas.ts
206
206
  var import_core4 = require("@signalwire/core");
@@ -284,6 +284,7 @@ var makeLayoutChangedHandler = ({ localOverlay, rootElement }) => (_0) => __asyn
284
284
  localVideo.style.width = "100%";
285
285
  localVideo.style.height = "100%";
286
286
  localVideo.style.pointerEvents = "none";
287
+ localVideo.style.objectFit = "cover";
287
288
  myLayer.appendChild(localVideo);
288
289
  const mcuLayers = rootElement.querySelector(".mcuLayers");
289
290
  const exists = mcuLayers == null ? void 0 : mcuLayers.querySelector(`#${myLayer.id}`);
@@ -472,7 +473,7 @@ var makeVideoElementSaga = ({
472
473
  localOverlay.hide();
473
474
  }
474
475
  };
475
- room.on("_internal.mirror.video", (value) => {
476
+ room.on(`${import_core4.LOCAL_EVENT_PREFIX}.mirror.video`, (value) => {
476
477
  localOverlay.setLocalOverlayMirror(value);
477
478
  });
478
479
  room.on("layout.changed", (params) => {
@@ -588,7 +589,7 @@ function* audioElementActionsWatcher({
588
589
  switch (action.type) {
589
590
  case setSpeakerActionType:
590
591
  const response = yield import_core4.sagaEffects.call(import_webrtc.setMediaElementSinkId, element, action.payload);
591
- room.emit("_internal.speaker.updated", action.payload);
592
+ room.emit(`${import_core4.LOCAL_EVENT_PREFIX}.speaker.updated`, action.payload);
592
593
  room.settleCustomSagaTrigger({
593
594
  dispatchId: action.dispatchId,
594
595
  payload: response,
@@ -694,7 +695,7 @@ function* videoElementSetupWorker({
694
695
  }
695
696
 
696
697
  // src/BaseRoomSession.ts
697
- var import_core10 = require("@signalwire/core");
698
+ var import_core13 = require("@signalwire/core");
698
699
  var import_webrtc4 = require("@signalwire/webrtc");
699
700
 
700
701
  // src/utils/constants.ts
@@ -751,7 +752,7 @@ var RoomSessionDeviceAPI = (0, import_core6.extendComponent)(RoomSessionDeviceCo
751
752
  var import_core7 = require("@signalwire/core");
752
753
  var noop = () => {
753
754
  };
754
- var EXTERNAL_MEMBER_LIST_UPDATED_EVENT = "video.memberList.updated";
755
+ var EXTERNAL_MEMBER_LIST_UPDATED_EVENT = "memberList.updated";
755
756
  var INTERNAL_MEMBER_LIST_UPDATED_EVENT = (0, import_core7.toInternalEventName)({
756
757
  event: EXTERNAL_MEMBER_LIST_UPDATED_EVENT
757
758
  });
@@ -771,7 +772,7 @@ var getMemberListEventsToSubscribe = (subscriptions) => {
771
772
  });
772
773
  };
773
774
  var shouldHandleMemberList = (subscriptions) => {
774
- return subscriptions.some((event) => event.includes(INTERNAL_MEMBER_LIST_UPDATED_EVENT));
775
+ return subscriptions.some((event) => event.includes(EXTERNAL_MEMBER_LIST_UPDATED_EVENT));
775
776
  };
776
777
  var getMembersFromAction = (action) => {
777
778
  if (action.type === "video.room.joined") {
@@ -814,7 +815,8 @@ var initMemberListSubscriptions = (room, subscriptions) => {
814
815
  };
815
816
  };
816
817
  function* membersListUpdatedWatcher({
817
- pubSubChannel
818
+ swEventChannel,
819
+ instance
818
820
  }) {
819
821
  const memberList = /* @__PURE__ */ new Map();
820
822
  function* worker(pubSubAction) {
@@ -824,20 +826,17 @@ function* membersListUpdatedWatcher({
824
826
  room_session_id: roomSessionId,
825
827
  members
826
828
  };
827
- yield import_core7.sagaEffects.put(pubSubChannel, {
828
- type: SYNTHETIC_MEMBER_LIST_UPDATED_EVENT,
829
- payload: memberListPayload
830
- });
829
+ instance.emit(SYNTHETIC_MEMBER_LIST_UPDATED_EVENT, memberListPayload);
831
830
  }
832
831
  while (true) {
833
- const pubSubAction = yield import_core7.sagaEffects.take(pubSubChannel, ({ type }) => {
832
+ const pubSubAction = yield import_core7.sagaEffects.take(swEventChannel, ({ type }) => {
834
833
  return isMemberListEvent(type);
835
834
  });
836
835
  yield import_core7.sagaEffects.fork(worker, pubSubAction);
837
836
  }
838
837
  }
839
838
  var memberListUpdatedWorker = function* membersChangedWorker({
840
- channels: { pubSubChannel },
839
+ channels: { swEventChannel },
841
840
  instance
842
841
  }) {
843
842
  const subscriptions = instance.getSubscriptions();
@@ -846,33 +845,25 @@ var memberListUpdatedWorker = function* membersChangedWorker({
846
845
  }
847
846
  const { cleanup } = initMemberListSubscriptions(instance, subscriptions);
848
847
  yield import_core7.sagaEffects.fork(membersListUpdatedWatcher, {
849
- pubSubChannel
848
+ swEventChannel,
849
+ instance
850
850
  });
851
851
  instance.once("destroy", () => {
852
852
  cleanup();
853
853
  });
854
854
  };
855
855
 
856
- // src/video/memberPositionWorker.ts
857
- var import_core8 = require("@signalwire/core");
858
- var memberPositionWorker = function* memberPositionWorker2(options) {
859
- if (!options.initialState) {
860
- throw new Error("[memberPositionWorker] Missing initialState");
861
- }
862
- yield import_core8.sagaEffects.fork(import_core8.MemberPosition.memberPositionWorker, options);
863
- };
864
-
865
856
  // src/video/childMemberJoinedWorker.ts
866
- var import_core9 = require("@signalwire/core");
857
+ var import_core8 = require("@signalwire/core");
867
858
  var childMemberJoinedWorker = function* (options) {
868
- (0, import_core9.getLogger)().trace("childMemberJoinedWorker started");
859
+ (0, import_core8.getLogger)().trace("childMemberJoinedWorker started");
869
860
  const { channels, instance, initialState, onDone, onFail } = options;
870
861
  const { swEventChannel } = channels;
871
862
  const { parentId } = initialState;
872
863
  if (!parentId) {
873
864
  throw new Error("Missing parentId for childMemberJoinedWorker");
874
865
  }
875
- const action = yield import_core9.sagaEffects.take(swEventChannel, (action2) => {
866
+ const action = yield import_core8.sagaEffects.take(swEventChannel, (action2) => {
876
867
  if (action2.type === "video.member.joined") {
877
868
  return action2.payload.member.parent_id === parentId;
878
869
  }
@@ -880,14 +871,12 @@ var childMemberJoinedWorker = function* (options) {
880
871
  });
881
872
  const { member } = action.payload;
882
873
  if (member == null ? void 0 : member.parent_id) {
883
- const byId = yield import_core9.sagaEffects.select(import_core9.componentSelectors.getComponentsById);
874
+ const byId = yield import_core8.sagaEffects.select(import_core8.componentSelectors.getComponentsById);
884
875
  const parent = Object.values(byId).find((row) => {
885
876
  return "memberId" in row && row.memberId === member.parent_id;
886
877
  });
887
878
  if (parent) {
888
- instance._attachListeners(member.id);
889
- instance.applyEmitterTransforms();
890
- yield import_core9.sagaEffects.put(import_core9.componentActions.upsert({
879
+ yield import_core8.sagaEffects.put(import_core8.componentActions.upsert({
891
880
  id: instance.callId,
892
881
  roomId: action.payload.room_id,
893
882
  roomSessionId: action.payload.room_session_id,
@@ -898,7 +887,178 @@ var childMemberJoinedWorker = function* (options) {
898
887
  onFail == null ? void 0 : onFail({ error: new Error("Unknown parent_id") });
899
888
  }
900
889
  }
901
- (0, import_core9.getLogger)().trace("childMemberJoinedWorker ended");
890
+ (0, import_core8.getLogger)().trace("childMemberJoinedWorker ended");
891
+ };
892
+
893
+ // src/video/videoWorker.ts
894
+ var import_core12 = require("@signalwire/core");
895
+
896
+ // src/video/videoStreamWorker.ts
897
+ var import_core9 = require("@signalwire/core");
898
+ var videoStreamWorker = function* (options) {
899
+ (0, import_core9.getLogger)().trace("videoStreamWorker started");
900
+ const {
901
+ instance: roomSession,
902
+ action: { type, payload },
903
+ instanceMap: { get, set, remove }
904
+ } = options;
905
+ let streamInstance = get(payload.stream.id);
906
+ if (!streamInstance) {
907
+ streamInstance = import_core9.Rooms.createRoomSessionStreamObject({
908
+ store: roomSession.store,
909
+ payload
910
+ });
911
+ } else {
912
+ streamInstance.setPayload(payload);
913
+ }
914
+ set(payload.stream.id, streamInstance);
915
+ switch (type) {
916
+ case "video.stream.started":
917
+ roomSession.emit("stream.started", streamInstance);
918
+ break;
919
+ case "video.stream.ended":
920
+ roomSession.emit("stream.ended", streamInstance);
921
+ remove(payload.stream.id);
922
+ break;
923
+ default:
924
+ (0, import_core9.getLogger)().warn(`Unknown video.stream event: "${type}"`);
925
+ break;
926
+ }
927
+ (0, import_core9.getLogger)().trace("videoStreamWorker ended");
928
+ };
929
+
930
+ // src/video/videoRecordWorker.ts
931
+ var import_core10 = require("@signalwire/core");
932
+ var videoRecordWorker = function* (options) {
933
+ (0, import_core10.getLogger)().trace("videoRecordWorker started");
934
+ const {
935
+ instance: roomSession,
936
+ action: { type, payload },
937
+ instanceMap: { get, set, remove }
938
+ } = options;
939
+ let recordingInstance = get(payload.recording.id);
940
+ if (!recordingInstance) {
941
+ recordingInstance = import_core10.Rooms.createRoomSessionRecordingObject({
942
+ store: roomSession.store,
943
+ payload
944
+ });
945
+ } else {
946
+ recordingInstance.setPayload(payload);
947
+ }
948
+ set(payload.recording.id, recordingInstance);
949
+ const event = (0, import_core10.stripNamespacePrefix)(type);
950
+ switch (type) {
951
+ case "video.recording.started":
952
+ case "video.recording.updated": {
953
+ roomSession.emit(event, recordingInstance);
954
+ break;
955
+ }
956
+ case "video.recording.ended":
957
+ roomSession.emit(event, recordingInstance);
958
+ remove(payload.recording.id);
959
+ break;
960
+ default:
961
+ (0, import_core10.getLogger)().warn(`Unknown video.stream event: "${type}"`);
962
+ break;
963
+ }
964
+ (0, import_core10.getLogger)().trace("videoRecordWorker ended");
965
+ };
966
+
967
+ // src/video/videoPlaybackWorker.ts
968
+ var import_core11 = require("@signalwire/core");
969
+ var videoPlaybackWorker = function* (options) {
970
+ (0, import_core11.getLogger)().trace("videoPlaybackWorker started");
971
+ const {
972
+ instance: roomSession,
973
+ action: { type, payload },
974
+ instanceMap: { get, set, remove }
975
+ } = options;
976
+ let playbackInstance = get(payload.playback.id);
977
+ if (!playbackInstance) {
978
+ playbackInstance = import_core11.Rooms.createRoomSessionPlaybackObject({
979
+ store: roomSession.store,
980
+ payload
981
+ });
982
+ } else {
983
+ playbackInstance.setPayload(payload);
984
+ }
985
+ set(payload.playback.id, playbackInstance);
986
+ const event = (0, import_core11.stripNamespacePrefix)(type);
987
+ switch (type) {
988
+ case "video.playback.started":
989
+ case "video.playback.updated": {
990
+ roomSession.emit(event, playbackInstance);
991
+ break;
992
+ }
993
+ case "video.playback.ended":
994
+ roomSession.emit(event, playbackInstance);
995
+ remove(payload.playback.id);
996
+ break;
997
+ default:
998
+ (0, import_core11.getLogger)().warn(`Unknown video.stream event: "${type}"`);
999
+ break;
1000
+ }
1001
+ (0, import_core11.getLogger)().trace("videoPlaybackWorker ended");
1002
+ };
1003
+
1004
+ // src/video/videoWorker.ts
1005
+ var videoWorker = function* (options) {
1006
+ const { channels, instance: roomSession } = options;
1007
+ const { swEventChannel } = channels;
1008
+ function* worker(action) {
1009
+ const { type, payload } = action;
1010
+ switch (type) {
1011
+ case "video.room.subscribed":
1012
+ yield import_core12.sagaEffects.spawn(import_core12.MemberPosition.memberPositionWorker, __spreadProps(__spreadValues({}, options), {
1013
+ instance: roomSession,
1014
+ initialState: payload
1015
+ }));
1016
+ break;
1017
+ case "video.playback.started":
1018
+ case "video.playback.updated":
1019
+ case "video.playback.ended":
1020
+ yield import_core12.sagaEffects.fork(videoPlaybackWorker, __spreadValues({
1021
+ action
1022
+ }, options));
1023
+ return;
1024
+ case "video.recording.started":
1025
+ case "video.recording.updated":
1026
+ case "video.recording.ended":
1027
+ yield import_core12.sagaEffects.fork(videoRecordWorker, __spreadValues({
1028
+ action
1029
+ }, options));
1030
+ return;
1031
+ case "video.stream.ended":
1032
+ case "video.stream.started":
1033
+ yield import_core12.sagaEffects.fork(videoStreamWorker, __spreadValues({
1034
+ action
1035
+ }, options));
1036
+ return;
1037
+ case "video.room.audience_count": {
1038
+ roomSession.emit("room.audienceCount", payload);
1039
+ return;
1040
+ }
1041
+ case "video.member.talking": {
1042
+ const { member } = payload;
1043
+ if ("talking" in member) {
1044
+ const suffix = member.talking ? "started" : "ended";
1045
+ roomSession.emit(`member.talking.${suffix}`, payload);
1046
+ const deprecatedSuffix = member.talking ? "start" : "stop";
1047
+ roomSession.emit(`member.talking.${deprecatedSuffix}`, payload);
1048
+ }
1049
+ break;
1050
+ }
1051
+ default:
1052
+ break;
1053
+ }
1054
+ roomSession.emit((0, import_core12.stripNamespacePrefix)(type), payload);
1055
+ }
1056
+ const isVideoEvent = (action) => action.type.startsWith("video.");
1057
+ while (true) {
1058
+ const action = yield import_core12.sagaEffects.take(swEventChannel, isVideoEvent);
1059
+ yield import_core12.sagaEffects.fork(worker, action);
1060
+ }
1061
+ (0, import_core12.getLogger)().trace("videoWorker ended");
902
1062
  };
903
1063
 
904
1064
  // src/BaseRoomSession.ts
@@ -910,6 +1070,9 @@ var RoomSessionConnection = class extends import_webrtc4.BaseConnection {
910
1070
  __publicField(this, "_mirrored");
911
1071
  __publicField(this, "_audioEl");
912
1072
  this._mirrored = options.mirrorLocalVideoOverlay;
1073
+ this.runWorker("videoWorker", {
1074
+ worker: videoWorker
1075
+ });
913
1076
  }
914
1077
  get screenShareList() {
915
1078
  return Array.from(this._screenShareList);
@@ -931,173 +1094,11 @@ var RoomSessionConnection = class extends import_webrtc4.BaseConnection {
931
1094
  return (_b = (_a = authState == null ? void 0 : authState.room) == null ? void 0 : _a.scopes) != null ? _b : [];
932
1095
  });
933
1096
  }
934
- getEmitterTransforms() {
935
- return /* @__PURE__ */ new Map([
936
- [
937
- ["video.room.joined"],
938
- {
939
- type: "roomSession",
940
- instanceFactory: () => {
941
- return {};
942
- },
943
- payloadTransform: (payload) => {
944
- return payload;
945
- },
946
- nestedFieldsToProcess: {
947
- recordings: {
948
- eventTransformType: "roomSessionRecording",
949
- processInstancePayload: (payload) => ({ recording: payload })
950
- },
951
- playbacks: {
952
- eventTransformType: "roomSessionPlayback",
953
- processInstancePayload: (payload) => ({ playback: payload })
954
- },
955
- streams: {
956
- eventTransformType: "roomSessionStream",
957
- processInstancePayload: (payload) => ({ stream: payload })
958
- }
959
- }
960
- }
961
- ],
962
- [
963
- [(0, import_core10.toLocalEvent)("video.recording.list")],
964
- {
965
- type: "roomSessionRecordingList",
966
- instanceFactory: (_payload) => {
967
- return {};
968
- },
969
- payloadTransform: (payload) => {
970
- return payload;
971
- },
972
- nestedFieldsToProcess: {
973
- recordings: {
974
- eventTransformType: "roomSessionRecording",
975
- processInstancePayload: (payload) => ({ recording: payload })
976
- }
977
- }
978
- }
979
- ],
980
- [
981
- [(0, import_core10.toLocalEvent)("video.playback.list")],
982
- {
983
- type: "roomSessionPlaybackList",
984
- instanceFactory: (_payload) => {
985
- return {};
986
- },
987
- payloadTransform: (payload) => {
988
- return payload;
989
- },
990
- nestedFieldsToProcess: {
991
- playbacks: {
992
- eventTransformType: "roomSessionPlayback",
993
- processInstancePayload: (payload) => ({ playback: payload })
994
- }
995
- }
996
- }
997
- ],
998
- [
999
- [
1000
- (0, import_core10.toLocalEvent)("video.recording.start"),
1001
- "video.recording.started",
1002
- "video.recording.updated",
1003
- "video.recording.ended"
1004
- ],
1005
- {
1006
- type: "roomSessionRecording",
1007
- instanceFactory: (_payload) => {
1008
- return import_core10.Rooms.createRoomSessionRecordingObject({
1009
- store: this.store,
1010
- emitter: this.emitter
1011
- });
1012
- },
1013
- payloadTransform: (payload) => {
1014
- return (0, import_core10.toExternalJSON)(__spreadProps(__spreadValues({}, payload.recording), {
1015
- room_session_id: this.roomSessionId
1016
- }));
1017
- }
1018
- }
1019
- ],
1020
- [
1021
- [
1022
- (0, import_core10.toLocalEvent)("video.playback.start"),
1023
- "video.playback.started",
1024
- "video.playback.updated",
1025
- "video.playback.ended"
1026
- ],
1027
- {
1028
- type: "roomSessionPlayback",
1029
- instanceFactory: (_payload) => {
1030
- return import_core10.Rooms.createRoomSessionPlaybackObject({
1031
- store: this.store,
1032
- emitter: this.emitter
1033
- });
1034
- },
1035
- payloadTransform: (payload) => {
1036
- return (0, import_core10.toExternalJSON)(__spreadProps(__spreadValues({}, payload.playback), {
1037
- room_session_id: this.roomSessionId
1038
- }));
1039
- }
1040
- }
1041
- ],
1042
- [
1043
- [(0, import_core10.toLocalEvent)("video.stream.list")],
1044
- {
1045
- type: "roomSessionStreamList",
1046
- instanceFactory: (_payload) => {
1047
- return {};
1048
- },
1049
- payloadTransform: (payload) => {
1050
- return payload;
1051
- },
1052
- nestedFieldsToProcess: {
1053
- streams: {
1054
- eventTransformType: "roomSessionStream",
1055
- processInstancePayload: (payload) => {
1056
- return { stream: payload };
1057
- }
1058
- }
1059
- }
1060
- }
1061
- ],
1062
- [
1063
- [
1064
- (0, import_core10.toLocalEvent)("video.stream.start"),
1065
- "video.stream.started",
1066
- "video.stream.ended"
1067
- ],
1068
- {
1069
- type: "roomSessionStream",
1070
- instanceFactory: (_payload) => {
1071
- return import_core10.Rooms.createRoomSessionStreamObject({
1072
- store: this.store,
1073
- emitter: this.emitter
1074
- });
1075
- },
1076
- payloadTransform: (payload) => {
1077
- return (0, import_core10.toExternalJSON)(__spreadProps(__spreadValues({}, payload.stream), {
1078
- room_session_id: this.roomSessionId
1079
- }));
1080
- }
1081
- }
1082
- ]
1083
- ]);
1084
- }
1085
- getCompoundEvents() {
1086
- return new Map([
1087
- ...import_core10.MemberPosition.MEMBER_POSITION_COMPOUND_EVENTS
1088
- ]);
1089
- }
1090
1097
  attachPreConnectWorkers() {
1091
1098
  this.runWorker("memberListUpdated", {
1092
1099
  worker: memberListUpdatedWorker
1093
1100
  });
1094
1101
  }
1095
- attachOnSubscribedWorkers(payload) {
1096
- this.runWorker("memberPositionWorker", {
1097
- worker: memberPositionWorker,
1098
- initialState: payload
1099
- });
1100
- }
1101
1102
  createScreenShareObject() {
1102
1103
  return __async(this, arguments, function* (opts = {}) {
1103
1104
  return this.startScreenShare(opts);
@@ -1130,7 +1131,7 @@ var RoomSessionConnection = class extends import_webrtc4.BaseConnection {
1130
1131
  layout,
1131
1132
  positions
1132
1133
  });
1133
- const screenShare = (0, import_core10.connect)({
1134
+ const screenShare = (0, import_core13.connect)({
1134
1135
  store: this.store,
1135
1136
  Component: RoomSessionScreenShareAPI
1136
1137
  })(options);
@@ -1200,7 +1201,7 @@ var RoomSessionConnection = class extends import_webrtc4.BaseConnection {
1200
1201
  memberId: this.memberId
1201
1202
  })
1202
1203
  });
1203
- const roomDevice = (0, import_core10.connect)({
1204
+ const roomDevice = (0, import_core13.connect)({
1204
1205
  store: this.store,
1205
1206
  Component: RoomSessionDeviceAPI
1206
1207
  })(options);
@@ -1237,7 +1238,7 @@ var RoomSessionConnection = class extends import_webrtc4.BaseConnection {
1237
1238
  }
1238
1239
  updateSpeaker({ deviceId }) {
1239
1240
  const prevId = this._audioEl.sinkId;
1240
- this.once("_internal.speaker.updated", (newId) => __async(this, null, function* () {
1241
+ this.once(`${import_core13.LOCAL_EVENT_PREFIX}.speaker.updated`, (newId) => __async(this, null, function* () {
1241
1242
  const prevSpeaker = yield (0, import_webrtc4.getSpeakerById)(prevId);
1242
1243
  const newSpeaker = yield (0, import_webrtc4.getSpeakerById)(newId);
1243
1244
  const isSame = (newSpeaker == null ? void 0 : newSpeaker.deviceId) === (prevSpeaker == null ? void 0 : prevSpeaker.deviceId);
@@ -1294,7 +1295,6 @@ var RoomSessionConnection = class extends import_webrtc4.BaseConnection {
1294
1295
  if (this._audioEl)
1295
1296
  return this._audioEl;
1296
1297
  this._audioEl = new Audio();
1297
- console.log("listener attached!");
1298
1298
  this._attachSpeakerTrackListener();
1299
1299
  return this._audioEl;
1300
1300
  }
@@ -1325,52 +1325,56 @@ var RoomSessionConnection = class extends import_webrtc4.BaseConnection {
1325
1325
  mirrored: this._mirrored,
1326
1326
  setMirrored: (value) => {
1327
1327
  this._mirrored = value;
1328
- this.emit("_internal.mirror.video", this._mirrored);
1328
+ this.emit(`${import_core13.LOCAL_EVENT_PREFIX}.mirror.video`, this._mirrored);
1329
1329
  }
1330
1330
  };
1331
1331
  }
1332
+ getSubscriptions() {
1333
+ const eventNamesWithPrefix = this.eventNames().map((event) => `video.${event}`);
1334
+ return (0, import_core13.validateEventsToSubscribe)(eventNamesWithPrefix);
1335
+ }
1332
1336
  };
1333
- var RoomSessionAPI = (0, import_core10.extendComponent)(RoomSessionConnection, {
1334
- audioMute: import_core10.Rooms.audioMuteMember,
1335
- audioUnmute: import_core10.Rooms.audioUnmuteMember,
1336
- videoMute: import_core10.Rooms.videoMuteMember,
1337
- videoUnmute: import_core10.Rooms.videoUnmuteMember,
1338
- deaf: import_core10.Rooms.deafMember,
1339
- undeaf: import_core10.Rooms.undeafMember,
1340
- setInputVolume: import_core10.Rooms.setInputVolumeMember,
1341
- setOutputVolume: import_core10.Rooms.setOutputVolumeMember,
1342
- setMicrophoneVolume: import_core10.Rooms.setInputVolumeMember,
1343
- setSpeakerVolume: import_core10.Rooms.setOutputVolumeMember,
1344
- setInputSensitivity: import_core10.Rooms.setInputSensitivityMember,
1345
- removeMember: import_core10.Rooms.removeMember,
1346
- removeAllMembers: import_core10.Rooms.removeAllMembers,
1347
- getMembers: import_core10.Rooms.getMembers,
1348
- getLayouts: import_core10.Rooms.getLayouts,
1349
- setLayout: import_core10.Rooms.setLayout,
1350
- setPositions: import_core10.Rooms.setPositions,
1351
- setMemberPosition: import_core10.Rooms.setMemberPosition,
1352
- hideVideoMuted: import_core10.Rooms.hideVideoMuted,
1353
- showVideoMuted: import_core10.Rooms.showVideoMuted,
1354
- getRecordings: import_core10.Rooms.getRecordings,
1355
- startRecording: import_core10.Rooms.startRecording,
1356
- getPlaybacks: import_core10.Rooms.getPlaybacks,
1357
- play: import_core10.Rooms.play,
1358
- setHideVideoMuted: import_core10.Rooms.setHideVideoMuted,
1359
- getMeta: import_core10.Rooms.getMeta,
1360
- setMeta: import_core10.Rooms.setMeta,
1361
- updateMeta: import_core10.Rooms.updateMeta,
1362
- deleteMeta: import_core10.Rooms.deleteMeta,
1363
- getMemberMeta: import_core10.Rooms.getMemberMeta,
1364
- setMemberMeta: import_core10.Rooms.setMemberMeta,
1365
- updateMemberMeta: import_core10.Rooms.updateMemberMeta,
1366
- deleteMemberMeta: import_core10.Rooms.deleteMemberMeta,
1367
- promote: import_core10.Rooms.promote,
1368
- demote: import_core10.Rooms.demote,
1369
- getStreams: import_core10.Rooms.getStreams,
1370
- startStream: import_core10.Rooms.startStream
1337
+ var RoomSessionAPI = (0, import_core13.extendComponent)(RoomSessionConnection, {
1338
+ audioMute: import_core13.Rooms.audioMuteMember,
1339
+ audioUnmute: import_core13.Rooms.audioUnmuteMember,
1340
+ videoMute: import_core13.Rooms.videoMuteMember,
1341
+ videoUnmute: import_core13.Rooms.videoUnmuteMember,
1342
+ deaf: import_core13.Rooms.deafMember,
1343
+ undeaf: import_core13.Rooms.undeafMember,
1344
+ setInputVolume: import_core13.Rooms.setInputVolumeMember,
1345
+ setOutputVolume: import_core13.Rooms.setOutputVolumeMember,
1346
+ setMicrophoneVolume: import_core13.Rooms.setInputVolumeMember,
1347
+ setSpeakerVolume: import_core13.Rooms.setOutputVolumeMember,
1348
+ setInputSensitivity: import_core13.Rooms.setInputSensitivityMember,
1349
+ removeMember: import_core13.Rooms.removeMember,
1350
+ removeAllMembers: import_core13.Rooms.removeAllMembers,
1351
+ getMembers: import_core13.Rooms.getMembers,
1352
+ getLayouts: import_core13.Rooms.getLayouts,
1353
+ setLayout: import_core13.Rooms.setLayout,
1354
+ setPositions: import_core13.Rooms.setPositions,
1355
+ setMemberPosition: import_core13.Rooms.setMemberPosition,
1356
+ hideVideoMuted: import_core13.Rooms.hideVideoMuted,
1357
+ showVideoMuted: import_core13.Rooms.showVideoMuted,
1358
+ getRecordings: import_core13.Rooms.getRecordings,
1359
+ startRecording: import_core13.Rooms.startRecording,
1360
+ getPlaybacks: import_core13.Rooms.getPlaybacks,
1361
+ play: import_core13.Rooms.play,
1362
+ setHideVideoMuted: import_core13.Rooms.setHideVideoMuted,
1363
+ getMeta: import_core13.Rooms.getMeta,
1364
+ setMeta: import_core13.Rooms.setMeta,
1365
+ updateMeta: import_core13.Rooms.updateMeta,
1366
+ deleteMeta: import_core13.Rooms.deleteMeta,
1367
+ getMemberMeta: import_core13.Rooms.getMemberMeta,
1368
+ setMemberMeta: import_core13.Rooms.setMemberMeta,
1369
+ updateMemberMeta: import_core13.Rooms.updateMemberMeta,
1370
+ deleteMemberMeta: import_core13.Rooms.deleteMemberMeta,
1371
+ promote: import_core13.Rooms.promote,
1372
+ demote: import_core13.Rooms.demote,
1373
+ getStreams: import_core13.Rooms.getStreams,
1374
+ startStream: import_core13.Rooms.startStream
1371
1375
  });
1372
1376
  var createBaseRoomSessionObject = (params) => {
1373
- const room = (0, import_core10.connect)({
1377
+ const room = (0, import_core13.connect)({
1374
1378
  store: params.store,
1375
1379
  customSagas: params.customSagas,
1376
1380
  Component: RoomSessionAPI
@@ -1379,68 +1383,90 @@ var createBaseRoomSessionObject = (params) => {
1379
1383
  };
1380
1384
 
1381
1385
  // src/cantina/VideoManager.ts
1382
- var import_core12 = require("@signalwire/core");
1386
+ var import_core17 = require("@signalwire/core");
1383
1387
 
1384
- // src/cantina/workers.ts
1385
- var import_core11 = require("@signalwire/core");
1388
+ // src/cantina/workers/videoManagerWorker.ts
1389
+ var import_core16 = require("@signalwire/core");
1390
+
1391
+ // src/cantina/workers/videoManagerRoomsWorker.ts
1392
+ var import_core14 = require("@signalwire/core");
1393
+ var videoManagerRoomsWorker = function* (options) {
1394
+ (0, import_core14.getLogger)().trace("videoManagerRoomsWorker started");
1395
+ const {
1396
+ instance: client,
1397
+ action: { type, payload }
1398
+ } = options;
1399
+ const modPayload = {
1400
+ rooms: payload.rooms.map((row) => (0, import_core14.toExternalJSON)(row))
1401
+ };
1402
+ client.emit((0, import_core14.stripNamespacePrefix)(type), modPayload);
1403
+ (0, import_core14.getLogger)().trace("videoManagerRoomsWorker ended");
1404
+ };
1405
+
1406
+ // src/cantina/workers/videoManagerRoomWorker.ts
1407
+ var import_core15 = require("@signalwire/core");
1408
+ var videoManagerRoomWorker = function* (options) {
1409
+ (0, import_core15.getLogger)().trace("videoManagerRoomWorker started");
1410
+ const {
1411
+ instance: client,
1412
+ action: { type, payload }
1413
+ } = options;
1414
+ client.emit((0, import_core15.stripNamespacePrefix)(type), (0, import_core15.toExternalJSON)(payload));
1415
+ (0, import_core15.getLogger)().trace("videoManagerRoomWorker ended");
1416
+ };
1417
+
1418
+ // src/cantina/workers/videoManagerWorker.ts
1386
1419
  var videoManagerWorker = function* (options) {
1387
- (0, import_core11.getLogger)().trace("videoManagerWorker started");
1388
- const { channels } = options;
1389
- const { swEventChannel, pubSubChannel } = channels;
1420
+ (0, import_core16.getLogger)().trace("videoManagerWorker started");
1421
+ const {
1422
+ channels: { swEventChannel }
1423
+ } = options;
1424
+ function* worker(action) {
1425
+ const { type } = action;
1426
+ switch (type) {
1427
+ case "video-manager.rooms.subscribed":
1428
+ yield import_core16.sagaEffects.fork(videoManagerRoomsWorker, __spreadValues({
1429
+ action
1430
+ }, options));
1431
+ break;
1432
+ case "video-manager.room.added":
1433
+ case "video-manager.room.deleted":
1434
+ case "video-manager.room.ended":
1435
+ case "video-manager.room.started":
1436
+ case "video-manager.room.updated":
1437
+ yield import_core16.sagaEffects.fork(videoManagerRoomWorker, __spreadValues({
1438
+ action
1439
+ }, options));
1440
+ break;
1441
+ default:
1442
+ (0, import_core16.getLogger)().warn(`Unknown video-manager event: "${type}"`);
1443
+ break;
1444
+ }
1445
+ }
1390
1446
  while (true) {
1391
- const action = yield import_core11.sagaEffects.take(swEventChannel, (action2) => {
1447
+ const action = yield import_core16.sagaEffects.take(swEventChannel, (action2) => {
1392
1448
  return action2.type.startsWith("video-manager.");
1393
1449
  });
1394
- yield import_core11.sagaEffects.put(pubSubChannel, action);
1450
+ yield import_core16.sagaEffects.fork(worker, action);
1395
1451
  }
1452
+ (0, import_core16.getLogger)().trace("videoManagerWorker ended");
1396
1453
  };
1397
1454
 
1398
1455
  // src/cantina/VideoManager.ts
1399
- var VideoManagerAPI = class extends import_core12.BaseConsumer {
1456
+ var VideoManagerAPI = class extends import_core17.BaseConsumer {
1400
1457
  constructor(options) {
1401
1458
  super(options);
1402
- __publicField(this, "_eventsPrefix", "video-manager");
1403
1459
  this.runWorker("videoManagerWorker", {
1404
1460
  worker: videoManagerWorker
1405
1461
  });
1406
1462
  }
1407
- getEmitterTransforms() {
1408
- return /* @__PURE__ */ new Map([
1409
- [
1410
- ["video-manager.rooms.subscribed"],
1411
- {
1412
- type: "roomSession",
1413
- instanceFactory: ({
1414
- rooms
1415
- }) => ({
1416
- rooms: rooms.map((row) => (0, import_core12.toExternalJSON)(row))
1417
- }),
1418
- payloadTransform: ({
1419
- rooms
1420
- }) => ({
1421
- rooms: rooms.map((row) => (0, import_core12.toExternalJSON)(row))
1422
- })
1423
- }
1424
- ],
1425
- [
1426
- [
1427
- "video-manager.room.started",
1428
- "video-manager.room.added",
1429
- "video-manager.room.updated",
1430
- "video-manager.room.ended",
1431
- "video-manager.room.deleted"
1432
- ],
1433
- {
1434
- type: "roomSession",
1435
- instanceFactory: (payload) => (0, import_core12.toExternalJSON)(payload),
1436
- payloadTransform: (payload) => (0, import_core12.toExternalJSON)(payload)
1437
- }
1438
- ]
1439
- ]);
1463
+ getSubscriptions() {
1464
+ const eventNamesWithPrefix = this.eventNames().map((event) => `video-manager.${event}`);
1465
+ return (0, import_core17.validateEventsToSubscribe)(eventNamesWithPrefix);
1440
1466
  }
1441
1467
  };
1442
1468
  var createVideoManagerObject = (params) => {
1443
- const manager = (0, import_core12.connect)({
1469
+ const manager = (0, import_core17.connect)({
1444
1470
  store: params.store,
1445
1471
  Component: VideoManagerAPI
1446
1472
  })(params);
@@ -1458,7 +1484,7 @@ var createVideoManagerObject = (params) => {
1458
1484
  };
1459
1485
 
1460
1486
  // src/Client.ts
1461
- var ClientAPI = class extends import_core13.BaseClient {
1487
+ var ClientAPI = class extends import_core18.BaseClient {
1462
1488
  constructor() {
1463
1489
  super(...arguments);
1464
1490
  __publicField(this, "_videoManager");
@@ -1491,7 +1517,6 @@ var ClientAPI = class extends import_core13.BaseClient {
1491
1517
  }
1492
1518
  const room = createBaseRoomSessionObject(__spreadProps(__spreadValues({}, options), {
1493
1519
  store: this.store,
1494
- emitter: this.emitter,
1495
1520
  customSagas
1496
1521
  }));
1497
1522
  if (stopMicrophoneWhileMuted) {
@@ -1522,18 +1547,16 @@ var ClientAPI = class extends import_core13.BaseClient {
1522
1547
  }
1523
1548
  get chat() {
1524
1549
  if (!this._chat) {
1525
- this._chat = import_core13.Chat.createBaseChatObject({
1526
- store: this.store,
1527
- emitter: this.options.emitter
1550
+ this._chat = import_core18.Chat.createBaseChatObject({
1551
+ store: this.store
1528
1552
  });
1529
1553
  }
1530
1554
  return this._chat;
1531
1555
  }
1532
1556
  get pubSub() {
1533
1557
  if (!this._pubSub) {
1534
- this._pubSub = import_core13.PubSub.createBasePubSubObject({
1535
- store: this.store,
1536
- emitter: this.options.emitter
1558
+ this._pubSub = import_core18.PubSub.createBasePubSubObject({
1559
+ store: this.store
1537
1560
  });
1538
1561
  }
1539
1562
  return this._pubSub;
@@ -1545,17 +1568,17 @@ var ClientAPI = class extends import_core13.BaseClient {
1545
1568
  return this._videoManager;
1546
1569
  }
1547
1570
  reauthenticate(token) {
1548
- this.store.dispatch(import_core13.actions.reauthAction({ token }));
1571
+ this.store.dispatch(import_core18.actions.reauthAction({ token }));
1549
1572
  }
1550
1573
  };
1551
1574
 
1552
1575
  // src/JWTSession.ts
1553
1576
  var import_jwt_decode2 = __toESM(require("jwt-decode"));
1554
- var import_core16 = require("@signalwire/core");
1577
+ var import_core21 = require("@signalwire/core");
1555
1578
 
1556
1579
  // src/utils/storage.ts
1557
1580
  var import_jwt_decode = __toESM(require("jwt-decode"));
1558
- var import_core14 = require("@signalwire/core");
1581
+ var import_core19 = require("@signalwire/core");
1559
1582
  var getStorage = () => {
1560
1583
  if (window && window.sessionStorage) {
1561
1584
  return window.sessionStorage;
@@ -1570,7 +1593,7 @@ var sessionStorageManager = (token) => {
1570
1593
  roomName = (_a = jwtPayload == null ? void 0 : jwtPayload.r) != null ? _a : "";
1571
1594
  } catch (e) {
1572
1595
  if (process.env.NODE_ENV !== "production") {
1573
- (0, import_core14.getLogger)().error("[sessionStorageManager] error decoding JWT", token);
1596
+ (0, import_core19.getLogger)().error("[sessionStorageManager] error decoding JWT", token);
1574
1597
  }
1575
1598
  roomName = "";
1576
1599
  }
@@ -1583,11 +1606,11 @@ var sessionStorageManager = (token) => {
1583
1606
  };
1584
1607
 
1585
1608
  // src/utils/CloseEvent.ts
1586
- var import_core15 = require("@signalwire/core");
1587
- var SwCloseEvent = typeof CloseEvent === "function" ? CloseEvent : import_core15.SWCloseEvent;
1609
+ var import_core20 = require("@signalwire/core");
1610
+ var SwCloseEvent = typeof CloseEvent === "function" ? CloseEvent : import_core20.SWCloseEvent;
1588
1611
 
1589
1612
  // src/JWTSession.ts
1590
- var JWTSession = class extends import_core16.BaseJWTSession {
1613
+ var JWTSession = class extends import_core21.BaseJWTSession {
1591
1614
  constructor(options) {
1592
1615
  var _a;
1593
1616
  let decodedJwt = {};
@@ -1597,7 +1620,7 @@ var JWTSession = class extends import_core16.BaseJWTSession {
1597
1620
  });
1598
1621
  } catch (e) {
1599
1622
  if (process.env.NODE_ENV !== "production") {
1600
- (0, import_core16.getLogger)().debug("[JWTSession] error decoding the JWT");
1623
+ (0, import_core21.getLogger)().debug("[JWTSession] error decoding the JWT");
1601
1624
  }
1602
1625
  }
1603
1626
  super(__spreadProps(__spreadValues({}, options), {
@@ -1606,7 +1629,7 @@ var JWTSession = class extends import_core16.BaseJWTSession {
1606
1629
  this.options = options;
1607
1630
  __publicField(this, "WebSocketConstructor", WebSocket);
1608
1631
  __publicField(this, "CloseEventConstructor", SwCloseEvent);
1609
- __publicField(this, "agent", "@signalwire/js/browser/3.23.3");
1632
+ __publicField(this, "agent", "@signalwire/js/browser/3.23.4");
1610
1633
  __publicField(this, "tokenTyp");
1611
1634
  this.tokenTyp = (_a = decodedJwt.typ) != null ? _a : "VRT";
1612
1635
  }
@@ -1692,13 +1715,13 @@ var JWTSession = class extends import_core16.BaseJWTSession {
1692
1715
  // src/createClient.ts
1693
1716
  var createClient = (userOptions) => {
1694
1717
  const baseUserOptions = __spreadProps(__spreadValues({}, userOptions), {
1695
- emitter: (0, import_core17.getEventEmitter)()
1718
+ emitter: (0, import_core22.getEventEmitter)()
1696
1719
  });
1697
- const store = (0, import_core17.configureStore)({
1720
+ const store = (0, import_core22.configureStore)({
1698
1721
  userOptions: baseUserOptions,
1699
1722
  SessionConstructor: JWTSession
1700
1723
  });
1701
- const client = (0, import_core17.connect)({
1724
+ const client = (0, import_core22.connect)({
1702
1725
  store,
1703
1726
  Component: ClientAPI
1704
1727
  })(baseUserOptions);
@@ -1744,7 +1767,7 @@ var createRoomObject = (roomOptions) => {
1744
1767
  rootElement = el;
1745
1768
  } else {
1746
1769
  rootElement = document.body;
1747
- (0, import_core18.getLogger)().warn(`We couldn't find an element with id: ${rootElementId}: using 'document.body' instead.`);
1770
+ (0, import_core23.getLogger)().warn(`We couldn't find an element with id: ${rootElementId}: using 'document.body' instead.`);
1748
1771
  }
1749
1772
  }
1750
1773
  const roomObject = client.rooms.makeRoomObject({
@@ -1771,7 +1794,7 @@ var createRoomObject = (roomOptions) => {
1771
1794
  });
1772
1795
  yield roomObject.join();
1773
1796
  } catch (error) {
1774
- (0, import_core18.getLogger)().error("Join", error);
1797
+ (0, import_core23.getLogger)().error("Join", error);
1775
1798
  client.disconnect();
1776
1799
  reject2(error);
1777
1800
  }
@@ -1806,10 +1829,10 @@ var joinRoom = (roomOptions) => {
1806
1829
  };
1807
1830
 
1808
1831
  // src/RoomSession.ts
1809
- var import_core20 = require("@signalwire/core");
1832
+ var import_core25 = require("@signalwire/core");
1810
1833
 
1811
1834
  // src/utils/roomSession.ts
1812
- var import_core19 = require("@signalwire/core");
1835
+ var import_core24 = require("@signalwire/core");
1813
1836
  var getJoinMediaParams = (options) => {
1814
1837
  const {
1815
1838
  authState,
@@ -1820,7 +1843,7 @@ var getJoinMediaParams = (options) => {
1820
1843
  receiveAudio,
1821
1844
  receiveVideo
1822
1845
  } = options;
1823
- (0, import_core19.getLogger)().debug("getJoinMediaParams options", __spreadValues({}, options));
1846
+ (0, import_core24.getLogger)().debug("getJoinMediaParams options", __spreadValues({}, options));
1824
1847
  const { audio_allowed, video_allowed, join_as } = authState;
1825
1848
  const joinAs = join_as != null ? join_as : "member";
1826
1849
  const canSend = joinAs === "member";
@@ -1833,16 +1856,16 @@ var getJoinMediaParams = (options) => {
1833
1856
  const reqToReceiveAudio = Boolean(receiveAudio != null ? receiveAudio : audio);
1834
1857
  const reqToReceiveVideo = Boolean(receiveVideo != null ? receiveVideo : video);
1835
1858
  if (!canSendAudio && reqToSendAudio) {
1836
- (0, import_core19.getLogger)().info("Not allowed to send audio on this room. Default values will be used.");
1859
+ (0, import_core24.getLogger)().info("Not allowed to send audio on this room. Default values will be used.");
1837
1860
  }
1838
1861
  if (!canSendVideo && reqToSendVideo) {
1839
- (0, import_core19.getLogger)().info("Not allowed to send video on this room. Default values will be used.");
1862
+ (0, import_core24.getLogger)().info("Not allowed to send video on this room. Default values will be used.");
1840
1863
  }
1841
1864
  if (!canReceiveAudio && reqToReceiveAudio) {
1842
- (0, import_core19.getLogger)().info("Not allowed to receive video from the room. Default values will be used.");
1865
+ (0, import_core24.getLogger)().info("Not allowed to receive video from the room. Default values will be used.");
1843
1866
  }
1844
1867
  if (!canReceiveVideo && reqToReceiveVideo) {
1845
- (0, import_core19.getLogger)().info("Not allowed to receive video from the room. Default values will be used.");
1868
+ (0, import_core24.getLogger)().info("Not allowed to receive video from the room. Default values will be used.");
1846
1869
  }
1847
1870
  return {
1848
1871
  mustSendAudio: canSendAudio && reqToSendAudio,
@@ -1892,7 +1915,9 @@ var UNSAFE_PROP_ACCESS = [
1892
1915
  "updateMemberMeta",
1893
1916
  "deleteMemberMeta",
1894
1917
  "promote",
1895
- "demote"
1918
+ "demote",
1919
+ "lock",
1920
+ "unlock"
1896
1921
  ];
1897
1922
  var REQUIRED_EVENTS = [
1898
1923
  "member.joined",
@@ -1933,7 +1958,7 @@ var RoomSession = function(roomOptions) {
1933
1958
  const deprecatedParams = ["audio", "video"];
1934
1959
  deprecatedParams.forEach((param) => {
1935
1960
  if (param in roomOptions) {
1936
- (0, import_core20.getLogger)().warn(`The '${param}' parameter on the RoomSession constructor is deprecated. Set it on the '.join()' function instead.`);
1961
+ (0, import_core25.getLogger)().warn(`The '${param}' parameter on the RoomSession constructor is deprecated. Set it on the '.join()' function instead.`);
1937
1962
  }
1938
1963
  });
1939
1964
  const allowReattach = (roomOptions == null ? void 0 : roomOptions.reattach) !== false;
@@ -1991,7 +2016,7 @@ var RoomSession = function(roomOptions) {
1991
2016
  reattachManager.destroy();
1992
2017
  client.disconnect();
1993
2018
  });
1994
- client.once("session.disconnected", () => {
2019
+ client.session.once("session.disconnected", () => {
1995
2020
  room.destroy();
1996
2021
  });
1997
2022
  const join = (params) => {
@@ -2003,7 +2028,7 @@ var RoomSession = function(roomOptions) {
2003
2028
  const audio = (_a2 = params == null ? void 0 : params.audio) != null ? _a2 : audioFromConstructor;
2004
2029
  const video = (_b = params == null ? void 0 : params.video) != null ? _b : videoFromConstructor;
2005
2030
  const authState = client._sessionAuthState;
2006
- (0, import_core20.getLogger)().debug("getJoinMediaParams authState?", authState);
2031
+ (0, import_core25.getLogger)().debug("getJoinMediaParams authState?", authState);
2007
2032
  if (authState && authState.type === "video") {
2008
2033
  const mediaOptions = getJoinMediaParams(__spreadValues({
2009
2034
  authState,
@@ -2016,7 +2041,7 @@ var RoomSession = function(roomOptions) {
2016
2041
  ${JSON.stringify(params, null, 2)}
2017
2042
  `));
2018
2043
  }
2019
- (0, import_core20.getLogger)().debug("Set mediaOptions", mediaOptions);
2044
+ (0, import_core25.getLogger)().debug("Set mediaOptions", mediaOptions);
2020
2045
  room.updateMediaOptions({
2021
2046
  audio: mediaOptions.mustSendAudio ? audio || true : false,
2022
2047
  video: mediaOptions.mustSendVideo ? video || true : false,
@@ -2024,15 +2049,14 @@ ${JSON.stringify(params, null, 2)}
2024
2049
  negotiateVideo: mediaOptions.mustRecvVideo
2025
2050
  });
2026
2051
  }
2027
- room.once("room.subscribed", (payload) => {
2028
- room.attachOnSubscribedWorkers(payload);
2052
+ room.once("room.subscribed", () => {
2029
2053
  resolve(room);
2030
2054
  });
2031
2055
  reattachManager.init();
2032
2056
  REQUIRED_EVENTS.forEach((event) => room.once(event, noop2));
2033
2057
  yield room.join();
2034
2058
  } catch (error) {
2035
- (0, import_core20.getLogger)().error("RoomSession Join", error);
2059
+ (0, import_core25.getLogger)().error("RoomSession Join", error);
2036
2060
  client.disconnect();
2037
2061
  reject(error);
2038
2062
  }
@@ -2224,26 +2248,26 @@ var SWClient = class {
2224
2248
  };
2225
2249
 
2226
2250
  // src/fabric/WSClient.ts
2227
- var import_core22 = require("@signalwire/core");
2251
+ var import_core27 = require("@signalwire/core");
2228
2252
 
2229
2253
  // src/fabric/WSClientWorker.ts
2230
- var import_core21 = require("@signalwire/core");
2254
+ var import_core26 = require("@signalwire/core");
2231
2255
  var WSClientWorker = function* (options) {
2232
- (0, import_core21.getLogger)().debug("WSClientWorker started");
2256
+ (0, import_core26.getLogger)().debug("WSClientWorker started");
2233
2257
  const { channels, instance } = options;
2234
2258
  const { swEventChannel } = channels;
2235
- (0, import_core21.getLogger)().debug("WSClientWorker instance", instance);
2259
+ (0, import_core26.getLogger)().debug("WSClientWorker instance", instance);
2236
2260
  while (true) {
2237
- const action = yield import_core21.sagaEffects.take(swEventChannel, (action2) => {
2238
- (0, import_core21.getLogger)().debug("WSClientWorker action", action2);
2261
+ const action = yield import_core26.sagaEffects.take(swEventChannel, (action2) => {
2262
+ (0, import_core26.getLogger)().debug("WSClientWorker action", action2);
2239
2263
  if (action2.type === "webrtc.message") {
2240
2264
  return action2.payload.method === "verto.invite";
2241
2265
  }
2242
2266
  return false;
2243
2267
  });
2244
- (0, import_core21.getLogger)().debug("Build new call to answer", action);
2268
+ (0, import_core26.getLogger)().debug("Build new call to answer", action);
2245
2269
  }
2246
- (0, import_core21.getLogger)().trace("WSClientWorker ended");
2270
+ (0, import_core26.getLogger)().trace("WSClientWorker ended");
2247
2271
  };
2248
2272
 
2249
2273
  // src/fabric/WSClient.ts
@@ -2251,7 +2275,7 @@ var WSClient = class {
2251
2275
  constructor(options) {
2252
2276
  this.options = options;
2253
2277
  __publicField(this, "wsClient");
2254
- __publicField(this, "logger", (0, import_core22.getLogger)());
2278
+ __publicField(this, "logger", (0, import_core27.getLogger)());
2255
2279
  this.wsClient = createClient({
2256
2280
  host: this.options.host,
2257
2281
  token: this.options.token,
@@ -2297,18 +2321,18 @@ var WSClient = class {
2297
2321
  call.start = () => {
2298
2322
  return new Promise((resolve2, reject2) => __async(this, null, function* () {
2299
2323
  try {
2300
- call.emitter.once("verto.display", () => resolve2(call));
2324
+ call.once("verto.display", () => resolve2(call));
2301
2325
  call.once("room.subscribed", () => resolve2(call));
2302
2326
  yield call.join();
2303
2327
  } catch (error) {
2304
- (0, import_core22.getLogger)().error("WSClient call start", error);
2328
+ (0, import_core27.getLogger)().error("WSClient call start", error);
2305
2329
  reject2(error);
2306
2330
  }
2307
2331
  }));
2308
2332
  };
2309
2333
  resolve(call);
2310
2334
  } catch (error) {
2311
- (0, import_core22.getLogger)().error("WSClient dial", error);
2335
+ (0, import_core27.getLogger)().error("WSClient dial", error);
2312
2336
  reject(error);
2313
2337
  }
2314
2338
  }));
@@ -2363,10 +2387,10 @@ var WSClient = class {
2363
2387
  nodeId
2364
2388
  });
2365
2389
  call.once("destroy", () => {
2366
- (0, import_core22.getLogger)().debug("RTC Connection Destroyed");
2390
+ (0, import_core27.getLogger)().debug("RTC Connection Destroyed");
2367
2391
  });
2368
2392
  call.attachPreConnectWorkers();
2369
- (0, import_core22.getLogger)().debug("Resolving Call", call);
2393
+ (0, import_core27.getLogger)().debug("Resolving Call", call);
2370
2394
  resolve({ resultType: "inboundCall", resultObject: call });
2371
2395
  } catch (error) {
2372
2396
  reject(error);
@@ -2382,7 +2406,7 @@ var WSClient = class {
2382
2406
  callID: callId,
2383
2407
  node_id: nodeId,
2384
2408
  subscribe: [],
2385
- message: (0, import_core22.VertoSubscribe)({
2409
+ message: (0, import_core27.VertoSubscribe)({
2386
2410
  sessid: callId,
2387
2411
  eventChannel: []
2388
2412
  })
@@ -2509,11 +2533,11 @@ __export(chat_exports, {
2509
2533
  ChatMessage: () => ChatMessage,
2510
2534
  Client: () => Client3
2511
2535
  });
2512
- var import_core24 = require("@signalwire/core");
2536
+ var import_core29 = require("@signalwire/core");
2513
2537
 
2514
2538
  // src/utils/interfaces.ts
2515
- var import_core23 = require("@signalwire/core");
2516
- var INTERNAL_MEMBER_UPDATED_EVENTS = Object.keys(import_core23.INTERNAL_MEMBER_UPDATABLE_PROPS).map((key) => {
2539
+ var import_core28 = require("@signalwire/core");
2540
+ var INTERNAL_MEMBER_UPDATED_EVENTS = Object.keys(import_core28.INTERNAL_MEMBER_UPDATABLE_PROPS).map((key) => {
2517
2541
  return `member.updated.${key}`;
2518
2542
  });
2519
2543
 
@@ -2553,8 +2577,8 @@ var Client3 = function(chatOptions) {
2553
2577
  };
2554
2578
 
2555
2579
  // src/chat/index.ts
2556
- var ChatMember = import_core24.Chat.ChatMember;
2557
- var ChatMessage = import_core24.Chat.ChatMessage;
2580
+ var ChatMember = import_core29.Chat.ChatMember;
2581
+ var ChatMessage = import_core29.Chat.ChatMessage;
2558
2582
 
2559
2583
  // src/pubSub/index.ts
2560
2584
  var pubSub_exports = {};
@@ -2562,7 +2586,7 @@ __export(pubSub_exports, {
2562
2586
  Client: () => Client4,
2563
2587
  PubSubMessage: () => PubSubMessage
2564
2588
  });
2565
- var import_core25 = require("@signalwire/core");
2589
+ var import_core30 = require("@signalwire/core");
2566
2590
 
2567
2591
  // src/pubSub/Client.ts
2568
2592
  var INTERCEPTED_METHODS2 = [
@@ -2596,7 +2620,7 @@ var Client4 = function(pubSubOptions) {
2596
2620
  };
2597
2621
 
2598
2622
  // src/pubSub/index.ts
2599
- var PubSubMessage = import_core25.PubSub.PubSubMessage;
2623
+ var PubSubMessage = import_core30.PubSub.PubSubMessage;
2600
2624
 
2601
2625
  // src/webrtc.ts
2602
2626
  var webrtc_exports = {};