@webex/plugin-meetings 3.8.1-web-workers-keepalive.1 → 3.9.0-webinar5k.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 (87) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +8 -2
  4. package/dist/constants.js.map +1 -1
  5. package/dist/hashTree/constants.js +23 -0
  6. package/dist/hashTree/constants.js.map +1 -0
  7. package/dist/hashTree/hashTree.js +516 -0
  8. package/dist/hashTree/hashTree.js.map +1 -0
  9. package/dist/hashTree/hashTreeParser.js +521 -0
  10. package/dist/hashTree/hashTreeParser.js.map +1 -0
  11. package/dist/interpretation/index.js +1 -1
  12. package/dist/interpretation/siLanguage.js +1 -1
  13. package/dist/locus-info/index.js +301 -59
  14. package/dist/locus-info/index.js.map +1 -1
  15. package/dist/meeting/brbState.js +14 -12
  16. package/dist/meeting/brbState.js.map +1 -1
  17. package/dist/meeting/index.js +110 -12
  18. package/dist/meeting/index.js.map +1 -1
  19. package/dist/meeting/muteState.js +2 -5
  20. package/dist/meeting/muteState.js.map +1 -1
  21. package/dist/meeting/request.js +19 -0
  22. package/dist/meeting/request.js.map +1 -1
  23. package/dist/meeting/request.type.js.map +1 -1
  24. package/dist/meeting/util.js +8 -11
  25. package/dist/meeting/util.js.map +1 -1
  26. package/dist/meetings/index.js +6 -2
  27. package/dist/meetings/index.js.map +1 -1
  28. package/dist/member/index.js.map +1 -1
  29. package/dist/member/types.js.map +1 -1
  30. package/dist/members/collection.js +13 -0
  31. package/dist/members/collection.js.map +1 -1
  32. package/dist/members/index.js +44 -23
  33. package/dist/members/index.js.map +1 -1
  34. package/dist/members/request.js +3 -3
  35. package/dist/members/request.js.map +1 -1
  36. package/dist/members/util.js +18 -6
  37. package/dist/members/util.js.map +1 -1
  38. package/dist/multistream/sendSlotManager.js +32 -2
  39. package/dist/multistream/sendSlotManager.js.map +1 -1
  40. package/dist/types/constants.d.ts +6 -0
  41. package/dist/types/hashTree/constants.d.ts +8 -0
  42. package/dist/types/hashTree/hashTree.d.ts +128 -0
  43. package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
  44. package/dist/types/locus-info/index.d.ts +93 -3
  45. package/dist/types/meeting/brbState.d.ts +0 -1
  46. package/dist/types/meeting/index.d.ts +29 -3
  47. package/dist/types/meeting/request.d.ts +9 -1
  48. package/dist/types/meeting/request.type.d.ts +74 -0
  49. package/dist/types/meeting/util.d.ts +3 -3
  50. package/dist/types/member/types.d.ts +1 -0
  51. package/dist/types/members/collection.d.ts +6 -0
  52. package/dist/types/members/index.d.ts +15 -3
  53. package/dist/types/members/request.d.ts +1 -1
  54. package/dist/types/members/util.d.ts +5 -2
  55. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  56. package/dist/webinar/index.js +1 -1
  57. package/package.json +24 -23
  58. package/src/constants.ts +7 -0
  59. package/src/hashTree/constants.ts +12 -0
  60. package/src/hashTree/hashTree.ts +460 -0
  61. package/src/hashTree/hashTreeParser.ts +556 -0
  62. package/src/locus-info/index.ts +393 -58
  63. package/src/meeting/brbState.ts +9 -7
  64. package/src/meeting/index.ts +104 -6
  65. package/src/meeting/muteState.ts +2 -6
  66. package/src/meeting/request.ts +16 -0
  67. package/src/meeting/request.type.ts +64 -0
  68. package/src/meeting/util.ts +17 -20
  69. package/src/meetings/index.ts +17 -3
  70. package/src/member/index.ts +1 -0
  71. package/src/member/types.ts +1 -0
  72. package/src/members/collection.ts +11 -0
  73. package/src/members/index.ts +33 -7
  74. package/src/members/request.ts +2 -2
  75. package/src/members/util.ts +14 -3
  76. package/src/multistream/sendSlotManager.ts +34 -2
  77. package/test/unit/spec/hashTree/hashTree.ts +394 -0
  78. package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
  79. package/test/unit/spec/locus-info/index.js +506 -55
  80. package/test/unit/spec/meeting/brbState.ts +9 -9
  81. package/test/unit/spec/meeting/index.js +475 -42
  82. package/test/unit/spec/meeting/request.js +71 -0
  83. package/test/unit/spec/members/index.js +33 -10
  84. package/test/unit/spec/members/request.js +2 -2
  85. package/test/unit/spec/members/utils.js +27 -7
  86. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  87. package/test/unit/spec/reachability/index.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_util","_interopRequireDefault","Member","exports","default","participant","options","arguments","length","undefined","_classCallCheck2","_defineProperty2","MEETINGS","canReclaimHost","id","name","isAudioMuted","isVideoMuted","isHandRaised","supportsBreakouts","supportLiveAnnotation","isSelf","isHost","isGuest","isInLobby","isInMeeting","isNotAdmitted","isContentSharing","status","isDevice","isUser","associatedUser","associatedUsers","_set","isRecording","isMutable","isRemovable","isBrb","type","isModerator","isModeratorAssignmentProhibited","isPresenterAssignmentProhibited","isPairedWithSelf","roles","pairedWith","participantUrl","memberId","mediaStatus","audio","video","processParticipant","processParticipantOptions","processMember","_createClass2","key","value","processPairedDevice","MemberUtil","extractId","extractName","isBreakoutsSupported","supportsInterpretation","isInterpretationSupported","isLiveAnnotationSupported","processStatus","processRoles","extractPairedWithParticipantUrl","processIsSelf","selfId","processIsHost","hostId","processIsContentSharing","contentSharingId","processType","processIsRecording","recordingId","extractMediaStatus","extractStatus","_IN_LOBBY_","_IN_MEETING_","_NOT_IN_MEETING_","setIsContentSharing","flag","setIsHost","setIsSelf","sharingId","isSame","extractControlRoles"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_, _OBSERVE_} from '../constants';\nimport {IExternalRoles, IMediaStatus, Participant, ParticipantUrl} from './types';\nimport MemberUtil from './util';\n\nexport type MemberId = string;\n/**\n * @class Member\n */\nexport default class Member {\n associatedUser: MemberId | null; // deprecated, use associatedUsers instead\n associatedUsers: Set<MemberId>; // users associated with this device, empty if this member is not a device\n canReclaimHost: boolean;\n id: MemberId;\n isAudioMuted: any;\n isContentSharing: any;\n isDevice: any;\n isGuest: any;\n isHandRaised: any;\n isHost: any;\n isInLobby: any;\n isInMeeting: any;\n isModerator: any;\n isModeratorAssignmentProhibited: any;\n isPresenterAssignmentProhibited: any;\n isMutable: any;\n isNotAdmitted: any;\n isRecording: any;\n isRemovable: any;\n isSelf: any;\n isPairedWithSelf: boolean; // true for a device that we are paired with\n isBrb: boolean;\n isUser: any;\n isVideoMuted: any;\n roles: IExternalRoles;\n mediaStatus: IMediaStatus;\n name: any;\n participant: any;\n status: any;\n supportsBreakouts: boolean;\n supportsInterpretation: boolean;\n supportLiveAnnotation: boolean;\n type: any;\n namespace = MEETINGS;\n pairedWith: {\n participantUrl?: ParticipantUrl;\n memberId?: MemberId;\n };\n\n /**\n * @param {Object} participant - the locus participant\n * @param {Object} [options] - constructor params\n * @param {String} options.selfId\n * @param {String} options.hostId\n * @param {String} options.contentSharingId\n * @param {String} options.type\n * @returns {Member}\n * @memberof Member\n */\n constructor(\n participant: Participant,\n options:\n | {\n selfId: string;\n hostId: string;\n contentSharingId: string;\n type: string;\n }\n | any = {}\n ) {\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.canReclaimHost = false;\n /**\n * The server participant object\n * @instance\n * @type {Object}\n * @private\n * @memberof Member\n */\n this.participant = null;\n /**\n * The member id\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.id = null;\n /**\n * The member name\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.name = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isAudioMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isVideoMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHandRaised = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportsBreakouts = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportLiveAnnotation = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isSelf = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHost = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isGuest = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInLobby = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInMeeting = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isNotAdmitted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isContentSharing = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.status = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isDevice = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isUser = null;\n /**\n * Deprecated: use associatedUsers instead\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {MemberId|null}\n * @deprecated\n * @public\n * @memberof Member\n */\n this.associatedUser = null;\n /**\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.associatedUsers = new Set<MemberId>();\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRecording = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isMutable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRemovable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isBrb = false;\n /**\n * @instance\n * @type {String}\n * @private\n * @memberof Member\n */\n this.type = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModerator = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModeratorAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isPresenterAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isPairedWithSelf = false;\n\n /**\n * @instance\n * @type {IExternalRoles}\n * @public\n * @memberof Member\n */\n this.roles = null;\n\n this.pairedWith = {\n participantUrl: undefined,\n memberId: undefined,\n };\n /**\n * @instance\n * @type {IMediaStatus}\n * @public\n * @memberof Member\n * @example {audio: MediaStatus.RECVONLY, video: MediaStatus.SENDRECV}\n */\n this.mediaStatus = {\n audio: null,\n video: null,\n };\n // TODO: more participant types\n // such as native client, web client, is a device, what type of phone, etc\n this.processParticipant(participant);\n this.processParticipantOptions(participant, options);\n this.processMember();\n }\n\n /**\n * set all the participant values extracted directly from locus participant\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipant(participant: Participant) {\n this.participant = participant;\n if (participant) {\n this.processPairedDevice(participant);\n this.canReclaimHost = MemberUtil.canReclaimHost(participant);\n this.id = MemberUtil.extractId(participant);\n this.name = MemberUtil.extractName(participant);\n this.isAudioMuted = MemberUtil.isAudioMuted(participant);\n this.isVideoMuted = MemberUtil.isVideoMuted(participant);\n this.isHandRaised = MemberUtil.isHandRaised(participant);\n this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);\n this.supportsInterpretation = MemberUtil.isInterpretationSupported(participant);\n this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);\n this.isGuest = MemberUtil.isGuest(participant);\n this.isBrb = MemberUtil.isBrb(participant);\n this.isUser = MemberUtil.isUser(participant);\n this.isDevice = MemberUtil.isDevice(participant);\n this.isModerator = MemberUtil.isModerator(participant);\n this.isModeratorAssignmentProhibited =\n MemberUtil.isModeratorAssignmentProhibited(participant);\n this.isPresenterAssignmentProhibited =\n MemberUtil.isPresenterAssignmentProhibited(participant);\n this.processStatus(participant);\n this.processRoles(participant);\n // must be done last\n this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);\n }\n }\n\n /**\n * Checks if the participant is paired with another device\n *\n * @param {any} participant the locus participant object\n * @returns {void}\n */\n processPairedDevice(participant: Participant) {\n // we can't populate this.pairedWith.memberId here because the member for that device might not yet exist\n // so only populating the participantUrl and memberId will be set later\n this.pairedWith.participantUrl = MemberUtil.extractPairedWithParticipantUrl(participant);\n }\n\n /**\n * Use the members options and participant values to set on the member\n * @param {Object} participant the locus participant object\n * @param {Object} options the passed in options, what was set on members\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipantOptions(participant: Participant, options: any) {\n if (participant && options) {\n this.processIsSelf(participant, options.selfId);\n this.processIsHost(participant, options.hostId);\n this.processIsContentSharing(participant, options.contentSharingId);\n this.processType(options.type);\n this.processIsRecording(participant, options.recordingId);\n }\n }\n\n /**\n * processes what already exists on the member to determine other info about the member\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processMember() {\n // must occur after self, guest, meeting, and type properties are calculated\n this.isRemovable = MemberUtil.isRemovable(\n this.isSelf,\n this.isGuest,\n this.isInMeeting,\n this.type\n );\n // must occur after self, device, meeting, mute status, and type properties are calculated\n this.isMutable = MemberUtil.isMutable(\n this.isSelf,\n this.isDevice,\n this.isInMeeting,\n this.isAudioMuted,\n this.type\n );\n\n this.mediaStatus = MemberUtil.extractMediaStatus(this.participant);\n }\n\n /**\n * set the status on member object\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processStatus(participant: Participant) {\n this.status = MemberUtil.extractStatus(participant);\n switch (this.status) {\n case _IN_LOBBY_:\n this.isInLobby = true;\n this.isInMeeting = false;\n break;\n case _IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = true;\n break;\n case _NOT_IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = false;\n break;\n default:\n this.isInLobby = false;\n this.isInMeeting = false;\n }\n }\n\n /**\n * set the isContentSharing on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsContentSharing(flag: boolean) {\n this.isContentSharing = flag;\n }\n\n /**\n * set the isHost on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsHost(flag: boolean) {\n this.isHost = flag;\n }\n\n /**\n * set the isSelf on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsSelf(flag: boolean) {\n this.isSelf = flag;\n }\n\n /**\n * determine if this member is content sharing\n * @param {Object} participant\n * @param {String} sharingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsContentSharing(participant: Participant, sharingId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isContentSharing = MemberUtil.isSame(participant, sharingId);\n }\n }\n\n /**\n * Determine if this member is recording\n * @param {Object} participant\n * @param {String} recordingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsRecording(participant: Participant, recordingId: string) {\n this.isRecording = MemberUtil.isSame(participant, recordingId);\n }\n\n /**\n * determine if this member is the self\n * @param {Object} participant\n * @param {String} selfId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsSelf(participant: Participant, selfId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isSelf = MemberUtil.isSame(participant, selfId);\n }\n }\n\n /**\n * determine if this member is the host\n * @param {Object} participant\n * @param {String} hostId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsHost(participant: Participant, hostId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isHost = MemberUtil.isSame(participant, hostId);\n }\n }\n\n /**\n * process the roles that have been applied to this member\n * @param {Object} participant\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processRoles(participant: Participant) {\n this.roles = MemberUtil.extractControlRoles(participant);\n }\n\n /**\n * set the type for the member, could be MEETING or CALL\n * @param {String} type\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processType(type: string) {\n this.type = type;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AALA;AACA;AACA;AAMA;AACA;AACA;AAFA,IAGqBG,MAAM,GAAAC,OAAA,CAAAC,OAAA;EAwCzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAF,OACEG,WAAwB,EASxB;IAAA,IARAC,OAOO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAAG,gBAAA,CAAAN,OAAA,QAAAF,MAAA;IAAA,IAAAS,gBAAA,CAAAP,OAAA;IA1DmB;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IACD;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAmBL;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA,qBAafQ,mBAAQ;IAAA,IAAAD,gBAAA,CAAAP,OAAA;IA2BlB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACS,cAAc,GAAG,KAAK;IAC3B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACR,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACS,EAAE,GAAG,IAAI;IACd;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAC7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,eAAe,GAAG,IAAAC,IAAA,CAAA7B,OAAA,CAAkB,CAAC;IAC1C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAAC8B,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,KAAK,GAAG,KAAK;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,+BAA+B,GAAG,IAAI;;IAE3C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,+BAA+B,GAAG,IAAI;;IAE3C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,KAAK;;IAE7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,KAAK,GAAG,IAAI;IAEjB,IAAI,CAACC,UAAU,GAAG;MAChBC,cAAc,EAAEpC,SAAS;MACzBqC,QAAQ,EAAErC;IACZ,CAAC;IACD;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACsC,WAAW,GAAG;MACjBC,KAAK,EAAE,IAAI;MACXC,KAAK,EAAE;IACT,CAAC;IACD;IACA;IACA,IAAI,CAACC,kBAAkB,CAAC7C,WAAW,CAAC;IACpC,IAAI,CAAC8C,yBAAyB,CAAC9C,WAAW,EAAEC,OAAO,CAAC;IACpD,IAAI,CAAC8C,aAAa,CAAC,CAAC;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,IAAAC,aAAA,CAAAjD,OAAA,EAAAF,MAAA;IAAAoD,GAAA;IAAAC,KAAA,EAOA,SAAAL,mBAA2B7C,WAAwB,EAAE;MACnD,IAAI,CAACA,WAAW,GAAGA,WAAW;MAC9B,IAAIA,WAAW,EAAE;QACf,IAAI,CAACmD,mBAAmB,CAACnD,WAAW,CAAC;QACrC,IAAI,CAACQ,cAAc,GAAG4C,aAAU,CAAC5C,cAAc,CAACR,WAAW,CAAC;QAC5D,IAAI,CAACS,EAAE,GAAG2C,aAAU,CAACC,SAAS,CAACrD,WAAW,CAAC;QAC3C,IAAI,CAACU,IAAI,GAAG0C,aAAU,CAACE,WAAW,CAACtD,WAAW,CAAC;QAC/C,IAAI,CAACW,YAAY,GAAGyC,aAAU,CAACzC,YAAY,CAACX,WAAW,CAAC;QACxD,IAAI,CAACY,YAAY,GAAGwC,aAAU,CAACxC,YAAY,CAACZ,WAAW,CAAC;QACxD,IAAI,CAACa,YAAY,GAAGuC,aAAU,CAACvC,YAAY,CAACb,WAAW,CAAC;QACxD,IAAI,CAACc,iBAAiB,GAAGsC,aAAU,CAACG,oBAAoB,CAACvD,WAAW,CAAC;QACrE,IAAI,CAACwD,sBAAsB,GAAGJ,aAAU,CAACK,yBAAyB,CAACzD,WAAW,CAAC;QAC/E,IAAI,CAACe,qBAAqB,GAAGqC,aAAU,CAACM,yBAAyB,CAAC1D,WAAW,CAAC;QAC9E,IAAI,CAACkB,OAAO,GAAGkC,aAAU,CAAClC,OAAO,CAAClB,WAAW,CAAC;QAC9C,IAAI,CAACgC,KAAK,GAAGoB,aAAU,CAACpB,KAAK,CAAChC,WAAW,CAAC;QAC1C,IAAI,CAACyB,MAAM,GAAG2B,aAAU,CAAC3B,MAAM,CAACzB,WAAW,CAAC;QAC5C,IAAI,CAACwB,QAAQ,GAAG4B,aAAU,CAAC5B,QAAQ,CAACxB,WAAW,CAAC;QAChD,IAAI,CAACkC,WAAW,GAAGkB,aAAU,CAAClB,WAAW,CAAClC,WAAW,CAAC;QACtD,IAAI,CAACmC,+BAA+B,GAClCiB,aAAU,CAACjB,+BAA+B,CAACnC,WAAW,CAAC;QACzD,IAAI,CAACoC,+BAA+B,GAClCgB,aAAU,CAAChB,+BAA+B,CAACpC,WAAW,CAAC;QACzD,IAAI,CAAC2D,aAAa,CAAC3D,WAAW,CAAC;QAC/B,IAAI,CAAC4D,YAAY,CAAC5D,WAAW,CAAC;QAC9B;QACA,IAAI,CAACqB,aAAa,GAAG+B,aAAU,CAAC/B,aAAa,CAACrB,WAAW,EAAE,IAAI,CAACkB,OAAO,EAAE,IAAI,CAACK,MAAM,CAAC;MACvF;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA0B,GAAA;IAAAC,KAAA,EAMA,SAAAC,oBAAoBnD,WAAwB,EAAE;MAC5C;MACA;MACA,IAAI,CAACuC,UAAU,CAACC,cAAc,GAAGY,aAAU,CAACS,+BAA+B,CAAC7D,WAAW,CAAC;IAC1F;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAiD,GAAA;IAAAC,KAAA,EAQA,SAAAJ,0BAAkC9C,WAAwB,EAAEC,OAAY,EAAE;MACxE,IAAID,WAAW,IAAIC,OAAO,EAAE;QAC1B,IAAI,CAAC6D,aAAa,CAAC9D,WAAW,EAAEC,OAAO,CAAC8D,MAAM,CAAC;QAC/C,IAAI,CAACC,aAAa,CAAChE,WAAW,EAAEC,OAAO,CAACgE,MAAM,CAAC;QAC/C,IAAI,CAACC,uBAAuB,CAAClE,WAAW,EAAEC,OAAO,CAACkE,gBAAgB,CAAC;QACnE,IAAI,CAACC,WAAW,CAACnE,OAAO,CAACgC,IAAI,CAAC;QAC9B,IAAI,CAACoC,kBAAkB,CAACrE,WAAW,EAAEC,OAAO,CAACqE,WAAW,CAAC;MAC3D;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAArB,GAAA;IAAAC,KAAA,EAMA,SAAAH,cAAA,EAAwB;MACtB;MACA,IAAI,CAAChB,WAAW,GAAGqB,aAAU,CAACrB,WAAW,CACvC,IAAI,CAACf,MAAM,EACX,IAAI,CAACE,OAAO,EACZ,IAAI,CAACE,WAAW,EAChB,IAAI,CAACa,IACP,CAAC;MACD;MACA,IAAI,CAACH,SAAS,GAAGsB,aAAU,CAACtB,SAAS,CACnC,IAAI,CAACd,MAAM,EACX,IAAI,CAACQ,QAAQ,EACb,IAAI,CAACJ,WAAW,EAChB,IAAI,CAACT,YAAY,EACjB,IAAI,CAACsB,IACP,CAAC;MAED,IAAI,CAACS,WAAW,GAAGU,aAAU,CAACmB,kBAAkB,CAAC,IAAI,CAACvE,WAAW,CAAC;IACpE;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAiD,GAAA;IAAAC,KAAA,EAOA,SAAAS,cAAsB3D,WAAwB,EAAE;MAC9C,IAAI,CAACuB,MAAM,GAAG6B,aAAU,CAACoB,aAAa,CAACxE,WAAW,CAAC;MACnD,QAAQ,IAAI,CAACuB,MAAM;QACjB,KAAKkD,qBAAU;UACb,IAAI,CAACtD,SAAS,GAAG,IAAI;UACrB,IAAI,CAACC,WAAW,GAAG,KAAK;UACxB;QACF,KAAKsD,uBAAY;UACf,IAAI,CAACvD,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,IAAI;UACvB;QACF,KAAKuD,2BAAgB;UACnB,IAAI,CAACxD,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,KAAK;UACxB;QACF;UACE,IAAI,CAACD,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,KAAK;MAC5B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA6B,GAAA;IAAAC,KAAA,EAOA,SAAA0B,oBAA2BC,IAAa,EAAE;MACxC,IAAI,CAACvD,gBAAgB,GAAGuD,IAAI;IAC9B;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA5B,GAAA;IAAAC,KAAA,EAOA,SAAA4B,UAAiBD,IAAa,EAAE;MAC9B,IAAI,CAAC5D,MAAM,GAAG4D,IAAI;IACpB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA5B,GAAA;IAAAC,KAAA,EAOA,SAAA6B,UAAiBF,IAAa,EAAE;MAC9B,IAAI,CAAC7D,MAAM,GAAG6D,IAAI;IACpB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA5B,GAAA;IAAAC,KAAA,EAQA,SAAAgB,wBAA+BlE,WAAwB,EAAEgF,SAAiB,EAAE;MAC1E,IAAI5B,aAAU,CAAC3B,MAAM,CAACzB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACsB,gBAAgB,GAAG8B,aAAU,CAAC6B,MAAM,CAACjF,WAAW,EAAEgF,SAAS,CAAC;MACnE;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA/B,GAAA;IAAAC,KAAA,EAQA,SAAAmB,mBAA0BrE,WAAwB,EAAEsE,WAAmB,EAAE;MACvE,IAAI,CAACzC,WAAW,GAAGuB,aAAU,CAAC6B,MAAM,CAACjF,WAAW,EAAEsE,WAAW,CAAC;IAChE;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAArB,GAAA;IAAAC,KAAA,EAQA,SAAAY,cAAsB9D,WAAwB,EAAE+D,MAAc,EAAE;MAC9D,IAAIX,aAAU,CAAC3B,MAAM,CAACzB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACgB,MAAM,GAAGoC,aAAU,CAAC6B,MAAM,CAACjF,WAAW,EAAE+D,MAAM,CAAC;MACtD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAd,GAAA;IAAAC,KAAA,EAQA,SAAAc,cAAsBhE,WAAwB,EAAEiE,MAAc,EAAE;MAC9D,IAAIb,aAAU,CAAC3B,MAAM,CAACzB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACiB,MAAM,GAAGmC,aAAU,CAAC6B,MAAM,CAACjF,WAAW,EAAEiE,MAAM,CAAC;MACtD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAhB,GAAA;IAAAC,KAAA,EAOA,SAAAU,aAAqB5D,WAAwB,EAAE;MAC7C,IAAI,CAACsC,KAAK,GAAGc,aAAU,CAAC8B,mBAAmB,CAAClF,WAAW,CAAC;IAC1D;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAiD,GAAA;IAAAC,KAAA,EAOA,SAAAkB,YAAoBnC,IAAY,EAAE;MAChC,IAAI,CAACA,IAAI,GAAGA,IAAI;IAClB;EAAC;EAAA,OAAApC,MAAA;AAAA"}
