@signalwire/js 3.19.0 → 3.19.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.
@@ -1 +1 @@
1
- {"version":3,"file":"BaseConnection.d.ts","sourceRoot":"","sources":["../../../../webrtc/src/BaseConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseConnection.d.ts","sourceRoot":"","sources":["../../../../webrtc/src/BaseConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,aAAa,EAEb,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,EAEL,YAAY,EACZ,sBAAsB,EAMtB,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAKtD,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AA4CD,oBAAY,UAAU,GAClB,iBAAiB,GACjB,oBAAoB,GACpB,oBAAoB,CAAA;AACxB,aAAK,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,GAC5E,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAA;AAEhC,oBAAY,6BAA6B,GAAG;KACzC,CAAC,IAAI,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,CAAC,CAAC;CAC3D,CAAA;AAED,oBAAY,qBAAqB,CAC/B,UAAU,SAAS,YAAY,CAAC,eAAe,IAC7C,iBAAiB,GACnB,oBAAoB,CAAC,UAAU,GAAG,6BAA6B,CAAC,CAAA;AAElE,qBAAa,cAAc,CAAC,UAAU,SAAS,YAAY,CAAC,eAAe,CACzE,SAAQ,aAAa,CAAC,UAAU,GAAG,6BAA6B,CAChE,YACE,KAAK,CAAC,iBAAiB,CAAC,UAAU,GAAG,6BAA6B,CAAC,EACnE,sBAAsB,CAAC,UAAU,GAAG,6BAA6B,CAAC;IAE7D,SAAS,EAAE,SAAS,GAAG,UAAU,CAAA;IACjC,OAAO,EAAE,qBAAqB,CACnC,UAAU,GAAG,6BAA6B,CAC3C,CAAA;IACD,gBAAgB;IACT,KAAK,EAAE,MAAM,CAAA;IACpB,gBAAgB;IACT,SAAS,EAAE,MAAM,CAAA;IACxB,gBAAgB;IACT,QAAQ,UAAQ;IAEvB,gBAAgB;IACT,UAAU,UAAQ;IAEzB,gBAAgB;IAChB,SAAS,CAAC,aAAa,UAAmB;IAE1C,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,UAAU,CAAyC;IAC3D,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,QAAQ,CAAQ;gBAGtB,OAAO,EAAE,qBAAqB,CAAC,UAAU,GAAG,6BAA6B,CAAC;IAgB5E,IAAI,EAAE,WAEL;IAED,IAAI,MAAM,YAET;IAED,IAAI,MAAM,YAET;IAED,IAAI,QAAQ,QAGX;IAED,IAAI,UAAU,QAGb;IAED,IAAI,MAAM,QAGT;IAED,IAAI,aAAa,QAGhB;IAED,IAAI,MAAM,WAET;IAED,IAAI,WAAW,4BAEd;IAED,IAAI,WAAW,CAAC,MAAM,yBAAA,EAIrB;IAED,IAAI,YAAY,4BAEf;IAED,IAAI,UAAU,mBAEb;IAED,IAAI,SAAS,IAAI,cAAc,CAM9B;IAED,gBAAgB;IAChB,YAAY,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;IAgC9B,IAAI,QAAQ,kBAEX;IAED,IAAI,WAAW,kBAEd;IAED,IAAI,YAAY,kBAEf;IAED,IAAI,eAAe,kBAElB;IAED,gBAAgB;IAChB,IAAI,SAAS,YAEZ;IAED,gBAAgB;IAChB,IAAI,SAAS,YAEZ;IAED,IAAI,eAAe,4BAElB;IAED,IAAI,eAAe,4BAElB;IAED,IAAI,IAAI,IAIU,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAFhD;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,EAqBhD;IAED,cAAc,CAAC,SAAS,EAAE,MAAM;IAQhC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;IAI1C,gBAAgB,CAAC,SAAS,EAAE,MAAM;IAIlC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAcpB,gBAAgB;IAChB,aAAa,IAAI,YAAY;IAQ7B,gBAAgB;IACV,kBAAkB;IAexB,YAAY,CAAC,WAAW,EAAE,qBAAqB;IAS/C,gBAAgB,CAAC,WAAW,EAAE,qBAAqB;IAMnD,gBAAgB;IAChB,OAAO,CAAC,4BAA4B;IAcpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqKzB,iBAAiB,CAAC,SAAS,EAAE,MAAM;IAqBnC,gBAAgB;IAChB,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;IAgBvB,gBAAgB;IAChB,MAAM;IAcN,gBAAgB;IAChB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;IA4B5C,gBAAgB;IAChB,kBAAkB;IAKlB,OAAO,CAAC,iBAAiB;IASzB,gBAAgB;IACV,MAAM;IAcZ;;;;;;;OAOG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAmDnE,gBAAgB;IACV,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IA2BjD,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM;IAuBxB,gBAAgB;IAChB,IAAI,CAAC,IAAI,EAAE,MAAM;IASjB,gBAAgB;IAChB,uBAAuB;IAMvB,gBAAgB;IAChB,iBAAiB;IAMjB,gBAAgB;IAChB,oBAAoB;IAMpB,gBAAgB;IAChB,iBAAiB;IAMjB,gBAAgB;IAChB,oBAAoB;IAMpB,gBAAgB;IAChB,QAAQ,CAAC,KAAK,EAAE,mBAAmB;IAyBnC,gBAAgB;IAChB,kBAAkB,CAAC,OAAO,EAAE;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB;IASD,gBAAgB;IACT,UAAU,WAAY,gBAAgB,UAgC5C;IAED;;;;SAIK;IACL,OAAO,CAAC,SAAS;IAIjB;;;;;OAKG;IACH,OAAO,CAAC,6BAA6B;IAWrC,gBAAgB;IAChB,SAAS,CAAC,SAAS;CAMpB"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "SignalWire JS SDK",
4
4
  "author": "SignalWire Team <open.source@signalwire.com>",
5
5
  "license": "MIT",
6
- "version": "3.19.0",
6
+ "version": "3.19.1",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.esm.js",
9
9
  "unpkg": "dist/index.umd.js",
@@ -43,8 +43,8 @@
43
43
  "prepublishOnly": "npm run build"
44
44
  },
45
45
  "dependencies": {
46
- "@signalwire/core": "3.14.0",
47
- "@signalwire/webrtc": "3.6.1",
46
+ "@signalwire/core": "3.14.1",
47
+ "@signalwire/webrtc": "3.6.2",
48
48
  "jwt-decode": "^3.1.2"
49
49
  },
50
50
  "types": "dist/js/src/index.d.ts"
@@ -292,76 +292,80 @@ export class RoomSessionConnection
292
292
  * Allow sharing the screen within the room.
293
293
  */
294
294
  async startScreenShare(opts: StartScreenShareOptions = {}) {
295
- const {
296
- autoJoin = true,
297
- audio = false,
298
- video = true,
299
- layout,
300
- positions,
301
- } = opts
302
- const displayStream: MediaStream = await getDisplayMedia({
303
- audio: audio === true ? SCREENSHARE_AUDIO_CONSTRAINTS : audio,
304
- video,
305
- })
306
- const options: BaseConnectionOptions<RoomSessionObjectEvents> = {
307
- ...this.options,
308
- screenShare: true,
309
- recoverCall: false,
310
- localStream: displayStream,
311
- remoteStream: undefined,
312
- userVariables: {
313
- ...(this.options?.userVariables || {}),
314
- memberCallId: this.callId,
315
- memberId: this.memberId,
316
- },
317
- layout,
318
- positions,
319
- }
320
-
321
- const screenShare = connect<
322
- RoomSessionScreenShareEvents,
323
- RoomSessionScreenShareConnection,
324
- RoomSessionScreenShare
325
- >({
326
- store: this.store,
327
- Component: RoomSessionScreenShareAPI,
328
- })(options)
329
-
330
- /**
331
- * Hangup if the user stop the screenShare from the
332
- * native browser button or if the videoTrack ends.
333
- */
334
- displayStream.getVideoTracks().forEach((t) => {
335
- t.addEventListener('ended', () => {
336
- if (screenShare && screenShare.active) {
337
- screenShare.leave()
338
- }
295
+ return new Promise<RoomSessionScreenShare>(async (resolve, reject) => {
296
+ const {
297
+ autoJoin = true,
298
+ audio = false,
299
+ video = true,
300
+ layout,
301
+ positions,
302
+ } = opts
303
+ const displayStream: MediaStream = await getDisplayMedia({
304
+ audio: audio === true ? SCREENSHARE_AUDIO_CONSTRAINTS : audio,
305
+ video,
339
306
  })
340
- })
307
+ const options: BaseConnectionOptions<RoomSessionObjectEvents> = {
308
+ ...this.options,
309
+ screenShare: true,
310
+ recoverCall: false,
311
+ localStream: displayStream,
312
+ remoteStream: undefined,
313
+ userVariables: {
314
+ ...(this.options?.userVariables || {}),
315
+ memberCallId: this.callId,
316
+ memberId: this.memberId,
317
+ },
318
+ layout,
319
+ positions,
320
+ }
341
321
 
342
- screenShare.once('destroy', () => {
343
- // @ts-expect-error
344
- screenShare.emit('room.left')
345
- this._screenShareList.delete(screenShare)
346
- })
322
+ const screenShare = connect<
323
+ RoomSessionScreenShareEvents,
324
+ RoomSessionScreenShareConnection,
325
+ RoomSessionScreenShare
326
+ >({
327
+ store: this.store,
328
+ Component: RoomSessionScreenShareAPI,
329
+ })(options)
330
+
331
+ /**
332
+ * Hangup if the user stop the screenShare from the
333
+ * native browser button or if the videoTrack ends.
334
+ */
335
+ displayStream.getVideoTracks().forEach((t) => {
336
+ t.addEventListener('ended', () => {
337
+ if (screenShare && screenShare.active) {
338
+ screenShare.leave()
339
+ }
340
+ })
341
+ })
347
342
 
348
- try {
349
- screenShare.runWorker('childMemberJoinedWorker', {
350
- worker: workers.childMemberJoinedWorker,
351
- initialState: {
352
- parentId: this.memberId,
353
- },
343
+ screenShare.once('destroy', () => {
344
+ // @ts-expect-error
345
+ screenShare.emit('room.left')
346
+ this._screenShareList.delete(screenShare)
354
347
  })
355
348
 
356
- this._screenShareList.add(screenShare)
357
- if (autoJoin) {
358
- await screenShare.join()
349
+ try {
350
+ screenShare.runWorker('childMemberJoinedWorker', {
351
+ worker: workers.childMemberJoinedWorker,
352
+ onDone: () => resolve(screenShare),
353
+ onFail: reject,
354
+ initialState: {
355
+ parentId: this.memberId,
356
+ },
357
+ })
358
+
359
+ this._screenShareList.add(screenShare)
360
+ if (autoJoin) {
361
+ return await screenShare.join()
362
+ }
363
+ return resolve(screenShare)
364
+ } catch (error) {
365
+ this.logger.error('ScreenShare Error', error)
366
+ reject(error)
359
367
  }
360
- return screenShare
361
- } catch (error) {
362
- this.logger.error('ScreenShare Error', error)
363
- throw error
364
- }
368
+ })
365
369
  }
366
370
 
367
371
  /**
@@ -390,60 +394,64 @@ export class RoomSessionConnection
390
394
  * Allow to add additional devices to the room like cameras or microphones.
391
395
  */
392
396
  async addDevice(opts: AddDeviceOptions = {}) {
393
- const { autoJoin = true, audio = false, video = false } = opts
394
- if (!audio && !video) {
395
- throw new TypeError(
396
- 'At least one of `audio` or `video` must be requested.'
397
- )
398
- }
399
-
400
- const options: BaseConnectionOptions<RoomSessionObjectEvents> = {
401
- ...this.options,
402
- localStream: undefined,
403
- remoteStream: undefined,
404
- audio,
405
- video,
406
- additionalDevice: true,
407
- recoverCall: false,
408
- userVariables: {
409
- ...(this.options?.userVariables || {}),
410
- memberCallId: this.callId,
411
- memberId: this.memberId,
412
- },
413
- }
414
-
415
- const roomDevice = connect<
416
- RoomSessionDeviceEvents,
417
- RoomSessionDeviceConnection,
418
- RoomSessionDevice
419
- >({
420
- store: this.store,
421
- Component: RoomSessionDeviceAPI,
422
- })(options)
423
-
424
- roomDevice.once('destroy', () => {
425
- // @ts-expect-error
426
- roomDevice.emit('room.left')
427
- this._deviceList.delete(roomDevice)
428
- })
397
+ return new Promise<RoomSessionDevice>(async (resolve, reject) => {
398
+ const { autoJoin = true, audio = false, video = false } = opts
399
+ if (!audio && !video) {
400
+ throw new TypeError(
401
+ 'At least one of `audio` or `video` must be requested.'
402
+ )
403
+ }
429
404
 
430
- try {
431
- roomDevice.runWorker('childMemberJoinedWorker', {
432
- worker: workers.childMemberJoinedWorker,
433
- initialState: {
434
- parentId: this.memberId,
405
+ const options: BaseConnectionOptions<RoomSessionObjectEvents> = {
406
+ ...this.options,
407
+ localStream: undefined,
408
+ remoteStream: undefined,
409
+ audio,
410
+ video,
411
+ additionalDevice: true,
412
+ recoverCall: false,
413
+ userVariables: {
414
+ ...(this.options?.userVariables || {}),
415
+ memberCallId: this.callId,
416
+ memberId: this.memberId,
435
417
  },
418
+ }
419
+
420
+ const roomDevice = connect<
421
+ RoomSessionDeviceEvents,
422
+ RoomSessionDeviceConnection,
423
+ RoomSessionDevice
424
+ >({
425
+ store: this.store,
426
+ Component: RoomSessionDeviceAPI,
427
+ })(options)
428
+
429
+ roomDevice.once('destroy', () => {
430
+ // @ts-expect-error
431
+ roomDevice.emit('room.left')
432
+ this._deviceList.delete(roomDevice)
436
433
  })
437
434
 
438
- this._deviceList.add(roomDevice)
439
- if (autoJoin) {
440
- await roomDevice.join()
435
+ try {
436
+ roomDevice.runWorker('childMemberJoinedWorker', {
437
+ worker: workers.childMemberJoinedWorker,
438
+ onDone: () => resolve(roomDevice),
439
+ onFail: reject,
440
+ initialState: {
441
+ parentId: this.memberId,
442
+ },
443
+ })
444
+
445
+ this._deviceList.add(roomDevice)
446
+ if (autoJoin) {
447
+ return await roomDevice.join()
448
+ }
449
+ return resolve(roomDevice)
450
+ } catch (error) {
451
+ this.logger.error('RoomDevice Error', error)
452
+ reject(error)
441
453
  }
442
- return roomDevice
443
- } catch (error) {
444
- this.logger.error('RoomDevice Error', error)
445
- throw error
446
- }
454
+ })
447
455
  }
448
456
 
449
457
  join() {
@@ -159,6 +159,10 @@ export const RoomSession = function (roomOptions: RoomSessionOptions) {
159
159
  client.disconnect()
160
160
  })
161
161
 
162
+ client.once('session.disconnected', () => {
163
+ room.destroy()
164
+ })
165
+
162
166
  const join = (params?: BaseRoomSessionJoinParams) => {
163
167
  return new Promise(async (resolve, reject) => {
164
168
  try {
@@ -9,11 +9,12 @@ import {
9
9
  VideoMemberJoinedEvent,
10
10
  componentSelectors,
11
11
  componentActions,
12
+ type ReduxComponent,
12
13
  } from '@signalwire/core'
13
14
 
14
15
  import type { BaseConnection } from '@signalwire/webrtc'
15
16
 
16
- type ChildMemberJoinedWorkerOnDone = (args: BaseConnection<any>) => void
17
+ type ChildMemberJoinedWorkerOnDone = () => void
17
18
  type ChildMemberJoinedWorkerOnFail = (args: { error: Error }) => void
18
19
 
19
20
  export type ChildMemberJoinedWorkerHooks = SDKWorkerHooks<
@@ -26,7 +27,7 @@ export const childMemberJoinedWorker: SDKWorker<
26
27
  ChildMemberJoinedWorkerHooks
27
28
  > = function* (options): SagaIterator {
28
29
  getLogger().trace('childMemberJoinedWorker started')
29
- const { channels, instance, initialState } = options
30
+ const { channels, instance, initialState, onDone, onFail } = options
30
31
  const { swEventChannel } = channels
31
32
  const { parentId } = initialState
32
33
  if (!parentId) {
@@ -49,20 +50,22 @@ export const childMemberJoinedWorker: SDKWorker<
49
50
  */
50
51
  const { member } = action.payload
51
52
  if (member?.parent_id) {
52
- /**
53
- * For screenShare/additionalDevice we're using
54
- * the `memberId` to namespace the object.
55
- **/
56
- // @ts-expect-error
57
- instance._attachListeners(member.id)
58
- // @ts-expect-error
59
- instance.applyEmitterTransforms()
60
-
61
- const parent = yield sagaEffects.select(
62
- componentSelectors.getComponent,
63
- member.parent_id
53
+ const byId: Record<string, ReduxComponent> = yield sagaEffects.select(
54
+ componentSelectors.getComponentsById
64
55
  )
56
+ const parent = Object.values(byId).find((row) => {
57
+ return 'memberId' in row && row.memberId === member.parent_id
58
+ })
65
59
  if (parent) {
60
+ /**
61
+ * For screenShare/additionalDevice we're using the `memberId` to
62
+ * namespace the object.
63
+ **/
64
+ // @ts-expect-error
65
+ instance._attachListeners(member.id)
66
+ // @ts-expect-error
67
+ instance.applyEmitterTransforms()
68
+
66
69
  yield sagaEffects.put(
67
70
  componentActions.upsert({
68
71
  id: instance.callId,
@@ -71,6 +74,10 @@ export const childMemberJoinedWorker: SDKWorker<
71
74
  memberId: member.id,
72
75
  })
73
76
  )
77
+
78
+ onDone?.()
79
+ } else {
80
+ onFail?.({ error: new Error('Unknown parent_id') })
74
81
  }
75
82
  }
76
83
  getLogger().trace('childMemberJoinedWorker ended')