@webex/internal-plugin-board 2.60.1-next.9 → 2.60.2

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,15 +16,16 @@ 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"));
19
23
  var _querystring = _interopRequireDefault(require("querystring"));
20
24
  var _webexCore = require("@webex/webex-core");
21
25
  var _es6PromiseSeries = _interopRequireDefault(require("es6-promise-series"));
22
- var _lodash = require("lodash");
23
26
  var _realtime = _interopRequireDefault(require("./realtime"));
24
- function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } /*!
26
- * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.
27
- */
27
+ 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
+ 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; }
28
29
  var Board = _webexCore.WebexPlugin.extend({
29
30
  namespace: 'Board',
30
31
  children: {
@@ -43,7 +44,7 @@ var Board = _webexCore.WebexPlugin.extend({
43
44
  addContent: function addContent(channel, contents) {
44
45
  var _this = this;
45
46
  var chunks = [];
46
- chunks = (0, _lodash.chunk)(contents, this.config.numberContentsPerPageForAdd);
47
+ chunks = (0, _chunk2.default)(contents, this.config.numberContentsPerPageForAdd);
47
48
 
48
49
  // we want the first promise to resolve before continuing with the next
49
50
  // chunk or else we'll have race conditions among patches
@@ -132,30 +133,16 @@ var Board = _webexCore.WebexPlugin.extend({
132
133
  return res.body;
133
134
  });
134
135
  },
135
- /**
136
- * Prepare a create request body to the board services based on the provided
137
- * conversation and channel.
138
- *
139
- * @param {Conversation} conversation - Conversation object.
140
- * @param {Channel} channel - Channel Object
141
- * @returns {Object} - Create channel request body.
142
- */
143
- _prepareChannel: function _prepareChannel() {
144
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
145
- var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
146
- var results = _objectSpread({
136
+ _prepareChannel: function _prepareChannel(conversation, channel) {
137
+ return _objectSpread({
147
138
  aclUrlLink: conversation.aclUrl,
148
139
  kmsMessage: {
149
140
  method: 'create',
150
141
  uri: '/resources',
151
- userIds: [],
142
+ userIds: [conversation.kmsResourceObjectUrl],
152
143
  keyUris: []
153
144
  }
154
145
  }, channel);
155
- if (conversation.kmsResourceObjectUrl) {
156
- results.kmsMessage.userIds.push(conversation.kmsResourceObjectUrl);
157
- }
158
- return results;
159
146
  },
160
147
  /**
161
148
  * Deletes a Channel from a Conversation
@@ -244,7 +231,7 @@ var Board = _webexCore.WebexPlugin.extend({
244
231
  return decryptPromise.then(function (res) {
245
232
  (0, _deleteProperty.default)(content, 'payload');
246
233
  (0, _deleteProperty.default)(content, 'encryptionKeyUrl');
247
- return (0, _lodash.defaults)(res, content);
234
+ return (0, _defaults2.default)(res, content);
248
235
  });
249
236
  }));
250
237
  },
@@ -307,8 +294,6 @@ var Board = _webexCore.WebexPlugin.extend({
307
294
  },
308
295
  /**
309
296
  * Deletes Contents from a Channel except the ones listed in contentsToKeep
310
- *
311
- * THIS API HAS CHANGED!!! SEE SPARK-412694. NEEDS UPDATING.
312
297
  * @memberof Board.BoardService
313
298
  * @param {Board~Channel} channel
314
299
  * @param {Array<Board~Content>} contentsToKeep Array of board objects (curves, text, and images) with valid contentId (received from server)
@@ -316,7 +301,7 @@ var Board = _webexCore.WebexPlugin.extend({
316
301
  */
317
302
  deletePartialContent: function deletePartialContent(channel, contentsToKeep) {
318
303
  var body = contentsToKeep.map(function (content) {
319
- return (0, _lodash.pick)(content, 'contentId');
304
+ return (0, _pick2.default)(content, 'contentId');
320
305
  });
321
306
  return this.webex.request({
322
307
  method: 'POST',
@@ -350,11 +335,11 @@ var Board = _webexCore.WebexPlugin.extend({
350
335
  encryptionPromise = _this7.encryptSingleContent(encryptionKeyUrl, content);
351
336
  }
352
337
  return encryptionPromise.then(function (res) {
353
- return (0, _lodash.assign)({
338
+ return (0, _assign2.default)({
354
339
  device: _this7.webex.internal.device.deviceType,
355
340
  type: contentType,
356
341
  encryptionKeyUrl: encryptionKeyUrl
357
- }, (0, _lodash.pick)(res, 'file', 'payload'));
342
+ }, (0, _pick2.default)(res, 'file', 'payload'));
358
343
  });
359
344
  }));
360
345
  },
@@ -385,7 +370,7 @@ var Board = _webexCore.WebexPlugin.extend({
385
370
  return this.webex.internal.encryption.encryptScr(encryptionKeyUrl, content.file.scr).then(function (encryptedScr) {
386
371
  content.file.scr = encryptedScr;
387
372
  if (content.displayName) {
388
- content.metadata = (0, _lodash.assign)(content.metadata, {
373
+ content.metadata = (0, _assign2.default)(content.metadata, {
389
374
  displayName: content.displayName
390
375
  });
391
376
  }
@@ -420,7 +405,7 @@ var Board = _webexCore.WebexPlugin.extend({
420
405
  contentsLimit: this.config.numberContentsPerPageForGet
421
406
  }
422
407
  };
423
- (0, _lodash.assign)(params.qs, (0, _lodash.pick)(options, 'contentsLimit'));
408
+ (0, _assign2.default)(params.qs, (0, _pick2.default)(options, 'contentsLimit'));
424
409
  return this.request(params).then(function (res) {
425
410
  return new _webexCore.Page(res, _this9.webex);
426
411
  });
@@ -461,7 +446,7 @@ var Board = _webexCore.WebexPlugin.extend({
461
446
  aclUrlLink: conversation.aclUrl
462
447
  }
463
448
  };
464
- (0, _lodash.assign)(params.qs, (0, _lodash.pick)(options, 'channelsLimit', 'type'));
449
+ (0, _assign2.default)(params.qs, (0, _pick2.default)(options, 'channelsLimit', 'type'));
465
450
  return this.request(params).then(function (res) {
466
451
  return new _webexCore.Page(res, _this10.webex);
467
452
  });
@@ -595,7 +580,7 @@ var Board = _webexCore.WebexPlugin.extend({
595
580
  var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
596
581
  scr = _ref3[0],
597
582
  res = _ref3[1];
598
- return (0, _lodash.assign)(scr, {
583
+ return (0, _assign2.default)(scr, {
599
584
  loc: res.downloadUrl
600
585
  });
601
586
  });
@@ -724,7 +709,8 @@ var Board = _webexCore.WebexPlugin.extend({
724
709
  return _promise.default.resolve([]);
725
710
  });
726
711
  },
727
- version: "2.60.1-next.9"
712
+ version: "2.60.2"
728
713
  });
729
- var _default = exports.default = Board;
714
+ var _default = Board;
715
+ exports.default = _default;
730
716
  //# sourceMappingURL=board.js.map
package/dist/board.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_querystring","_interopRequireDefault","require","_webexCore","_es6PromiseSeries","_lodash","_realtime","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_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","undefined","results","aclUrlLink","aclUrl","kmsMessage","userIds","keyUris","kmsResourceObjectUrl","deleteChannel","_this4","options","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 /**\n * Prepare a create request body to the board services based on the provided\n * conversation and channel.\n *\n * @param {Conversation} conversation - Conversation object.\n * @param {Channel} channel - Channel Object\n * @returns {Object} - Create channel request body.\n */\n _prepareChannel(conversation = {}, channel = {}) {\n const results = {\n aclUrlLink: conversation.aclUrl,\n kmsMessage: {\n method: 'create',\n uri: '/resources',\n userIds: [],\n keyUris: [],\n },\n ...channel,\n };\n\n if (conversation.kmsResourceObjectUrl) {\n results.kmsMessage.userIds.push(conversation.kmsResourceObjectUrl);\n }\n\n return results;\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 *\n * THIS API HAS CHANGED!!! SEE SPARK-412694. NEEDS UPDATING.\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","_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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"}
package/dist/config.js CHANGED
@@ -8,7 +8,7 @@ exports.default = void 0;
8
8
  /*!
9
9
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
10
10
  */
11
- var _default = exports.default = {
11
+ var _default = {
12
12
  board: {
13
13
  /**
14
14
  * Number of contents per batch when adding contents to a channel
@@ -43,4 +43,5 @@ var _default = exports.default = {
43
43
  mercuryBindingPrefix: 'board.'
44
44
  }
45
45
  };
46
+ exports.default = _default;
46
47
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_default","exports","default","board","numberContentsPerPageForAdd","numberContentsPerPageForGet","pingInterval","process","env","MERCURY_PING_INTERVAL","pongTimeout","MERCURY_PONG_TIMEOUT","forceCloseDelay","MERCURY_FORCE_CLOSE_DELAY","mercuryBindingPrefix"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport default {\n board: {\n /**\n * Number of contents per batch when adding contents to a channel\n * @type {number}\n */\n numberContentsPerPageForAdd: 150,\n\n /**\n * Number of contents per batch when getting contents from a channel\n * @type {number}\n */\n numberContentsPerPageForGet: 1000,\n\n /**\n * Milliseconds between pings sent up the socket\n * @type {number}\n */\n pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,\n\n /**\n * Milliseconds to wait for a pong before declaring the connection dead\n * @type {number}\n */\n pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,\n\n /**\n * Milliseconds to wait for a close frame before declaring the socket dead and\n * discarding it\n * @type {[type]}\n */\n forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000,\n\n /**\n * The prefix for board binding when open a new socket connection\n * @type {string}\n */\n mercuryBindingPrefix: 'board.',\n },\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAFA,IAAAA,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAIe;EACbC,KAAK,EAAE;IACL;AACJ;AACA;AACA;IACIC,2BAA2B,EAAE,GAAG;IAEhC;AACJ;AACA;AACA;IACIC,2BAA2B,EAAE,IAAI;IAEjC;AACJ;AACA;AACA;IACIC,YAAY,EAAEC,OAAO,CAACC,GAAG,CAACC,qBAAqB,IAAI,KAAK;IAExD;AACJ;AACA;AACA;IACIC,WAAW,EAAEH,OAAO,CAACC,GAAG,CAACG,oBAAoB,IAAI,KAAK;IAEtD;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAEL,OAAO,CAACC,GAAG,CAACK,yBAAyB,IAAI,IAAI;IAE9D;AACJ;AACA;AACA;IACIC,oBAAoB,EAAE;EACxB;AACF,CAAC"}
1
+ {"version":3,"names":["_default","board","numberContentsPerPageForAdd","numberContentsPerPageForGet","pingInterval","process","env","MERCURY_PING_INTERVAL","pongTimeout","MERCURY_PONG_TIMEOUT","forceCloseDelay","MERCURY_FORCE_CLOSE_DELAY","mercuryBindingPrefix","exports","default"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport default {\n board: {\n /**\n * Number of contents per batch when adding contents to a channel\n * @type {number}\n */\n numberContentsPerPageForAdd: 150,\n\n /**\n * Number of contents per batch when getting contents from a channel\n * @type {number}\n */\n numberContentsPerPageForGet: 1000,\n\n /**\n * Milliseconds between pings sent up the socket\n * @type {number}\n */\n pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,\n\n /**\n * Milliseconds to wait for a pong before declaring the connection dead\n * @type {number}\n */\n pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,\n\n /**\n * Milliseconds to wait for a close frame before declaring the socket dead and\n * discarding it\n * @type {[type]}\n */\n forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000,\n\n /**\n * The prefix for board binding when open a new socket connection\n * @type {string}\n */\n mercuryBindingPrefix: 'board.',\n },\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAFA,IAAAA,QAAA,GAIe;EACbC,KAAK,EAAE;IACL;AACJ;AACA;AACA;IACIC,2BAA2B,EAAE,GAAG;IAEhC;AACJ;AACA;AACA;IACIC,2BAA2B,EAAE,IAAI;IAEjC;AACJ;AACA;AACA;IACIC,YAAY,EAAEC,OAAO,CAACC,GAAG,CAACC,qBAAqB,IAAI,KAAK;IAExD;AACJ;AACA;AACA;IACIC,WAAW,EAAEH,OAAO,CAACC,GAAG,CAACG,oBAAoB,IAAI,KAAK;IAEtD;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAEL,OAAO,CAACC,GAAG,CAACK,yBAAyB,IAAI,IAAI;IAE9D;AACJ;AACA;AACA;IACIC,oBAAoB,EAAE;EACxB;AACF,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAd,QAAA"}
package/dist/index.js CHANGED
@@ -24,12 +24,13 @@ _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"));
27
29
  require("@webex/internal-plugin-mercury");
28
30
  require("@webex/internal-plugin-encryption");
29
31
  require("@webex/internal-plugin-conversation");
30
32
  require("@webex/internal-plugin-feature");
31
33
  var _webexCore = require("@webex/webex-core");
32
- var _lodash = require("lodash");
33
34
  var _board = _interopRequireDefault(require("./board"));
34
35
  var _realtimeChannel = _interopRequireDefault(require("./realtime-channel"));
35
36
  var _config = _interopRequireDefault(require("./config"));
@@ -45,24 +46,24 @@ var _config = _interopRequireDefault(require("./config"));
45
46
  direction: 'inbound',
46
47
  test: function test(ctx, options) {
47
48
  // we must have items
48
- if (!(0, _lodash.has)(options, 'body.items') || options.body.items.length === 0) {
49
+ if (!(0, _has2.default)(options, 'body.items') || options.body.items.length === 0) {
49
50
  return _promise.default.resolve(false);
50
51
  }
51
52
 
52
53
  // we must have a contentId
53
- if (!(0, _lodash.get)(options, 'body.items[0].contentId')) {
54
+ if (!(0, _get2.default)(options, 'body.items[0].contentId')) {
54
55
  return _promise.default.resolve(false);
55
56
  }
56
57
 
57
58
  // we must have a encryptionKeyUrl
58
59
  /* istanbul ignore if */
59
- if (!(0, _lodash.get)(options, 'body.items[0].encryptionKeyUrl')) {
60
+ if (!(0, _get2.default)(options, 'body.items[0].encryptionKeyUrl')) {
60
61
  return _promise.default.resolve(false);
61
62
  }
62
63
 
63
64
  // we must have a payload or file
64
65
  /* istanbul ignore if */
65
- if (!(0, _lodash.get)(options, 'body.items[0].payload') && !(0, _lodash.get)(options, 'body.items[0].file')) {
66
+ if (!(0, _get2.default)(options, 'body.items[0].payload') && !(0, _get2.default)(options, 'body.items[0].file')) {
66
67
  return _promise.default.resolve(false);
67
68
  }
68
69
  return _promise.default.resolve(true);
@@ -75,7 +76,7 @@ var _config = _interopRequireDefault(require("./config"));
75
76
  direction: 'outbound',
76
77
  test: function test(ctx, options) {
77
78
  var service = ctx.webex.internal.services.getServiceFromUrl(options.uri);
78
- if (service && service.name === 'board' && (0, _lodash.has)(options, 'body.aclUrlLink')) {
79
+ if (service && service.name === 'board' && (0, _has2.default)(options, 'body.aclUrlLink')) {
79
80
  return _promise.default.resolve(true);
80
81
  }
81
82
  return _promise.default.resolve(false);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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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"}
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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"}
@@ -19,5 +19,6 @@ var RealtimeChannelCollection = _ampersandCollection.default.extend({
19
19
  model: _realtimeChannel.default,
20
20
  namespace: 'Board'
21
21
  });
22
- var _default = exports.default = RealtimeChannelCollection;
22
+ var _default = RealtimeChannelCollection;
23
+ exports.default = _default;
23
24
  //# sourceMappingURL=realtime-channel-collection.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_ampersandCollection","_interopRequireDefault","require","_realtimeChannel","RealtimeChannelCollection","AmpCollection","extend","mainIndex","model","RealtimeChannel","namespace","_default","exports","default"],"sources":["realtime-channel-collection.js"],"sourcesContent":["/** !\n *\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n * @private\n */\n\nimport AmpCollection from 'ampersand-collection';\n\nimport RealtimeChannel from './realtime-channel';\n\nconst RealtimeChannelCollection = AmpCollection.extend({\n mainIndex: 'channelId',\n model: RealtimeChannel,\n\n namespace: 'Board',\n});\n\nexport default RealtimeChannelCollection;\n"],"mappings":";;;;;;;;AAMA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAF,sBAAA,CAAAC,OAAA;AARA;AACA;AACA;AACA;AACA;;AAMA,IAAME,yBAAyB,GAAGC,4BAAa,CAACC,MAAM,CAAC;EACrDC,SAAS,EAAE,WAAW;EACtBC,KAAK,EAAEC,wBAAe;EAEtBC,SAAS,EAAE;AACb,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYT,yBAAyB"}
1
+ {"version":3,"names":["_ampersandCollection","_interopRequireDefault","require","_realtimeChannel","RealtimeChannelCollection","AmpCollection","extend","mainIndex","model","RealtimeChannel","namespace","_default","exports","default"],"sources":["realtime-channel-collection.js"],"sourcesContent":["/** !\n *\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n * @private\n */\n\nimport AmpCollection from 'ampersand-collection';\n\nimport RealtimeChannel from './realtime-channel';\n\nconst RealtimeChannelCollection = AmpCollection.extend({\n mainIndex: 'channelId',\n model: RealtimeChannel,\n\n namespace: 'Board',\n});\n\nexport default RealtimeChannelCollection;\n"],"mappings":";;;;;;;;AAMA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAF,sBAAA,CAAAC,OAAA;AARA;AACA;AACA;AACA;AACA;;AAMA,IAAME,yBAAyB,GAAGC,4BAAa,CAACC,MAAM,CAAC;EACrDC,SAAS,EAAE,WAAW;EACtBC,KAAK,EAAEC,wBAAe;EAEtBC,SAAS,EAAE;AACb,CAAC,CAAC;AAAC,IAAAC,QAAA,GAEYP,yBAAyB;AAAAQ,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -39,5 +39,6 @@ var RealtimeChannel = _internalPluginMercury.Mercury.extend({
39
39
  return this.socket.send(data);
40
40
  }
41
41
  });
42
- var _default = exports.default = RealtimeChannel;
42
+ var _default = RealtimeChannel;
43
+ exports.default = _default;
43
44
  //# sourceMappingURL=realtime-channel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_internalPluginMercury","require","RealtimeChannel","Mercury","extend","namespace","props","channelId","type","required","socketUrl","binding","session","isSharingMercury","default","socket","send","data","_default","exports"],"sources":["realtime-channel.js"],"sourcesContent":["/** !\n *\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n * @private\n */\n\nimport {Mercury} from '@webex/internal-plugin-mercury';\n\nconst RealtimeChannel = Mercury.extend({\n namespace: 'Board',\n\n props: {\n channelId: {\n type: 'string',\n required: true,\n },\n socketUrl: {\n type: 'string',\n },\n binding: {\n type: 'string',\n },\n },\n\n session: {\n isSharingMercury: {\n type: 'boolean',\n default: false,\n },\n socket: {\n type: 'object',\n },\n },\n\n send(data) {\n return this.socket.send(data);\n },\n});\n\nexport default RealtimeChannel;\n"],"mappings":";;;;;;;AAMA,IAAAA,sBAAA,GAAAC,OAAA;AANA;AACA;AACA;AACA;AACA;;AAIA,IAAMC,eAAe,GAAGC,8BAAO,CAACC,MAAM,CAAC;EACrCC,SAAS,EAAE,OAAO;EAElBC,KAAK,EAAE;IACLC,SAAS,EAAE;MACTC,IAAI,EAAE,QAAQ;MACdC,QAAQ,EAAE;IACZ,CAAC;IACDC,SAAS,EAAE;MACTF,IAAI,EAAE;IACR,CAAC;IACDG,OAAO,EAAE;MACPH,IAAI,EAAE;IACR;EACF,CAAC;EAEDI,OAAO,EAAE;IACPC,gBAAgB,EAAE;MAChBL,IAAI,EAAE,SAAS;MACfM,OAAO,EAAE;IACX,CAAC;IACDC,MAAM,EAAE;MACNP,IAAI,EAAE;IACR;EACF,CAAC;EAEDQ,IAAI,WAAAA,KAACC,IAAI,EAAE;IACT,OAAO,IAAI,CAACF,MAAM,CAACC,IAAI,CAACC,IAAI,CAAC;EAC/B;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAL,OAAA,GAEYZ,eAAe"}
1
+ {"version":3,"names":["_internalPluginMercury","require","RealtimeChannel","Mercury","extend","namespace","props","channelId","type","required","socketUrl","binding","session","isSharingMercury","default","socket","send","data","_default","exports"],"sources":["realtime-channel.js"],"sourcesContent":["/** !\n *\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n * @private\n */\n\nimport {Mercury} from '@webex/internal-plugin-mercury';\n\nconst RealtimeChannel = Mercury.extend({\n namespace: 'Board',\n\n props: {\n channelId: {\n type: 'string',\n required: true,\n },\n socketUrl: {\n type: 'string',\n },\n binding: {\n type: 'string',\n },\n },\n\n session: {\n isSharingMercury: {\n type: 'boolean',\n default: false,\n },\n socket: {\n type: 'object',\n },\n },\n\n send(data) {\n return this.socket.send(data);\n },\n});\n\nexport default RealtimeChannel;\n"],"mappings":";;;;;;;AAMA,IAAAA,sBAAA,GAAAC,OAAA;AANA;AACA;AACA;AACA;AACA;;AAIA,IAAMC,eAAe,GAAGC,8BAAO,CAACC,MAAM,CAAC;EACrCC,SAAS,EAAE,OAAO;EAElBC,KAAK,EAAE;IACLC,SAAS,EAAE;MACTC,IAAI,EAAE,QAAQ;MACdC,QAAQ,EAAE;IACZ,CAAC;IACDC,SAAS,EAAE;MACTF,IAAI,EAAE;IACR,CAAC;IACDG,OAAO,EAAE;MACPH,IAAI,EAAE;IACR;EACF,CAAC;EAEDI,OAAO,EAAE;IACPC,gBAAgB,EAAE;MAChBL,IAAI,EAAE,SAAS;MACfM,OAAO,EAAE;IACX,CAAC;IACDC,MAAM,EAAE;MACNP,IAAI,EAAE;IACR;EACF,CAAC;EAEDQ,IAAI,WAAAA,KAACC,IAAI,EAAE;IACT,OAAO,IAAI,CAACF,MAAM,CAACC,IAAI,CAACC,IAAI,CAAC;EAC/B;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAEYhB,eAAe;AAAAiB,OAAA,CAAAL,OAAA,GAAAI,QAAA"}
package/dist/realtime.js CHANGED
@@ -221,7 +221,8 @@ var RealtimeService = _webexCore.WebexPlugin.extend({
221
221
  return _this7.realtimeChannels.remove(channel.channelId);
222
222
  }));
223
223
  },
224
- version: "2.60.1-next.9"
224
+ version: "2.60.2"
225
225
  });
226
- var _default = exports.default = RealtimeService;
226
+ var _default = RealtimeService;
227
+ exports.default = _default;
227
228
  //# sourceMappingURL=realtime.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","_interopRequireDefault","require","_common","_webexCore","_realtimeChannelCollection","RealtimeService","WebexPlugin","extend","namespace","collections","realtimeChannels","RealtimeChannelCollection","publish","channel","message","_this","encryptionPromise","contentType","payload","file","webex","internal","board","encryptSingleFileContent","defaultEncryptionKeyUrl","encryptSingleContent","then","encryptedPayloadAndKeyUrl","publishEncrypted","realtimeChannel","get","channelId","_promise","default","reject","Error","data","id","uuid","v4","type","recipients","alertType","route","binding","headers","eventType","envelope","encryptionKeyUrl","send","createRealtimeChannel","_this2","requestBindings","_boardChannelIdToMercuryBinding","bindingObj","bindings","register","_ref","webSocketUrl","add","socketUrl","connectByOpenNewMercuryConnection","_this3","promise","resolve","logger","info","rc","connect","disconnectMercuryConnection","_this4","disconnect","tap","remove","config","mercuryBindingPrefix","replace","connectToSharedMercury","_this5","registerToShareMercury","res","sharedWebSocket","isSharingMercury","socket","mercury","off","refreshMercurySocketReference","on","handleBoardActivityMessages","event","_emit","_this6","forEach","disconnectFromSharedMercury","_this7","connected","unregisterFromSharedMercury","version","_default","exports"],"sources":["realtime.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport uuid from 'uuid';\nimport {tap} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport RealtimeChannelCollection from './realtime-channel-collection';\n\n/**\n * @class\n * @extends {Mercury}\n * @memberof Board\n */\nconst RealtimeService = WebexPlugin.extend({\n namespace: 'Board',\n\n collections: {\n realtimeChannels: RealtimeChannelCollection,\n },\n\n /**\n * Sends the message via the socket. Assumes that the message is already properly formatted\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @param {string} message Contains the un-encrypted message to send.\n * @returns {Promise<Board~Content>}\n */\n publish(channel, message) {\n let encryptionPromise;\n let contentType = 'STRING';\n\n if (message.payload.file) {\n contentType = 'FILE';\n encryptionPromise = this.webex.internal.board.encryptSingleFileContent(\n channel.defaultEncryptionKeyUrl,\n message.payload\n );\n } else {\n encryptionPromise = this.webex.internal.board.encryptSingleContent(\n channel.defaultEncryptionKeyUrl,\n message.payload\n );\n }\n\n return encryptionPromise.then((encryptedPayloadAndKeyUrl) =>\n this.publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType)\n );\n },\n\n /**\n * Sends the message via the socket. The message should already have been\n * encrypted\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @param {object} encryptedPayloadAndKeyUrl\n * @param {string} contentType - provides hint for decryption. Defaults to\n * `STRING`, and could also be `FILE`\n * @returns {Promise<Board~Content>}\n */\n publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n return Promise.reject(new Error('Realtime Channel not found'));\n }\n\n const data = {\n id: uuid.v4(),\n type: 'publishRequest',\n recipients: [\n {\n alertType: 'none',\n route: realtimeChannel.binding,\n headers: {},\n },\n ],\n data: {\n eventType: 'board.activity',\n contentType,\n payload: encryptedPayloadAndKeyUrl.payload,\n envelope: {\n encryptionKeyUrl: encryptedPayloadAndKeyUrl.encryptionKeyUrl,\n channelId: channel.channelId,\n },\n },\n };\n\n // provide a hint for decryption\n if (contentType === 'FILE') {\n data.data.payload = {\n file: encryptedPayloadAndKeyUrl.file,\n payload: encryptedPayloadAndKeyUrl.payload,\n };\n }\n\n return realtimeChannel.send(data);\n },\n\n createRealtimeChannel(channel) {\n const requestBindings = [this._boardChannelIdToMercuryBinding(channel.channelId)];\n const bindingObj = {bindings: requestBindings};\n\n return this.webex.internal.board.register(bindingObj).then(({webSocketUrl, bindings}) => {\n this.realtimeChannels.add({\n channelId: channel.channelId,\n socketUrl: webSocketUrl,\n binding: bindings[0],\n });\n\n return this.realtimeChannels.get(channel.channelId);\n });\n },\n\n /**\n * Open new mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n connectByOpenNewMercuryConnection(channel) {\n let promise = Promise.resolve();\n let realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n this.logger.info('board realtime: realtime channel not found, creating new channel');\n promise = this.createRealtimeChannel(channel).then((rc) => {\n realtimeChannel = rc;\n this.logger.info('board realtime: realtime channel created');\n\n return realtimeChannel;\n });\n }\n\n return promise.then(() => realtimeChannel.connect(realtimeChannel.socketUrl));\n },\n\n /**\n * Disconnect connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n disconnectMercuryConnection(channel) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n return Promise.reject(new Error('Realtime Channel not found!'));\n }\n\n return (\n realtimeChannel\n .disconnect()\n // even if we can't remove the channels from the collection, we can still\n // continue on execution\n .then(tap(() => this.realtimeChannels.remove(channel.channelId)))\n );\n },\n\n /**\n * Ensure board channelId is compatible with mercury bindings by replacing\n * '-' with '.' and '_' with '#'\n * @memberof Board.BoardService\n * @param {String} channelId channel.channelId\n * @returns {String} mercury-binding compatible string\n */\n _boardChannelIdToMercuryBinding(channelId) {\n // make channelId mercury compatible replace `-` with `.` and `_` with `#`\n return this.config.mercuryBindingPrefix + channelId.replace(/-/g, '.').replace(/_/g, '#');\n },\n\n /**\n * Connect and use an exisiting mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n connectToSharedMercury(channel) {\n return this.webex.internal.board.registerToShareMercury(channel).then((res) => {\n this.realtimeChannels.add({\n channelId: channel.channelId,\n binding: res.binding,\n socketUrl: res.webSocketUrl,\n });\n\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!res.sharedWebSocket) {\n return realtimeChannel.connect(realtimeChannel.socketUrl).then(() => res);\n }\n\n realtimeChannel.isSharingMercury = true;\n realtimeChannel.socket = this.webex.internal.mercury.socket;\n // refresh socket reference when mercury is reconnected\n this.webex.internal.mercury.off('online', this.refreshMercurySocketReference, this);\n this.webex.internal.mercury.on('online', this.refreshMercurySocketReference, this);\n\n // make sure there's only one handler\n this.webex.internal.mercury.off(\n 'event:board.activity',\n this.handleBoardActivityMessages,\n this\n );\n this.webex.internal.mercury.on(\n 'event:board.activity',\n this.handleBoardActivityMessages,\n this\n );\n\n return res;\n });\n },\n\n handleBoardActivityMessages(event) {\n const realtimeChannel = this.realtimeChannels.get(event.data.envelope.channelId);\n\n if (realtimeChannel) {\n realtimeChannel._emit('event:board.activity', event);\n }\n },\n\n refreshMercurySocketReference() {\n this.realtimeChannels.forEach((realtimeChannel) => {\n realtimeChannel.socket = this.webex.internal.mercury.socket;\n });\n },\n\n /**\n * Remove board binding from existing mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n disconnectFromSharedMercury(channel) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel.isSharingMercury && realtimeChannel.socket && realtimeChannel.connected) {\n return this.disconnectMercuryConnection(channel);\n }\n\n return (\n this.webex.internal.board\n .unregisterFromSharedMercury(channel, realtimeChannel.binding)\n // tap suppress errors but we can still go on if the channel can't be\n // removed from the collection\n .then(tap(() => this.realtimeChannels.remove(channel.channelId)))\n );\n },\n});\n\nexport default RealtimeService;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_uuid","_interopRequireDefault","require","_common","_webexCore","_realtimeChannelCollection","RealtimeService","WebexPlugin","extend","namespace","collections","realtimeChannels","RealtimeChannelCollection","publish","channel","message","_this","encryptionPromise","contentType","payload","file","webex","internal","board","encryptSingleFileContent","defaultEncryptionKeyUrl","encryptSingleContent","then","encryptedPayloadAndKeyUrl","publishEncrypted","realtimeChannel","get","channelId","_promise","default","reject","Error","data","id","uuid","v4","type","recipients","alertType","route","binding","headers","eventType","envelope","encryptionKeyUrl","send","createRealtimeChannel","_this2","requestBindings","_boardChannelIdToMercuryBinding","bindingObj","bindings","register","_ref","webSocketUrl","add","socketUrl","connectByOpenNewMercuryConnection","_this3","promise","resolve","logger","info","rc","connect","disconnectMercuryConnection","_this4","disconnect","tap","remove","config","mercuryBindingPrefix","replace","connectToSharedMercury","_this5","registerToShareMercury","res","sharedWebSocket","isSharingMercury","socket","mercury","off","refreshMercurySocketReference","on","handleBoardActivityMessages","event","_emit","_this6","forEach","disconnectFromSharedMercury","_this7","connected","unregisterFromSharedMercury","version","_default","exports"],"sources":["realtime.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport uuid from 'uuid';\nimport {tap} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport RealtimeChannelCollection from './realtime-channel-collection';\n\n/**\n * @class\n * @extends {Mercury}\n * @memberof Board\n */\nconst RealtimeService = WebexPlugin.extend({\n namespace: 'Board',\n\n collections: {\n realtimeChannels: RealtimeChannelCollection,\n },\n\n /**\n * Sends the message via the socket. Assumes that the message is already properly formatted\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @param {string} message Contains the un-encrypted message to send.\n * @returns {Promise<Board~Content>}\n */\n publish(channel, message) {\n let encryptionPromise;\n let contentType = 'STRING';\n\n if (message.payload.file) {\n contentType = 'FILE';\n encryptionPromise = this.webex.internal.board.encryptSingleFileContent(\n channel.defaultEncryptionKeyUrl,\n message.payload\n );\n } else {\n encryptionPromise = this.webex.internal.board.encryptSingleContent(\n channel.defaultEncryptionKeyUrl,\n message.payload\n );\n }\n\n return encryptionPromise.then((encryptedPayloadAndKeyUrl) =>\n this.publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType)\n );\n },\n\n /**\n * Sends the message via the socket. The message should already have been\n * encrypted\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @param {object} encryptedPayloadAndKeyUrl\n * @param {string} contentType - provides hint for decryption. Defaults to\n * `STRING`, and could also be `FILE`\n * @returns {Promise<Board~Content>}\n */\n publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n return Promise.reject(new Error('Realtime Channel not found'));\n }\n\n const data = {\n id: uuid.v4(),\n type: 'publishRequest',\n recipients: [\n {\n alertType: 'none',\n route: realtimeChannel.binding,\n headers: {},\n },\n ],\n data: {\n eventType: 'board.activity',\n contentType,\n payload: encryptedPayloadAndKeyUrl.payload,\n envelope: {\n encryptionKeyUrl: encryptedPayloadAndKeyUrl.encryptionKeyUrl,\n channelId: channel.channelId,\n },\n },\n };\n\n // provide a hint for decryption\n if (contentType === 'FILE') {\n data.data.payload = {\n file: encryptedPayloadAndKeyUrl.file,\n payload: encryptedPayloadAndKeyUrl.payload,\n };\n }\n\n return realtimeChannel.send(data);\n },\n\n createRealtimeChannel(channel) {\n const requestBindings = [this._boardChannelIdToMercuryBinding(channel.channelId)];\n const bindingObj = {bindings: requestBindings};\n\n return this.webex.internal.board.register(bindingObj).then(({webSocketUrl, bindings}) => {\n this.realtimeChannels.add({\n channelId: channel.channelId,\n socketUrl: webSocketUrl,\n binding: bindings[0],\n });\n\n return this.realtimeChannels.get(channel.channelId);\n });\n },\n\n /**\n * Open new mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n connectByOpenNewMercuryConnection(channel) {\n let promise = Promise.resolve();\n let realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n this.logger.info('board realtime: realtime channel not found, creating new channel');\n promise = this.createRealtimeChannel(channel).then((rc) => {\n realtimeChannel = rc;\n this.logger.info('board realtime: realtime channel created');\n\n return realtimeChannel;\n });\n }\n\n return promise.then(() => realtimeChannel.connect(realtimeChannel.socketUrl));\n },\n\n /**\n * Disconnect connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n disconnectMercuryConnection(channel) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n return Promise.reject(new Error('Realtime Channel not found!'));\n }\n\n return (\n realtimeChannel\n .disconnect()\n // even if we can't remove the channels from the collection, we can still\n // continue on execution\n .then(tap(() => this.realtimeChannels.remove(channel.channelId)))\n );\n },\n\n /**\n * Ensure board channelId is compatible with mercury bindings by replacing\n * '-' with '.' and '_' with '#'\n * @memberof Board.BoardService\n * @param {String} channelId channel.channelId\n * @returns {String} mercury-binding compatible string\n */\n _boardChannelIdToMercuryBinding(channelId) {\n // make channelId mercury compatible replace `-` with `.` and `_` with `#`\n return this.config.mercuryBindingPrefix + channelId.replace(/-/g, '.').replace(/_/g, '#');\n },\n\n /**\n * Connect and use an exisiting mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n connectToSharedMercury(channel) {\n return this.webex.internal.board.registerToShareMercury(channel).then((res) => {\n this.realtimeChannels.add({\n channelId: channel.channelId,\n binding: res.binding,\n socketUrl: res.webSocketUrl,\n });\n\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!res.sharedWebSocket) {\n return realtimeChannel.connect(realtimeChannel.socketUrl).then(() => res);\n }\n\n realtimeChannel.isSharingMercury = true;\n realtimeChannel.socket = this.webex.internal.mercury.socket;\n // refresh socket reference when mercury is reconnected\n this.webex.internal.mercury.off('online', this.refreshMercurySocketReference, this);\n this.webex.internal.mercury.on('online', this.refreshMercurySocketReference, this);\n\n // make sure there's only one handler\n this.webex.internal.mercury.off(\n 'event:board.activity',\n this.handleBoardActivityMessages,\n this\n );\n this.webex.internal.mercury.on(\n 'event:board.activity',\n this.handleBoardActivityMessages,\n this\n );\n\n return res;\n });\n },\n\n handleBoardActivityMessages(event) {\n const realtimeChannel = this.realtimeChannels.get(event.data.envelope.channelId);\n\n if (realtimeChannel) {\n realtimeChannel._emit('event:board.activity', event);\n }\n },\n\n refreshMercurySocketReference() {\n this.realtimeChannels.forEach((realtimeChannel) => {\n realtimeChannel.socket = this.webex.internal.mercury.socket;\n });\n },\n\n /**\n * Remove board binding from existing mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n disconnectFromSharedMercury(channel) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel.isSharingMercury && realtimeChannel.socket && realtimeChannel.connected) {\n return this.disconnectMercuryConnection(channel);\n }\n\n return (\n this.webex.internal.board\n .unregisterFromSharedMercury(channel, realtimeChannel.binding)\n // tap suppress errors but we can still go on if the channel can't be\n // removed from the collection\n .then(tap(() => this.realtimeChannels.remove(channel.channelId)))\n );\n },\n});\n\nexport default RealtimeService;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-board",
3
+ "version": "2.60.2",
3
4
  "description": "",
4
5
  "license": "MIT",
5
6
  "author": "Greg Hewett <ghewett@cisco.com>",
@@ -11,7 +12,7 @@
11
12
  "directory": "packages/@webex/internal-plugin-board"
12
13
  },
13
14
  "engines": {
14
- "node": ">=16"
15
+ "node": ">=14"
15
16
  },
16
17
  "browserify": {
17
18
  "transform": [
@@ -21,27 +22,27 @@
21
22
  },
22
23
  "devDependencies": {
23
24
  "@babel/core": "^7.17.10",
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.60.1-next.9",
29
- "@webex/test-helper-file": "2.60.1-next.9",
30
- "@webex/test-helper-mocha": "2.60.1-next.9",
31
- "@webex/test-helper-mock-web-socket": "2.60.1-next.9",
32
- "@webex/test-helper-mock-webex": "2.60.1-next.9",
33
- "@webex/test-helper-test-users": "2.60.1-next.9",
25
+ "@webex/babel-config-legacy": "2.60.2",
26
+ "@webex/eslint-config-legacy": "2.60.2",
27
+ "@webex/jest-config-legacy": "2.60.2",
28
+ "@webex/legacy-tools": "2.60.2",
29
+ "@webex/test-helper-chai": "2.60.2",
30
+ "@webex/test-helper-file": "2.60.2",
31
+ "@webex/test-helper-mocha": "2.60.2",
32
+ "@webex/test-helper-mock-web-socket": "2.60.2",
33
+ "@webex/test-helper-mock-webex": "2.60.2",
34
+ "@webex/test-helper-test-users": "2.60.2",
34
35
  "eslint": "^8.24.0",
35
36
  "prettier": "^2.7.1",
36
37
  "sinon": "^9.2.4"
37
38
  },
38
39
  "dependencies": {
39
- "@webex/common": "2.60.1-next.9",
40
- "@webex/internal-plugin-conversation": "2.60.1-next.9",
41
- "@webex/internal-plugin-encryption": "2.60.1-next.9",
42
- "@webex/internal-plugin-feature": "2.60.1-next.9",
43
- "@webex/internal-plugin-mercury": "2.60.1-next.9",
44
- "@webex/webex-core": "2.60.1-next.9",
40
+ "@webex/common": "2.60.2",
41
+ "@webex/internal-plugin-conversation": "2.60.2",
42
+ "@webex/internal-plugin-encryption": "2.60.2",
43
+ "@webex/internal-plugin-feature": "2.60.2",
44
+ "@webex/internal-plugin-mercury": "2.60.2",
45
+ "@webex/webex-core": "2.60.2",
45
46
  "ampersand-collection": "^2.0.2",
46
47
  "es6-promise-series": "^0.2.2",
47
48
  "lodash": "^4.17.21",
@@ -50,12 +51,10 @@
50
51
  "scripts": {
51
52
  "build": "yarn build:src",
52
53
  "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
- "version": "2.60.1-next.9"
61
- }
59
+ }
60
+ }
package/src/board.js CHANGED
@@ -126,31 +126,17 @@ const Board = WebexPlugin.extend({
126
126
  .then((res) => res.body);
127
127
  },
128
128
 
129
- /**
130
- * Prepare a create request body to the board services based on the provided
131
- * conversation and channel.
132
- *
133
- * @param {Conversation} conversation - Conversation object.
134
- * @param {Channel} channel - Channel Object
135
- * @returns {Object} - Create channel request body.
136
- */
137
- _prepareChannel(conversation = {}, channel = {}) {
138
- const results = {
129
+ _prepareChannel(conversation, channel) {
130
+ return {
139
131
  aclUrlLink: conversation.aclUrl,
140
132
  kmsMessage: {
141
133
  method: 'create',
142
134
  uri: '/resources',
143
- userIds: [],
135
+ userIds: [conversation.kmsResourceObjectUrl],
144
136
  keyUris: [],
145
137
  },
146
138
  ...channel,
147
139
  };
148
-
149
- if (conversation.kmsResourceObjectUrl) {
150
- results.kmsMessage.userIds.push(conversation.kmsResourceObjectUrl);
151
- }
152
-
153
- return results;
154
140
  },
155
141
 
156
142
  /**
@@ -321,8 +307,6 @@ const Board = WebexPlugin.extend({
321
307
 
322
308
  /**
323
309
  * Deletes Contents from a Channel except the ones listed in contentsToKeep
324
- *
325
- * THIS API HAS CHANGED!!! SEE SPARK-412694. NEEDS UPDATING.
326
310
  * @memberof Board.BoardService
327
311
  * @param {Board~Channel} channel
328
312
  * @param {Array<Board~Content>} contentsToKeep Array of board objects (curves, text, and images) with valid contentId (received from server)
@@ -109,9 +109,7 @@ describe('plugin-board', () => {
109
109
  it('uploads image to webex files', () =>
110
110
  participants[0].webex.internal.board
111
111
  ._uploadImage(board, fixture)
112
- .then((scr) => {
113
- participants[0].webex.logger.debug('@@@@', scr)
114
- return participants[1].webex.internal.encryption.download(scr.loc, scr)})
112
+ .then((scr) => participants[1].webex.internal.encryption.download(scr))
115
113
  .then((downloadedFile) =>
116
114
  fh
117
115
  .isMatchingFile(downloadedFile, fixture)
@@ -144,7 +142,7 @@ describe('plugin-board', () => {
144
142
  res.image.scr
145
143
  );
146
144
  })
147
- .then((decryptedScr) => participants[2].webex.internal.encryption.download(decryptedScr.loc, decryptedScr))
145
+ .then((decryptedScr) => participants[2].webex.internal.encryption.download(decryptedScr))
148
146
  .then((file) =>
149
147
  fh.isMatchingFile(file, fixture).then((result) => assert.deepEqual(result, true))
150
148
  );
@@ -192,7 +190,7 @@ describe('plugin-board', () => {
192
190
 
193
191
  it('matches file file downloaded', () =>
194
192
  participants[0].webex.internal.encryption
195
- .download(testScr.loc, testScr)
193
+ .download(testScr)
196
194
  .then((downloadedFile) =>
197
195
  fh
198
196
  .isMatchingFile(downloadedFile, fixture)
@@ -201,7 +199,7 @@ describe('plugin-board', () => {
201
199
 
202
200
  it('allows others to download image', () =>
203
201
  participants[2].webex.internal.encryption
204
- .download(testScr.loc, testScr)
202
+ .download(testScr)
205
203
  .then((downloadedFile) =>
206
204
  fh
207
205
  .isMatchingFile(downloadedFile, fixture)
@@ -247,7 +245,7 @@ describe('plugin-board', () => {
247
245
  })
248
246
  .then(() =>
249
247
  participants[0].webex.internal.encryption
250
- .download(testScr.loc, testScr)
248
+ .download(testScr)
251
249
  .then((downloadedFile) => fh.isMatchingFile(downloadedFile, fixture))
252
250
  .then((res) => assert.isTrue(res))
253
251
  );
@@ -340,11 +338,13 @@ describe('plugin-board', () => {
340
338
  assert.isFalse(channelPage.hasNext());
341
339
  channelsReceived = channelsReceived.concat(channelPage.items);
342
340
 
343
- if (channelsCreated.length === channelsReceived.length) {
344
- channelsReceived.forEach((received) => {
345
- const created = channelsCreated.find((channel) => channel.channelId === received.channelId);
341
+ channelsCreated.sort((a, b) => a.createdTime - b.createdTime);
342
+ channelsReceived.sort((a, b) => a.createdTime - b.createdTime);
346
343
 
347
- assert.deepEqual(received, created);
344
+ if (channelsCreated.length === channelsReceived.length) {
345
+ channelsReceived.forEach((channel, i) => {
346
+ delete channel.format;
347
+ assert.deepEqual(channel, channelsCreated[i]);
348
348
  });
349
349
  }
350
350
  })
@@ -496,8 +496,7 @@ describe('plugin-board', () => {
496
496
  });
497
497
  });
498
498
 
499
- // THE SERVICE API FOR REMOVING PARTIAL CONTENT HAS CHANGED. SEE SPARK-412694.
500
- describe.skip('#deletePartialContent()', () => {
499
+ describe('#deletePartialContent()', () => {
501
500
  after(() => participants[0].webex.internal.board.deleteAllContent(board));
502
501
 
503
502
  it('deletes some contents from the specified board', () => {
@@ -12,8 +12,7 @@ import fh from '@webex/test-helper-file';
12
12
  import {map} from 'lodash';
13
13
  import uuid from 'uuid';
14
14
 
15
- // SPARK-413317
16
- describe.skip('plugin-board', () => {
15
+ describe('plugin-board', () => {
17
16
  describe('realtime', () => {
18
17
  let board, conversation, fixture, participants;
19
18
  let mccoy, spock;
@@ -236,7 +236,7 @@ describe('plugin-board', () => {
236
236
  webex.request.resetHistory();
237
237
  webex.request.returns(Promise.resolve({statusCode: 200, body: channelRes}));
238
238
 
239
-
239
+ return webex.internal.board.createChannel(conversation);
240
240
  });
241
241
 
242
242
  afterAll(() => {
@@ -249,41 +249,16 @@ describe('plugin-board', () => {
249
249
  );
250
250
  });
251
251
 
252
- it('supports creating ambiguous channels for PMR support', () => {
253
- return webex.internal.board.createChannel()
254
- .then(() => {
255
- assert.calledWith(
256
- webex.request,
257
- sinon.match({
258
- method: 'POST',
259
- api: 'board',
260
- resource: '/channels',
261
- body: {
262
- kmsMessage: {
263
- method: 'create',
264
- uri: '/resources',
265
- userIds: [],
266
- keyUris: [],
267
- },
268
- }
269
- })
270
- )
271
- })
272
- });
273
-
274
252
  it('requests POST to channels service', () => {
275
- return webex.internal.board.createChannel(conversation)
276
- .then(() => {
277
- assert.calledWith(
278
- webex.request,
279
- sinon.match({
280
- method: 'POST',
281
- api: 'board',
282
- resource: '/channels',
283
- body: channelRequestBody,
284
- }),
285
- );
286
- });
253
+ assert.calledWith(
254
+ webex.request,
255
+ sinon.match({
256
+ method: 'POST',
257
+ api: 'board',
258
+ resource: '/channels',
259
+ body: channelRequestBody,
260
+ })
261
+ );
287
262
  });
288
263
  });
289
264