@signalwire/js 3.12.0 → 3.12.1

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 (61) hide show
  1. package/dist/core/src/BaseComponent.d.ts +3 -1
  2. package/dist/core/src/BaseComponent.d.ts.map +1 -1
  3. package/dist/core/src/RPCMessages/VertoMessages.d.ts +8 -0
  4. package/dist/core/src/RPCMessages/VertoMessages.d.ts.map +1 -1
  5. package/dist/core/src/index.d.ts +1 -0
  6. package/dist/core/src/index.d.ts.map +1 -1
  7. package/dist/core/src/redux/features/session/sessionSaga.d.ts.map +1 -1
  8. package/dist/core/src/redux/features/session/sessionSelectors.d.ts +1 -0
  9. package/dist/core/src/redux/features/session/sessionSelectors.d.ts.map +1 -1
  10. package/dist/core/src/redux/features/session/sessionSlice.d.ts +65 -0
  11. package/dist/core/src/redux/features/session/sessionSlice.d.ts.map +1 -1
  12. package/dist/core/src/redux/interfaces.d.ts +2 -1
  13. package/dist/core/src/redux/interfaces.d.ts.map +1 -1
  14. package/dist/core/src/redux/rootReducer.d.ts +16 -0
  15. package/dist/core/src/redux/rootReducer.d.ts.map +1 -1
  16. package/dist/core/src/rooms/RoomSessionPlayback.d.ts +3 -0
  17. package/dist/core/src/rooms/RoomSessionPlayback.d.ts.map +1 -1
  18. package/dist/core/src/rooms/methods.d.ts +3 -0
  19. package/dist/core/src/rooms/methods.d.ts.map +1 -1
  20. package/dist/core/src/testUtils.d.ts.map +1 -1
  21. package/dist/core/src/types/common.d.ts +11 -0
  22. package/dist/core/src/types/common.d.ts.map +1 -1
  23. package/dist/core/src/types/videoPlayback.d.ts +5 -0
  24. package/dist/core/src/types/videoPlayback.d.ts.map +1 -1
  25. package/dist/core/src/types/videoRoomSession.d.ts +1 -0
  26. package/dist/core/src/types/videoRoomSession.d.ts.map +1 -1
  27. package/dist/core/src/utils/interfaces.d.ts +7 -5
  28. package/dist/core/src/utils/interfaces.d.ts.map +1 -1
  29. package/dist/index.esm.js +82 -3
  30. package/dist/index.esm.js.map +3 -3
  31. package/dist/index.js +80 -3
  32. package/dist/index.js.map +3 -3
  33. package/dist/index.umd.js +2 -2
  34. package/dist/index.umd.js.map +1 -1
  35. package/dist/js/src/BaseRoomSession.d.ts +5 -0
  36. package/dist/js/src/BaseRoomSession.d.ts.map +1 -1
  37. package/dist/js/src/RoomSession.d.ts +2 -2
  38. package/dist/js/src/RoomSession.d.ts.map +1 -1
  39. package/dist/js/src/RoomSession.docs.d.ts +21 -0
  40. package/dist/js/src/RoomSession.docs.d.ts.map +1 -1
  41. package/dist/js/src/features/mediaElements/mediaElementsSagas.d.ts.map +1 -1
  42. package/dist/js/src/utils/interfaces.d.ts +4 -0
  43. package/dist/js/src/utils/interfaces.d.ts.map +1 -1
  44. package/dist/js/src/utils/roomSession.d.ts +13 -0
  45. package/dist/js/src/utils/roomSession.d.ts.map +1 -0
  46. package/dist/js/src/utils/videoElement.d.ts +1 -0
  47. package/dist/js/src/utils/videoElement.d.ts.map +1 -1
  48. package/dist/js/tsconfig.build.tsbuildinfo +1 -1
  49. package/dist/webrtc/src/BaseConnection.d.ts +8 -0
  50. package/dist/webrtc/src/BaseConnection.d.ts.map +1 -1
  51. package/dist/webrtc/src/utils/interfaces.d.ts +2 -0
  52. package/dist/webrtc/src/utils/interfaces.d.ts.map +1 -1
  53. package/dist/webrtc/src/utils/webrtcHelpers.native.d.ts.map +1 -1
  54. package/package.json +3 -3
  55. package/src/BaseRoomSession.ts +4 -1
  56. package/src/RoomSession.docs.ts +20 -0
  57. package/src/RoomSession.ts +60 -3
  58. package/src/features/mediaElements/mediaElementsSagas.ts +10 -0
  59. package/src/utils/interfaces.ts +5 -0
  60. package/src/utils/roomSession.ts +54 -0
  61. package/src/utils/videoElement.ts +3 -0
package/dist/index.js CHANGED
@@ -162,6 +162,7 @@ var makeLayoutChangedHandler = ({ localOverlay, rootElement }) => (_0) => __asyn
162
162
  const { layers = [] } = layout;
163
163
  const location = layers.find(({ member_id }) => member_id === myMemberId);
164
164
  let myLayer = localOverlay.domElement;
