@signalwire/js 3.7.1-dev.202201131750.6d234cc.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/core/src/BaseComponent.d.ts +29 -31
  2. package/dist/core/src/BaseComponent.d.ts.map +1 -1
  3. package/dist/core/src/BaseJWTSession.d.ts +1 -0
  4. package/dist/core/src/BaseJWTSession.d.ts.map +1 -1
  5. package/dist/core/src/BaseSession.d.ts +1 -1
  6. package/dist/core/src/BaseSession.d.ts.map +1 -1
  7. package/dist/core/src/chat/BaseChat.d.ts +4 -3
  8. package/dist/core/src/chat/BaseChat.d.ts.map +1 -1
  9. package/dist/core/src/chat/ChatMember.d.ts +6 -0
  10. package/dist/core/src/chat/ChatMember.d.ts.map +1 -1
  11. package/dist/core/src/chat/ChatMessage.d.ts +9 -0
  12. package/dist/core/src/chat/ChatMessage.d.ts.map +1 -1
  13. package/dist/core/src/chat/index.d.ts +1 -0
  14. package/dist/core/src/chat/index.d.ts.map +1 -1
  15. package/dist/core/src/chat/methods.d.ts +18 -15
  16. package/dist/core/src/chat/methods.d.ts.map +1 -1
  17. package/dist/core/src/chat/workers.d.ts +2 -1
  18. package/dist/core/src/chat/workers.d.ts.map +1 -1
  19. package/dist/core/src/index.d.ts +3 -3
  20. package/dist/core/src/index.d.ts.map +1 -1
  21. package/dist/core/src/internal/BaseBackendSession.d.ts.map +1 -1
  22. package/dist/core/src/redux/actions.d.ts +17 -14
  23. package/dist/core/src/redux/actions.d.ts.map +1 -1
  24. package/dist/core/src/redux/features/component/componentSlice.d.ts +3952 -10
  25. package/dist/core/src/redux/features/component/componentSlice.d.ts.map +1 -1
  26. package/dist/core/src/redux/features/executeQueue/executeQueueSlice.d.ts +44 -7
  27. package/dist/core/src/redux/features/executeQueue/executeQueueSlice.d.ts.map +1 -1
  28. package/dist/core/src/redux/features/pubSub/pubSubSaga.d.ts.map +1 -1
  29. package/dist/core/src/redux/features/session/sessionSlice.d.ts +74 -8
  30. package/dist/core/src/redux/features/session/sessionSlice.d.ts.map +1 -1
  31. package/dist/core/src/redux/index.d.ts +9 -25
  32. package/dist/core/src/redux/index.d.ts.map +1 -1
  33. package/dist/core/src/redux/interfaces.d.ts +5 -4
  34. package/dist/core/src/redux/interfaces.d.ts.map +1 -1
  35. package/dist/core/src/redux/rootReducer.d.ts +417 -3
  36. package/dist/core/src/redux/rootReducer.d.ts.map +1 -1
  37. package/dist/core/src/redux/rootSaga.d.ts +23 -5
  38. package/dist/core/src/redux/rootSaga.d.ts.map +1 -1
  39. package/dist/core/src/redux/toolkit/configureStore.d.ts +77 -0
  40. package/dist/core/src/redux/toolkit/configureStore.d.ts.map +1 -0
  41. package/dist/core/src/redux/toolkit/createAction.d.ts +180 -0
  42. package/dist/core/src/redux/toolkit/createAction.d.ts.map +1 -0
  43. package/dist/core/src/redux/toolkit/createReducer.d.ts +42 -0
  44. package/dist/core/src/redux/toolkit/createReducer.d.ts.map +1 -0
  45. package/dist/core/src/redux/toolkit/createSlice.d.ts +142 -0
  46. package/dist/core/src/redux/toolkit/createSlice.d.ts.map +1 -0
  47. package/dist/core/src/redux/toolkit/devtoolsExtension.d.ts +185 -0
  48. package/dist/core/src/redux/toolkit/devtoolsExtension.d.ts.map +1 -0
  49. package/dist/core/src/redux/toolkit/getDefaultMiddleware.d.ts +12 -0
  50. package/dist/core/src/redux/toolkit/getDefaultMiddleware.d.ts.map +1 -0
  51. package/dist/core/src/redux/toolkit/index.d.ts +13 -0
  52. package/dist/core/src/redux/toolkit/index.d.ts.map +1 -0
  53. package/dist/core/src/redux/toolkit/isPlainObject.d.ts +12 -0
  54. package/dist/core/src/redux/toolkit/isPlainObject.d.ts.map +1 -0
  55. package/dist/core/src/redux/toolkit/mapBuilders.d.ts +38 -0
  56. package/dist/core/src/redux/toolkit/mapBuilders.d.ts.map +1 -0
  57. package/dist/core/src/redux/toolkit/tsHelpers.d.ts +51 -0
  58. package/dist/core/src/redux/toolkit/tsHelpers.d.ts.map +1 -0
  59. package/dist/core/src/redux/toolkit/utils.d.ts +11 -0
  60. package/dist/core/src/redux/toolkit/utils.d.ts.map +1 -0
  61. package/dist/core/src/redux/utils/createDestroyableSlice.d.ts +3 -2
  62. package/dist/core/src/redux/utils/createDestroyableSlice.d.ts.map +1 -1
  63. package/dist/core/src/rooms/methods.d.ts +31 -21
  64. package/dist/core/src/rooms/methods.d.ts.map +1 -1
  65. package/dist/core/src/testUtils.d.ts +8 -25
  66. package/dist/core/src/testUtils.d.ts.map +1 -1
  67. package/dist/core/src/types/chat.d.ts +12 -12
  68. package/dist/core/src/types/chat.d.ts.map +1 -1
  69. package/dist/core/src/types/utils.d.ts +7 -0
  70. package/dist/core/src/types/utils.d.ts.map +1 -1
  71. package/dist/core/src/types/videoMember.d.ts +10 -1
  72. package/dist/core/src/types/videoMember.d.ts.map +1 -1
  73. package/dist/core/src/utils/constants.d.ts +1 -0
  74. package/dist/core/src/utils/constants.d.ts.map +1 -1
  75. package/dist/core/src/utils/index.d.ts +4 -1
  76. package/dist/core/src/utils/index.d.ts.map +1 -1
  77. package/dist/core/src/utils/interfaces.d.ts +19 -6
  78. package/dist/core/src/utils/interfaces.d.ts.map +1 -1
  79. package/dist/index.esm.js +179 -49
  80. package/dist/index.esm.js.map +3 -3
  81. package/dist/index.js +223 -100
  82. package/dist/index.js.map +3 -3
  83. package/dist/index.umd.js +2 -2
  84. package/dist/index.umd.js.map +1 -1
  85. package/dist/js/src/BaseRoomSession.d.ts +7 -0
  86. package/dist/js/src/BaseRoomSession.d.ts.map +1 -1
  87. package/dist/js/src/JWTSession.d.ts.map +1 -1
  88. package/dist/js/src/RoomSession.d.ts.map +1 -1
  89. package/dist/js/src/RoomSession.docs.d.ts +9 -1
  90. package/dist/js/src/RoomSession.docs.d.ts.map +1 -1
  91. package/dist/js/src/chat/Client.d.ts +37 -3
  92. package/dist/js/src/chat/Client.d.ts.map +1 -1
  93. package/dist/js/src/chat/Client.docs.d.ts +238 -0
  94. package/dist/js/src/chat/Client.docs.d.ts.map +1 -0
  95. package/dist/js/src/chat/index.d.ts +5 -0
  96. package/dist/js/src/chat/index.d.ts.map +1 -1
  97. package/dist/js/src/features/actions.d.ts +1 -1
  98. package/dist/js/src/features/actions.d.ts.map +1 -1
  99. package/dist/js/src/index.d.ts +5 -2
  100. package/dist/js/src/index.d.ts.map +1 -1
  101. package/dist/js/src/testUtils.d.ts +16 -50
  102. package/dist/js/src/testUtils.d.ts.map +1 -1
  103. package/dist/js/src/utils/interfaces.d.ts +16 -2
  104. package/dist/js/src/utils/interfaces.d.ts.map +1 -1
  105. package/dist/js/src/video/memberListUpdatedWorker.d.ts +14 -0
  106. package/dist/js/src/video/memberListUpdatedWorker.d.ts.map +1 -0
  107. package/dist/js/src/video/workers.d.ts +2 -0
  108. package/dist/js/src/video/workers.d.ts.map +1 -0
  109. package/dist/js/tsconfig.build.tsbuildinfo +1 -1
  110. package/dist/webrtc/src/BaseConnection.d.ts +7 -0
  111. package/dist/webrtc/src/BaseConnection.d.ts.map +1 -1
  112. package/dist/webrtc/src/RTCPeer.d.ts.map +1 -1
  113. package/package.json +3 -3
  114. package/src/BaseRoomSession.test.ts +2 -2
  115. package/src/BaseRoomSession.ts +15 -0
  116. package/src/RoomSession.docs.ts +10 -1
  117. package/src/RoomSession.ts +16 -4
  118. package/src/chat/Client.docs.ts +259 -0
  119. package/src/chat/Client.test.ts +4 -4
  120. package/src/chat/Client.ts +39 -3
  121. package/src/chat/index.ts +10 -0
  122. package/src/index.ts +6 -3
  123. package/src/utils/interfaces.ts +22 -2
  124. package/src/video/memberListUpdatedWorker.ts +217 -0
  125. package/src/video/workers.ts +1 -0
