@webex/plugin-meetings 3.12.0-next.5 → 3.12.0-next.50
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.
- package/AGENTS.md +9 -0
- package/dist/aiEnableRequest/index.js +15 -2
- package/dist/aiEnableRequest/index.js.map +1 -1
- package/dist/breakouts/breakout.js +6 -2
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.js +6 -3
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +11 -1
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/index.js +38 -24
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +91 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/hashTree/constants.js +10 -1
- package/dist/hashTree/constants.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +593 -358
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/utils.js +22 -0
- package/dist/hashTree/utils.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interceptors/locusRetry.js +23 -8
- package/dist/interceptors/locusRetry.js.map +1 -1
- package/dist/interpretation/index.js +10 -1
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +4 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +277 -86
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/types.js +16 -0
- package/dist/locus-info/types.js.map +1 -1
- package/dist/media/properties.js +1 -0
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +3 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +842 -521
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/util.js +19 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +199 -77
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +6 -1
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/request.js +39 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +67 -5
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +10 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +3 -0
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +2 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/recording-controller/index.js +1 -3
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/controls-options-manager/constants.d.ts +6 -1
- package/dist/types/controls-options-manager/index.d.ts +10 -0
- package/dist/types/hashTree/constants.d.ts +1 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +61 -15
- package/dist/types/hashTree/utils.d.ts +11 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/interceptors/locusRetry.d.ts +4 -4
- package/dist/types/locus-info/index.d.ts +46 -6
- package/dist/types/locus-info/types.d.ts +17 -1
- package/dist/types/media/properties.d.ts +1 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +70 -1
- package/dist/types/meeting/util.d.ts +8 -0
- package/dist/types/meetings/index.d.ts +18 -1
- package/dist/types/meetings/meetings.types.d.ts +15 -0
- package/dist/types/meetings/request.d.ts +14 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/member/util.d.ts +1 -0
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/webinar/index.js +361 -235
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/aiEnableRequest/index.ts +16 -0
- package/src/breakouts/breakout.ts +2 -1
- package/src/config.ts +1 -0
- package/src/constants.ts +5 -1
- package/src/controls-options-manager/constants.ts +14 -1
- package/src/controls-options-manager/index.ts +47 -24
- package/src/controls-options-manager/util.ts +81 -1
- package/src/hashTree/constants.ts +9 -0
- package/src/hashTree/hashTreeParser.ts +306 -160
- package/src/hashTree/utils.ts +17 -0
- package/src/index.ts +5 -0
- package/src/interceptors/locusRetry.ts +25 -4
- package/src/interpretation/index.ts +25 -8
- package/src/locus-info/controlsUtils.ts +3 -1
- package/src/locus-info/index.ts +276 -93
- package/src/locus-info/types.ts +19 -1
- package/src/media/properties.ts +1 -0
- package/src/meeting/in-meeting-actions.ts +4 -0
- package/src/meeting/index.ts +315 -26
- package/src/meeting/util.ts +20 -2
- package/src/meetings/index.ts +104 -43
- package/src/meetings/meetings.types.ts +19 -0
- package/src/meetings/request.ts +43 -0
- package/src/meetings/util.ts +80 -1
- package/src/member/index.ts +10 -0
- package/src/member/types.ts +1 -0
- package/src/member/util.ts +3 -0
- package/src/metrics/constants.ts +1 -0
- package/src/recording-controller/index.ts +1 -2
- package/src/webinar/index.ts +162 -21
- package/test/unit/spec/aiEnableRequest/index.ts +86 -0
- package/test/unit/spec/breakouts/breakout.ts +7 -3
- package/test/unit/spec/controls-options-manager/index.js +140 -29
- package/test/unit/spec/controls-options-manager/util.js +165 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +1294 -191
- package/test/unit/spec/hashTree/utils.ts +88 -1
- package/test/unit/spec/interceptors/locusRetry.ts +205 -4
- package/test/unit/spec/interpretation/index.ts +26 -4
- package/test/unit/spec/locus-info/controlsUtils.js +172 -57
- package/test/unit/spec/locus-info/index.js +443 -81
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
- package/test/unit/spec/meeting/index.js +836 -41
- package/test/unit/spec/meeting/muteState.js +3 -0
- package/test/unit/spec/meeting/utils.js +33 -0
- package/test/unit/spec/meetings/index.js +275 -10
- package/test/unit/spec/meetings/request.js +141 -0
- package/test/unit/spec/meetings/utils.js +161 -0
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/recording-controller/index.js +9 -8
- package/test/unit/spec/webinar/index.ts +141 -16
|
@@ -4,7 +4,7 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
|
|
|
4
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.MEETING_KEY = void 0;
|
|
7
|
+
exports.SitePreferenceSelectOption = exports.MEETING_KEY = exports.DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS = void 0;
|
|
8
8
|
var MEETING_KEY = exports.MEETING_KEY = {
|
|
9
9
|
CONVERSATION_URL: 'conversationUrl',
|
|
10
10
|
SIP_URI: 'sipUri',
|
|
@@ -14,4 +14,9 @@ var MEETING_KEY = exports.MEETING_KEY = {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
// finer grained status for registration steps
|
|
17
|
+
var SitePreferenceSelectOption = exports.SitePreferenceSelectOption = /*#__PURE__*/function (SitePreferenceSelectOption) {
|
|
18
|
+
SitePreferenceSelectOption["SCHEDULING"] = "scheduling";
|
|
19
|
+
return SitePreferenceSelectOption;
|
|
20
|
+
}({});
|
|
21
|
+
var DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS = exports.DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS = [SitePreferenceSelectOption.SCHEDULING];
|
|
17
22
|
//# sourceMappingURL=meetings.types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MEETING_KEY","exports","CONVERSATION_URL","SIP_URI","LOCUS_URL","MEETINGNUMBER","CORRELATION_ID"],"sources":["meetings.types.ts"],"sourcesContent":["import type {\n NoiseReductionEffectOptions,\n VirtualBackgroundEffectOptions,\n} from '@webex/media-helpers';\nimport {Enum} from '../constants';\n\ntype INoiseReductionEffect = Omit<\n NoiseReductionEffectOptions,\n 'authToken' | 'workletProcessorUrl' | 'legacyProcessorUrl'\n>;\ntype IVirtualBackgroundEffect = Omit<VirtualBackgroundEffectOptions, 'authToken'>;\n\nexport type {INoiseReductionEffect, IVirtualBackgroundEffect};\n\nexport const MEETING_KEY = {\n CONVERSATION_URL: 'conversationUrl',\n SIP_URI: 'sipUri',\n LOCUS_URL: 'locusUrl',\n MEETINGNUMBER: 'meetingNumber',\n CORRELATION_ID: 'correlationId',\n} as const;\n\nexport type MEETING_KEY = Enum<typeof MEETING_KEY>;\n\n// finer grained status for registration steps\nexport type MeetingRegistrationStatus = {\n fetchWebexSite: boolean;\n getGeoHint: boolean;\n startReachability: boolean;\n deviceRegister: boolean;\n mercuryConnect: boolean;\n checkH264Support: boolean;\n};\n"],"mappings":";;;;;;;AAcO,IAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzBE,gBAAgB,EAAE,iBAAiB;EACnCC,OAAO,EAAE,QAAQ;EACjBC,SAAS,EAAE,UAAU;EACrBC,aAAa,EAAE,eAAe;EAC9BC,cAAc,EAAE;AAClB,CAAU;;AAIV","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["MEETING_KEY","exports","CONVERSATION_URL","SIP_URI","LOCUS_URL","MEETINGNUMBER","CORRELATION_ID","SitePreferenceSelectOption","DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS","SCHEDULING"],"sources":["meetings.types.ts"],"sourcesContent":["import type {\n NoiseReductionEffectOptions,\n VirtualBackgroundEffectOptions,\n} from '@webex/media-helpers';\nimport {Enum} from '../constants';\n\ntype INoiseReductionEffect = Omit<\n NoiseReductionEffectOptions,\n 'authToken' | 'workletProcessorUrl' | 'legacyProcessorUrl'\n>;\ntype IVirtualBackgroundEffect = Omit<VirtualBackgroundEffectOptions, 'authToken'>;\n\nexport type {INoiseReductionEffect, IVirtualBackgroundEffect};\n\nexport const MEETING_KEY = {\n CONVERSATION_URL: 'conversationUrl',\n SIP_URI: 'sipUri',\n LOCUS_URL: 'locusUrl',\n MEETINGNUMBER: 'meetingNumber',\n CORRELATION_ID: 'correlationId',\n} as const;\n\nexport type MEETING_KEY = Enum<typeof MEETING_KEY>;\n\n// finer grained status for registration steps\nexport type MeetingRegistrationStatus = {\n fetchWebexSite: boolean;\n getGeoHint: boolean;\n startReachability: boolean;\n deviceRegister: boolean;\n mercuryConnect: boolean;\n checkH264Support: boolean;\n};\n\nexport enum SitePreferenceSelectOption {\n SCHEDULING = 'scheduling',\n}\n\nexport type FetchSitePreferencesMeViaSiteOptions = {\n siteUrl?: string;\n siteName?: string;\n selectOptions?: SitePreferenceSelectOption[];\n};\n\nexport const DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS = [SitePreferenceSelectOption.SCHEDULING];\n\nexport type SitePreferencesResponse = {\n scheduling?: {\n supportScheduleWebinar?: boolean;\n webinarWebLink?: string;\n };\n};\n"],"mappings":";;;;;;;AAcO,IAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzBE,gBAAgB,EAAE,iBAAiB;EACnCC,OAAO,EAAE,QAAQ;EACjBC,SAAS,EAAE,UAAU;EACrBC,aAAa,EAAE,eAAe;EAC9BC,cAAc,EAAE;AAClB,CAAU;;AAIV;AAAA,IAUYC,0BAA0B,GAAAN,OAAA,CAAAM,0BAAA,0BAA1BA,0BAA0B;EAA1BA,0BAA0B;EAAA,OAA1BA,0BAA0B;AAAA;AAU/B,IAAMC,sCAAsC,GAAAP,OAAA,CAAAO,sCAAA,GAAG,CAACD,0BAA0B,CAACE,UAAU,CAAC","ignoreList":[]}
|
package/dist/meetings/request.js
CHANGED
|
@@ -15,7 +15,10 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
|
|
|
15
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
16
16
|
var _webexCore = require("@webex/webex-core");
|
|
17
17
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
18
|
+
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
|
18
19
|
var _constants = require("../constants");
|
|
20
|
+
var _meetings = require("./meetings.types");
|
|
21
|
+
var _util = _interopRequireDefault(require("./util"));
|
|
19
22
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
20
23
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // @ts-ignore
|
|
21
24
|
/**
|
|
@@ -70,6 +73,42 @@ var MeetingRequest = exports.default = /*#__PURE__*/function (_StatelessWebexPlu
|
|
|
70
73
|
return this.webex.internal.services.getMeetingPreferences();
|
|
71
74
|
}
|
|
72
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Fetches site preferences from a given site given a select option and a siteUrl with an optional siteName. If siteName is not provided, it will be derived from the siteUrl. If siteUrl is not provided, it will throw an error. If selectOptions is not provided, it will default to scheduling.
|
|
78
|
+
*
|
|
79
|
+
* @param {object} [options]
|
|
80
|
+
* @param {string} [options.siteUrl] - Webex site URL, for example "cisco.webex.com".
|
|
81
|
+
* @param {string} [options.siteName] - Site name query override. Defaults to the site name derived from options.siteUrl, e.g., "cisco".
|
|
82
|
+
* @param {SitePreferenceSelectOption[]} [options.selectOptions] - Preference sections to fetch. Defaults to 'scheduling'.
|
|
83
|
+
* @returns {Promise<SitePreferencesResponse>} site preferences response body
|
|
84
|
+
* @throws {ParameterError}
|
|
85
|
+
* @public
|
|
86
|
+
* @memberof MeetingRequest
|
|
87
|
+
*/
|
|
88
|
+
}, {
|
|
89
|
+
key: "fetchSitePreferencesMeViaSite",
|
|
90
|
+
value: function fetchSitePreferencesMeViaSite() {
|
|
91
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
92
|
+
var siteUrl = options.siteUrl,
|
|
93
|
+
_options$selectOption = options.selectOptions,
|
|
94
|
+
selectOptions = _options$selectOption === void 0 ? _meetings.DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS : _options$selectOption;
|
|
95
|
+
if (!siteUrl) {
|
|
96
|
+
throw new _parameter.default('No siteUrl available. Call register() before fetching site preferences or provide options.siteUrl.');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// @ts-ignore - config comes from registerPlugin
|
|
100
|
+
var multipartSitePrefixList = this.config.meetings.multipartSitePrefixList || [];
|
|
101
|
+
var siteName = options.siteName || _util.default.getSiteName(siteUrl, multipartSitePrefixList);
|
|
102
|
+
|
|
103
|
+
// @ts-ignore
|
|
104
|
+
return this.request({
|
|
105
|
+
method: _constants.HTTP_VERBS.GET,
|
|
106
|
+
uri: "https://".concat(siteUrl, "/wbxappapi/v1/users/me/preference?select=").concat(encodeURIComponent(selectOptions.join(',')), "&siteurl=").concat(encodeURIComponent(siteName))
|
|
107
|
+
}).then(function (res) {
|
|
108
|
+
return res.body;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
73
112
|
// locus federation, determines and populate locus if the responseBody has remote URLs to fetch locus details
|
|
74
113
|
|
|
75
114
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_constants","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","MeetingRequest","exports","_StatelessWebexPlugin","_classCallCheck2","arguments","_inherits2","_createClass2","key","value","getActiveMeetings","_this","request","api","API","LOCUS","resource","RESOURCE","LOCI","then","res","determineRedirections","body","catch","error","LoggerProxy","logger","concat","Error","fetchGeoHint","webex","internal","services","fetchClientRegionInfo","getMeetingPreferences","
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_parameter","_constants","_meetings","_util","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","MeetingRequest","exports","_StatelessWebexPlugin","_classCallCheck2","arguments","_inherits2","_createClass2","key","value","getActiveMeetings","_this","request","api","API","LOCUS","resource","RESOURCE","LOCI","then","res","determineRedirections","body","catch","error","LoggerProxy","logger","concat","Error","fetchGeoHint","webex","internal","services","fetchClientRegionInfo","getMeetingPreferences","fetchSitePreferencesMeViaSite","options","length","undefined","siteUrl","_options$selectOption","selectOptions","DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS","ParameterError","multipartSitePrefixList","config","meetings","siteName","MeetingsUtil","getSiteName","method","HTTP_VERBS","GET","uri","encodeURIComponent","join","responseBody","_this2","remoteLocusClusterUrls","_promise","all","map","url","runWhitelistedDomains","loci","locusUrls","resolve","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\nimport {HTTP_VERBS, API, RESOURCE} from '../constants';\nimport {\n DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS,\n type FetchSitePreferencesMeViaSiteOptions,\n type SitePreferencesResponse,\n} from './meetings.types';\nimport MeetingsUtil from './util';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n /**\n * get all the active meetings for the user\n * @returns {Array} return locus array\n */\n getActiveMeetings() {\n // @ts-ignore\n return this.request({\n api: API.LOCUS,\n resource: RESOURCE.LOCI,\n })\n .then((res) => this.determineRedirections(res.body))\n .catch((error) => {\n LoggerProxy.logger.error(\n `Meetings:request#getActiveMeetings --> failed to get locus details, ${error}`\n );\n throw new Error(error);\n });\n }\n\n /**\n * fetch geoHit for the user\n * @returns {Promise<object>} geoHintInfo\n */\n fetchGeoHint() {\n // @ts-ignore\n return this.webex.internal.services.fetchClientRegionInfo();\n }\n\n /**\n * get user meeting preference information\n * @returns {Promise<object>} getMeetingPreferences\n */\n getMeetingPreferences() {\n // @ts-ignore\n return this.webex.internal.services.getMeetingPreferences();\n }\n\n /**\n * Fetches site preferences from a given site given a select option and a siteUrl with an optional siteName. If siteName is not provided, it will be derived from the siteUrl. If siteUrl is not provided, it will throw an error. If selectOptions is not provided, it will default to scheduling.\n *\n * @param {object} [options]\n * @param {string} [options.siteUrl] - Webex site URL, for example \"cisco.webex.com\".\n * @param {string} [options.siteName] - Site name query override. Defaults to the site name derived from options.siteUrl, e.g., \"cisco\".\n * @param {SitePreferenceSelectOption[]} [options.selectOptions] - Preference sections to fetch. Defaults to 'scheduling'.\n * @returns {Promise<SitePreferencesResponse>} site preferences response body\n * @throws {ParameterError}\n * @public\n * @memberof MeetingRequest\n */\n fetchSitePreferencesMeViaSite(\n options: FetchSitePreferencesMeViaSiteOptions = {}\n ): Promise<SitePreferencesResponse> {\n const {siteUrl, selectOptions = DEFAULT_SITE_PREFERENCE_SELECT_OPTIONS} = options;\n\n if (!siteUrl) {\n throw new ParameterError(\n 'No siteUrl available. Call register() before fetching site preferences or provide options.siteUrl.'\n );\n }\n\n // @ts-ignore - config comes from registerPlugin\n const multipartSitePrefixList = this.config.meetings.multipartSitePrefixList || [];\n const siteName = options.siteName || MeetingsUtil.getSiteName(siteUrl, multipartSitePrefixList);\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `https://${siteUrl}/wbxappapi/v1/users/me/preference?select=${encodeURIComponent(\n selectOptions.join(',')\n )}&siteurl=${encodeURIComponent(siteName)}`,\n }).then((res: any) => res.body);\n }\n\n // locus federation, determines and populate locus if the responseBody has remote URLs to fetch locus details\n\n /**\n * Fetches indivdual locus rather then getting all at once\n * @param {object} responseBody determine the locus and fetch them if a remoteUrl is given\n * @returns {Promise} returns locusObject array\n */\n determineRedirections(responseBody: any) {\n if (responseBody.remoteLocusClusterUrls && responseBody.remoteLocusClusterUrls.length) {\n return Promise.all(\n responseBody.remoteLocusClusterUrls.map((url) =>\n // @ts-ignore\n this.request({\n method: HTTP_VERBS.GET,\n url,\n runWhitelistedDomains: true, // allows auth token for whitelisted domain\n })\n .then((res) => {\n responseBody.loci = responseBody.loci.concat(res.body.loci);\n responseBody.locusUrls = responseBody.locusUrls.concat(res.body.locusUrls);\n\n return Promise.resolve(responseBody);\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Meetings:request#determineRedirections --> failed to get locus details from url: ${url}, reason: ${error}`\n );\n throw new Error(error);\n })\n )\n ).then(() => Promise.resolve(responseBody));\n }\n\n return Promise.resolve(responseBody);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/meetings/util.js
CHANGED
|
@@ -15,6 +15,7 @@ var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-pro
|
|
|
15
15
|
var _constants2 = _interopRequireDefault(require("../metrics/constants"));
|
|
16
16
|
var _metrics = _interopRequireDefault(require("../metrics"));
|
|
17
17
|
var _meetings = require("./meetings.types");
|
|
18
|
+
var _types = require("../locus-info/types");
|
|
18
19
|
/* globals window */
|
|
19
20
|
|
|
20
21
|
/**
|
|
@@ -138,6 +139,24 @@ MeetingsUtil.parseDefaultSiteFromMeetingPreferences = function (userPreferences)
|
|
|
138
139
|
}
|
|
139
140
|
return result;
|
|
140
141
|
};
|
|
142
|
+
MeetingsUtil.getSiteName = function (site) {
|
|
143
|
+
var multipartSitePrefixList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
144
|
+
if (!site) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
var siteName;
|
|
148
|
+
multipartSitePrefixList.forEach(function (multipartSitePrefix) {
|
|
149
|
+
if (!siteName && site.includes(multipartSitePrefix)) {
|
|
150
|
+
var secondDot = site.indexOf('.', site.indexOf('.') + 1);
|
|
151
|
+
siteName = site.substring(0, secondDot);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
if (siteName) {
|
|
155
|
+
return siteName;
|
|
156
|
+
}
|
|
157
|
+
siteName = site.substring(0, site.indexOf('.'));
|
|
158
|
+
return siteName;
|
|
159
|
+
};
|
|
141
160
|
|
|
142
161
|
/**
|
|
143
162
|
* Will check to see if the H.264 media codec is supported.
|
|
@@ -274,6 +293,30 @@ MeetingsUtil.getThisDevice = function (newLocus, deviceUrl) {
|
|
|
274
293
|
return null;
|
|
275
294
|
};
|
|
276
295
|
|
|
296
|
+
/**
|
|
297
|
+
* Checks if the fullState indicates the meeting has fully ended (not just a breakout move).
|
|
298
|
+
* @param {Object} fullState locus fullState data
|
|
299
|
+
* @returns {boolean}
|
|
300
|
+
*/
|
|
301
|
+
MeetingsUtil.isWholeMeetingEnded = function (fullState) {
|
|
302
|
+
return fullState.state === _constants.LOCUS.STATE.INACTIVE && fullState.endMeetingReason !== _types.EndMeetingReason.breakoutEnded;
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Checks if the self state in a locus indicates a breakout move or breakout end.
|
|
307
|
+
* Returns true when:
|
|
308
|
+
* - self state is LEFT with reason MOVED (regular breakout move), OR
|
|
309
|
+
* - fullState is INACTIVE with endMeetingReason BREAKOUT_ENDED (breakout session ended)
|
|
310
|
+
* @param {Object} locus locus data
|
|
311
|
+
* @returns {boolean}
|
|
312
|
+
*/
|
|
313
|
+
MeetingsUtil.isSelfMovedOrBreakoutEnded = function (locus) {
|
|
314
|
+
var _locus$self, _locus$self2, _locus$fullState, _locus$fullState2;
|
|
315
|
+
var isSelfLeftMoved = (locus === null || locus === void 0 ? void 0 : (_locus$self = locus.self) === null || _locus$self === void 0 ? void 0 : _locus$self.state) === _constants._LEFT_ && (locus === null || locus === void 0 ? void 0 : (_locus$self2 = locus.self) === null || _locus$self2 === void 0 ? void 0 : _locus$self2.reason) === _constants._MOVED_;
|
|
316
|
+
var isBreakoutEnded = (locus === null || locus === void 0 ? void 0 : (_locus$fullState = locus.fullState) === null || _locus$fullState === void 0 ? void 0 : _locus$fullState.state) === _constants.LOCUS.STATE.INACTIVE && (locus === null || locus === void 0 ? void 0 : (_locus$fullState2 = locus.fullState) === null || _locus$fullState2 === void 0 ? void 0 : _locus$fullState2.endMeetingReason) === _types.EndMeetingReason.breakoutEnded;
|
|
317
|
+
return isSelfLeftMoved || isBreakoutEnded;
|
|
318
|
+
};
|
|
319
|
+
|
|
277
320
|
/**
|
|
278
321
|
* get self device joined status from locus data
|
|
279
322
|
* @param {Object} meeting current meeting data
|
|
@@ -298,8 +341,8 @@ MeetingsUtil.joinedOnThisDevice = function (meeting, newLocus, deviceUrl) {
|
|
|
298
341
|
* @private
|
|
299
342
|
*/
|
|
300
343
|
MeetingsUtil.isBreakoutLocusDTO = function (newLocus) {
|
|
301
|
-
var _newLocus$controls, _newLocus$controls$br;
|
|
302
|
-
return (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$controls = newLocus.controls) === null || _newLocus$controls === void 0 ? void 0 : (_newLocus$controls$br = _newLocus$controls.breakout) === null || _newLocus$controls$br === void 0 ? void 0 : _newLocus$controls$br.sessionType) === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT;
|
|
344
|
+
var _newLocus$controls, _newLocus$controls$br, _newLocus$info;
|
|
345
|
+
return (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$controls = newLocus.controls) === null || _newLocus$controls === void 0 ? void 0 : (_newLocus$controls$br = _newLocus$controls.breakout) === null || _newLocus$controls$br === void 0 ? void 0 : _newLocus$controls$br.sessionType) === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT || !!(newLocus !== null && newLocus !== void 0 && (_newLocus$info = newLocus.info) !== null && _newLocus$info !== void 0 && _newLocus$info.isBreakout);
|
|
303
346
|
};
|
|
304
347
|
|
|
305
348
|
/**
|
|
@@ -309,11 +352,30 @@ MeetingsUtil.isBreakoutLocusDTO = function (newLocus) {
|
|
|
309
352
|
* @private
|
|
310
353
|
*/
|
|
311
354
|
MeetingsUtil.isValidBreakoutLocus = function (locus) {
|
|
312
|
-
var _locus$
|
|
313
|
-
var inActiveStatus = (locus === null || locus === void 0 ? void 0 : (_locus$
|
|
355
|
+
var _locus$fullState3, _locus$self3;
|
|
356
|
+
var inActiveStatus = (locus === null || locus === void 0 ? void 0 : (_locus$fullState3 = locus.fullState) === null || _locus$fullState3 === void 0 ? void 0 : _locus$fullState3.state) === _constants.LOCUS.STATE.INACTIVE;
|
|
314
357
|
var isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);
|
|
315
|
-
var selfJoined = ((_locus$
|
|
358
|
+
var selfJoined = ((_locus$self3 = locus.self) === null || _locus$self3 === void 0 ? void 0 : _locus$self3.state) === _constants._JOINED_;
|
|
316
359
|
return isLocusAsBreakout && !inActiveStatus && selfJoined;
|
|
317
360
|
};
|
|
361
|
+
/**
|
|
362
|
+
* check if the breakout locus is associated with the main locus by comparing the breakout control url or the replaces info in self device
|
|
363
|
+
* @param {Object} mainLocus main locus data
|
|
364
|
+
* @param {Object} breakoutLocus breakout locus data
|
|
365
|
+
* @returns {boolean}
|
|
366
|
+
* @private
|
|
367
|
+
*/
|
|
368
|
+
MeetingsUtil.isMainAssociatedWithBreakout = function (mainLocus, breakoutLocus) {
|
|
369
|
+
var _mainLocus$controls, _mainLocus$controls$b, _mainLocus$controls2, _mainLocus$controls2$, _breakoutLocus$contro, _breakoutLocus$contro2, _breakoutLocus$self, _MeetingsUtil$getThis, _MeetingsUtil$getThis2;
|
|
370
|
+
if ((_mainLocus$controls = mainLocus.controls) !== null && _mainLocus$controls !== void 0 && (_mainLocus$controls$b = _mainLocus$controls.breakout) !== null && _mainLocus$controls$b !== void 0 && _mainLocus$controls$b.url && ((_mainLocus$controls2 = mainLocus.controls) === null || _mainLocus$controls2 === void 0 ? void 0 : (_mainLocus$controls2$ = _mainLocus$controls2.breakout) === null || _mainLocus$controls2$ === void 0 ? void 0 : _mainLocus$controls2$.url) === ((_breakoutLocus$contro = breakoutLocus.controls) === null || _breakoutLocus$contro === void 0 ? void 0 : (_breakoutLocus$contro2 = _breakoutLocus$contro.breakout) === null || _breakoutLocus$contro2 === void 0 ? void 0 : _breakoutLocus$contro2.url)) {
|
|
371
|
+
return true;
|
|
372
|
+
}
|
|
373
|
+
var deviceUrl = breakoutLocus === null || breakoutLocus === void 0 ? void 0 : (_breakoutLocus$self = breakoutLocus.self) === null || _breakoutLocus$self === void 0 ? void 0 : _breakoutLocus$self.deviceUrl;
|
|
374
|
+
var replaceInfo = (_MeetingsUtil$getThis = MeetingsUtil.getThisDevice(breakoutLocus, deviceUrl)) === null || _MeetingsUtil$getThis === void 0 ? void 0 : (_MeetingsUtil$getThis2 = _MeetingsUtil$getThis.replaces) === null || _MeetingsUtil$getThis2 === void 0 ? void 0 : _MeetingsUtil$getThis2[0];
|
|
375
|
+
if (replaceInfo !== null && replaceInfo !== void 0 && replaceInfo.locusUrl && replaceInfo.locusUrl === mainLocus.url) {
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
return false;
|
|
379
|
+
};
|
|
318
380
|
var _default = exports.default = MeetingsUtil;
|
|
319
381
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","require","_loggerProxy","_interopRequireDefault","_triggerProxy","_constants2","_metrics","_meetings","MeetingsUtil","getMeetingAddedType","type","DESTINATION_TYPE","LOCUS_ID","_INCOMING_","_CREATED_","handleRoapMercury","envelope","meetingCollection","data","eventType","LOCUSEVENT","MESSAGE_ROAP","meeting","getByKey","MEETING_KEY","CORRELATION_ID","correlationId","_data$message","message","seq","messageType","tieBreaker","errorType","errorCause","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ROAP_MERCURY_EVENT_RECEIVED","correlation_id","message_type","error_type","error_cause","ROAP","ROAP_TYPES","TURN_DISCOVERY_RESPONSE","roap","turnDiscovery","handleTurnDiscoveryResponse","_data$message$sdps","roapMessage","sdp","sdps","length","undefined","roapMessageReceived","getMediaServer","mediaServer","split","find","line","startsWith","shift","replace","toLowerCase","_unused","getMediaServerIp","mediaServerIp","_sdp$split$find$match","match","trim","_unused2","getCorrelationIdForDevice","deviceUrl","locusSelf","devices","foundDevice","device","url","parseDefaultSiteFromMeetingPreferences","userPreferences","_userPreferences$site","result","sites","defaultSite","site","default","siteUrl","hasH264Codec","_asyncToGenerator2","_regenerator","mark","_callee","hasCodec","pc","offer","_t","wrap","_context","prev","next","window","RTCPeerConnection","createOffer","offerToReceiveVideo","sent","close","LoggerProxy","logger","warn","abrupt","stop","checkH264Support","_checkH264Support","_callee2","options","_this","_ref2","firstChecked","disableNotifications","delay","maxDuration","shouldTrigger","shouldStopChecking","_context2","_now","Trigger","trigger","file","function","EVENT_TRIGGERS","MEDIA_CODEC_LOADED","log","error","MEDIA_CODEC_MISSING","setTimeout","timestamp","call","_x","apply","arguments","getThisDevice","newLocus","_newLocus$self","_newLocus$self$device","self","joinedOnThisDevice","thisDevice","state","_JOINED_","_LEFT_","reason","_MOVED_","isBreakoutLocusDTO","_newLocus$controls","_newLocus$controls$br","controls","breakout","sessionType","BREAKOUTS","SESSION_TYPES","BREAKOUT","isValidBreakoutLocus","locus","_locus$fullState","_locus$self","inActiveStatus","fullState","LOCUS","STATE","INACTIVE","isLocusAsBreakout","selfJoined","_default","exports"],"sources":["util.ts"],"sourcesContent":["/* globals window */\n\nimport {\n _CREATED_,\n _INCOMING_,\n _JOINED_,\n _LEFT_,\n DESTINATION_TYPE,\n _MOVED_,\n BREAKOUTS,\n EVENT_TRIGGERS,\n LOCUS,\n LOCUSEVENT,\n ROAP,\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport Metrics from '../metrics';\nimport {MEETING_KEY} from './meetings.types';\n\n/**\n * Meetings Media Codec Missing Event\n * Emitted when H.264 codec is not\n * found in the browser.\n * @event media:codec:missing\n * @instance\n * @memberof MeetingsUtil\n */\n\n/**\n * Meetings Media Codec Loaded Event\n * Emitted when H.264 codec has been\n * loaded in the browser.\n * @event media:codec:loaded\n * @instance\n * @memberof MeetingsUtil\n */\n\nconst MeetingsUtil: any = {};\n\nMeetingsUtil.getMeetingAddedType = (type: DESTINATION_TYPE) =>\n type === DESTINATION_TYPE.LOCUS_ID ? _INCOMING_ : _CREATED_;\n\nMeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {\n const {data} = envelope;\n const {eventType} = data;\n\n if (eventType === LOCUSEVENT.MESSAGE_ROAP) {\n const meeting = meetingCollection.getByKey(MEETING_KEY.CORRELATION_ID, data.correlationId);\n\n if (meeting) {\n const {seq, messageType, tieBreaker, errorType, errorCause} = data.message;\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_MERCURY_EVENT_RECEIVED, {\n correlation_id: data.correlationId,\n seq,\n message_type: messageType,\n error_type: errorType,\n error_cause: errorCause,\n });\n\n if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {\n // turn discovery is not part of normal roap protocol and so we are not handling it\n // through the usual roap state machine\n meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message, 'from mercury');\n } else {\n const roapMessage = {\n seq,\n messageType,\n sdp: data.message.sdps?.length > 0 ? data.message.sdps[0] : undefined,\n tieBreaker,\n errorType,\n errorCause,\n };\n\n meeting.roapMessageReceived(roapMessage);\n }\n }\n }\n};\n\nMeetingsUtil.getMediaServer = (sdp) => {\n let mediaServer;\n\n // Attempt to collect the media server from the roap message.\n try {\n mediaServer = sdp\n .split('\\r\\n')\n .find((line) => line.startsWith('o='))\n .split(' ')\n .shift()\n .replace('o=', '')\n .toLowerCase();\n } catch {\n mediaServer = undefined;\n }\n\n return mediaServer;\n};\n\nMeetingsUtil.getMediaServerIp = (sdp) => {\n let mediaServerIp;\n\n // Attempt to collect the media server from the roap message.\n try {\n mediaServerIp = sdp\n .split('\\r\\n')\n .find((line) => line.startsWith('o='))\n .match(/o=\\S+ \\d+ \\d+ IN IP4 ([\\d.]+)/)?.[1]\n .toLowerCase()\n .trim();\n } catch {\n mediaServerIp = undefined;\n }\n\n return mediaServerIp;\n};\n\n/**\n * Finds correlationId of a device from locus self devices array\n * that matches the given deviceUrl\n * @param {string} deviceUrl\n * @param {object} locusSelf\n * @returns {string|false} correlationId or false if not found\n */\nMeetingsUtil.getCorrelationIdForDevice = (deviceUrl: string, locusSelf: any) => {\n if (locusSelf?.devices) {\n const foundDevice = locusSelf?.devices.find((device) => device.url === deviceUrl);\n\n if (foundDevice && foundDevice.correlationId) {\n return foundDevice.correlationId;\n }\n }\n\n return false;\n};\n\nMeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {\n let result = '';\n\n if (userPreferences?.sites?.length) {\n const defaultSite = userPreferences.sites.find((site) => site.default);\n\n if (defaultSite) {\n result = defaultSite.siteUrl;\n } else {\n result = userPreferences.sites[0].siteUrl;\n }\n }\n\n return result;\n};\n\n/**\n * Will check to see if the H.264 media codec is supported.\n * @async\n * @private\n * @returns {Promise<boolean>}\n */\nMeetingsUtil.hasH264Codec = async () => {\n let hasCodec = false;\n\n try {\n const pc = new window.RTCPeerConnection();\n const offer = await pc.createOffer({offerToReceiveVideo: true});\n\n if (offer.sdp.match(/^a=rtpmap:\\d+\\s+H264\\/\\d+/m)) {\n hasCodec = true;\n }\n pc.close();\n } catch (error) {\n LoggerProxy.logger.warn(\n 'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'\n );\n }\n\n return hasCodec;\n};\n\n/**\n * Notifies the user whether or not the H.264\n * codec is present. Will continuously check\n * until max duration.\n * @async\n * @private\n * @param {object} options\n * @param {Number} options.firstChecked Timestamp in milliseconds\n * @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events\n * @returns {undefined}\n */\nMeetingsUtil.checkH264Support = async function checkH264Support(options: {\n firstChecked: number;\n disableNotifications: boolean;\n}) {\n const {hasH264Codec} = MeetingsUtil;\n const {firstChecked, disableNotifications} = options || {};\n const delay = 5e3; // ms\n const maxDuration = 3e5; // ms\n const shouldTrigger = firstChecked === undefined;\n const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;\n\n // Disable notifications and start H.264 download only\n if (disableNotifications) {\n hasH264Codec();\n\n return;\n }\n\n // Codec loaded trigger event notification\n if (await hasH264Codec()) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_LOADED\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');\n\n return;\n }\n\n // Stop checking if past the timelimit\n if (shouldStopChecking) {\n LoggerProxy.logger.error(\n 'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'\n );\n\n return;\n }\n\n // Trigger only once\n if (shouldTrigger) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_MISSING\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');\n }\n\n // Keep checking in intervals to see if codec loaded\n window.setTimeout(() => {\n const timestamp = firstChecked || Date.now();\n\n MeetingsUtil.checkH264Support.call(this, {firstChecked: timestamp});\n }, delay);\n};\n\n/**\n * get device from locus data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.getThisDevice = (newLocus: any, deviceUrl: string) => {\n if (newLocus?.self?.devices?.length > 0) {\n return newLocus.self.devices.find((device) => device.url === deviceUrl);\n }\n\n return null;\n};\n\n/**\n * get self device joined status from locus data\n * @param {Object} meeting current meeting data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.joinedOnThisDevice = (meeting: any, newLocus: any, deviceUrl: string) => {\n const thisDevice = MeetingsUtil.getThisDevice(newLocus, deviceUrl);\n if (thisDevice) {\n if (!thisDevice.correlationId || meeting?.correlationId === thisDevice.correlationId) {\n return (\n thisDevice.state === _JOINED_ ||\n (thisDevice.state === _LEFT_ && thisDevice.reason === _MOVED_)\n );\n }\n }\n\n return false;\n};\n\n/**\n * check the new locus is breakout session's one or not\n * @param {Object} newLocus new locus data\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isBreakoutLocusDTO = (newLocus: any) => {\n return newLocus?.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;\n};\n\n/**\n * check the locus is valid breakout locus or not\n * @param {Object} locus\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isValidBreakoutLocus = (locus: any) => {\n const inActiveStatus = locus?.fullState?.state === LOCUS.STATE.INACTIVE;\n const isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);\n const selfJoined = locus.self?.state === _JOINED_;\n\n return isLocusAsBreakout && !inActiveStatus && selfJoined;\n};\nexport default MeetingsUtil;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_constants","require","_loggerProxy","_interopRequireDefault","_triggerProxy","_constants2","_metrics","_meetings","_types","MeetingsUtil","getMeetingAddedType","type","DESTINATION_TYPE","LOCUS_ID","_INCOMING_","_CREATED_","handleRoapMercury","envelope","meetingCollection","data","eventType","LOCUSEVENT","MESSAGE_ROAP","meeting","getByKey","MEETING_KEY","CORRELATION_ID","correlationId","_data$message","message","seq","messageType","tieBreaker","errorType","errorCause","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ROAP_MERCURY_EVENT_RECEIVED","correlation_id","message_type","error_type","error_cause","ROAP","ROAP_TYPES","TURN_DISCOVERY_RESPONSE","roap","turnDiscovery","handleTurnDiscoveryResponse","_data$message$sdps","roapMessage","sdp","sdps","length","undefined","roapMessageReceived","getMediaServer","mediaServer","split","find","line","startsWith","shift","replace","toLowerCase","_unused","getMediaServerIp","mediaServerIp","_sdp$split$find$match","match","trim","_unused2","getCorrelationIdForDevice","deviceUrl","locusSelf","devices","foundDevice","device","url","parseDefaultSiteFromMeetingPreferences","userPreferences","_userPreferences$site","result","sites","defaultSite","site","default","siteUrl","getSiteName","multipartSitePrefixList","arguments","siteName","forEach","multipartSitePrefix","includes","secondDot","indexOf","substring","hasH264Codec","_asyncToGenerator2","_regenerator","mark","_callee","hasCodec","pc","offer","_t","wrap","_context","prev","next","window","RTCPeerConnection","createOffer","offerToReceiveVideo","sent","close","LoggerProxy","logger","warn","abrupt","stop","checkH264Support","_checkH264Support","_callee2","options","_this","_ref2","firstChecked","disableNotifications","delay","maxDuration","shouldTrigger","shouldStopChecking","_context2","_now","Trigger","trigger","file","function","EVENT_TRIGGERS","MEDIA_CODEC_LOADED","log","error","MEDIA_CODEC_MISSING","setTimeout","timestamp","call","_x","apply","getThisDevice","newLocus","_newLocus$self","_newLocus$self$device","self","isWholeMeetingEnded","fullState","state","LOCUS","STATE","INACTIVE","endMeetingReason","EndMeetingReason","breakoutEnded","isSelfMovedOrBreakoutEnded","locus","_locus$self","_locus$self2","_locus$fullState","_locus$fullState2","isSelfLeftMoved","_LEFT_","reason","_MOVED_","isBreakoutEnded","joinedOnThisDevice","thisDevice","_JOINED_","isBreakoutLocusDTO","_newLocus$controls","_newLocus$controls$br","_newLocus$info","controls","breakout","sessionType","BREAKOUTS","SESSION_TYPES","BREAKOUT","info","isBreakout","isValidBreakoutLocus","_locus$fullState3","_locus$self3","inActiveStatus","isLocusAsBreakout","selfJoined","isMainAssociatedWithBreakout","mainLocus","breakoutLocus","_mainLocus$controls","_mainLocus$controls$b","_mainLocus$controls2","_mainLocus$controls2$","_breakoutLocus$contro","_breakoutLocus$contro2","_breakoutLocus$self","_MeetingsUtil$getThis","_MeetingsUtil$getThis2","replaceInfo","replaces","locusUrl","_default","exports"],"sources":["util.ts"],"sourcesContent":["/* globals window */\n\nimport {\n _CREATED_,\n _INCOMING_,\n _JOINED_,\n _LEFT_,\n DESTINATION_TYPE,\n _MOVED_,\n BREAKOUTS,\n EVENT_TRIGGERS,\n LOCUS,\n LOCUSEVENT,\n ROAP,\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport Metrics from '../metrics';\nimport {MEETING_KEY} from './meetings.types';\nimport {EndMeetingReason, LocusFullState} from '../locus-info/types';\n\n/**\n * Meetings Media Codec Missing Event\n * Emitted when H.264 codec is not\n * found in the browser.\n * @event media:codec:missing\n * @instance\n * @memberof MeetingsUtil\n */\n\n/**\n * Meetings Media Codec Loaded Event\n * Emitted when H.264 codec has been\n * loaded in the browser.\n * @event media:codec:loaded\n * @instance\n * @memberof MeetingsUtil\n */\n\nconst MeetingsUtil: any = {};\n\nMeetingsUtil.getMeetingAddedType = (type: DESTINATION_TYPE) =>\n type === DESTINATION_TYPE.LOCUS_ID ? _INCOMING_ : _CREATED_;\n\nMeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {\n const {data} = envelope;\n const {eventType} = data;\n\n if (eventType === LOCUSEVENT.MESSAGE_ROAP) {\n const meeting = meetingCollection.getByKey(MEETING_KEY.CORRELATION_ID, data.correlationId);\n\n if (meeting) {\n const {seq, messageType, tieBreaker, errorType, errorCause} = data.message;\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_MERCURY_EVENT_RECEIVED, {\n correlation_id: data.correlationId,\n seq,\n message_type: messageType,\n error_type: errorType,\n error_cause: errorCause,\n });\n\n if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {\n // turn discovery is not part of normal roap protocol and so we are not handling it\n // through the usual roap state machine\n meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message, 'from mercury');\n } else {\n const roapMessage = {\n seq,\n messageType,\n sdp: data.message.sdps?.length > 0 ? data.message.sdps[0] : undefined,\n tieBreaker,\n errorType,\n errorCause,\n };\n\n meeting.roapMessageReceived(roapMessage);\n }\n }\n }\n};\n\nMeetingsUtil.getMediaServer = (sdp) => {\n let mediaServer;\n\n // Attempt to collect the media server from the roap message.\n try {\n mediaServer = sdp\n .split('\\r\\n')\n .find((line) => line.startsWith('o='))\n .split(' ')\n .shift()\n .replace('o=', '')\n .toLowerCase();\n } catch {\n mediaServer = undefined;\n }\n\n return mediaServer;\n};\n\nMeetingsUtil.getMediaServerIp = (sdp) => {\n let mediaServerIp;\n\n // Attempt to collect the media server from the roap message.\n try {\n mediaServerIp = sdp\n .split('\\r\\n')\n .find((line) => line.startsWith('o='))\n .match(/o=\\S+ \\d+ \\d+ IN IP4 ([\\d.]+)/)?.[1]\n .toLowerCase()\n .trim();\n } catch {\n mediaServerIp = undefined;\n }\n\n return mediaServerIp;\n};\n\n/**\n * Finds correlationId of a device from locus self devices array\n * that matches the given deviceUrl\n * @param {string} deviceUrl\n * @param {object} locusSelf\n * @returns {string|false} correlationId or false if not found\n */\nMeetingsUtil.getCorrelationIdForDevice = (deviceUrl: string, locusSelf: any) => {\n if (locusSelf?.devices) {\n const foundDevice = locusSelf?.devices.find((device) => device.url === deviceUrl);\n\n if (foundDevice && foundDevice.correlationId) {\n return foundDevice.correlationId;\n }\n }\n\n return false;\n};\n\nMeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {\n let result = '';\n\n if (userPreferences?.sites?.length) {\n const defaultSite = userPreferences.sites.find((site) => site.default);\n\n if (defaultSite) {\n result = defaultSite.siteUrl;\n } else {\n result = userPreferences.sites[0].siteUrl;\n }\n }\n\n return result;\n};\n\nMeetingsUtil.getSiteName = (site: string, multipartSitePrefixList: string[] = []) => {\n if (!site) {\n return null;\n }\n\n let siteName: string | undefined;\n\n multipartSitePrefixList.forEach((multipartSitePrefix) => {\n if (!siteName && site.includes(multipartSitePrefix)) {\n const secondDot = site.indexOf('.', site.indexOf('.') + 1);\n\n siteName = site.substring(0, secondDot);\n }\n });\n\n if (siteName) {\n return siteName;\n }\n\n siteName = site.substring(0, site.indexOf('.'));\n\n return siteName;\n};\n\n/**\n * Will check to see if the H.264 media codec is supported.\n * @async\n * @private\n * @returns {Promise<boolean>}\n */\nMeetingsUtil.hasH264Codec = async () => {\n let hasCodec = false;\n\n try {\n const pc = new window.RTCPeerConnection();\n const offer = await pc.createOffer({offerToReceiveVideo: true});\n\n if (offer.sdp.match(/^a=rtpmap:\\d+\\s+H264\\/\\d+/m)) {\n hasCodec = true;\n }\n pc.close();\n } catch (error) {\n LoggerProxy.logger.warn(\n 'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'\n );\n }\n\n return hasCodec;\n};\n\n/**\n * Notifies the user whether or not the H.264\n * codec is present. Will continuously check\n * until max duration.\n * @async\n * @private\n * @param {object} options\n * @param {Number} options.firstChecked Timestamp in milliseconds\n * @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events\n * @returns {undefined}\n */\nMeetingsUtil.checkH264Support = async function checkH264Support(options: {\n firstChecked: number;\n disableNotifications: boolean;\n}) {\n const {hasH264Codec} = MeetingsUtil;\n const {firstChecked, disableNotifications} = options || {};\n const delay = 5e3; // ms\n const maxDuration = 3e5; // ms\n const shouldTrigger = firstChecked === undefined;\n const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;\n\n // Disable notifications and start H.264 download only\n if (disableNotifications) {\n hasH264Codec();\n\n return;\n }\n\n // Codec loaded trigger event notification\n if (await hasH264Codec()) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_LOADED\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');\n\n return;\n }\n\n // Stop checking if past the timelimit\n if (shouldStopChecking) {\n LoggerProxy.logger.error(\n 'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'\n );\n\n return;\n }\n\n // Trigger only once\n if (shouldTrigger) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_MISSING\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');\n }\n\n // Keep checking in intervals to see if codec loaded\n window.setTimeout(() => {\n const timestamp = firstChecked || Date.now();\n\n MeetingsUtil.checkH264Support.call(this, {firstChecked: timestamp});\n }, delay);\n};\n\n/**\n * get device from locus data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.getThisDevice = (newLocus: any, deviceUrl: string) => {\n if (newLocus?.self?.devices?.length > 0) {\n return newLocus.self.devices.find((device) => device.url === deviceUrl);\n }\n\n return null;\n};\n\n/**\n * Checks if the fullState indicates the meeting has fully ended (not just a breakout move).\n * @param {Object} fullState locus fullState data\n * @returns {boolean}\n */\nMeetingsUtil.isWholeMeetingEnded = (fullState: LocusFullState): boolean => {\n return (\n fullState.state === LOCUS.STATE.INACTIVE &&\n fullState.endMeetingReason !== EndMeetingReason.breakoutEnded\n );\n};\n\n/**\n * Checks if the self state in a locus indicates a breakout move or breakout end.\n * Returns true when:\n * - self state is LEFT with reason MOVED (regular breakout move), OR\n * - fullState is INACTIVE with endMeetingReason BREAKOUT_ENDED (breakout session ended)\n * @param {Object} locus locus data\n * @returns {boolean}\n */\nMeetingsUtil.isSelfMovedOrBreakoutEnded = (locus: any): boolean => {\n const isSelfLeftMoved = locus?.self?.state === _LEFT_ && locus?.self?.reason === _MOVED_;\n const isBreakoutEnded =\n locus?.fullState?.state === LOCUS.STATE.INACTIVE &&\n locus?.fullState?.endMeetingReason === EndMeetingReason.breakoutEnded;\n\n return isSelfLeftMoved || isBreakoutEnded;\n};\n\n/**\n * get self device joined status from locus data\n * @param {Object} meeting current meeting data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.joinedOnThisDevice = (meeting: any, newLocus: any, deviceUrl: string) => {\n const thisDevice = MeetingsUtil.getThisDevice(newLocus, deviceUrl);\n if (thisDevice) {\n if (!thisDevice.correlationId || meeting?.correlationId === thisDevice.correlationId) {\n return (\n thisDevice.state === _JOINED_ ||\n (thisDevice.state === _LEFT_ && thisDevice.reason === _MOVED_)\n );\n }\n }\n\n return false;\n};\n\n/**\n * check the new locus is breakout session's one or not\n * @param {Object} newLocus new locus data\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isBreakoutLocusDTO = (newLocus: any) => {\n return (\n newLocus?.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT ||\n !!newLocus?.info?.isBreakout\n );\n};\n\n/**\n * check the locus is valid breakout locus or not\n * @param {Object} locus\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isValidBreakoutLocus = (locus: any) => {\n const inActiveStatus = locus?.fullState?.state === LOCUS.STATE.INACTIVE;\n const isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);\n const selfJoined = locus.self?.state === _JOINED_;\n\n return isLocusAsBreakout && !inActiveStatus && selfJoined;\n};\n/**\n * check if the breakout locus is associated with the main locus by comparing the breakout control url or the replaces info in self device\n * @param {Object} mainLocus main locus data\n * @param {Object} breakoutLocus breakout locus data\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isMainAssociatedWithBreakout = (mainLocus: any, breakoutLocus: any) => {\n if (\n mainLocus.controls?.breakout?.url &&\n mainLocus.controls?.breakout?.url === breakoutLocus.controls?.breakout?.url\n ) {\n return true;\n }\n const deviceUrl = breakoutLocus?.self?.deviceUrl;\n const replaceInfo = MeetingsUtil.getThisDevice(breakoutLocus, deviceUrl)?.replaces?.[0];\n if (replaceInfo?.locusUrl && replaceInfo.locusUrl === mainLocus.url) {\n return true;\n }\n\n return false;\n};\nexport default MeetingsUtil;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/member/index.js
CHANGED
|
@@ -50,6 +50,7 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
|
50
50
|
(0, _defineProperty2.default)(this, "isModerator", void 0);
|
|
51
51
|
(0, _defineProperty2.default)(this, "isModeratorAssignmentProhibited", void 0);
|
|
52
52
|
(0, _defineProperty2.default)(this, "isPresenterAssignmentProhibited", void 0);
|
|
53
|
+
(0, _defineProperty2.default)(this, "isAttendeeAssignmentProhibited", void 0);
|
|
53
54
|
(0, _defineProperty2.default)(this, "isMutable", void 0);
|
|
54
55
|
(0, _defineProperty2.default)(this, "isNotAdmitted", void 0);
|
|
55
56
|
(0, _defineProperty2.default)(this, "isRecording", void 0);
|
|
@@ -291,6 +292,14 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
|
291
292
|
*/
|
|
292
293
|
this.isPresenterAssignmentProhibited = null;
|
|
293
294
|
|
|
295
|
+
/**
|
|
296
|
+
* @instance
|
|
297
|
+
* @type {Boolean}
|
|
298
|
+
* @public
|
|
299
|
+
* @memberof Member
|
|
300
|
+
*/
|
|
301
|
+
this.isAttendeeAssignmentProhibited = null;
|
|
302
|
+
|
|
294
303
|
/**
|
|
295
304
|
* @instance
|
|
296
305
|
* @type {Boolean}
|
|
@@ -366,6 +375,7 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
|
366
375
|
this.isModerator = _util.default.isModerator(participant);
|
|
367
376
|
this.isModeratorAssignmentProhibited = _util.default.isModeratorAssignmentProhibited(participant);
|
|
368
377
|
this.isPresenterAssignmentProhibited = _util.default.isPresenterAssignmentProhibited(participant);
|
|
378
|
+
this.isAttendeeAssignmentProhibited = _util.default.isAttendeeAssignmentProhibited(participant);
|
|
369
379
|
this.canApproveAIEnablement = _util.default.canApproveAIEnablement(participant);
|
|
370
380
|
this.processStatus(participant);
|
|
371
381
|
this.processRoles(participant);
|
package/dist/member/index.js.map
CHANGED
|
@@ -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","supportsSingleUserAutoEndMeeting","supportLiveAnnotation","isSelf","isHost","isGuest","isInLobby","isInMeeting","isNotAdmitted","isContentSharing","status","isDevice","isUser","associatedUser","associatedUsers","_set","isRecording","isMutable","isRemovable","isBrb","type","isModerator","isModeratorAssignmentProhibited","isPresenterAssignmentProhibited","canApproveAIEnablement","isPairedWithSelf","roles","pairedWith","participantUrl","memberId","mediaStatus","audio","video","processParticipant","processParticipantOptions","processMember","_createClass2","key","value","processPairedDevice","MemberUtil","extractId","extractName","isBreakoutsSupported","isSupportsSingleUserAutoEndMeeting","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 canApproveAIEnablement: boolean;\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 supportsSingleUserAutoEndMeeting: 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.supportsSingleUserAutoEndMeeting = 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.canApproveAIEnablement = 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.supportsSingleUserAutoEndMeeting =\n MemberUtil.isSupportsSingleUserAutoEndMeeting(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.canApproveAIEnablement = MemberUtil.canApproveAIEnablement(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":"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A;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,CAAA9B,OAAA,CAAkB,CAAC;IAC1C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAAC+B,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,sBAAsB,GAAG,IAAI;;IAElC;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,EAAEtC,SAA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","ignoreList":[]}
|
|
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","supportsSingleUserAutoEndMeeting","supportLiveAnnotation","isSelf","isHost","isGuest","isInLobby","isInMeeting","isNotAdmitted","isContentSharing","status","isDevice","isUser","associatedUser","associatedUsers","_set","isRecording","isMutable","isRemovable","isBrb","type","isModerator","isModeratorAssignmentProhibited","isPresenterAssignmentProhibited","isAttendeeAssignmentProhibited","canApproveAIEnablement","isPairedWithSelf","roles","pairedWith","participantUrl","memberId","mediaStatus","audio","video","processParticipant","processParticipantOptions","processMember","_createClass2","key","value","processPairedDevice","MemberUtil","extractId","extractName","isBreakoutsSupported","isSupportsSingleUserAutoEndMeeting","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 canApproveAIEnablement: boolean;\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 isAttendeeAssignmentProhibited: 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 supportsSingleUserAutoEndMeeting: 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.supportsSingleUserAutoEndMeeting = 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.isAttendeeAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.canApproveAIEnablement = 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.supportsSingleUserAutoEndMeeting =\n MemberUtil.isSupportsSingleUserAutoEndMeeting(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.isAttendeeAssignmentProhibited = MemberUtil.isAttendeeAssignmentProhibited(participant);\n this.canApproveAIEnablement = MemberUtil.canApproveAIEnablement(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":"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ACvB;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,CAAA9B,OAAA,CAAkB,CAAC;IAC1C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAAC+B,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,8BAA8B,GAAG,IAAI;;IAE1C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,sBAAsB,GAAG,IAAI;;IAElC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,KAAK;;IAE7B;AACJ;AACA;AA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","ignoreList":[]}
|
package/dist/member/types.js.map
CHANGED
|
@@ -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 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;EACE;EADbA,WAAW;EAEE;EAFbA,WAAW;EAGE;EAHbA,WAAW;EAIE;EAJbA,WAAW,yBAKA;EAAA,OALXA,WAAW;AAAA,OAyCvB;AAgBA;AAgBA","ignoreList":[]}
|
|
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 attendeeAssignmentNotAllowed?: 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;EACE;EADbA,WAAW;EAEE;EAFbA,WAAW;EAGE;EAHbA,WAAW;EAIE;EAJbA,WAAW,yBAKA;EAAA,OALXA,WAAW;AAAA,OAyCvB;AAgBA;AAgBA","ignoreList":[]}
|
package/dist/member/util.js
CHANGED
|
@@ -122,6 +122,9 @@ var MemberUtil = {
|
|
|
122
122
|
isPresenterAssignmentProhibited: function isPresenterAssignmentProhibited(participant) {
|
|
123
123
|
return participant && participant.presenterAssignmentNotAllowed;
|
|
124
124
|
},
|
|
125
|
+
isAttendeeAssignmentProhibited: function isAttendeeAssignmentProhibited(participant) {
|
|
126
|
+
return !!(participant && participant.attendeeAssignmentNotAllowed);
|
|
127
|
+
},
|
|
125
128
|
/**
|
|
126
129
|
* checks to see if the participant id is the same as the passed id
|
|
127
130
|
* there are multiple ids that can be used
|