@webex/internal-plugin-locus 3.0.0-bnr.4 → 3.0.0

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/.eslintrc.js ADDED
@@ -0,0 +1,6 @@
1
+ const config = {
2
+ root: true,
3
+ extends: ['@webex/eslint-config-legacy'],
4
+ };
5
+
6
+ module.exports = config;
@@ -0,0 +1,3 @@
1
+ const babelConfigLegacy = require('@webex/babel-config-legacy');
2
+
3
+ module.exports = babelConfigLegacy;
@@ -9,8 +9,6 @@ exports.locusEventKeys = exports.default = void 0;
9
9
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
10
10
  */
11
11
 
12
- var locusEventKeys = ['locus.summary', 'locus.self_changed', 'locus.participant_joined', 'locus.participant_left', 'locus.participant_declined', 'locus.participant_alerted', 'locus.participant_updated', 'locus.participant_roles_updated', 'locus.participant_audio_muted', 'locus.participant_audio_unmuted', 'locus.participant_video_muted', 'locus.participant_video_unmuted', 'locus.floor_granted', 'locus.floor_released', 'locus.space_users_modified', 'locus.controls_updated', 'locus.participant_controls_updated'];
13
- exports.locusEventKeys = locusEventKeys;
14
- var _default = locusEventKeys;
15
- exports.default = _default;
12
+ var locusEventKeys = exports.locusEventKeys = ['locus.summary', 'locus.self_changed', 'locus.participant_joined', 'locus.participant_left', 'locus.participant_declined', 'locus.participant_alerted', 'locus.participant_updated', 'locus.participant_roles_updated', 'locus.participant_audio_muted', 'locus.participant_audio_unmuted', 'locus.participant_video_muted', 'locus.participant_video_unmuted', 'locus.floor_granted', 'locus.floor_released', 'locus.space_users_modified', 'locus.controls_updated', 'locus.participant_controls_updated'];
13
+ var _default = exports.default = locusEventKeys;
16
14
  //# sourceMappingURL=event-keys.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["locusEventKeys"],"sources":["event-keys.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport const locusEventKeys = [\n 'locus.summary',\n 'locus.self_changed',\n 'locus.participant_joined',\n 'locus.participant_left',\n 'locus.participant_declined',\n 'locus.participant_alerted',\n 'locus.participant_updated',\n 'locus.participant_roles_updated',\n 'locus.participant_audio_muted',\n 'locus.participant_audio_unmuted',\n 'locus.participant_video_muted',\n 'locus.participant_video_unmuted',\n 'locus.floor_granted',\n 'locus.floor_released',\n 'locus.space_users_modified',\n 'locus.controls_updated',\n 'locus.participant_controls_updated',\n];\n\nexport default locusEventKeys;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAEO,IAAMA,cAAc,GAAG,CAC5B,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,iCAAiC,EACjC,+BAA+B,EAC/B,iCAAiC,EACjC,+BAA+B,EAC/B,iCAAiC,EACjC,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,oCAAoC,CACrC;AAAC;AAAA,eAEaA,cAAc;AAAA"}