package/dist/index.esm.js CHANGED
@@ -38,16 +38,16 @@ var __publicField = (obj, key, value) => {
38
38
  return value;
39
39
  };
40
40
 
41
- // src/video.ts
42
- var video_exports = {};
43
- __export(video_exports, {
44
- RoomSession: () => RoomSession,
45
- createClient: () => createClient,
46
- createRoomObject: () => createRoomObject,
47
- joinRoom: () => joinRoom
41
+ // src/chat/index.ts
42
+ var chat_exports = {};
43
+ __export(chat_exports, {
44
+ ChatMember: () => ChatMember,
45
+ ChatMessage: () => ChatMessage,
46
+ Client: () => Client2
48
47
  });
48
+ import { Chat } from "@signalwire/core";
49
49
 
50
- // src/createRoomObject.ts
50
+ // src/chat/Client.ts
51
51
  import { getLogger as getLogger3 } from "@signalwire/core";
52
52
 
53
53
  // src/createClient.ts
@@ -474,6 +474,117 @@ var RoomSessionDeviceAPI = extendComponent2(RoomSessionDeviceConnection, {
474
474
  setInputSensitivity: Rooms2.setInputSensitivityMember
475
475
  });
476
476
 
477
+ // src/video/memberListUpdatedWorker.ts
478
+ import {
479
+ sagaEffects as sagaEffects2,
480
+ toSyntheticEvent,
481
+ validateEventsToSubscribe,
482
+ toInternalEventName
483
+ } from "@signalwire/core";
484
+ var noop = () => {
485
+ };
486
+ var EXTERNAL_MEMBER_LIST_UPDATED_EVENT = "video.memberList.updated";
487
+ var INTERNAL_MEMBER_LIST_UPDATED_EVENT = toInternalEventName({
488
+ event: EXTERNAL_MEMBER_LIST_UPDATED_EVENT
489
+ });
490
+ var SYNTHETIC_MEMBER_LIST_UPDATED_EVENT = toSyntheticEvent(INTERNAL_MEMBER_LIST_UPDATED_EVENT);
491
+ var MEMBER_LIST_EVENTS = [
492
+ "video.room.joined",
493
+ "video.member.joined",
494
+ "video.member.left",
495
+ "video.member.updated"
496
+ ];
497
+ var isMemberListEvent = (event) => {
498
+ return MEMBER_LIST_EVENTS.includes(event);
499
+ };
500
+ var getMemberListEventsToSubscribe = (subscriptions) => {
501
+ return validateEventsToSubscribe(MEMBER_LIST_EVENTS).filter((event) => {
502
+ return !subscriptions.includes(event);
503
+ });
504
+ };
505
+ var shouldHandleMemberList = (subscriptions) => {
506
+ return subscriptions.some((event) => event.includes(INTERNAL_MEMBER_LIST_UPDATED_EVENT));
507
+ };
508
+ var getMembersFromAction = (action) => {
509
+ if (action.type === "video.room.joined") {
510
+ return action.payload.room_session.members;
511
+ }
512
+ return [action.payload.member];
513
+ };
514
+ var getUpdatedMembers = ({
515
+ action,
516
+ memberList
517
+ }) => {
518
+ const actionMembers = getMembersFromAction(action);
519
+ switch (action.type) {
520
+ case "video.member.left":
521
+ actionMembers.forEach((member) => {
522
+ memberList.delete(member.id);
523
+ });
524
+ break;
525
+ default:
526
+ actionMembers.forEach((member) => {
527
+ memberList.set(member.id, member);
528
+ });
529
+ }
530
+ return Array.from(memberList.values());
531
+ };
532
+ var initMemberListSubscriptions = (room, subscriptions) => {
533
+ const events = getMemberListEventsToSubscribe(subscriptions);
534
+ events.forEach((event) => {
535
+ room.once(event, noop);
536
+ });
537
+ const eventBridgeHandler = ({ members }) => {
538
+ room.emit(EXTERNAL_MEMBER_LIST_UPDATED_EVENT, { members });
539
+ };
540
+ room.on(SYNTHETIC_MEMBER_LIST_UPDATED_EVENT, eventBridgeHandler);
541
+ const cleanup = () => {
542
+ room.off(SYNTHETIC_MEMBER_LIST_UPDATED_EVENT, eventBridgeHandler);
543
+ };
544
+ return {
545
+ cleanup
546
+ };
547
+ };
548
+ function* membersListUpdatedWatcher({
549
+ pubSubChannel
550
+ }) {
551
+ const memberList = /* @__PURE__ */ new Map();
552
+ function* worker(pubSubAction) {
553
+ const roomSessionId = pubSubAction.type === "video.room.joined" ? pubSubAction.payload.room_session.id : pubSubAction.payload.room_session_id;
554
+ const members = getUpdatedMembers({ action: pubSubAction, memberList });
555
+ const memberListPayload = {
556
+ room_session_id: roomSessionId,
557
+ members
558
+ };
559
+ yield sagaEffects2.put(pubSubChannel, {
560
+ type: SYNTHETIC_MEMBER_LIST_UPDATED_EVENT,
561
+ payload: memberListPayload
562
+ });
563
+ }
564
+ while (true) {
565
+ const pubSubAction = yield sagaEffects2.take(pubSubChannel, ({ type }) => {
566
+ return isMemberListEvent(type);
567
+ });
568
+ yield sagaEffects2.fork(worker, pubSubAction);
569
+ }
570
+ }
571
+ var memberListUpdatedWorker = function* membersChangedWorker({
572
+ channels: { pubSubChannel },
573
+ instance
574
+ }) {
575
+ const subscriptions = instance.getSubscriptions();
576
+ if (!shouldHandleMemberList(subscriptions)) {
577
+ return;
578
+ }
579
+ const { cleanup } = initMemberListSubscriptions(instance, subscriptions);
580
+ yield sagaEffects2.fork(membersListUpdatedWatcher, {
581
+ pubSubChannel
582
+ });
583
+ instance.once("destroy", () => {
584
+ cleanup();
585
+ });
586
+ };
587
+
477
588
  // src/BaseRoomSession.ts
478
589
  var RoomSessionConnection = class extends BaseConnection3 {
479
590
  constructor() {
@@ -535,6 +646,12 @@ var RoomSessionConnection = class extends BaseConnection3 {
535
646
  ]
536
647
  ]);
537
648
  }
649
+ attachPreConnectWorkers() {
650
+ this.setWorker("memberListUpdated", {
651
+ worker: memberListUpdatedWorker
652
+ });
653
+ this.attachWorkers();
654
+ }
538
655
  async createScreenShareObject(opts = {}) {
539
656
  return this.startScreenShare(opts);
540
657
  }
@@ -848,7 +965,7 @@ var JWTSession = class extends BaseJWTSession {
848
965
  constructor() {
849
966
  super(...arguments);
850
967
  __publicField(this, "WebSocketConstructor", WebSocket);
851
- __publicField(this, "agent", "@signalwire/js/3.7.1-dev.202201131750.6d234cc.0");
968
+ __publicField(this, "agent", "@signalwire/js/3.8.0");
852
969
  }
853
970
  };
854
971
 
@@ -872,7 +989,47 @@ var createClient = (userOptions) => {
872
989
  return client;
873
990
  };
874
991
 
992
+ // src/chat/Client.ts
993
+ var Client2 = function(chatOptions) {
994
+ if (process.env.NODE_ENV === "production") {
995
+ getLogger3().warn("`Chat` is still under development and may change in the future without prior notice.");
996
+ }
997
+ const client = createClient(chatOptions);
998
+ const subscribe = async (channels) => {
999
+ await client.connect();
1000
+ return client.chat.subscribe(channels);
1001
+ };
1002
+ const publish = async (params) => {
1003
+ await client.connect();
1004
+ return client.chat.publish(params);
1005
+ };
1006
+ return new Proxy(client.chat, {
1007
+ get(target, prop, receiver) {
1008
+ if (prop === "subscribe") {
1009
+ return subscribe;
1010
+ } else if (prop === "publish") {
1011
+ return publish;
1012
+ }
1013
+ return Reflect.get(target, prop, receiver);
1014
+ }
1015
+ });
1016
+ };
1017
+
1018
+ // src/chat/index.ts
1019
+ var ChatMember = Chat.ChatMember;
1020
+ var ChatMessage = Chat.ChatMessage;
1021
+
1022
+ // src/video.ts
1023
+ var video_exports = {};
1024
+ __export(video_exports, {
1025
+ RoomSession: () => RoomSession,
1026
+ createClient: () => createClient,
1027
+ createRoomObject: () => createRoomObject,
1028
+ joinRoom: () => joinRoom
1029
+ });
1030
+
875
1031
  // src/createRoomObject.ts
1032
+ import { getLogger as getLogger4 } from "@signalwire/core";
876
1033
  var VIDEO_CONSTRAINTS = {
877
1034
  aspectRatio: { ideal: 16 / 9 }
878
1035
  };
@@ -911,7 +1068,7 @@ var createRoomObject = (roomOptions) => {
911
1068
  rootElement = el;
912
1069
  } else {
913
1070
  rootElement = document.body;
914
- getLogger3().warn(`We couldn't find an element with id: ${rootElementId}: using 'document.body' instead.`);
1071
+ getLogger4().warn(`We couldn't find an element with id: ${rootElementId}: using 'document.body' instead.`);
915
1072
  }
916
1073
  }
