@webex/plugin-device-manager 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;
@@ -7,7 +7,7 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
10
- var _merge2 = _interopRequireDefault(require("lodash/merge"));
10
+ var _lodash = require("lodash");
11
11
  var DeviceCollection = {
12
12
  devices: {},
13
13
  get: function get(deviceId) {
@@ -19,7 +19,7 @@ var DeviceCollection = {
19
19
  var existingDevice = this.devices[deviceId];
20
20
  if (existingDevice) {
21
21
  // already existing, merge for any new binding information
22
- (0, _merge2.default)(existingDevice, device);
22
+ (0, _lodash.merge)(existingDevice, device);
23
23
  } else {
24
24
  this.devices[deviceId] = device;
25
25
  }
@@ -31,6 +31,5 @@ var DeviceCollection = {
31
31
  return (0, _values.default)(this.devices);
32
32
  }
33
33
  };
34
- var _default = DeviceCollection;
35
- exports.default = _default;
34
+ var _default = exports.default = DeviceCollection;
36
35
  //# sourceMappingURL=collection.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DeviceCollection","devices","get","deviceId","set","device","id","identity","existingDevice","reset","getAll"],"sources":["collection.js"],"sourcesContent":["import {merge} from 'lodash';\n\nconst DeviceCollection = {\n devices: {},\n\n get(deviceId) {\n return this.devices[deviceId];\n },\n\n set(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n // check if the device is already existing, if so then merge else add\n const existingDevice = this.devices[deviceId];\n\n if (existingDevice) {\n // already existing, merge for any new binding information\n merge(existingDevice, device);\n } else {\n this.devices[deviceId] = device;\n }\n },\n\n reset() {\n this.devices = {};\n },\n\n getAll() {\n return Object.values(this.devices);\n },\n};\n\nexport default DeviceCollection;\n"],"mappings":";;;;;;;;;;AAEA,IAAMA,gBAAgB,GAAG;EACvBC,OAAO,EAAE,CAAC,CAAC;EAEXC,GAAG,eAACC,QAAQ,EAAE;IACZ,OAAO,IAAI,CAACF,OAAO,CAACE,QAAQ,CAAC;EAC/B,CAAC;EAEDC,GAAG,eAACC,MAAM,EAAE;IACV,IAAMF,QAAQ,GAAGE,MAAM,CAACC,EAAE,IAAKD,MAAM,CAACE,QAAQ,IAAIF,MAAM,CAACE,QAAQ,CAACD,EAAG;IACrE;IACA,IAAME,cAAc,GAAG,IAAI,CAACP,OAAO,CAACE,QAAQ,CAAC;IAE7C,IAAIK,cAAc,EAAE;MAClB;MACA,qBAAMA,cAAc,EAAEH,MAAM,CAAC;IAC/B,CAAC,MAAM;MACL,IAAI,CAACJ,OAAO,CAACE,QAAQ,CAAC,GAAGE,MAAM;IACjC;EACF,CAAC;EAEDI,KAAK,mBAAG;IACN,IAAI,CAACR,OAAO,GAAG,CAAC,CAAC;EACnB,CAAC;EAEDS,MAAM,oBAAG;IACP,OAAO,qBAAc,IAAI,CAACT,OAAO,CAAC;EACpC;AACF,CAAC;AAAC,eAEaD,gBAAgB;AAAA"}
1
+ {"version":3,"names":["_lodash","require","DeviceCollection","devices","get","deviceId","set","device","id","identity","existingDevice","merge","reset","getAll","_values","default","_default","exports"],"sources":["collection.js"],"sourcesContent":["import {merge} from 'lodash';\n\nconst DeviceCollection = {\n devices: {},\n\n get(deviceId) {\n return this.devices[deviceId];\n },\n\n set(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n // check if the device is already existing, if so then merge else add\n const existingDevice = this.devices[deviceId];\n\n if (existingDevice) {\n // already existing, merge for any new binding information\n merge(existingDevice, device);\n } else {\n this.devices[deviceId] = device;\n }\n },\n\n reset() {\n this.devices = {};\n },\n\n getAll() {\n return Object.values(this.devices);\n },\n};\n\nexport default DeviceCollection;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAMC,gBAAgB,GAAG;EACvBC,OAAO,EAAE,CAAC,CAAC;EAEXC,GAAG,WAAAA,IAACC,QAAQ,EAAE;IACZ,OAAO,IAAI,CAACF,OAAO,CAACE,QAAQ,CAAC;EAC/B,CAAC;EAEDC,GAAG,WAAAA,IAACC,MAAM,EAAE;IACV,IAAMF,QAAQ,GAAGE,MAAM,CAACC,EAAE,IAAKD,MAAM,CAACE,QAAQ,IAAIF,MAAM,CAACE,QAAQ,CAACD,EAAG;IACrE;IACA,IAAME,cAAc,GAAG,IAAI,CAACP,OAAO,CAACE,QAAQ,CAAC;IAE7C,IAAIK,cAAc,EAAE;MAClB;MACA,IAAAC,aAAK,EAACD,cAAc,EAAEH,MAAM,CAAC;IAC/B,CAAC,MAAM;MACL,IAAI,CAACJ,OAAO,CAACE,QAAQ,CAAC,GAAGE,MAAM;IACjC;EACF,CAAC;EAEDK,KAAK,WAAAA,MAAA,EAAG;IACN,IAAI,CAACT,OAAO,GAAG,CAAC,CAAC;EACnB,CAAC;EAEDU,MAAM,WAAAA,OAAA,EAAG;IACP,OAAO,IAAAC,OAAA,CAAAC,OAAA,EAAc,IAAI,CAACZ,OAAO,CAAC;EACpC;AACF,CAAC;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAEab,gBAAgB"}
package/dist/config.js CHANGED
@@ -5,6 +5,5 @@ _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _default = {};
9
- exports.default = _default;
8
+ var _default = exports.default = {};
10
9
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["config.js"],"sourcesContent":["export default {};\n"],"mappings":";;;;;;;eAAe,CAAC,CAAC;AAAA"}
1
+ {"version":3,"names":[],"sources":["config.js"],"sourcesContent":["export default {};\n"],"mappings":";;;;;;;iCAAe,CAAC,CAAC"}
package/dist/constants.js CHANGED
@@ -5,10 +5,7 @@ _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.UC_CLOUD = exports.LYRA_SPACE = exports.DEFAULT_PRODUCT_NAME = void 0;
8
- var LYRA_SPACE = 'LYRA_SPACE';
9
- exports.LYRA_SPACE = LYRA_SPACE;
10
- var UC_CLOUD = 'uc-cloud';
11
- exports.UC_CLOUD = UC_CLOUD;
12
- var DEFAULT_PRODUCT_NAME = 'default';
13
- exports.DEFAULT_PRODUCT_NAME = DEFAULT_PRODUCT_NAME;
8
+ var LYRA_SPACE = exports.LYRA_SPACE = 'LYRA_SPACE';
9
+ var UC_CLOUD = exports.UC_CLOUD = 'uc-cloud';
10
+ var DEFAULT_PRODUCT_NAME = exports.DEFAULT_PRODUCT_NAME = 'default';
14
11
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LYRA_SPACE","UC_CLOUD","DEFAULT_PRODUCT_NAME"],"sources":["constants.js"],"sourcesContent":["export const LYRA_SPACE = 'LYRA_SPACE';\nexport const UC_CLOUD = 'uc-cloud';\nexport const DEFAULT_PRODUCT_NAME = 'default';\n"],"mappings":";;;;;;;AAAO,IAAMA,UAAU,GAAG,YAAY;AAAC;AAChC,IAAMC,QAAQ,GAAG,UAAU;AAAC;AAC5B,IAAMC,oBAAoB,GAAG,SAAS;AAAC"}
1
+ {"version":3,"names":["LYRA_SPACE","exports","UC_CLOUD","DEFAULT_PRODUCT_NAME"],"sources":["constants.js"],"sourcesContent":["export const LYRA_SPACE = 'LYRA_SPACE';\nexport const UC_CLOUD = 'uc-cloud';\nexport const DEFAULT_PRODUCT_NAME = 'default';\n"],"mappings":";;;;;;;AAAO,IAAMA,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,YAAY;AAC/B,IAAME,QAAQ,GAAAD,OAAA,CAAAC,QAAA,GAAG,UAAU;AAC3B,IAAMC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,GAAG,SAAS"}
@@ -7,13 +7,17 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
10
- var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
10
+ var _lodash = require("lodash");
11
11
  require("@webex/internal-plugin-lyra");
12
12
  require("@webex/internal-plugin-search");
13
13
  var _webexCore = require("@webex/webex-core");
14
14
  var _uuid = _interopRequireDefault(require("uuid"));
15
15
  var _constants = require("./constants");
16
16
  var _collection = _interopRequireDefault(require("./collection"));
17
+ /*!
18
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
19
+ */
20
+
17
21
  var DeviceManager = _webexCore.WebexPlugin.extend({
18
22
  namespace: 'DeviceManager',
19
23
  _devicePendingPinChallenge: null,
@@ -441,7 +445,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
441
445
  if (!deviceArray.length) {
442
446
  return _promise.default.resolve(deviceArray);
443
447
  }
444
- var devices = (0, _cloneDeep2.default)(deviceArray);
448
+ var devices = (0, _lodash.cloneDeep)(deviceArray);
445
449
  return _promise.default.all(devices.map(function (device, index) {
446
450
  return _this12.webex.internal.services.waitForCatalog('postauth').then(function () {
447
451
  if (device.deviceClass === _constants.UC_CLOUD) {
@@ -464,7 +468,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
464
468
  _decryptDeviceName: function _decryptDeviceName() {
465
469
  var _this13 = this;
466
470
  var inDevice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
467
- var device = (0, _cloneDeep2.default)(inDevice);
471
+ var device = (0, _lodash.cloneDeep)(inDevice);
468
472
  if (device.metadata && device.metadata.encryptedUserAssignedName && device.metadata.encryptionKeyUrl) {
469
473
  return this.webex.internal.encryption.decryptText(device.metadata.encryptionKeyUrl, device.metadata.encryptedUserAssignedName).then(function (decryptedDeviceName) {
470
474
  // set userAssignedName as the decypted value, unset encryptedUserAssignedName since it's not needed
@@ -520,8 +524,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
520
524
  }
521
525
  return _promise.default.resolve();
522
526
  },
523
- version: "3.0.0-bnr.4"
527
+ version: "3.0.0"
524
528
  });
525
- var _default = DeviceManager;
526
- exports.default = _default;
529
+ var _default = exports.default = DeviceManager;
527
530
  //# sourceMappingURL=device-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DeviceManager","WebexPlugin","extend","namespace","_devicePendingPinChallenge","_pairedDevice","_boundSpace","initialize","webex","internal","mercury","on","data","_receiveDeviceUpdates","getAll","DeviceCollection","refresh","reset","request","api","resource","then","res","body","reject","_updateDeviceMetadata","items","devices","forEach","device","deviceInfo","machineType","LYRA_SPACE","lyra","space","get","catch","err","logger","error","set","search","options","searchQuery","Error","people","searchId","uuid","v4","searchType","searchEntity","includePeople","includeRooms","queryString","upsert","deviceId","id","identity","existingDevice","resolve","method","auxDevice","_decryptDeviceName","token","getAdvertisedEndpoint","advertiser","result","displayName","remove","requestPin","url","dev","occupants","pinChallenge","info","join","passType","verificationInitiation","pair","pin","unpair","leave","bindSpace","kmsResourceObjectUrl","bindConversation","unbindSpace","unbindConversation","getAudioState","putAudioState","audioState","mute","unmute","increaseVolume","decreaseVolume","setVolume","level","deviceArray","length","all","map","index","services","waitForCatalog","deviceClass","UC_CLOUD","updatedDevice","inDevice","metadata","encryptedUserAssignedName","encryptionKeyUrl","encryption","decryptText","decryptedDeviceName","undefined","userAssignedName","spaceUrl","substring","lastIndexOf","self","verified","productName","DEFAULT_PRODUCT_NAME","pairedDeviceId"],"sources":["device-manager.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {cloneDeep} from 'lodash';\nimport '@webex/internal-plugin-lyra';\nimport '@webex/internal-plugin-search';\nimport {WebexPlugin} from '@webex/webex-core';\nimport uuid from 'uuid';\n\nimport {LYRA_SPACE, UC_CLOUD, DEFAULT_PRODUCT_NAME} from './constants';\nimport DeviceCollection from './collection';\n\nconst DeviceManager = WebexPlugin.extend({\n namespace: 'DeviceManager',\n _devicePendingPinChallenge: null,\n _pairedDevice: null,\n _boundSpace: null,\n\n initialize() {\n // Lyra mercury events listener\n this.webex.internal.mercury.on('event:lyra.space_updated', ({data}) => {\n this._receiveDeviceUpdates(data);\n });\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n getAll() {\n return DeviceCollection.getAll();\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n refresh() {\n DeviceCollection.reset();\n\n return this.webex\n .request({\n api: 'wdm',\n resource: 'devices/auxiliary',\n })\n .then((res) => {\n if (!res.body) {\n return Promise.reject();\n }\n\n return this._updateDeviceMetadata(res.body.items).then((devices) => {\n /* eslint-disable consistent-return */\n devices.forEach((device) => {\n if (device.deviceInfo && device.deviceInfo.machineType === LYRA_SPACE) {\n return this.webex.internal.lyra.space.get(device.deviceInfo).catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to receive device info', err);\n });\n }\n });\n /* eslint-enable consistent-return */\n res.body.items.forEach((device) => {\n DeviceCollection.set(device);\n });\n\n return this.getAll();\n });\n })\n .catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to fetch recent devices', err);\n });\n },\n\n /**\n * Search for a device by name\n * @param {Object} options\n * @param {string} options.searchQuery\n * @returns {Promise<Device>}\n */\n search(options) {\n if (!options || !options.searchQuery) {\n this.logger.error('DeviceManager#search: options.searchQuery is required');\n\n return Promise.reject(new Error('DeviceManager#search: options.searchQuery is required'));\n }\n\n return this.webex.internal.search\n .people({\n searchId: uuid.v4(),\n searchType: 'DEVICE_SEARCH',\n searchEntity: 'device',\n includePeople: false,\n includeRooms: true,\n queryString: options.searchQuery,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#search: failed to search a device', err);\n\n throw err;\n });\n },\n\n /**\n * Caches the device info and also registers to Redis for subsequent fetches\n * @param {Object} device\n * @param {string} device.id\n * @returns {deviceInfo}\n */\n upsert(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#upsert: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#upsert: device.id is required'));\n }\n this._pairedDevice = this._devicePendingPinChallenge;\n this._devicePendingPinChallenge = null;\n // check if the device is already existing, if so then merge else add\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n }\n\n // new device requested, add to wdm for subsequent retreivals\n return (\n this.webex\n .request({\n api: 'wdm',\n method: 'PUT',\n resource: `devices/auxiliary/Room/${deviceId}`,\n })\n .then((res) => {\n const auxDevice = res.body;\n\n return this._decryptDeviceName(auxDevice);\n })\n // eslint-disable-next-line no-shadow\n .then((device) => {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#upsert: failed to add/update a device', err);\n\n return Promise.reject(err);\n })\n );\n },\n\n /**\n * Retreives device info of a particular device\n * @param {string} token\n * @returns {Promise<deviceInfo>}\n */\n get(token) {\n if (!token) {\n this.logger.error('DeviceManager#get: token is required');\n\n return Promise.reject(new Error('DeviceManager#get: token is required'));\n }\n let deviceInfo;\n\n return this.webex.internal.lyra\n .getAdvertisedEndpoint(token)\n .then((res) => {\n deviceInfo = res;\n\n return this.webex.internal.lyra.space.get({id: res.advertiser.id});\n })\n .then((result) => {\n // the deviceInfo doesn't have proper displayName, hence update\n // displayName on deviceInfo for search to work\n if (result && result.identity && result.identity.displayName) {\n deviceInfo.advertiser.displayName = result.identity.displayName;\n }\n\n return deviceInfo;\n })\n .catch((err) => {\n this.logger.error('DeviceManager#get: failed to get device info', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Unregisters the device from Redis, will not fetch in subsequent loads,\n * similar to space.deleteBinding()\n * @param {string} deviceId\n * @returns {Promise<deviceInfo>}\n */\n remove(deviceId) {\n if (!deviceId) {\n this.logger.error('DeviceManager#remove: deviceId is required');\n\n return Promise.reject(new Error('DeviceManager#remove: deviceId is required'));\n }\n\n return this.webex\n .request({\n method: 'delete',\n api: 'wdm',\n resource: `devices/auxiliary/${deviceId}`,\n })\n .catch((error) => {\n this.logger.error('DeviceManager#remove: failed to remove the device', error);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Requests to display PIN on the device\n * @param {object} device\n * @param {object} options\n * @param {object} options.data\n * @returns {Promise<deviceInfo>}\n */\n requestPin(device, options = {}) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#requestPin: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#requestPin: device.id is required'));\n }\n const space = {id: deviceId, url: `/spaces/${deviceId}`};\n\n return this.webex.internal.lyra.space\n .get(space)\n .then((dev) => {\n // check if the space is pinChallenge capable\n if (dev && dev.occupants && dev.occupants.pinChallenge) {\n this.logger.info('DeviceManager#requestPin: space is PIN challenge capable');\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'MANUAL',\n verificationInitiation: 'PIN',\n data: options.data,\n })\n .then(() => {\n this._devicePendingPinChallenge = dev;\n\n // return the actual device so that it can be upserted on successful\n // PIN exchange\n return dev;\n });\n }\n // pairs with the space if it's not PIN challenge capable\n this.logger.info(\n 'DeviceManager#requestPin: space is not PIN challenge capable, probably already occupied, will still return device info'\n );\n\n return this.webex.internal.lyra.space.get(space).then(() => Promise.resolve(dev));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#requestPin: device failed PIN challenge request', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * pairs the device with the user (manual pairing), also adds it to\n * user's recents list for subsequent fetches.\n * similar to space.join()\n * @param {object} options\n * @param {number} options.pin\n * @returns {Promise<deviceInfo>}\n */\n pair(options = {}) {\n if (!options.pin) {\n this.logger.error('DeviceManager#pair: options.pin is required');\n\n return Promise.reject(new Error('DeviceManager#pair: options.pin is required'));\n }\n if (this._devicePendingPinChallenge) {\n const space = {\n id: this._devicePendingPinChallenge.identity.id,\n url: `/spaces/${this._devicePendingPinChallenge.identity.id}`,\n };\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'PIN_ANSWER',\n data: options.pin,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#pair: incorrect PIN, unable to pair ', err);\n\n return Promise.reject(err);\n })\n .then(() => this.upsert(this._devicePendingPinChallenge));\n }\n this.logger.error('DeviceManager#pair: no device to pair');\n\n return Promise.reject(new Error('DeviceManager#pair: no device to pair'));\n },\n\n /**\n * unpairs the device with the user (manual/ultrasonic pairing), but still\n * keeps in the recents list/does not remove from Redis\n * options.removeAllDevices will remove all associated devices to user\n * similar to space.leave()\n * @param {object} options\n * @param {boolean} options.removeAllDevices\n * @returns {Promise<deviceInfo>}\n */\n unpair(options = {}) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unpair: no device to unpair');\n\n return Promise.reject(new Error('DeviceManager#unpair: no device to unpair'));\n }\n const space = {url: `/spaces/${this._pairedDevice.identity.id}`};\n\n return this.webex.internal.lyra.space.leave(space, options).catch((err) => {\n this.logger.error('DeviceManager#unpair: failed to remove device from Lyra', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * binds the space to the paired device (if supported)\n * similar to space.bindConversation()\n * @param {object} options\n * @param {boolean} options.url, conversation url\n * @param {boolean} options.kmsResourceObjectUrl of the convo\n * @returns {Promise<deviceInfo>}\n */\n bindSpace(options = {}) {\n if (!options.url) {\n this.logger.error('DeviceManager#pair: options.url is required');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: options.url is required'));\n }\n if (!options.kmsResourceObjectUrl) {\n this.logger.error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required');\n\n return Promise.reject(\n new Error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required')\n );\n }\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#bindSpace: No device paired currently');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: No device paired currently'));\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n this._boundSpace = {\n kmsResourceObjectUrl: options.kmsResourceObjectUrl,\n url: options.url,\n };\n\n return this.webex.internal.lyra.space.bindConversation(space, this._boundSpace).catch((err) => {\n this.logger.error('DeviceManager#bindSpace: failed to bind device to Space');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * unbinds the space to the paired device (if supported)\n * similar to space.unbindConversation()\n * @returns {Promise<deviceInfo>}\n */\n unbindSpace() {\n if (!this._pairedDevice || !this._boundSpace) {\n this.logger.error('DeviceManager#unbindSpace: No space currently bound to the device');\n\n return Promise.reject(\n new Error('DeviceManager#unbindSpace: No space currently bound to the device')\n );\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n return this.webex.internal.lyra.space\n .unbindConversation(space, this._boundSpace)\n .then((res) => {\n this._boundSpace = null;\n\n return Promise.resolve(res);\n })\n .catch((err) => {\n this.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Gets the audio state of the paired device\n * similar to device.getAudioState()\n * @returns {Promise<audioState>}\n */\n getAudioState() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#getAudioState: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#getAudioState: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.getAudioState(this._pairedDevice);\n },\n\n /**\n * Updates audio state of the paired device, should be called every 10 minutes\n * or when mic or volume state is changed\n * similar to device.putAudioState()\n * @param {object} space\n * @param {object} audioState\n * @returns {Promise<audioState>}\n */\n putAudioState(space, audioState = {}) {\n return this.webex.internal.lyra.device.putAudioState(space, audioState);\n },\n\n /**\n * Mutes paired device\n * similar to device.mute()\n * @returns {Promise<audioState>}\n */\n mute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#mute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#mute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.mute(this._pairedDevice);\n },\n\n /**\n * Unmutes paired device\n * similar to device.unmute()\n * @returns {Promise<audioState>}\n */\n unmute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unmute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#unmute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.unmute(this._pairedDevice);\n },\n\n /**\n * Increases paired device's volume\n * similar to device.increaseVolume()\n * @returns {Promise<audioState>}\n */\n increaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#increaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#increaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.increaseVolume(this._pairedDevice);\n },\n\n /**\n * Decreases paired device's volume\n * similar to device.decreaseVolume()\n * @returns {Promise<audioState>}\n */\n decreaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#decreaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#decreaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.decreaseVolume(this._pairedDevice);\n },\n\n /**\n * Sets paired device's volume but should use increase and decrease api instead\n * similar to device.setVolume()\n * @param {number} level\n * @returns {Promise<audioState>}\n */\n setVolume(level = 0) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#setVolume: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#setVolume: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.setVolume(this._pairedDevice, level);\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {Array} deviceArray\n * @returns {device}\n */\n _updateDeviceMetadata(deviceArray = []) {\n if (!deviceArray.length) {\n return Promise.resolve(deviceArray);\n }\n const devices = cloneDeep(deviceArray);\n\n return Promise.all(\n devices.map((device, index) =>\n this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => {\n if (device.deviceClass === UC_CLOUD) {\n device.id = `${this.webex.internal.services.get('wdm')}/${device.id}`;\n }\n\n return this._decryptDeviceName(device);\n })\n .then((updatedDevice) => {\n devices[index] = updatedDevice;\n\n return Promise.resolve();\n })\n )\n ).then(() => Promise.resolve(devices));\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {object} inDevice\n * @returns {device}\n */\n _decryptDeviceName(inDevice = {}) {\n const device = cloneDeep(inDevice);\n\n if (\n device.metadata &&\n device.metadata.encryptedUserAssignedName &&\n device.metadata.encryptionKeyUrl\n ) {\n return this.webex.internal.encryption\n .decryptText(device.metadata.encryptionKeyUrl, device.metadata.encryptedUserAssignedName)\n .then((decryptedDeviceName) => {\n // set userAssignedName as the decypted value, unset encryptedUserAssignedName since it's not needed\n device.metadata.encryptedUserAssignedName = undefined;\n device.metadata.userAssignedName = decryptedDeviceName;\n\n return Promise.resolve(device);\n })\n .catch((err) => {\n // unset encryptedUserAssignedName if failed to decrypt\n device.metadata.encryptedUserAssignedName = undefined;\n this.logger.error(\n 'DeviceCollection#_decryptDeviceName: failed to decrypt device name',\n err\n );\n });\n }\n\n return Promise.resolve(device);\n },\n\n /**\n * Utility function to update device info on mercury updates\n * @param {object} device\n * @returns {device}\n */\n _receiveDeviceUpdates(device) {\n // we care only the updates are for the registered devices\n if (device && device.spaceUrl) {\n const deviceId = device.spaceUrl.substring(device.spaceUrl.lastIndexOf('/') + 1);\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n return this.webex.internal.lyra.space\n .get({id: deviceId})\n .then((space) => {\n // eslint-disable-next-line no-shadow\n const device = DeviceCollection.get(deviceId);\n\n if (\n device &&\n space.occupants &&\n (!space.occupants.self || !space.occupants.self.verified)\n ) {\n device.productName =\n (space.devices && space.devices[0] && space.devices[0].productName) ||\n DEFAULT_PRODUCT_NAME;\n // pin challenge is not verified reset _pairedDevice if ids\n // match\n const pairedDeviceId =\n this._pairedDevice && (this._pairedDevice.id || this._pairedDevice.identity.id);\n\n if (pairedDeviceId === deviceId) {\n this._pairedDevice = null;\n this.logger.info(\n `DeviceManager#_receiveDeviceUpdates: device ${deviceId} lost pairing`\n );\n\n return Promise.resolve();\n }\n // we do not want to reset the device pending PIN challenge\n if (this._devicePendingPinChallenge.identity.id !== deviceId) {\n return this.upsert(device);\n }\n\n return Promise.resolve();\n }\n\n return Promise.resolve();\n })\n .catch((err) => {\n this.logger.error(\n 'DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space',\n err\n );\n });\n }\n }\n\n return Promise.resolve();\n },\n});\n\nexport default DeviceManager;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lodash","require","_webexCore","_uuid","_interopRequireDefault","_constants","_collection","DeviceManager","WebexPlugin","extend","namespace","_devicePendingPinChallenge","_pairedDevice","_boundSpace","initialize","_this","webex","internal","mercury","on","_ref","data","_receiveDeviceUpdates","getAll","DeviceCollection","refresh","_this2","reset","request","api","resource","then","res","body","_promise","default","reject","_updateDeviceMetadata","items","devices","forEach","device","deviceInfo","machineType","LYRA_SPACE","lyra","space","get","catch","err","logger","error","set","search","options","_this3","searchQuery","Error","people","searchId","uuid","v4","searchType","searchEntity","includePeople","includeRooms","queryString","upsert","_this4","deviceId","id","identity","existingDevice","resolve","method","concat","auxDevice","_decryptDeviceName","token","_this5","getAdvertisedEndpoint","advertiser","result","displayName","remove","_this6","requestPin","_this7","arguments","length","undefined","url","dev","occupants","pinChallenge","info","join","passType","verificationInitiation","pair","_this8","pin","unpair","_this9","leave","bindSpace","_this10","kmsResourceObjectUrl","bindConversation","unbindSpace","_this11","unbindConversation","getAudioState","putAudioState","audioState","mute","unmute","increaseVolume","decreaseVolume","setVolume","level","_this12","deviceArray","cloneDeep","all","map","index","services","waitForCatalog","deviceClass","UC_CLOUD","updatedDevice","_this13","inDevice","metadata","encryptedUserAssignedName","encryptionKeyUrl","encryption","decryptText","decryptedDeviceName","userAssignedName","_this14","spaceUrl","substring","lastIndexOf","self","verified","productName","DEFAULT_PRODUCT_NAME","pairedDeviceId","version","_default","exports"],"sources":["device-manager.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {cloneDeep} from 'lodash';\nimport '@webex/internal-plugin-lyra';\nimport '@webex/internal-plugin-search';\nimport {WebexPlugin} from '@webex/webex-core';\nimport uuid from 'uuid';\n\nimport {LYRA_SPACE, UC_CLOUD, DEFAULT_PRODUCT_NAME} from './constants';\nimport DeviceCollection from './collection';\n\nconst DeviceManager = WebexPlugin.extend({\n namespace: 'DeviceManager',\n _devicePendingPinChallenge: null,\n _pairedDevice: null,\n _boundSpace: null,\n\n initialize() {\n // Lyra mercury events listener\n this.webex.internal.mercury.on('event:lyra.space_updated', ({data}) => {\n this._receiveDeviceUpdates(data);\n });\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n getAll() {\n return DeviceCollection.getAll();\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n refresh() {\n DeviceCollection.reset();\n\n return this.webex\n .request({\n api: 'wdm',\n resource: 'devices/auxiliary',\n })\n .then((res) => {\n if (!res.body) {\n return Promise.reject();\n }\n\n return this._updateDeviceMetadata(res.body.items).then((devices) => {\n /* eslint-disable consistent-return */\n devices.forEach((device) => {\n if (device.deviceInfo && device.deviceInfo.machineType === LYRA_SPACE) {\n return this.webex.internal.lyra.space.get(device.deviceInfo).catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to receive device info', err);\n });\n }\n });\n /* eslint-enable consistent-return */\n res.body.items.forEach((device) => {\n DeviceCollection.set(device);\n });\n\n return this.getAll();\n });\n })\n .catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to fetch recent devices', err);\n });\n },\n\n /**\n * Search for a device by name\n * @param {Object} options\n * @param {string} options.searchQuery\n * @returns {Promise<Device>}\n */\n search(options) {\n if (!options || !options.searchQuery) {\n this.logger.error('DeviceManager#search: options.searchQuery is required');\n\n return Promise.reject(new Error('DeviceManager#search: options.searchQuery is required'));\n }\n\n return this.webex.internal.search\n .people({\n searchId: uuid.v4(),\n searchType: 'DEVICE_SEARCH',\n searchEntity: 'device',\n includePeople: false,\n includeRooms: true,\n queryString: options.searchQuery,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#search: failed to search a device', err);\n\n throw err;\n });\n },\n\n /**\n * Caches the device info and also registers to Redis for subsequent fetches\n * @param {Object} device\n * @param {string} device.id\n * @returns {deviceInfo}\n */\n upsert(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#upsert: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#upsert: device.id is required'));\n }\n this._pairedDevice = this._devicePendingPinChallenge;\n this._devicePendingPinChallenge = null;\n // check if the device is already existing, if so then merge else add\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n }\n\n // new device requested, add to wdm for subsequent retreivals\n return (\n this.webex\n .request({\n api: 'wdm',\n method: 'PUT',\n resource: `devices/auxiliary/Room/${deviceId}`,\n })\n .then((res) => {\n const auxDevice = res.body;\n\n return this._decryptDeviceName(auxDevice);\n })\n // eslint-disable-next-line no-shadow\n .then((device) => {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#upsert: failed to add/update a device', err);\n\n return Promise.reject(err);\n })\n );\n },\n\n /**\n * Retreives device info of a particular device\n * @param {string} token\n * @returns {Promise<deviceInfo>}\n */\n get(token) {\n if (!token) {\n this.logger.error('DeviceManager#get: token is required');\n\n return Promise.reject(new Error('DeviceManager#get: token is required'));\n }\n let deviceInfo;\n\n return this.webex.internal.lyra\n .getAdvertisedEndpoint(token)\n .then((res) => {\n deviceInfo = res;\n\n return this.webex.internal.lyra.space.get({id: res.advertiser.id});\n })\n .then((result) => {\n // the deviceInfo doesn't have proper displayName, hence update\n // displayName on deviceInfo for search to work\n if (result && result.identity && result.identity.displayName) {\n deviceInfo.advertiser.displayName = result.identity.displayName;\n }\n\n return deviceInfo;\n })\n .catch((err) => {\n this.logger.error('DeviceManager#get: failed to get device info', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Unregisters the device from Redis, will not fetch in subsequent loads,\n * similar to space.deleteBinding()\n * @param {string} deviceId\n * @returns {Promise<deviceInfo>}\n */\n remove(deviceId) {\n if (!deviceId) {\n this.logger.error('DeviceManager#remove: deviceId is required');\n\n return Promise.reject(new Error('DeviceManager#remove: deviceId is required'));\n }\n\n return this.webex\n .request({\n method: 'delete',\n api: 'wdm',\n resource: `devices/auxiliary/${deviceId}`,\n })\n .catch((error) => {\n this.logger.error('DeviceManager#remove: failed to remove the device', error);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Requests to display PIN on the device\n * @param {object} device\n * @param {object} options\n * @param {object} options.data\n * @returns {Promise<deviceInfo>}\n */\n requestPin(device, options = {}) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#requestPin: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#requestPin: device.id is required'));\n }\n const space = {id: deviceId, url: `/spaces/${deviceId}`};\n\n return this.webex.internal.lyra.space\n .get(space)\n .then((dev) => {\n // check if the space is pinChallenge capable\n if (dev && dev.occupants && dev.occupants.pinChallenge) {\n this.logger.info('DeviceManager#requestPin: space is PIN challenge capable');\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'MANUAL',\n verificationInitiation: 'PIN',\n data: options.data,\n })\n .then(() => {\n this._devicePendingPinChallenge = dev;\n\n // return the actual device so that it can be upserted on successful\n // PIN exchange\n return dev;\n });\n }\n // pairs with the space if it's not PIN challenge capable\n this.logger.info(\n 'DeviceManager#requestPin: space is not PIN challenge capable, probably already occupied, will still return device info'\n );\n\n return this.webex.internal.lyra.space.get(space).then(() => Promise.resolve(dev));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#requestPin: device failed PIN challenge request', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * pairs the device with the user (manual pairing), also adds it to\n * user's recents list for subsequent fetches.\n * similar to space.join()\n * @param {object} options\n * @param {number} options.pin\n * @returns {Promise<deviceInfo>}\n */\n pair(options = {}) {\n if (!options.pin) {\n this.logger.error('DeviceManager#pair: options.pin is required');\n\n return Promise.reject(new Error('DeviceManager#pair: options.pin is required'));\n }\n if (this._devicePendingPinChallenge) {\n const space = {\n id: this._devicePendingPinChallenge.identity.id,\n url: `/spaces/${this._devicePendingPinChallenge.identity.id}`,\n };\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'PIN_ANSWER',\n data: options.pin,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#pair: incorrect PIN, unable to pair ', err);\n\n return Promise.reject(err);\n })\n .then(() => this.upsert(this._devicePendingPinChallenge));\n }\n this.logger.error('DeviceManager#pair: no device to pair');\n\n return Promise.reject(new Error('DeviceManager#pair: no device to pair'));\n },\n\n /**\n * unpairs the device with the user (manual/ultrasonic pairing), but still\n * keeps in the recents list/does not remove from Redis\n * options.removeAllDevices will remove all associated devices to user\n * similar to space.leave()\n * @param {object} options\n * @param {boolean} options.removeAllDevices\n * @returns {Promise<deviceInfo>}\n */\n unpair(options = {}) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unpair: no device to unpair');\n\n return Promise.reject(new Error('DeviceManager#unpair: no device to unpair'));\n }\n const space = {url: `/spaces/${this._pairedDevice.identity.id}`};\n\n return this.webex.internal.lyra.space.leave(space, options).catch((err) => {\n this.logger.error('DeviceManager#unpair: failed to remove device from Lyra', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * binds the space to the paired device (if supported)\n * similar to space.bindConversation()\n * @param {object} options\n * @param {boolean} options.url, conversation url\n * @param {boolean} options.kmsResourceObjectUrl of the convo\n * @returns {Promise<deviceInfo>}\n */\n bindSpace(options = {}) {\n if (!options.url) {\n this.logger.error('DeviceManager#pair: options.url is required');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: options.url is required'));\n }\n if (!options.kmsResourceObjectUrl) {\n this.logger.error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required');\n\n return Promise.reject(\n new Error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required')\n );\n }\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#bindSpace: No device paired currently');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: No device paired currently'));\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n this._boundSpace = {\n kmsResourceObjectUrl: options.kmsResourceObjectUrl,\n url: options.url,\n };\n\n return this.webex.internal.lyra.space.bindConversation(space, this._boundSpace).catch((err) => {\n this.logger.error('DeviceManager#bindSpace: failed to bind device to Space');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * unbinds the space to the paired device (if supported)\n * similar to space.unbindConversation()\n * @returns {Promise<deviceInfo>}\n */\n unbindSpace() {\n if (!this._pairedDevice || !this._boundSpace) {\n this.logger.error('DeviceManager#unbindSpace: No space currently bound to the device');\n\n return Promise.reject(\n new Error('DeviceManager#unbindSpace: No space currently bound to the device')\n );\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n return this.webex.internal.lyra.space\n .unbindConversation(space, this._boundSpace)\n .then((res) => {\n this._boundSpace = null;\n\n return Promise.resolve(res);\n })\n .catch((err) => {\n this.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Gets the audio state of the paired device\n * similar to device.getAudioState()\n * @returns {Promise<audioState>}\n */\n getAudioState() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#getAudioState: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#getAudioState: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.getAudioState(this._pairedDevice);\n },\n\n /**\n * Updates audio state of the paired device, should be called every 10 minutes\n * or when mic or volume state is changed\n * similar to device.putAudioState()\n * @param {object} space\n * @param {object} audioState\n * @returns {Promise<audioState>}\n */\n putAudioState(space, audioState = {}) {\n return this.webex.internal.lyra.device.putAudioState(space, audioState);\n },\n\n /**\n * Mutes paired device\n * similar to device.mute()\n * @returns {Promise<audioState>}\n */\n mute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#mute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#mute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.mute(this._pairedDevice);\n },\n\n /**\n * Unmutes paired device\n * similar to device.unmute()\n * @returns {Promise<audioState>}\n */\n unmute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unmute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#unmute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.unmute(this._pairedDevice);\n },\n\n /**\n * Increases paired device's volume\n * similar to device.increaseVolume()\n * @returns {Promise<audioState>}\n */\n increaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#increaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#increaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.increaseVolume(this._pairedDevice);\n },\n\n /**\n * Decreases paired device's volume\n * similar to device.decreaseVolume()\n * @returns {Promise<audioState>}\n */\n decreaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#decreaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#decreaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.decreaseVolume(this._pairedDevice);\n },\n\n /**\n * Sets paired device's volume but should use increase and decrease api instead\n * similar to device.setVolume()\n * @param {number} level\n * @returns {Promise<audioState>}\n */\n setVolume(level = 0) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#setVolume: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#setVolume: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.setVolume(this._pairedDevice, level);\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {Array} deviceArray\n * @returns {device}\n */\n _updateDeviceMetadata(deviceArray = []) {\n if (!deviceArray.length) {\n return Promise.resolve(deviceArray);\n }\n const devices = cloneDeep(deviceArray);\n\n return Promise.all(\n devices.map((device, index) =>\n this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => {\n if (device.deviceClass === UC_CLOUD) {\n device.id = `${this.webex.internal.services.get('wdm')}/${device.id}`;\n }\n\n return this._decryptDeviceName(device);\n })\n .then((updatedDevice) => {\n devices[index] = updatedDevice;\n\n return Promise.resolve();\n })\n )\n ).then(() => Promise.resolve(devices));\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {object} inDevice\n * @returns {device}\n */\n _decryptDeviceName(inDevice = {}) {\n const device = cloneDeep(inDevice);\n\n if (\n device.metadata &&\n device.metadata.encryptedUserAssignedName &&\n device.metadata.encryptionKeyUrl\n ) {\n return this.webex.internal.encryption\n .decryptText(device.metadata.encryptionKeyUrl, device.metadata.encryptedUserAssignedName)\n .then((decryptedDeviceName) => {\n // set userAssignedName as the decypted value, unset encryptedUserAssignedName since it's not needed\n device.metadata.encryptedUserAssignedName = undefined;\n device.metadata.userAssignedName = decryptedDeviceName;\n\n return Promise.resolve(device);\n })\n .catch((err) => {\n // unset encryptedUserAssignedName if failed to decrypt\n device.metadata.encryptedUserAssignedName = undefined;\n this.logger.error(\n 'DeviceCollection#_decryptDeviceName: failed to decrypt device name',\n err\n );\n });\n }\n\n return Promise.resolve(device);\n },\n\n /**\n * Utility function to update device info on mercury updates\n * @param {object} device\n * @returns {device}\n */\n _receiveDeviceUpdates(device) {\n // we care only the updates are for the registered devices\n if (device && device.spaceUrl) {\n const deviceId = device.spaceUrl.substring(device.spaceUrl.lastIndexOf('/') + 1);\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n return this.webex.internal.lyra.space\n .get({id: deviceId})\n .then((space) => {\n // eslint-disable-next-line no-shadow\n const device = DeviceCollection.get(deviceId);\n\n if (\n device &&\n space.occupants &&\n (!space.occupants.self || !space.occupants.self.verified)\n ) {\n device.productName =\n (space.devices && space.devices[0] && space.devices[0].productName) ||\n DEFAULT_PRODUCT_NAME;\n // pin challenge is not verified reset _pairedDevice if ids\n // match\n const pairedDeviceId =\n this._pairedDevice && (this._pairedDevice.id || this._pairedDevice.identity.id);\n\n if (pairedDeviceId === deviceId) {\n this._pairedDevice = null;\n this.logger.info(\n `DeviceManager#_receiveDeviceUpdates: device ${deviceId} lost pairing`\n );\n\n return Promise.resolve();\n }\n // we do not want to reset the device pending PIN challenge\n if (this._devicePendingPinChallenge.identity.id !== deviceId) {\n return this.upsert(device);\n }\n\n return Promise.resolve();\n }\n\n return Promise.resolve();\n })\n .catch((err) => {\n this.logger.error(\n 'DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space',\n err\n );\n });\n }\n }\n\n return Promise.resolve();\n },\n});\n\nexport default DeviceManager;\n"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["registerPlugin","DeviceManager","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* globals */\n\nimport '@webex/internal-plugin-device';\nimport {registerPlugin} from '@webex/webex-core';\n\nimport DeviceManager from './device-manager';\nimport config from './config';\n\nregisterPlugin('devicemanager', DeviceManager, {\n config,\n});\n\nexport {default} from './device-manager';\nexport {default as config} from './config';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAMA;AACA;AAEA;AACA;AAVA;AACA;AACA;;AAEA;;AAQA,IAAAA,yBAAc,EAAC,eAAe,EAAEC,sBAAa,EAAE;EAC7CC,MAAM,EAANA;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["require","_webexCore","_deviceManager","_interopRequireDefault","_config","registerPlugin","DeviceManager","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* globals */\n\nimport '@webex/internal-plugin-device';\nimport {registerPlugin} from '@webex/webex-core';\n\nimport DeviceManager from './device-manager';\nimport config from './config';\n\nregisterPlugin('devicemanager', DeviceManager, {\n config,\n});\n\nexport {default} from './device-manager';\nexport {default as config} from './config';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAMAA,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AAVA;AACA;AACA;;AAEA;;AAQA,IAAAK,yBAAc,EAAC,eAAe,EAAEC,sBAAa,EAAE;EAC7CC,MAAM,EAANA;AACF,CAAC,CAAC"}
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/plugin-device-manager",
3
- "version": "3.0.0-bnr.4",
4
3
  "description": "",
5
4
  "license": "MIT",
6
5
  "contributors": [
@@ -23,16 +22,38 @@
23
22
  ]
24
23
  },
25
24
  "dependencies": {
26
- "@webex/internal-plugin-calendar": "workspace:^",
27
- "@webex/internal-plugin-device": "workspace:^",
28
- "@webex/internal-plugin-lyra": "workspace:^",
29
- "@webex/internal-plugin-search": "workspace:^",
30
- "@webex/plugin-authorization": "workspace:^",
31
- "@webex/plugin-device-manager": "workspace:^",
32
- "@webex/plugin-logger": "workspace:^",
33
- "@webex/test-helper-chai": "workspace:^",
34
- "@webex/webex-core": "workspace:^",
25
+ "@webex/internal-plugin-calendar": "3.0.0",
26
+ "@webex/internal-plugin-device": "3.0.0",
27
+ "@webex/internal-plugin-lyra": "3.0.0",
28
+ "@webex/internal-plugin-search": "3.0.0",
29
+ "@webex/plugin-authorization": "3.0.0",
30
+ "@webex/plugin-logger": "3.0.0",
31
+ "@webex/test-helper-chai": "3.0.0",
32
+ "@webex/webex-core": "3.0.0",
35
33
  "lodash": "^4.17.21",
36
34
  "uuid": "^3.3.2"
37
- }
38
- }
35
+ },
36
+ "scripts": {
37
+ "build": "yarn build:src",
38
+ "build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
39
+ "deploy:npm": "yarn npm publish",
40
+ "test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
41
+ "test:browser": "webex-legacy-tools test --integration --runner karma",
42
+ "test:style": "eslint ./src/**/*.*",
43
+ "test:unit": "webex-legacy-tools test --unit --runner jest"
44
+ },
45
+ "devDependencies": {
46
+ "@babel/core": "^7.17.10",
47
+ "@webex/babel-config-legacy": "0.0.0",
48
+ "@webex/eslint-config-legacy": "0.0.0",
49
+ "@webex/jest-config-legacy": "0.0.0",
50
+ "@webex/legacy-tools": "0.0.0",
51
+ "@webex/test-helper-chai": "3.0.0",
52
+ "@webex/test-helper-mocha": "3.0.0",
53
+ "@webex/test-helper-mock-webex": "3.0.0",
54
+ "@webex/test-helper-test-users": "3.0.0",
55
+ "eslint": "^8.24.0",
56
+ "prettier": "^2.7.1"
57
+ },
58
+ "version": "3.0.0"
59
+ }
package/process ADDED
@@ -0,0 +1 @@
1
+ module.exports = {browser: true};
@@ -1,6 +0,0 @@
1
- export declare const config: {};
2
-
3
- declare const DeviceManager: any;
4
- export default DeviceManager;
5
-
6
- 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,8 +0,0 @@
1
- export default DeviceCollection;
2
- declare namespace DeviceCollection {
3
- const devices: {};
4
- function get(deviceId: any): any;
5
- function set(device: any): void;
6
- function reset(): void;
7
- function getAll(): any[];
8
- }
@@ -1,2 +0,0 @@
1
- declare const _default: {};
2
- export default _default;
@@ -1,3 +0,0 @@
1
- export const LYRA_SPACE: "LYRA_SPACE";
2
- export const UC_CLOUD: "uc-cloud";
3
- export const DEFAULT_PRODUCT_NAME: "default";
@@ -1,2 +0,0 @@
1
- export default DeviceManager;
2
- declare const DeviceManager: any;
@@ -1,2 +0,0 @@
1
- export { default } from "./device-manager";
2
- export { default as config } from "./config";