1
+ {"version":3,"names":["_constants","require","_util","_interopRequireDefault","Member","exports","default","participant","options","arguments","length","undefined","_classCallCheck2","_defineProperty2","MEETINGS","canReclaimHost","id","name","isAudioMuted","isVideoMuted","isHandRaised","supportsBreakouts","supportLiveAnnotation","isSelf","isHost","isGuest","isInLobby","isInMeeting","isNotAdmitted","isContentSharing","status","isDevice","isUser","associatedUser","associatedUsers","_set","isRecording","isMutable","isRemovable","isBrb","type","isModerator","isModeratorAssignmentProhibited","isPresenterAssignmentProhibited","isPairedWithSelf","roles","pairedWith","participantUrl","memberId","mediaStatus","audio","video","processParticipant","processParticipantOptions","processMember","_createClass2","key","value","processPairedDevice","MemberUtil","extractId","extractName","isBreakoutsSupported","supportsInterpretation","isInterpretationSupported","isLiveAnnotationSupported","processStatus","processRoles","extractPairedWithParticipantUrl","processIsSelf","selfId","processIsHost","hostId","processIsContentSharing","contentSharingId","processType","processIsRecording","recordingId","extractMediaStatus","extractStatus","_IN_LOBBY_","_IN_MEETING_","_NOT_IN_MEETING_","setIsContentSharing","flag","setIsHost","setIsSelf","sharingId","isSame","extractControlRoles"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_, _OBSERVE_} from '../constants';\nimport {IExternalRoles, IMediaStatus, Participant, ParticipantUrl} from './types';\n\nimport MemberUtil from './util';\n\nexport type MemberId = string;\n/**\n * @class Member\n */\nexport default class Member {\n associatedUser: MemberId | null; // deprecated, use associatedUsers instead\n associatedUsers: Set<MemberId>; // users associated with this device, empty if this member is not a device\n canReclaimHost: boolean;\n id: MemberId;\n isAudioMuted: any;\n isContentSharing: any;\n isDevice: any;\n isGuest: any;\n isHandRaised: any;\n isHost: any;\n isInLobby: any;\n isInMeeting: any;\n isModerator: any;\n isModeratorAssignmentProhibited: any;\n isPresenterAssignmentProhibited: any;\n isMutable: any;\n isNotAdmitted: any;\n isRecording: any;\n isRemovable: any;\n isSelf: any;\n isPairedWithSelf: boolean; // true for a device that we are paired with\n isBrb: boolean;\n isUser: any;\n isVideoMuted: any;\n roles: IExternalRoles;\n mediaStatus: IMediaStatus;\n name: any;\n participant: any;\n status: any;\n supportsBreakouts: boolean;\n supportsInterpretation: boolean;\n supportLiveAnnotation: boolean;\n type: any;\n namespace = MEETINGS;\n pairedWith: {\n participantUrl?: ParticipantUrl;\n memberId?: MemberId;\n };\n\n /**\n * @param {Object} participant - the locus participant\n * @param {Object} [options] - constructor params\n * @param {String} options.selfId\n * @param {String} options.hostId\n * @param {String} options.contentSharingId\n * @param {String} options.type\n * @returns {Member}\n * @memberof Member\n */\n constructor(\n participant: Participant,\n options:\n | {\n selfId: string;\n hostId: string;\n contentSharingId: string;\n type: string;\n }\n | any = {}\n ) {\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.canReclaimHost = false;\n /**\n * The server participant object\n * @instance\n * @type {Object}\n * @private\n * @memberof Member\n */\n this.participant = null;\n /**\n * The member id\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.id = null;\n /**\n * The member name\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.name = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isAudioMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isVideoMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHandRaised = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportsBreakouts = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportLiveAnnotation = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isSelf = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHost = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isGuest = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInLobby = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInMeeting = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isNotAdmitted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isContentSharing = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.status = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isDevice = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isUser = null;\n /**\n * Deprecated: use associatedUsers instead\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {MemberId|null}\n * @deprecated\n * @public\n * @memberof Member\n */\n this.associatedUser = null;\n /**\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.associatedUsers = new Set<MemberId>();\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRecording = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isMutable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRemovable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isBrb = false;\n /**\n * @instance\n * @type {String}\n * @private\n * @memberof Member\n */\n this.type = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModerator = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModeratorAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isPresenterAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isPairedWithSelf = false;\n\n /**\n * @instance\n * @type {IExternalRoles}\n * @public\n * @memberof Member\n */\n this.roles = null;\n\n this.pairedWith = {\n participantUrl: undefined,\n memberId: undefined,\n };\n /**\n * @instance\n * @type {IMediaStatus}\n * @public\n * @memberof Member\n * @example {audio: MediaStatus.RECVONLY, video: MediaStatus.SENDRECV}\n */\n this.mediaStatus = {\n audio: null,\n video: null,\n };\n // TODO: more participant types\n // such as native client, web client, is a device, what type of phone, etc\n this.processParticipant(participant);\n this.processParticipantOptions(participant, options);\n this.processMember();\n }\n\n /**\n * set all the participant values extracted directly from locus participant\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipant(participant: Participant) {\n this.participant = participant;\n if (participant) {\n this.processPairedDevice(participant);\n this.canReclaimHost = MemberUtil.canReclaimHost(participant);\n this.id = MemberUtil.extractId(participant);\n this.name = MemberUtil.extractName(participant);\n this.isAudioMuted = MemberUtil.isAudioMuted(participant);\n this.isVideoMuted = MemberUtil.isVideoMuted(participant);\n this.isHandRaised = MemberUtil.isHandRaised(participant);\n this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);\n this.supportsInterpretation = MemberUtil.isInterpretationSupported(participant);\n this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);\n this.isGuest = MemberUtil.isGuest(participant);\n this.isBrb = MemberUtil.isBrb(participant);\n this.isUser = MemberUtil.isUser(participant);\n this.isDevice = MemberUtil.isDevice(participant);\n this.isModerator = MemberUtil.isModerator(participant);\n this.isModeratorAssignmentProhibited =\n MemberUtil.isModeratorAssignmentProhibited(participant);\n this.isPresenterAssignmentProhibited =\n MemberUtil.isPresenterAssignmentProhibited(participant);\n this.processStatus(participant);\n this.processRoles(participant);\n // must be done last\n this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);\n }\n }\n\n /**\n * Checks if the participant is paired with another device\n *\n * @param {any} participant the locus participant object\n * @returns {void}\n */\n processPairedDevice(participant: Participant) {\n // we can't populate this.pairedWith.memberId here because the member for that device might not yet exist\n // so only populating the participantUrl and memberId will be set later\n this.pairedWith.participantUrl = MemberUtil.extractPairedWithParticipantUrl(participant);\n }\n\n /**\n * Use the members options and participant values to set on the member\n * @param {Object} participant the locus participant object\n * @param {Object} options the passed in options, what was set on members\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipantOptions(participant: Participant, options: any) {\n if (participant && options) {\n this.processIsSelf(participant, options.selfId);\n this.processIsHost(participant, options.hostId);\n this.processIsContentSharing(participant, options.contentSharingId);\n this.processType(options.type);\n this.processIsRecording(participant, options.recordingId);\n }\n }\n\n /**\n * processes what already exists on the member to determine other info about the member\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processMember() {\n // must occur after self, guest, meeting, and type properties are calculated\n this.isRemovable = MemberUtil.isRemovable(\n this.isSelf,\n this.isGuest,\n this.isInMeeting,\n this.type\n );\n // must occur after self, device, meeting, mute status, and type properties are calculated\n this.isMutable = MemberUtil.isMutable(\n this.isSelf,\n this.isDevice,\n this.isInMeeting,\n this.isAudioMuted,\n this.type\n );\n\n this.mediaStatus = MemberUtil.extractMediaStatus(this.participant);\n }\n\n /**\n * set the status on member object\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processStatus(participant: Participant) {\n this.status = MemberUtil.extractStatus(participant);\n switch (this.status) {\n case _IN_LOBBY_:\n this.isInLobby = true;\n this.isInMeeting = false;\n break;\n case _IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = true;\n break;\n case _NOT_IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = false;\n break;\n default:\n this.isInLobby = false;\n this.isInMeeting = false;\n }\n }\n\n /**\n * set the isContentSharing on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsContentSharing(flag: boolean) {\n this.isContentSharing = flag;\n }\n\n /**\n * set the isHost on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsHost(flag: boolean) {\n this.isHost = flag;\n }\n\n /**\n * set the isSelf on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsSelf(flag: boolean) {\n this.isSelf = flag;\n }\n\n /**\n * determine if this member is content sharing\n * @param {Object} participant\n * @param {String} sharingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsContentSharing(participant: Participant, sharingId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isContentSharing = MemberUtil.isSame(participant, sharingId);\n }\n }\n\n /**\n * Determine if this member is recording\n * @param {Object} participant\n * @param {String} recordingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsRecording(participant: Participant, recordingId: string) {\n this.isRecording = MemberUtil.isSame(participant, recordingId);\n }\n\n /**\n * determine if this member is the self\n * @param {Object} participant\n * @param {String} selfId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsSelf(participant: Participant, selfId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isSelf = MemberUtil.isSame(participant, selfId);\n }\n }\n\n /**\n * determine if this member is the host\n * @param {Object} participant\n * @param {String} hostId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsHost(participant: Participant, hostId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isHost = MemberUtil.isSame(participant, hostId);\n }\n }\n\n /**\n * process the roles that have been applied to this member\n * @param {Object} participant\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processRoles(participant: Participant) {\n this.roles = MemberUtil.extractControlRoles(participant);\n }\n\n /**\n * set the type for the member, could be MEETING or CALL\n * @param {String} type\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processType(type: string) {\n this.type = type;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AANA;AACA;AACA;AAOA;AACA;AACA;AAFA,IAGqBG,MAAM,GAAAC,OAAA,CAAAC,OAAA;EAwCzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAF,OACEG,WAAwB,EASxB;IAAA,IARAC,OAOO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAAG,gBAAA,CAAAN,OAAA,QAAAF,MAAA;IAAA,IAAAS,gBAAA,CAAAP,OAAA;IA1DmB;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IACD;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAmBL;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA,qBAafQ,mBAAQ;IAAA,IAAAD,gBAAA,CAAAP,OAAA;IA2BlB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACS,cAAc,GAAG,KAAK;IAC3B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACR,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACS,EAAE,GAAG,IAAI;IACd;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAC7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,eAAe,GAAG,IAAAC,IAAA,CAAA7B,OAAA,CAAkB,CAAC;IAC1C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAAC8B,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,KAAK,GAAG,KAAK;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,+BAA+B,GAAG,IAAI;;IAE3C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,+BAA+B,GAAG,IAAI;;IAE3C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,KAAK;;IAE7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,KAAK,GAAG,IAAI;IAEjB,IAAI,CAACC,UAAU,GAAG;MAChBC,cAAc,EAAEpC,SAAS;MACzBqC,QAAQ,EAAErC;IACZ,CAAC;IACD;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACsC,WAAW,GAAG;MACjBC,KAAK,EAAE,IAAI;MACXC,KAAK,EAAE;IACT,CAAC;IACD;IACA;IACA,IAAI,CAACC,kBAAkB,CAAC7C,WAAW,CAAC;IACpC,IAAI,CAAC8C,yBAAyB,CAAC9C,WAAW,EAAEC,OAAO,CAAC;IACpD,IAAI,CAAC8C,aAAa,CAAC,CAAC;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,IAAAC,aAAA,CAAAjD,OAAA,EAAAF,MAAA;IAAAoD,GAAA;IAAAC,KAAA,EAOA,SAAAL,mBAA2B7C,WAAwB,EAAE;MACnD,IAAI,CAACA,WAAW,GAAGA,WAAW;MAC9B,IAAIA,WAAW,EAAE;QACf,IAAI,CAACmD,mBAAmB,CAACnD,WAAW,CAAC;QACrC,IAAI,CAACQ,cAAc,GAAG4C,aAAU,CAAC5C,cAAc,CAACR,WAAW,CAAC;QAC5D,IAAI,CAACS,EAAE,GAAG2C,aAAU,CAACC,SAAS,CAACrD,WAAW,CAAC;QAC3C,IAAI,CAACU,IAAI,GAAG0C,aAAU,CAACE,WAAW,CAACtD,WAAW,CAAC;QAC/C,IAAI,CAACW,YAAY,GAAGyC,aAAU,CAACzC,YAAY,CAACX,WAAW,CAAC;QACxD,IAAI,CAACY,YAAY,GAAGwC,aAAU,CAACxC,YAAY,CAACZ,WAAW,CAAC;QACxD,IAAI,CAACa,YAAY,GAAGuC,aAAU,CAACvC,YAAY,CAACb,WAAW,CAAC;QACxD,IAAI,CAACc,iBAAiB,GAAGsC,aAAU,CAACG,oBAAoB,CAACvD,WAAW,CAAC;QACrE,IAAI,CAACwD,sBAAsB,GAAGJ,aAAU,CAACK,yBAAyB,CAACzD,WAAW,CAAC;QAC/E,IAAI,CAACe,qBAAqB,GAAGqC,aAAU,CAACM,yBAAyB,CAAC1D,WAAW,CAAC;QAC9E,IAAI,CAACkB,OAAO,GAAGkC,aAAU,CAAClC,OAAO,CAAClB,WAAW,CAAC;QAC9C,IAAI,CAACgC,KAAK,GAAGoB,aAAU,CAACpB,KAAK,CAAChC,WAAW,CAAC;QAC1C,IAAI,CAACyB,MAAM,GAAG2B,aAAU,CAAC3B,MAAM,CAACzB,WAAW,CAAC;QAC5C,IAAI,CAACwB,QAAQ,GAAG4B,aAAU,CAAC5B,QAAQ,CAACxB,WAAW,CAAC;QAChD,IAAI,CAACkC,WAAW,GAAGkB,aAAU,CAAClB,WAAW,CAAClC,WAAW,CAAC;QACtD,IAAI,CAACmC,+BAA+B,GAClCiB,aAAU,CAACjB,+BAA+B,CAACnC,WAAW,CAAC;QACzD,IAAI,CAACoC,+BAA+B,GAClCgB,aAAU,CAAChB,+BAA+B,CAACpC,WAAW,CAAC;QACzD,IAAI,CAAC2D,aAAa,CAAC3D,WAAW,CAAC;QAC/B,IAAI,CAAC4D,YAAY,CAAC5D,WAAW,CAAC;QAC9B;QACA,IAAI,CAACqB,aAAa,GAAG+B,aAAU,CAAC/B,aAAa,CAACrB,WAAW,EAAE,IAAI,CAACkB,OAAO,EAAE,IAAI,CAACK,MAAM,CAAC;MACvF;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA0B,GAAA;IAAAC,KAAA,EAMA,SAAAC,oBAAoBnD,WAAwB,EAAE;MAC5C;MACA;MACA,IAAI,CAACuC,UAAU,CAACC,cAAc,GAAGY,aAAU,CAACS,+BAA+B,CAAC7D,WAAW,CAAC;IAC1F;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAiD,GAAA;IAAAC,KAAA,EAQA,SAAAJ,0BAAkC9C,WAAwB,EAAEC,OAAY,EAAE;MACxE,IAAID,WAAW,IAAIC,OAAO,EAAE;QAC1B,IAAI,CAAC6D,aAAa,CAAC9D,WAAW,EAAEC,OAAO,CAAC8D,MAAM,CAAC;QAC/C,IAAI,CAACC,aAAa,CAAChE,WAAW,EAAEC,OAAO,CAACgE,MAAM,CAAC;QAC/C,IAAI,CAACC,uBAAuB,CAAClE,WAAW,EAAEC,OAAO,CAACkE,gBAAgB,CAAC;QACnE,IAAI,CAACC,WAAW,CAACnE,OAAO,CAACgC,IAAI,CAAC;QAC9B,IAAI,CAACoC,kBAAkB,CAACrE,WAAW,EAAEC,OAAO,CAACqE,WAAW,CAAC;MAC3D;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAArB,GAAA;IAAAC,KAAA,EAMA,SAAAH,cAAA,EAAwB;MACtB;MACA,IAAI,CAAChB,WAAW,GAAGqB,aAAU,CAACrB,WAAW,CACvC,IAAI,CAACf,MAAM,EACX,IAAI,CAACE,OAAO,EACZ,IAAI,CAACE,WAAW,EAChB,IAAI,CAACa,IACP,CAAC;MACD;MACA,IAAI,CAACH,SAAS,GAAGsB,aAAU,CAACtB,SAAS,CACnC,IAAI,CAACd,MAAM,EACX,IAAI,CAACQ,QAAQ,EACb,IAAI,CAACJ,WAAW,EAChB,IAAI,CAACT,YAAY,EACjB,IAAI,CAACsB,IACP,CAAC;MAED,IAAI,CAACS,WAAW,GAAGU,aAAU,CAACmB,kBAAkB,CAAC,IAAI,CAACvE,WAAW,CAAC;IACpE;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAiD,GAAA;IAAAC,KAAA,EAOA,SAAAS,cAAsB3D,WAAwB,EAAE;MAC9C,IAAI,CAACuB,MAAM,GAAG6B,aAAU,CAACoB,aAAa,CAACxE,WAAW,CAAC;MACnD,QAAQ,IAAI,CAACuB,MAAM;QACjB,KAAKkD,qBAAU;UACb,IAAI,CAACtD,SAAS,GAAG,IAAI;UACrB,IAAI,CAACC,WAAW,GAAG,KAAK;UACxB;QACF,KAAKsD,uBAAY;UACf,IAAI,CAACvD,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,IAAI;UACvB;QACF,KAAKuD,2BAAgB;UACnB,IAAI,CAACxD,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,KAAK;UACxB;QACF;UACE,IAAI,CAACD,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,KAAK;MAC5B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA6B,GAAA;IAAAC,KAAA,EAOA,SAAA0B,oBAA2BC,IAAa,EAAE;MACxC,IAAI,CAACvD,gBAAgB,GAAGuD,IAAI;IAC9B;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA5B,GAAA;IAAAC,KAAA,EAOA,SAAA4B,UAAiBD,IAAa,EAAE;MAC9B,IAAI,CAAC5D,MAAM,GAAG4D,IAAI;IACpB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA5B,GAAA;IAAAC,KAAA,EAOA,SAAA6B,UAAiBF,IAAa,EAAE;MAC9B,IAAI,CAAC7D,MAAM,GAAG6D,IAAI;IACpB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA5B,GAAA;IAAAC,KAAA,EAQA,SAAAgB,wBAA+BlE,WAAwB,EAAEgF,SAAiB,EAAE;MAC1E,IAAI5B,aAAU,CAAC3B,MAAM,CAACzB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACsB,gBAAgB,GAAG8B,aAAU,CAAC6B,MAAM,CAACjF,WAAW,EAAEgF,SAAS,CAAC;MACnE;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA/B,GAAA;IAAAC,KAAA,EAQA,SAAAmB,mBAA0BrE,WAAwB,EAAEsE,WAAmB,EAAE;MACvE,IAAI,CAACzC,WAAW,GAAGuB,aAAU,CAAC6B,MAAM,CAACjF,WAAW,EAAEsE,WAAW,CAAC;IAChE;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAArB,GAAA;IAAAC,KAAA,EAQA,SAAAY,cAAsB9D,WAAwB,EAAE+D,MAAc,EAAE;MAC9D,IAAIX,aAAU,CAAC3B,MAAM,CAACzB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACgB,MAAM,GAAGoC,aAAU,CAAC6B,MAAM,CAACjF,WAAW,EAAE+D,MAAM,CAAC;MACtD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAd,GAAA;IAAAC,KAAA,EAQA,SAAAc,cAAsBhE,WAAwB,EAAEiE,MAAc,EAAE;MAC9D,IAAIb,aAAU,CAAC3B,MAAM,CAACzB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACiB,MAAM,GAAGmC,aAAU,CAAC6B,MAAM,CAACjF,WAAW,EAAEiE,MAAM,CAAC;MACtD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAhB,GAAA;IAAAC,KAAA,EAOA,SAAAU,aAAqB5D,WAAwB,EAAE;MAC7C,IAAI,CAACsC,KAAK,GAAGc,aAAU,CAAC8B,mBAAmB,CAAClF,WAAW,CAAC;IAC1D;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAiD,GAAA;IAAAC,KAAA,EAOA,SAAAkB,YAAoBnC,IAAY,EAAE;MAChC,IAAI,CAACA,IAAI,GAAGA,IAAI;IAClB;EAAC;EAAA,OAAApC,MAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["ServerRoles","exports","MediaStatus"],"sources":["types.ts"],"sourcesContent":["export interface IExternalRoles {\n cohost: boolean;\n moderator: boolean;\n presenter: boolean;\n}\n\nexport enum ServerRoles {\n Cohost = 'COHOST',\n Moderator = 'MODERATOR',\n Presenter = 'PRESENTER',\n}\n\nexport type ServerRoleShape = {\n type: ServerRoles;\n hasRole: boolean;\n};\n\n// values are inherited from locus so don't update these\nexport enum MediaStatus {\n RECVONLY = 'RECVONLY', // participant only receiving and not sending\n SENDONLY = 'SENDONLY', // participant only sending and not receiving\n SENDRECV = 'SENDRECV', // participant both sending and receiving\n INACTIVE = 'INACTIVE', // participant is not connected to media source\n UNKNOWN = 'UNKNOWN', // participant has not added media in the meeting\n}\n\nexport interface IMediaStatus {\n audio: MediaStatus;\n video: MediaStatus;\n}\n\nexport type Csi = number;\nexport type Direction = 'inactive' | 'sendrecv' | 'sendonly' | 'recvonly';\nexport type ParticipantUrl = string;\nexport interface MediaSession {\n csi: Csi;\n direction: Direction;\n mediaContent: 'main' | 'slides';\n mediaType: 'audio' | 'video';\n state: string;\n}\n\nexport interface Intent {\n associatedWith: ParticipantUrl;\n id: string;\n type: string; // could be \"WAIT\" or \"OBSERVE\" or other....\n}\nexport interface ParticipantDevice {\n correlationId: string;\n csis: Csi[];\n deviceType: string; // WDM device type, could be \"WEB\", \"TP_ENDPOINT\", \"MAC\" or other things, don't know the full list, so keeping it as string\n intent?: Intent;\n intents: Array<Intent | null>;\n isVideoCallback: boolean;\n mediaSessions: Array<MediaSession>;\n mediaSessionsExternal: boolean;\n state: string; // probably one of MEETING_STATE.STATES\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface ParticipantPerson {\n id: string;\n isExternal: boolean;\n name: string;\n orgId: string;\n}\n\nexport interface ParticipantMediaStatus {\n audioStatus: MediaStatus;\n videoStatus: MediaStatus;\n audioSlidesStatus?: MediaStatus;\n videoSlidesStatus?: MediaStatus;\n csis: Csi[];\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface ParticipantControls {\n role: {\n roles: Array<ServerRoleShape>;\n };\n brb?: {\n enabled: boolean;\n };\n hand: {\n raised: boolean;\n };\n localRecord: {\n recording: boolean;\n };\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface Participant {\n canBeController: boolean;\n controls: ParticipantControls;\n deviceUrl: string;\n devices: Array<ParticipantDevice>;\n guest: boolean;\n id: string;\n identity: string;\n identityTrustLevel: string; // could be 'INTERNAL', 'EXTERNAL' or other....\n isCreator: boolean;\n moderator: boolean; // Locus docs say this is deprecated and role control should be used instead\n moderatorAssignmentNotAllowed: boolean;\n presenterAssignmentNotAllowed: boolean;\n person: ParticipantPerson;\n resourceGuest: boolean;\n state: string; // probably one of MEETING_STATE.STATES\n status: ParticipantMediaStatus;\n type: string;\n url: ParticipantUrl;\n}\n"],"mappings":";;;;;;;IAMYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAWvB;AAAA,IACYE,WAAW,GAAAD,OAAA,CAAAC,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA,OAKA;AAoCvB;AAgBA;AAgBA"}
1
+ {"version":3,"names":["ServerRoles","exports","MediaStatus"],"sources":["types.ts"],"sourcesContent":["export interface IExternalRoles {\n cohost: boolean;\n moderator: boolean;\n presenter: boolean;\n}\n\nexport enum ServerRoles {\n Cohost = 'COHOST',\n Moderator = 'MODERATOR',\n Presenter = 'PRESENTER',\n}\n\nexport type ServerRoleShape = {\n type: ServerRoles;\n hasRole: boolean;\n};\n\n// values are inherited from locus so don't update these\nexport enum MediaStatus {\n RECVONLY = 'RECVONLY', // participant only receiving and not sending\n SENDONLY = 'SENDONLY', // participant only sending and not receiving\n SENDRECV = 'SENDRECV', // participant both sending and receiving\n INACTIVE = 'INACTIVE', // participant is not connected to media source\n UNKNOWN = 'UNKNOWN', // participant has not added media in the meeting\n}\n\nexport interface IMediaStatus {\n audio: MediaStatus;\n video: MediaStatus;\n}\n\nexport type Csi = number;\nexport type Direction = 'inactive' | 'sendrecv' | 'sendonly' | 'recvonly';\nexport type ParticipantUrl = string;\nexport interface MediaSession {\n csi: Csi;\n direction: Direction;\n mediaContent: 'main' | 'slides';\n mediaType: 'audio' | 'video';\n state: string;\n}\n\nexport interface Intent {\n associatedWith: ParticipantUrl;\n id: string;\n type: string; // could be \"WAIT\" or \"OBSERVE\" or other....\n}\nexport interface ParticipantDevice {\n correlationId: string;\n csis: Csi[];\n deviceType: string; // WDM device type, could be \"WEB\", \"TP_ENDPOINT\", \"MAC\" or other things, don't know the full list, so keeping it as string\n intent?: Intent;\n intents: Array<Intent | null>;\n isVideoCallback: boolean;\n mediaSessions: Array<MediaSession>;\n mediaSessionsExternal: boolean;\n state: string; // probably one of MEETING_STATE.STATES\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface ParticipantPerson {\n id: string;\n isExternal: boolean;\n name: string;\n orgId: string;\n}\n\nexport interface ParticipantMediaStatus {\n audioStatus: MediaStatus;\n videoStatus: MediaStatus;\n audioSlidesStatus?: MediaStatus;\n videoSlidesStatus?: MediaStatus;\n csis: Csi[];\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface ParticipantControls {\n role: {\n roles: Array<ServerRoleShape>;\n };\n brb?: {\n enabled: boolean;\n };\n hand: {\n raised: boolean;\n };\n localRecord: {\n recording: boolean;\n };\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface Participant {\n canBeController: boolean;\n controls: ParticipantControls;\n deviceUrl: string;\n devices: Array<ParticipantDevice>;\n guest: boolean;\n id: string;\n identity: string;\n identityTrustLevel: string; // could be 'INTERNAL', 'EXTERNAL' or other....\n isCreator: boolean;\n moderator: boolean; // Locus docs say this is deprecated and role control should be used instead\n moderatorAssignmentNotAllowed: boolean;\n presenterAssignmentNotAllowed: boolean;\n person: ParticipantPerson;\n resourceGuest: boolean;\n state: string; // probably one of MEETING_STATE.STATES\n status: ParticipantMediaStatus;\n type: string;\n url: ParticipantUrl;\n isRemoved: boolean; // JS-SDK internal field to indicate in updates when the participant is removed\n}\n"],"mappings":";;;;;;;IAMYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAWvB;AAAA,IACYE,WAAW,GAAAD,OAAA,CAAAC,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA,OAKA;AAoCvB;AAgBA;AAgBA"}
@@ -55,6 +55,19 @@ var MembersCollection = exports.default = /*#__PURE__*/function () {
55
55
  return this.members;
56
56
  }
57
57
 
58
+ /**
59
+ * Removes a member from the collection
60
+ * @param {String} id
61
+ * @returns {void}
62
+ */
63
+ }, {
64
+ key: "remove",
65
+ value: function remove(id) {
66
+ if (this.members[id]) {
67
+ delete this.members[id];
68
+ }
69
+ }
70
+
58
71
  /**
59
72
  * @returns {void}
60
73
  * reset members
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","MembersCollection","exports","default","_classCallCheck2","_defineProperty2","MEETINGS","members","_createClass2","key","value","set","id","member","setAll","get","getAll","reset"],"sources":["collection.ts"],"sourcesContent":["import {MEETINGS} from '../constants';\nimport Member from '../member';\n\n/**\n * @class MembersCollection\n */\nexport default class MembersCollection {\n members: Record<string, Member>;\n namespace = MEETINGS;\n /**\n * @param {Object} locus\n * @memberof Members\n */\n constructor() {\n this.members = {};\n }\n\n set(id: string, member: Member) {\n this.members[id] = member;\n }\n\n setAll(members: Record<string, Member>) {\n this.members = members;\n }\n\n /**\n * @param {String} id\n * @returns {Member}\n */\n get(id: string) {\n return this.members[id];\n }\n\n /**\n * @returns {Object} returns an object map of Member instances\n * @memberof MembersCollection\n */\n getAll() {\n return this.members;\n }\n\n /**\n * @returns {void}\n * reset members\n */\n reset() {\n this.members = {};\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAGA;AACA;AACA;AAFA,IAGqBC,iBAAiB,GAAAC,OAAA,CAAAC,OAAA;EAGpC;AACF;AACA;AACA;EACE,SAAAF,kBAAA,EAAc;IAAA,IAAAG,gBAAA,CAAAD,OAAA,QAAAF,iBAAA;IAAA,IAAAI,gBAAA,CAAAF,OAAA;IAAA,IAAAE,gBAAA,CAAAF,OAAA,qBALFG,mBAAQ;IAMlB,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC;EACnB;EAAC,IAAAC,aAAA,CAAAL,OAAA,EAAAF,iBAAA;IAAAQ,GAAA;IAAAC,KAAA,EAED,SAAAC,IAAIC,EAAU,EAAEC,MAAc,EAAE;MAC9B,IAAI,CAACN,OAAO,CAACK,EAAE,CAAC,GAAGC,MAAM;IAC3B;EAAC;IAAAJ,GAAA;IAAAC,KAAA,EAED,SAAAI,OAAOP,OAA+B,EAAE;MACtC,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB;;IAEA;AACF;AACA;AACA;EAHE;IAAAE,GAAA;IAAAC,KAAA,EAIA,SAAAK,IAAIH,EAAU,EAAE;MACd,OAAO,IAAI,CAACL,OAAO,CAACK,EAAE,CAAC;IACzB;;IAEA;AACF;AACA;AACA;EAHE;IAAAH,GAAA;IAAAC,KAAA,EAIA,SAAAM,OAAA,EAAS;MACP,OAAO,IAAI,CAACT,OAAO;IACrB;;IAEA;AACF;AACA;AACA;EAHE;IAAAE,GAAA;IAAAC,KAAA,EAIA,SAAAO,MAAA,EAAQ;MACN,IAAI,CAACV,OAAO,GAAG,CAAC,CAAC;IACnB;EAAC;EAAA,OAAAN,iBAAA;AAAA"}
1
+ {"version":3,"names":["_constants","require","MembersCollection","exports","default","_classCallCheck2","_defineProperty2","MEETINGS","members","_createClass2","key","value","set","id","member","setAll","get","getAll","remove","reset"],"sources":["collection.ts"],"sourcesContent":["import {MEETINGS} from '../constants';\nimport Member from '../member';\n\n/**\n * @class MembersCollection\n */\nexport default class MembersCollection {\n members: Record<string, Member>;\n namespace = MEETINGS;\n /**\n * @param {Object} locus\n * @memberof Members\n */\n constructor() {\n this.members = {};\n }\n\n set(id: string, member: Member) {\n this.members[id] = member;\n }\n\n setAll(members: Record<string, Member>) {\n this.members = members;\n }\n\n /**\n * @param {String} id\n * @returns {Member}\n */\n get(id: string) {\n return this.members[id];\n }\n\n /**\n * @returns {Object} returns an object map of Member instances\n * @memberof MembersCollection\n */\n getAll() {\n return this.members;\n }\n\n /**\n * Removes a member from the collection\n * @param {String} id\n * @returns {void}\n */\n remove(id: string) {\n if (this.members[id]) {\n delete this.members[id];\n }\n }\n\n /**\n * @returns {void}\n * reset members\n */\n reset() {\n this.members = {};\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAGA;AACA;AACA;AAFA,IAGqBC,iBAAiB,GAAAC,OAAA,CAAAC,OAAA;EAGpC;AACF;AACA;AACA;EACE,SAAAF,kBAAA,EAAc;IAAA,IAAAG,gBAAA,CAAAD,OAAA,QAAAF,iBAAA;IAAA,IAAAI,gBAAA,CAAAF,OAAA;IAAA,IAAAE,gBAAA,CAAAF,OAAA,qBALFG,mBAAQ;IAMlB,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC;EACnB;EAAC,IAAAC,aAAA,CAAAL,OAAA,EAAAF,iBAAA;IAAAQ,GAAA;IAAAC,KAAA,EAED,SAAAC,IAAIC,EAAU,EAAEC,MAAc,EAAE;MAC9B,IAAI,CAACN,OAAO,CAACK,EAAE,CAAC,GAAGC,MAAM;IAC3B;EAAC;IAAAJ,GAAA;IAAAC,KAAA,EAED,SAAAI,OAAOP,OAA+B,EAAE;MACtC,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB;;IAEA;AACF;AACA;AACA;EAHE;IAAAE,GAAA;IAAAC,KAAA,EAIA,SAAAK,IAAIH,EAAU,EAAE;MACd,OAAO,IAAI,CAACL,OAAO,CAACK,EAAE,CAAC;IACzB;;IAEA;AACF;AACA;AACA;EAHE;IAAAH,GAAA;IAAAC,KAAA,EAIA,SAAAM,OAAA,EAAS;MACP,OAAO,IAAI,CAACT,OAAO;IACrB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAE,GAAA;IAAAC,KAAA,EAKA,SAAAO,OAAOL,EAAU,EAAE;MACjB,IAAI,IAAI,CAACL,OAAO,CAACK,EAAE,CAAC,EAAE;QACpB,OAAO,IAAI,CAACL,OAAO,CAACK,EAAE,CAAC;MACzB;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAAH,GAAA;IAAAC,KAAA,EAIA,SAAAQ,MAAA,EAAQ;MACN,IAAI,CAACX,OAAO,GAAG,CAAC,CAAC;IACnB;EAAC;EAAA,OAAAN,iBAAA;AAAA"}
@@ -514,9 +514,24 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
514
514
  value: function handleMembersUpdate(membersUpdate) {
515
515
  this.constructMembers(membersUpdate.updated, true);
516
516
  this.constructMembers(membersUpdate.added, false);
517
+ this.removeMembers(membersUpdate.removedIds);
517
518
  return this.membersCollection.getAll();
518
519
  }
519
520
 
521
+ /**
522
+ * removes members from the collection
523
+ * @param {Array<string>} removedMembers removed members ids
524
+ * @returns {void}
525
+ */
526
+ }, {
527
+ key: "removeMembers",
528
+ value: function removeMembers(removedMembers) {
529
+ var _this3 = this;
530
+ removedMembers.forEach(function (memberId) {
531
+ _this3.membersCollection.remove(memberId);
532
+ });
533
+ }
534
+
520
535
  /**
521
536
  * set members to the member collection from each updated/added lists as passed in
522
537
  * @param {Array} list
@@ -528,14 +543,14 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
528
543
  }, {
529
544
  key: "constructMembers",
530
545
  value: function constructMembers(list, isUpdate) {
531
- var _this3 = this;
546
+ var _this4 = this;
532
547
  list.forEach(function (member) {
533
548
  if (isUpdate) {
534
549
  // some member props are generated by SDK and need to be preserved on update,
535
550
  // because they depend on relationships with other members so they need to be handled
536
551
  // at the end, once all members are updated - this is done in updateRelationsBetweenMembers()
537
552
  var propsToKeepOnUpdate = ['pairedWith.memberId'];
538
- var existingMember = _this3.membersCollection.get(member.id);
553
+ var existingMember = _this4.membersCollection.get(member.id);
539
554
  if (existingMember) {
540
555
  propsToKeepOnUpdate.forEach(function (prop) {
541
556
  var existingValue = (0, _lodash.get)(existingMember, prop);
@@ -545,7 +560,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
545
560
  });
546
561
  }
547
562
  }
548
- _this3.membersCollection.set(member.id, member);
563
+ _this4.membersCollection.set(member.id, member);
549
564
  });
550
565
  }
551
566
 
@@ -566,6 +581,10 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
566
581
  _loggerProxy.default.logger.warn('Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.');
567
582
  }
568
583
  var memberUpdate = this.update(payload.participants);
584
+
585
+ // this code depends on memberIds being the same as participantIds
586
+ // if MemberUtil.extractId() ever changes, this will need to be updated
587
+ memberUpdate.removedIds = payload.removedParticipantIds || [];
569
588
  return memberUpdate;
570
589
  }
571
590
 
@@ -714,7 +733,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
714
733
  }, {
715
734
  key: "update",
716
735
  value: function update(participants) {
717
- var _this4 = this;
736
+ var _this5 = this;
718
737
  var membersUpdate = {
719
738
  added: [],
720
739
  updated: []
@@ -724,26 +743,26 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
724
743
  if (participant.hideInRoster) {
725
744
  return;
726
745
  }
727
- var existing = _this4.membersCollection.get(participant.id);
746
+ var existing = _this5.membersCollection.get(participant.id);
728
747
  if (existing) {
729
748
  // TODO: compare existing member to new participant coming in properties and determine if updated (this helps for non delta events)
730
749
  // on client re renders, but we will have to determine what values to compare to determine difference, premature optimization
731
750
  membersUpdate.updated.push(new _member.default(participant, {
732
- recordingId: _this4.recordingId,
733
- selfId: _this4.selfId,
734
- hostId: _this4.hostId,
735
- contentSharingId: _this4.mediaShareContentId,
736
- whiteboardSharingId: _this4.mediaShareWhiteboardId,
737
- type: _this4.type
751
+ recordingId: _this5.recordingId,
752
+ selfId: _this5.selfId,
753
+ hostId: _this5.hostId,
754
+ contentSharingId: _this5.mediaShareContentId,
755
+ whiteboardSharingId: _this5.mediaShareWhiteboardId,
756
+ type: _this5.type
738
757
  }));
739
758
  } else {
740
759
  membersUpdate.added.push(new _member.default(participant, {
741
- recordingId: _this4.recordingId,
742
- selfId: _this4.selfId,
743
- hostId: _this4.hostId,
744
- contentSharingId: _this4.mediaShareContentId,
745
- whiteboardSharingId: _this4.mediaShareWhiteboardId,
746
- type: _this4.type
760
+ recordingId: _this5.recordingId,
761
+ selfId: _this5.selfId,
762
+ hostId: _this5.hostId,
763
+ contentSharingId: _this5.mediaShareContentId,
764
+ whiteboardSharingId: _this5.mediaShareWhiteboardId,
765
+ type: _this5.type
747
766
  }));
748
767
  }
749
768
  });
@@ -791,22 +810,24 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
791
810
  }
792
811
 
793
812
  /**
794
- * Cancels an SIP call to the associated meeting
795
- * @param {String} invitee
813
+ * Cancels an SIP/phone call to the associated meeting
814
+ * @param {Object} invitee
815
+ * @param {String} invitee.memberId - The memberId of the invitee
816
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
796
817
  * @returns {Promise}
797
818
  * @memberof Members
798
819
  */
799
820
  }, {
800
- key: "cancelSIPInvite",
801
- value: function cancelSIPInvite(invitee) {
821
+ key: "cancelInviteByMemberId",
822
+ value: function cancelInviteByMemberId(invitee) {
802
823
  if (!this.locusUrl) {
803
824
  return _promise.default.reject(new _parameter.default('The associated locus url for this meeting object must be defined.'));
804
825
  }
805
826
  if (!(invitee !== null && invitee !== void 0 && invitee.memberId)) {
806
827
  return _promise.default.reject(new _parameter.default('The invitee must be defined with a memberId property.'));
807
828
  }
808
- var options = _util.default.cancelSIPInviteOptions(invitee, this.locusUrl);
809
- return this.membersRequest.cancelSIPInvite(options);
829
+ var options = _util.default.cancelInviteByMemberIdOptions(invitee, this.locusUrl);
830
+ return this.membersRequest.cancelInviteByMemberId(options);
810
831
  }
811
832
 
812
833
  /**