@webex/plugin-meetings 3.0.0-beta.39 → 3.0.0-beta.40
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 +111 -23
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +26 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/constants.js +7 -2
- package/dist/constants.js.map +1 -1
- package/dist/members/index.js +2 -1
- package/dist/members/index.js.map +1 -1
- package/dist/types/breakouts/utils.d.ts +7 -0
- package/dist/types/constants.d.ts +6 -1
- package/package.json +18 -18
- package/src/breakouts/README.md +8 -5
- package/src/breakouts/index.ts +100 -22
- package/src/breakouts/utils.ts +24 -0
- package/src/constants.ts +6 -1
- package/src/members/index.ts +1 -1
- package/test/unit/spec/breakouts/index.ts +187 -35
- package/test/unit/spec/breakouts/utils.js +27 -1
package/dist/breakouts/index.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
5
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
6
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
7
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
3
8
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
9
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
5
10
|
_Object$defineProperty(exports, "__esModule", {
|
|
@@ -19,11 +24,9 @@ var _constants = require("../constants");
|
|
|
19
24
|
var _breakout = _interopRequireDefault(require("./breakout"));
|
|
20
25
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
21
26
|
var _request = _interopRequireDefault(require("./request"));
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
|
+
var _utils = require("./utils");
|
|
28
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(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; }
|
|
29
|
+
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; }
|
|
27
30
|
/**
|
|
28
31
|
* @class Breakouts
|
|
29
32
|
*/
|
|
@@ -74,6 +77,20 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
74
77
|
fn: function fn() {
|
|
75
78
|
return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
|
|
76
79
|
}
|
|
80
|
+
},
|
|
81
|
+
breakoutGroupId: {
|
|
82
|
+
deps: ['groups'],
|
|
83
|
+
/**
|
|
84
|
+
* Returns the actived group id
|
|
85
|
+
* @returns {boolean}
|
|
86
|
+
*/
|
|
87
|
+
fn: function fn() {
|
|
88
|
+
var _this$groups;
|
|
89
|
+
if ((_this$groups = this.groups) !== null && _this$groups !== void 0 && _this$groups.length) {
|
|
90
|
+
return this.groups[0].id;
|
|
91
|
+
}
|
|
92
|
+
return '';
|
|
93
|
+
}
|
|
77
94
|
}
|
|
78
95
|
},
|
|
79
96
|
/**
|
|
@@ -280,10 +297,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
280
297
|
* @returns {Promise}
|
|
281
298
|
*/
|
|
282
299
|
broadcast: function broadcast(message, options) {
|
|
283
|
-
var
|
|
284
|
-
var breakoutGroupId = this.isInMainSession ? (_this$breakouts$filte = this.breakouts.filter(function (breakout) {
|
|
285
|
-
return !breakout.isMain;
|
|
286
|
-
})[0]) === null || _this$breakouts$filte === void 0 ? void 0 : _this$breakouts$filte.groupId : this.groupId;
|
|
300
|
+
var breakoutGroupId = this.breakoutGroupId;
|
|
287
301
|
if (!breakoutGroupId) {
|
|
288
302
|
throw new Error('Cannot broadcast, no breakout session found');
|
|
289
303
|
}
|
|
@@ -378,6 +392,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
378
392
|
create: function create(sessions) {
|
|
379
393
|
var _this7 = this;
|
|
380
394
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
395
|
+
var _breakInfo$body;
|
|
381
396
|
var breakInfo;
|
|
382
397
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
383
398
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -392,15 +407,11 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
392
407
|
}]
|
|
393
408
|
}
|
|
394
409
|
}).catch(function (error) {
|
|
395
|
-
|
|
396
|
-
_loggerProxy.default.logger.info("Breakouts#create --> Edit lock token mismatch");
|
|
397
|
-
return _promise.default.reject(new _editLockError.default('Edit lock token mismatch', error));
|
|
398
|
-
}
|
|
399
|
-
return _promise.default.reject(error);
|
|
410
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create --> Edit lock token mismatch'));
|
|
400
411
|
});
|
|
401
412
|
case 2:
|
|
402
413
|
breakInfo = _context2.sent;
|
|
403
|
-
if (breakInfo.body &&
|
|
414
|
+
if ((_breakInfo$body = breakInfo.body) !== null && _breakInfo$body !== void 0 && _breakInfo$body.groups) {
|
|
404
415
|
_this7.set('groups', breakInfo.body.groups);
|
|
405
416
|
}
|
|
406
417
|
return _context2.abrupt("return", _promise.default.resolve(breakInfo));
|
|
@@ -418,6 +429,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
418
429
|
clearSessions: function clearSessions() {
|
|
419
430
|
var _this8 = this;
|
|
420
431
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
432
|
+
var _breakInfo$body2;
|
|
421
433
|
var breakInfo;
|
|
422
434
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
423
435
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -428,19 +440,15 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
428
440
|
uri: _this8.url,
|
|
429
441
|
body: {
|
|
430
442
|
groups: [{
|
|
431
|
-
action: _constants.BREAKOUTS.
|
|
443
|
+
action: _constants.BREAKOUTS.ACTION.DELETE
|
|
432
444
|
}]
|
|
433
445
|
}
|
|
434
446
|
}).catch(function (error) {
|
|
435
|
-
|
|
436
|
-
_loggerProxy.default.logger.info("Breakouts#clearSessions --> Edit lock token mismatch");
|
|
437
|
-
return _promise.default.reject(new _editLockError.default('Edit lock token mismatch', error));
|
|
438
|
-
}
|
|
439
|
-
return _promise.default.reject(error);
|
|
447
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions --> Edit lock token mismatch'));
|
|
440
448
|
});
|
|
441
449
|
case 2:
|
|
442
450
|
breakInfo = _context3.sent;
|
|
443
|
-
if (breakInfo.body &&
|
|
451
|
+
if ((_breakInfo$body2 = breakInfo.body) !== null && _breakInfo$body2 !== void 0 && _breakInfo$body2.groups) {
|
|
444
452
|
_this8.set('groups', breakInfo.body.groups);
|
|
445
453
|
}
|
|
446
454
|
return _context3.abrupt("return", _promise.default.resolve(breakInfo));
|
|
@@ -451,7 +459,87 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
451
459
|
}, _callee3);
|
|
452
460
|
}))();
|
|
453
461
|
},
|
|
454
|
-
|
|
462
|
+
/**
|
|
463
|
+
* Host or cohost starts breakout sessions
|
|
464
|
+
* @param {object} params
|
|
465
|
+
* @returns {Promise}
|
|
466
|
+
*/
|
|
467
|
+
start: function start() {
|
|
468
|
+
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
469
|
+
var action = _constants.BREAKOUTS.ACTION.START;
|
|
470
|
+
var payload = _objectSpread({
|
|
471
|
+
id: this.breakoutGroupId,
|
|
472
|
+
action: action,
|
|
473
|
+
allowBackToMain: false,
|
|
474
|
+
allowToJoinLater: false
|
|
475
|
+
}, params);
|
|
476
|
+
return this.request({
|
|
477
|
+
method: _constants.HTTP_VERBS.PUT,
|
|
478
|
+
uri: this.url,
|
|
479
|
+
body: {
|
|
480
|
+
groups: [payload]
|
|
481
|
+
}
|
|
482
|
+
}).catch(function (error) {
|
|
483
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#start --> Edit lock token mismatch'));
|
|
484
|
+
});
|
|
485
|
+
},
|
|
486
|
+
/**
|
|
487
|
+
* Host or cohost ends breakout sessions
|
|
488
|
+
* @param {object} params
|
|
489
|
+
* @returns {Promise}
|
|
490
|
+
*/
|
|
491
|
+
end: function end() {
|
|
492
|
+
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
493
|
+
var delayCloseTime = this.delayCloseTime,
|
|
494
|
+
id = this.breakoutGroupId;
|
|
495
|
+
var action = _constants.BREAKOUTS.ACTION.CLOSE;
|
|
496
|
+
var payload = _objectSpread({
|
|
497
|
+
id: id,
|
|
498
|
+
action: action,
|
|
499
|
+
delayCloseTime: delayCloseTime
|
|
500
|
+
}, params);
|
|
501
|
+
return this.request({
|
|
502
|
+
method: _constants.HTTP_VERBS.PUT,
|
|
503
|
+
uri: this.url,
|
|
504
|
+
body: {
|
|
505
|
+
groups: [payload]
|
|
506
|
+
}
|
|
507
|
+
}).catch(function (error) {
|
|
508
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#end --> Edit lock token mismatch'));
|
|
509
|
+
});
|
|
510
|
+
},
|
|
511
|
+
/**
|
|
512
|
+
* get existed breakout sessions
|
|
513
|
+
* @param {boolean} editlock -- lock operations of the breakout sessions
|
|
514
|
+
* @returns {Promise}
|
|
515
|
+
*/
|
|
516
|
+
getBreakout: function getBreakout(editlock) {
|
|
517
|
+
var _this9 = this;
|
|
518
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
519
|
+
var _breakout$body;
|
|
520
|
+
var breakout;
|
|
521
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
522
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
523
|
+
case 0:
|
|
524
|
+
_context4.next = 2;
|
|
525
|
+
return _this9.request({
|
|
526
|
+
method: _constants.HTTP_VERBS.GET,
|
|
527
|
+
uri: _this9.url + (editlock ? "?editlock=".concat(editlock) : '')
|
|
528
|
+
});
|
|
529
|
+
case 2:
|
|
530
|
+
breakout = _context4.sent;
|
|
531
|
+
if ((_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && _breakout$body.groups) {
|
|
532
|
+
_this9.set('groups', breakout.body.groups);
|
|
533
|
+
}
|
|
534
|
+
return _context4.abrupt("return", breakout);
|
|
535
|
+
case 5:
|
|
536
|
+
case "end":
|
|
537
|
+
return _context4.stop();
|
|
538
|
+
}
|
|
539
|
+
}, _callee4);
|
|
540
|
+
}))();
|
|
541
|
+
},
|
|
542
|
+
version: "3.0.0-beta.40"
|
|
455
543
|
});
|
|
456
544
|
var _default = Breakouts;
|
|
457
545
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","groups","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","webex","cleanUp","stopListening","locusUrlUpdate","set","breakoutServiceUrlUpdate","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","breakout","session","get","parseRoster","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED","getMainSession","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","breakoutGroupId","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","PUT","create","sessions","errorCode","ERROR_CODE","EDIT_LOCK_TOKEN_MISMATCH","BreakoutEditLockedError","breakInfo","resolve","clearSessions","action","ACTION_TYPES","DELETE"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, HTTP_VERBS, MEETINGS} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\nimport BreakoutRequest from './request';\nimport BreakoutEditLockedError from './edit-lock-error';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n breakoutRequest: BreakoutRequest,\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n breakoutServiceUrl: 'string', // the current breakout resouce url\n groups: 'array', // appears when create breakouts\n },\n\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:status', () => {\n if (this.status === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', () => {\n this.debouncedQueryRosters();\n });\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current breakout resouce url\n * @param {string} breakoutServiceUrl\n * @returns {void}\n */\n breakoutServiceUrlUpdate(breakoutServiceUrl) {\n this.set('breakoutServiceUrl', `${breakoutServiceUrl}/breakout/`);\n },\n\n /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n\n this.set('enableBreakoutSession', params.enableBreakoutSession);\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n /**\n * get main session\n * @returns {Breakout}\n */\n getMainSession() {\n if (this.isInMainSession) {\n return this.currentBreakoutSession;\n }\n\n const mainSession = this.breakouts.filter((breakout) => breakout.isMain)[0];\n if (!mainSession) {\n throw new Error('no main session found');\n }\n\n return mainSession;\n },\n /**\n * Host/CoHost ask all participants return to main session\n * @returns {Promise}\n */\n askAllToReturn() {\n const mainSession = this.getMainSession();\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/requestMove`,\n body: {\n groupId: mainSession.groupId,\n sessionId: mainSession.sessionId,\n },\n });\n },\n\n /**\n * Broadcast message to all breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n const breakoutGroupId = this.isInMainSession\n ? this.breakouts.filter((breakout) => !breakout.isMain)[0]?.groupId\n : this.groupId;\n if (!breakoutGroupId) {\n throw new Error('Cannot broadcast, no breakout session found');\n }\n\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: breakoutGroupId,\n });\n },\n /**\n * Make enable breakout resource\n * @returns {Promise}\n */\n enableBreakouts() {\n if (this.breakoutServiceUrl) {\n // @ts-ignore\n return this.webex\n .request({\n method: HTTP_VERBS.POST,\n uri: this.breakoutServiceUrl,\n body: {\n locusUrl: this.locusUrl,\n },\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#touchBreakout --> Error provisioning error ${err}`\n );\n throw err;\n });\n }\n\n return Promise.reject(new Error(`enableBreakouts: the breakoutServiceUrl is empty`));\n },\n\n /**\n * Make the meeting enbale or disable breakout session\n * @param {boolean} enable\n * @returns {Promise}\n */\n async toggleBreakout(enable) {\n if (this.enableBreakoutSession === undefined) {\n const info = await this.enableBreakouts();\n if (!enable) {\n // if enable is false, updateBreakout set the param then set enableBreakoutSession as false\n this.updateBreakout(info.body);\n await this.doToggleBreakout(enable);\n }\n } else {\n await this.doToggleBreakout(enable);\n }\n },\n\n /**\n * do toggle meeting breakout session enable or disable\n * @param {boolean} enable\n * @returns {Promise}\n */\n doToggleBreakout(enable) {\n // @ts-ignore\n return this.webex.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n enableBreakoutSession: enable,\n },\n });\n },\n\n /**\n * Create new breakout sessions\n * @param {object} sessions -- breakout session group\n * @returns {Promise}\n */\n async create(sessions) {\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n sessions,\n },\n ],\n },\n })\n .catch((error) => {\n if (error.body && error.body.errorCode === BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH) {\n LoggerProxy.logger.info(`Breakouts#create --> Edit lock token mismatch`);\n\n return Promise.reject(new BreakoutEditLockedError('Edit lock token mismatch', error));\n }\n\n return Promise.reject(error);\n });\n\n if (breakInfo.body && breakInfo.body.groups && breakInfo.body.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Delete all breakout sessions\n * @returns {Promise}\n */\n async clearSessions() {\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n action: BREAKOUTS.ACTION_TYPES.DELETE,\n },\n ],\n },\n })\n .catch((error) => {\n if (error.body && error.body.errorCode === BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH) {\n LoggerProxy.logger.info(`Breakouts#clearSessions --> Edit lock token mismatch`);\n\n return Promise.reject(new BreakoutEditLockedError('Edit lock token mismatch', error));\n }\n\n return Promise.reject(error);\n });\n\n if (breakInfo.body && breakInfo.body.groups && breakInfo.body.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","groups","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","breakoutGroupId","length","id","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","webex","cleanUp","stopListening","locusUrlUpdate","set","breakoutServiceUrlUpdate","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","breakout","session","get","parseRoster","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED","getMainSession","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","PUT","create","sessions","boServiceErrorHandler","breakInfo","resolve","clearSessions","action","ACTION","DELETE","start","START","allowToJoinLater","end","CLOSE","getBreakout","editlock","GET"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS, HTTP_VERBS} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\nimport BreakoutRequest from './request';\nimport {boServiceErrorHandler} from './utils';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n breakoutRequest: BreakoutRequest,\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n breakoutServiceUrl: 'string', // the current breakout resouce url\n groups: 'array', // appears when create breakouts\n },\n\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n breakoutGroupId: {\n deps: ['groups'],\n /**\n * Returns the actived group id\n * @returns {boolean}\n */\n fn() {\n if (this.groups?.length) {\n return this.groups[0].id;\n }\n\n return '';\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:status', () => {\n if (this.status === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', () => {\n this.debouncedQueryRosters();\n });\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current breakout resouce url\n * @param {string} breakoutServiceUrl\n * @returns {void}\n */\n breakoutServiceUrlUpdate(breakoutServiceUrl) {\n this.set('breakoutServiceUrl', `${breakoutServiceUrl}/breakout/`);\n },\n\n /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n\n this.set('enableBreakoutSession', params.enableBreakoutSession);\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n /**\n * get main session\n * @returns {Breakout}\n */\n getMainSession() {\n if (this.isInMainSession) {\n return this.currentBreakoutSession;\n }\n\n const mainSession = this.breakouts.filter((breakout) => breakout.isMain)[0];\n if (!mainSession) {\n throw new Error('no main session found');\n }\n\n return mainSession;\n },\n /**\n * Host/CoHost ask all participants return to main session\n * @returns {Promise}\n */\n askAllToReturn() {\n const mainSession = this.getMainSession();\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/requestMove`,\n body: {\n groupId: mainSession.groupId,\n sessionId: mainSession.sessionId,\n },\n });\n },\n\n /**\n * Broadcast message to all breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n const {breakoutGroupId} = this;\n if (!breakoutGroupId) {\n throw new Error('Cannot broadcast, no breakout session found');\n }\n\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: breakoutGroupId,\n });\n },\n /**\n * Make enable breakout resource\n * @returns {Promise}\n */\n enableBreakouts() {\n if (this.breakoutServiceUrl) {\n // @ts-ignore\n return this.webex\n .request({\n method: HTTP_VERBS.POST,\n uri: this.breakoutServiceUrl,\n body: {\n locusUrl: this.locusUrl,\n },\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#touchBreakout --> Error provisioning error ${err}`\n );\n throw err;\n });\n }\n\n return Promise.reject(new Error(`enableBreakouts: the breakoutServiceUrl is empty`));\n },\n\n /**\n * Make the meeting enbale or disable breakout session\n * @param {boolean} enable\n * @returns {Promise}\n */\n async toggleBreakout(enable) {\n if (this.enableBreakoutSession === undefined) {\n const info = await this.enableBreakouts();\n if (!enable) {\n // if enable is false, updateBreakout set the param then set enableBreakoutSession as false\n this.updateBreakout(info.body);\n await this.doToggleBreakout(enable);\n }\n } else {\n await this.doToggleBreakout(enable);\n }\n },\n\n /**\n * do toggle meeting breakout session enable or disable\n * @param {boolean} enable\n * @returns {Promise}\n */\n doToggleBreakout(enable) {\n // @ts-ignore\n return this.webex.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n enableBreakoutSession: enable,\n },\n });\n },\n\n /**\n * Create new breakout sessions\n * @param {object} sessions -- breakout session group\n * @returns {Promise}\n */\n async create(sessions) {\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n sessions,\n },\n ],\n },\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#create --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Delete all breakout sessions\n * @returns {Promise}\n */\n async clearSessions() {\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n action: BREAKOUTS.ACTION.DELETE,\n },\n ],\n },\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#clearSessions --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Host or cohost starts breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n start(params = {}) {\n const action = BREAKOUTS.ACTION.START;\n const payload = {\n id: this.breakoutGroupId,\n action,\n allowBackToMain: false,\n allowToJoinLater: false,\n ...params,\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [payload],\n },\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#start --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * Host or cohost ends breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n end(params = {}) {\n const {delayCloseTime, breakoutGroupId: id} = this;\n const action = BREAKOUTS.ACTION.CLOSE;\n const payload = {\n id,\n action,\n delayCloseTime,\n ...params,\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [payload],\n },\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#end --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * get existed breakout sessions\n * @param {boolean} editlock -- lock operations of the breakout sessions\n * @returns {Promise}\n */\n async getBreakout(editlock) {\n const breakout = await this.request({\n method: HTTP_VERBS.GET,\n uri: this.url + (editlock ? `?editlock=${editlock}` : ''),\n });\n\n if (breakout.body?.groups) {\n this.set('groups', breakout.body.groups);\n }\n\n return breakout;\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
|
package/dist/breakouts/utils.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
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
|
-
exports.getBroadcastRoles = void 0;
|
|
8
|
+
exports.getBroadcastRoles = exports.boServiceErrorHandler = void 0;
|
|
9
|
+
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
10
|
+
var _editLockError = _interopRequireDefault(require("./edit-lock-error"));
|
|
11
|
+
var _constants = require("../constants");
|
|
8
12
|
// eslint-disable-next-line import/prefer-default-export
|
|
13
|
+
|
|
9
14
|
var getBroadcastRoles = function getBroadcastRoles(options) {
|
|
10
15
|
var recipientRoles = [];
|
|
11
16
|
if (!options || !options.cohosts && !options.presenters) {
|
|
@@ -19,5 +24,25 @@ var getBroadcastRoles = function getBroadcastRoles(options) {
|
|
|
19
24
|
}
|
|
20
25
|
return recipientRoles;
|
|
21
26
|
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Deals with all kinds of errors of breakout service
|
|
30
|
+
* @param {object} error // one of the breakout service error
|
|
31
|
+
* @param {string} message // message to log
|
|
32
|
+
* @returns {object}
|
|
33
|
+
*/
|
|
22
34
|
exports.getBroadcastRoles = getBroadcastRoles;
|
|
35
|
+
var boServiceErrorHandler = function boServiceErrorHandler(error, message) {
|
|
36
|
+
var _error$body;
|
|
37
|
+
var errorCode = error === null || error === void 0 ? void 0 : (_error$body = error.body) === null || _error$body === void 0 ? void 0 : _error$body.errorCode;
|
|
38
|
+
var EDIT_LOCK_TOKEN_MISMATCH = _constants.BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH;
|
|
39
|
+
switch (errorCode) {
|
|
40
|
+
case EDIT_LOCK_TOKEN_MISMATCH:
|
|
41
|
+
_loggerProxy.default.logger.info(message);
|
|
42
|
+
return new _editLockError.default('Edit lock token mismatch', error);
|
|
43
|
+
default:
|
|
44
|
+
return error;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
exports.boServiceErrorHandler = boServiceErrorHandler;
|
|
23
48
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getBroadcastRoles","options","recipientRoles","cohosts","presenters","push"],"sources":["utils.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const getBroadcastRoles = (options): string[] => {\n const recipientRoles = [];\n if (!options || (!options.cohosts && !options.presenters)) {\n return recipientRoles;\n }\n if (options.cohosts) {\n recipientRoles.push('COHOST');\n }\n if (options.presenters) {\n recipientRoles.push('PRESENTER');\n }\n\n return recipientRoles;\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["getBroadcastRoles","options","recipientRoles","cohosts","presenters","push","boServiceErrorHandler","error","message","errorCode","body","EDIT_LOCK_TOKEN_MISMATCH","BREAKOUTS","ERROR_CODE","LoggerProxy","logger","info","BreakoutEditLockedError"],"sources":["utils.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport BreakoutEditLockedError from './edit-lock-error';\nimport {BREAKOUTS} from '../constants';\n\nexport const getBroadcastRoles = (options): string[] => {\n const recipientRoles = [];\n if (!options || (!options.cohosts && !options.presenters)) {\n return recipientRoles;\n }\n if (options.cohosts) {\n recipientRoles.push('COHOST');\n }\n if (options.presenters) {\n recipientRoles.push('PRESENTER');\n }\n\n return recipientRoles;\n};\n\n/**\n * Deals with all kinds of errors of breakout service\n * @param {object} error // one of the breakout service error\n * @param {string} message // message to log\n * @returns {object}\n */\nexport const boServiceErrorHandler = (error: any, message: string): any => {\n const errorCode = error?.body?.errorCode;\n const {EDIT_LOCK_TOKEN_MISMATCH} = BREAKOUTS.ERROR_CODE;\n switch (errorCode) {\n case EDIT_LOCK_TOKEN_MISMATCH:\n LoggerProxy.logger.info(message);\n\n return new BreakoutEditLockedError('Edit lock token mismatch', error);\n\n default:\n return error;\n }\n};\n"],"mappings":";;;;;;;;AACA;AACA;AACA;AAHA;;AAKO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIC,OAAO,EAAe;EACtD,IAAMC,cAAc,GAAG,EAAE;EACzB,IAAI,CAACD,OAAO,IAAK,CAACA,OAAO,CAACE,OAAO,IAAI,CAACF,OAAO,CAACG,UAAW,EAAE;IACzD,OAAOF,cAAc;EACvB;EACA,IAAID,OAAO,CAACE,OAAO,EAAE;IACnBD,cAAc,CAACG,IAAI,CAAC,QAAQ,CAAC;EAC/B;EACA,IAAIJ,OAAO,CAACG,UAAU,EAAE;IACtBF,cAAc,CAACG,IAAI,CAAC,WAAW,CAAC;EAClC;EAEA,OAAOH,cAAc;AACvB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA;AAMO,IAAMI,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAU,EAAEC,OAAe,EAAU;EAAA;EACzE,IAAMC,SAAS,GAAGF,KAAK,aAALA,KAAK,sCAALA,KAAK,CAAEG,IAAI,gDAAX,YAAaD,SAAS;EACxC,IAAOE,wBAAwB,GAAIC,oBAAS,CAACC,UAAU,CAAhDF,wBAAwB;EAC/B,QAAQF,SAAS;IACf,KAAKE,wBAAwB;MAC3BG,oBAAW,CAACC,MAAM,CAACC,IAAI,CAACR,OAAO,CAAC;MAEhC,OAAO,IAAIS,sBAAuB,CAAC,0BAA0B,EAAEV,KAAK,CAAC;IAEvE;MACE,OAAOA,KAAK;EAAC;AAEnB,CAAC;AAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -606,7 +606,10 @@ var LOCUS = {
|
|
|
606
606
|
exports.LOCUS = LOCUS;
|
|
607
607
|
var BREAKOUTS = {
|
|
608
608
|
STATUS: {
|
|
609
|
-
CLOSING: 'CLOSING'
|
|
609
|
+
CLOSING: 'CLOSING',
|
|
610
|
+
CLOSED: 'CLOSED',
|
|
611
|
+
PENDING: 'PENDING',
|
|
612
|
+
OPEN: 'OPEN'
|
|
610
613
|
},
|
|
611
614
|
EVENTS: {
|
|
612
615
|
BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
|
|
@@ -624,7 +627,9 @@ var BREAKOUTS = {
|
|
|
624
627
|
REQUESTED: 'requested'
|
|
625
628
|
},
|
|
626
629
|
BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
|
|
627
|
-
|
|
630
|
+
ACTION: {
|
|
631
|
+
START: 'START',
|
|
632
|
+
CLOSE: 'CLOSE',
|
|
628
633
|
DELETE: 'DELETE'
|
|
629
634
|
},
|
|
630
635
|
ERROR_CODE: {
|