@webex/internal-plugin-board 2.59.6 → 2.59.8-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/board.js CHANGED
@@ -16,13 +16,10 @@ var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/cor
16
16
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
17
17
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
18
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
19
- var _pick2 = _interopRequireDefault(require("lodash/pick"));
20
- var _chunk2 = _interopRequireDefault(require("lodash/chunk"));
21
- var _defaults2 = _interopRequireDefault(require("lodash/defaults"));
22
- var _assign2 = _interopRequireDefault(require("lodash/assign"));
23
19
  var _querystring = _interopRequireDefault(require("querystring"));
24
20
  var _webexCore = require("@webex/webex-core");
25
21
  var _es6PromiseSeries = _interopRequireDefault(require("es6-promise-series"));
22
+ var _lodash = require("lodash");
26
23
  var _realtime = _interopRequireDefault(require("./realtime"));
27
24
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
28
25
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -44,7 +41,7 @@ var Board = _webexCore.WebexPlugin.extend({
44
41
  addContent: function addContent(channel, contents) {
45
42
  var _this = this;
46
43
  var chunks = [];
47
- chunks = (0, _chunk2.default)(contents, this.config.numberContentsPerPageForAdd);
44
+ chunks = (0, _lodash.chunk)(contents, this.config.numberContentsPerPageForAdd);
48
45
 
49
46
  // we want the first promise to resolve before continuing with the next
50
47
  // chunk or else we'll have race conditions among patches
@@ -231,7 +228,7 @@ var Board = _webexCore.WebexPlugin.extend({
231
228
  return decryptPromise.then(function (res) {
232
229
  (0, _deleteProperty.default)(content, 'payload');
233
230
  (0, _deleteProperty.default)(content, 'encryptionKeyUrl');
234
- return (0, _defaults2.default)(res, content);
231
+ return (0, _lodash.defaults)(res, content);
235
232
  });
236
233
  }));
237
234
  },
@@ -301,7 +298,7 @@ var Board = _webexCore.WebexPlugin.extend({
301
298
  */
302
299
  deletePartialContent: function deletePartialContent(channel, contentsToKeep) {
303
300
  var body = contentsToKeep.map(function (content) {
304
- return (0, _pick2.default)(content, 'contentId');
301
+ return (0, _lodash.pick)(content, 'contentId');
305
302
  });
306
303
  return this.webex.request({
307
304
  method: 'POST',
@@ -335,11 +332,11 @@ var Board = _webexCore.WebexPlugin.extend({
335
332
  encryptionPromise = _this7.encryptSingleContent(encryptionKeyUrl, content);
336
333
  }
337
334
  return encryptionPromise.then(function (res) {
338
- return (0, _assign2.default)({
335
+ return (0, _lodash.assign)({
339
336
  device: _this7.webex.internal.device.deviceType,
340
337
  type: contentType,
341
338
  encryptionKeyUrl: encryptionKeyUrl
342
- }, (0, _pick2.default)(res, 'file', 'payload'));
339
+ }, (0, _lodash.pick)(res, 'file', 'payload'));
343
340
  });
344
341
  }));
345
342
  },
@@ -370,7 +367,7 @@ var Board = _webexCore.WebexPlugin.extend({
370
367
  return this.webex.internal.encryption.encryptScr(encryptionKeyUrl, content.file.scr).then(function (encryptedScr) {
371
368
  content.file.scr = encryptedScr;
372
369
  if (content.displayName) {
373
- content.metadata = (0, _assign2.default)(content.metadata, {
370
+ content.metadata = (0, _lodash.assign)(content.metadata, {
374
371
  displayName: content.displayName
375
372
  });
376
373
  }
@@ -405,7 +402,7 @@ var Board = _webexCore.WebexPlugin.extend({
405
402
  contentsLimit: this.config.numberContentsPerPageForGet
406
403
  }
407
404
  };
408
- (0, _assign2.default)(params.qs, (0, _pick2.default)(options, 'contentsLimit'));
405
+ (0, _lodash.assign)(params.qs, (0, _lodash.pick)(options, 'contentsLimit'));
409
406
  return this.request(params).then(function (res) {
410
407
  return new _webexCore.Page(res, _this9.webex);
411
408
  });
@@ -446,7 +443,7 @@ var Board = _webexCore.WebexPlugin.extend({
446
443
  aclUrlLink: conversation.aclUrl
447
444
  }
448
445
  };
449
- (0, _assign2.default)(params.qs, (0, _pick2.default)(options, 'channelsLimit', 'type'));
446
+ (0, _lodash.assign)(params.qs, (0, _lodash.pick)(options, 'channelsLimit', 'type'));
450
447
  return this.request(params).then(function (res) {
451
448
  return new _webexCore.Page(res, _this10.webex);
452
449
  });
@@ -580,7 +577,7 @@ var Board = _webexCore.WebexPlugin.extend({
580
577
  var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
581
578
  scr = _ref3[0],
582
579
  res = _ref3[1];
583
- return (0, _assign2.default)(scr, {
580
+ return (0, _lodash.assign)(scr, {
584
581
  loc: res.downloadUrl
585
582
  });
586
583
  });
@@ -709,7 +706,7 @@ var Board = _webexCore.WebexPlugin.extend({
709
706
  return _promise.default.resolve([]);
710
707
  });
711
708
  },
712
- version: "2.59.6"
709
+ version: "2.59.8-next.1"
713
710
  });
714
711
  var _default = Board;
715
712
  exports.default = _default;
package/dist/board.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_querystring","_interopRequireDefault","require","_webexCore","_es6PromiseSeries","_realtime","ownKeys","object","enumerableOnly","keys","_Object$keys","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Board","WebexPlugin","extend","namespace","children","realtime","Realtime","addContent","channel","contents","_this","chunks","_chunk2","config","numberContentsPerPageForAdd","promiseSeries","map","part","_addContentChunk","bind","addImage","image","metadata","_this2","webex","internal","board","_uploadImage","then","scr","type","file","mimeType","size","url","loc","setSnapshotImage","_this3","imageScr","hiddenSpace","encryption","encryptScr","defaultEncryptionKeyUrl","encryptedScr","imageBody","height","width","encryptionKeyUrl","fileSize","request","method","uri","channelUrl","body","res","createChannel","conversation","api","resource","_prepareChannel","aclUrlLink","aclUrl","kmsMessage","userIds","kmsResourceObjectUrl","keyUris","deleteChannel","_this4","options","undefined","aclLinkType","linkedAcl","concat","kmsResourceUrl","querystring","stringify","authId","aclLinkOperation","promise","_promise","resolve","preventDeleteActiveChannel","lockChannelForDeletion","qs","intent","keepActive","decryptContents","_this5","all","items","content","decryptPromise","decryptSingleFileContent","decryptSingleContent","payload","_deleteProperty","_defaults2","encryptedData","decryptText","JSON","parse","encryptedContent","_this6","decryptScr","decryptedMetadata","displayName","error","deleteAllContent","deletePartialContent","contentsToKeep","_pick2","clearBoard","encryptContents","_this7","encryptionPromise","contentType","encryptSingleFileContent","encryptSingleContent","_assign2","device","deviceType","encryptText","_stringify","_this8","encryptedMetadata","getContents","_this9","params","contentsLimit","numberContentsPerPageForGet","Page","getChannel","getChannels","_this10","reject","Error","ping","processActivityEvent","message","decryptionPromise","envelope","decryptedData","register","data","registerToShareMercury","_this11","feature","getFeature","isSharingMercuryFeatureEnabled","mercury","localClusterServiceUrls","webSocketUrl","mercuryConnectionServiceClusterUrl","action","unregisterFromSharedMercury","binding","contentChunk","_this12","_this13","encryptBinary","_ref","cdata","_uploadImageToWebexFiles","_ref2","_ref3","_slicedToArray2","downloadUrl","_getSpaceUrl","requestUri","spaceUrl","_this14","byteLength","upload","transcode","phases","initialize","$url","session","uploadUrl","finalize","$uri","finishUploadUrl","authorizeMediaInjector","_this15","kms","prepareRequest","resourceUri","anonymous","wrapped","decryptKmsMessage","kmsResponse","decryptedKmsMessage","authorizations","bearer","catch","err","unauthorizeMediaInjector","_this16","listAuthorizations","kroUri","promises","auth","removeAuthorization","responses","version","_default","exports"],"sources":["board.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport querystring from 'querystring';\n\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport promiseSeries from 'es6-promise-series';\nimport {assign, defaults, chunk, pick} from 'lodash';\n\nimport Realtime from './realtime';\n\nconst Board = WebexPlugin.extend({\n namespace: 'Board',\n\n children: {\n realtime: Realtime,\n },\n\n /**\n * Adds Content to a Channel\n * If contents length is greater than config.board.numberContentsPerPageForAdd, this method\n * will break contents into chunks and make multiple GET request to the\n * board service\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Array} contents - Array of {@link Board~Content} objects\n * @returns {Promise<Board~Content>}\n */\n addContent(channel, contents) {\n let chunks = [];\n\n chunks = chunk(contents, this.config.numberContentsPerPageForAdd);\n\n // we want the first promise to resolve before continuing with the next\n // chunk or else we'll have race conditions among patches\n return promiseSeries(chunks.map((part) => this._addContentChunk.bind(this, channel, part)));\n },\n\n /**\n * Adds Image to a Channel\n * Uploads image to webex files and adds SCR + downloadUrl to the persistence\n * service\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {File} image - image to be uploaded\n * @param {Object} metadata - metadata such as displayName\n * @returns {Promise<Board~Content>}\n */\n addImage(channel, image, metadata) {\n return this.webex.internal.board._uploadImage(channel, image).then((scr) =>\n this.webex.internal.board.addContent(channel, [\n {\n type: 'FILE',\n metadata,\n file: {\n mimeType: image.type,\n scr,\n size: image.size,\n url: scr.loc,\n },\n },\n ])\n );\n },\n\n /**\n * Set a snapshot image for a board\n *\n * @param {Board~Channel} channel\n * @param {File} image\n * @returns {Promise<Board~Channel>}\n */\n setSnapshotImage(channel, image) {\n let imageScr;\n\n return this.webex.internal.board\n ._uploadImage(channel, image, {hiddenSpace: true})\n .then((scr) => {\n imageScr = scr;\n\n return this.webex.internal.encryption.encryptScr(channel.defaultEncryptionKeyUrl, imageScr);\n })\n .then((encryptedScr) => {\n imageScr.encryptedScr = encryptedScr;\n\n return encryptedScr;\n })\n .then(() => {\n const imageBody = {\n image: {\n url: imageScr.loc,\n height: image.height || 900,\n width: image.width || 1600,\n mimeType: image.type || 'image/png',\n scr: imageScr.encryptedScr,\n encryptionKeyUrl: channel.defaultEncryptionKeyUrl,\n fileSize: image.size,\n },\n };\n\n return this.webex.request({\n method: 'PATCH',\n uri: channel.channelUrl,\n body: imageBody,\n });\n })\n .then((res) => res.body);\n },\n\n /**\n * Creates a Channel\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Channel>}\n */\n createChannel(conversation, channel) {\n return this.webex\n .request({\n method: 'POST',\n api: 'board',\n resource: '/channels',\n body: this._prepareChannel(conversation, channel),\n })\n .then((res) => res.body);\n },\n\n _prepareChannel(conversation, channel) {\n return {\n aclUrlLink: conversation.aclUrl,\n kmsMessage: {\n method: 'create',\n uri: '/resources',\n userIds: [conversation.kmsResourceObjectUrl],\n keyUris: [],\n },\n ...channel,\n };\n },\n\n /**\n * Deletes a Channel from a Conversation\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Board~Channel} channel\n * @param {Object} options\n * @param {Object} options.preventDeleteActiveChannel Returns error if channel is in use\n * @returns {Promise}\n */\n deleteChannel(conversation, channel, options = {}) {\n // remove the ACL link between conversation and board\n // remove conversation auth from board KRO in kms message\n const body = {\n aclLinkType: 'INCOMING',\n linkedAcl: conversation.aclUrl,\n kmsMessage: {\n method: 'delete',\n uri: `${channel.kmsResourceUrl}/authorizations?${querystring.stringify({\n authId: conversation.kmsResourceObjectUrl,\n })}`,\n },\n aclLinkOperation: 'DELETE',\n };\n\n let promise = Promise.resolve();\n\n if (options.preventDeleteActiveChannel) {\n promise = this.lockChannelForDeletion(channel);\n }\n\n return promise\n .then(() =>\n this.webex.request({\n method: 'PUT',\n uri: `${channel.aclUrl}/links`,\n body,\n })\n )\n .then((res) => res.body);\n },\n\n /**\n * Locks and marks a channel for deletion\n * If a channel is being used, it will return 409 - Conflict\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n lockChannelForDeletion(channel) {\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/lock`,\n qs: {\n intent: 'delete',\n },\n })\n .then((res) => res.body);\n },\n\n /**\n * Keeps a channel as 'active' to prevent other people from deleting it\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n keepActive(channel) {\n return this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/keepAlive`,\n });\n },\n\n /**\n * Decrypts a collection of content objects\n *\n * @memberof Board.BoardService\n * @param {Array} contents curves, text, and images\n * @returns {Promise<Array>} Resolves with an array of {@link Board~Content} objects.\n */\n decryptContents(contents) {\n return Promise.all(\n contents.items.map((content) => {\n let decryptPromise;\n\n if (content.type === 'FILE') {\n decryptPromise = this.decryptSingleFileContent(content.encryptionKeyUrl, content);\n } else {\n decryptPromise = this.decryptSingleContent(content.encryptionKeyUrl, content.payload);\n }\n\n return decryptPromise.then((res) => {\n Reflect.deleteProperty(content, 'payload');\n Reflect.deleteProperty(content, 'encryptionKeyUrl');\n\n return defaults(res, content);\n });\n })\n );\n },\n\n /**\n * Decryts a single STRING content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {string} encryptedData\n * @returns {Promise<Board~Content>}\n */\n decryptSingleContent(encryptionKeyUrl, encryptedData) {\n return this.webex.internal.encryption\n .decryptText(encryptionKeyUrl, encryptedData)\n .then((res) => JSON.parse(res));\n },\n\n /**\n * Decryts a single FILE content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {object} encryptedContent {file, payload}\n * @returns {Promise<Board~Content>}\n */\n decryptSingleFileContent(encryptionKeyUrl, encryptedContent) {\n let metadata;\n\n if (encryptedContent.payload) {\n metadata = encryptedContent.payload;\n }\n\n return this.webex.internal.encryption\n .decryptScr(encryptionKeyUrl, encryptedContent.file.scr)\n .then((scr) => {\n encryptedContent.file.scr = scr;\n if (metadata) {\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, metadata);\n }\n\n return '';\n })\n .then((decryptedMetadata) => {\n try {\n encryptedContent.metadata = JSON.parse(decryptedMetadata);\n if (encryptedContent.metadata.displayName) {\n encryptedContent.displayName = encryptedContent.metadata.displayName;\n }\n } catch (error) {\n encryptedContent.metadata = {};\n }\n\n return encryptedContent;\n });\n },\n\n /**\n * Deletes all Content from a Channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise} Resolves with an content response\n */\n deleteAllContent(channel) {\n return this.webex\n .request({\n method: 'DELETE',\n uri: `${channel.channelUrl}/contents`,\n })\n .then((res) => res.body);\n },\n\n /**\n * Deletes Contents from a Channel except the ones listed in contentsToKeep\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Array<Board~Content>} contentsToKeep Array of board objects (curves, text, and images) with valid contentId (received from server)\n * @returns {Promise} Resolves with an content response\n */\n deletePartialContent(channel, contentsToKeep) {\n const body = contentsToKeep.map((content) => pick(content, 'contentId'));\n\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/contents`,\n body,\n qs: {\n clearBoard: true,\n },\n })\n .then((res) => res.body);\n },\n\n /**\n * Encrypts a collection of content\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl channel.defaultEncryptionKeyUrl\n * @param {Array} contents Array of {@link Board~Content} objects. (curves, text, and images)\n * @returns {Promise<Array>} Resolves with an array of encrypted {@link Board~Content} objects.\n */\n encryptContents(encryptionKeyUrl, contents) {\n return Promise.all(\n contents.map((content) => {\n let encryptionPromise;\n let contentType = 'STRING';\n\n // the existence of an scr will determine if the content is a FILE.\n if (content.file) {\n contentType = 'FILE';\n encryptionPromise = this.encryptSingleFileContent(encryptionKeyUrl, content);\n } else {\n encryptionPromise = this.encryptSingleContent(encryptionKeyUrl, content);\n }\n\n return encryptionPromise.then((res) =>\n assign(\n {\n device: this.webex.internal.device.deviceType,\n type: contentType,\n encryptionKeyUrl,\n },\n pick(res, 'file', 'payload')\n )\n );\n })\n );\n },\n\n /**\n * Encrypts a single STRING content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {Board~Content} content\n * @returns {Promise<Board~Content>}\n */\n encryptSingleContent(encryptionKeyUrl, content) {\n return this.webex.internal.encryption\n .encryptText(encryptionKeyUrl, JSON.stringify(content))\n .then((res) => ({\n payload: res,\n encryptionKeyUrl,\n }));\n },\n\n /**\n * Encrypts a single FILE content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {Board~Content} content\n * @returns {Promise<Board~Content>}\n */\n encryptSingleFileContent(encryptionKeyUrl, content) {\n return this.webex.internal.encryption\n .encryptScr(encryptionKeyUrl, content.file.scr)\n .then((encryptedScr) => {\n content.file.scr = encryptedScr;\n if (content.displayName) {\n content.metadata = assign(content.metadata, {displayName: content.displayName});\n }\n if (content.metadata) {\n return this.webex.internal.encryption\n .encryptText(encryptionKeyUrl, JSON.stringify(content.metadata))\n .then((encryptedMetadata) => {\n content.metadata = encryptedMetadata;\n });\n }\n\n return content;\n })\n .then(() => ({\n file: content.file,\n payload: content.metadata,\n encryptionKeyUrl,\n }));\n },\n\n /**\n * Retrieves contents from a specified channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Object} options\n * @param {Object} options.qs\n * @returns {Promise<Page<Board~Channel>>} Resolves with an array of Content items\n */\n getContents(channel, options) {\n options = options || {};\n\n const params = {\n uri: `${channel.channelUrl}/contents`,\n qs: {\n contentsLimit: this.config.numberContentsPerPageForGet,\n },\n };\n\n assign(params.qs, pick(options, 'contentsLimit'));\n\n return this.request(params).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Gets a Channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Channel>}\n */\n getChannel(channel) {\n return this.webex\n .request({\n method: 'GET',\n uri: channel.channelUrl,\n })\n .then((res) => res.body);\n },\n\n /**\n * Gets Channels\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Object} options\n * @param {number} options.channelsLimit number of boards to return per page\n * @param {number} options.type type of whiteboard: whiteboard or annotated\n * @returns {Promise<Page<Board~Channel>>} Resolves with an array of Channel items\n */\n getChannels(conversation, options) {\n options = options || {};\n\n if (!conversation) {\n return Promise.reject(new Error('`conversation` is required'));\n }\n\n const params = {\n api: 'board',\n resource: '/channels',\n qs: {\n aclUrlLink: conversation.aclUrl,\n },\n };\n\n assign(params.qs, pick(options, 'channelsLimit', 'type'));\n\n return this.request(params).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Pings persistence\n * @memberof Board.BoardService\n * @returns {Promise<Object>} ping response body\n */\n ping() {\n return this.webex\n .request({\n method: 'GET',\n api: 'board',\n resource: '/ping',\n })\n .then((res) => res.body);\n },\n\n processActivityEvent(message) {\n let decryptionPromise;\n\n if (message.contentType === 'FILE') {\n decryptionPromise = this.decryptSingleFileContent(\n message.envelope.encryptionKeyUrl,\n message.payload\n );\n } else {\n decryptionPromise = this.decryptSingleContent(\n message.envelope.encryptionKeyUrl,\n message.payload\n );\n }\n\n return decryptionPromise.then((decryptedData) => {\n // call the event handlers\n message.payload = decryptedData;\n\n return message;\n });\n },\n\n /**\n * Registers with Mercury\n * @memberof Board.BoardService\n * @param {Object} data - Mercury bindings\n * @returns {Promise<Board~Registration>}\n */\n register(data) {\n return this.webex\n .request({\n method: 'POST',\n api: 'board',\n resource: '/registrations',\n body: data,\n })\n .then((res) => res.body);\n },\n\n /**\n * Registers with Mercury for sharing web socket\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n registerToShareMercury(channel) {\n return this.webex.internal.feature\n .getFeature('developer', 'web-shared-mercury')\n .then((isSharingMercuryFeatureEnabled) => {\n if (!this.webex.internal.mercury.localClusterServiceUrls) {\n return Promise.reject(\n new Error('`localClusterServiceUrls` is not defined, make sure mercury is connected')\n );\n }\n if (!isSharingMercuryFeatureEnabled) {\n return Promise.reject(new Error('`web-shared-mercury` is not enabled'));\n }\n\n const {webSocketUrl} = this.webex.internal.device;\n const {mercuryConnectionServiceClusterUrl} =\n this.webex.internal.mercury.localClusterServiceUrls;\n\n const data = {\n mercuryConnectionServiceClusterUrl,\n webSocketUrl,\n action: 'ADD',\n };\n\n return this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/register`,\n body: data,\n });\n })\n .then((res) => res.body);\n },\n\n /**\n * Remove board binding from existing mercury connection\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {String} binding - the binding as provided in board registration\n * @returns {Promise<Board~Registration>}\n */\n unregisterFromSharedMercury(channel, binding) {\n const {webSocketUrl} = this.webex.internal.device;\n const data = {\n binding,\n webSocketUrl,\n action: 'REMOVE',\n };\n\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/register`,\n body: data,\n })\n .then((res) => res.body);\n },\n\n _addContentChunk(channel, contentChunk) {\n return this.webex.internal.board\n .encryptContents(channel.defaultEncryptionKeyUrl, contentChunk)\n .then((res) =>\n this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/contents`,\n body: res,\n })\n )\n .then((res) => res.body);\n },\n\n /**\n * Encrypts and uploads image to WebexFiles\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {File} file - File to be uploaded\n * @param {Object} options\n * @param {Object} options.hiddenSpace - true for hidden, false for open space\n * @private\n * @returns {Object} Encrypted Scr and KeyUrl\n */\n _uploadImage(channel, file, options) {\n options = options || {};\n\n return this.webex.internal.encryption\n .encryptBinary(file)\n .then(({scr, cdata}) =>\n Promise.all([scr, this._uploadImageToWebexFiles(channel, cdata, options.hiddenSpace)])\n )\n .then(([scr, res]) => assign(scr, {loc: res.downloadUrl}));\n },\n\n _getSpaceUrl(channel, hiddenSpace) {\n let requestUri = `${channel.channelUrl}/spaces/open`;\n\n if (hiddenSpace) {\n requestUri = `${channel.channelUrl}/spaces/hidden`;\n }\n\n return this.webex\n .request({\n method: 'PUT',\n uri: requestUri,\n })\n .then((res) => res.body.spaceUrl);\n },\n\n _uploadImageToWebexFiles(channel, file, hiddenSpace) {\n const fileSize = file.length || file.size || file.byteLength;\n\n return this._getSpaceUrl(channel, hiddenSpace).then((spaceUrl) =>\n this.webex.upload({\n uri: `${spaceUrl}/upload_sessions`,\n file,\n qs: {\n transcode: true,\n },\n phases: {\n initialize: {fileSize},\n upload: {\n $url(session) {\n return session.uploadUrl;\n },\n },\n finalize: {\n $uri(session) {\n return session.finishUploadUrl;\n },\n body: {fileSize},\n },\n },\n })\n );\n },\n\n /** Authorize transcoder (for sharing whiteboard to mobile)\n *\n * @param {Board~Channel} board\n * @memberof Board.BoardService\n * @returns {String} authorization\n */\n authorizeMediaInjector(board) {\n if (!board) {\n Promise.reject(\n new Error('#authorizeMediaInjector --> cannot authorize transcoder without board')\n );\n }\n\n return this.webex.internal.encryption.kms\n .prepareRequest({\n method: 'create',\n uri: '/authorizations',\n resourceUri: board.kmsResourceUrl,\n anonymous: 1,\n })\n .then((request) =>\n this.webex.request({\n uri: `${board.channelUrl}/sharePolicies/transcoder`,\n method: 'PUT',\n body: {kmsMessage: request.wrapped},\n })\n )\n .then((res) => this.webex.internal.encryption.kms.decryptKmsMessage(res.body.kmsResponse))\n .then((decryptedKmsMessage) => {\n if (decryptedKmsMessage?.authorizations.length > 0) {\n return decryptedKmsMessage.authorizations[0].bearer;\n }\n\n return undefined;\n })\n .catch((err) =>\n /* We want to resolve any errors so that whiteboard share will still work\n * except mobile being able to receive the share\n */\n Promise.resolve(err)\n );\n },\n\n /** Unauthorize transcoder (for stopping whiteboard share to mobile)\n *\n * @param {Board~Channel} board\n * @memberof Board.BoardService\n * @returns {Array} list of authIds removed\n */\n unauthorizeMediaInjector(board) {\n if (!board) {\n Promise.reject(\n new Error('#unauthorizeMediaInjector --> cannot unauthorize transcoder without board')\n );\n }\n\n return this.webex.internal.encryption.kms\n .listAuthorizations({\n kroUri: board.kmsResourceUrl,\n })\n .then((authorizations) => {\n /* Attempt to remove the authorization made from starting whiteboard share\n * Also removing any previous authorizations that were not cleared\n */\n const promises = authorizations.map((auth) => {\n const {authId} = auth;\n\n return this.webex.internal.encryption.kms\n .removeAuthorization({\n authId,\n kroUri: board.kmsResourceUrl,\n })\n .then(() => Promise.resolve(authId))\n .catch((err) =>\n /* We don't want this to error out, otherwise the\n * Promise.all will not process the rest of the request\n */\n Promise.resolve(err)\n );\n });\n\n if (promises.length > 0) {\n return Promise.all(promises).then((responses) => responses);\n }\n\n return Promise.resolve([]);\n });\n },\n});\n\nexport default Board;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_querystring","_interopRequireDefault","require","_webexCore","_es6PromiseSeries","_lodash","_realtime","ownKeys","object","enumerableOnly","keys","_Object$keys","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Board","WebexPlugin","extend","namespace","children","realtime","Realtime","addContent","channel","contents","_this","chunks","chunk","config","numberContentsPerPageForAdd","promiseSeries","map","part","_addContentChunk","bind","addImage","image","metadata","_this2","webex","internal","board","_uploadImage","then","scr","type","file","mimeType","size","url","loc","setSnapshotImage","_this3","imageScr","hiddenSpace","encryption","encryptScr","defaultEncryptionKeyUrl","encryptedScr","imageBody","height","width","encryptionKeyUrl","fileSize","request","method","uri","channelUrl","body","res","createChannel","conversation","api","resource","_prepareChannel","aclUrlLink","aclUrl","kmsMessage","userIds","kmsResourceObjectUrl","keyUris","deleteChannel","_this4","options","undefined","aclLinkType","linkedAcl","concat","kmsResourceUrl","querystring","stringify","authId","aclLinkOperation","promise","_promise","resolve","preventDeleteActiveChannel","lockChannelForDeletion","qs","intent","keepActive","decryptContents","_this5","all","items","content","decryptPromise","decryptSingleFileContent","decryptSingleContent","payload","_deleteProperty","defaults","encryptedData","decryptText","JSON","parse","encryptedContent","_this6","decryptScr","decryptedMetadata","displayName","error","deleteAllContent","deletePartialContent","contentsToKeep","pick","clearBoard","encryptContents","_this7","encryptionPromise","contentType","encryptSingleFileContent","encryptSingleContent","assign","device","deviceType","encryptText","_stringify","_this8","encryptedMetadata","getContents","_this9","params","contentsLimit","numberContentsPerPageForGet","Page","getChannel","getChannels","_this10","reject","Error","ping","processActivityEvent","message","decryptionPromise","envelope","decryptedData","register","data","registerToShareMercury","_this11","feature","getFeature","isSharingMercuryFeatureEnabled","mercury","localClusterServiceUrls","webSocketUrl","mercuryConnectionServiceClusterUrl","action","unregisterFromSharedMercury","binding","contentChunk","_this12","_this13","encryptBinary","_ref","cdata","_uploadImageToWebexFiles","_ref2","_ref3","_slicedToArray2","downloadUrl","_getSpaceUrl","requestUri","spaceUrl","_this14","byteLength","upload","transcode","phases","initialize","$url","session","uploadUrl","finalize","$uri","finishUploadUrl","authorizeMediaInjector","_this15","kms","prepareRequest","resourceUri","anonymous","wrapped","decryptKmsMessage","kmsResponse","decryptedKmsMessage","authorizations","bearer","catch","err","unauthorizeMediaInjector","_this16","listAuthorizations","kroUri","promises","auth","removeAuthorization","responses","version","_default","exports"],"sources":["board.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport querystring from 'querystring';\n\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport promiseSeries from 'es6-promise-series';\nimport {assign, defaults, chunk, pick} from 'lodash';\n\nimport Realtime from './realtime';\n\nconst Board = WebexPlugin.extend({\n namespace: 'Board',\n\n children: {\n realtime: Realtime,\n },\n\n /**\n * Adds Content to a Channel\n * If contents length is greater than config.board.numberContentsPerPageForAdd, this method\n * will break contents into chunks and make multiple GET request to the\n * board service\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Array} contents - Array of {@link Board~Content} objects\n * @returns {Promise<Board~Content>}\n */\n addContent(channel, contents) {\n let chunks = [];\n\n chunks = chunk(contents, this.config.numberContentsPerPageForAdd);\n\n // we want the first promise to resolve before continuing with the next\n // chunk or else we'll have race conditions among patches\n return promiseSeries(chunks.map((part) => this._addContentChunk.bind(this, channel, part)));\n },\n\n /**\n * Adds Image to a Channel\n * Uploads image to webex files and adds SCR + downloadUrl to the persistence\n * service\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {File} image - image to be uploaded\n * @param {Object} metadata - metadata such as displayName\n * @returns {Promise<Board~Content>}\n */\n addImage(channel, image, metadata) {\n return this.webex.internal.board._uploadImage(channel, image).then((scr) =>\n this.webex.internal.board.addContent(channel, [\n {\n type: 'FILE',\n metadata,\n file: {\n mimeType: image.type,\n scr,\n size: image.size,\n url: scr.loc,\n },\n },\n ])\n );\n },\n\n /**\n * Set a snapshot image for a board\n *\n * @param {Board~Channel} channel\n * @param {File} image\n * @returns {Promise<Board~Channel>}\n */\n setSnapshotImage(channel, image) {\n let imageScr;\n\n return this.webex.internal.board\n ._uploadImage(channel, image, {hiddenSpace: true})\n .then((scr) => {\n imageScr = scr;\n\n return this.webex.internal.encryption.encryptScr(channel.defaultEncryptionKeyUrl, imageScr);\n })\n .then((encryptedScr) => {\n imageScr.encryptedScr = encryptedScr;\n\n return encryptedScr;\n })\n .then(() => {\n const imageBody = {\n image: {\n url: imageScr.loc,\n height: image.height || 900,\n width: image.width || 1600,\n mimeType: image.type || 'image/png',\n scr: imageScr.encryptedScr,\n encryptionKeyUrl: channel.defaultEncryptionKeyUrl,\n fileSize: image.size,\n },\n };\n\n return this.webex.request({\n method: 'PATCH',\n uri: channel.channelUrl,\n body: imageBody,\n });\n })\n .then((res) => res.body);\n },\n\n /**\n * Creates a Channel\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Channel>}\n */\n createChannel(conversation, channel) {\n return this.webex\n .request({\n method: 'POST',\n api: 'board',\n resource: '/channels',\n body: this._prepareChannel(conversation, channel),\n })\n .then((res) => res.body);\n },\n\n _prepareChannel(conversation, channel) {\n return {\n aclUrlLink: conversation.aclUrl,\n kmsMessage: {\n method: 'create',\n uri: '/resources',\n userIds: [conversation.kmsResourceObjectUrl],\n keyUris: [],\n },\n ...channel,\n };\n },\n\n /**\n * Deletes a Channel from a Conversation\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Board~Channel} channel\n * @param {Object} options\n * @param {Object} options.preventDeleteActiveChannel Returns error if channel is in use\n * @returns {Promise}\n */\n deleteChannel(conversation, channel, options = {}) {\n // remove the ACL link between conversation and board\n // remove conversation auth from board KRO in kms message\n const body = {\n aclLinkType: 'INCOMING',\n linkedAcl: conversation.aclUrl,\n kmsMessage: {\n method: 'delete',\n uri: `${channel.kmsResourceUrl}/authorizations?${querystring.stringify({\n authId: conversation.kmsResourceObjectUrl,\n })}`,\n },\n aclLinkOperation: 'DELETE',\n };\n\n let promise = Promise.resolve();\n\n if (options.preventDeleteActiveChannel) {\n promise = this.lockChannelForDeletion(channel);\n }\n\n return promise\n .then(() =>\n this.webex.request({\n method: 'PUT',\n uri: `${channel.aclUrl}/links`,\n body,\n })\n )\n .then((res) => res.body);\n },\n\n /**\n * Locks and marks a channel for deletion\n * If a channel is being used, it will return 409 - Conflict\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n lockChannelForDeletion(channel) {\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/lock`,\n qs: {\n intent: 'delete',\n },\n })\n .then((res) => res.body);\n },\n\n /**\n * Keeps a channel as 'active' to prevent other people from deleting it\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n keepActive(channel) {\n return this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/keepAlive`,\n });\n },\n\n /**\n * Decrypts a collection of content objects\n *\n * @memberof Board.BoardService\n * @param {Array} contents curves, text, and images\n * @returns {Promise<Array>} Resolves with an array of {@link Board~Content} objects.\n */\n decryptContents(contents) {\n return Promise.all(\n contents.items.map((content) => {\n let decryptPromise;\n\n if (content.type === 'FILE') {\n decryptPromise = this.decryptSingleFileContent(content.encryptionKeyUrl, content);\n } else {\n decryptPromise = this.decryptSingleContent(content.encryptionKeyUrl, content.payload);\n }\n\n return decryptPromise.then((res) => {\n Reflect.deleteProperty(content, 'payload');\n Reflect.deleteProperty(content, 'encryptionKeyUrl');\n\n return defaults(res, content);\n });\n })\n );\n },\n\n /**\n * Decryts a single STRING content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {string} encryptedData\n * @returns {Promise<Board~Content>}\n */\n decryptSingleContent(encryptionKeyUrl, encryptedData) {\n return this.webex.internal.encryption\n .decryptText(encryptionKeyUrl, encryptedData)\n .then((res) => JSON.parse(res));\n },\n\n /**\n * Decryts a single FILE content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {object} encryptedContent {file, payload}\n * @returns {Promise<Board~Content>}\n */\n decryptSingleFileContent(encryptionKeyUrl, encryptedContent) {\n let metadata;\n\n if (encryptedContent.payload) {\n metadata = encryptedContent.payload;\n }\n\n return this.webex.internal.encryption\n .decryptScr(encryptionKeyUrl, encryptedContent.file.scr)\n .then((scr) => {\n encryptedContent.file.scr = scr;\n if (metadata) {\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, metadata);\n }\n\n return '';\n })\n .then((decryptedMetadata) => {\n try {\n encryptedContent.metadata = JSON.parse(decryptedMetadata);\n if (encryptedContent.metadata.displayName) {\n encryptedContent.displayName = encryptedContent.metadata.displayName;\n }\n } catch (error) {\n encryptedContent.metadata = {};\n }\n\n return encryptedContent;\n });\n },\n\n /**\n * Deletes all Content from a Channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise} Resolves with an content response\n */\n deleteAllContent(channel) {\n return this.webex\n .request({\n method: 'DELETE',\n uri: `${channel.channelUrl}/contents`,\n })\n .then((res) => res.body);\n },\n\n /**\n * Deletes Contents from a Channel except the ones listed in contentsToKeep\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Array<Board~Content>} contentsToKeep Array of board objects (curves, text, and images) with valid contentId (received from server)\n * @returns {Promise} Resolves with an content response\n */\n deletePartialContent(channel, contentsToKeep) {\n const body = contentsToKeep.map((content) => pick(content, 'contentId'));\n\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/contents`,\n body,\n qs: {\n clearBoard: true,\n },\n })\n .then((res) => res.body);\n },\n\n /**\n * Encrypts a collection of content\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl channel.defaultEncryptionKeyUrl\n * @param {Array} contents Array of {@link Board~Content} objects. (curves, text, and images)\n * @returns {Promise<Array>} Resolves with an array of encrypted {@link Board~Content} objects.\n */\n encryptContents(encryptionKeyUrl, contents) {\n return Promise.all(\n contents.map((content) => {\n let encryptionPromise;\n let contentType = 'STRING';\n\n // the existence of an scr will determine if the content is a FILE.\n if (content.file) {\n contentType = 'FILE';\n encryptionPromise = this.encryptSingleFileContent(encryptionKeyUrl, content);\n } else {\n encryptionPromise = this.encryptSingleContent(encryptionKeyUrl, content);\n }\n\n return encryptionPromise.then((res) =>\n assign(\n {\n device: this.webex.internal.device.deviceType,\n type: contentType,\n encryptionKeyUrl,\n },\n pick(res, 'file', 'payload')\n )\n );\n })\n );\n },\n\n /**\n * Encrypts a single STRING content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {Board~Content} content\n * @returns {Promise<Board~Content>}\n */\n encryptSingleContent(encryptionKeyUrl, content) {\n return this.webex.internal.encryption\n .encryptText(encryptionKeyUrl, JSON.stringify(content))\n .then((res) => ({\n payload: res,\n encryptionKeyUrl,\n }));\n },\n\n /**\n * Encrypts a single FILE content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {Board~Content} content\n * @returns {Promise<Board~Content>}\n */\n encryptSingleFileContent(encryptionKeyUrl, content) {\n return this.webex.internal.encryption\n .encryptScr(encryptionKeyUrl, content.file.scr)\n .then((encryptedScr) => {\n content.file.scr = encryptedScr;\n if (content.displayName) {\n content.metadata = assign(content.metadata, {displayName: content.displayName});\n }\n if (content.metadata) {\n return this.webex.internal.encryption\n .encryptText(encryptionKeyUrl, JSON.stringify(content.metadata))\n .then((encryptedMetadata) => {\n content.metadata = encryptedMetadata;\n });\n }\n\n return content;\n })\n .then(() => ({\n file: content.file,\n payload: content.metadata,\n encryptionKeyUrl,\n }));\n },\n\n /**\n * Retrieves contents from a specified channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Object} options\n * @param {Object} options.qs\n * @returns {Promise<Page<Board~Channel>>} Resolves with an array of Content items\n */\n getContents(channel, options) {\n options = options || {};\n\n const params = {\n uri: `${channel.channelUrl}/contents`,\n qs: {\n contentsLimit: this.config.numberContentsPerPageForGet,\n },\n };\n\n assign(params.qs, pick(options, 'contentsLimit'));\n\n return this.request(params).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Gets a Channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Channel>}\n */\n getChannel(channel) {\n return this.webex\n .request({\n method: 'GET',\n uri: channel.channelUrl,\n })\n .then((res) => res.body);\n },\n\n /**\n * Gets Channels\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Object} options\n * @param {number} options.channelsLimit number of boards to return per page\n * @param {number} options.type type of whiteboard: whiteboard or annotated\n * @returns {Promise<Page<Board~Channel>>} Resolves with an array of Channel items\n */\n getChannels(conversation, options) {\n options = options || {};\n\n if (!conversation) {\n return Promise.reject(new Error('`conversation` is required'));\n }\n\n const params = {\n api: 'board',\n resource: '/channels',\n qs: {\n aclUrlLink: conversation.aclUrl,\n },\n };\n\n assign(params.qs, pick(options, 'channelsLimit', 'type'));\n\n return this.request(params).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Pings persistence\n * @memberof Board.BoardService\n * @returns {Promise<Object>} ping response body\n */\n ping() {\n return this.webex\n .request({\n method: 'GET',\n api: 'board',\n resource: '/ping',\n })\n .then((res) => res.body);\n },\n\n processActivityEvent(message) {\n let decryptionPromise;\n\n if (message.contentType === 'FILE') {\n decryptionPromise = this.decryptSingleFileContent(\n message.envelope.encryptionKeyUrl,\n message.payload\n );\n } else {\n decryptionPromise = this.decryptSingleContent(\n message.envelope.encryptionKeyUrl,\n message.payload\n );\n }\n\n return decryptionPromise.then((decryptedData) => {\n // call the event handlers\n message.payload = decryptedData;\n\n return message;\n });\n },\n\n /**\n * Registers with Mercury\n * @memberof Board.BoardService\n * @param {Object} data - Mercury bindings\n * @returns {Promise<Board~Registration>}\n */\n register(data) {\n return this.webex\n .request({\n method: 'POST',\n api: 'board',\n resource: '/registrations',\n body: data,\n })\n .then((res) => res.body);\n },\n\n /**\n * Registers with Mercury for sharing web socket\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n registerToShareMercury(channel) {\n return this.webex.internal.feature\n .getFeature('developer', 'web-shared-mercury')\n .then((isSharingMercuryFeatureEnabled) => {\n if (!this.webex.internal.mercury.localClusterServiceUrls) {\n return Promise.reject(\n new Error('`localClusterServiceUrls` is not defined, make sure mercury is connected')\n );\n }\n if (!isSharingMercuryFeatureEnabled) {\n return Promise.reject(new Error('`web-shared-mercury` is not enabled'));\n }\n\n const {webSocketUrl} = this.webex.internal.device;\n const {mercuryConnectionServiceClusterUrl} =\n this.webex.internal.mercury.localClusterServiceUrls;\n\n const data = {\n mercuryConnectionServiceClusterUrl,\n webSocketUrl,\n action: 'ADD',\n };\n\n return this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/register`,\n body: data,\n });\n })\n .then((res) => res.body);\n },\n\n /**\n * Remove board binding from existing mercury connection\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {String} binding - the binding as provided in board registration\n * @returns {Promise<Board~Registration>}\n */\n unregisterFromSharedMercury(channel, binding) {\n const {webSocketUrl} = this.webex.internal.device;\n const data = {\n binding,\n webSocketUrl,\n action: 'REMOVE',\n };\n\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/register`,\n body: data,\n })\n .then((res) => res.body);\n },\n\n _addContentChunk(channel, contentChunk) {\n return this.webex.internal.board\n .encryptContents(channel.defaultEncryptionKeyUrl, contentChunk)\n .then((res) =>\n this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/contents`,\n body: res,\n })\n )\n .then((res) => res.body);\n },\n\n /**\n * Encrypts and uploads image to WebexFiles\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {File} file - File to be uploaded\n * @param {Object} options\n * @param {Object} options.hiddenSpace - true for hidden, false for open space\n * @private\n * @returns {Object} Encrypted Scr and KeyUrl\n */\n _uploadImage(channel, file, options) {\n options = options || {};\n\n return this.webex.internal.encryption\n .encryptBinary(file)\n .then(({scr, cdata}) =>\n Promise.all([scr, this._uploadImageToWebexFiles(channel, cdata, options.hiddenSpace)])\n )\n .then(([scr, res]) => assign(scr, {loc: res.downloadUrl}));\n },\n\n _getSpaceUrl(channel, hiddenSpace) {\n let requestUri = `${channel.channelUrl}/spaces/open`;\n\n if (hiddenSpace) {\n requestUri = `${channel.channelUrl}/spaces/hidden`;\n }\n\n return this.webex\n .request({\n method: 'PUT',\n uri: requestUri,\n })\n .then((res) => res.body.spaceUrl);\n },\n\n _uploadImageToWebexFiles(channel, file, hiddenSpace) {\n const fileSize = file.length || file.size || file.byteLength;\n\n return this._getSpaceUrl(channel, hiddenSpace).then((spaceUrl) =>\n this.webex.upload({\n uri: `${spaceUrl}/upload_sessions`,\n file,\n qs: {\n transcode: true,\n },\n phases: {\n initialize: {fileSize},\n upload: {\n $url(session) {\n return session.uploadUrl;\n },\n },\n finalize: {\n $uri(session) {\n return session.finishUploadUrl;\n },\n body: {fileSize},\n },\n },\n })\n );\n },\n\n /** Authorize transcoder (for sharing whiteboard to mobile)\n *\n * @param {Board~Channel} board\n * @memberof Board.BoardService\n * @returns {String} authorization\n */\n authorizeMediaInjector(board) {\n if (!board) {\n Promise.reject(\n new Error('#authorizeMediaInjector --> cannot authorize transcoder without board')\n );\n }\n\n return this.webex.internal.encryption.kms\n .prepareRequest({\n method: 'create',\n uri: '/authorizations',\n resourceUri: board.kmsResourceUrl,\n anonymous: 1,\n })\n .then((request) =>\n this.webex.request({\n uri: `${board.channelUrl}/sharePolicies/transcoder`,\n method: 'PUT',\n body: {kmsMessage: request.wrapped},\n })\n )\n .then((res) => this.webex.internal.encryption.kms.decryptKmsMessage(res.body.kmsResponse))\n .then((decryptedKmsMessage) => {\n if (decryptedKmsMessage?.authorizations.length > 0) {\n return decryptedKmsMessage.authorizations[0].bearer;\n }\n\n return undefined;\n })\n .catch((err) =>\n /* We want to resolve any errors so that whiteboard share will still work\n * except mobile being able to receive the share\n */\n Promise.resolve(err)\n );\n },\n\n /** Unauthorize transcoder (for stopping whiteboard share to mobile)\n *\n * @param {Board~Channel} board\n * @memberof Board.BoardService\n * @returns {Array} list of authIds removed\n */\n unauthorizeMediaInjector(board) {\n if (!board) {\n Promise.reject(\n new Error('#unauthorizeMediaInjector --> cannot unauthorize transcoder without board')\n );\n }\n\n return this.webex.internal.encryption.kms\n .listAuthorizations({\n kroUri: board.kmsResourceUrl,\n })\n .then((authorizations) => {\n /* Attempt to remove the authorization made from starting whiteboard share\n * Also removing any previous authorizations that were not cleared\n */\n const promises = authorizations.map((auth) => {\n const {authId} = auth;\n\n return this.webex.internal.encryption.kms\n .removeAuthorization({\n authId,\n kroUri: board.kmsResourceUrl,\n })\n .then(() => Promise.resolve(authId))\n .catch((err) =>\n /* We don't want this to error out, otherwise the\n * Promise.all will not process the rest of the request\n */\n Promise.resolve(err)\n );\n });\n\n if (promises.length > 0) {\n return Promise.all(promises).then((responses) => responses);\n }\n\n return Promise.resolve([]);\n });\n },\n});\n\nexport default Board;\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -24,13 +24,12 @@ _Object$defineProperty(exports, "default", {
24
24
  }
25
25
  });
26
26
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
27
- var _get2 = _interopRequireDefault(require("lodash/get"));
28
- var _has2 = _interopRequireDefault(require("lodash/has"));
29
27
  require("@webex/internal-plugin-mercury");
30
28
  require("@webex/internal-plugin-encryption");
31
29
  require("@webex/internal-plugin-conversation");
32
30
  require("@webex/internal-plugin-feature");
33
31
  var _webexCore = require("@webex/webex-core");
32
+ var _lodash = require("lodash");
34
33
  var _board = _interopRequireDefault(require("./board"));
35
34
  var _realtimeChannel = _interopRequireDefault(require("./realtime-channel"));
36
35
  var _config = _interopRequireDefault(require("./config"));
@@ -46,24 +45,24 @@ var _config = _interopRequireDefault(require("./config"));
46
45
  direction: 'inbound',
47
46
  test: function test(ctx, options) {
48
47
  // we must have items
49
- if (!(0, _has2.default)(options, 'body.items') || options.body.items.length === 0) {
48
+ if (!(0, _lodash.has)(options, 'body.items') || options.body.items.length === 0) {
50
49
  return _promise.default.resolve(false);
51
50
  }
52
51
 
53
52
  // we must have a contentId
54
- if (!(0, _get2.default)(options, 'body.items[0].contentId')) {
53
+ if (!(0, _lodash.get)(options, 'body.items[0].contentId')) {
55
54
  return _promise.default.resolve(false);
56
55
  }
57
56
 
58
57
  // we must have a encryptionKeyUrl
59
58
  /* istanbul ignore if */
60
- if (!(0, _get2.default)(options, 'body.items[0].encryptionKeyUrl')) {
59
+ if (!(0, _lodash.get)(options, 'body.items[0].encryptionKeyUrl')) {
61
60
  return _promise.default.resolve(false);
62
61
  }
63
62
 
64
63
  // we must have a payload or file
65
64
  /* istanbul ignore if */
66
- if (!(0, _get2.default)(options, 'body.items[0].payload') && !(0, _get2.default)(options, 'body.items[0].file')) {
65
+ if (!(0, _lodash.get)(options, 'body.items[0].payload') && !(0, _lodash.get)(options, 'body.items[0].file')) {
67
66
  return _promise.default.resolve(false);
68
67
  }
69
68
  return _promise.default.resolve(true);
@@ -76,7 +75,7 @@ var _config = _interopRequireDefault(require("./config"));
76
75
  direction: 'outbound',
77
76
  test: function test(ctx, options) {
78
77
  var service = ctx.webex.internal.services.getServiceFromUrl(options.uri);
79
- if (service && service.name === 'board' && (0, _has2.default)(options, 'body.aclUrlLink')) {
78
+ if (service && service.name === 'board' && (0, _lodash.has)(options, 'body.aclUrlLink')) {
80
79
  return _promise.default.resolve(true);
81
80
  }
82
81
  return _promise.default.resolve(false);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["require","_webexCore","_board","_interopRequireDefault","_realtimeChannel","_config","registerInternalPlugin","Board","config","payloadTransformer","predicates","name","direction","test","ctx","options","_has2","default","body","items","length","_promise","resolve","_get2","extract","service","webex","internal","services","getServiceFromUrl","uri","transforms","fn","object","board","decryptContents","then","decryptedContents","direciton","encryption","kms","createUnboundKeys","count","keys","key","defaultEncryptionKeyUrl","kmsMessage","keyUris","push","transform"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-mercury';\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-conversation';\nimport '@webex/internal-plugin-feature';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {has, get} from 'lodash';\n\nimport Board from './board';\nimport RealtimeChannel from './realtime-channel';\nimport config from './config';\n\nregisterInternalPlugin('board', Board, {\n config,\n payloadTransformer: {\n predicates: [\n {\n name: 'decryptContents',\n direction: 'inbound',\n\n test(ctx, options) {\n // we must have items\n if (!has(options, 'body.items') || options.body.items.length === 0) {\n return Promise.resolve(false);\n }\n\n // we must have a contentId\n if (!get(options, 'body.items[0].contentId')) {\n return Promise.resolve(false);\n }\n\n // we must have a encryptionKeyUrl\n /* istanbul ignore if */\n if (!get(options, 'body.items[0].encryptionKeyUrl')) {\n return Promise.resolve(false);\n }\n\n // we must have a payload or file\n /* istanbul ignore if */\n if (!get(options, 'body.items[0].payload') && !get(options, 'body.items[0].file')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n\n extract(options) {\n return Promise.resolve(options.body);\n },\n },\n {\n name: 'encryptChannel',\n direction: 'outbound',\n\n test(ctx, options) {\n const service = ctx.webex.internal.services.getServiceFromUrl(options.uri);\n\n if (service && service.name === 'board' && has(options, 'body.aclUrlLink')) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n },\n\n extract(options) {\n return Promise.resolve(options.body);\n },\n },\n ],\n transforms: [\n {\n name: 'decryptContents',\n direction: 'inbound',\n\n fn(ctx, object) {\n return ctx.webex.internal.board.decryptContents(object).then((decryptedContents) => {\n object.items = decryptedContents;\n });\n },\n },\n {\n name: 'encryptChannel',\n direciton: 'outbound',\n fn(ctx, object) {\n return ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {\n const key = keys[0];\n\n object.defaultEncryptionKeyUrl = key.uri;\n object.kmsMessage.keyUris.push(key.uri);\n\n return ctx.transform('encryptKmsMessage', object);\n });\n },\n },\n ],\n },\n});\n\nexport {default} from './board';\nexport {config};\nexport {RealtimeChannel};\n"],"mappings":"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"}
1
+ {"version":3,"names":["require","_webexCore","_lodash","_board","_interopRequireDefault","_realtimeChannel","_config","registerInternalPlugin","Board","config","payloadTransformer","predicates","name","direction","test","ctx","options","has","body","items","length","_promise","default","resolve","get","extract","service","webex","internal","services","getServiceFromUrl","uri","transforms","fn","object","board","decryptContents","then","decryptedContents","direciton","encryption","kms","createUnboundKeys","count","keys","key","defaultEncryptionKeyUrl","kmsMessage","keyUris","push","transform"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-mercury';\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-conversation';\nimport '@webex/internal-plugin-feature';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {has, get} from 'lodash';\n\nimport Board from './board';\nimport RealtimeChannel from './realtime-channel';\nimport config from './config';\n\nregisterInternalPlugin('board', Board, {\n config,\n payloadTransformer: {\n predicates: [\n {\n name: 'decryptContents',\n direction: 'inbound',\n\n test(ctx, options) {\n // we must have items\n if (!has(options, 'body.items') || options.body.items.length === 0) {\n return Promise.resolve(false);\n }\n\n // we must have a contentId\n if (!get(options, 'body.items[0].contentId')) {\n return Promise.resolve(false);\n }\n\n // we must have a encryptionKeyUrl\n /* istanbul ignore if */\n if (!get(options, 'body.items[0].encryptionKeyUrl')) {\n return Promise.resolve(false);\n }\n\n // we must have a payload or file\n /* istanbul ignore if */\n if (!get(options, 'body.items[0].payload') && !get(options, 'body.items[0].file')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n\n extract(options) {\n return Promise.resolve(options.body);\n },\n },\n {\n name: 'encryptChannel',\n direction: 'outbound',\n\n test(ctx, options) {\n const service = ctx.webex.internal.services.getServiceFromUrl(options.uri);\n\n if (service && service.name === 'board' && has(options, 'body.aclUrlLink')) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n },\n\n extract(options) {\n return Promise.resolve(options.body);\n },\n },\n ],\n transforms: [\n {\n name: 'decryptContents',\n direction: 'inbound',\n\n fn(ctx, object) {\n return ctx.webex.internal.board.decryptContents(object).then((decryptedContents) => {\n object.items = decryptedContents;\n });\n },\n },\n {\n name: 'encryptChannel',\n direciton: 'outbound',\n fn(ctx, object) {\n return ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {\n const key = keys[0];\n\n object.defaultEncryptionKeyUrl = key.uri;\n object.kmsMessage.keyUris.push(key.uri);\n\n return ctx.transform('encryptKmsMessage', object);\n });\n },\n },\n ],\n },\n});\n\nexport {default} from './board';\nexport {config};\nexport {RealtimeChannel};\n"],"mappings":"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"}
package/dist/realtime.js CHANGED
@@ -221,7 +221,7 @@ var RealtimeService = _webexCore.WebexPlugin.extend({
221
221
  return _this7.realtimeChannels.remove(channel.channelId);
222
222
  }));
223
223
  },
224
- version: "2.59.6"
224
+ version: "2.59.8-next.1"
225
225
  });
226
226
  var _default = RealtimeService;
227
227
  exports.default = _default;
package/package.json CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-board",
3
- "version": "2.59.6",
4
3
  "description": "",
5
4
  "license": "MIT",
6
5
  "author": "Greg Hewett <ghewett@cisco.com>",
@@ -22,27 +21,27 @@
22
21
  },
23
22
  "devDependencies": {
24
23
  "@babel/core": "^7.17.10",
25
- "@webex/babel-config-legacy": "2.59.6",
26
- "@webex/eslint-config-legacy": "2.59.6",
27
- "@webex/jest-config-legacy": "2.59.6",
28
- "@webex/legacy-tools": "2.59.6",
29
- "@webex/test-helper-chai": "2.59.6",
30
- "@webex/test-helper-file": "2.59.6",
31
- "@webex/test-helper-mocha": "2.59.6",
32
- "@webex/test-helper-mock-web-socket": "2.59.6",
33
- "@webex/test-helper-mock-webex": "2.59.6",
34
- "@webex/test-helper-test-users": "2.59.6",
24
+ "@webex/babel-config-legacy": "^0.0.0",
25
+ "@webex/eslint-config-legacy": "^0.0.0",
26
+ "@webex/jest-config-legacy": "^0.0.0",
27
+ "@webex/legacy-tools": "^0.0.0",
28
+ "@webex/test-helper-chai": "^2.59.8-next.1",
29
+ "@webex/test-helper-file": "^2.59.8-next.1",
30
+ "@webex/test-helper-mocha": "^2.59.8-next.1",
31
+ "@webex/test-helper-mock-web-socket": "^2.59.8-next.1",
32
+ "@webex/test-helper-mock-webex": "^2.59.8-next.1",
33
+ "@webex/test-helper-test-users": "^2.59.8-next.1",
35
34
  "eslint": "^8.24.0",
36
35
  "prettier": "^2.7.1",
37
36
  "sinon": "^9.2.4"
38
37
  },
39
38
  "dependencies": {
40
- "@webex/common": "2.59.6",
41
- "@webex/internal-plugin-conversation": "2.59.6",
42
- "@webex/internal-plugin-encryption": "2.59.6",
43
- "@webex/internal-plugin-feature": "2.59.6",
44
- "@webex/internal-plugin-mercury": "2.59.6",
45
- "@webex/webex-core": "2.59.6",
39
+ "@webex/common": "^2.59.8-next.1",
40
+ "@webex/internal-plugin-conversation": "^2.59.8-next.1",
41
+ "@webex/internal-plugin-encryption": "^2.59.8-next.1",
42
+ "@webex/internal-plugin-feature": "^2.59.8-next.1",
43
+ "@webex/internal-plugin-mercury": "^2.59.8-next.1",
44
+ "@webex/webex-core": "^2.59.8-next.1",
46
45
  "ampersand-collection": "^2.0.2",
47
46
  "es6-promise-series": "^0.2.2",
48
47
  "lodash": "^4.17.21",
@@ -51,10 +50,12 @@
51
50
  "scripts": {
52
51
  "build": "yarn build:src",
53
52
  "build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
53
+ "deploy:npm": "yarn npm publish",
54
54
  "test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
55
55
  "test:browser:broken": "webex-legacy-tools test --integration --unit --runner karma",
56
56
  "test:integration:broken": "webex-legacy-tools test --integration --runner mocha",
57
57
  "test:style": "eslint ./src/**/*.*",
58
58
  "test:unit": "webex-legacy-tools test --unit --runner jest"
59
- }
60
- }
59
+ },
60
+ "version": "2.59.8-next.1"
61
+ }