1
+ {"version":3,"names":["locusEventKeys","exports","_default","default"],"sources":["event-keys.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport const locusEventKeys = [\n 'locus.summary',\n 'locus.self_changed',\n 'locus.participant_joined',\n 'locus.participant_left',\n 'locus.participant_declined',\n 'locus.participant_alerted',\n 'locus.participant_updated',\n 'locus.participant_roles_updated',\n 'locus.participant_audio_muted',\n 'locus.participant_audio_unmuted',\n 'locus.participant_video_muted',\n 'locus.participant_video_unmuted',\n 'locus.floor_granted',\n 'locus.floor_released',\n 'locus.space_users_modified',\n 'locus.controls_updated',\n 'locus.participant_controls_updated',\n];\n\nexport default locusEventKeys;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAEO,IAAMA,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,CAC5B,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,iCAAiC,EACjC,+BAA+B,EAC/B,iCAAiC,EACjC,+BAA+B,EAC/B,iCAAiC,EACjC,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,oCAAoC,CACrC;AAAC,IAAAE,QAAA,GAAAD,OAAA,CAAAE,OAAA,GAEaH,cAAc"}
package/dist/index.js CHANGED
@@ -60,13 +60,12 @@ require("@webex/internal-plugin-mercury");
60
60
  var _webexCore = require("@webex/webex-core");
61
61
  var _locus = _interopRequireWildcard(require("./locus"));
62
62
  var _eventKeys = require("./event-keys");
63
- function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
64
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
63
+ function _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
64
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
65
65
  /*!
66
66
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
67
67
  */
68
68
 
69
69
  (0, _webexCore.registerInternalPlugin)('locus', _locus.default);
70
- var _default = _locus.default;
71
- exports.default = _default;
70
+ var _default = exports.default = _locus.default;
72
71
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["registerInternalPlugin","Locus"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-mercury';\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Locus from './locus';\n\nregisterInternalPlugin('locus', Locus);\n\nexport default Locus;\nexport {locusEventKeys as eventKeys} from './event-keys';\nexport {USE_INCOMING, USE_CURRENT, EQUAL, FETCH, GREATER_THAN, LESS_THAN, DESYNC} from './locus';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA;AAEA;AAKA;AAAyD;AAAA;AAZzD;AACA;AACA;;AAOA,IAAAA,iCAAsB,EAAC,OAAO,EAAEC,cAAK,CAAC;AAAC,eAExBA,cAAK;AAAA"}
1
+ {"version":3,"names":["require","_webexCore","_locus","_interopRequireWildcard","_eventKeys","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","registerInternalPlugin","Locus","_default","exports"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-mercury';\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Locus from './locus';\n\nregisterInternalPlugin('locus', Locus);\n\nexport default Locus;\nexport {locusEventKeys as eventKeys} from './event-keys';\nexport {USE_INCOMING, USE_CURRENT, EQUAL, FETCH, GREATER_THAN, LESS_THAN, DESYNC} from './locus';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIAA,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AAKA,IAAAI,UAAA,GAAAJ,OAAA;AAAyD,SAAAK,yBAAAC,CAAA,6BAAAC,QAAA,mBAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,sBAAA,IAAAC,gCAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAc,CAAA,SAAAK,CAAA,GAAAR,CAAA,GAAAE,gCAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAK,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,sBAAA,CAAAH,CAAA,EAAAK,CAAA,EAAAK,CAAA,IAAAV,CAAA,CAAAK,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAL,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAZzD;AACA;AACA;;AAOA,IAAAY,iCAAsB,EAAC,OAAO,EAAEC,cAAK,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAlB,OAAA,GAExBgB,cAAK"}
package/dist/locus.js CHANGED
@@ -17,29 +17,21 @@ var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/objec
17
17
  var _set = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/set"));
18
18
  var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
19
19
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
20
- var _memoize2 = _interopRequireDefault(require("lodash/memoize"));
21
- var _last2 = _interopRequireDefault(require("lodash/last"));
22
- var _first2 = _interopRequireDefault(require("lodash/first"));
23
- var _difference2 = _interopRequireDefault(require("lodash/difference"));
24
- var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
25
20
  var _webexCore = require("@webex/webex-core");
21
+ var _lodash = require("lodash");
26
22
  var _uuid = _interopRequireDefault(require("uuid"));
27
23
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
28
24
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
29
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
30
- var USE_INCOMING = 'USE_INCOMING';
31
- exports.USE_INCOMING = USE_INCOMING;
32
- var USE_CURRENT = 'USE_CURRENT';
33
- exports.USE_CURRENT = USE_CURRENT;
34
- var EQUAL = 'EQUAL';
35
- exports.EQUAL = EQUAL;
36
- var FETCH = 'FETCH';
37
- exports.FETCH = FETCH;
38
- var GREATER_THAN = 'GREATER_THAN';
39
- exports.GREATER_THAN = GREATER_THAN;
40
- var LESS_THAN = 'LESS_THAN';
41
- exports.LESS_THAN = LESS_THAN;
42
- var DESYNC = 'DESYNC';
25
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /*!
26
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
27
+ */
28
+ var USE_INCOMING = exports.USE_INCOMING = 'USE_INCOMING';
29
+ var USE_CURRENT = exports.USE_CURRENT = 'USE_CURRENT';
30
+ var EQUAL = exports.EQUAL = 'EQUAL';
31
+ var FETCH = exports.FETCH = 'FETCH';
32
+ var GREATER_THAN = exports.GREATER_THAN = 'GREATER_THAN';
33
+ var LESS_THAN = exports.LESS_THAN = 'LESS_THAN';
34
+ var DESYNC = exports.DESYNC = 'DESYNC';
43
35
 
44
36
  /**
45
37
  * Transates the result of a sequence comparison into an intended behavior
@@ -47,7 +39,6 @@ var DESYNC = 'DESYNC';
47
39
  * @private
48
40
  * @returns {string}
49
41
  */
50
- exports.DESYNC = DESYNC;
51
42
  function compareToAction(result) {
52
43
  switch (result) {
53
44
  case EQUAL:
@@ -166,16 +157,16 @@ var Locus = _webexCore.WebexPlugin.extend({
166
157
  // those in the test suite, I have to assume memoize can only help and the
167
158
  // overhead of memoizing these methods is not a problem.
168
159
 
169
- var getEntriesFirstValue = (0, _memoize2.default)(function (sequence) {
170
- return sequence.entries.length === 0 ? 0 : (0, _first2.default)(sequence.entries);
160
+ var getEntriesFirstValue = (0, _lodash.memoize)(function (sequence) {
161
+ return sequence.entries.length === 0 ? 0 : (0, _lodash.first)(sequence.entries);
171
162
  });
172
- var getEntriesLastValue = (0, _memoize2.default)(function (sequence) {
173
- return sequence.entries.length === 0 ? 0 : (0, _last2.default)(sequence.entries);
163
+ var getEntriesLastValue = (0, _lodash.memoize)(function (sequence) {
164
+ return sequence.entries.length === 0 ? 0 : (0, _lodash.last)(sequence.entries);
174
165
  });
175
- var getCompareFirstValue = (0, _memoize2.default)(function (sequence) {
166
+ var getCompareFirstValue = (0, _lodash.memoize)(function (sequence) {
176
167
  return sequence.rangeStart || getEntriesFirstValue(sequence);
177
168
  });
178
- var getCompareLastValue = (0, _memoize2.default)(function (sequence) {
169
+ var getCompareLastValue = (0, _lodash.memoize)(function (sequence) {
179
170
  return getEntriesLastValue(sequence) || sequence.rangeEnd;
180
171
  });
181
172
 
@@ -194,8 +185,8 @@ var Locus = _webexCore.WebexPlugin.extend({
194
185
  if (getCompareLastValue(current) < getCompareFirstValue(incoming)) {
195
186
  return LESS_THAN;
196
187
  }
197
- var currentOnlyEntries = (0, _difference2.default)(current.entries, incoming.entries);
198
- var incomingOnlyEntries = (0, _difference2.default)(incoming.entries, current.entries);
188
+ var currentOnlyEntries = (0, _lodash.difference)(current.entries, incoming.entries);
189
+ var incomingOnlyEntries = (0, _lodash.difference)(incoming.entries, current.entries);
199
190
  var currentOnly = [];
200
191
  var incomingOnly = [];
201
192
  var _iterator = _createForOfIteratorHelper(currentOnlyEntries),
@@ -483,7 +474,7 @@ var Locus = _webexCore.WebexPlugin.extend({
483
474
  if (!incoming.baseSequence) {
484
475
  return incoming;
485
476
  }
486
- var next = (0, _cloneDeep2.default)(current);
477
+ var next = (0, _lodash.cloneDeep)(current);
487
478
 
488
479
  // 1. All non-null elements in the delta event except the "baseSequence" and
489
480
  // the "participants" collection should be used to replace their existing
@@ -659,8 +650,7 @@ var Locus = _webexCore.WebexPlugin.extend({
659
650
  return res.body.locus;
660
651
  });
661
652
  },
662
- version: "3.0.0-bnr.4"
653
+ version: "3.0.0"
663
654
  });
664
- var _default = Locus;
665
- exports.default = _default;
655
+ var _default = exports.default = Locus;
666
656
  //# sourceMappingURL=locus.js.map
package/dist/locus.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["USE_INCOMING","USE_CURRENT","EQUAL","FETCH","GREATER_THAN","LESS_THAN","DESYNC","compareToAction","result","Error","Locus","WebexPlugin","extend","namespace","alert","locus","request","method","uri","url","body","deviceUrl","webex","internal","device","sequence","then","res","compare","current","incoming","isEmpty","entries","length","rangeStart","rangeEnd","baseSequence","compareDelta","compareSequence","ret","getEntriesFirstValue","getEntriesLastValue","getCompareFirstValue","getCompareLastValue","inRange","entry","currentOnlyEntries","incomingOnlyEntries","currentOnly","incomingOnly","i","push","create","invitee","options","correlationId","service","resource","localMedias","localSdp","type","sdp","self","devices","map","item","index","mediaConnections","createOrJoin","target","join","decline","catch","reason","WebexHttpError","Conflict","get","reject","getCallHistory","from","Date","toISOString","qs","leave","list","loci","merge","next","forEach","key","participants","toRemove","toUpsert","p","removed","add","set","reduce","acc","has","value","releaseFloorGrant","share","floor","disposition","requestFloorGrant","beneficiary","sendDtmf","tones","dtmf","uuid","v4","sync","syncUrl","updateMedia","audioMuted","videoMuted","mediaId"],"sources":["locus.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin, WebexHttpError} from '@webex/webex-core';\nimport {cloneDeep, difference, first, last, memoize} from 'lodash';\nimport uuid from 'uuid';\n\nexport const USE_INCOMING = 'USE_INCOMING';\nexport const USE_CURRENT = 'USE_CURRENT';\nexport const EQUAL = 'EQUAL';\nexport const FETCH = 'FETCH';\nexport const GREATER_THAN = 'GREATER_THAN';\nexport const LESS_THAN = 'LESS_THAN';\nexport const DESYNC = 'DESYNC';\n\n/**\n * Transates the result of a sequence comparison into an intended behavior\n * @param {string} result\n * @private\n * @returns {string}\n */\nfunction compareToAction(result) {\n switch (result) {\n case EQUAL:\n case GREATER_THAN:\n return USE_CURRENT;\n case LESS_THAN:\n return USE_INCOMING;\n case DESYNC:\n return FETCH;\n default:\n throw new Error(`${result} is not a recognized sequence comparison result`);\n }\n}\n\n/**\n * @class\n */\nconst Locus = WebexPlugin.extend({\n namespace: 'Locus',\n\n /**\n * Alert the specified locus that the local user has been notified of the\n * locus's active state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Promise}\n */\n alert(locus) {\n return this.request({\n method: 'PUT',\n uri: `${locus.url}/participant/alert`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n sequence: locus.sequence,\n },\n }).then((res) => res.body);\n },\n\n /**\n * Compares two loci to determine which one contains the most recent state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} one of USE_INCOMING, USE_CURRENT, or FETCH\n */\n compare(current, incoming) {\n /**\n * Determines if a paricular locus's sequence is empty\n * @param {Types~Locus} locus\n * @private\n * @returns {bool}\n */\n function isEmpty(locus) {\n const {sequence} = locus;\n\n return (\n (!sequence.entries || !sequence.entries.length) &&\n sequence.rangeStart === 0 &&\n sequence.rangeEnd === 0\n );\n }\n\n if (isEmpty(current) || isEmpty(incoming)) {\n return USE_INCOMING;\n }\n\n if (incoming.baseSequence) {\n return this.compareDelta(current, incoming);\n }\n\n return compareToAction(this.compareSequence(current.sequence, incoming.sequence));\n },\n\n /**\n * Compares two loci sequences (with delta params) and indicates what action\n * to take.\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @private\n * @returns {string} one of USE_INCOMING, USE_CURRENT, or FETCH\n */\n compareDelta(current, incoming) {\n let ret = this.compareSequence(current.sequence, incoming.sequence);\n\n if (ret !== LESS_THAN) {\n return compareToAction(ret);\n }\n\n ret = this.compareSequence(current.sequence, incoming.baseSequence);\n\n switch (ret) {\n case GREATER_THAN:\n case EQUAL:\n return USE_INCOMING;\n default:\n return FETCH;\n }\n },\n\n /**\n * Compares two Locus sequences\n * @instance\n * @memberof Locus\n * @param {LocusSequence} current\n * @param {LocusSequence} incoming\n * @returns {string} one of LESS_THAN, GREATER_THAN, EQUAL, or DESYNC\n */\n compareSequence(current, incoming) {\n if (!current) {\n throw new Error('`current` is required');\n }\n\n if (!incoming) {\n throw new Error('`incoming` is required');\n }\n // complexity here is unavoidable\n /* eslint complexity: [0] */\n /* eslint max-statements: [0] */\n\n // must pick one of arrow-body-style or no-confusing-arrow to disable\n /* eslint arrow-body-style: [0] */\n\n // after running the #compare() test suite in a loop, there doesn't seem to\n // be any appreciable difference when used with or without memoize; since\n // real locus sequences are likely to contain more sequence numbers than\n // those in the test suite, I have to assume memoize can only help and the\n // overhead of memoizing these methods is not a problem.\n\n const getEntriesFirstValue = memoize((sequence) => {\n return sequence.entries.length === 0 ? 0 : first(sequence.entries);\n });\n const getEntriesLastValue = memoize((sequence) => {\n return sequence.entries.length === 0 ? 0 : last(sequence.entries);\n });\n const getCompareFirstValue = memoize((sequence) => {\n return sequence.rangeStart || getEntriesFirstValue(sequence);\n });\n const getCompareLastValue = memoize((sequence) => {\n return getEntriesLastValue(sequence) || sequence.rangeEnd;\n });\n\n /**\n * @param {number} entry\n * @param {LocusSequence} sequence\n * @private\n * @returns {Boolean}\n */\n function inRange(entry, sequence) {\n return entry >= sequence.rangeStart && entry <= sequence.rangeEnd;\n }\n\n if (getCompareFirstValue(current) > getCompareLastValue(incoming)) {\n return GREATER_THAN;\n }\n\n if (getCompareLastValue(current) < getCompareFirstValue(incoming)) {\n return LESS_THAN;\n }\n\n const currentOnlyEntries = difference(current.entries, incoming.entries);\n const incomingOnlyEntries = difference(incoming.entries, current.entries);\n const currentOnly = [];\n const incomingOnly = [];\n\n for (const i of currentOnlyEntries) {\n if (!inRange(i, incoming)) {\n currentOnly.push(i);\n }\n }\n for (const i of incomingOnlyEntries) {\n if (!inRange(i, current)) {\n incomingOnly.push(i);\n }\n }\n\n if (!currentOnly.length && !incomingOnly.length) {\n if (\n current.rangeEnd - getCompareFirstValue(current) >\n incoming.rangeEnd - getCompareFirstValue(incoming)\n ) {\n return GREATER_THAN;\n }\n\n if (\n current.rangeEnd - getCompareFirstValue(current) <\n incoming.rangeEnd - getCompareFirstValue(incoming)\n ) {\n return LESS_THAN;\n }\n\n return EQUAL;\n }\n\n if (currentOnly.length && !incomingOnly.length) {\n return GREATER_THAN;\n }\n\n if (!currentOnly.length && incomingOnly.length) {\n return LESS_THAN;\n }\n\n if (!current.rangeStart && !current.rangeEnd && !incoming.rangeStart && !incoming.rangeEnd) {\n return DESYNC;\n }\n\n for (const i of currentOnly) {\n if (getCompareFirstValue(incoming) < i && i < getCompareLastValue(incoming)) {\n return DESYNC;\n }\n }\n\n for (const i of incomingOnly) {\n if (getCompareFirstValue(current) < i && i < getCompareLastValue(current)) {\n return DESYNC;\n }\n }\n\n if (currentOnly[0] > incomingOnly[0]) {\n return GREATER_THAN;\n }\n\n return LESS_THAN;\n },\n\n /**\n * Calls the specified invitee and offers the specified media via\n * options.localSdp\n * @instance\n * @memberof Locus\n * @param {string} invitee\n * @param {Object} options\n * @param {Object} options.localSdp\n * @returns {Promise<Types~Locus>}\n */\n create(invitee, options = {}) {\n const {correlationId} = options;\n\n if (!correlationId) {\n throw new Error('options.correlationId is required');\n }\n\n return (\n this.request({\n method: 'POST',\n service: 'locus',\n resource: 'loci/call',\n body: {\n correlationId,\n deviceUrl: this.webex.internal.device.url,\n invitee: {\n invitee,\n },\n localMedias: [\n {\n localSdp: JSON.stringify({\n type: 'SDP',\n sdp: options.localSdp,\n }),\n },\n ],\n sequence: {\n entries: [],\n rangeStart: 0,\n rangeEnd: 0,\n },\n },\n })\n // res.body.mediaConnections is deprecated so just return the locus\n .then((res) => {\n res.body.locus.self.devices.map((item, index) => {\n item.mediaConnections = [res.body.mediaConnections[index]];\n\n return item;\n });\n\n return res.body.locus;\n })\n );\n },\n\n /**\n * This is mostly an internal function to simplify the phone plugin. Decides\n * which path to call based on the type of the thing being joined.\n * @instance\n * @memberof Locus\n * @param {Object|Types~Locus} target\n * @param {Object} options\n * @private\n * @returns {Promise<Types~Locus>}\n */\n createOrJoin(target, options) {\n if (target.url) {\n return this.join(target, options);\n }\n\n return this.create(target, options);\n },\n\n /**\n * Decline to join the specified Locus\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Promise<Types~Locus>}\n */\n decline(locus) {\n return this.request({\n method: 'PUT',\n uri: `${locus.url}/participant/decline`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n sequence: locus.sequence,\n },\n })\n .then((res) => res.body)\n .catch((reason) => {\n if (reason instanceof WebexHttpError.Conflict) {\n return this.get(locus);\n }\n\n return Promise.reject(reason);\n });\n },\n\n /**\n * Retrieves a single Locus\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Types~Locus}\n */\n get(locus) {\n return this.request({\n method: 'GET',\n uri: `${locus.url}`,\n }).then((res) => res.body);\n },\n\n /**\n * Retrieves the call history for the current user\n * @instance\n * @memberof Locus\n * @param {Object} options\n * @param {Date|number} options.from\n * @returns {Promise<Object>}\n */\n getCallHistory(options = {}) {\n const from = new Date(options.from || Date.now()).toISOString();\n\n return this.request({\n method: 'GET',\n service: 'janus',\n resource: 'history/userSessions',\n qs: {from},\n }).then((res) => res.body);\n },\n\n /**\n * Join the specified Locus and offer to send it media\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @param {Object} options\n * @param {Object} options.localSdp\n * @returns {Types~Locus}\n */\n join(locus, options = {}) {\n const correlationId = locus.correlationId || options.correlationId;\n\n if (!correlationId) {\n throw new Error('locus.correlationId or options.correlationId is required');\n }\n\n return (\n this.request({\n method: 'POST',\n uri: `${locus.url}/participant`,\n body: {\n correlationId,\n deviceUrl: this.webex.internal.device.url,\n localMedias: [\n {\n localSdp: JSON.stringify({\n type: 'SDP',\n sdp: options.localSdp,\n }),\n },\n ],\n sequence: locus.sequence || {\n entries: [],\n rangeStart: 0,\n rangeEnd: 0,\n },\n },\n })\n // The mediaConnections object is deprecated, so just return the locus\n .then((res) => {\n res.body.locus.self.devices.map((item, index) => {\n item.mediaConnections = [res.body.mediaConnections[index]];\n\n return item;\n });\n\n return res.body.locus;\n })\n );\n },\n\n /**\n * Leave the specified Locus\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Promise<Types~Locus>}\n */\n leave(locus) {\n return this.request({\n method: 'PUT',\n uri: `${locus.self.url}/leave`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n sequence: locus.sequence,\n },\n })\n .then((res) => res.body.locus)\n .catch((reason) => {\n if (reason instanceof WebexHttpError.Conflict) {\n return this.get(locus);\n }\n\n return Promise.reject(reason);\n });\n },\n\n /**\n * Lists active loci\n * @instance\n * @memberof Locus\n * @returns {Promise<Array<Types~Locus>>}\n */\n list() {\n return this.request({\n method: 'GET',\n service: 'locus',\n resource: 'loci',\n }).then((res) => res.body.loci);\n },\n\n /**\n * Merges two locus DTOs (for the same locus)\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus|Types~LocusDelta} incoming\n * @returns {Type~Locus}\n */\n merge(current, incoming) {\n // if incoming is not a delta event, treat it as a new full locus.\n if (!incoming.baseSequence) {\n return incoming;\n }\n\n const next = cloneDeep(current);\n\n // 1. All non-null elements in the delta event except the \"baseSequence\" and\n // the \"participants\" collection should be used to replace their existing\n // values.\n Object.keys(incoming).forEach((key) => {\n if (key === 'baseSequence' || key === 'participants') {\n return;\n }\n\n next[key] = incoming[key] || next[key];\n });\n\n // 2. The \"baseSequence\" in the delta event can be discarded (it doesn't\n // need to be maintained in the local working copy).\n\n if (incoming.participants || incoming.participants.length) {\n const toRemove = new Set();\n const toUpsert = new Map();\n\n incoming.participants.forEach((p) => {\n if (p.removed) {\n // Elements of the delta event's \"participants\" list with the\n // attribute `removed=true` should be removed from the working copy's\n // \"participants\" collection.\n toRemove.add(p.url);\n } else {\n // Elements of the delta events \"participants\" list that are absent\n // from the local working copy should be added to that collection.\n toUpsert.set(p.url, p);\n }\n });\n\n // The \"participants\" collection in the delta event should be merged with\n // that of the local working copy of the Locus such that elements in the\n // delta event's \"participants\" replace those with the same url value in\n // the working copy \"participants\" collection.\n const participants = next.participants.reduce((acc, p) => {\n if (!toRemove.has(p.url)) {\n acc[p.url] = p;\n }\n\n return acc;\n }, {});\n\n toUpsert.forEach((value, key) => {\n participants[key] = value;\n });\n\n next.participants = Object.values(participants);\n }\n\n return next;\n },\n\n /**\n * Signals to locus that the current user is done sharing their additional\n * media stream\n * @param {Types~Locus} locus\n * @param {Types~MediaShare} share\n * @returns {Promise}\n */\n releaseFloorGrant(locus, share) {\n return this.webex\n .request({\n uri: share.url,\n method: 'PUT',\n body: {\n floor: {\n disposition: 'RELEASED',\n },\n },\n })\n .then(({body}) => body);\n },\n\n /**\n * Signals to locus that the current user would like to share an additional\n * media stream\n * @param {Types~Locus} locus\n * @param {Types~MediaShare} share\n * @returns {Promise}\n */\n requestFloorGrant(locus, share) {\n return this.webex\n .request({\n uri: share.url,\n method: 'PUT',\n body: {\n floor: {\n beneficiary: {\n url: locus.self.url,\n devices: [{url: this.webex.internal.device.url}],\n },\n disposition: 'GRANTED',\n },\n },\n })\n .then(({body}) => body);\n },\n\n /**\n * Sends a string of DTMF tones to the locus\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @param {string} tones\n * @returns {Promise}\n */\n sendDtmf(locus, tones) {\n return this.request({\n method: 'POST',\n uri: `${locus.self.url}/sendDtmf`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n },\n\n /**\n * Fetches the delta for the locus from its syncUrl. *Does not merge*\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Types~LocusDelta}\n */\n sync(locus) {\n return (\n this.request({\n method: 'GET',\n uri: locus.syncUrl,\n })\n // the api may return a 204 no content, so we'll give back an empty\n // object in that case.\n .then((res) => res.body || {})\n );\n },\n\n /**\n * Send a new sdp to Linus via the Locus API to update media state (e.g. to\n * start or stop sending audio or video)\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @param {Object} options\n * @param {string} options.localSdp\n * @param {string} options.mediaId\n * @param {Boolean} options.audioMuted\n * @param {Boolean} options.videoMuted\n * @returns {Promise<Types~Locus>}\n */\n updateMedia(locus, {sdp, audioMuted, videoMuted, mediaId}) {\n const localSdp = {\n audioMuted,\n videoMuted,\n };\n\n if (sdp) {\n localSdp.type = 'SDP';\n localSdp.sdp = sdp;\n }\n\n return this.request({\n method: 'PUT',\n uri: `${locus.self.url}/media`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n localMedias: [\n {\n localSdp: JSON.stringify(localSdp),\n mediaId,\n },\n ],\n sequence: locus.sequence,\n },\n }).then((res) => res.body.locus);\n },\n});\n\nexport default Locus;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_webexCore","require","_lodash","_uuid","_interopRequireDefault","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","USE_INCOMING","exports","USE_CURRENT","EQUAL","FETCH","GREATER_THAN","LESS_THAN","DESYNC","compareToAction","result","Error","concat","Locus","WebexPlugin","extend","namespace","alert","locus","request","method","uri","url","body","deviceUrl","webex","internal","device","sequence","then","res","compare","current","incoming","isEmpty","entries","rangeStart","rangeEnd","baseSequence","compareDelta","compareSequence","ret","getEntriesFirstValue","memoize","first","getEntriesLastValue","last","getCompareFirstValue","getCompareLastValue","inRange","entry","currentOnlyEntries","difference","incomingOnlyEntries","currentOnly","incomingOnly","_iterator","_step","push","_iterator2","_step2","_i","_currentOnly","_i2","_incomingOnly","create","invitee","options","arguments","undefined","correlationId","service","resource","localMedias","localSdp","_stringify","default","type","sdp","self","devices","map","item","index","mediaConnections","createOrJoin","target","join","decline","_this","catch","reason","WebexHttpError","Conflict","get","_promise","reject","getCallHistory","from","Date","_now","toISOString","qs","leave","_this2","list","loci","merge","cloneDeep","_keys","forEach","key","participants","toRemove","_set","toUpsert","_map","p","removed","add","set","reduce","acc","has","_values","releaseFloorGrant","share","floor","disposition","_ref","requestFloorGrant","beneficiary","_ref2","sendDtmf","tones","dtmf","uuid","v4","sync","syncUrl","updateMedia","_ref3","audioMuted","videoMuted","mediaId","version","_default"],"sources":["locus.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin, WebexHttpError} from '@webex/webex-core';\nimport {cloneDeep, difference, first, last, memoize} from 'lodash';\nimport uuid from 'uuid';\n\nexport const USE_INCOMING = 'USE_INCOMING';\nexport const USE_CURRENT = 'USE_CURRENT';\nexport const EQUAL = 'EQUAL';\nexport const FETCH = 'FETCH';\nexport const GREATER_THAN = 'GREATER_THAN';\nexport const LESS_THAN = 'LESS_THAN';\nexport const DESYNC = 'DESYNC';\n\n/**\n * Transates the result of a sequence comparison into an intended behavior\n * @param {string} result\n * @private\n * @returns {string}\n */\nfunction compareToAction(result) {\n switch (result) {\n case EQUAL:\n case GREATER_THAN:\n return USE_CURRENT;\n case LESS_THAN:\n return USE_INCOMING;\n case DESYNC:\n return FETCH;\n default:\n throw new Error(`${result} is not a recognized sequence comparison result`);\n }\n}\n\n/**\n * @class\n */\nconst Locus = WebexPlugin.extend({\n namespace: 'Locus',\n\n /**\n * Alert the specified locus that the local user has been notified of the\n * locus's active state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Promise}\n */\n alert(locus) {\n return this.request({\n method: 'PUT',\n uri: `${locus.url}/participant/alert`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n sequence: locus.sequence,\n },\n }).then((res) => res.body);\n },\n\n /**\n * Compares two loci to determine which one contains the most recent state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} one of USE_INCOMING, USE_CURRENT, or FETCH\n */\n compare(current, incoming) {\n /**\n * Determines if a paricular locus's sequence is empty\n * @param {Types~Locus} locus\n * @private\n * @returns {bool}\n */\n function isEmpty(locus) {\n const {sequence} = locus;\n\n return (\n (!sequence.entries || !sequence.entries.length) &&\n sequence.rangeStart === 0 &&\n sequence.rangeEnd === 0\n );\n }\n\n if (isEmpty(current) || isEmpty(incoming)) {\n return USE_INCOMING;\n }\n\n if (incoming.baseSequence) {\n return this.compareDelta(current, incoming);\n }\n\n return compareToAction(this.compareSequence(current.sequence, incoming.sequence));\n },\n\n /**\n * Compares two loci sequences (with delta params) and indicates what action\n * to take.\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @private\n * @returns {string} one of USE_INCOMING, USE_CURRENT, or FETCH\n */\n compareDelta(current, incoming) {\n let ret = this.compareSequence(current.sequence, incoming.sequence);\n\n if (ret !== LESS_THAN) {\n return compareToAction(ret);\n }\n\n ret = this.compareSequence(current.sequence, incoming.baseSequence);\n\n switch (ret) {\n case GREATER_THAN:\n case EQUAL:\n return USE_INCOMING;\n default:\n return FETCH;\n }\n },\n\n /**\n * Compares two Locus sequences\n * @instance\n * @memberof Locus\n * @param {LocusSequence} current\n * @param {LocusSequence} incoming\n * @returns {string} one of LESS_THAN, GREATER_THAN, EQUAL, or DESYNC\n */\n compareSequence(current, incoming) {\n if (!current) {\n throw new Error('`current` is required');\n }\n\n if (!incoming) {\n throw new Error('`incoming` is required');\n }\n // complexity here is unavoidable\n /* eslint complexity: [0] */\n /* eslint max-statements: [0] */\n\n // must pick one of arrow-body-style or no-confusing-arrow to disable\n /* eslint arrow-body-style: [0] */\n\n // after running the #compare() test suite in a loop, there doesn't seem to\n // be any appreciable difference when used with or without memoize; since\n // real locus sequences are likely to contain more sequence numbers than\n // those in the test suite, I have to assume memoize can only help and the\n // overhead of memoizing these methods is not a problem.\n\n const getEntriesFirstValue = memoize((sequence) => {\n return sequence.entries.length === 0 ? 0 : first(sequence.entries);\n });\n const getEntriesLastValue = memoize((sequence) => {\n return sequence.entries.length === 0 ? 0 : last(sequence.entries);\n });\n const getCompareFirstValue = memoize((sequence) => {\n return sequence.rangeStart || getEntriesFirstValue(sequence);\n });\n const getCompareLastValue = memoize((sequence) => {\n return getEntriesLastValue(sequence) || sequence.rangeEnd;\n });\n\n /**\n * @param {number} entry\n * @param {LocusSequence} sequence\n * @private\n * @returns {Boolean}\n */\n function inRange(entry, sequence) {\n return entry >= sequence.rangeStart && entry <= sequence.rangeEnd;\n }\n\n if (getCompareFirstValue(current) > getCompareLastValue(incoming)) {\n return GREATER_THAN;\n }\n\n if (getCompareLastValue(current) < getCompareFirstValue(incoming)) {\n return LESS_THAN;\n }\n\n const currentOnlyEntries = difference(current.entries, incoming.entries);\n const incomingOnlyEntries = difference(incoming.entries, current.entries);\n const currentOnly = [];\n const incomingOnly = [];\n\n for (const i of currentOnlyEntries) {\n if (!inRange(i, incoming)) {\n currentOnly.push(i);\n }\n }\n for (const i of incomingOnlyEntries) {\n if (!inRange(i, current)) {\n incomingOnly.push(i);\n }\n }\n\n if (!currentOnly.length && !incomingOnly.length) {\n if (\n current.rangeEnd - getCompareFirstValue(current) >\n incoming.rangeEnd - getCompareFirstValue(incoming)\n ) {\n return GREATER_THAN;\n }\n\n if (\n current.rangeEnd - getCompareFirstValue(current) <\n incoming.rangeEnd - getCompareFirstValue(incoming)\n ) {\n return LESS_THAN;\n }\n\n return EQUAL;\n }\n\n if (currentOnly.length && !incomingOnly.length) {\n return GREATER_THAN;\n }\n\n if (!currentOnly.length && incomingOnly.length) {\n return LESS_THAN;\n }\n\n if (!current.rangeStart && !current.rangeEnd && !incoming.rangeStart && !incoming.rangeEnd) {\n return DESYNC;\n }\n\n for (const i of currentOnly) {\n if (getCompareFirstValue(incoming) < i && i < getCompareLastValue(incoming)) {\n return DESYNC;\n }\n }\n\n for (const i of incomingOnly) {\n if (getCompareFirstValue(current) < i && i < getCompareLastValue(current)) {\n return DESYNC;\n }\n }\n\n if (currentOnly[0] > incomingOnly[0]) {\n return GREATER_THAN;\n }\n\n return LESS_THAN;\n },\n\n /**\n * Calls the specified invitee and offers the specified media via\n * options.localSdp\n * @instance\n * @memberof Locus\n * @param {string} invitee\n * @param {Object} options\n * @param {Object} options.localSdp\n * @returns {Promise<Types~Locus>}\n */\n create(invitee, options = {}) {\n const {correlationId} = options;\n\n if (!correlationId) {\n throw new Error('options.correlationId is required');\n }\n\n return (\n this.request({\n method: 'POST',\n service: 'locus',\n resource: 'loci/call',\n body: {\n correlationId,\n deviceUrl: this.webex.internal.device.url,\n invitee: {\n invitee,\n },\n localMedias: [\n {\n localSdp: JSON.stringify({\n type: 'SDP',\n sdp: options.localSdp,\n }),\n },\n ],\n sequence: {\n entries: [],\n rangeStart: 0,\n rangeEnd: 0,\n },\n },\n })\n // res.body.mediaConnections is deprecated so just return the locus\n .then((res) => {\n res.body.locus.self.devices.map((item, index) => {\n item.mediaConnections = [res.body.mediaConnections[index]];\n\n return item;\n });\n\n return res.body.locus;\n })\n );\n },\n\n /**\n * This is mostly an internal function to simplify the phone plugin. Decides\n * which path to call based on the type of the thing being joined.\n * @instance\n * @memberof Locus\n * @param {Object|Types~Locus} target\n * @param {Object} options\n * @private\n * @returns {Promise<Types~Locus>}\n */\n createOrJoin(target, options) {\n if (target.url) {\n return this.join(target, options);\n }\n\n return this.create(target, options);\n },\n\n /**\n * Decline to join the specified Locus\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Promise<Types~Locus>}\n */\n decline(locus) {\n return this.request({\n method: 'PUT',\n uri: `${locus.url}/participant/decline`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n sequence: locus.sequence,\n },\n })\n .then((res) => res.body)\n .catch((reason) => {\n if (reason instanceof WebexHttpError.Conflict) {\n return this.get(locus);\n }\n\n return Promise.reject(reason);\n });\n },\n\n /**\n * Retrieves a single Locus\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Types~Locus}\n */\n get(locus) {\n return this.request({\n method: 'GET',\n uri: `${locus.url}`,\n }).then((res) => res.body);\n },\n\n /**\n * Retrieves the call history for the current user\n * @instance\n * @memberof Locus\n * @param {Object} options\n * @param {Date|number} options.from\n * @returns {Promise<Object>}\n */\n getCallHistory(options = {}) {\n const from = new Date(options.from || Date.now()).toISOString();\n\n return this.request({\n method: 'GET',\n service: 'janus',\n resource: 'history/userSessions',\n qs: {from},\n }).then((res) => res.body);\n },\n\n /**\n * Join the specified Locus and offer to send it media\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @param {Object} options\n * @param {Object} options.localSdp\n * @returns {Types~Locus}\n */\n join(locus, options = {}) {\n const correlationId = locus.correlationId || options.correlationId;\n\n if (!correlationId) {\n throw new Error('locus.correlationId or options.correlationId is required');\n }\n\n return (\n this.request({\n method: 'POST',\n uri: `${locus.url}/participant`,\n body: {\n correlationId,\n deviceUrl: this.webex.internal.device.url,\n localMedias: [\n {\n localSdp: JSON.stringify({\n type: 'SDP',\n sdp: options.localSdp,\n }),\n },\n ],\n sequence: locus.sequence || {\n entries: [],\n rangeStart: 0,\n rangeEnd: 0,\n },\n },\n })\n // The mediaConnections object is deprecated, so just return the locus\n .then((res) => {\n res.body.locus.self.devices.map((item, index) => {\n item.mediaConnections = [res.body.mediaConnections[index]];\n\n return item;\n });\n\n return res.body.locus;\n })\n );\n },\n\n /**\n * Leave the specified Locus\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Promise<Types~Locus>}\n */\n leave(locus) {\n return this.request({\n method: 'PUT',\n uri: `${locus.self.url}/leave`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n sequence: locus.sequence,\n },\n })\n .then((res) => res.body.locus)\n .catch((reason) => {\n if (reason instanceof WebexHttpError.Conflict) {\n return this.get(locus);\n }\n\n return Promise.reject(reason);\n });\n },\n\n /**\n * Lists active loci\n * @instance\n * @memberof Locus\n * @returns {Promise<Array<Types~Locus>>}\n */\n list() {\n return this.request({\n method: 'GET',\n service: 'locus',\n resource: 'loci',\n }).then((res) => res.body.loci);\n },\n\n /**\n * Merges two locus DTOs (for the same locus)\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus|Types~LocusDelta} incoming\n * @returns {Type~Locus}\n */\n merge(current, incoming) {\n // if incoming is not a delta event, treat it as a new full locus.\n if (!incoming.baseSequence) {\n return incoming;\n }\n\n const next = cloneDeep(current);\n\n // 1. All non-null elements in the delta event except the \"baseSequence\" and\n // the \"participants\" collection should be used to replace their existing\n // values.\n Object.keys(incoming).forEach((key) => {\n if (key === 'baseSequence' || key === 'participants') {\n return;\n }\n\n next[key] = incoming[key] || next[key];\n });\n\n // 2. The \"baseSequence\" in the delta event can be discarded (it doesn't\n // need to be maintained in the local working copy).\n\n if (incoming.participants || incoming.participants.length) {\n const toRemove = new Set();\n const toUpsert = new Map();\n\n incoming.participants.forEach((p) => {\n if (p.removed) {\n // Elements of the delta event's \"participants\" list with the\n // attribute `removed=true` should be removed from the working copy's\n // \"participants\" collection.\n toRemove.add(p.url);\n } else {\n // Elements of the delta events \"participants\" list that are absent\n // from the local working copy should be added to that collection.\n toUpsert.set(p.url, p);\n }\n });\n\n // The \"participants\" collection in the delta event should be merged with\n // that of the local working copy of the Locus such that elements in the\n // delta event's \"participants\" replace those with the same url value in\n // the working copy \"participants\" collection.\n const participants = next.participants.reduce((acc, p) => {\n if (!toRemove.has(p.url)) {\n acc[p.url] = p;\n }\n\n return acc;\n }, {});\n\n toUpsert.forEach((value, key) => {\n participants[key] = value;\n });\n\n next.participants = Object.values(participants);\n }\n\n return next;\n },\n\n /**\n * Signals to locus that the current user is done sharing their additional\n * media stream\n * @param {Types~Locus} locus\n * @param {Types~MediaShare} share\n * @returns {Promise}\n */\n releaseFloorGrant(locus, share) {\n return this.webex\n .request({\n uri: share.url,\n method: 'PUT',\n body: {\n floor: {\n disposition: 'RELEASED',\n },\n },\n })\n .then(({body}) => body);\n },\n\n /**\n * Signals to locus that the current user would like to share an additional\n * media stream\n * @param {Types~Locus} locus\n * @param {Types~MediaShare} share\n * @returns {Promise}\n */\n requestFloorGrant(locus, share) {\n return this.webex\n .request({\n uri: share.url,\n method: 'PUT',\n body: {\n floor: {\n beneficiary: {\n url: locus.self.url,\n devices: [{url: this.webex.internal.device.url}],\n },\n disposition: 'GRANTED',\n },\n },\n })\n .then(({body}) => body);\n },\n\n /**\n * Sends a string of DTMF tones to the locus\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @param {string} tones\n * @returns {Promise}\n */\n sendDtmf(locus, tones) {\n return this.request({\n method: 'POST',\n uri: `${locus.self.url}/sendDtmf`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n },\n\n /**\n * Fetches the delta for the locus from its syncUrl. *Does not merge*\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @returns {Types~LocusDelta}\n */\n sync(locus) {\n return (\n this.request({\n method: 'GET',\n uri: locus.syncUrl,\n })\n // the api may return a 204 no content, so we'll give back an empty\n // object in that case.\n .then((res) => res.body || {})\n );\n },\n\n /**\n * Send a new sdp to Linus via the Locus API to update media state (e.g. to\n * start or stop sending audio or video)\n * @instance\n * @memberof Locus\n * @param {Types~Locus} locus\n * @param {Object} options\n * @param {string} options.localSdp\n * @param {string} options.mediaId\n * @param {Boolean} options.audioMuted\n * @param {Boolean} options.videoMuted\n * @returns {Promise<Types~Locus>}\n */\n updateMedia(locus, {sdp, audioMuted, videoMuted, mediaId}) {\n const localSdp = {\n audioMuted,\n videoMuted,\n };\n\n if (sdp) {\n localSdp.type = 'SDP';\n localSdp.sdp = sdp;\n }\n\n return this.request({\n method: 'PUT',\n uri: `${locus.self.url}/media`,\n body: {\n deviceUrl: this.webex.internal.device.url,\n localMedias: [\n {\n localSdp: JSON.stringify(localSdp),\n mediaId,\n },\n ],\n sequence: locus.sequence,\n },\n }).then((res) => res.body.locus);\n },\n});\n\nexport default Locus;\n"],"mappings":"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"}
package/jest.config.js ADDED
@@ -0,0 +1,3 @@
1
+ const config = require('@webex/jest-config-legacy');
2
+
3
+ module.exports = config;
package/package.json CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-locus",
3
- "version": "3.0.0-bnr.4",
4
3
  "description": "",
5
4
  "license": "MIT",
6
5
  "main": "dist/index.js",
@@ -20,12 +19,34 @@
20
19
  ]
21
20
  },
22
21
  "dependencies": {
23
- "@webex/internal-plugin-locus": "workspace:^",
24
- "@webex/internal-plugin-mercury": "workspace:^",
25
- "@webex/test-helper-chai": "workspace:^",
26
- "@webex/test-helper-mock-webex": "workspace:^",
27
- "@webex/webex-core": "workspace:^",
22
+ "@webex/internal-plugin-mercury": "3.0.0",
23
+ "@webex/test-helper-chai": "3.0.0",
24
+ "@webex/test-helper-mock-webex": "3.0.0",
25
+ "@webex/webex-core": "3.0.0",
28
26
  "lodash": "^4.17.21",
29
27
  "uuid": "^3.3.2"
30
- }
31
- }
28
+ },
29
+ "scripts": {
30
+ "build": "yarn build:src",
31
+ "build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
32
+ "deploy:npm": "yarn npm publish",
33
+ "test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
34
+ "test:browser": "webex-legacy-tools test --integration --runner karma",
35
+ "test:style": "eslint ./src/**/*.*",
36
+ "test:unit": "webex-legacy-tools test --unit --runner jest"
37
+ },
38
+ "devDependencies": {
39
+ "@babel/core": "^7.17.10",
40
+ "@webex/babel-config-legacy": "0.0.0",
41
+ "@webex/eslint-config-legacy": "0.0.0",
42
+ "@webex/jest-config-legacy": "0.0.0",
43
+ "@webex/legacy-tools": "0.0.0",
44
+ "@webex/test-helper-chai": "3.0.0",
45
+ "@webex/test-helper-mocha": "3.0.0",
46
+ "@webex/test-helper-mock-webex": "3.0.0",
47
+ "@webex/test-helper-test-users": "3.0.0",
48
+ "eslint": "^8.24.0",
49
+ "prettier": "^2.7.1"
50
+ },
51
+ "version": "3.0.0"
52
+ }
package/process ADDED
@@ -0,0 +1 @@
1
+ module.exports = {browser: true};
@@ -1,23 +0,0 @@
1
- export declare const DESYNC: "DESYNC";
2
-
3
- export declare const EQUAL: "EQUAL";
4
-
5
- export declare const eventKeys: string[];
6
-
7
- export declare const FETCH: "FETCH";
8
-
9
- export declare const GREATER_THAN: "GREATER_THAN";
10
-
11
- export declare const LESS_THAN: "LESS_THAN";
12
-
13
- /**
14
- * @class
15
- */
16
- declare const Locus: any;
17
- export default Locus;
18
-
19
- export declare const USE_CURRENT: "USE_CURRENT";
20
-
21
- export declare const USE_INCOMING: "USE_INCOMING";
22
-
23
- export { }
@@ -1,11 +0,0 @@
1
- // This file is read by tools that parse documentation comments conforming to the TSDoc standard.
2
- // It should be published with your NPM package. It should not be tracked by Git.
3
- {
4
- "tsdocVersion": "0.12",
5
- "toolPackages": [
6
- {
7
- "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.34.4"
9
- }
10
- ]
11
- }
@@ -1,5 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
- export const locusEventKeys: string[];
5
- export default locusEventKeys;
@@ -1,4 +0,0 @@
1
- export default Locus;
2
- export { locusEventKeys as eventKeys } from "./event-keys";
3
- import Locus from "./locus";
4
- export { USE_INCOMING, USE_CURRENT, EQUAL, FETCH, GREATER_THAN, LESS_THAN, DESYNC } from "./locus";
@@ -1,12 +0,0 @@
1
- export const USE_INCOMING: "USE_INCOMING";
2
- export const USE_CURRENT: "USE_CURRENT";
3
- export const EQUAL: "EQUAL";
4
- export const FETCH: "FETCH";
5
- export const GREATER_THAN: "GREATER_THAN";
6
- export const LESS_THAN: "LESS_THAN";
7
- export const DESYNC: "DESYNC";
8
- export default Locus;
9
- /**
10
- * @class
11
- */
12
- declare const Locus: any;