165
+ localOverlay.status = location ? "visible" : "hidden";
165
166
  if (!location) {
166
167
  (0, import_core.getLogger)().debug("Location not found");
167
168
  if (myLayer) {
@@ -247,6 +248,7 @@ var makeVideoElementSaga = ({
247
248
  const layerMap = /* @__PURE__ */ new Map();
248
249
  const videoEl = buildVideo();
249
250
  const localOverlay = {
251
+ status: "hidden",
250
252
  get id() {
251
253
  return addSDKPrefix(room.memberId);
252
254
  },
@@ -272,6 +274,9 @@ var makeVideoElementSaga = ({
272
274
  if (!this.domElement) {
273
275
  return (0, import_core3.getLogger)().warn("Missing localOverlay to show");
274
276
  }
277
+ if (this.status === "hidden") {
278
+ return (0, import_core3.getLogger)().info("localOverlay not visible");
279
+ }
275
280
  this.domElement.style.opacity = "1";
276
281
  }
277
282
  };
@@ -348,6 +353,10 @@ var makeAudioElementSaga = ({ speakerId }) => {
348
353
  instance: room,
349
354
  runSaga
350
355
  }) {
356
+ if (typeof Audio === "undefined") {
357
+ (0, import_core3.getLogger)().warn("`Audio` is not supported on this environment.");
358
+ return;
359
+ }
351
360
  try {
352
361
  const audioEl = new Audio();
353
362
  let audioTask;
@@ -898,6 +907,7 @@ var RoomSessionAPI = (0, import_core8.extendComponent)(RoomSessionConnection, {
898
907
  setSpeakerVolume: import_core8.Rooms.setOutputVolumeMember,
899
908
  setInputSensitivity: import_core8.Rooms.setInputSensitivityMember,
900
909
  removeMember: import_core8.Rooms.removeMember,
910
+ removeAllMembers: import_core8.Rooms.removeAllMembers,
901
911
  getMembers: import_core8.Rooms.getMembers,
902
912
  getLayouts: import_core8.Rooms.getLayouts,
903
913
  setLayout: import_core8.Rooms.setLayout,
@@ -1116,7 +1126,7 @@ var JWTSession = class extends import_core12.BaseJWTSession {
1116
1126
  }));
1117
1127
  this.options = options;
1118
1128
  __publicField(this, "WebSocketConstructor", WebSocket);
1119
- __publicField(this, "agent", "@signalwire/js/3.12.0");
1129
+ __publicField(this, "agent", "@signalwire/js/3.12.1");
1120
1130
  }
1121
1131
  get allowHijack() {
1122
1132
  return this.options._hijack;
@@ -1357,8 +1367,48 @@ var joinRoom = (roomOptions) => {
1357
1367
  };
1358
1368
 
1359
1369
  // src/RoomSession.ts
1370
+ var import_core18 = require("@signalwire/core");
1371
+
1372
+ // src/utils/roomSession.ts
1360
1373
  var import_core17 = require("@signalwire/core");
1374
+ var getJoinAudienceMediaParams = ({
1375
+ authState,
1376
+ audio = true,
1377
+ video = true
1378
+ }) => {
1379
+ const getMediaValue = ({
1380
+ remote,
1381
+ local,
1382
+ kind
1383
+ }) => {
1384
+ if (!remote && local) {
1385
+ (0, import_core17.getLogger)().warn(`[joinAudience] ${kind} is currently not allowed on this room.`);
1386
+ }
1387
+ return !!(remote && local);
1388
+ };
1389
+ return {
1390
+ audio: false,
1391
+ video: false,
1392
+ negotiateAudio: getMediaValue({
1393
+ remote: authState.audio_allowed,
1394
+ local: audio,
1395
+ kind: "audio"
1396
+ }),
1397
+ negotiateVideo: getMediaValue({
1398
+ remote: authState.video_allowed,
1399
+ local: video,
1400
+ kind: "video"
1401
+ })
1402
+ };
1403
+ };
1404
+ var isValidJoinAudienceMediaParams = (options) => {
1405
+ return Object.values(options).some(Boolean);
1406
+ };
1407
+
1408
+ // src/RoomSession.ts
1361
1409
  var VIDEO_CONSTRAINTS2 = {
1410
+ width: { ideal: 1280, min: 320 },
1411
+ height: { ideal: 720, min: 180 },
1362
1412
  aspectRatio: { ideal: 16 / 9 }
1363
1413
  };
1364
1414
  var UNSAFE_PROP_ACCESS = [
@@ -1438,14 +1488,41 @@ var RoomSession = function(roomOptions) {
1438
1488
  });
1439
1489
  yield room.join();
1440
1490
  } catch (error) {
1441
- (0, import_core17.getLogger)().error("RoomSession Join", error);
1491
+ (0, import_core18.getLogger)().error("RoomSession Join", error);
1492
+ client.disconnect();
1493
+ reject(error);
1494
+ }
1495
+ }));
1496
+ };
1497
+ const joinAudience = (params) => {
1498
+ return new Promise((resolve, reject) => __async(this, null, function* () {
1499
+ try {
1500
+ room.attachPreConnectWorkers();
1501
+ const session = yield client.connect();
1502
+ const authState = session._sessionAuthState;
1503
+ const mediaOptions = getJoinAudienceMediaParams(__spreadValues({
1504
+ authState
1505
+ }, params));
1506
+ if (!isValidJoinAudienceMediaParams(mediaOptions)) {
1507
+ yield session.disconnect();
1508
+ return reject(new Error("[joinAudience] Either (or both) `audio` and `video` must be `true` when calling this method."));
1509
+ }
1510
+ room.updateMediaOptions(mediaOptions);
1511
+ room.once("room.subscribed", (payload) => {
1512
+ room.attachOnSubscribedWorkers(payload);
1513
+ resolve(room);
1514
+ });
1515
+ yield room.join();
1516
+ } catch (error) {
1517
+ (0, import_core18.getLogger)().error("RoomSession JoinAudience", error);
1442
1518
  client.disconnect();
1443
1519
  reject(error);
1444
1520
  }
1445
1521
  }));
1446
1522
  };
1447
1523
  const interceptors = {
1448
- join
1524
+ join,
1525
+ joinAudience
1449
1526
  };
1450
1527
  return new Proxy(room, {
1451
1528
  get(target, prop, receiver) {