@webex/plugin-meetings 1.142.1 → 1.143.2

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,"sources":["util.js"],"names":["MembersUtil","generateAddMemberOptions","invitee","locusUrl","alertIfActive","generateAdmitMemberOptions","memberIds","getAddMemberBody","options","invitees","address","emailAddress","email","getAdmitMemberRequestBody","admit","participantIds","getAdmitMemberRequestParams","format","body","uri","CONTROLS","method","HTTP_VERBS","PUT","getAddMemberRequestParams","requestParams","isInvalidInvitee","VALID_EMAIL_ADDRESS","test","getRemoveMemberRequestParams","reason","PARTICIPANT","memberId","LEAVE","generateTransferHostMemberOptions","transfer","moderator","generateRemoveMemberOptions","removal","_FORCED_","generateMuteMemberOptions","mute","status","muted","getMuteMemberRequestParams","audio","PATCH","getTransferHostToMemberRequestParams","role"],"mappings":"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","sourcesContent":["import {\n HTTP_VERBS,\n CONTROLS,\n _FORCED_,\n LEAVE,\n PARTICIPANT,\n VALID_EMAIL_ADDRESS\n} from '../constants';\n\nconst MembersUtil = {};\n\n/**\n * @param {Object} invitee with emailAddress or email\n * @param {String} locusUrl\n * @param {Boolean} alertIfActive\n * @returns {Object} the format object\n */\nMembersUtil.generateAddMemberOptions = (invitee, locusUrl, alertIfActive) => ({\n invitee,\n locusUrl,\n alertIfActive\n});\n\n/**\n * @param {Array} memberIds\n * @param {String} locusUrl\n * @returns {Object} the format object\n */\nMembersUtil.generateAdmitMemberOptions = (memberIds, locusUrl) => ({\n locusUrl,\n memberIds\n});\n\n/**\n * @param {Object} options with {invitee: {emailAddress, email}, alertIfActive}\n * @returns {Object} with {invitees: [{address}], alertIfActive}\n */\nMembersUtil.getAddMemberBody = (options) => ({\n invitees: [\n {\n address: options.invitee.emailAddress || options.invitee.email\n }\n ],\n alertIfActive: options.alertIfActive\n});\n\n/**\n * @param {Object} options with {memberIds}\n * @returns {Object} admit with {memberIds}\n */\nMembersUtil.getAdmitMemberRequestBody = (options) => ({\n admit: {participantIds: options.memberIds}\n});\n\n/**\n * @param {Object} format with {memberIds, locusUrl}\n * @returns {Object} the request parameters (method, uri, body) needed to make a admitMember request\n */\nMembersUtil.getAdmitMemberRequestParams = (format) => {\n const body = MembersUtil.getAdmitMemberRequestBody(format);\n const uri = `${format.locusUrl}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body\n };\n};\n\n/**\n * @param {Object} format with {invitee {emailAddress, email}, locusUrl, alertIfActive}\n * @returns {Object} the request parameters (method, uri, body) needed to make a addMember request\n */\nMembersUtil.getAddMemberRequestParams = (format) => {\n const body = MembersUtil.getAddMemberBody(format);\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: format.locusUrl,\n body\n };\n\n return requestParams;\n};\n\nMembersUtil.isInvalidInvitee = (invitee) => {\n if (!(invitee && (invitee.email || invitee.emailAddress))) {\n return true;\n }\n\n return !VALID_EMAIL_ADDRESS.test(invitee.email || invitee.emailAddress);\n};\n\nMembersUtil.getRemoveMemberRequestParams = (options) => {\n const body = {\n reason: options.reason\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${LEAVE}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body\n };\n};\n\nMembersUtil.generateTransferHostMemberOptions = (transfer, moderator, locusUrl) => ({\n moderator,\n locusUrl,\n memberId: transfer\n});\n\nMembersUtil.generateRemoveMemberOptions = (removal, locusUrl) => ({\n reason: _FORCED_,\n memberId: removal,\n locusUrl\n});\n\nMembersUtil.generateMuteMemberOptions = (mute, status, locusUrl) => ({\n memberId: mute,\n muted: status,\n locusUrl\n});\n\nMembersUtil.getMuteMemberRequestParams = (options) => {\n const body = {\n audio: {\n muted: options.muted\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nMembersUtil.getTransferHostToMemberRequestParams = (options) => {\n const body = {\n role: {\n moderator: options.moderator\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nexport default MembersUtil;\n"]}
1
+ {"version":3,"sources":["util.js"],"names":["MembersUtil","generateAddMemberOptions","invitee","locusUrl","alertIfActive","generateAdmitMemberOptions","memberIds","getAddMemberBody","options","invitees","address","emailAddress","email","phoneNumber","getAdmitMemberRequestBody","admit","participantIds","getAdmitMemberRequestParams","format","body","uri","CONTROLS","method","HTTP_VERBS","PUT","getAddMemberRequestParams","requestParams","isInvalidInvitee","DIALER_REGEX","E164_FORMAT","test","VALID_EMAIL_ADDRESS","getRemoveMemberRequestParams","reason","PARTICIPANT","memberId","LEAVE","generateTransferHostMemberOptions","transfer","moderator","generateRemoveMemberOptions","removal","_FORCED_","generateMuteMemberOptions","mute","status","muted","getMuteMemberRequestParams","audio","PATCH","getTransferHostToMemberRequestParams","role"],"mappings":"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","sourcesContent":["import {\n HTTP_VERBS,\n CONTROLS,\n _FORCED_,\n LEAVE,\n PARTICIPANT,\n VALID_EMAIL_ADDRESS,\n DIALER_REGEX\n} from '../constants';\n\nconst MembersUtil = {};\n\n/**\n * @param {Object} invitee with emailAddress, email or phoneNumber\n * @param {String} locusUrl\n * @param {Boolean} alertIfActive\n * @returns {Object} the format object\n */\nMembersUtil.generateAddMemberOptions = (invitee, locusUrl, alertIfActive) => ({\n invitee,\n locusUrl,\n alertIfActive\n});\n\n/**\n * @param {Array} memberIds\n * @param {String} locusUrl\n * @returns {Object} the format object\n */\nMembersUtil.generateAdmitMemberOptions = (memberIds, locusUrl) => ({\n locusUrl,\n memberIds\n});\n\n/**\n * @param {Object} options with {invitee: {emailAddress, email, phoneNumber}, alertIfActive}\n * @returns {Object} with {invitees: [{address}], alertIfActive}\n */\nMembersUtil.getAddMemberBody = (options) => ({\n invitees: [\n {\n address: options.invitee.emailAddress || options.invitee.email || options.invitee.phoneNumber\n }\n ],\n alertIfActive: options.alertIfActive\n});\n\n/**\n * @param {Object} options with {memberIds}\n * @returns {Object} admit with {memberIds}\n */\nMembersUtil.getAdmitMemberRequestBody = (options) => ({\n admit: {participantIds: options.memberIds}\n});\n\n/**\n * @param {Object} format with {memberIds, locusUrl}\n * @returns {Object} the request parameters (method, uri, body) needed to make a admitMember request\n */\nMembersUtil.getAdmitMemberRequestParams = (format) => {\n const body = MembersUtil.getAdmitMemberRequestBody(format);\n const uri = `${format.locusUrl}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body\n };\n};\n\n/**\n * @param {Object} format with {invitee {emailAddress, email, phoneNumber}, locusUrl, alertIfActive}\n * @returns {Object} the request parameters (method, uri, body) needed to make a addMember request\n */\nMembersUtil.getAddMemberRequestParams = (format) => {\n const body = MembersUtil.getAddMemberBody(format);\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: format.locusUrl,\n body\n };\n\n return requestParams;\n};\n\nMembersUtil.isInvalidInvitee = (invitee) => {\n if (!(invitee && (invitee.email || invitee.emailAddress || invitee.phoneNumber))) {\n return true;\n }\n\n if (invitee.phoneNumber) {\n return !DIALER_REGEX.E164_FORMAT.test(invitee.phoneNumber);\n }\n\n return !VALID_EMAIL_ADDRESS.test(invitee.email || invitee.emailAddress);\n};\n\nMembersUtil.getRemoveMemberRequestParams = (options) => {\n const body = {\n reason: options.reason\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${LEAVE}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body\n };\n};\n\nMembersUtil.generateTransferHostMemberOptions = (transfer, moderator, locusUrl) => ({\n moderator,\n locusUrl,\n memberId: transfer\n});\n\nMembersUtil.generateRemoveMemberOptions = (removal, locusUrl) => ({\n reason: _FORCED_,\n memberId: removal,\n locusUrl\n});\n\nMembersUtil.generateMuteMemberOptions = (mute, status, locusUrl) => ({\n memberId: mute,\n muted: status,\n locusUrl\n});\n\nMembersUtil.getMuteMemberRequestParams = (options) => {\n const body = {\n audio: {\n muted: options.muted\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nMembersUtil.getTransferHostToMemberRequestParams = (options) => {\n const body = {\n role: {\n moderator: options.moderator\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nexport default MembersUtil;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "1.142.1",
3
+ "version": "1.143.2",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "contributors": [
@@ -24,17 +24,17 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@babel/runtime-corejs2": "^7.14.8",
27
- "@webex/webex-core": "1.142.1",
28
- "@webex/internal-plugin-mercury": "1.142.1",
27
+ "@webex/webex-core": "1.143.2",
28
+ "@webex/internal-plugin-mercury": "1.143.2",
29
29
  "webrtc-adapter": "^7.7.0",
30
30
  "lodash": "^4.17.21",
31
31
  "uuid": "^3.3.2",
32
32
  "global": "^4.4.0",
33
- "@webex/common": "1.142.1",
33
+ "@webex/common": "1.143.2",
34
34
  "bowser": "^2.11.0",
35
35
  "sdp-transform": "^2.12.0",
36
36
  "readable-stream": "^3.6.0",
37
- "@webex/common-timers": "1.142.1",
37
+ "@webex/common-timers": "1.143.2",
38
38
  "btoa": "^1.2.1",
39
39
  "javascript-state-machine": "^3.1.0",
40
40
  "envify": "^4.1.0"
package/src/constants.js CHANGED
@@ -200,7 +200,8 @@ export const DIALER_REGEX = {
200
200
  // requires the @ symbol
201
201
  SIP_ADDRESS: /^(sips?)?:?(?:([^\s>:@]+)(?::([^\s@>]+))?@)([\w\-.]+)(?::(\d+))?((?:;[^\s=?>;]+(?:=[^\s?;]+)?)*)(?:\?(([^\s&=>]+=[^\s&=>]+)(&[^\s&=>]+=[^\s&=>]+)*))?$/,
202
202
  // standard telephony num regex
203
- PHONE_NUMBER: /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/
203
+ PHONE_NUMBER: /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/,
204
+ E164_FORMAT: /^\+[1-9]\d{1,14}$/
204
205
  };
205
206
 
206
207
  // eslint-disable-next-line max-len
@@ -46,12 +46,13 @@ ControlsUtils.getControls = (oldControls, newControls) => {
46
46
  previous,
47
47
  current,
48
48
  updates: {
49
- hasRecordingPausedChanged: current?.record && !isEqual(
50
- previous?.record?.paused, current.record.paused
51
- ),
52
- hasRecordingChanged: current?.record && !isEqual(
53
- previous?.record?.recording, current?.record?.recording
54
- )
49
+ hasRecordingPausedChanged: current?.record &&
50
+ !isEqual(previous?.record?.paused, current.record.paused) &&
51
+ (previous?.record?.recording || current?.record?.recording), // see comments directly below
52
+
53
+ hasRecordingChanged: current?.record &&
54
+ !isEqual(previous?.record?.recording, current?.record?.recording) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true
55
+ (previous?.record?.recording || current?.record?.recording) // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting
55
56
  }
56
57
  };
57
58
  };
@@ -256,7 +256,7 @@ export default class LocusInfo extends EventsScope {
256
256
  * @memberof LocusInfo
257
257
  */
258
258
  handleOneOnOneEvent(eventType) {
259
- if (this.parsedLocus.fullState.type === _CALL_) {
259
+ if (this.parsedLocus.fullState.type === _CALL_ || this.parsedLocus.fullState.type === _SIP_BRIDGE_) {
260
260
  // for 1:1 bob calls alice and alice declines, notify the meeting state
261
261
  if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {
262
262
  // trigger the event for stop ringing
@@ -586,7 +586,7 @@ export default class Members extends StatelessWebexPlugin {
586
586
  }
587
587
  if (MembersUtil.isInvalidInvitee(invitee)) {
588
588
  return Promise.reject(
589
- new ParameterError('The invitee must be defined with either a valid email, or emailAddress property.')
589
+ new ParameterError('The invitee must be defined with either a valid email, emailAddress or phoneNumber property.')
590
590
  );
591
591
  }
592
592
  const options = MembersUtil.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
@@ -20,7 +20,7 @@ export default class MembersRequest extends StatelessWebexPlugin {
20
20
  * @memberof MembersRequest
21
21
  */
22
22
  addMembers(options) {
23
- if (!(!options || !options.invitee || (!options.invitee.emailAddress || !options.invitee.email) || !options.locusUrl)) {
23
+ if (!(!options || !options.invitee || (!options.invitee.emailAddress || !options.invitee.email || !options.invitee.phoneNumber) || !options.locusUrl)) {
24
24
  throw new ParameterError('invitee must be passed and the associated locus url for this meeting object must be defined.');
25
25
  }
26
26
  const requestParams = MembersUtil.getAddMemberRequestParams(options);
@@ -4,13 +4,14 @@ import {
4
4
  _FORCED_,
5
5
  LEAVE,
6
6
  PARTICIPANT,
7
- VALID_EMAIL_ADDRESS
7
+ VALID_EMAIL_ADDRESS,
8
+ DIALER_REGEX
8
9
  } from '../constants';
9
10
 
10
11
  const MembersUtil = {};
11
12
 
12
13
  /**
13
- * @param {Object} invitee with emailAddress or email
14
+ * @param {Object} invitee with emailAddress, email or phoneNumber
14
15
  * @param {String} locusUrl
15
16
  * @param {Boolean} alertIfActive
16
17
  * @returns {Object} the format object
@@ -32,13 +33,13 @@ MembersUtil.generateAdmitMemberOptions = (memberIds, locusUrl) => ({
32
33
  });
33
34
 
34
35
  /**
35
- * @param {Object} options with {invitee: {emailAddress, email}, alertIfActive}
36
+ * @param {Object} options with {invitee: {emailAddress, email, phoneNumber}, alertIfActive}
36
37
  * @returns {Object} with {invitees: [{address}], alertIfActive}
37
38
  */
38
39
  MembersUtil.getAddMemberBody = (options) => ({
39
40
  invitees: [
40
41
  {
41
- address: options.invitee.emailAddress || options.invitee.email
42
+ address: options.invitee.emailAddress || options.invitee.email || options.invitee.phoneNumber
42
43
  }
43
44
  ],
44
45
  alertIfActive: options.alertIfActive
@@ -68,7 +69,7 @@ MembersUtil.getAdmitMemberRequestParams = (format) => {
68
69
  };
69
70
 
70
71
  /**
71
- * @param {Object} format with {invitee {emailAddress, email}, locusUrl, alertIfActive}
72
+ * @param {Object} format with {invitee {emailAddress, email, phoneNumber}, locusUrl, alertIfActive}
72
73
  * @returns {Object} the request parameters (method, uri, body) needed to make a addMember request
73
74
  */
74
75
  MembersUtil.getAddMemberRequestParams = (format) => {
@@ -83,10 +84,14 @@ MembersUtil.getAddMemberRequestParams = (format) => {
83
84
  };
84
85
 
85
86
  MembersUtil.isInvalidInvitee = (invitee) => {
86
- if (!(invitee && (invitee.email || invitee.emailAddress))) {
87
+ if (!(invitee && (invitee.email || invitee.emailAddress || invitee.phoneNumber))) {
87
88
  return true;
88
89
  }
89
90
 
91
+ if (invitee.phoneNumber) {
92
+ return !DIALER_REGEX.E164_FORMAT.test(invitee.phoneNumber);
93
+ }
94
+
90
95
  return !VALID_EMAIL_ADDRESS.test(invitee.email || invitee.emailAddress);
91
96
  };
92
97
 
@@ -81,6 +81,17 @@ describe('plugin-meetings', () => {
81
81
  assert.equal(locusInfo.controls, newControls);
82
82
  });
83
83
 
84
+ it('should not trigger the CONTROLS_RECORDING_UPDATED event', () => {
85
+ locusInfo.controls = {};
86
+ locusInfo.emitScoped = sinon.stub();
87
+ locusInfo.updateControls(newControls);
88
+
89
+ locusInfo.emitScoped.getCalls().forEach((x) => {
90
+ // check that no calls in emitScoped are for CONTROLS_RECORDING_UPDATED
91
+ assert.notEqual(x.args[1], LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED);
92
+ });
93
+ });
94
+
84
95
  it('should keep the recording state to `IDLE`', () => {
85
96
  locusInfo.controls = {
86
97
  record: {
@@ -531,6 +542,7 @@ describe('plugin-meetings', () => {
531
542
  meetingInfoUnlocked);
532
543
  });
533
544
  });
545
+
534
546
  describe('#LocusDeltaEvents', () => {
535
547
  const fakeMeeting = 'fakeMeeting';
536
548
  let sandbox = null;
@@ -675,5 +687,41 @@ describe('plugin-meetings', () => {
675
687
  });
676
688
  });
677
689
  });
690
+
691
+ describe('#handleOneonOneEvent', () => {
692
+ beforeEach(() => {
693
+ locusInfo.emitScoped = sinon.stub();
694
+ });
695
+ it('emits `REMOTE_RESPONSE`', () => {
696
+ // 'locus.participant_joined'
697
+
698
+ locusInfo.parsedLocus.fullState.type = 'SIP_BRIDGE';
699
+ locusInfo.handleOneOnOneEvent('locus.participant_declined');
700
+
701
+ assert.calledWith(locusInfo.emitScoped, {
702
+ file: 'locus-info',
703
+ function: 'handleOneonOneEvent'
704
+ },
705
+ 'REMOTE_RESPONSE',
706
+ {
707
+ remoteDeclined: true,
708
+ remoteAnswered: false
709
+ });
710
+
711
+
712
+ locusInfo.parsedLocus.fullState.type = 'SIP_BRIDGE';
713
+ locusInfo.handleOneOnOneEvent('locus.participant_joined');
714
+
715
+ assert.calledWith(locusInfo.emitScoped, {
716
+ file: 'locus-info',
717
+ function: 'handleOneonOneEvent'
718
+ },
719
+ 'REMOTE_RESPONSE',
720
+ {
721
+ remoteDeclined: false,
722
+ remoteAnswered: true
723
+ });
724
+ });
725
+ });
678
726
  });
679
727
  });