@webex/internal-plugin-board 3.0.0-beta.39 → 3.0.0-beta.391

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
@@ -133,16 +133,30 @@ var Board = _webexCore.WebexPlugin.extend({
133
133
  return res.body;
134
134
  });
135
135
  },
136
- _prepareChannel: function _prepareChannel(conversation, channel) {
137
- return _objectSpread({
136
+ /**
137
+ * Prepare a create request body to the board services based on the provided
138
+ * conversation and channel.
139
+ *
140
+ * @param {Conversation} conversation - Conversation object.
141
+ * @param {Channel} channel - Channel Object
142
+ * @returns {Object} - Create channel request body.
143
+ */
144
+ _prepareChannel: function _prepareChannel() {
145
+ var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
146
+ var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
147
+ var results = _objectSpread({
138
148
  aclUrlLink: conversation.aclUrl,
139
149
  kmsMessage: {
140
150
  method: 'create',
141
151
  uri: '/resources',
142
- userIds: [conversation.kmsResourceObjectUrl],
152
+ userIds: [],
143
153
  keyUris: []
144
154
  }
145
155
  }, channel);
156
+ if (conversation.kmsResourceObjectUrl) {
157
+ results.kmsMessage.userIds.push(conversation.kmsResourceObjectUrl);
158
+ }
159
+ return results;
146
160
  },
147
161
  /**
148
162
  * Deletes a Channel from a Conversation
@@ -294,6 +308,8 @@ var Board = _webexCore.WebexPlugin.extend({
294
308
  },
295
309
  /**
296
310
  * Deletes Contents from a Channel except the ones listed in contentsToKeep
311
+ *
312
+ * THIS API HAS CHANGED!!! SEE SPARK-412694. NEEDS UPDATING.
297
313
  * @memberof Board.BoardService
298
314
  * @param {Board~Channel} channel
299
315
  * @param {Array<Board~Content>} contentsToKeep Array of board objects (curves, text, and images) with valid contentId (received from server)
@@ -709,7 +725,7 @@ var Board = _webexCore.WebexPlugin.extend({
709
725
  return _promise.default.resolve([]);
710
726
  });
711
727
  },
712
- version: "3.0.0-beta.39"
728
+ version: "3.0.0-beta.391"
713
729
  });
714
730
  var _default = Board;
715
731
  exports.default = _default;
package/dist/board.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["Board","WebexPlugin","extend","namespace","children","realtime","Realtime","addContent","channel","contents","chunks","config","numberContentsPerPageForAdd","promiseSeries","map","part","_addContentChunk","bind","addImage","image","metadata","webex","internal","board","_uploadImage","then","scr","type","file","mimeType","size","url","loc","setSnapshotImage","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","options","aclLinkType","linkedAcl","kmsResourceUrl","querystring","stringify","authId","aclLinkOperation","promise","resolve","preventDeleteActiveChannel","lockChannelForDeletion","qs","intent","keepActive","decryptContents","all","items","content","decryptPromise","decryptSingleFileContent","decryptSingleContent","payload","encryptedData","decryptText","JSON","parse","encryptedContent","decryptScr","decryptedMetadata","displayName","error","deleteAllContent","deletePartialContent","contentsToKeep","clearBoard","encryptContents","encryptionPromise","contentType","encryptSingleFileContent","encryptSingleContent","device","deviceType","encryptText","encryptedMetadata","getContents","params","contentsLimit","numberContentsPerPageForGet","Page","getChannel","getChannels","reject","Error","ping","processActivityEvent","message","decryptionPromise","envelope","decryptedData","register","data","registerToShareMercury","feature","getFeature","isSharingMercuryFeatureEnabled","mercury","localClusterServiceUrls","webSocketUrl","mercuryConnectionServiceClusterUrl","action","unregisterFromSharedMercury","binding","contentChunk","encryptBinary","cdata","_uploadImageToWebexFiles","downloadUrl","_getSpaceUrl","requestUri","spaceUrl","length","byteLength","upload","transcode","phases","initialize","$url","session","uploadUrl","finalize","$uri","finishUploadUrl","authorizeMediaInjector","kms","prepareRequest","resourceUri","anonymous","wrapped","decryptKmsMessage","kmsResponse","decryptedKmsMessage","authorizations","bearer","undefined","catch","err","unauthorizeMediaInjector","listAuthorizations","kroUri","promises","auth","removeAuthorization","responses"],"sources":["board.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport querystring from 'querystring';\n\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport promiseSeries from 'es6-promise-series';\nimport {assign, defaults, chunk, pick} from 'lodash';\n\nimport Realtime from './realtime';\n\nconst Board = WebexPlugin.extend({\n namespace: 'Board',\n\n children: {\n realtime: Realtime,\n },\n\n /**\n * Adds Content to a Channel\n * If contents length is greater than config.board.numberContentsPerPageForAdd, this method\n * will break contents into chunks and make multiple GET request to the\n * board service\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Array} contents - Array of {@link Board~Content} objects\n * @returns {Promise<Board~Content>}\n */\n addContent(channel, contents) {\n let chunks = [];\n\n chunks = chunk(contents, this.config.numberContentsPerPageForAdd);\n\n // we want the first promise to resolve before continuing with the next\n // chunk or else we'll have race conditions among patches\n return promiseSeries(chunks.map((part) => this._addContentChunk.bind(this, channel, part)));\n },\n\n /**\n * Adds Image to a Channel\n * Uploads image to webex files and adds SCR + downloadUrl to the persistence\n * service\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {File} image - image to be uploaded\n * @param {Object} metadata - metadata such as displayName\n * @returns {Promise<Board~Content>}\n */\n addImage(channel, image, metadata) {\n return this.webex.internal.board._uploadImage(channel, image).then((scr) =>\n this.webex.internal.board.addContent(channel, [\n {\n type: 'FILE',\n metadata,\n file: {\n mimeType: image.type,\n scr,\n size: image.size,\n url: scr.loc,\n },\n },\n ])\n );\n },\n\n /**\n * Set a snapshot image for a board\n *\n * @param {Board~Channel} channel\n * @param {File} image\n * @returns {Promise<Board~Channel>}\n */\n setSnapshotImage(channel, image) {\n let imageScr;\n\n return this.webex.internal.board\n ._uploadImage(channel, image, {hiddenSpace: true})\n .then((scr) => {\n imageScr = scr;\n\n return this.webex.internal.encryption.encryptScr(channel.defaultEncryptionKeyUrl, imageScr);\n })\n .then((encryptedScr) => {\n imageScr.encryptedScr = encryptedScr;\n\n return encryptedScr;\n })\n .then(() => {\n const imageBody = {\n image: {\n url: imageScr.loc,\n height: image.height || 900,\n width: image.width || 1600,\n mimeType: image.type || 'image/png',\n scr: imageScr.encryptedScr,\n encryptionKeyUrl: channel.defaultEncryptionKeyUrl,\n fileSize: image.size,\n },\n };\n\n return this.webex.request({\n method: 'PATCH',\n uri: channel.channelUrl,\n body: imageBody,\n });\n })\n .then((res) => res.body);\n },\n\n /**\n * Creates a Channel\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Channel>}\n */\n createChannel(conversation, channel) {\n return this.webex\n .request({\n method: 'POST',\n api: 'board',\n resource: '/channels',\n body: this._prepareChannel(conversation, channel),\n })\n .then((res) => res.body);\n },\n\n _prepareChannel(conversation, channel) {\n return {\n aclUrlLink: conversation.aclUrl,\n kmsMessage: {\n method: 'create',\n uri: '/resources',\n userIds: [conversation.kmsResourceObjectUrl],\n keyUris: [],\n },\n ...channel,\n };\n },\n\n /**\n * Deletes a Channel from a Conversation\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Board~Channel} channel\n * @param {Object} options\n * @param {Object} options.preventDeleteActiveChannel Returns error if channel is in use\n * @returns {Promise}\n */\n deleteChannel(conversation, channel, options = {}) {\n // remove the ACL link between conversation and board\n // remove conversation auth from board KRO in kms message\n const body = {\n aclLinkType: 'INCOMING',\n linkedAcl: conversation.aclUrl,\n kmsMessage: {\n method: 'delete',\n uri: `${channel.kmsResourceUrl}/authorizations?${querystring.stringify({\n authId: conversation.kmsResourceObjectUrl,\n })}`,\n },\n aclLinkOperation: 'DELETE',\n };\n\n let promise = Promise.resolve();\n\n if (options.preventDeleteActiveChannel) {\n promise = this.lockChannelForDeletion(channel);\n }\n\n return promise\n .then(() =>\n this.webex.request({\n method: 'PUT',\n uri: `${channel.aclUrl}/links`,\n body,\n })\n )\n .then((res) => res.body);\n },\n\n /**\n * Locks and marks a channel for deletion\n * If a channel is being used, it will return 409 - Conflict\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n lockChannelForDeletion(channel) {\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/lock`,\n qs: {\n intent: 'delete',\n },\n })\n .then((res) => res.body);\n },\n\n /**\n * Keeps a channel as 'active' to prevent other people from deleting it\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n keepActive(channel) {\n return this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/keepAlive`,\n });\n },\n\n /**\n * Decrypts a collection of content objects\n *\n * @memberof Board.BoardService\n * @param {Array} contents curves, text, and images\n * @returns {Promise<Array>} Resolves with an array of {@link Board~Content} objects.\n */\n decryptContents(contents) {\n return Promise.all(\n contents.items.map((content) => {\n let decryptPromise;\n\n if (content.type === 'FILE') {\n decryptPromise = this.decryptSingleFileContent(content.encryptionKeyUrl, content);\n } else {\n decryptPromise = this.decryptSingleContent(content.encryptionKeyUrl, content.payload);\n }\n\n return decryptPromise.then((res) => {\n Reflect.deleteProperty(content, 'payload');\n Reflect.deleteProperty(content, 'encryptionKeyUrl');\n\n return defaults(res, content);\n });\n })\n );\n },\n\n /**\n * Decryts a single STRING content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {string} encryptedData\n * @returns {Promise<Board~Content>}\n */\n decryptSingleContent(encryptionKeyUrl, encryptedData) {\n return this.webex.internal.encryption\n .decryptText(encryptionKeyUrl, encryptedData)\n .then((res) => JSON.parse(res));\n },\n\n /**\n * Decryts a single FILE content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {object} encryptedContent {file, payload}\n * @returns {Promise<Board~Content>}\n */\n decryptSingleFileContent(encryptionKeyUrl, encryptedContent) {\n let metadata;\n\n if (encryptedContent.payload) {\n metadata = encryptedContent.payload;\n }\n\n return this.webex.internal.encryption\n .decryptScr(encryptionKeyUrl, encryptedContent.file.scr)\n .then((scr) => {\n encryptedContent.file.scr = scr;\n if (metadata) {\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, metadata);\n }\n\n return '';\n })\n .then((decryptedMetadata) => {\n try {\n encryptedContent.metadata = JSON.parse(decryptedMetadata);\n if (encryptedContent.metadata.displayName) {\n encryptedContent.displayName = encryptedContent.metadata.displayName;\n }\n } catch (error) {\n encryptedContent.metadata = {};\n }\n\n return encryptedContent;\n });\n },\n\n /**\n * Deletes all Content from a Channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise} Resolves with an content response\n */\n deleteAllContent(channel) {\n return this.webex\n .request({\n method: 'DELETE',\n uri: `${channel.channelUrl}/contents`,\n })\n .then((res) => res.body);\n },\n\n /**\n * Deletes Contents from a Channel except the ones listed in contentsToKeep\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Array<Board~Content>} contentsToKeep Array of board objects (curves, text, and images) with valid contentId (received from server)\n * @returns {Promise} Resolves with an content response\n */\n deletePartialContent(channel, contentsToKeep) {\n const body = contentsToKeep.map((content) => pick(content, 'contentId'));\n\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/contents`,\n body,\n qs: {\n clearBoard: true,\n },\n })\n .then((res) => res.body);\n },\n\n /**\n * Encrypts a collection of content\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl channel.defaultEncryptionKeyUrl\n * @param {Array} contents Array of {@link Board~Content} objects. (curves, text, and images)\n * @returns {Promise<Array>} Resolves with an array of encrypted {@link Board~Content} objects.\n */\n encryptContents(encryptionKeyUrl, contents) {\n return Promise.all(\n contents.map((content) => {\n let encryptionPromise;\n let contentType = 'STRING';\n\n // the existence of an scr will determine if the content is a FILE.\n if (content.file) {\n contentType = 'FILE';\n encryptionPromise = this.encryptSingleFileContent(encryptionKeyUrl, content);\n } else {\n encryptionPromise = this.encryptSingleContent(encryptionKeyUrl, content);\n }\n\n return encryptionPromise.then((res) =>\n assign(\n {\n device: this.webex.internal.device.deviceType,\n type: contentType,\n encryptionKeyUrl,\n },\n pick(res, 'file', 'payload')\n )\n );\n })\n );\n },\n\n /**\n * Encrypts a single STRING content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {Board~Content} content\n * @returns {Promise<Board~Content>}\n */\n encryptSingleContent(encryptionKeyUrl, content) {\n return this.webex.internal.encryption\n .encryptText(encryptionKeyUrl, JSON.stringify(content))\n .then((res) => ({\n payload: res,\n encryptionKeyUrl,\n }));\n },\n\n /**\n * Encrypts a single FILE content object\n * @memberof Board.BoardService\n * @param {string} encryptionKeyUrl\n * @param {Board~Content} content\n * @returns {Promise<Board~Content>}\n */\n encryptSingleFileContent(encryptionKeyUrl, content) {\n return this.webex.internal.encryption\n .encryptScr(encryptionKeyUrl, content.file.scr)\n .then((encryptedScr) => {\n content.file.scr = encryptedScr;\n if (content.displayName) {\n content.metadata = assign(content.metadata, {displayName: content.displayName});\n }\n if (content.metadata) {\n return this.webex.internal.encryption\n .encryptText(encryptionKeyUrl, JSON.stringify(content.metadata))\n .then((encryptedMetadata) => {\n content.metadata = encryptedMetadata;\n });\n }\n\n return content;\n })\n .then(() => ({\n file: content.file,\n payload: content.metadata,\n encryptionKeyUrl,\n }));\n },\n\n /**\n * Retrieves contents from a specified channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {Object} options\n * @param {Object} options.qs\n * @returns {Promise<Page<Board~Channel>>} Resolves with an array of Content items\n */\n getContents(channel, options) {\n options = options || {};\n\n const params = {\n uri: `${channel.channelUrl}/contents`,\n qs: {\n contentsLimit: this.config.numberContentsPerPageForGet,\n },\n };\n\n assign(params.qs, pick(options, 'contentsLimit'));\n\n return this.request(params).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Gets a Channel\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Channel>}\n */\n getChannel(channel) {\n return this.webex\n .request({\n method: 'GET',\n uri: channel.channelUrl,\n })\n .then((res) => res.body);\n },\n\n /**\n * Gets Channels\n * @memberof Board.BoardService\n * @param {Conversation~ConversationObject} conversation\n * @param {Object} options\n * @param {number} options.channelsLimit number of boards to return per page\n * @param {number} options.type type of whiteboard: whiteboard or annotated\n * @returns {Promise<Page<Board~Channel>>} Resolves with an array of Channel items\n */\n getChannels(conversation, options) {\n options = options || {};\n\n if (!conversation) {\n return Promise.reject(new Error('`conversation` is required'));\n }\n\n const params = {\n api: 'board',\n resource: '/channels',\n qs: {\n aclUrlLink: conversation.aclUrl,\n },\n };\n\n assign(params.qs, pick(options, 'channelsLimit', 'type'));\n\n return this.request(params).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Pings persistence\n * @memberof Board.BoardService\n * @returns {Promise<Object>} ping response body\n */\n ping() {\n return this.webex\n .request({\n method: 'GET',\n api: 'board',\n resource: '/ping',\n })\n .then((res) => res.body);\n },\n\n processActivityEvent(message) {\n let decryptionPromise;\n\n if (message.contentType === 'FILE') {\n decryptionPromise = this.decryptSingleFileContent(\n message.envelope.encryptionKeyUrl,\n message.payload\n );\n } else {\n decryptionPromise = this.decryptSingleContent(\n message.envelope.encryptionKeyUrl,\n message.payload\n );\n }\n\n return decryptionPromise.then((decryptedData) => {\n // call the event handlers\n message.payload = decryptedData;\n\n return message;\n });\n },\n\n /**\n * Registers with Mercury\n * @memberof Board.BoardService\n * @param {Object} data - Mercury bindings\n * @returns {Promise<Board~Registration>}\n */\n register(data) {\n return this.webex\n .request({\n method: 'POST',\n api: 'board',\n resource: '/registrations',\n body: data,\n })\n .then((res) => res.body);\n },\n\n /**\n * Registers with Mercury for sharing web socket\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n registerToShareMercury(channel) {\n return this.webex.internal.feature\n .getFeature('developer', 'web-shared-mercury')\n .then((isSharingMercuryFeatureEnabled) => {\n if (!this.webex.internal.mercury.localClusterServiceUrls) {\n return Promise.reject(\n new Error('`localClusterServiceUrls` is not defined, make sure mercury is connected')\n );\n }\n if (!isSharingMercuryFeatureEnabled) {\n return Promise.reject(new Error('`web-shared-mercury` is not enabled'));\n }\n\n const {webSocketUrl} = this.webex.internal.device;\n const {mercuryConnectionServiceClusterUrl} =\n this.webex.internal.mercury.localClusterServiceUrls;\n\n const data = {\n mercuryConnectionServiceClusterUrl,\n webSocketUrl,\n action: 'ADD',\n };\n\n return this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/register`,\n body: data,\n });\n })\n .then((res) => res.body);\n },\n\n /**\n * Remove board binding from existing mercury connection\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {String} binding - the binding as provided in board registration\n * @returns {Promise<Board~Registration>}\n */\n unregisterFromSharedMercury(channel, binding) {\n const {webSocketUrl} = this.webex.internal.device;\n const data = {\n binding,\n webSocketUrl,\n action: 'REMOVE',\n };\n\n return this.webex\n .request({\n method: 'POST',\n uri: `${channel.channelUrl}/register`,\n body: data,\n })\n .then((res) => res.body);\n },\n\n _addContentChunk(channel, contentChunk) {\n return this.webex.internal.board\n .encryptContents(channel.defaultEncryptionKeyUrl, contentChunk)\n .then((res) =>\n this.webex.request({\n method: 'POST',\n uri: `${channel.channelUrl}/contents`,\n body: res,\n })\n )\n .then((res) => res.body);\n },\n\n /**\n * Encrypts and uploads image to WebexFiles\n * @memberof Board.BoardService\n * @param {Board~Channel} channel\n * @param {File} file - File to be uploaded\n * @param {Object} options\n * @param {Object} options.hiddenSpace - true for hidden, false for open space\n * @private\n * @returns {Object} Encrypted Scr and KeyUrl\n */\n _uploadImage(channel, file, options) {\n options = options || {};\n\n return this.webex.internal.encryption\n .encryptBinary(file)\n .then(({scr, cdata}) =>\n Promise.all([scr, this._uploadImageToWebexFiles(channel, cdata, options.hiddenSpace)])\n )\n .then(([scr, res]) => assign(scr, {loc: res.downloadUrl}));\n },\n\n _getSpaceUrl(channel, hiddenSpace) {\n let requestUri = `${channel.channelUrl}/spaces/open`;\n\n if (hiddenSpace) {\n requestUri = `${channel.channelUrl}/spaces/hidden`;\n }\n\n return this.webex\n .request({\n method: 'PUT',\n uri: requestUri,\n })\n .then((res) => res.body.spaceUrl);\n },\n\n _uploadImageToWebexFiles(channel, file, hiddenSpace) {\n const fileSize = file.length || file.size || file.byteLength;\n\n return this._getSpaceUrl(channel, hiddenSpace).then((spaceUrl) =>\n this.webex.upload({\n uri: `${spaceUrl}/upload_sessions`,\n file,\n qs: {\n transcode: true,\n },\n phases: {\n initialize: {fileSize},\n upload: {\n $url(session) {\n return session.uploadUrl;\n },\n },\n finalize: {\n $uri(session) {\n return session.finishUploadUrl;\n },\n body: {fileSize},\n },\n },\n })\n );\n },\n\n /** Authorize transcoder (for sharing whiteboard to mobile)\n *\n * @param {Board~Channel} board\n * @memberof Board.BoardService\n * @returns {String} authorization\n */\n authorizeMediaInjector(board) {\n if (!board) {\n Promise.reject(\n new Error('#authorizeMediaInjector --> cannot authorize transcoder without board')\n );\n }\n\n return this.webex.internal.encryption.kms\n .prepareRequest({\n method: 'create',\n uri: '/authorizations',\n resourceUri: board.kmsResourceUrl,\n anonymous: 1,\n })\n .then((request) =>\n this.webex.request({\n uri: `${board.channelUrl}/sharePolicies/transcoder`,\n method: 'PUT',\n body: {kmsMessage: request.wrapped},\n })\n )\n .then((res) => this.webex.internal.encryption.kms.decryptKmsMessage(res.body.kmsResponse))\n .then((decryptedKmsMessage) => {\n if (decryptedKmsMessage?.authorizations.length > 0) {\n return decryptedKmsMessage.authorizations[0].bearer;\n }\n\n return undefined;\n })\n .catch((err) =>\n /* We want to resolve any errors so that whiteboard share will still work\n * except mobile being able to receive the share\n */\n Promise.resolve(err)\n );\n },\n\n /** Unauthorize transcoder (for stopping whiteboard share to mobile)\n *\n * @param {Board~Channel} board\n * @memberof Board.BoardService\n * @returns {Array} list of authIds removed\n */\n unauthorizeMediaInjector(board) {\n if (!board) {\n Promise.reject(\n new Error('#unauthorizeMediaInjector --> cannot unauthorize transcoder without board')\n );\n }\n\n return this.webex.internal.encryption.kms\n .listAuthorizations({\n kroUri: board.kmsResourceUrl,\n })\n .then((authorizations) => {\n /* Attempt to remove the authorization made from starting whiteboard share\n * Also removing any previous authorizations that were not cleared\n */\n const promises = authorizations.map((auth) => {\n const {authId} = auth;\n\n return this.webex.internal.encryption.kms\n .removeAuthorization({\n authId,\n kroUri: board.kmsResourceUrl,\n })\n .then(() => Promise.resolve(authId))\n .catch((err) =>\n /* We don't want this to error out, otherwise the\n * Promise.all will not process the rest of the request\n */\n Promise.resolve(err)\n );\n });\n\n if (promises.length > 0) {\n return Promise.all(promises).then((responses) => responses);\n }\n\n return Promise.resolve([]);\n });\n },\n});\n\nexport default Board;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Board","WebexPlugin","extend","namespace","children","realtime","Realtime","addContent","channel","contents","chunks","config","numberContentsPerPageForAdd","promiseSeries","map","part","_addContentChunk","bind","addImage","image","metadata","webex","internal","board","_uploadImage","then","scr","type","file","mimeType","size","url","loc","setSnapshotImage","imageScr","hiddenSpace","encryption","encryptScr","defaultEncryptionKeyUrl","encryptedScr","imageBody","height","width","encryptionKeyUrl","fileSize","request","method","uri","channelUrl","body","res","createChannel","conversation","api","resource","_prepareChannel","results","aclUrlLink","aclUrl","kmsMessage","userIds","keyUris","kmsResourceObjectUrl","push","deleteChannel","options","aclLinkType","linkedAcl","kmsResourceUrl","querystring","stringify","authId","aclLinkOperation","promise","resolve","preventDeleteActiveChannel","lockChannelForDeletion","qs","intent","keepActive","decryptContents","all","items","content","decryptPromise","decryptSingleFileContent","decryptSingleContent","payload","encryptedData","decryptText","JSON","parse","encryptedContent","decryptScr","decryptedMetadata","displayName","error","deleteAllContent","deletePartialContent","contentsToKeep","clearBoard","encryptContents","encryptionPromise","contentType","encryptSingleFileContent","encryptSingleContent","device","deviceType","encryptText","encryptedMetadata","getContents","params","contentsLimit","numberContentsPerPageForGet","Page","getChannel","getChannels","reject","Error","ping","processActivityEvent","message","decryptionPromise","envelope","decryptedData","register","data","registerToShareMercury","feature","getFeature","isSharingMercuryFeatureEnabled","mercury","localClusterServiceUrls","webSocketUrl","mercuryConnectionServiceClusterUrl","action","unregisterFromSharedMercury","binding","contentChunk","encryptBinary","cdata","_uploadImageToWebexFiles","downloadUrl","_getSpaceUrl","requestUri","spaceUrl","length","byteLength","upload","transcode","phases","initialize","$url","session","uploadUrl","finalize","$uri","finishUploadUrl","authorizeMediaInjector","kms","prepareRequest","resourceUri","anonymous","wrapped","decryptKmsMessage","kmsResponse","decryptedKmsMessage","authorizations","bearer","undefined","catch","err","unauthorizeMediaInjector","listAuthorizations","kroUri","promises","auth","removeAuthorization","responses"],"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":";;;;;;;;;;;;;;;;;;;;;;AAIA;AAEA;AACA;AAGA;AAAkC;AAAA;AAElC,IAAMA,KAAK,GAAGC,sBAAW,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE,OAAO;EAElBC,QAAQ,EAAE;IACRC,QAAQ,EAAEC;EACZ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,sBAACC,OAAO,EAAEC,QAAQ,EAAE;IAAA;IAC5B,IAAIC,MAAM,GAAG,EAAE;IAEfA,MAAM,GAAG,qBAAMD,QAAQ,EAAE,IAAI,CAACE,MAAM,CAACC,2BAA2B,CAAC;;IAEjE;IACA;IACA,OAAO,IAAAC,yBAAa,EAACH,MAAM,CAACI,GAAG,CAAC,UAACC,IAAI;MAAA,OAAK,KAAI,CAACC,gBAAgB,CAACC,IAAI,CAAC,KAAI,EAAET,OAAO,EAAEO,IAAI,CAAC;IAAA,EAAC,CAAC;EAC7F,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEG,QAAQ,oBAACV,OAAO,EAAEW,KAAK,EAAEC,QAAQ,EAAE;IAAA;IACjC,OAAO,IAAI,CAACC,KAAK,CAACC,QAAQ,CAACC,KAAK,CAACC,YAAY,CAAChB,OAAO,EAAEW,KAAK,CAAC,CAACM,IAAI,CAAC,UAACC,GAAG;MAAA,OACrE,MAAI,CAACL,KAAK,CAACC,QAAQ,CAACC,KAAK,CAAChB,UAAU,CAACC,OAAO,EAAE,CAC5C;QACEmB,IAAI,EAAE,MAAM;QACZP,QAAQ,EAARA,QAAQ;QACRQ,IAAI,EAAE;UACJC,QAAQ,EAAEV,KAAK,CAACQ,IAAI;UACpBD,GAAG,EAAHA,GAAG;UACHI,IAAI,EAAEX,KAAK,CAACW,IAAI;UAChBC,GAAG,EAAEL,GAAG,CAACM;QACX;MACF,CAAC,CACF,CAAC;IAAA,EACH;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,gBAAgB,4BAACzB,OAAO,EAAEW,KAAK,EAAE;IAAA;IAC/B,IAAIe,QAAQ;IAEZ,OAAO,IAAI,CAACb,KAAK,CAACC,QAAQ,CAACC,KAAK,CAC7BC,YAAY,CAAChB,OAAO,EAAEW,KAAK,EAAE;MAACgB,WAAW,EAAE;IAAI,CAAC,CAAC,CACjDV,IAAI,CAAC,UAACC,GAAG,EAAK;MACbQ,QAAQ,GAAGR,GAAG;MAEd,OAAO,MAAI,CAACL,KAAK,CAACC,QAAQ,CAACc,UAAU,CAACC,UAAU,CAAC7B,OAAO,CAAC8B,uBAAuB,EAAEJ,QAAQ,CAAC;IAC7F,CAAC,CAAC,CACDT,IAAI,CAAC,UAACc,YAAY,EAAK;MACtBL,QAAQ,CAACK,YAAY,GAAGA,YAAY;MAEpC,OAAOA,YAAY;IACrB,CAAC,CAAC,CACDd,IAAI,CAAC,YAAM;MACV,IAAMe,SAAS,GAAG;QAChBrB,KAAK,EAAE;UACLY,GAAG,EAAEG,QAAQ,CAACF,GAAG;UACjBS,MAAM,EAAEtB,KAAK,CAACsB,MAAM,IAAI,GAAG;UAC3BC,KAAK,EAAEvB,KAAK,CAACuB,KAAK,IAAI,IAAI;UAC1Bb,QAAQ,EAAEV,KAAK,CAACQ,IAAI,IAAI,WAAW;UACnCD,GAAG,EAAEQ,QAAQ,CAACK,YAAY;UAC1BI,gBAAgB,EAAEnC,OAAO,CAAC8B,uBAAuB;UACjDM,QAAQ,EAAEzB,KAAK,CAACW;QAClB;MACF,CAAC;MAED,OAAO,MAAI,CAACT,KAAK,CAACwB,OAAO,CAAC;QACxBC,MAAM,EAAE,OAAO;QACfC,GAAG,EAAEvC,OAAO,CAACwC,UAAU;QACvBC,IAAI,EAAET;MACR,CAAC,CAAC;IACJ,CAAC,CAAC,CACDf,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,aAAa,yBAACC,YAAY,EAAE5C,OAAO,EAAE;IACnC,OAAO,IAAI,CAACa,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,MAAM;MACdO,GAAG,EAAE,OAAO;MACZC,QAAQ,EAAE,WAAW;MACrBL,IAAI,EAAE,IAAI,CAACM,eAAe,CAACH,YAAY,EAAE5C,OAAO;IAClD,CAAC,CAAC,CACDiB,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEM,eAAe,6BAAkC;IAAA,IAAjCH,YAAY,uEAAG,CAAC,CAAC;IAAA,IAAE5C,OAAO,uEAAG,CAAC,CAAC;IAC7C,IAAMgD,OAAO;MACXC,UAAU,EAAEL,YAAY,CAACM,MAAM;MAC/BC,UAAU,EAAE;QACVb,MAAM,EAAE,QAAQ;QAChBC,GAAG,EAAE,YAAY;QACjBa,OAAO,EAAE,EAAE;QACXC,OAAO,EAAE;MACX;IAAC,GACErD,OAAO,CACX;IAED,IAAI4C,YAAY,CAACU,oBAAoB,EAAE;MACrCN,OAAO,CAACG,UAAU,CAACC,OAAO,CAACG,IAAI,CAACX,YAAY,CAACU,oBAAoB,CAAC;IACpE;IAEA,OAAON,OAAO;EAChB,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEQ,aAAa,yBAACZ,YAAY,EAAE5C,OAAO,EAAgB;IAAA;IAAA,IAAdyD,OAAO,uEAAG,CAAC,CAAC;IAC/C;IACA;IACA,IAAMhB,IAAI,GAAG;MACXiB,WAAW,EAAE,UAAU;MACvBC,SAAS,EAAEf,YAAY,CAACM,MAAM;MAC9BC,UAAU,EAAE;QACVb,MAAM,EAAE,QAAQ;QAChBC,GAAG,YAAKvC,OAAO,CAAC4D,cAAc,6BAAmBC,oBAAW,CAACC,SAAS,CAAC;UACrEC,MAAM,EAAEnB,YAAY,CAACU;QACvB,CAAC,CAAC;MACJ,CAAC;MACDU,gBAAgB,EAAE;IACpB,CAAC;IAED,IAAIC,OAAO,GAAG,iBAAQC,OAAO,EAAE;IAE/B,IAAIT,OAAO,CAACU,0BAA0B,EAAE;MACtCF,OAAO,GAAG,IAAI,CAACG,sBAAsB,CAACpE,OAAO,CAAC;IAChD;IAEA,OAAOiE,OAAO,CACXhD,IAAI,CAAC;MAAA,OACJ,MAAI,CAACJ,KAAK,CAACwB,OAAO,CAAC;QACjBC,MAAM,EAAE,KAAK;QACbC,GAAG,YAAKvC,OAAO,CAACkD,MAAM,WAAQ;QAC9BT,IAAI,EAAJA;MACF,CAAC,CAAC;IAAA,EACH,CACAxB,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE2B,sBAAsB,kCAACpE,OAAO,EAAE;IAC9B,OAAO,IAAI,CAACa,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,MAAM;MACdC,GAAG,YAAKvC,OAAO,CAACwC,UAAU,UAAO;MACjC6B,EAAE,EAAE;QACFC,MAAM,EAAE;MACV;IACF,CAAC,CAAC,CACDrD,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;EACE8B,UAAU,sBAACvE,OAAO,EAAE;IAClB,OAAO,IAAI,CAACa,KAAK,CAACwB,OAAO,CAAC;MACxBC,MAAM,EAAE,MAAM;MACdC,GAAG,YAAKvC,OAAO,CAACwC,UAAU;IAC5B,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEgC,eAAe,2BAACvE,QAAQ,EAAE;IAAA;IACxB,OAAO,iBAAQwE,GAAG,CAChBxE,QAAQ,CAACyE,KAAK,CAACpE,GAAG,CAAC,UAACqE,OAAO,EAAK;MAC9B,IAAIC,cAAc;MAElB,IAAID,OAAO,CAACxD,IAAI,KAAK,MAAM,EAAE;QAC3ByD,cAAc,GAAG,MAAI,CAACC,wBAAwB,CAACF,OAAO,CAACxC,gBAAgB,EAAEwC,OAAO,CAAC;MACnF,CAAC,MAAM;QACLC,cAAc,GAAG,MAAI,CAACE,oBAAoB,CAACH,OAAO,CAACxC,gBAAgB,EAAEwC,OAAO,CAACI,OAAO,CAAC;MACvF;MAEA,OAAOH,cAAc,CAAC3D,IAAI,CAAC,UAACyB,GAAG,EAAK;QAClC,6BAAuBiC,OAAO,EAAE,SAAS,CAAC;QAC1C,6BAAuBA,OAAO,EAAE,kBAAkB,CAAC;QAEnD,OAAO,wBAASjC,GAAG,EAAEiC,OAAO,CAAC;MAC/B,CAAC,CAAC;IACJ,CAAC,CAAC,CACH;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEG,oBAAoB,gCAAC3C,gBAAgB,EAAE6C,aAAa,EAAE;IACpD,OAAO,IAAI,CAACnE,KAAK,CAACC,QAAQ,CAACc,UAAU,CAClCqD,WAAW,CAAC9C,gBAAgB,EAAE6C,aAAa,CAAC,CAC5C/D,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKwC,IAAI,CAACC,KAAK,CAACzC,GAAG,CAAC;IAAA,EAAC;EACnC,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEmC,wBAAwB,oCAAC1C,gBAAgB,EAAEiD,gBAAgB,EAAE;IAAA;IAC3D,IAAIxE,QAAQ;IAEZ,IAAIwE,gBAAgB,CAACL,OAAO,EAAE;MAC5BnE,QAAQ,GAAGwE,gBAAgB,CAACL,OAAO;IACrC;IAEA,OAAO,IAAI,CAAClE,KAAK,CAACC,QAAQ,CAACc,UAAU,CAClCyD,UAAU,CAAClD,gBAAgB,EAAEiD,gBAAgB,CAAChE,IAAI,CAACF,GAAG,CAAC,CACvDD,IAAI,CAAC,UAACC,GAAG,EAAK;MACbkE,gBAAgB,CAAChE,IAAI,CAACF,GAAG,GAAGA,GAAG;MAC/B,IAAIN,QAAQ,EAAE;QACZ,OAAO,MAAI,CAACC,KAAK,CAACC,QAAQ,CAACc,UAAU,CAACqD,WAAW,CAAC9C,gBAAgB,EAAEvB,QAAQ,CAAC;MAC/E;MAEA,OAAO,EAAE;IACX,CAAC,CAAC,CACDK,IAAI,CAAC,UAACqE,iBAAiB,EAAK;MAC3B,IAAI;QACFF,gBAAgB,CAACxE,QAAQ,GAAGsE,IAAI,CAACC,KAAK,CAACG,iBAAiB,CAAC;QACzD,IAAIF,gBAAgB,CAACxE,QAAQ,CAAC2E,WAAW,EAAE;UACzCH,gBAAgB,CAACG,WAAW,GAAGH,gBAAgB,CAACxE,QAAQ,CAAC2E,WAAW;QACtE;MACF,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdJ,gBAAgB,CAACxE,QAAQ,GAAG,CAAC,CAAC;MAChC;MAEA,OAAOwE,gBAAgB;IACzB,CAAC,CAAC;EACN,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,gBAAgB,4BAACzF,OAAO,EAAE;IACxB,OAAO,IAAI,CAACa,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,QAAQ;MAChBC,GAAG,YAAKvC,OAAO,CAACwC,UAAU;IAC5B,CAAC,CAAC,CACDvB,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEiD,oBAAoB,gCAAC1F,OAAO,EAAE2F,cAAc,EAAE;IAC5C,IAAMlD,IAAI,GAAGkD,cAAc,CAACrF,GAAG,CAAC,UAACqE,OAAO;MAAA,OAAK,oBAAKA,OAAO,EAAE,WAAW,CAAC;IAAA,EAAC;IAExE,OAAO,IAAI,CAAC9D,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,MAAM;MACdC,GAAG,YAAKvC,OAAO,CAACwC,UAAU,cAAW;MACrCC,IAAI,EAAJA,IAAI;MACJ4B,EAAE,EAAE;QACFuB,UAAU,EAAE;MACd;IACF,CAAC,CAAC,CACD3E,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEoD,eAAe,2BAAC1D,gBAAgB,EAAElC,QAAQ,EAAE;IAAA;IAC1C,OAAO,iBAAQwE,GAAG,CAChBxE,QAAQ,CAACK,GAAG,CAAC,UAACqE,OAAO,EAAK;MACxB,IAAImB,iBAAiB;MACrB,IAAIC,WAAW,GAAG,QAAQ;;MAE1B;MACA,IAAIpB,OAAO,CAACvD,IAAI,EAAE;QAChB2E,WAAW,GAAG,MAAM;QACpBD,iBAAiB,GAAG,MAAI,CAACE,wBAAwB,CAAC7D,gBAAgB,EAAEwC,OAAO,CAAC;MAC9E,CAAC,MAAM;QACLmB,iBAAiB,GAAG,MAAI,CAACG,oBAAoB,CAAC9D,gBAAgB,EAAEwC,OAAO,CAAC;MAC1E;MAEA,OAAOmB,iBAAiB,CAAC7E,IAAI,CAAC,UAACyB,GAAG;QAAA,OAChC,sBACE;UACEwD,MAAM,EAAE,MAAI,CAACrF,KAAK,CAACC,QAAQ,CAACoF,MAAM,CAACC,UAAU;UAC7ChF,IAAI,EAAE4E,WAAW;UACjB5D,gBAAgB,EAAhBA;QACF,CAAC,EACD,oBAAKO,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAC7B;MAAA,EACF;IACH,CAAC,CAAC,CACH;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEuD,oBAAoB,gCAAC9D,gBAAgB,EAAEwC,OAAO,EAAE;IAC9C,OAAO,IAAI,CAAC9D,KAAK,CAACC,QAAQ,CAACc,UAAU,CAClCwE,WAAW,CAACjE,gBAAgB,EAAE,wBAAewC,OAAO,CAAC,CAAC,CACtD1D,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAM;QACdqC,OAAO,EAAErC,GAAG;QACZP,gBAAgB,EAAhBA;MACF,CAAC;IAAA,CAAC,CAAC;EACP,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE6D,wBAAwB,oCAAC7D,gBAAgB,EAAEwC,OAAO,EAAE;IAAA;IAClD,OAAO,IAAI,CAAC9D,KAAK,CAACC,QAAQ,CAACc,UAAU,CAClCC,UAAU,CAACM,gBAAgB,EAAEwC,OAAO,CAACvD,IAAI,CAACF,GAAG,CAAC,CAC9CD,IAAI,CAAC,UAACc,YAAY,EAAK;MACtB4C,OAAO,CAACvD,IAAI,CAACF,GAAG,GAAGa,YAAY;MAC/B,IAAI4C,OAAO,CAACY,WAAW,EAAE;QACvBZ,OAAO,CAAC/D,QAAQ,GAAG,sBAAO+D,OAAO,CAAC/D,QAAQ,EAAE;UAAC2E,WAAW,EAAEZ,OAAO,CAACY;QAAW,CAAC,CAAC;MACjF;MACA,IAAIZ,OAAO,CAAC/D,QAAQ,EAAE;QACpB,OAAO,MAAI,CAACC,KAAK,CAACC,QAAQ,CAACc,UAAU,CAClCwE,WAAW,CAACjE,gBAAgB,EAAE,wBAAewC,OAAO,CAAC/D,QAAQ,CAAC,CAAC,CAC/DK,IAAI,CAAC,UAACoF,iBAAiB,EAAK;UAC3B1B,OAAO,CAAC/D,QAAQ,GAAGyF,iBAAiB;QACtC,CAAC,CAAC;MACN;MAEA,OAAO1B,OAAO;IAChB,CAAC,CAAC,CACD1D,IAAI,CAAC;MAAA,OAAO;QACXG,IAAI,EAAEuD,OAAO,CAACvD,IAAI;QAClB2D,OAAO,EAAEJ,OAAO,CAAC/D,QAAQ;QACzBuB,gBAAgB,EAAhBA;MACF,CAAC;IAAA,CAAC,CAAC;EACP,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEmE,WAAW,uBAACtG,OAAO,EAAEyD,OAAO,EAAE;IAAA;IAC5BA,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAEvB,IAAM8C,MAAM,GAAG;MACbhE,GAAG,YAAKvC,OAAO,CAACwC,UAAU,cAAW;MACrC6B,EAAE,EAAE;QACFmC,aAAa,EAAE,IAAI,CAACrG,MAAM,CAACsG;MAC7B;IACF,CAAC;IAED,sBAAOF,MAAM,CAAClC,EAAE,EAAE,oBAAKZ,OAAO,EAAE,eAAe,CAAC,CAAC;IAEjD,OAAO,IAAI,CAACpB,OAAO,CAACkE,MAAM,CAAC,CAACtF,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAK,IAAIgE,eAAI,CAAChE,GAAG,EAAE,MAAI,CAAC7B,KAAK,CAAC;IAAA,EAAC;EACtE,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACE8F,UAAU,sBAAC3G,OAAO,EAAE;IAClB,OAAO,IAAI,CAACa,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,KAAK;MACbC,GAAG,EAAEvC,OAAO,CAACwC;IACf,CAAC,CAAC,CACDvB,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEmE,WAAW,uBAAChE,YAAY,EAAEa,OAAO,EAAE;IAAA;IACjCA,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAEvB,IAAI,CAACb,YAAY,EAAE;MACjB,OAAO,iBAAQiE,MAAM,CAAC,IAAIC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChE;IAEA,IAAMP,MAAM,GAAG;MACb1D,GAAG,EAAE,OAAO;MACZC,QAAQ,EAAE,WAAW;MACrBuB,EAAE,EAAE;QACFpB,UAAU,EAAEL,YAAY,CAACM;MAC3B;IACF,CAAC;IAED,sBAAOqD,MAAM,CAAClC,EAAE,EAAE,oBAAKZ,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IAEzD,OAAO,IAAI,CAACpB,OAAO,CAACkE,MAAM,CAAC,CAACtF,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAK,IAAIgE,eAAI,CAAChE,GAAG,EAAE,OAAI,CAAC7B,KAAK,CAAC;IAAA,EAAC;EACtE,CAAC;EAED;AACF;AACA;AACA;AACA;EACEkG,IAAI,kBAAG;IACL,OAAO,IAAI,CAAClG,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,KAAK;MACbO,GAAG,EAAE,OAAO;MACZC,QAAQ,EAAE;IACZ,CAAC,CAAC,CACD7B,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAEDuE,oBAAoB,gCAACC,OAAO,EAAE;IAC5B,IAAIC,iBAAiB;IAErB,IAAID,OAAO,CAAClB,WAAW,KAAK,MAAM,EAAE;MAClCmB,iBAAiB,GAAG,IAAI,CAACrC,wBAAwB,CAC/CoC,OAAO,CAACE,QAAQ,CAAChF,gBAAgB,EACjC8E,OAAO,CAAClC,OAAO,CAChB;IACH,CAAC,MAAM;MACLmC,iBAAiB,GAAG,IAAI,CAACpC,oBAAoB,CAC3CmC,OAAO,CAACE,QAAQ,CAAChF,gBAAgB,EACjC8E,OAAO,CAAClC,OAAO,CAChB;IACH;IAEA,OAAOmC,iBAAiB,CAACjG,IAAI,CAAC,UAACmG,aAAa,EAAK;MAC/C;MACAH,OAAO,CAAClC,OAAO,GAAGqC,aAAa;MAE/B,OAAOH,OAAO;IAChB,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEI,QAAQ,oBAACC,IAAI,EAAE;IACb,OAAO,IAAI,CAACzG,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,MAAM;MACdO,GAAG,EAAE,OAAO;MACZC,QAAQ,EAAE,gBAAgB;MAC1BL,IAAI,EAAE6E;IACR,CAAC,CAAC,CACDrG,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACE8E,sBAAsB,kCAACvH,OAAO,EAAE;IAAA;IAC9B,OAAO,IAAI,CAACa,KAAK,CAACC,QAAQ,CAAC0G,OAAO,CAC/BC,UAAU,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAC7CxG,IAAI,CAAC,UAACyG,8BAA8B,EAAK;MACxC,IAAI,CAAC,OAAI,CAAC7G,KAAK,CAACC,QAAQ,CAAC6G,OAAO,CAACC,uBAAuB,EAAE;QACxD,OAAO,iBAAQf,MAAM,CACnB,IAAIC,KAAK,CAAC,0EAA0E,CAAC,CACtF;MACH;MACA,IAAI,CAACY,8BAA8B,EAAE;QACnC,OAAO,iBAAQb,MAAM,CAAC,IAAIC,KAAK,CAAC,qCAAqC,CAAC,CAAC;MACzE;MAEA,IAAOe,YAAY,GAAI,OAAI,CAAChH,KAAK,CAACC,QAAQ,CAACoF,MAAM,CAA1C2B,YAAY;MACnB,IAAOC,kCAAkC,GACvC,OAAI,CAACjH,KAAK,CAACC,QAAQ,CAAC6G,OAAO,CAACC,uBAAuB,CAD9CE,kCAAkC;MAGzC,IAAMR,IAAI,GAAG;QACXQ,kCAAkC,EAAlCA,kCAAkC;QAClCD,YAAY,EAAZA,YAAY;QACZE,MAAM,EAAE;MACV,CAAC;MAED,OAAO,OAAI,CAAClH,KAAK,CAACwB,OAAO,CAAC;QACxBC,MAAM,EAAE,MAAM;QACdC,GAAG,YAAKvC,OAAO,CAACwC,UAAU,cAAW;QACrCC,IAAI,EAAE6E;MACR,CAAC,CAAC;IACJ,CAAC,CAAC,CACDrG,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEuF,2BAA2B,uCAAChI,OAAO,EAAEiI,OAAO,EAAE;IAC5C,IAAOJ,YAAY,GAAI,IAAI,CAAChH,KAAK,CAACC,QAAQ,CAACoF,MAAM,CAA1C2B,YAAY;IACnB,IAAMP,IAAI,GAAG;MACXW,OAAO,EAAPA,OAAO;MACPJ,YAAY,EAAZA,YAAY;MACZE,MAAM,EAAE;IACV,CAAC;IAED,OAAO,IAAI,CAAClH,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,MAAM;MACdC,GAAG,YAAKvC,OAAO,CAACwC,UAAU,cAAW;MACrCC,IAAI,EAAE6E;IACR,CAAC,CAAC,CACDrG,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAEDjC,gBAAgB,4BAACR,OAAO,EAAEkI,YAAY,EAAE;IAAA;IACtC,OAAO,IAAI,CAACrH,KAAK,CAACC,QAAQ,CAACC,KAAK,CAC7B8E,eAAe,CAAC7F,OAAO,CAAC8B,uBAAuB,EAAEoG,YAAY,CAAC,CAC9DjH,IAAI,CAAC,UAACyB,GAAG;MAAA,OACR,OAAI,CAAC7B,KAAK,CAACwB,OAAO,CAAC;QACjBC,MAAM,EAAE,MAAM;QACdC,GAAG,YAAKvC,OAAO,CAACwC,UAAU,cAAW;QACrCC,IAAI,EAAEC;MACR,CAAC,CAAC;IAAA,EACH,CACAzB,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEzB,YAAY,wBAAChB,OAAO,EAAEoB,IAAI,EAAEqC,OAAO,EAAE;IAAA;IACnCA,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAEvB,OAAO,IAAI,CAAC5C,KAAK,CAACC,QAAQ,CAACc,UAAU,CAClCuG,aAAa,CAAC/G,IAAI,CAAC,CACnBH,IAAI,CAAC;MAAA,IAAEC,GAAG,QAAHA,GAAG;QAAEkH,KAAK,QAALA,KAAK;MAAA,OAChB,iBAAQ3D,GAAG,CAAC,CAACvD,GAAG,EAAE,OAAI,CAACmH,wBAAwB,CAACrI,OAAO,EAAEoI,KAAK,EAAE3E,OAAO,CAAC9B,WAAW,CAAC,CAAC,CAAC;IAAA,EACvF,CACAV,IAAI,CAAC;MAAA;QAAEC,GAAG;QAAEwB,GAAG;MAAA,OAAM,sBAAOxB,GAAG,EAAE;QAACM,GAAG,EAAEkB,GAAG,CAAC4F;MAAW,CAAC,CAAC;IAAA,EAAC;EAC9D,CAAC;EAEDC,YAAY,wBAACvI,OAAO,EAAE2B,WAAW,EAAE;IACjC,IAAI6G,UAAU,aAAMxI,OAAO,CAACwC,UAAU,iBAAc;IAEpD,IAAIb,WAAW,EAAE;MACf6G,UAAU,aAAMxI,OAAO,CAACwC,UAAU,mBAAgB;IACpD;IAEA,OAAO,IAAI,CAAC3B,KAAK,CACdwB,OAAO,CAAC;MACPC,MAAM,EAAE,KAAK;MACbC,GAAG,EAAEiG;IACP,CAAC,CAAC,CACDvH,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI,CAACgG,QAAQ;IAAA,EAAC;EACrC,CAAC;EAEDJ,wBAAwB,oCAACrI,OAAO,EAAEoB,IAAI,EAAEO,WAAW,EAAE;IAAA;IACnD,IAAMS,QAAQ,GAAGhB,IAAI,CAACsH,MAAM,IAAItH,IAAI,CAACE,IAAI,IAAIF,IAAI,CAACuH,UAAU;IAE5D,OAAO,IAAI,CAACJ,YAAY,CAACvI,OAAO,EAAE2B,WAAW,CAAC,CAACV,IAAI,CAAC,UAACwH,QAAQ;MAAA,OAC3D,OAAI,CAAC5H,KAAK,CAAC+H,MAAM,CAAC;QAChBrG,GAAG,YAAKkG,QAAQ,qBAAkB;QAClCrH,IAAI,EAAJA,IAAI;QACJiD,EAAE,EAAE;UACFwE,SAAS,EAAE;QACb,CAAC;QACDC,MAAM,EAAE;UACNC,UAAU,EAAE;YAAC3G,QAAQ,EAARA;UAAQ,CAAC;UACtBwG,MAAM,EAAE;YACNI,IAAI,gBAACC,OAAO,EAAE;cACZ,OAAOA,OAAO,CAACC,SAAS;YAC1B;UACF,CAAC;UACDC,QAAQ,EAAE;YACRC,IAAI,gBAACH,OAAO,EAAE;cACZ,OAAOA,OAAO,CAACI,eAAe;YAChC,CAAC;YACD5G,IAAI,EAAE;cAACL,QAAQ,EAARA;YAAQ;UACjB;QACF;MACF,CAAC,CAAC;IAAA,EACH;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEkH,sBAAsB,kCAACvI,KAAK,EAAE;IAAA;IAC5B,IAAI,CAACA,KAAK,EAAE;MACV,iBAAQ8F,MAAM,CACZ,IAAIC,KAAK,CAAC,uEAAuE,CAAC,CACnF;IACH;IAEA,OAAO,IAAI,CAACjG,KAAK,CAACC,QAAQ,CAACc,UAAU,CAAC2H,GAAG,CACtCC,cAAc,CAAC;MACdlH,MAAM,EAAE,QAAQ;MAChBC,GAAG,EAAE,iBAAiB;MACtBkH,WAAW,EAAE1I,KAAK,CAAC6C,cAAc;MACjC8F,SAAS,EAAE;IACb,CAAC,CAAC,CACDzI,IAAI,CAAC,UAACoB,OAAO;MAAA,OACZ,OAAI,CAACxB,KAAK,CAACwB,OAAO,CAAC;QACjBE,GAAG,YAAKxB,KAAK,CAACyB,UAAU,8BAA2B;QACnDF,MAAM,EAAE,KAAK;QACbG,IAAI,EAAE;UAACU,UAAU,EAAEd,OAAO,CAACsH;QAAO;MACpC,CAAC,CAAC;IAAA,EACH,CACA1I,IAAI,CAAC,UAACyB,GAAG;MAAA,OAAK,OAAI,CAAC7B,KAAK,CAACC,QAAQ,CAACc,UAAU,CAAC2H,GAAG,CAACK,iBAAiB,CAAClH,GAAG,CAACD,IAAI,CAACoH,WAAW,CAAC;IAAA,EAAC,CACzF5I,IAAI,CAAC,UAAC6I,mBAAmB,EAAK;MAC7B,IAAI,CAAAA,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAEC,cAAc,CAACrB,MAAM,IAAG,CAAC,EAAE;QAClD,OAAOoB,mBAAmB,CAACC,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM;MACrD;MAEA,OAAOC,SAAS;IAClB,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,GAAG;MAAA;QACT;AACR;AACA;QACQ,iBAAQjG,OAAO,CAACiG,GAAG;MAAC;IAAA,EACrB;EACL,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,wBAAwB,oCAACrJ,KAAK,EAAE;IAAA;IAC9B,IAAI,CAACA,KAAK,EAAE;MACV,iBAAQ8F,MAAM,CACZ,IAAIC,KAAK,CAAC,2EAA2E,CAAC,CACvF;IACH;IAEA,OAAO,IAAI,CAACjG,KAAK,CAACC,QAAQ,CAACc,UAAU,CAAC2H,GAAG,CACtCc,kBAAkB,CAAC;MAClBC,MAAM,EAAEvJ,KAAK,CAAC6C;IAChB,CAAC,CAAC,CACD3C,IAAI,CAAC,UAAC8I,cAAc,EAAK;MACxB;AACR;AACA;MACQ,IAAMQ,QAAQ,GAAGR,cAAc,CAACzJ,GAAG,CAAC,UAACkK,IAAI,EAAK;QAC5C,IAAOzG,MAAM,GAAIyG,IAAI,CAAdzG,MAAM;QAEb,OAAO,OAAI,CAAClD,KAAK,CAACC,QAAQ,CAACc,UAAU,CAAC2H,GAAG,CACtCkB,mBAAmB,CAAC;UACnB1G,MAAM,EAANA,MAAM;UACNuG,MAAM,EAAEvJ,KAAK,CAAC6C;QAChB,CAAC,CAAC,CACD3C,IAAI,CAAC;UAAA,OAAM,iBAAQiD,OAAO,CAACH,MAAM,CAAC;QAAA,EAAC,CACnCmG,KAAK,CAAC,UAACC,GAAG;UAAA;YACT;AACd;AACA;YACc,iBAAQjG,OAAO,CAACiG,GAAG;UAAC;QAAA,EACrB;MACL,CAAC,CAAC;MAEF,IAAII,QAAQ,CAAC7B,MAAM,GAAG,CAAC,EAAE;QACvB,OAAO,iBAAQjE,GAAG,CAAC8F,QAAQ,CAAC,CAACtJ,IAAI,CAAC,UAACyJ,SAAS;UAAA,OAAKA,SAAS;QAAA,EAAC;MAC7D;MAEA,OAAO,iBAAQxG,OAAO,CAAC,EAAE,CAAC;IAC5B,CAAC,CAAC;EACN,CAAC;EAAA;AACH,CAAC,CAAC;AAAC,eAEY1E,KAAK;AAAA"}
package/dist/realtime.js CHANGED
@@ -221,7 +221,7 @@ var RealtimeService = _webexCore.WebexPlugin.extend({
221
221
  return _this7.realtimeChannels.remove(channel.channelId);
222
222
  }));
223
223
  },
224
- version: "3.0.0-beta.39"
224
+ version: "3.0.0-beta.391"
225
225
  });
