@webex/plugin-meetings 3.0.0-beta.80 → 3.0.0-beta.82
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/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +7 -1
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +11 -2
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +42 -11
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +240 -29
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/media/index.js +5 -3
- package/dist/media/index.js.map +1 -1
- package/dist/meeting/index.js +8 -4
- package/dist/meeting/index.js.map +1 -1
- package/dist/types/constants.d.ts +5 -0
- package/dist/types/controls-options-manager/enums.d.ts +7 -0
- package/dist/types/controls-options-manager/index.d.ts +8 -0
- package/dist/types/controls-options-manager/types.d.ts +37 -0
- package/dist/types/controls-options-manager/util.d.ts +103 -9
- package/dist/types/media/index.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +3 -1
- package/package.json +18 -18
- package/src/constants.ts +7 -0
- package/src/controls-options-manager/enums.ts +9 -0
- package/src/controls-options-manager/index.ts +36 -1
- package/src/controls-options-manager/types.ts +49 -0
- package/src/controls-options-manager/util.ts +221 -22
- package/src/media/index.ts +15 -1
- package/src/meeting/index.ts +7 -3
- package/test/unit/spec/controls-options-manager/index.js +76 -0
- package/test/unit/spec/controls-options-manager/util.js +317 -0
- package/test/unit/spec/media/index.ts +4 -0
- package/test/unit/spec/meeting/index.js +42 -0
|
@@ -11,9 +11,9 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
11
11
|
value: true
|
|
12
12
|
});
|
|
13
13
|
exports.default = void 0;
|
|
14
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
14
15
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
15
16
|
var _entries = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/entries"));
|
|
16
|
-
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
17
17
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
18
18
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
19
19
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
@@ -23,7 +23,7 @@ var _camelCase2 = _interopRequireDefault(require("lodash/camelCase"));
|
|
|
23
23
|
var _permission = _interopRequireDefault(require("../common/errors/permission"));
|
|
24
24
|
var _constants = require("../constants");
|
|
25
25
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
26
|
-
var _enums =
|
|
26
|
+
var _enums = require("./enums");
|
|
27
27
|
var _util = _interopRequireDefault(require("./util"));
|
|
28
28
|
var _constants2 = require("./constants");
|
|
29
29
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -162,6 +162,37 @@ var ControlsOptionsManager = /*#__PURE__*/function () {
|
|
|
162
162
|
this.setLocusUrl(options === null || options === void 0 ? void 0 : options.locusUrl);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Set controls for this meeting.
|
|
167
|
+
*
|
|
168
|
+
* @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs
|
|
169
|
+
* @returns {Promise<Array<any>>}- Promise resolving if the request was successful.
|
|
170
|
+
*/
|
|
171
|
+
}, {
|
|
172
|
+
key: "update",
|
|
173
|
+
value: function update() {
|
|
174
|
+
var _this = this;
|
|
175
|
+
for (var _len = arguments.length, controls = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
176
|
+
controls[_key] = arguments[_key];
|
|
177
|
+
}
|
|
178
|
+
var payload = controls.reduce(function (output, control) {
|
|
179
|
+
if (!(0, _keys.default)(_enums.Control).includes(control.scope)) {
|
|
180
|
+
throw new Error("updating meeting control scope \"".concat(control.scope, "\" is not a supported scope"));
|
|
181
|
+
}
|
|
182
|
+
if (!_util.default.canUpdate(control, _this.displayHints)) {
|
|
183
|
+
throw new _permission.default("updating meeting control scope \"".concat(control.scope, "\" not allowed, due to moderator property."));
|
|
184
|
+
}
|
|
185
|
+
return _objectSpread(_objectSpread({}, output), {}, (0, _defineProperty2.default)({}, control.scope, control.properties));
|
|
186
|
+
}, {});
|
|
187
|
+
|
|
188
|
+
// @ts-ignore
|
|
189
|
+
return this.request.request({
|
|
190
|
+
uri: "".concat(this.locusUrl, "/").concat(_constants.CONTROLS),
|
|
191
|
+
body: payload,
|
|
192
|
+
method: _constants.HTTP_VERBS.PATCH
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
165
196
|
/**
|
|
166
197
|
* @param {Setting} setting
|
|
167
198
|
* @private
|
|
@@ -171,7 +202,7 @@ var ControlsOptionsManager = /*#__PURE__*/function () {
|
|
|
171
202
|
}, {
|
|
172
203
|
key: "setControls",
|
|
173
204
|
value: function setControls(setting) {
|
|
174
|
-
var
|
|
205
|
+
var _this2 = this;
|
|
175
206
|
_loggerProxy.default.logger.log("ControlsOptionsManager:index#setControls --> ".concat((0, _stringify.default)(setting)));
|
|
176
207
|
var body = {};
|
|
177
208
|
var error;
|
|
@@ -180,20 +211,20 @@ var ControlsOptionsManager = /*#__PURE__*/function () {
|
|
|
180
211
|
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
181
212
|
key = _ref2[0],
|
|
182
213
|
value = _ref2[1];
|
|
183
|
-
if (!shouldSkipCheckToMergeBody && !(_util.default !== null && _util.default !== void 0 && _util.default["".concat(value ? _constants2.CAN_SET : _constants2.CAN_UNSET).concat(key)](
|
|
214
|
+
if (!shouldSkipCheckToMergeBody && !(_util.default !== null && _util.default !== void 0 && _util.default["".concat(value ? _constants2.CAN_SET : _constants2.CAN_UNSET).concat(key)](_this2.displayHints))) {
|
|
184
215
|
error = new _permission.default("".concat(key, " [").concat(value, "] not allowed, due to moderator property."));
|
|
185
216
|
}
|
|
186
217
|
if (error) {
|
|
187
218
|
return;
|
|
188
219
|
}
|
|
189
220
|
switch (key) {
|
|
190
|
-
case _enums.
|
|
221
|
+
case _enums.Setting.muted:
|
|
191
222
|
shouldSkipCheckToMergeBody = true;
|
|
192
223
|
body.audio = body.audio ? _objectSpread(_objectSpread({}, body.audio), {}, (0, _defineProperty2.default)({}, (0, _camelCase2.default)(key), value)) : (0, _defineProperty2.default)({}, (0, _camelCase2.default)(key), value);
|
|
193
224
|
break;
|
|
194
|
-
case _enums.
|
|
195
|
-
case _enums.
|
|
196
|
-
if ((0, _keys.default)(setting).includes(_enums.
|
|
225
|
+
case _enums.Setting.disallowUnmute:
|
|
226
|
+
case _enums.Setting.muteOnEntry:
|
|
227
|
+
if ((0, _keys.default)(setting).includes(_enums.Setting.muted)) {
|
|
197
228
|
body.audio = body.audio ? _objectSpread(_objectSpread({}, body.audio), {}, (0, _defineProperty2.default)({}, (0, _camelCase2.default)(key), value)) : (0, _defineProperty2.default)({}, (0, _camelCase2.default)(key), value);
|
|
198
229
|
body.audio[(0, _camelCase2.default)(key)] = value;
|
|
199
230
|
} else {
|
|
@@ -225,7 +256,7 @@ var ControlsOptionsManager = /*#__PURE__*/function () {
|
|
|
225
256
|
}, {
|
|
226
257
|
key: "setMuteOnEntry",
|
|
227
258
|
value: function setMuteOnEntry(enabled) {
|
|
228
|
-
return this.setControls((0, _defineProperty2.default)({}, _enums.
|
|
259
|
+
return this.setControls((0, _defineProperty2.default)({}, _enums.Setting.muteOnEntry, enabled));
|
|
229
260
|
}
|
|
230
261
|
|
|
231
262
|
/**
|
|
@@ -237,7 +268,7 @@ var ControlsOptionsManager = /*#__PURE__*/function () {
|
|
|
237
268
|
}, {
|
|
238
269
|
key: "setDisallowUnmute",
|
|
239
270
|
value: function setDisallowUnmute(enabled) {
|
|
240
|
-
return this.setControls((0, _defineProperty2.default)({}, _enums.
|
|
271
|
+
return this.setControls((0, _defineProperty2.default)({}, _enums.Setting.disallowUnmute, enabled));
|
|
241
272
|
}
|
|
242
273
|
|
|
243
274
|
/**
|
|
@@ -252,7 +283,7 @@ var ControlsOptionsManager = /*#__PURE__*/function () {
|
|
|
252
283
|
key: "setMuteAll",
|
|
253
284
|
value: function setMuteAll(mutedEnabled, disallowUnmuteEnabled, muteOnEntryEnabled) {
|
|
254
285
|
var _this$setControls3;
|
|
255
|
-
return this.setControls((_this$setControls3 = {}, (0, _defineProperty2.default)(_this$setControls3, _enums.
|
|
286
|
+
return this.setControls((_this$setControls3 = {}, (0, _defineProperty2.default)(_this$setControls3, _enums.Setting.muted, mutedEnabled), (0, _defineProperty2.default)(_this$setControls3, _enums.Setting.disallowUnmute, disallowUnmuteEnabled), (0, _defineProperty2.default)(_this$setControls3, _enums.Setting.muteOnEntry, muteOnEntryEnabled), _this$setControls3));
|
|
256
287
|
}
|
|
257
288
|
}]);
|
|
258
289
|
return ControlsOptionsManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ControlsOptionsManager","request","options","initialize","set","extract","url","locusUrl","hints","displayHints","setDisplayHints","setLocusUrl","setting","LoggerProxy","logger","log","body","error","shouldSkipCheckToMergeBody","forEach","key","value","Util","CAN_SET","CAN_UNSET","PermissionError","Setting","muted","audio","disallowUnmute","muteOnEntry","includes","ENABLED","reject","uri","CONTROLS","method","HTTP_VERBS","PATCH","enabled","setControls","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport PermissionError from '../common/errors/permission';\nimport {CONTROLS, HTTP_VERBS} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Setting from './enums';\nimport Util from './util';\nimport {CAN_SET, CAN_UNSET, ENABLED} from './constants';\n\n/**\n * docs\n * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html\n * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351\n */\n\n/**\n * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class ControlsOptionsManager {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof ControlsOptionsManager\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof ControlsOptionsManager\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private locusUrl: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof ControlsOptionsManager\n */\n constructor(\n request: MeetingRequest,\n options?: {\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public set(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private extract(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * @param {Setting} setting\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {\n LoggerProxy.logger.log(\n `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`\n );\n\n const body: Record<string, any> = {};\n let error: PermissionError;\n\n let shouldSkipCheckToMergeBody = false;\n\n Object.entries(setting).forEach(([key, value]) => {\n if (\n !shouldSkipCheckToMergeBody &&\n !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)\n ) {\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n\n if (error) {\n return;\n }\n\n switch (key) {\n case Setting.muted:\n shouldSkipCheckToMergeBody = true;\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n break;\n\n case Setting.disallowUnmute:\n case Setting.muteOnEntry:\n if (Object.keys(setting).includes(Setting.muted)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n body.audio[camelCase(key)] = value;\n } else {\n body[camelCase(key)] = {[ENABLED]: value};\n }\n break;\n\n default:\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n });\n\n if (error) {\n return Promise.reject(error);\n }\n\n // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body,\n method: HTTP_VERBS.PATCH,\n });\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteOnEntry(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.muteOnEntry]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setDisallowUnmute(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.disallowUnmute]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} mutedEnabled\n * @param {boolean} disallowUnmuteEnabled\n * @param {boolean} muteOnEntryEnabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean\n ): Promise<any> {\n return this.setControls({\n [Setting.muted]: mutedEnabled,\n [Setting.disallowUnmute]: disallowUnmuteEnabled,\n [Setting.muteOnEntry]: muteOnEntryEnabled,\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["ControlsOptionsManager","request","options","initialize","set","extract","url","locusUrl","hints","displayHints","setDisplayHints","setLocusUrl","controls","payload","reduce","output","control","Control","includes","scope","Error","Util","canUpdate","PermissionError","properties","uri","CONTROLS","body","method","HTTP_VERBS","PATCH","setting","LoggerProxy","logger","log","error","shouldSkipCheckToMergeBody","forEach","key","value","CAN_SET","CAN_UNSET","Setting","muted","audio","disallowUnmute","muteOnEntry","ENABLED","reject","enabled","setControls","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport PermissionError from '../common/errors/permission';\nimport {CONTROLS, HTTP_VERBS} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {Control, Setting} from './enums';\nimport {ControlConfig} from './types';\nimport Util from './util';\nimport {CAN_SET, CAN_UNSET, ENABLED} from './constants';\n\n/**\n * docs\n * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html\n * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351\n */\n\n/**\n * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class ControlsOptionsManager {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof ControlsOptionsManager\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof ControlsOptionsManager\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private locusUrl: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof ControlsOptionsManager\n */\n constructor(\n request: MeetingRequest,\n options?: {\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public set(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private extract(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * Set controls for this meeting.\n *\n * @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs\n * @returns {Promise<Array<any>>}- Promise resolving if the request was successful.\n */\n protected update(...controls: Array<ControlConfig>) {\n const payload = controls.reduce((output, control) => {\n if (!Object.keys(Control).includes(control.scope)) {\n throw new Error(\n `updating meeting control scope \"${control.scope}\" is not a supported scope`\n );\n }\n\n if (!Util.canUpdate(control, this.displayHints)) {\n throw new PermissionError(\n `updating meeting control scope \"${control.scope}\" not allowed, due to moderator property.`\n );\n }\n\n return {\n ...output,\n [control.scope]: control.properties,\n };\n }, {});\n\n // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body: payload,\n method: HTTP_VERBS.PATCH,\n });\n }\n\n /**\n * @param {Setting} setting\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {\n LoggerProxy.logger.log(\n `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`\n );\n\n const body: Record<string, any> = {};\n let error: PermissionError;\n\n let shouldSkipCheckToMergeBody = false;\n\n Object.entries(setting).forEach(([key, value]) => {\n if (\n !shouldSkipCheckToMergeBody &&\n !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)\n ) {\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n\n if (error) {\n return;\n }\n\n switch (key) {\n case Setting.muted:\n shouldSkipCheckToMergeBody = true;\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n break;\n\n case Setting.disallowUnmute:\n case Setting.muteOnEntry:\n if (Object.keys(setting).includes(Setting.muted)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n body.audio[camelCase(key)] = value;\n } else {\n body[camelCase(key)] = {[ENABLED]: value};\n }\n break;\n\n default:\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n });\n\n if (error) {\n return Promise.reject(error);\n }\n\n // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body,\n method: HTTP_VERBS.PATCH,\n });\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteOnEntry(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.muteOnEntry]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setDisallowUnmute(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.disallowUnmute]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} mutedEnabled\n * @param {boolean} disallowUnmuteEnabled\n * @param {boolean} muteOnEntryEnabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean\n ): Promise<any> {\n return this.setControls({\n [Setting.muted]: mutedEnabled,\n [Setting.disallowUnmute]: disallowUnmuteEnabled,\n [Setting.muteOnEntry]: muteOnEntryEnabled,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {Control} from './enums';\n\nexport interface ControlProperties {\n /**\n * A list of additional properties that apply to various specific settings.\n *\n * @remarks\n * The values stored here, per the service, are fully ambiguous, an can vary\n * depending on which control scope is being configured.\n */\n [key: string]: boolean;\n}\n\nexport interface AudioProperties {\n muted?: boolean;\n disallowUnmute?: boolean;\n muteOnEntry?: boolean;\n}\n\nexport interface ReactionsProperties {\n enabled?: boolean;\n showDisplayNameWithReactions?: boolean;\n}\n\nexport interface ShareControlProperties {\n control?: 'ANYONE' | 'MODERATOR_PRESENTER';\n}\n\nexport interface ViewTheParticipantListProperties {\n enabled?: boolean;\n}\n\nexport type Properties =\n | AudioProperties\n | ReactionsProperties\n | ShareControlProperties\n | ViewTheParticipantListProperties;\n\nexport interface ControlConfig<Props = Properties> {\n /**\n * The scope of the control within this object.\n */\n scope: Control;\n\n /**\n * The properties to assign to this control.\n */\n properties: Props;\n}\n"],"mappings":""}
|
|
@@ -1,39 +1,250 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
4
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = void 0;
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
8
11
|
var _constants = require("../constants");
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
12
|
+
var _enums = require("./enums");
|
|
13
|
+
/**
|
|
14
|
+
* The Controls Options Manager utilities
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
var Utils = /*#__PURE__*/function () {
|
|
19
|
+
function Utils() {
|
|
20
|
+
(0, _classCallCheck2.default)(this, Utils);
|
|
21
|
+
}
|
|
22
|
+
(0, _createClass2.default)(Utils, null, [{
|
|
23
|
+
key: "canSetMuteOnEntry",
|
|
24
|
+
value:
|
|
25
|
+
/**
|
|
26
|
+
* Validate if enabling mute on entry can be set.
|
|
27
|
+
*
|
|
28
|
+
* @param {Array<string>} displayHints - Display Hints to use when validating.
|
|
29
|
+
* @returns {boolean} - True if the action is allowed.
|
|
30
|
+
*/
|
|
31
|
+
function canSetMuteOnEntry(displayHints) {
|
|
32
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Validate if allowing unmuting can be set.
|
|
37
|
+
*
|
|
38
|
+
* @param {Array<string>} displayHints - Display Hints to use when validating.
|
|
39
|
+
* @returns {boolean} - True if the action is allowed.
|
|
40
|
+
*/
|
|
41
|
+
}, {
|
|
42
|
+
key: "canSetDisallowUnmute",
|
|
43
|
+
value: function canSetDisallowUnmute(displayHints) {
|
|
44
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.ENABLE_HARD_MUTE);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Validate if disabling mute on entry can be set.
|
|
49
|
+
*
|
|
50
|
+
* @param {Array<string>} displayHints - Display Hints to use when validating.
|
|
51
|
+
* @returns {boolean} - True if the action is allowed.
|
|
52
|
+
*/
|
|
53
|
+
}, {
|
|
54
|
+
key: "canUnsetMuteOnEntry",
|
|
55
|
+
value: function canUnsetMuteOnEntry(displayHints) {
|
|
56
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Validate if enabling muting can be set.
|
|
61
|
+
*
|
|
62
|
+
* @param {Array<string>} displayHints - Display Hints to use when validating.
|
|
63
|
+
* @returns {boolean} - True if the action is allowed.
|
|
64
|
+
*/
|
|
65
|
+
}, {
|
|
66
|
+
key: "canUnsetDisallowUnmute",
|
|
67
|
+
value: function canUnsetDisallowUnmute(displayHints) {
|
|
68
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.DISABLE_HARD_MUTE);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Validate if muting all can be set.
|
|
73
|
+
*
|
|
74
|
+
* @param {Array<string>} displayHints - Display Hints to use when validating.
|
|
75
|
+
* @returns {boolean} - True if the action is allowed.
|
|
76
|
+
*/
|
|
77
|
+
}, {
|
|
78
|
+
key: "canSetMuted",
|
|
79
|
+
value: function canSetMuted(displayHints) {
|
|
80
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.MUTE_ALL);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Validate if unmuting all can be set.
|
|
85
|
+
*
|
|
86
|
+
* @param {Array<string>} displayHints - Display Hints to use when validating.
|
|
87
|
+
* @returns {boolean} - True if the action is allowed.
|
|
88
|
+
*/
|
|
89
|
+
}, {
|
|
90
|
+
key: "canUnsetMuted",
|
|
91
|
+
value: function canUnsetMuted(displayHints) {
|
|
92
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.UNMUTE_ALL);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Validate an array of hints are allowed based on a full collection of hints.
|
|
97
|
+
*
|
|
98
|
+
* @param {Object} config - Configuration Object.
|
|
99
|
+
* @param {Array<string>} config.requiredHints - Hints required for validation.
|
|
100
|
+
* @param {Array<string>} config.displayHints - All available hints.
|
|
101
|
+
* @returns {boolean} - True if all of the actions are allowed.
|
|
102
|
+
*/
|
|
103
|
+
}, {
|
|
104
|
+
key: "hasHints",
|
|
105
|
+
value: function hasHints(config) {
|
|
106
|
+
var requiredHints = config.requiredHints,
|
|
107
|
+
displayHints = config.displayHints;
|
|
108
|
+
return requiredHints.every(function (hint) {
|
|
109
|
+
return displayHints.includes(hint);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Validate if an audio-scoped control is allowed to be sent to the service.
|
|
115
|
+
*
|
|
116
|
+
* @param {ControlConfig<AudioProperties>} control - Audio control config to validate.
|
|
117
|
+
* @param {Array<string>} displayHints - All available hints.
|
|
118
|
+
* @returns {boolean} - True if all of the actions are allowed.
|
|
119
|
+
*/
|
|
120
|
+
}, {
|
|
121
|
+
key: "canUpdateAudio",
|
|
122
|
+
value: function canUpdateAudio(control, displayHints) {
|
|
123
|
+
var requiredHints = [];
|
|
124
|
+
if (control.properties.muted === true) {
|
|
125
|
+
requiredHints.push(_constants.DISPLAY_HINTS.MUTE_ALL);
|
|
126
|
+
}
|
|
127
|
+
if (control.properties.muted === false) {
|
|
128
|
+
requiredHints.push(_constants.DISPLAY_HINTS.UNMUTE_ALL);
|
|
129
|
+
}
|
|
130
|
+
if (control.properties.disallowUnmute === true) {
|
|
131
|
+
requiredHints.push(_constants.DISPLAY_HINTS.ENABLE_HARD_MUTE);
|
|
132
|
+
}
|
|
133
|
+
if (control.properties.disallowUnmute === false) {
|
|
134
|
+
requiredHints.push(_constants.DISPLAY_HINTS.DISABLE_HARD_MUTE);
|
|
135
|
+
}
|
|
136
|
+
if (control.properties.muteOnEntry === true) {
|
|
137
|
+
requiredHints.push(_constants.DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY);
|
|
138
|
+
}
|
|
139
|
+
if (control.properties.muteOnEntry === false) {
|
|
140
|
+
requiredHints.push(_constants.DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY);
|
|
141
|
+
}
|
|
142
|
+
return Utils.hasHints({
|
|
143
|
+
requiredHints: requiredHints,
|
|
144
|
+
displayHints: displayHints
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Validate if an reactions-scoped control is allowed to be sent to the service.
|
|
150
|
+
*
|
|
151
|
+
* @param {ControlConfig<ReactionsProperties>} control - Reaction control config to validate.
|
|
152
|
+
* @param {Array<string>} displayHints - All available hints.
|
|
153
|
+
* @returns {boolean} - True if all of the actions are allowed.
|
|
154
|
+
*/
|
|
155
|
+
}, {
|
|
156
|
+
key: "canUpdateReactions",
|
|
157
|
+
value: function canUpdateReactions(control, displayHints) {
|
|
158
|
+
var requiredHints = [];
|
|
159
|
+
if (control.properties.enabled === true) {
|
|
160
|
+
requiredHints.push(_constants.DISPLAY_HINTS.ENABLE_REACTIONS);
|
|
161
|
+
}
|
|
162
|
+
if (control.properties.enabled === false) {
|
|
163
|
+
requiredHints.push(_constants.DISPLAY_HINTS.DISABLE_REACTIONS);
|
|
164
|
+
}
|
|
165
|
+
if (control.properties.showDisplayNameWithReactions === true) {
|
|
166
|
+
requiredHints.push(_constants.DISPLAY_HINTS.ENABLE_SHOW_DISPLAY_NAME);
|
|
167
|
+
}
|
|
168
|
+
if (control.properties.showDisplayNameWithReactions === false) {
|
|
169
|
+
requiredHints.push(_constants.DISPLAY_HINTS.DISABLE_SHOW_DISPLAY_NAME);
|
|
170
|
+
}
|
|
171
|
+
return Utils.hasHints({
|
|
172
|
+
requiredHints: requiredHints,
|
|
173
|
+
displayHints: displayHints
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Validate if an share-control-scoped control is allowed to be sent to the service.
|
|
179
|
+
*
|
|
180
|
+
* @param {Array<string>} displayHints - All available hints.
|
|
181
|
+
* @returns {boolean} - True if all of the actions are allowed.
|
|
182
|
+
*/
|
|
183
|
+
}, {
|
|
184
|
+
key: "canUpdateShareControl",
|
|
185
|
+
value: function canUpdateShareControl(displayHints) {
|
|
186
|
+
return Utils.hasHints({
|
|
187
|
+
requiredHints: [_constants.DISPLAY_HINTS.SHARE_CONTROL],
|
|
188
|
+
displayHints: displayHints
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Validate if an view-the-participants-list-scoped control is allowed to be sent to the service.
|
|
194
|
+
*
|
|
195
|
+
* @param {ControlConfig<ViewTheParticipantListProperties>} control - View Participants List control config to validate.
|
|
196
|
+
* @param {Array<string>} displayHints - All available hints.
|
|
197
|
+
* @returns {boolean} - True if all of the actions are allowed.
|
|
198
|
+
*/
|
|
199
|
+
}, {
|
|
200
|
+
key: "canUpdateViewTheParticipantsList",
|
|
201
|
+
value: function canUpdateViewTheParticipantsList(control, displayHints) {
|
|
202
|
+
var requiredHints = [];
|
|
203
|
+
if (control.properties.enabled === true) {
|
|
204
|
+
requiredHints.push(_constants.DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST);
|
|
205
|
+
}
|
|
206
|
+
if (control.properties.enabled === false) {
|
|
207
|
+
requiredHints.push(_constants.DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST);
|
|
208
|
+
}
|
|
209
|
+
return Utils.hasHints({
|
|
210
|
+
requiredHints: requiredHints,
|
|
211
|
+
displayHints: displayHints
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Validate that a control can be sent to the service based on the provided
|
|
217
|
+
* display hints.
|
|
218
|
+
*
|
|
219
|
+
* @param {ControlConfig} control - Control to validate.
|
|
220
|
+
* @param {Array<string>} displayHints - All available hints.
|
|
221
|
+
* @returns {boolean} - True if all of the actions are allowed.
|
|
222
|
+
*/
|
|
223
|
+
}, {
|
|
224
|
+
key: "canUpdate",
|
|
225
|
+
value: function canUpdate(control, displayHints) {
|
|
226
|
+
var determinant;
|
|
227
|
+
switch (control.scope) {
|
|
228
|
+
case _enums.Control.audio:
|
|
229
|
+
determinant = Utils.canUpdateAudio(control, displayHints);
|
|
230
|
+
break;
|
|
231
|
+
case _enums.Control.reactions:
|
|
232
|
+
determinant = Utils.canUpdateReactions(control, displayHints);
|
|
233
|
+
break;
|
|
234
|
+
case _enums.Control.shareControl:
|
|
235
|
+
determinant = Utils.canUpdateShareControl(displayHints);
|
|
236
|
+
break;
|
|
237
|
+
case _enums.Control.viewTheParticipantList:
|
|
238
|
+
determinant = Utils.canUpdateViewTheParticipantsList(control, displayHints);
|
|
239
|
+
break;
|
|
240
|
+
default:
|
|
241
|
+
determinant = false;
|
|
242
|
+
}
|
|
243
|
+
return determinant;
|
|
244
|
+
}
|
|
245
|
+
}]);
|
|
246
|
+
return Utils;
|
|
247
|
+
}();
|
|
248
|
+
var _default = Utils;
|
|
38
249
|
exports.default = _default;
|
|
39
250
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["canSetMuteOnEntry","displayHints","includes","DISPLAY_HINTS","ENABLE_MUTE_ON_ENTRY","canSetDisallowUnmute","ENABLE_HARD_MUTE","canUnsetMuteOnEntry","DISABLE_MUTE_ON_ENTRY","canUnsetDisallowUnmute","DISABLE_HARD_MUTE","canSetMuted","MUTE_ALL","canUnsetMuted","UNMUTE_ALL"],"sources":["util.ts"],"sourcesContent":["import {DISPLAY_HINTS} from '../constants';\n\nconst canSetMuteOnEntry = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY);\n\nconst canSetDisallowUnmute = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.ENABLE_HARD_MUTE);\n\nconst canUnsetMuteOnEntry = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY);\n\nconst canUnsetDisallowUnmute = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.DISABLE_HARD_MUTE);\n\n// 'Muted' in the context of controls options manager refers to mute/unmute all.\n// This was chosen because locus uses \"muted\" in the /controls API\nconst canSetMuted = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.MUTE_ALL);\n\nconst canUnsetMuted = (displayHints: Array<string>): boolean =>\n displayHints.includes(DISPLAY_HINTS.UNMUTE_ALL);\n\nexport default {\n canSetMuteOnEntry,\n canSetDisallowUnmute,\n canSetMuted,\n canUnsetMuteOnEntry,\n canUnsetDisallowUnmute,\n canUnsetMuted,\n};\n"],"mappings":";;;;;;;AAAA;AAEA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIC,YAA2B;EAAA,OACpDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACC,oBAAoB,CAAC;AAAA;AAE3D,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoB,CAAIJ,YAA2B;EAAA,OACvDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACG,gBAAgB,CAAC;AAAA;AAEvD,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmB,CAAIN,YAA2B;EAAA,OACtDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACK,qBAAqB,CAAC;AAAA;AAE5D,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsB,CAAIR,YAA2B;EAAA,OACzDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACO,iBAAiB,CAAC;AAAA;;AAExD;AACA;AACA,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAIV,YAA2B;EAAA,OAC9CA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACS,QAAQ,CAAC;AAAA;AAE/C,IAAMC,aAAa,GAAG,SAAhBA,aAAa,CAAIZ,YAA2B;EAAA,OAChDA,YAAY,CAACC,QAAQ,CAACC,wBAAa,CAACW,UAAU,CAAC;AAAA;AAAC,eAEnC;EACbd,iBAAiB,EAAjBA,iBAAiB;EACjBK,oBAAoB,EAApBA,oBAAoB;EACpBM,WAAW,EAAXA,WAAW;EACXJ,mBAAmB,EAAnBA,mBAAmB;EACnBE,sBAAsB,EAAtBA,sBAAsB;EACtBI,aAAa,EAAbA;AACF,CAAC;AAAA"}
|
|
1
|
+
{"version":3,"names":["Utils","displayHints","includes","DISPLAY_HINTS","ENABLE_MUTE_ON_ENTRY","ENABLE_HARD_MUTE","DISABLE_MUTE_ON_ENTRY","DISABLE_HARD_MUTE","MUTE_ALL","UNMUTE_ALL","config","requiredHints","every","hint","control","properties","muted","push","disallowUnmute","muteOnEntry","hasHints","enabled","ENABLE_REACTIONS","DISABLE_REACTIONS","showDisplayNameWithReactions","ENABLE_SHOW_DISPLAY_NAME","DISABLE_SHOW_DISPLAY_NAME","SHARE_CONTROL","ENABLE_VIEW_THE_PARTICIPANT_LIST","DISABLE_VIEW_THE_PARTICIPANT_LIST","determinant","scope","Control","audio","canUpdateAudio","reactions","canUpdateReactions","shareControl","canUpdateShareControl","viewTheParticipantList","canUpdateViewTheParticipantsList"],"sources":["util.ts"],"sourcesContent":["import {DISPLAY_HINTS} from '../constants';\nimport {Control} from './enums';\nimport {\n ControlConfig,\n AudioProperties,\n ReactionsProperties,\n ViewTheParticipantListProperties,\n} from './types';\n\n/**\n * The Controls Options Manager utilities\n *\n * @internal\n */\nclass Utils {\n /**\n * Validate if enabling mute on entry can be set.\n *\n * @param {Array<string>} displayHints - Display Hints to use when validating.\n * @returns {boolean} - True if the action is allowed.\n */\n public static canSetMuteOnEntry(displayHints: Array<string>): boolean {\n return displayHints.includes(DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY);\n }\n\n /**\n * Validate if allowing unmuting can be set.\n *\n * @param {Array<string>} displayHints - Display Hints to use when validating.\n * @returns {boolean} - True if the action is allowed.\n */\n public static canSetDisallowUnmute(displayHints: Array<string>): boolean {\n return displayHints.includes(DISPLAY_HINTS.ENABLE_HARD_MUTE);\n }\n\n /**\n * Validate if disabling mute on entry can be set.\n *\n * @param {Array<string>} displayHints - Display Hints to use when validating.\n * @returns {boolean} - True if the action is allowed.\n */\n public static canUnsetMuteOnEntry(displayHints: Array<string>): boolean {\n return displayHints.includes(DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY);\n }\n\n /**\n * Validate if enabling muting can be set.\n *\n * @param {Array<string>} displayHints - Display Hints to use when validating.\n * @returns {boolean} - True if the action is allowed.\n */\n public static canUnsetDisallowUnmute(displayHints: Array<string>): boolean {\n return displayHints.includes(DISPLAY_HINTS.DISABLE_HARD_MUTE);\n }\n\n /**\n * Validate if muting all can be set.\n *\n * @param {Array<string>} displayHints - Display Hints to use when validating.\n * @returns {boolean} - True if the action is allowed.\n */\n public static canSetMuted(displayHints: Array<string>): boolean {\n return displayHints.includes(DISPLAY_HINTS.MUTE_ALL);\n }\n\n /**\n * Validate if unmuting all can be set.\n *\n * @param {Array<string>} displayHints - Display Hints to use when validating.\n * @returns {boolean} - True if the action is allowed.\n */\n public static canUnsetMuted(displayHints: Array<string>): boolean {\n return displayHints.includes(DISPLAY_HINTS.UNMUTE_ALL);\n }\n\n /**\n * Validate an array of hints are allowed based on a full collection of hints.\n *\n * @param {Object} config - Configuration Object.\n * @param {Array<string>} config.requiredHints - Hints required for validation.\n * @param {Array<string>} config.displayHints - All available hints.\n * @returns {boolean} - True if all of the actions are allowed.\n */\n public static hasHints(config: {requiredHints: Array<string>; displayHints: Array<string>}) {\n const {requiredHints, displayHints} = config;\n\n return requiredHints.every((hint) => displayHints.includes(hint));\n }\n\n /**\n * Validate if an audio-scoped control is allowed to be sent to the service.\n *\n * @param {ControlConfig<AudioProperties>} control - Audio control config to validate.\n * @param {Array<string>} displayHints - All available hints.\n * @returns {boolean} - True if all of the actions are allowed.\n */\n public static canUpdateAudio(\n control: ControlConfig<AudioProperties>,\n displayHints: Array<string>\n ) {\n const requiredHints = [];\n\n if (control.properties.muted === true) {\n requiredHints.push(DISPLAY_HINTS.MUTE_ALL);\n }\n if (control.properties.muted === false) {\n requiredHints.push(DISPLAY_HINTS.UNMUTE_ALL);\n }\n if (control.properties.disallowUnmute === true) {\n requiredHints.push(DISPLAY_HINTS.ENABLE_HARD_MUTE);\n }\n if (control.properties.disallowUnmute === false) {\n requiredHints.push(DISPLAY_HINTS.DISABLE_HARD_MUTE);\n }\n if (control.properties.muteOnEntry === true) {\n requiredHints.push(DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY);\n }\n if (control.properties.muteOnEntry === false) {\n requiredHints.push(DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY);\n }\n\n return Utils.hasHints({requiredHints, displayHints});\n }\n\n /**\n * Validate if an reactions-scoped control is allowed to be sent to the service.\n *\n * @param {ControlConfig<ReactionsProperties>} control - Reaction control config to validate.\n * @param {Array<string>} displayHints - All available hints.\n * @returns {boolean} - True if all of the actions are allowed.\n */\n public static canUpdateReactions(\n control: ControlConfig<ReactionsProperties>,\n displayHints: Array<string>\n ) {\n const requiredHints = [];\n\n if (control.properties.enabled === true) {\n requiredHints.push(DISPLAY_HINTS.ENABLE_REACTIONS);\n }\n if (control.properties.enabled === false) {\n requiredHints.push(DISPLAY_HINTS.DISABLE_REACTIONS);\n }\n if (control.properties.showDisplayNameWithReactions === true) {\n requiredHints.push(DISPLAY_HINTS.ENABLE_SHOW_DISPLAY_NAME);\n }\n if (control.properties.showDisplayNameWithReactions === false) {\n requiredHints.push(DISPLAY_HINTS.DISABLE_SHOW_DISPLAY_NAME);\n }\n\n return Utils.hasHints({requiredHints, displayHints});\n }\n\n /**\n * Validate if an share-control-scoped control is allowed to be sent to the service.\n *\n * @param {Array<string>} displayHints - All available hints.\n * @returns {boolean} - True if all of the actions are allowed.\n */\n public static canUpdateShareControl(displayHints: Array<string>) {\n return Utils.hasHints({requiredHints: [DISPLAY_HINTS.SHARE_CONTROL], displayHints});\n }\n\n /**\n * Validate if an view-the-participants-list-scoped control is allowed to be sent to the service.\n *\n * @param {ControlConfig<ViewTheParticipantListProperties>} control - View Participants List control config to validate.\n * @param {Array<string>} displayHints - All available hints.\n * @returns {boolean} - True if all of the actions are allowed.\n */\n public static canUpdateViewTheParticipantsList(\n control: ControlConfig<ViewTheParticipantListProperties>,\n displayHints: Array<string>\n ) {\n const requiredHints = [];\n\n if (control.properties.enabled === true) {\n requiredHints.push(DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST);\n }\n if (control.properties.enabled === false) {\n requiredHints.push(DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST);\n }\n\n return Utils.hasHints({requiredHints, displayHints});\n }\n\n /**\n * Validate that a control can be sent to the service based on the provided\n * display hints.\n *\n * @param {ControlConfig} control - Control to validate.\n * @param {Array<string>} displayHints - All available hints.\n * @returns {boolean} - True if all of the actions are allowed.\n */\n public static canUpdate(control: ControlConfig, displayHints: Array<string>) {\n let determinant: boolean;\n\n switch (control.scope) {\n case Control.audio:\n determinant = Utils.canUpdateAudio(control as ControlConfig<AudioProperties>, displayHints);\n break;\n\n case Control.reactions:\n determinant = Utils.canUpdateReactions(\n control as ControlConfig<ReactionsProperties>,\n displayHints\n );\n break;\n\n case Control.shareControl:\n determinant = Utils.canUpdateShareControl(displayHints);\n break;\n\n case Control.viewTheParticipantList:\n determinant = Utils.canUpdateViewTheParticipantsList(\n control as ControlConfig<ViewTheParticipantListProperties>,\n displayHints\n );\n break;\n\n default:\n determinant = false;\n }\n\n return determinant;\n }\n}\n\nexport default Utils;\n"],"mappings":"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"}
|
package/dist/media/index.js
CHANGED
|
@@ -25,7 +25,6 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (
|
|
|
25
25
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
26
26
|
var _BrowserDetection = (0, _browserDetection.default)(),
|
|
27
27
|
isBrowser = _BrowserDetection.isBrowser;
|
|
28
|
-
|
|
29
28
|
/**
|
|
30
29
|
* MediaDirection
|
|
31
30
|
* @typedef {Object} MediaDirection
|
|
@@ -113,6 +112,7 @@ Media.getLocalMedia = function (options, config) {
|
|
|
113
112
|
* @param {boolean} [options.enableRtx] applicable only to non-multistream connections
|
|
114
113
|
* @param {boolean} [options.enableExtmap] applicable only to non-multistream connections
|
|
115
114
|
* @param {Object} [options.turnServerInfo]
|
|
115
|
+
* @param {BundlePolicy} [options.bundlePolicy]
|
|
116
116
|
* @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
|
|
117
117
|
*/
|
|
118
118
|
Media.createMediaConnection = function (isMultistream, debugId, options) {
|
|
@@ -120,7 +120,8 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
|
|
|
120
120
|
remoteQualityLevel = options.remoteQualityLevel,
|
|
121
121
|
enableRtx = options.enableRtx,
|
|
122
122
|
enableExtmap = options.enableExtmap,
|
|
123
|
-
turnServerInfo = options.turnServerInfo
|
|
123
|
+
turnServerInfo = options.turnServerInfo,
|
|
124
|
+
bundlePolicy = options.bundlePolicy;
|
|
124
125
|
var iceServers = [];
|
|
125
126
|
if (turnServerInfo) {
|
|
126
127
|
iceServers.push({
|
|
@@ -134,7 +135,8 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
|
|
|
134
135
|
return new _internalMediaCore.MultistreamRoapMediaConnection({
|
|
135
136
|
iceServers: iceServers,
|
|
136
137
|
enableMainAudio: ((_mediaProperties$medi = mediaProperties.mediaDirection) === null || _mediaProperties$medi === void 0 ? void 0 : _mediaProperties$medi.sendAudio) || ((_mediaProperties$medi2 = mediaProperties.mediaDirection) === null || _mediaProperties$medi2 === void 0 ? void 0 : _mediaProperties$medi2.receiveAudio),
|
|
137
|
-
enableMainVideo: ((_mediaProperties$medi3 = mediaProperties.mediaDirection) === null || _mediaProperties$medi3 === void 0 ? void 0 : _mediaProperties$medi3.sendVideo) || ((_mediaProperties$medi4 = mediaProperties.mediaDirection) === null || _mediaProperties$medi4 === void 0 ? void 0 : _mediaProperties$medi4.receiveVideo)
|
|
138
|
+
enableMainVideo: ((_mediaProperties$medi3 = mediaProperties.mediaDirection) === null || _mediaProperties$medi3 === void 0 ? void 0 : _mediaProperties$medi3.sendVideo) || ((_mediaProperties$medi4 = mediaProperties.mediaDirection) === null || _mediaProperties$medi4 === void 0 ? void 0 : _mediaProperties$medi4.receiveVideo),
|
|
139
|
+
bundlePolicy: bundlePolicy
|
|
138
140
|
}, debugId);
|
|
139
141
|
}
|
|
140
142
|
if (!mediaProperties) {
|