917
1074
  const room = client.rooms.makeRoomObject({
@@ -950,7 +1107,9 @@ var joinRoom = (roomOptions) => {
950
1107
  };
951
1108
 
952
1109
  // src/RoomSession.ts
953
- import { getLogger as getLogger4 } from "@signalwire/core";
1110
+ import {
1111
+ getLogger as getLogger5
1112
+ } from "@signalwire/core";
954
1113
  var VIDEO_CONSTRAINTS2 = {
955
1114
  aspectRatio: { ideal: 16 / 9 }
956
1115
  };
@@ -1019,21 +1178,25 @@ var RoomSession = function(roomOptions) {
1019
1178
  const join = () => {
1020
1179
  return new Promise(async (resolve, reject) => {
1021
1180
  try {
1181
+ room.attachPreConnectWorkers();
1022
1182
  await client.connect();
1023
1183
  room.once("room.subscribed", () => {
1024
1184
  resolve(room);
1025
1185
  });
1026
1186
  await room.join();
1027
1187
  } catch (error) {
1028
- getLogger4().error("RoomSession Join", error);
1188
+ getLogger5().error("RoomSession Join", error);
1029
1189
  reject(error);
1030
1190
  }
1031
1191
  });
1032
1192
  };
1193
+ const interceptors = {
1194
+ join
1195
+ };
1033
1196
  return new Proxy(room, {
1034
1197
  get(target, prop, receiver) {
1035
- if (prop === "join") {
1036
- return join;
1198
+ if (prop in interceptors) {
1199
+ return interceptors[prop];
1037
1200
  }
1038
1201
  if (!target.active && UNSAFE_PROP_ACCESS.includes(prop)) {
1039
1202
  throw new Error(`Tried to access the property/method "${prop}" before the room was connected. Please call roomSession.join() first.`);
@@ -1105,42 +1268,9 @@ import {
1105
1268
  stopStream,
1106
1269
  stopTrack
1107
1270
  } from "@signalwire/webrtc";
1108
-
1109
- // src/chat/index.ts
1110
- var chat_exports = {};
1111
- __export(chat_exports, {
1112
- Client: () => Client2
1113
- });
1114
-
1115
- // src/chat/Client.ts
1116
- import { getLogger as getLogger5 } from "@signalwire/core";
1117
- var Client2 = function(chatOptions) {
1118
- if (process.env.NODE_ENV === "production") {
1119
- getLogger5().warn("`Chat` is still under development and may change in the future without prior notice.");
1120
- }
1121
- const client = createClient(chatOptions);
1122
- const subscribe = async (channels) => {
1123
- await client.connect();
1124
- return client.chat.subscribe(channels);
1125
- };
1126
- const publish = async (params) => {
1127
- await client.connect();
1128
- return client.chat.publish(params);
1129
- };
1130
- return new Proxy(client.chat, {
1131
- get(target, prop, receiver) {
1132
- if (prop === "subscribe") {
1133
- return subscribe;
1134
- } else if (prop === "publish") {
1135
- return publish;
1136
- }
1137
- return Reflect.get(target, prop, receiver);
1138
- }
1139
- });
1140
- };
1141
1271
  export {
1272
+ chat_exports as Chat,
1142
1273
  video_exports as Video,
1143
- webrtc_exports as WebRTC,
1144
- chat_exports as __sw__Chat
1274
+ webrtc_exports as WebRTC
1145
1275
  };
1146
1276
  //# sourceMappingURL=index.esm.js.map