226
226
  var _default = RealtimeService;
227
227
  exports.default = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-board",
3
- "version": "3.0.0-beta.39",
3
+ "version": "3.0.0-beta.391",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "author": "Greg Hewett <ghewett@cisco.com>",
@@ -21,22 +21,22 @@
21
21
  ]
22
22
  },
23
23
  "devDependencies": {
24
- "@webex/test-helper-chai": "3.0.0-beta.39",
25
- "@webex/test-helper-file": "3.0.0-beta.39",
26
- "@webex/test-helper-mocha": "3.0.0-beta.39",
27
- "@webex/test-helper-mock-web-socket": "3.0.0-beta.39",
28
- "@webex/test-helper-mock-webex": "3.0.0-beta.39",
29
- "@webex/test-helper-test-users": "3.0.0-beta.39",
24
+ "@webex/test-helper-chai": "3.0.0-beta.391",
25
+ "@webex/test-helper-file": "3.0.0-beta.391",
26
+ "@webex/test-helper-mocha": "3.0.0-beta.391",
27
+ "@webex/test-helper-mock-web-socket": "3.0.0-beta.391",
28
+ "@webex/test-helper-mock-webex": "3.0.0-beta.391",
29
+ "@webex/test-helper-test-users": "3.0.0-beta.391",
30
30
  "sinon": "^9.2.4"
31
31
  },
