@webex/internal-plugin-conversation 2.29.2 → 2.29.5

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.
@@ -30,8 +30,8 @@ var decryptTextProp = (0, _curry2.default)(function (name, ctx, key, object) {
30
30
 
31
31
  var transforms = (0, _toArray.default)('inbound', {
32
32
  /**
33
- * This function is used recursively to decrypt various properties on convesations, activities, etc
34
- * @param {Object} ctx An object containg a webex instance and a transform
33
+ * This function is used recursively to decrypt various properties on conversations, activities, etc
34
+ * @param {Object} ctx An object containing a webex instance and a transform
35
35
  * @param {String} key KMS encryption key url
36
36
  * @param {Object} object Generic object that you want to decrypt some property on based on the type
37
37
  * @returns {Promise} Returns a transform promise
@@ -69,8 +69,8 @@ var transforms = (0, _toArray.default)('inbound', {
69
69
 
70
70
  /**
71
71
  * Decrypt an individual submit object from a cardAction activity
72
- * (object.objectType === 'sumbit')
73
- * @param {Object} ctx An object containg a webex instance and a transform
72
+ * (object.objectType === 'submit')
73
+ * @param {Object} ctx An object containing a webex instance and a transform
74
74
  * @param {String} key KMS key
75
75
  * @param {Object} object An instance of a Webex submit object
76
76
  * these objects are returned when a user clicks on a Action.Submit button in a card
@@ -94,7 +94,7 @@ var transforms = (0, _toArray.default)('inbound', {
94
94
 
95
95
  /**
96
96
  * Decrypt an individual reaction2Summary activity (object.objectType === 'reaction2Summary')
97
- * @param {Object} ctx An object containg a webex instance and a transform
97
+ * @param {Object} ctx An object containing a webex instance and a transform
98
98
  * @param {String} key KMS key
99
99
  * @param {Object} object An instance of a Webex reaction2Summary object
100
100
  * these objects are returned by various conversation APIs and over mercury
@@ -113,7 +113,7 @@ var transforms = (0, _toArray.default)('inbound', {
113
113
 
114
114
  /**
115
115
  * Decrypt an individual reaction2SelfSummary activity (object.objectType === 'reaction2SelfSummary')
116
- * @param {Object} ctx An object containg a webex instance and a transform
116
+ * @param {Object} ctx An object containing a webex instance and a transform
117
117
  * @param {String} key KMS key
118
118
  * @param {Object} object An instance of a Webex reaction2SelfSummary object
119
119
  * these objects are returned by various conversation APIs and NOT over mercury
@@ -134,7 +134,7 @@ var transforms = (0, _toArray.default)('inbound', {
134
134
 
135
135
  /**
136
136
  * Decrypt an individual reaction2 activity (object.objectType === 'reaction2')
137
- * @param {Object} ctx An object containg a webex instance and a transform
137
+ * @param {Object} ctx An object containing a webex instance and a transform
138
138
  * @param {String} key KMS key
139
139
  * @param {Object} object An instance of a Webex reaction2 object
140
140
  * these objects are returned by various conversation APIs and over mercury
@@ -147,7 +147,7 @@ var transforms = (0, _toArray.default)('inbound', {
147
147
 
148
148
  /**
149
149
  * Decrypt an individual threadObject
150
- * @param {Object} ctx An object containg a webex instance and a transform
150
+ * @param {Object} ctx An object containing a webex instance and a transform
151
151
  * @param {Object} threadObject An instance of a Webex threadObject (the objects returned by the /conversation/api/v1/threads api)
152
152
  * @returns {Promise} Returns a ctx.transform promise
153
153
  */
@@ -165,7 +165,7 @@ var transforms = (0, _toArray.default)('inbound', {
165
165
 
166
166
  /**
167
167
  * Decrypt an individual meeting container activity
168
- * @param {Object} ctx An object containg a webex instance and a transform
168
+ * @param {Object} ctx An object containing a webex instance and a transform
169
169
  * @param {object} key KMS encryption key url
170
170
  * @param {Object} meetingContainerActivity An instance of a Webex meeting container activity
171
171
  * @returns {Promise} Returns a ctx.transform promise
@@ -191,10 +191,10 @@ var transforms = (0, _toArray.default)('inbound', {
191
191
  },
192
192
 
193
193
  /**
194
- * Decrypts a given conversation and it's activites by building an array of promises that call
194
+ * Decrypts a given conversation and it's activities by building an array of promises that call
195
195
  * decryptObject, which may then call other decrypt functions
196
196
  *
197
- * @param {Object} ctx An object containg a webex instance and a transform
197
+ * @param {Object} ctx An object containing a webex instance and a transform
198
198
  * @param {String} key KMS encryption key url (or actual key?)
199
199
  * @param {Object} conversation A Webex conversation object
200
200
  * @returns {Promise} Returns the result of Promise.all
@@ -239,7 +239,7 @@ var transforms = (0, _toArray.default)('inbound', {
239
239
 
240
240
  /**
241
241
  * Decrypt an individual activity
242
- * @param {Object} ctx An object containg a webex instance and a transform
242
+ * @param {Object} ctx An object containing a webex instance and a transform
243
243
  * @param {String} key KMS encryption key url (or actual key?)
244
244
  * @param {Object} activity An instance of a Webex activity
245
245
  * @returns {Promise} Returns a ctx.transform promise
@@ -268,7 +268,7 @@ var transforms = (0, _toArray.default)('inbound', {
268
268
  * @param {String} key KMS key
269
269
  * @param {Object} microappInstance A microappInstance which includes several properties of a recording
270
270
  * @param {String} microappInstance.model An encrypted string which decrypts to an object
271
- * @returns {Promise} Returns a contex transform
271
+ * @returns {Promise} Returns a context transform
272
272
  */
273
273
  decryptMicroappinstance: function decryptMicroappinstance(ctx, key, microappInstance) {
274
274
  return ctx.transform('decryptPropModel', key, microappInstance);
@@ -1 +1 @@
1
- {"version":3,"names":["decryptTextProp","name","ctx","key","object","transform","transforms","toArray","decryptObject","undefined","resolve","objectType","encryptionKeyUrl","all","files","items","map","item","decryptSubmit","inputs","decryptionFailureMessage","webex","internal","conversation","config","then","JSON","parse","catch","reason","logger","warn","decryptReaction2summary","reactions","reaction","decryptReaction2selfsummary","decryptReaction2","decryptThread","threadObject","promises","childActivities","child","decryptMeetingcontainer","meetingContainerActivity","displayName","usableKey","push","extensions","itemsToDecrypt","filter","data","forEach","itemToDecrypt","decryptConversation","activities","error","url","avatarEncryptionKeyUrl","avatar","previous","previousValue","decryptActivity","activity","keyUrl","children","decryptMicroappinstance","microappInstance","decryptComment","comment","cards","index","decryptContent","content","contentCategory","decryptContentFiles","links","decryptContentLinks","decryptEvent","event","location","split","length","decryptFile","file","transcodedCollection","image","decryptLink","link","decryptTranscodedContent","transcodedContent","decryptImageURI","imageURI","encryption","decryptText","plaintext","keepEncryptedProperties","encryptedPropName","decryptPropCardItem","array","String","decryptPropScr","decryptScr","scr","decryptPropSslr","sslr","decryptPropDisplayName","decryptPropContent","decryptPropModel","decryptPropLocation","decryptPropTopic"],"sources":["decryption-transforms.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {camelCase, capitalize, curry} from 'lodash';\n\nimport toArray from './to-array';\n\nconst decryptTextProp = curry((name, ctx, key, object) => ctx.transform('decryptTextProp', name, key, object));\n\n// eslint-disable-next-line import/prefer-default-export\nexport const transforms = toArray('inbound', {\n\n /**\n * This function is used recursively to decrypt various properties on convesations, activities, etc\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {String} key KMS encryption key url\n * @param {Object} object Generic object that you want to decrypt some property on based on the type\n * @returns {Promise} Returns a transform promise\n */\n decryptObject(ctx, key, object) {\n if (!object) {\n object = key; // eslint-disable-line no-param-reassign\n key = undefined; // eslint-disable-line no-param-reassign\n }\n\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n if (!key && object.encryptionKeyUrl) {\n key = object.encryptionKeyUrl; // eslint-disable-line no-param-reassign\n }\n\n // Transcoded content was not showing up on the activities since the\n // decryptFile was not being called. Calling decryptFile for\n // transcodedContent fixes the issue.\n if (object.objectType === 'transcodedContent') {\n return Promise.all(object.files.items.map((item) => ctx.transform('decryptFile', key, item)));\n }\n\n return ctx.transform(`decrypt${capitalize(object.objectType)}`, key, object);\n },\n\n /**\n * Decrypt an individual submit object from a cardAction activity\n * (object.objectType === 'sumbit')\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {String} key KMS key\n * @param {Object} object An instance of a Webex submit object\n * these objects are returned when a user clicks on a Action.Submit button in a card\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptSubmit(ctx, key, object) {\n if (!object.inputs) {\n return Promise.resolve();\n }\n const {decryptionFailureMessage} = ctx.webex.internal.conversation.config;\n\n return ctx.transform('decryptPropCardItem', 0, key, [object.inputs])\n .then((inputs) => {\n object.inputs = JSON.parse(inputs[0]); // eslint-disable-line no-param-reassign\n })\n .catch((reason) => {\n ctx.webex.logger.warn(`plugin-conversation: failed to decrypt attachmentAction.inputs: ${reason}`);\n object.inputs = decryptionFailureMessage; // eslint-disable-line no-param-reassign\n\n return Promise.resolve(decryptionFailureMessage);\n });\n },\n\n /**\n * Decrypt an individual reaction2Summary activity (object.objectType === 'reaction2Summary')\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {String} key KMS key\n * @param {Object} object An instance of a Webex reaction2Summary object\n * these objects are returned by various conversation APIs and over mercury\n * represents an aggregated summary of all reactions to a specific activity\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptReaction2summary(ctx, key, object) {\n if (!object.reactions) {\n return Promise.resolve();\n }\n\n return Promise.all(object.reactions.map((reaction) => ctx.transform('decryptPropDisplayName', key, reaction)));\n },\n\n /**\n * Decrypt an individual reaction2SelfSummary activity (object.objectType === 'reaction2SelfSummary')\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {String} key KMS key\n * @param {Object} object An instance of a Webex reaction2SelfSummary object\n * these objects are returned by various conversation APIs and NOT over mercury\n * they are ONLY received by the self user\n * they represent ONLY the self user's reactions and are used for enforcing\n * limit of times they can react to a specific activity\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptReaction2selfsummary(ctx, key, object) {\n if (!object.reactions) {\n return Promise.resolve();\n }\n\n return Promise.all(object.reactions.map((reaction) => ctx.transform('decryptPropDisplayName', key, reaction)));\n },\n\n /**\n * Decrypt an individual reaction2 activity (object.objectType === 'reaction2')\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {String} key KMS key\n * @param {Object} object An instance of a Webex reaction2 object\n * these objects are returned by various conversation APIs and over mercury\n * ONLY self users receive these objects\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptReaction2(ctx, key, object) {\n return ctx.transform('decryptPropDisplayName', key, object);\n },\n\n /**\n * Decrypt an individual threadObject\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {Object} threadObject An instance of a Webex threadObject (the objects returned by the /conversation/api/v1/threads api)\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptThread(ctx, threadObject) {\n let promises = [];\n\n if (threadObject.childActivities && Array.isArray(threadObject.childActivities)) {\n promises = threadObject.childActivities.map((child) => ctx.transform('decryptObject', null, child));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypt an individual meeting container activity\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {object} key KMS encryption key url\n * @param {Object} meetingContainerActivity An instance of a Webex meeting container activity\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptMeetingcontainer(ctx, key, meetingContainerActivity) {\n const promises = [];\n\n if (meetingContainerActivity.displayName) {\n const usableKey = meetingContainerActivity.encryptionKeyUrl || key;\n\n promises.push(ctx.transform('decryptPropDisplayName', usableKey, meetingContainerActivity));\n }\n\n if (meetingContainerActivity.extensions) {\n const itemsToDecrypt = meetingContainerActivity.extensions.items.filter((item) => item.data.objectType === 'recording');\n\n itemsToDecrypt.forEach((itemToDecrypt) => {\n promises.push(ctx.transform('decryptPropTopic', itemToDecrypt.encryptionKeyUrl, itemToDecrypt.data));\n });\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a given conversation and it's activites by building an array of promises that call\n * decryptObject, which may then call other decrypt functions\n *\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {String} key KMS encryption key url (or actual key?)\n * @param {Object} conversation A Webex conversation object\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptConversation(ctx, key, conversation) {\n const promises = [];\n\n if (conversation.activities.items) {\n promises.push(Promise.all(conversation.activities.items.map((item) => ctx.transform('decryptObject', null, item))));\n }\n\n const usableKey = conversation.encryptionKeyUrl || key;\n const {decryptionFailureMessage} = ctx.webex.internal.conversation.config;\n\n if (usableKey) {\n promises.push(ctx.transform('decryptPropDisplayName', usableKey, conversation)\n .catch((error) => {\n ctx.webex.logger.warn('plugin-conversation: failed to decrypt display name of ', conversation.url, error);\n Promise.resolve(decryptionFailureMessage);\n }));\n promises.push(ctx.transform('decryptPropContent', usableKey, conversation));\n }\n if (conversation.avatarEncryptionKeyUrl) {\n promises.push(ctx.transform('decryptObject', conversation.avatarEncryptionKeyUrl, conversation.avatar));\n }\n // TODO (holsted 04/06/19): This was deprecated in favor of .previousValue below. I wanted to remove this entirely\n // but I wasn't sure if some open source use cases may be reading from cached conversations or not so leaving it for now.\n if (conversation.previous) {\n promises.push(ctx.transform('decryptPropDisplayName', usableKey, conversation.previous));\n }\n if (conversation.previousValue) {\n promises.push(ctx.transform('decryptPropDisplayName', usableKey, conversation.previousValue));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypt an individual activity\n * @param {Object} ctx An object containg a webex instance and a transform\n * @param {String} key KMS encryption key url (or actual key?)\n * @param {Object} activity An instance of a Webex activity\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptActivity(ctx, key, activity) {\n if (!activity.encryptionKeyUrl && !(activity.object && activity.object.encryptionKeyUrl)) {\n return Promise.resolve(activity);\n }\n\n const keyUrl = activity.encryptionKeyUrl || activity.object.encryptionKeyUrl || key;\n\n let promises = [];\n\n // iterate and recursively decrypt over children objects\n\n if (activity.children && Array.isArray(activity.children)) {\n promises = activity.children.map((child) => ctx.transform('decryptObject', keyUrl, child.activity));\n }\n\n promises.push(ctx.transform('decryptObject', keyUrl, activity.object));\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a microappInstance (recording) model\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} microappInstance A microappInstance which includes several properties of a recording\n * @param {String} microappInstance.model An encrypted string which decrypts to an object\n * @returns {Promise} Returns a contex transform\n */\n decryptMicroappinstance(ctx, key, microappInstance) {\n return ctx.transform('decryptPropModel', key, microappInstance);\n },\n\n /**\n* Decrypts a comment...\n* @param {Object} ctx An object containing a webex instance and transform prop\n* @param {String} key KMS key\n* @param {Object} comment A comment object with a displayName and content (encrypted)\n* @returns {Promise} Returns the results of Promise.all on two transforms\n*/\n decryptComment(ctx, key, comment) {\n const promises = [\n ctx.transform('decryptPropDisplayName', key, comment),\n ctx.transform('decryptPropContent', key, comment)\n ];\n\n if (comment.cards && Array.isArray(comment.cards)) {\n comment.cards.map((item, index) => promises.push(ctx.transform('decryptPropCardItem', index, key, comment.cards)));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a content field\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} content An object with properties to be decrypted\n * @returns {Promise} A promise that will return when the decryption has finished\n */\n decryptContent(ctx, key, content) {\n if (content.contentCategory === 'links') {\n return ctx.transform('decryptContentLinks', key, content);\n }\n\n return ctx.transform('decryptContentFiles', key, content);\n },\n\n /**\n * Decrypts a content field which contains files and possibly links\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} content An object with properties to be decrypted\n * @param {Array} content.files An array of files to decrypt by calling decryptObject\n * @param {Array} content.links An array of links to decrypt by calling decryptObject\n * @returns {Promise} A promise that will return when the decryption has finished\n */\n decryptContentFiles(ctx, key, content) {\n if (!content.files || !content.files.items || !Array.isArray(content.files.items)) {\n return Promise.resolve();\n }\n\n const promises = content.files.items.map((item) => ctx.transform('decryptObject', key, item));\n\n promises.push(ctx.transform('decryptComment', key, content));\n\n if (content.links && content.links.items && Array.isArray(content.links.items)) {\n content.links.items.forEach((item) => promises.push(ctx.transform('decryptObject', key, item)));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a content field which contains links\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} content An object with properties to be decrypted\n * @param {Array} content.links An array of links to decrypt by calling decryptObject\n * @returns {Promise} A promise that will return when the decryption has finished\n */\n decryptContentLinks(ctx, key, content) {\n if (!content.links || !content.links.items || !Array.isArray(content.links.items)) {\n return Promise.resolve();\n }\n\n const promises = content.links.items.map((item) => ctx.transform('decryptObject', key, item));\n\n promises.push(ctx.transform('decryptComment', key, content));\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts what may be a meeting event?\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} event An object with a display name and location to be decrypted\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptEvent(ctx, key, event) {\n const promises = [\n ctx.transform('decryptPropDisplayName', key, event)\n ];\n\n if (event.location && event.location.split('.').length === 5) {\n promises.push(ctx.transform('decryptPropLocation', key, event));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a file and it's transcodedContents if they exist\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} file A file object with file props an optional transcodedCollection to decrypt\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptFile(ctx, key, file) {\n // using object encryption keyUrl for images instead of activity encryptionKeyUrl\n if (file.encryptionKeyUrl && file.encryptionKeyUrl !== key) {\n key = file.encryptionKeyUrl;\n }\n\n return Promise.all([\n file.transcodedCollection && Promise.all(file.transcodedCollection.items.map((item) => ctx.transform('decryptObject', key, item))),\n ctx.transform('decryptPropScr', key, file),\n ctx.transform('decryptPropDisplayName', key, file),\n ctx.transform('decryptPropContent', key, file),\n file.image && ctx.transform('decryptPropScr', key, file.image)\n ]);\n },\n\n /**\n * Decrypts a file and it's transcodedContents if they exist\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} link A link object with a URL to decrypt\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptLink(ctx, key, link) {\n return Promise.all([\n ctx.transform('decryptPropSslr', key, link),\n ctx.transform('decryptPropDisplayName', key, link)\n ]);\n },\n\n /**\n * Decrypts transcoded file content. Calls decryptFile\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} transcodedContent Transcoded content with a files prop\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptTranscodedContent(ctx, key, transcodedContent) {\n return Promise.all(transcodedContent.files.items.map((item) => ctx.transform('decryptFile', key, item)));\n },\n\n /**\n * Decrypts an image uri\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {String} imageURI URI of the image to decrypt\n * @returns {Promise} Returns a promise.\n */\n decryptImageURI(ctx, key, imageURI) {\n return ctx.transform('decryptPropLocation', key, imageURI);\n },\n\n /**\n * The heart of most decryption logic ends here. Decrypting text.\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} name Property of an object to be decrypted\n * @param {String} key KMS key\n * @param {Object} object A generic object with text props to be decrypted\n * @returns {Promise} Returns a lonely Promise\n */\n decryptTextProp(ctx, name, key, object) {\n if (!object[name]) {\n return Promise.resolve();\n }\n const {decryptionFailureMessage} = ctx.webex.internal.conversation.config;\n\n return ctx.webex.internal.encryption.decryptText(key, object[name])\n .then((plaintext) => {\n if (ctx.webex.config.conversation.keepEncryptedProperties) {\n const encryptedPropName = camelCase(`encrypted_${name}`);\n\n object[encryptedPropName] = object[name]; // eslint-disable-line no-param-reassign\n }\n\n object[name] = plaintext; // eslint-disable-line no-param-reassign\n })\n .catch((reason) => {\n ctx.webex.logger.warn(`plugin-conversation: failed to decrypt ${name} `, reason);\n object[name] = decryptionFailureMessage; // eslint-disable-line no-param-reassign\n\n return Promise.resolve(decryptionFailureMessage);\n });\n },\n\n /**\n* Decrypting an element in an Array.\n* @param {Object} ctx An object containing a webex instance and transform prop\n* @param {Integer} index Property of an object to be decrypted\n* @param {String} key KMS key\n* @param {Array} array An array of Strings to be decrypted\n* @returns {Promise} Returns a lonely Promise\n*/\n decryptPropCardItem(ctx, index, key, array) {\n if (!Number.isInteger(index) || !array || !Array.isArray(array) || index < 0 || index >= array.length || !(array[index] instanceof String || typeof array[index] === 'string')) {\n return Promise.resolve();\n }\n const {decryptionFailureMessage} = ctx.webex.internal.conversation.config;\n\n return ctx.webex.internal.encryption.decryptText(key, array[index])\n .then((plaintext) => {\n array[index] = plaintext; // eslint-disable-line no-param-reassign\n })\n .catch((reason) => {\n ctx.webex.logger.warn(`plugin-conversation: failed to decrypt card at ${index} `, reason);\n array[index] = decryptionFailureMessage; // eslint-disable-line no-param-reassign\n\n return Promise.resolve(decryptionFailureMessage);\n });\n },\n /**\n * Decrypts the src of an object (for images?)\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} object An object with a scr property to be decrypted\n * @returns {Promise} Returns a promise\n */\n decryptPropScr(ctx, key, object) {\n return ctx.webex.internal.encryption.decryptScr(key, object.scr)\n .then((scr) => {\n object.scr = scr; // eslint-disable-line no-param-reassign\n });\n },\n\n /**\n * Decrypts the sslr object\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} object An object with a sslr property to be decrypted\n * @returns {Promise} Returns a promise\n */\n decryptPropSslr(ctx, key, object) {\n return ctx.webex.internal.encryption.decryptScr(key, object.sslr)\n .then((sslr) => {\n object.sslr = sslr; // eslint-disable-line no-param-reassign\n });\n },\n\n decryptPropDisplayName: decryptTextProp('displayName'),\n\n decryptPropContent: decryptTextProp('content'),\n\n decryptPropModel: decryptTextProp('model'),\n\n decryptPropLocation: decryptTextProp('location'),\n\n decryptPropTopic: decryptTextProp('topic')\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["decryptTextProp","name","ctx","key","object","transform","transforms","toArray","decryptObject","undefined","resolve","objectType","encryptionKeyUrl","all","files","items","map","item","decryptSubmit","inputs","decryptionFailureMessage","webex","internal","conversation","config","then","JSON","parse","catch","reason","logger","warn","decryptReaction2summary","reactions","reaction","decryptReaction2selfsummary","decryptReaction2","decryptThread","threadObject","promises","childActivities","child","decryptMeetingcontainer","meetingContainerActivity","displayName","usableKey","push","extensions","itemsToDecrypt","filter","data","forEach","itemToDecrypt","decryptConversation","activities","error","url","avatarEncryptionKeyUrl","avatar","previous","previousValue","decryptActivity","activity","keyUrl","children","decryptMicroappinstance","microappInstance","decryptComment","comment","cards","index","decryptContent","content","contentCategory","decryptContentFiles","links","decryptContentLinks","decryptEvent","event","location","split","length","decryptFile","file","transcodedCollection","image","decryptLink","link","decryptTranscodedContent","transcodedContent","decryptImageURI","imageURI","encryption","decryptText","plaintext","keepEncryptedProperties","encryptedPropName","decryptPropCardItem","array","String","decryptPropScr","decryptScr","scr","decryptPropSslr","sslr","decryptPropDisplayName","decryptPropContent","decryptPropModel","decryptPropLocation","decryptPropTopic"],"sources":["decryption-transforms.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {camelCase, capitalize, curry} from 'lodash';\n\nimport toArray from './to-array';\n\nconst decryptTextProp = curry((name, ctx, key, object) => ctx.transform('decryptTextProp', name, key, object));\n\n// eslint-disable-next-line import/prefer-default-export\nexport const transforms = toArray('inbound', {\n\n /**\n * This function is used recursively to decrypt various properties on conversations, activities, etc\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {String} key KMS encryption key url\n * @param {Object} object Generic object that you want to decrypt some property on based on the type\n * @returns {Promise} Returns a transform promise\n */\n decryptObject(ctx, key, object) {\n if (!object) {\n object = key; // eslint-disable-line no-param-reassign\n key = undefined; // eslint-disable-line no-param-reassign\n }\n\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n if (!key && object.encryptionKeyUrl) {\n key = object.encryptionKeyUrl; // eslint-disable-line no-param-reassign\n }\n\n // Transcoded content was not showing up on the activities since the\n // decryptFile was not being called. Calling decryptFile for\n // transcodedContent fixes the issue.\n if (object.objectType === 'transcodedContent') {\n return Promise.all(object.files.items.map((item) => ctx.transform('decryptFile', key, item)));\n }\n\n return ctx.transform(`decrypt${capitalize(object.objectType)}`, key, object);\n },\n\n /**\n * Decrypt an individual submit object from a cardAction activity\n * (object.objectType === 'submit')\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {String} key KMS key\n * @param {Object} object An instance of a Webex submit object\n * these objects are returned when a user clicks on a Action.Submit button in a card\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptSubmit(ctx, key, object) {\n if (!object.inputs) {\n return Promise.resolve();\n }\n const {decryptionFailureMessage} = ctx.webex.internal.conversation.config;\n\n return ctx.transform('decryptPropCardItem', 0, key, [object.inputs])\n .then((inputs) => {\n object.inputs = JSON.parse(inputs[0]); // eslint-disable-line no-param-reassign\n })\n .catch((reason) => {\n ctx.webex.logger.warn(`plugin-conversation: failed to decrypt attachmentAction.inputs: ${reason}`);\n object.inputs = decryptionFailureMessage; // eslint-disable-line no-param-reassign\n\n return Promise.resolve(decryptionFailureMessage);\n });\n },\n\n /**\n * Decrypt an individual reaction2Summary activity (object.objectType === 'reaction2Summary')\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {String} key KMS key\n * @param {Object} object An instance of a Webex reaction2Summary object\n * these objects are returned by various conversation APIs and over mercury\n * represents an aggregated summary of all reactions to a specific activity\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptReaction2summary(ctx, key, object) {\n if (!object.reactions) {\n return Promise.resolve();\n }\n\n return Promise.all(object.reactions.map((reaction) => ctx.transform('decryptPropDisplayName', key, reaction)));\n },\n\n /**\n * Decrypt an individual reaction2SelfSummary activity (object.objectType === 'reaction2SelfSummary')\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {String} key KMS key\n * @param {Object} object An instance of a Webex reaction2SelfSummary object\n * these objects are returned by various conversation APIs and NOT over mercury\n * they are ONLY received by the self user\n * they represent ONLY the self user's reactions and are used for enforcing\n * limit of times they can react to a specific activity\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptReaction2selfsummary(ctx, key, object) {\n if (!object.reactions) {\n return Promise.resolve();\n }\n\n return Promise.all(object.reactions.map((reaction) => ctx.transform('decryptPropDisplayName', key, reaction)));\n },\n\n /**\n * Decrypt an individual reaction2 activity (object.objectType === 'reaction2')\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {String} key KMS key\n * @param {Object} object An instance of a Webex reaction2 object\n * these objects are returned by various conversation APIs and over mercury\n * ONLY self users receive these objects\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptReaction2(ctx, key, object) {\n return ctx.transform('decryptPropDisplayName', key, object);\n },\n\n /**\n * Decrypt an individual threadObject\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {Object} threadObject An instance of a Webex threadObject (the objects returned by the /conversation/api/v1/threads api)\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptThread(ctx, threadObject) {\n let promises = [];\n\n if (threadObject.childActivities && Array.isArray(threadObject.childActivities)) {\n promises = threadObject.childActivities.map((child) => ctx.transform('decryptObject', null, child));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypt an individual meeting container activity\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {object} key KMS encryption key url\n * @param {Object} meetingContainerActivity An instance of a Webex meeting container activity\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptMeetingcontainer(ctx, key, meetingContainerActivity) {\n const promises = [];\n\n if (meetingContainerActivity.displayName) {\n const usableKey = meetingContainerActivity.encryptionKeyUrl || key;\n\n promises.push(ctx.transform('decryptPropDisplayName', usableKey, meetingContainerActivity));\n }\n\n if (meetingContainerActivity.extensions) {\n const itemsToDecrypt = meetingContainerActivity.extensions.items.filter((item) => item.data.objectType === 'recording');\n\n itemsToDecrypt.forEach((itemToDecrypt) => {\n promises.push(ctx.transform('decryptPropTopic', itemToDecrypt.encryptionKeyUrl, itemToDecrypt.data));\n });\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a given conversation and it's activities by building an array of promises that call\n * decryptObject, which may then call other decrypt functions\n *\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {String} key KMS encryption key url (or actual key?)\n * @param {Object} conversation A Webex conversation object\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptConversation(ctx, key, conversation) {\n const promises = [];\n\n if (conversation.activities.items) {\n promises.push(Promise.all(conversation.activities.items.map((item) => ctx.transform('decryptObject', null, item))));\n }\n\n const usableKey = conversation.encryptionKeyUrl || key;\n const {decryptionFailureMessage} = ctx.webex.internal.conversation.config;\n\n if (usableKey) {\n promises.push(ctx.transform('decryptPropDisplayName', usableKey, conversation)\n .catch((error) => {\n ctx.webex.logger.warn('plugin-conversation: failed to decrypt display name of ', conversation.url, error);\n Promise.resolve(decryptionFailureMessage);\n }));\n promises.push(ctx.transform('decryptPropContent', usableKey, conversation));\n }\n if (conversation.avatarEncryptionKeyUrl) {\n promises.push(ctx.transform('decryptObject', conversation.avatarEncryptionKeyUrl, conversation.avatar));\n }\n // TODO (holsted 04/06/19): This was deprecated in favor of .previousValue below. I wanted to remove this entirely\n // but I wasn't sure if some open source use cases may be reading from cached conversations or not so leaving it for now.\n if (conversation.previous) {\n promises.push(ctx.transform('decryptPropDisplayName', usableKey, conversation.previous));\n }\n if (conversation.previousValue) {\n promises.push(ctx.transform('decryptPropDisplayName', usableKey, conversation.previousValue));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypt an individual activity\n * @param {Object} ctx An object containing a webex instance and a transform\n * @param {String} key KMS encryption key url (or actual key?)\n * @param {Object} activity An instance of a Webex activity\n * @returns {Promise} Returns a ctx.transform promise\n */\n decryptActivity(ctx, key, activity) {\n if (!activity.encryptionKeyUrl && !(activity.object && activity.object.encryptionKeyUrl)) {\n return Promise.resolve(activity);\n }\n\n const keyUrl = activity.encryptionKeyUrl || activity.object.encryptionKeyUrl || key;\n\n let promises = [];\n\n // iterate and recursively decrypt over children objects\n\n if (activity.children && Array.isArray(activity.children)) {\n promises = activity.children.map((child) => ctx.transform('decryptObject', keyUrl, child.activity));\n }\n\n promises.push(ctx.transform('decryptObject', keyUrl, activity.object));\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a microappInstance (recording) model\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} microappInstance A microappInstance which includes several properties of a recording\n * @param {String} microappInstance.model An encrypted string which decrypts to an object\n * @returns {Promise} Returns a context transform\n */\n decryptMicroappinstance(ctx, key, microappInstance) {\n return ctx.transform('decryptPropModel', key, microappInstance);\n },\n\n /**\n* Decrypts a comment...\n* @param {Object} ctx An object containing a webex instance and transform prop\n* @param {String} key KMS key\n* @param {Object} comment A comment object with a displayName and content (encrypted)\n* @returns {Promise} Returns the results of Promise.all on two transforms\n*/\n decryptComment(ctx, key, comment) {\n const promises = [\n ctx.transform('decryptPropDisplayName', key, comment),\n ctx.transform('decryptPropContent', key, comment)\n ];\n\n if (comment.cards && Array.isArray(comment.cards)) {\n comment.cards.map((item, index) => promises.push(ctx.transform('decryptPropCardItem', index, key, comment.cards)));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a content field\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} content An object with properties to be decrypted\n * @returns {Promise} A promise that will return when the decryption has finished\n */\n decryptContent(ctx, key, content) {\n if (content.contentCategory === 'links') {\n return ctx.transform('decryptContentLinks', key, content);\n }\n\n return ctx.transform('decryptContentFiles', key, content);\n },\n\n /**\n * Decrypts a content field which contains files and possibly links\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} content An object with properties to be decrypted\n * @param {Array} content.files An array of files to decrypt by calling decryptObject\n * @param {Array} content.links An array of links to decrypt by calling decryptObject\n * @returns {Promise} A promise that will return when the decryption has finished\n */\n decryptContentFiles(ctx, key, content) {\n if (!content.files || !content.files.items || !Array.isArray(content.files.items)) {\n return Promise.resolve();\n }\n\n const promises = content.files.items.map((item) => ctx.transform('decryptObject', key, item));\n\n promises.push(ctx.transform('decryptComment', key, content));\n\n if (content.links && content.links.items && Array.isArray(content.links.items)) {\n content.links.items.forEach((item) => promises.push(ctx.transform('decryptObject', key, item)));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a content field which contains links\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} content An object with properties to be decrypted\n * @param {Array} content.links An array of links to decrypt by calling decryptObject\n * @returns {Promise} A promise that will return when the decryption has finished\n */\n decryptContentLinks(ctx, key, content) {\n if (!content.links || !content.links.items || !Array.isArray(content.links.items)) {\n return Promise.resolve();\n }\n\n const promises = content.links.items.map((item) => ctx.transform('decryptObject', key, item));\n\n promises.push(ctx.transform('decryptComment', key, content));\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts what may be a meeting event?\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} event An object with a display name and location to be decrypted\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptEvent(ctx, key, event) {\n const promises = [\n ctx.transform('decryptPropDisplayName', key, event)\n ];\n\n if (event.location && event.location.split('.').length === 5) {\n promises.push(ctx.transform('decryptPropLocation', key, event));\n }\n\n return Promise.all(promises);\n },\n\n /**\n * Decrypts a file and it's transcodedContents if they exist\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} file A file object with file props an optional transcodedCollection to decrypt\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptFile(ctx, key, file) {\n // using object encryption keyUrl for images instead of activity encryptionKeyUrl\n if (file.encryptionKeyUrl && file.encryptionKeyUrl !== key) {\n key = file.encryptionKeyUrl;\n }\n\n return Promise.all([\n file.transcodedCollection && Promise.all(file.transcodedCollection.items.map((item) => ctx.transform('decryptObject', key, item))),\n ctx.transform('decryptPropScr', key, file),\n ctx.transform('decryptPropDisplayName', key, file),\n ctx.transform('decryptPropContent', key, file),\n file.image && ctx.transform('decryptPropScr', key, file.image)\n ]);\n },\n\n /**\n * Decrypts a file and it's transcodedContents if they exist\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} link A link object with a URL to decrypt\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptLink(ctx, key, link) {\n return Promise.all([\n ctx.transform('decryptPropSslr', key, link),\n ctx.transform('decryptPropDisplayName', key, link)\n ]);\n },\n\n /**\n * Decrypts transcoded file content. Calls decryptFile\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} transcodedContent Transcoded content with a files prop\n * @returns {Promise} Returns the result of Promise.all\n */\n decryptTranscodedContent(ctx, key, transcodedContent) {\n return Promise.all(transcodedContent.files.items.map((item) => ctx.transform('decryptFile', key, item)));\n },\n\n /**\n * Decrypts an image uri\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {String} imageURI URI of the image to decrypt\n * @returns {Promise} Returns a promise.\n */\n decryptImageURI(ctx, key, imageURI) {\n return ctx.transform('decryptPropLocation', key, imageURI);\n },\n\n /**\n * The heart of most decryption logic ends here. Decrypting text.\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} name Property of an object to be decrypted\n * @param {String} key KMS key\n * @param {Object} object A generic object with text props to be decrypted\n * @returns {Promise} Returns a lonely Promise\n */\n decryptTextProp(ctx, name, key, object) {\n if (!object[name]) {\n return Promise.resolve();\n }\n const {decryptionFailureMessage} = ctx.webex.internal.conversation.config;\n\n return ctx.webex.internal.encryption.decryptText(key, object[name])\n .then((plaintext) => {\n if (ctx.webex.config.conversation.keepEncryptedProperties) {\n const encryptedPropName = camelCase(`encrypted_${name}`);\n\n object[encryptedPropName] = object[name]; // eslint-disable-line no-param-reassign\n }\n\n object[name] = plaintext; // eslint-disable-line no-param-reassign\n })\n .catch((reason) => {\n ctx.webex.logger.warn(`plugin-conversation: failed to decrypt ${name} `, reason);\n object[name] = decryptionFailureMessage; // eslint-disable-line no-param-reassign\n\n return Promise.resolve(decryptionFailureMessage);\n });\n },\n\n /**\n* Decrypting an element in an Array.\n* @param {Object} ctx An object containing a webex instance and transform prop\n* @param {Integer} index Property of an object to be decrypted\n* @param {String} key KMS key\n* @param {Array} array An array of Strings to be decrypted\n* @returns {Promise} Returns a lonely Promise\n*/\n decryptPropCardItem(ctx, index, key, array) {\n if (!Number.isInteger(index) || !array || !Array.isArray(array) || index < 0 || index >= array.length || !(array[index] instanceof String || typeof array[index] === 'string')) {\n return Promise.resolve();\n }\n const {decryptionFailureMessage} = ctx.webex.internal.conversation.config;\n\n return ctx.webex.internal.encryption.decryptText(key, array[index])\n .then((plaintext) => {\n array[index] = plaintext; // eslint-disable-line no-param-reassign\n })\n .catch((reason) => {\n ctx.webex.logger.warn(`plugin-conversation: failed to decrypt card at ${index} `, reason);\n array[index] = decryptionFailureMessage; // eslint-disable-line no-param-reassign\n\n return Promise.resolve(decryptionFailureMessage);\n });\n },\n /**\n * Decrypts the src of an object (for images?)\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} object An object with a scr property to be decrypted\n * @returns {Promise} Returns a promise\n */\n decryptPropScr(ctx, key, object) {\n return ctx.webex.internal.encryption.decryptScr(key, object.scr)\n .then((scr) => {\n object.scr = scr; // eslint-disable-line no-param-reassign\n });\n },\n\n /**\n * Decrypts the sslr object\n * @param {Object} ctx An object containing a webex instance and transform prop\n * @param {String} key KMS key\n * @param {Object} object An object with a sslr property to be decrypted\n * @returns {Promise} Returns a promise\n */\n decryptPropSslr(ctx, key, object) {\n return ctx.webex.internal.encryption.decryptScr(key, object.sslr)\n .then((sslr) => {\n object.sslr = sslr; // eslint-disable-line no-param-reassign\n });\n },\n\n decryptPropDisplayName: decryptTextProp('displayName'),\n\n decryptPropContent: decryptTextProp('content'),\n\n decryptPropModel: decryptTextProp('model'),\n\n decryptPropLocation: decryptTextProp('location'),\n\n decryptPropTopic: decryptTextProp('topic')\n});\n"],"mappings":"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"}
@@ -357,7 +357,7 @@ var ShareActivity = _webexCore.WebexPlugin.extend({
357
357
  */
358
358
  prepare: function prepare() {
359
359
  if (!this.uploads.size) {
360
- throw new Error('Cannot submit a share activity without atleast one file');
360
+ throw new Error('Cannot submit a share activity without at least one file');
361
361
  }
362
362
 
363
363
  var activity = {
@@ -453,7 +453,7 @@ var ShareActivity = _webexCore.WebexPlugin.extend({
453
453
  return res.body.spaceUrl;
454
454
  });
455
455
  },
456
- version: "2.29.2"
456
+ version: "2.29.5"
457
457
  });
458
458
  /**
459
459
  * Instantiates a ShareActivity
@@ -1 +1 @@
1
- {"version":3,"names":["EMITTER_SYMBOL","FILE_SYMBOL","PROMISE_SYMBOL","ShareActivity","WebexPlugin","extend","getSymbols","file","emitter","namespace","derived","target","deps","fn","conversation","session","claimedFileType","required","type","content","clientTempId","displayName","enableThumbnails","default","hiddenSpaceUrl","mentions","spaceUrl","uploads","initialize","attrs","options","prototype","resolve","_spaceUrl","_retrieveSpaceUrl","url","then","_hiddenSpaceUrl","addGif","gif","gifToAdd","get","name","fileSize","size","byteLength","length","mimeType","objectType","height","width","image","set","SCR","create","scr","loc","thumbnailScr","add","substring","lastIndexOf","upload","EventEmitter","promise","detectFileType","logger","processImage","thumbnailMaxWidth","config","thumbnailMaxHeight","imageData","main","webex","internal","encryption","encryptBinary","cdata","all","uploadPromise","_upload","transferEvents","metadata","downloadUrl","thumb","thumbnail","fileDimensions","thumbnailDimensions","proxyEvents","getFiles","files","key","push","uri","uploadOptions","fileHash","sha256","toString","role","initializeBody","qs","transcode","phases","body","$url","uploadUrl","finalize","$uri","finishUploadUrl","remove","delete","prepare","Error","activity","verb","object","undefined","items","promises","forEach","item","contentCategory","_determineContentCategory","_itemContainsActionWithMimeType","map","actions","mimeTypes","split","shift","request","method","res","share","parent"],"sources":["share-activity.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\nimport SCR from 'node-scr';\nimport {proxyEvents, transferEvents} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\nimport {filter, map, pick, some} from 'lodash';\nimport {detectFileType, processImage} from '@webex/helper-image';\nimport sha256 from 'crypto-js/sha256';\n\nexport const EMITTER_SYMBOL = Symbol('EMITTER_SYMBOL');\nexport const FILE_SYMBOL = Symbol('FILE_SYMBOL');\nconst PROMISE_SYMBOL = Symbol('PROMISE_SYMBOL');\n\n/**\n * @class\n */\nconst ShareActivity = WebexPlugin.extend({\n getSymbols() {\n return {\n file: FILE_SYMBOL,\n emitter: EMITTER_SYMBOL\n };\n },\n\n namespace: 'Conversation',\n\n derived: {\n target: {\n deps: ['conversation'],\n fn() {\n return this.conversation;\n }\n }\n },\n\n session: {\n claimedFileType: 'string',\n conversation: {\n required: true,\n type: 'object'\n },\n\n content: 'string',\n\n clientTempId: 'string',\n\n displayName: 'string',\n\n enableThumbnails: {\n default: true,\n type: 'boolean'\n },\n\n hiddenSpaceUrl: 'object',\n\n mentions: 'object',\n\n spaceUrl: 'object',\n\n uploads: {\n type: 'object',\n default() {\n return new Map();\n }\n }\n },\n\n initialize(attrs, options) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, [attrs, options]);\n\n if (attrs && attrs.conversation) {\n this.spaceUrl = Promise.resolve(attrs.conversation._spaceUrl || this._retrieveSpaceUrl(`${attrs.conversation.url}/space`)\n .then((url) => {\n attrs.conversation._spaceUrl = url;\n\n return url;\n }));\n this.hiddenSpaceUrl = Promise.resolve(attrs.conversation._hiddenSpaceUrl || this._retrieveSpaceUrl(`${attrs.conversation.url}/space/hidden`)\n .then((url) => {\n attrs.conversation._hiddenSpaceUrl = url;\n\n return url;\n }));\n }\n },\n\n /**\n * Adds an additional GIF to the share activity\n * Different from regular add to skip uploading to webex files service\n * @param {File} gif\n * @param {File} gif.image // thumbnail\n * @param {Object} options\n * @param {Object} options.actions\n * @returns {Promise}\n */\n addGif(gif, options) {\n let gifToAdd = this.uploads.get(gif);\n\n // If the gif already exists, then don't do anything\n if (gifToAdd) {\n return Promise.resolve();\n }\n\n gifToAdd = Object.assign({\n displayName: gif.name,\n fileSize: gif.size || gif.byteLength || gif.length,\n mimeType: gif.type,\n url: 'https://giphy.com',\n objectType: 'file',\n height: gif.height,\n width: gif.width,\n image: {\n height: gif.image.height,\n width: gif.image.width,\n url: 'https://giphy.com'\n },\n [FILE_SYMBOL]: gif\n }, pick(options, 'actions'));\n\n this.uploads.set(gif, gifToAdd);\n\n /* Instead of encryptBinary, which produces a encrypted version of\n * the file for upload and a SCR (contains info needed to encrypt the\n * SCR itself and the displayName), we directly create an SCR.\n * Because we are skipping uploading, the encrypted file is not needed.\n */\n return SCR.create()\n .then((scr) => {\n scr.loc = gif.url;\n gifToAdd.scr = scr;\n\n return SCR.create();\n })\n .then((thumbnailScr) => {\n thumbnailScr.loc = gif.image.url;\n gifToAdd.image.scr = thumbnailScr;\n });\n },\n\n /**\n * Adds an additional file to the share and begins submitting it to webex\n * files\n * @param {File} file\n * @param {Object} options\n * @param {Object} options.actions\n * @returns {EventEmittingPromise}\n */\n add(file, options) {\n options = options || {};\n options.claimedFileType = file.displayName.substring(file.displayName.lastIndexOf('.'));\n let upload = this.uploads.get(file);\n\n if (upload) {\n return upload[PROMISE_SYMBOL];\n }\n const emitter = new EventEmitter();\n\n upload = Object.assign({\n displayName: file.name,\n fileSize: file.size || file.byteLength || file.length,\n mimeType: file.type,\n objectType: 'file',\n [EMITTER_SYMBOL]: emitter,\n [FILE_SYMBOL]: file\n }, pick(options, 'actions'));\n\n this.uploads.set(file, upload);\n const promise = detectFileType(file, this.logger)\n .then((type) => {\n upload.mimeType = type;\n\n return processImage({\n file,\n type,\n thumbnailMaxWidth: this.config.thumbnailMaxWidth,\n thumbnailMaxHeight: this.config.thumbnailMaxHeight,\n enableThumbnails: this.enableThumbnails,\n logger: this.logger\n });\n })\n .then((imageData) => {\n const main = this.webex.internal.encryption.encryptBinary(file)\n .then(({scr, cdata}) => {\n upload.scr = scr;\n\n return Promise.all([cdata, this.spaceUrl]);\n })\n .then(([cdata, spaceUrl]) => {\n const uploadPromise = this._upload(cdata, `${spaceUrl}/upload_sessions`, options);\n\n transferEvents('progress', uploadPromise, emitter);\n\n return uploadPromise;\n })\n .then((metadata) => {\n upload.url = upload.scr.loc = metadata.downloadUrl;\n });\n\n\n let thumb;\n\n if (imageData) {\n const [thumbnail, fileDimensions, thumbnailDimensions] = imageData;\n\n Object.assign(upload, fileDimensions);\n\n if (thumbnail && thumbnailDimensions) {\n upload.image = thumbnailDimensions;\n thumb = this.webex.internal.encryption.encryptBinary(thumbnail)\n .then(({scr, cdata}) => {\n upload.image.scr = scr;\n\n return Promise.all([cdata, this.hiddenSpaceUrl]);\n })\n .then(([cdata, spaceUrl]) => this._upload(cdata, `${spaceUrl}/upload_sessions`))\n .then((metadata) => {\n upload.image.url = upload.image.scr.loc = metadata.downloadUrl;\n });\n }\n }\n\n return Promise.all([main, thumb]);\n });\n\n\n upload[PROMISE_SYMBOL] = promise;\n\n proxyEvents(emitter, promise);\n\n return promise;\n },\n\n /**\n * Fetches the files from the share\n * @returns {Array}\n */\n getFiles() {\n const files = [];\n\n for (const [key] of this.uploads) {\n files.push(this.uploads.get(key)[FILE_SYMBOL]);\n }\n\n return files;\n },\n\n\n /**\n * @param {File} file\n * @param {string} uri\n * @param {Object} uploadOptions - Optional object adding additional params to request body\n * @private\n * @returns {Promise}\n */\n _upload(file, uri, uploadOptions) {\n const fileSize = file.length || file.size || file.byteLength;\n const fileHash = sha256(file).toString();\n const {role, claimedFileType} = uploadOptions ?? {};\n const initializeBody = Object.assign({fileSize}, {claimedFileType}, role && {role});\n\n return this.webex.upload({\n uri,\n file,\n qs: {\n transcode: true\n },\n phases: {\n initialize: {\n body: initializeBody\n },\n upload: {\n $url(session) {\n return session.uploadUrl;\n }\n },\n finalize: {\n $uri(session) {\n return session.finishUploadUrl;\n },\n body: {fileSize, fileHash}\n }\n }\n });\n },\n\n /**\n * Removes the specified file from the share (Does not currently delete the\n * uploaded file)\n * @param {File} file\n * @returns {Promise}\n */\n remove(file) {\n this.uploads.delete(file);\n\n // Returns a promise for future-proofiness.\n return Promise.resolve();\n },\n\n /**\n * @private\n * @returns {Promise<Object>}\n */\n prepare() {\n if (!this.uploads.size) {\n throw new Error('Cannot submit a share activity without atleast one file');\n }\n\n const activity = {\n verb: 'share',\n object: {\n objectType: 'content',\n displayName: this.object && this.object.displayName ? this.object.displayName : undefined,\n content: this.object && this.object.content ? this.object.content : undefined,\n mentions: this.object && this.object.mentions ? this.object.mentions : undefined,\n files: {\n items: []\n }\n },\n clientTempId: this.clientTempId\n };\n\n const promises = [];\n\n this.uploads.forEach((item) => {\n activity.object.files.items.push(item);\n promises.push(item[PROMISE_SYMBOL]);\n });\n\n activity.object.contentCategory = this._determineContentCategory(activity.object.files.items);\n\n return Promise.all(promises)\n .then(() => activity);\n },\n\n /**\n * @param {Array} items\n * @param {string} mimeType\n * @private\n * @returns {boolean}\n */\n _itemContainsActionWithMimeType(items, mimeType) {\n return some(items.map((item) => some(item.actions, {mimeType})));\n },\n\n /**\n * @param {Array} items\n * @private\n * @returns {string}\n */\n _determineContentCategory(items) {\n // determine if the items contain an image\n if (this._itemContainsActionWithMimeType(items, 'application/x-cisco-webex-whiteboard')) {\n return 'documents';\n }\n\n const mimeTypes = filter(map(items, 'mimeType'));\n\n if (mimeTypes.length !== items.length) {\n return 'documents';\n }\n\n const contentCategory = mimeTypes[0].split('/').shift();\n\n if (contentCategory !== 'video' && contentCategory !== 'image') {\n return 'documents';\n }\n\n for (const mimeType of mimeTypes) {\n if (mimeType.split('/').shift() !== contentCategory) {\n return 'documents';\n }\n }\n\n return `${contentCategory}s`;\n },\n\n /**\n * @param {string} uri\n * @returns {Promise}\n */\n _retrieveSpaceUrl(uri) {\n return this.webex.request({\n method: 'PUT',\n uri\n })\n .then((res) => res.body.spaceUrl);\n }\n});\n\n/**\n * Instantiates a ShareActivity\n * @param {Object} conversation\n * @param {ShareActivity|Object|array} object\n * @param {ProxyWebex} webex\n * @returns {ShareActivity}\n */\nShareActivity.create = function create(conversation, object, webex) {\n if (object instanceof ShareActivity) {\n return object;\n }\n\n let files;\n\n if (object?.object?.files) {\n files = object.object.files;\n Reflect.deleteProperty(object.object, 'files');\n }\n\n const share = new ShareActivity(Object.assign({\n conversation\n }, object), {\n parent: webex\n });\n\n files = files?.items ?? files;\n if (files) {\n files.forEach((file) => share.add(file));\n }\n\n return share;\n};\n\nexport default ShareActivity;\n"],"mappings":"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"}
1
+ {"version":3,"names":["EMITTER_SYMBOL","FILE_SYMBOL","PROMISE_SYMBOL","ShareActivity","WebexPlugin","extend","getSymbols","file","emitter","namespace","derived","target","deps","fn","conversation","session","claimedFileType","required","type","content","clientTempId","displayName","enableThumbnails","default","hiddenSpaceUrl","mentions","spaceUrl","uploads","initialize","attrs","options","prototype","resolve","_spaceUrl","_retrieveSpaceUrl","url","then","_hiddenSpaceUrl","addGif","gif","gifToAdd","get","name","fileSize","size","byteLength","length","mimeType","objectType","height","width","image","set","SCR","create","scr","loc","thumbnailScr","add","substring","lastIndexOf","upload","EventEmitter","promise","detectFileType","logger","processImage","thumbnailMaxWidth","config","thumbnailMaxHeight","imageData","main","webex","internal","encryption","encryptBinary","cdata","all","uploadPromise","_upload","transferEvents","metadata","downloadUrl","thumb","thumbnail","fileDimensions","thumbnailDimensions","proxyEvents","getFiles","files","key","push","uri","uploadOptions","fileHash","sha256","toString","role","initializeBody","qs","transcode","phases","body","$url","uploadUrl","finalize","$uri","finishUploadUrl","remove","delete","prepare","Error","activity","verb","object","undefined","items","promises","forEach","item","contentCategory","_determineContentCategory","_itemContainsActionWithMimeType","map","actions","mimeTypes","split","shift","request","method","res","share","parent"],"sources":["share-activity.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\nimport SCR from 'node-scr';\nimport {proxyEvents, transferEvents} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\nimport {filter, map, pick, some} from 'lodash';\nimport {detectFileType, processImage} from '@webex/helper-image';\nimport sha256 from 'crypto-js/sha256';\n\nexport const EMITTER_SYMBOL = Symbol('EMITTER_SYMBOL');\nexport const FILE_SYMBOL = Symbol('FILE_SYMBOL');\nconst PROMISE_SYMBOL = Symbol('PROMISE_SYMBOL');\n\n/**\n * @class\n */\nconst ShareActivity = WebexPlugin.extend({\n getSymbols() {\n return {\n file: FILE_SYMBOL,\n emitter: EMITTER_SYMBOL\n };\n },\n\n namespace: 'Conversation',\n\n derived: {\n target: {\n deps: ['conversation'],\n fn() {\n return this.conversation;\n }\n }\n },\n\n session: {\n claimedFileType: 'string',\n conversation: {\n required: true,\n type: 'object'\n },\n\n content: 'string',\n\n clientTempId: 'string',\n\n displayName: 'string',\n\n enableThumbnails: {\n default: true,\n type: 'boolean'\n },\n\n hiddenSpaceUrl: 'object',\n\n mentions: 'object',\n\n spaceUrl: 'object',\n\n uploads: {\n type: 'object',\n default() {\n return new Map();\n }\n }\n },\n\n initialize(attrs, options) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, [attrs, options]);\n\n if (attrs && attrs.conversation) {\n this.spaceUrl = Promise.resolve(attrs.conversation._spaceUrl || this._retrieveSpaceUrl(`${attrs.conversation.url}/space`)\n .then((url) => {\n attrs.conversation._spaceUrl = url;\n\n return url;\n }));\n this.hiddenSpaceUrl = Promise.resolve(attrs.conversation._hiddenSpaceUrl || this._retrieveSpaceUrl(`${attrs.conversation.url}/space/hidden`)\n .then((url) => {\n attrs.conversation._hiddenSpaceUrl = url;\n\n return url;\n }));\n }\n },\n\n /**\n * Adds an additional GIF to the share activity\n * Different from regular add to skip uploading to webex files service\n * @param {File} gif\n * @param {File} gif.image // thumbnail\n * @param {Object} options\n * @param {Object} options.actions\n * @returns {Promise}\n */\n addGif(gif, options) {\n let gifToAdd = this.uploads.get(gif);\n\n // If the gif already exists, then don't do anything\n if (gifToAdd) {\n return Promise.resolve();\n }\n\n gifToAdd = Object.assign({\n displayName: gif.name,\n fileSize: gif.size || gif.byteLength || gif.length,\n mimeType: gif.type,\n url: 'https://giphy.com',\n objectType: 'file',\n height: gif.height,\n width: gif.width,\n image: {\n height: gif.image.height,\n width: gif.image.width,\n url: 'https://giphy.com'\n },\n [FILE_SYMBOL]: gif\n }, pick(options, 'actions'));\n\n this.uploads.set(gif, gifToAdd);\n\n /* Instead of encryptBinary, which produces a encrypted version of\n * the file for upload and a SCR (contains info needed to encrypt the\n * SCR itself and the displayName), we directly create an SCR.\n * Because we are skipping uploading, the encrypted file is not needed.\n */\n return SCR.create()\n .then((scr) => {\n scr.loc = gif.url;\n gifToAdd.scr = scr;\n\n return SCR.create();\n })\n .then((thumbnailScr) => {\n thumbnailScr.loc = gif.image.url;\n gifToAdd.image.scr = thumbnailScr;\n });\n },\n\n /**\n * Adds an additional file to the share and begins submitting it to webex\n * files\n * @param {File} file\n * @param {Object} options\n * @param {Object} options.actions\n * @returns {EventEmittingPromise}\n */\n add(file, options) {\n options = options || {};\n options.claimedFileType = file.displayName.substring(file.displayName.lastIndexOf('.'));\n let upload = this.uploads.get(file);\n\n if (upload) {\n return upload[PROMISE_SYMBOL];\n }\n const emitter = new EventEmitter();\n\n upload = Object.assign({\n displayName: file.name,\n fileSize: file.size || file.byteLength || file.length,\n mimeType: file.type,\n objectType: 'file',\n [EMITTER_SYMBOL]: emitter,\n [FILE_SYMBOL]: file\n }, pick(options, 'actions'));\n\n this.uploads.set(file, upload);\n const promise = detectFileType(file, this.logger)\n .then((type) => {\n upload.mimeType = type;\n\n return processImage({\n file,\n type,\n thumbnailMaxWidth: this.config.thumbnailMaxWidth,\n thumbnailMaxHeight: this.config.thumbnailMaxHeight,\n enableThumbnails: this.enableThumbnails,\n logger: this.logger\n });\n })\n .then((imageData) => {\n const main = this.webex.internal.encryption.encryptBinary(file)\n .then(({scr, cdata}) => {\n upload.scr = scr;\n\n return Promise.all([cdata, this.spaceUrl]);\n })\n .then(([cdata, spaceUrl]) => {\n const uploadPromise = this._upload(cdata, `${spaceUrl}/upload_sessions`, options);\n\n transferEvents('progress', uploadPromise, emitter);\n\n return uploadPromise;\n })\n .then((metadata) => {\n upload.url = upload.scr.loc = metadata.downloadUrl;\n });\n\n\n let thumb;\n\n if (imageData) {\n const [thumbnail, fileDimensions, thumbnailDimensions] = imageData;\n\n Object.assign(upload, fileDimensions);\n\n if (thumbnail && thumbnailDimensions) {\n upload.image = thumbnailDimensions;\n thumb = this.webex.internal.encryption.encryptBinary(thumbnail)\n .then(({scr, cdata}) => {\n upload.image.scr = scr;\n\n return Promise.all([cdata, this.hiddenSpaceUrl]);\n })\n .then(([cdata, spaceUrl]) => this._upload(cdata, `${spaceUrl}/upload_sessions`))\n .then((metadata) => {\n upload.image.url = upload.image.scr.loc = metadata.downloadUrl;\n });\n }\n }\n\n return Promise.all([main, thumb]);\n });\n\n\n upload[PROMISE_SYMBOL] = promise;\n\n proxyEvents(emitter, promise);\n\n return promise;\n },\n\n /**\n * Fetches the files from the share\n * @returns {Array}\n */\n getFiles() {\n const files = [];\n\n for (const [key] of this.uploads) {\n files.push(this.uploads.get(key)[FILE_SYMBOL]);\n }\n\n return files;\n },\n\n\n /**\n * @param {File} file\n * @param {string} uri\n * @param {Object} uploadOptions - Optional object adding additional params to request body\n * @private\n * @returns {Promise}\n */\n _upload(file, uri, uploadOptions) {\n const fileSize = file.length || file.size || file.byteLength;\n const fileHash = sha256(file).toString();\n const {role, claimedFileType} = uploadOptions ?? {};\n const initializeBody = Object.assign({fileSize}, {claimedFileType}, role && {role});\n\n return this.webex.upload({\n uri,\n file,\n qs: {\n transcode: true\n },\n phases: {\n initialize: {\n body: initializeBody\n },\n upload: {\n $url(session) {\n return session.uploadUrl;\n }\n },\n finalize: {\n $uri(session) {\n return session.finishUploadUrl;\n },\n body: {fileSize, fileHash}\n }\n }\n });\n },\n\n /**\n * Removes the specified file from the share (Does not currently delete the\n * uploaded file)\n * @param {File} file\n * @returns {Promise}\n */\n remove(file) {\n this.uploads.delete(file);\n\n // Returns a promise for future-proofiness.\n return Promise.resolve();\n },\n\n /**\n * @private\n * @returns {Promise<Object>}\n */\n prepare() {\n if (!this.uploads.size) {\n throw new Error('Cannot submit a share activity without at least one file');\n }\n\n const activity = {\n verb: 'share',\n object: {\n objectType: 'content',\n displayName: this.object && this.object.displayName ? this.object.displayName : undefined,\n content: this.object && this.object.content ? this.object.content : undefined,\n mentions: this.object && this.object.mentions ? this.object.mentions : undefined,\n files: {\n items: []\n }\n },\n clientTempId: this.clientTempId\n };\n\n const promises = [];\n\n this.uploads.forEach((item) => {\n activity.object.files.items.push(item);\n promises.push(item[PROMISE_SYMBOL]);\n });\n\n activity.object.contentCategory = this._determineContentCategory(activity.object.files.items);\n\n return Promise.all(promises)\n .then(() => activity);\n },\n\n /**\n * @param {Array} items\n * @param {string} mimeType\n * @private\n * @returns {boolean}\n */\n _itemContainsActionWithMimeType(items, mimeType) {\n return some(items.map((item) => some(item.actions, {mimeType})));\n },\n\n /**\n * @param {Array} items\n * @private\n * @returns {string}\n */\n _determineContentCategory(items) {\n // determine if the items contain an image\n if (this._itemContainsActionWithMimeType(items, 'application/x-cisco-webex-whiteboard')) {\n return 'documents';\n }\n\n const mimeTypes = filter(map(items, 'mimeType'));\n\n if (mimeTypes.length !== items.length) {\n return 'documents';\n }\n\n const contentCategory = mimeTypes[0].split('/').shift();\n\n if (contentCategory !== 'video' && contentCategory !== 'image') {\n return 'documents';\n }\n\n for (const mimeType of mimeTypes) {\n if (mimeType.split('/').shift() !== contentCategory) {\n return 'documents';\n }\n }\n\n return `${contentCategory}s`;\n },\n\n /**\n * @param {string} uri\n * @returns {Promise}\n */\n _retrieveSpaceUrl(uri) {\n return this.webex.request({\n method: 'PUT',\n uri\n })\n .then((res) => res.body.spaceUrl);\n }\n});\n\n/**\n * Instantiates a ShareActivity\n * @param {Object} conversation\n * @param {ShareActivity|Object|array} object\n * @param {ProxyWebex} webex\n * @returns {ShareActivity}\n */\nShareActivity.create = function create(conversation, object, webex) {\n if (object instanceof ShareActivity) {\n return object;\n }\n\n let files;\n\n if (object?.object?.files) {\n files = object.object.files;\n Reflect.deleteProperty(object.object, 'files');\n }\n\n const share = new ShareActivity(Object.assign({\n conversation\n }, object), {\n parent: webex\n });\n\n files = files?.items ?? files;\n if (files) {\n files.forEach((file) => share.add(file));\n }\n\n return share;\n};\n\nexport default ShareActivity;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,32 +1,41 @@
1
1
  {
2
- "name": "@webex/internal-plugin-conversation",
3
- "version": "2.29.2",
4
- "description": "",
5
- "license": "MIT",
6
- "author": "Ian W. Remmel <iremmel@cisco.com>",
7
- "main": "dist/index.js",
8
- "devMain": "src/index.js",
9
- "repository": "https://github.com/webex/webex-js-sdk/tree/master/packages/node_modules/@webex/internal-plugin-conversation",
10
- "engines": {
11
- "node": ">=8"
12
- },
13
- "browserify": {
14
- "transform": [
15
- "envify"
16
- ]
17
- },
18
- "dependencies": {
19
- "@babel/runtime-corejs2": "^7.14.8",
20
- "lodash": "^4.17.21",
21
- "@webex/internal-plugin-encryption": "2.29.2",
22
- "@webex/internal-plugin-user": "2.29.2",
23
- "@webex/common": "2.29.2",
24
- "@webex/helper-html": "2.29.2",
25
- "@webex/webex-core": "2.29.2",
26
- "crypto-js": "^4.1.1",
27
- "@webex/helper-image": "2.29.2",
28
- "uuid": "^3.3.2",
29
- "node-scr": "^0.3.0",
30
- "envify": "^4.1.0"
31
- }
2
+ "name": "@webex/internal-plugin-conversation",
3
+ "version": "2.29.5",
4
+ "description": "",
5
+ "license": "MIT",
6
+ "main": "dist/index.js",
7
+ "devMain": "src/index.js",
8
+ "repository": "https://github.com/webex/webex-js-sdk/tree/master/packages/@webex/internal-plugin-conversation",
9
+ "engines": {
10
+ "node": ">=14"
11
+ },
12
+ "browserify": {
13
+ "transform": [
14
+ "babelify",
15
+ "envify"
16
+ ]
17
+ },
18
+ "dependencies": {
19
+ "@webex/common": "workspace:^",
20
+ "@webex/helper-html": "workspace:^",
21
+ "@webex/helper-image": "workspace:^",
22
+ "@webex/internal-plugin-conversation": "workspace:^",
23
+ "@webex/internal-plugin-encryption": "workspace:^",
24
+ "@webex/internal-plugin-user": "workspace:^",
25
+ "@webex/webex-core": "workspace:^",
26
+ "crypto-js": "^4.1.1",
27
+ "lodash": "^4.17.21",
28
+ "node-scr": "^0.3.0",
29
+ "uuid": "^3.3.2"
30
+ },
31
+ "devDependencies": {
32
+ "@webex/test-helper-chai": "workspace:^",
33
+ "@webex/test-helper-file": "workspace:^",
34
+ "@webex/test-helper-make-local-url": "workspace:^",
35
+ "@webex/test-helper-mocha": "workspace:^",
36
+ "@webex/test-helper-mock-webex": "workspace:^",
37
+ "@webex/test-helper-retry": "workspace:^",
38
+ "@webex/test-helper-test-users": "workspace:^",
39
+ "sinon": "^9.2.4"
40
+ }
32
41
  }
@@ -440,7 +440,7 @@ const Conversation = WebexPlugin.extend({
440
440
  * Downloads an unencrypted file
441
441
  * @param {string} uri
442
442
  * @param {Object} options
443
- * @param {Ojbect} options.headers
443
+ * @param {Object} options.headers
444
444
  * @returns {Promise<File>}
445
445
  */
446
446
  _downloadUnencryptedFile(uri, options = {}) {
@@ -12,8 +12,8 @@ const decryptTextProp = curry((name, ctx, key, object) => ctx.transform('decrypt
12
12
  export const transforms = toArray('inbound', {
13
13
 
14
14
  /**
15
- * This function is used recursively to decrypt various properties on convesations, activities, etc
16
- * @param {Object} ctx An object containg a webex instance and a transform
15
+ * This function is used recursively to decrypt various properties on conversations, activities, etc
16
+ * @param {Object} ctx An object containing a webex instance and a transform
17
17
  * @param {String} key KMS encryption key url
18
18
  * @param {Object} object Generic object that you want to decrypt some property on based on the type
19
19
  * @returns {Promise} Returns a transform promise
@@ -48,8 +48,8 @@ export const transforms = toArray('inbound', {
48
48
 
49
49
  /**
50
50
  * Decrypt an individual submit object from a cardAction activity
51
- * (object.objectType === 'sumbit')
52
- * @param {Object} ctx An object containg a webex instance and a transform
51
+ * (object.objectType === 'submit')
52
+ * @param {Object} ctx An object containing a webex instance and a transform
53
53
  * @param {String} key KMS key
54
54
  * @param {Object} object An instance of a Webex submit object
55
55
  * these objects are returned when a user clicks on a Action.Submit button in a card
@@ -75,7 +75,7 @@ export const transforms = toArray('inbound', {
75
75
 
76
76
  /**
77
77
  * Decrypt an individual reaction2Summary activity (object.objectType === 'reaction2Summary')
78
- * @param {Object} ctx An object containg a webex instance and a transform
78
+ * @param {Object} ctx An object containing a webex instance and a transform
79
79
  * @param {String} key KMS key
80
80
  * @param {Object} object An instance of a Webex reaction2Summary object
81
81
  * these objects are returned by various conversation APIs and over mercury
@@ -92,7 +92,7 @@ export const transforms = toArray('inbound', {
92
92
 
93
93
  /**
94
94
  * Decrypt an individual reaction2SelfSummary activity (object.objectType === 'reaction2SelfSummary')
95
- * @param {Object} ctx An object containg a webex instance and a transform
95
+ * @param {Object} ctx An object containing a webex instance and a transform
96
96
  * @param {String} key KMS key
97
97
  * @param {Object} object An instance of a Webex reaction2SelfSummary object
98
98
  * these objects are returned by various conversation APIs and NOT over mercury
@@ -111,7 +111,7 @@ export const transforms = toArray('inbound', {
111
111
 
112
112
  /**
113
113
  * Decrypt an individual reaction2 activity (object.objectType === 'reaction2')
114
- * @param {Object} ctx An object containg a webex instance and a transform
114
+ * @param {Object} ctx An object containing a webex instance and a transform
115
115
  * @param {String} key KMS key
116
116
  * @param {Object} object An instance of a Webex reaction2 object
117
117
  * these objects are returned by various conversation APIs and over mercury
@@ -124,7 +124,7 @@ export const transforms = toArray('inbound', {
124
124
 
125
125
  /**
126
126
  * Decrypt an individual threadObject
127
- * @param {Object} ctx An object containg a webex instance and a transform
127
+ * @param {Object} ctx An object containing a webex instance and a transform
128
128
  * @param {Object} threadObject An instance of a Webex threadObject (the objects returned by the /conversation/api/v1/threads api)
129
129
  * @returns {Promise} Returns a ctx.transform promise
130
130
  */
@@ -140,7 +140,7 @@ export const transforms = toArray('inbound', {
140
140
 
141
141
  /**
142
142
  * Decrypt an individual meeting container activity
143
- * @param {Object} ctx An object containg a webex instance and a transform
143
+ * @param {Object} ctx An object containing a webex instance and a transform
144
144
  * @param {object} key KMS encryption key url
145
145
  * @param {Object} meetingContainerActivity An instance of a Webex meeting container activity
146
146
  * @returns {Promise} Returns a ctx.transform promise
@@ -166,10 +166,10 @@ export const transforms = toArray('inbound', {
166
166
  },
167
167
 
168
168
  /**
169
- * Decrypts a given conversation and it's activites by building an array of promises that call
169
+ * Decrypts a given conversation and it's activities by building an array of promises that call
170
170
  * decryptObject, which may then call other decrypt functions
171
171
  *
172
- * @param {Object} ctx An object containg a webex instance and a transform
172
+ * @param {Object} ctx An object containing a webex instance and a transform
173
173
  * @param {String} key KMS encryption key url (or actual key?)
174
174
  * @param {Object} conversation A Webex conversation object
175
175
  * @returns {Promise} Returns the result of Promise.all
@@ -209,7 +209,7 @@ export const transforms = toArray('inbound', {
209
209
 
210
210
  /**
211
211
  * Decrypt an individual activity
212
- * @param {Object} ctx An object containg a webex instance and a transform
212
+ * @param {Object} ctx An object containing a webex instance and a transform
213
213
  * @param {String} key KMS encryption key url (or actual key?)
214
214
  * @param {Object} activity An instance of a Webex activity
215
215
  * @returns {Promise} Returns a ctx.transform promise
@@ -240,7 +240,7 @@ export const transforms = toArray('inbound', {
240
240
  * @param {String} key KMS key
241
241
  * @param {Object} microappInstance A microappInstance which includes several properties of a recording
242
242
  * @param {String} microappInstance.model An encrypted string which decrypts to an object
243
- * @returns {Promise} Returns a contex transform
243
+ * @returns {Promise} Returns a context transform
244
244
  */
245
245
  decryptMicroappinstance(ctx, key, microappInstance) {
246
246
  return ctx.transform('decryptPropModel', key, microappInstance);
@@ -306,7 +306,7 @@ const ShareActivity = WebexPlugin.extend({
306
306
  */
307
307
  prepare() {
308
308
  if (!this.uploads.size) {
309
- throw new Error('Cannot submit a share activity without atleast one file');
309
+ throw new Error('Cannot submit a share activity without at least one file');
310
310
  }
311
311
 
312
312
  const activity = {