32
32
  "dependencies": {
33
- "@webex/common": "3.0.0-beta.39",
34
- "@webex/internal-plugin-board": "3.0.0-beta.39",
35
- "@webex/internal-plugin-conversation": "3.0.0-beta.39",
36
- "@webex/internal-plugin-encryption": "3.0.0-beta.39",
37
- "@webex/internal-plugin-feature": "3.0.0-beta.39",
38
- "@webex/internal-plugin-mercury": "3.0.0-beta.39",
39
- "@webex/webex-core": "3.0.0-beta.39",
33
+ "@webex/common": "3.0.0-beta.391",
34
+ "@webex/internal-plugin-board": "3.0.0-beta.391",
35
+ "@webex/internal-plugin-conversation": "3.0.0-beta.391",
36
+ "@webex/internal-plugin-encryption": "3.0.0-beta.391",
37
+ "@webex/internal-plugin-feature": "3.0.0-beta.391",
38
+ "@webex/internal-plugin-mercury": "3.0.0-beta.391",
39
+ "@webex/webex-core": "3.0.0-beta.391",
40
40
  "ampersand-collection": "^2.0.2",
41
41
  "es6-promise-series": "^0.2.2",
42
42
  "lodash": "^4.17.21",
package/src/board.js CHANGED
@@ -126,17 +126,31 @@ const Board = WebexPlugin.extend({
126
126
  .then((res) => res.body);
127
127
  },
128
128
 
129
- _prepareChannel(conversation, channel) {
130
- return {
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 = {
131
139
  aclUrlLink: conversation.aclUrl,
132
140
  kmsMessage: {
133
141
  method: 'create',
134
142
  uri: '/resources',
135
- userIds: [conversation.kmsResourceObjectUrl],
143
+ userIds: [],
136
144
  keyUris: [],
137
145
  },
138
146
  ...channel,
139
147
  };
148
+
149
+ if (conversation.kmsResourceObjectUrl) {
150
+ results.kmsMessage.userIds.push(conversation.kmsResourceObjectUrl);
151
+ }
152
+
153
+ return results;
140
154
  },
141
155
 
142
156
  /**
@@ -307,6 +321,8 @@ const Board = WebexPlugin.extend({
307
321
 
308
322
  /**
309
323
  * Deletes Contents from a Channel except the ones listed in contentsToKeep
324
+ *
325
+ * THIS API HAS CHANGED!!! SEE SPARK-412694. NEEDS UPDATING.
310
326
  * @memberof Board.BoardService
311
327
  * @param {Board~Channel} channel
312
328
  * @param {Array<Board~Content>} contentsToKeep Array of board objects (curves, text, and images) with valid contentId (received from server)
@@ -109,7 +109,9 @@ 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) => participants[1].webex.internal.encryption.download(scr))
112
+ .then((scr) => {
113
+ participants[0].webex.logger.debug('@@@@', scr)
114
+ return participants[1].webex.internal.encryption.download(scr.loc, scr)})
113
115
  .then((downloadedFile) =>
114
116
  fh
115
117
  .isMatchingFile(downloadedFile, fixture)
@@ -142,7 +144,7 @@ describe('plugin-board', () => {
142
144
  res.image.scr
143
145
  );
144
146
  })
145
- .then((decryptedScr) => participants[2].webex.internal.encryption.download(decryptedScr))
147
+ .then((decryptedScr) => participants[2].webex.internal.encryption.download(decryptedScr.loc, decryptedScr))
146
148
  .then((file) =>
147
149
  fh.isMatchingFile(file, fixture).then((result) => assert.deepEqual(result, true))
148
150
  );
@@ -190,7 +192,7 @@ describe('plugin-board', () => {
190
192
 
191
193
  it('matches file file downloaded', () =>
192
194
  participants[0].webex.internal.encryption
193
- .download(testScr)
195
+ .download(testScr.loc, testScr)
194
196
  .then((downloadedFile) =>
195
197
  fh
196
198
  .isMatchingFile(downloadedFile, fixture)
@@ -199,7 +201,7 @@ describe('plugin-board', () => {
199
201
 
200
202
  it('allows others to download image', () =>
201
203
  participants[2].webex.internal.encryption
202
- .download(testScr)
204
+ .download(testScr.loc, testScr)
203
205
  .then((downloadedFile) =>
204
206
  fh
205
207
  .isMatchingFile(downloadedFile, fixture)
@@ -245,7 +247,7 @@ describe('plugin-board', () => {
245
247
  })
246
248
  .then(() =>
247
249
  participants[0].webex.internal.encryption
248
- .download(testScr)
250
+ .download(testScr.loc, testScr)
249
251
  .then((downloadedFile) => fh.isMatchingFile(downloadedFile, fixture))
250
252
  .then((res) => assert.isTrue(res))
251
253
  );
@@ -338,13 +340,11 @@ describe('plugin-board', () => {
338
340
  assert.isFalse(channelPage.hasNext());
339
341
  channelsReceived = channelsReceived.concat(channelPage.items);
340
342
 
341
- channelsCreated.sort((a, b) => a.createdTime - b.createdTime);
342
- channelsReceived.sort((a, b) => a.createdTime - b.createdTime);
343
-
344
343
  if (channelsCreated.length === channelsReceived.length) {
345
- channelsReceived.forEach((channel, i) => {
346
- delete channel.format;
347
- assert.deepEqual(channel, channelsCreated[i]);
344
+ channelsReceived.forEach((received) => {
345
+ const created = channelsCreated.find((channel) => channel.channelId === received.channelId);
346
+
347
+ assert.deepEqual(received, created);
348
348
  });
349
349
  }
350
350
  })
@@ -496,7 +496,8 @@ describe('plugin-board', () => {
496
496
  });
497
497
  });
498
498
 
499
- describe('#deletePartialContent()', () => {
499
+ // THE SERVICE API FOR REMOVING PARTIAL CONTENT HAS CHANGED. SEE SPARK-412694.
500
+ describe.skip('#deletePartialContent()', () => {
500
501
  after(() => participants[0].webex.internal.board.deleteAllContent(board));
501
502
 
502
503
  it('deletes some contents from the specified board', () => {
@@ -12,7 +12,8 @@ import fh from '@webex/test-helper-file';
12
12
  import {map} from 'lodash';
13
13
  import uuid from 'uuid';
14
14
 
15
- describe('plugin-board', () => {
15
+ // SPARK-413317
16
+ describe.skip('plugin-board', () => {
16
17
  describe('realtime', () => {
17
18
  let board, conversation, fixture, participants;
18
19
  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
- return webex.internal.board.createChannel(conversation);
239
+
240
240
  });
241
241
 
242
242
  after(() => {
@@ -249,16 +249,41 @@ describe('plugin-board', () => {
249
249
  );
250
250
  });
251
251
 
252
- it('requests POST to channels service', () => {
253
- assert.calledWith(
254
- webex.request,
255
- sinon.match({
256
- method: 'POST',
257
- api: 'board',
258
- resource: '/channels',
259
- body: channelRequestBody,
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
+ )
260
271
  })
261
- );
272
+ });
273
+
274
+ 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
+ });
262
287
  });
263
288
  });
264
289