@webex/internal-plugin-conversation 3.0.0-beta.15 → 3.0.0-beta.16

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.
@@ -1,62 +1,45 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.transforms = void 0;
12
-
13
9
  var _symbol = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/symbol"));
14
-
15
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
16
-
17
11
  var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
18
-
19
12
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
20
-
21
13
  var _isArray2 = _interopRequireDefault(require("lodash/isArray"));
22
-
23
14
  var _has2 = _interopRequireDefault(require("lodash/has"));
24
-
25
15
  var _get2 = _interopRequireDefault(require("lodash/get"));
26
-
27
16
  var _curry2 = _interopRequireDefault(require("lodash/curry"));
28
-
29
17
  var _capitalize2 = _interopRequireDefault(require("lodash/capitalize"));
30
-
31
18
  var _toArray = _interopRequireDefault(require("./to-array"));
32
-
33
19
  var KEY = (0, _symbol.default)('KEY');
34
20
  var encryptTextProp = (0, _curry2.default)(function (name, ctx, key, object) {
35
21
  return ctx.transform('encryptTextProp', name, key, object);
36
22
  });
37
23
  var encryptJsonProp = (0, _curry2.default)(function (name, ctx, key, object) {
38
24
  return ctx.transform('encryptJsonProp', name, key, object);
39
- }); // eslint-disable-next-line import/prefer-default-export
25
+ });
40
26
 
27
+ // eslint-disable-next-line import/prefer-default-export
41
28
  var transforms = (0, _toArray.default)('outbound', {
42
29
  encryptObject: function encryptObject(ctx, key, object) {
43
30
  if (!object) {
44
31
  object = key;
45
32
  key = undefined;
46
33
  }
47
-
48
34
  if (!object) {
49
35
  return _promise.default.resolve();
50
36
  }
51
-
52
37
  if (!object.objectType) {
53
38
  return _promise.default.resolve();
54
39
  }
55
-
56
40
  if (key === false) {
57
41
  return _promise.default.resolve();
58
42
  }
59
-
60
43
  return ctx.transform("encrypt".concat((0, _capitalize2.default)(object.objectType)), key, object);
61
44
  },
62
45
  encryptReaction2: function encryptReaction2(ctx, key, reaction2) {
@@ -66,17 +49,15 @@ var transforms = (0, _toArray.default)('outbound', {
66
49
  if (key === false) {
67
50
  return _promise.default.resolve();
68
51
  }
69
-
70
52
  return _promise.default.resolve(key || ctx.webex.internal.encryption.kms.createUnboundKeys({
71
53
  count: 1
72
54
  })).then(function (keys) {
73
55
  var k = (0, _isArray2.default)(keys) ? keys[0] : keys;
74
-
75
56
  if ((0, _has2.default)(conversation, 'kmsMessage.keyUris') && !conversation.kmsMessage.keyUris.includes(k.uri)) {
76
57
  conversation.kmsMessage.keyUris.push(k.uri);
77
58
  }
78
-
79
- return _promise.default.all([// too many implicit returns on the same line is difficult to interpret
59
+ return _promise.default.all([
60
+ // too many implicit returns on the same line is difficult to interpret
80
61
  // eslint-disable-next-line arrow-body-style
81
62
  (0, _has2.default)(conversation, 'activities.items') && conversation.activities.items.reduce(function (p, activity) {
82
63
  // eslint-disable-next-line max-nested-callbacks
@@ -84,9 +65,9 @@ var transforms = (0, _toArray.default)('outbound', {
84
65
  return ctx.transform('encryptObject', k, activity);
85
66
  });
86
67
  }, _promise.default.resolve()), ctx.transform('encryptPropDisplayName', k, conversation)]).then(function () {
87
- conversation.encryptionKeyUrl = k.uri || k; // we only want to set the defaultActivityEncryptionKeyUrl if we've
68
+ conversation.encryptionKeyUrl = k.uri || k;
69
+ // we only want to set the defaultActivityEncryptionKeyUrl if we've
88
70
  // bound a new key
89
-
90
71
  if (!key) {
91
72
  conversation.defaultActivityEncryptionKeyUrl = conversation.defaultActivityEncryptionKeyUrl || k.uri || k;
92
73
  }
@@ -95,12 +76,10 @@ var transforms = (0, _toArray.default)('outbound', {
95
76
  },
96
77
  encryptActivity: function encryptActivity(ctx, key, activity) {
97
78
  var _activity$object;
98
-
99
79
  // Activity is already encrypted
100
80
  if (activity.encryptionKeyUrl || ((_activity$object = activity.object) === null || _activity$object === void 0 ? void 0 : _activity$object.created) === 'True') {
101
81
  return _promise.default.resolve();
102
82
  }
103
-
104
83
  return ctx.transform("encrypt".concat((0, _capitalize2.default)(activity.verb), "Activity"), key, activity).then(function () {
105
84
  key = key || activity[KEY];
106
85
  return ctx.transform('prepareActivityKmsMessage', key, activity);
@@ -119,18 +98,14 @@ var transforms = (0, _toArray.default)('outbound', {
119
98
  if (key) {
120
99
  return _promise.default.resolve();
121
100
  }
122
-
123
101
  if ((0, _has2.default)(activity, 'target.defaultActivityEncryptionKeyUrl') && activity.target.defaultActivityEncryptionKeyUrl && (0, _has2.default)(activity, 'target.kmsResourceObjectUrl')) {
124
102
  activity[KEY] = key || activity.target.defaultActivityEncryptionKeyUrl;
125
103
  return _promise.default.resolve();
126
104
  }
127
-
128
105
  var conversationUrl = activity.target && activity.target.url;
129
-
130
106
  if (!conversationUrl) {
131
107
  return _promise.default.reject(new Error("Cannot determine encryption key for activity's conversation; no key url or conversation url provided"));
132
108
  }
133
-
134
109
  return ctx.webex.internal.conversation.get({
135
110
  url: conversationUrl
136
111
  }).then(function (conversation) {
@@ -139,19 +114,15 @@ var transforms = (0, _toArray.default)('outbound', {
139
114
  if (updateKeyActivity.kmsMessage.resource) {
140
115
  activity.target.kmsResourceObjectUrl = updateKeyActivity.kmsMessage.resource.uri;
141
116
  }
142
-
143
117
  activity[KEY] = activity.target.defaultActivityEncryptionKeyUrl = updateKeyActivity.object.defaultActivityEncryptionKeyUrl;
144
118
  });
145
119
  }
146
-
147
120
  if (!activity.target.defaultActivityEncryptionKeyUrl) {
148
121
  ctx.webex.logger.warn('plugin-conversation: downloaded conversation to determine its defaultActivityEncryptionKeyUrl; make sure to pass all encryption related properties when calling Webex.conversation methods.');
149
122
  }
150
-
151
123
  if (!activity.target.kmsResourceObjectUrl) {
152
124
  ctx.webex.logger.warn('plugin-conversation: downloaded conversation to determine its kmsResourceObjectUrl; make sure to pass all encryption related properties when calling Webex.conversation methods.');
153
125
  }
154
-
155
126
  activity[KEY] = activity.target.defaultActivityEncryptionKeyUrl = conversation.defaultActivityEncryptionKeyUrl;
156
127
  activity.target.kmsResourceObjectUrl = conversation.kmsResourceObjectUrl;
157
128
  return _promise.default.resolve();
@@ -162,29 +133,26 @@ var transforms = (0, _toArray.default)('outbound', {
162
133
  if (!key && activity.verb === 'delete') {
163
134
  key = (0, _get2.default)(activity, 'target.defaultActivityEncryptionKeyUrl');
164
135
  }
165
-
166
136
  if (!key && activity.verb === 'updateKey' && (0, _has2.default)(activity, 'object.defaultActivityEncryptionKeyUrl')) {
167
137
  key = (0, _get2.default)(activity, 'object.defaultActivityEncryptionKeyUrl');
168
138
  }
169
-
170
139
  if (!key && activity.verb === 'leave' && (0, _has2.default)(activity, 'target.defaultActivityEncryptionKeyUrl')) {
171
140
  key = (0, _get2.default)(activity, 'target.defaultActivityEncryptionKeyUrl');
172
141
  }
173
-
174
142
  if (key) {
175
143
  var kro = activity.target.kmsResourceObjectUrl;
176
144
  ['uri', 'resourceUri'].forEach(function (k) {
177
145
  if (activity.kmsMessage[k] && !kro && activity.kmsMessage[k].includes('<KRO>')) {
178
146
  throw new Error('encrypter: cannot determine kro');
179
147
  }
180
-
181
148
  if (activity.kmsMessage[k]) {
182
- activity.kmsMessage[k] = activity.kmsMessage[k].replace('<KRO>', kro); // key may be a key or a key url
183
-
149
+ activity.kmsMessage[k] = activity.kmsMessage[k].replace('<KRO>', kro);
150
+ // key may be a key or a key url
184
151
  activity.kmsMessage[k] = activity.kmsMessage[k].replace('<KEYURL>', key.keyUrl || key);
185
152
  }
186
153
  });
187
- } // If we made it this far and still don't have an encryption key, assume
154
+ }
155
+ // If we made it this far and still don't have an encryption key, assume
188
156
  // this is a conversation that is not encrypted and we're performing an
189
157
  // action that should not encrypt it (e.g. `leave`)
190
158
  else {
@@ -207,7 +175,6 @@ var transforms = (0, _toArray.default)('outbound', {
207
175
  if ((0, _has2.default)(activity, 'object.objectType') && activity.object.objectType === 'reaction2') {
208
176
  return ctx.transform('encryptVerbActivityWithKey', key, activity);
209
177
  }
210
-
211
178
  return ctx.transform('encryptVerbActivity', key, activity);
212
179
  }
213
180
  },
@@ -254,7 +221,6 @@ var transforms = (0, _toArray.default)('outbound', {
254
221
  if (file.image && !file.image.scr) {
255
222
  return _promise.default.reject(new Error('`file.image` must have an `scr`'));
256
223
  }
257
-
258
224
  return _promise.default.all([ctx.transform('encryptPropScr', key, file), ctx.transform('encryptPropDisplayName', key, file), ctx.transform('encryptPropContent', key, file), file.image && ctx.transform('encryptPropScr', key, file.image)]);
259
225
  },
260
226
  encryptSubmit: function encryptSubmit(ctx, key, submit) {
@@ -272,7 +238,6 @@ var transforms = (0, _toArray.default)('outbound', {
272
238
  if (!object.scr) {
273
239
  return _promise.default.resolve();
274
240
  }
275
-
276
241
  return ctx.webex.internal.encryption.encryptScr(key, object.scr).then(function (scr) {
277
242
  object.scr = scr;
278
243
  });
@@ -281,7 +246,6 @@ var transforms = (0, _toArray.default)('outbound', {
281
246
  if (!object[name]) {
282
247
  return _promise.default.resolve();
283
248
  }
284
-
285
249
  return ctx.webex.internal.encryption.encryptText(key.uri || key, (0, _stringify.default)(object[name])).then(function (ciphertext) {
286
250
  object[name] = ciphertext;
287
251
  });
@@ -290,7 +254,6 @@ var transforms = (0, _toArray.default)('outbound', {
290
254
  if (!object[name]) {
291
255
  return _promise.default.resolve();
292
256
  }
293
-
294
257
  return ctx.webex.internal.encryption.encryptText(key.uri || key, object[name]).then(function (ciphertext) {
295
258
  object[name] = ciphertext;
296
259
  });
@@ -1 +1 @@
1
- {"version":3,"names":["KEY","encryptTextProp","name","ctx","key","object","transform","encryptJsonProp","transforms","toArray","encryptObject","undefined","resolve","objectType","encryptReaction2","reaction2","encryptConversation","conversation","webex","internal","encryption","kms","createUnboundKeys","count","then","keys","k","kmsMessage","keyUris","includes","uri","push","all","activities","items","reduce","p","activity","encryptionKeyUrl","defaultActivityEncryptionKeyUrl","encryptActivity","created","verb","encryptVerbActivity","maybeEncryptTarget","target","conversationUrl","url","reject","Error","get","updateKey","updateKeyActivity","resource","kmsResourceObjectUrl","logger","warn","prepareActivityKmsMessage","kro","forEach","replace","keyUrl","encryptVerbActivityWithKey","direction","fn","encryptAddActivity","encryptAssignActivity","alias","encryptCreateActivity","encryptPostActivity","encryptShareActivity","encryptCardactionActivity","encryptUpdateActivity","encryptUpdateKeyActivity","encryptComment","comment","encryptContent","content","promises","files","map","item","encryptFile","file","image","scr","encryptSubmit","submit","encryptImageURI","imageURI","encryptPropContent","encryptPropDisplayName","encryptPropInputs","encryptPropLocation","encryptPropScr","encryptScr","encryptText","ciphertext"],"sources":["encryption-transforms.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {capitalize, curry, get, has, isArray} from 'lodash';\n\nimport toArray from './to-array';\n\nconst KEY = Symbol('KEY');\n\nconst encryptTextProp = curry((name, ctx, key, object) =>\n ctx.transform('encryptTextProp', name, key, object)\n);\n\nconst encryptJsonProp = curry((name, ctx, key, object) =>\n ctx.transform('encryptJsonProp', name, key, object)\n);\n\n// eslint-disable-next-line import/prefer-default-export\nexport const transforms = toArray('outbound', {\n encryptObject(ctx, key, object) {\n if (!object) {\n object = key;\n key = undefined;\n }\n\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n if (key === false) {\n return Promise.resolve();\n }\n\n return ctx.transform(`encrypt${capitalize(object.objectType)}`, key, object);\n },\n\n encryptReaction2(ctx, key, reaction2) {\n return ctx.transform('encryptPropDisplayName', key, reaction2);\n },\n\n encryptConversation(ctx, key, conversation) {\n if (key === false) {\n return Promise.resolve();\n }\n\n return Promise.resolve(\n key || ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1})\n ).then((keys) => {\n const k = isArray(keys) ? keys[0] : keys;\n\n if (\n has(conversation, 'kmsMessage.keyUris') &&\n !conversation.kmsMessage.keyUris.includes(k.uri)\n ) {\n conversation.kmsMessage.keyUris.push(k.uri);\n }\n\n return Promise.all([\n // too many implicit returns on the same line is difficult to interpret\n // eslint-disable-next-line arrow-body-style\n has(conversation, 'activities.items') &&\n conversation.activities.items.reduce((p, activity) => {\n // eslint-disable-next-line max-nested-callbacks\n return p.then(() => ctx.transform('encryptObject', k, activity));\n }, Promise.resolve()),\n ctx.transform('encryptPropDisplayName', k, conversation),\n ]).then(() => {\n conversation.encryptionKeyUrl = k.uri || k;\n // we only want to set the defaultActivityEncryptionKeyUrl if we've\n // bound a new key\n if (!key) {\n conversation.defaultActivityEncryptionKeyUrl =\n conversation.defaultActivityEncryptionKeyUrl || k.uri || k;\n }\n });\n });\n },\n\n encryptActivity(ctx, key, activity) {\n // Activity is already encrypted\n if (activity.encryptionKeyUrl || activity.object?.created === 'True') {\n return Promise.resolve();\n }\n\n return ctx.transform(`encrypt${capitalize(activity.verb)}Activity`, key, activity).then(() => {\n key = key || activity[KEY];\n\n return ctx.transform('prepareActivityKmsMessage', key, activity);\n });\n },\n\n encryptVerbActivity(ctx, key, activity) {\n return ctx\n .transform('maybeEncryptTarget', key, activity)\n .then(() => {\n key = key || activity[KEY];\n })\n .then(() => ctx.transform('encryptObject', key, activity.object));\n },\n\n maybeEncryptTarget(ctx, key, activity) {\n // This isn't quite right; if we just go by key, we have no guarantee that\n // we have a proper KRO available for add activities\n if (key) {\n return Promise.resolve();\n }\n\n if (\n has(activity, 'target.defaultActivityEncryptionKeyUrl') &&\n activity.target.defaultActivityEncryptionKeyUrl &&\n has(activity, 'target.kmsResourceObjectUrl')\n ) {\n activity[KEY] = key || activity.target.defaultActivityEncryptionKeyUrl;\n\n return Promise.resolve();\n }\n\n const conversationUrl = activity.target && activity.target.url;\n\n if (!conversationUrl) {\n return Promise.reject(\n new Error(\n \"Cannot determine encryption key for activity's conversation; no key url or conversation url provided\"\n )\n );\n }\n\n return ctx.webex.internal.conversation.get({url: conversationUrl}).then((conversation) => {\n if (!conversation.defaultActivityEncryptionKeyUrl) {\n return ctx.webex.internal.conversation.updateKey(conversation).then((updateKeyActivity) => {\n if (updateKeyActivity.kmsMessage.resource) {\n activity.target.kmsResourceObjectUrl = updateKeyActivity.kmsMessage.resource.uri;\n }\n activity[KEY] = activity.target.defaultActivityEncryptionKeyUrl =\n updateKeyActivity.object.defaultActivityEncryptionKeyUrl;\n });\n }\n\n if (!activity.target.defaultActivityEncryptionKeyUrl) {\n ctx.webex.logger.warn(\n 'plugin-conversation: downloaded conversation to determine its defaultActivityEncryptionKeyUrl; make sure to pass all encryption related properties when calling Webex.conversation methods.'\n );\n }\n\n if (!activity.target.kmsResourceObjectUrl) {\n ctx.webex.logger.warn(\n 'plugin-conversation: downloaded conversation to determine its kmsResourceObjectUrl; make sure to pass all encryption related properties when calling Webex.conversation methods.'\n );\n }\n\n activity[KEY] = activity.target.defaultActivityEncryptionKeyUrl =\n conversation.defaultActivityEncryptionKeyUrl;\n activity.target.kmsResourceObjectUrl = conversation.kmsResourceObjectUrl;\n\n return Promise.resolve();\n });\n },\n\n prepareActivityKmsMessage(ctx, key, activity) {\n if (activity.kmsMessage) {\n if (!key && activity.verb === 'delete') {\n key = get(activity, 'target.defaultActivityEncryptionKeyUrl');\n }\n\n if (\n !key &&\n activity.verb === 'updateKey' &&\n has(activity, 'object.defaultActivityEncryptionKeyUrl')\n ) {\n key = get(activity, 'object.defaultActivityEncryptionKeyUrl');\n }\n\n if (\n !key &&\n activity.verb === 'leave' &&\n has(activity, 'target.defaultActivityEncryptionKeyUrl')\n ) {\n key = get(activity, 'target.defaultActivityEncryptionKeyUrl');\n }\n\n if (key) {\n const kro = activity.target.kmsResourceObjectUrl;\n\n ['uri', 'resourceUri'].forEach((k) => {\n if (activity.kmsMessage[k] && !kro && activity.kmsMessage[k].includes('<KRO>')) {\n throw new Error('encrypter: cannot determine kro');\n }\n\n if (activity.kmsMessage[k]) {\n activity.kmsMessage[k] = activity.kmsMessage[k].replace('<KRO>', kro);\n // key may be a key or a key url\n activity.kmsMessage[k] = activity.kmsMessage[k].replace('<KEYURL>', key.keyUrl || key);\n }\n });\n }\n // If we made it this far and still don't have an encryption key, assume\n // this is a conversation that is not encrypted and we're performing an\n // action that should not encrypt it (e.g. `leave`)\n else {\n Reflect.deleteProperty(activity, 'kmsMessage');\n }\n }\n },\n\n encryptVerbActivityWithKey: {\n direction: 'outbound',\n fn(ctx, key, activity) {\n return ctx.transform('encryptVerbActivity', key, activity).then(() => {\n key = key || activity[KEY];\n activity.encryptionKeyUrl = key.uri || key;\n });\n },\n },\n\n encryptAddActivity: {\n direction: 'outbound',\n fn(ctx, key, activity) {\n if (has(activity, 'object.objectType') && activity.object.objectType === 'reaction2') {\n return ctx.transform('encryptVerbActivityWithKey', key, activity);\n }\n\n return ctx.transform('encryptVerbActivity', key, activity);\n },\n },\n\n encryptAssignActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptCreateActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivity',\n },\n\n encryptPostActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptShareActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptCardactionActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptUpdateActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptUpdateKeyActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivity',\n },\n\n encryptComment(ctx, key, comment) {\n return Promise.all([\n ctx.transform('encryptPropDisplayName', key, comment),\n ctx.transform('encryptPropContent', key, comment),\n ]);\n },\n\n encryptContent(ctx, key, content) {\n const promises = content.files.items.map((item) => ctx.transform('encryptObject', key, item));\n\n promises.push(ctx.transform('encryptPropContent', key, content));\n promises.push(ctx.transform('encryptPropDisplayName', key, content));\n\n return Promise.all(promises);\n },\n\n encryptFile(ctx, key, file) {\n if (file.image && !file.image.scr) {\n return Promise.reject(new Error('`file.image` must have an `scr`'));\n }\n\n return Promise.all([\n ctx.transform('encryptPropScr', key, file),\n ctx.transform('encryptPropDisplayName', key, file),\n ctx.transform('encryptPropContent', key, file),\n file.image && ctx.transform('encryptPropScr', key, file.image),\n ]);\n },\n\n encryptSubmit(ctx, key, submit) {\n return ctx.transform('encryptPropInputs', key, submit);\n },\n\n // TODO is this used for anything other than the now-removed stickies service?\n encryptImageURI(ctx, key, imageURI) {\n return ctx.transform('encryptPropLocation', key, imageURI);\n },\n\n encryptPropContent: encryptTextProp('content'),\n\n encryptPropDisplayName: encryptTextProp('displayName'),\n\n encryptPropInputs: encryptJsonProp('inputs'),\n\n encryptPropLocation: encryptTextProp('location'),\n\n encryptPropScr(ctx, key, object) {\n if (!object.scr) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption.encryptScr(key, object.scr).then((scr) => {\n object.scr = scr;\n });\n },\n\n encryptJsonProp(ctx, name, key, object) {\n if (!object[name]) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption\n .encryptText(key.uri || key, JSON.stringify(object[name]))\n .then((ciphertext) => {\n object[name] = ciphertext;\n });\n },\n\n encryptTextProp(ctx, name, key, object) {\n if (!object[name]) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption\n .encryptText(key.uri || key, object[name])\n .then((ciphertext) => {\n object[name] = ciphertext;\n });\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["KEY","encryptTextProp","name","ctx","key","object","transform","encryptJsonProp","transforms","toArray","encryptObject","undefined","resolve","objectType","encryptReaction2","reaction2","encryptConversation","conversation","webex","internal","encryption","kms","createUnboundKeys","count","then","keys","k","kmsMessage","keyUris","includes","uri","push","all","activities","items","reduce","p","activity","encryptionKeyUrl","defaultActivityEncryptionKeyUrl","encryptActivity","created","verb","encryptVerbActivity","maybeEncryptTarget","target","conversationUrl","url","reject","Error","get","updateKey","updateKeyActivity","resource","kmsResourceObjectUrl","logger","warn","prepareActivityKmsMessage","kro","forEach","replace","keyUrl","encryptVerbActivityWithKey","direction","fn","encryptAddActivity","encryptAssignActivity","alias","encryptCreateActivity","encryptPostActivity","encryptShareActivity","encryptCardactionActivity","encryptUpdateActivity","encryptUpdateKeyActivity","encryptComment","comment","encryptContent","content","promises","files","map","item","encryptFile","file","image","scr","encryptSubmit","submit","encryptImageURI","imageURI","encryptPropContent","encryptPropDisplayName","encryptPropInputs","encryptPropLocation","encryptPropScr","encryptScr","encryptText","ciphertext"],"sources":["encryption-transforms.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {capitalize, curry, get, has, isArray} from 'lodash';\n\nimport toArray from './to-array';\n\nconst KEY = Symbol('KEY');\n\nconst encryptTextProp = curry((name, ctx, key, object) =>\n ctx.transform('encryptTextProp', name, key, object)\n);\n\nconst encryptJsonProp = curry((name, ctx, key, object) =>\n ctx.transform('encryptJsonProp', name, key, object)\n);\n\n// eslint-disable-next-line import/prefer-default-export\nexport const transforms = toArray('outbound', {\n encryptObject(ctx, key, object) {\n if (!object) {\n object = key;\n key = undefined;\n }\n\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n if (key === false) {\n return Promise.resolve();\n }\n\n return ctx.transform(`encrypt${capitalize(object.objectType)}`, key, object);\n },\n\n encryptReaction2(ctx, key, reaction2) {\n return ctx.transform('encryptPropDisplayName', key, reaction2);\n },\n\n encryptConversation(ctx, key, conversation) {\n if (key === false) {\n return Promise.resolve();\n }\n\n return Promise.resolve(\n key || ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1})\n ).then((keys) => {\n const k = isArray(keys) ? keys[0] : keys;\n\n if (\n has(conversation, 'kmsMessage.keyUris') &&\n !conversation.kmsMessage.keyUris.includes(k.uri)\n ) {\n conversation.kmsMessage.keyUris.push(k.uri);\n }\n\n return Promise.all([\n // too many implicit returns on the same line is difficult to interpret\n // eslint-disable-next-line arrow-body-style\n has(conversation, 'activities.items') &&\n conversation.activities.items.reduce((p, activity) => {\n // eslint-disable-next-line max-nested-callbacks\n return p.then(() => ctx.transform('encryptObject', k, activity));\n }, Promise.resolve()),\n ctx.transform('encryptPropDisplayName', k, conversation),\n ]).then(() => {\n conversation.encryptionKeyUrl = k.uri || k;\n // we only want to set the defaultActivityEncryptionKeyUrl if we've\n // bound a new key\n if (!key) {\n conversation.defaultActivityEncryptionKeyUrl =\n conversation.defaultActivityEncryptionKeyUrl || k.uri || k;\n }\n });\n });\n },\n\n encryptActivity(ctx, key, activity) {\n // Activity is already encrypted\n if (activity.encryptionKeyUrl || activity.object?.created === 'True') {\n return Promise.resolve();\n }\n\n return ctx.transform(`encrypt${capitalize(activity.verb)}Activity`, key, activity).then(() => {\n key = key || activity[KEY];\n\n return ctx.transform('prepareActivityKmsMessage', key, activity);\n });\n },\n\n encryptVerbActivity(ctx, key, activity) {\n return ctx\n .transform('maybeEncryptTarget', key, activity)\n .then(() => {\n key = key || activity[KEY];\n })\n .then(() => ctx.transform('encryptObject', key, activity.object));\n },\n\n maybeEncryptTarget(ctx, key, activity) {\n // This isn't quite right; if we just go by key, we have no guarantee that\n // we have a proper KRO available for add activities\n if (key) {\n return Promise.resolve();\n }\n\n if (\n has(activity, 'target.defaultActivityEncryptionKeyUrl') &&\n activity.target.defaultActivityEncryptionKeyUrl &&\n has(activity, 'target.kmsResourceObjectUrl')\n ) {\n activity[KEY] = key || activity.target.defaultActivityEncryptionKeyUrl;\n\n return Promise.resolve();\n }\n\n const conversationUrl = activity.target && activity.target.url;\n\n if (!conversationUrl) {\n return Promise.reject(\n new Error(\n \"Cannot determine encryption key for activity's conversation; no key url or conversation url provided\"\n )\n );\n }\n\n return ctx.webex.internal.conversation.get({url: conversationUrl}).then((conversation) => {\n if (!conversation.defaultActivityEncryptionKeyUrl) {\n return ctx.webex.internal.conversation.updateKey(conversation).then((updateKeyActivity) => {\n if (updateKeyActivity.kmsMessage.resource) {\n activity.target.kmsResourceObjectUrl = updateKeyActivity.kmsMessage.resource.uri;\n }\n activity[KEY] = activity.target.defaultActivityEncryptionKeyUrl =\n updateKeyActivity.object.defaultActivityEncryptionKeyUrl;\n });\n }\n\n if (!activity.target.defaultActivityEncryptionKeyUrl) {\n ctx.webex.logger.warn(\n 'plugin-conversation: downloaded conversation to determine its defaultActivityEncryptionKeyUrl; make sure to pass all encryption related properties when calling Webex.conversation methods.'\n );\n }\n\n if (!activity.target.kmsResourceObjectUrl) {\n ctx.webex.logger.warn(\n 'plugin-conversation: downloaded conversation to determine its kmsResourceObjectUrl; make sure to pass all encryption related properties when calling Webex.conversation methods.'\n );\n }\n\n activity[KEY] = activity.target.defaultActivityEncryptionKeyUrl =\n conversation.defaultActivityEncryptionKeyUrl;\n activity.target.kmsResourceObjectUrl = conversation.kmsResourceObjectUrl;\n\n return Promise.resolve();\n });\n },\n\n prepareActivityKmsMessage(ctx, key, activity) {\n if (activity.kmsMessage) {\n if (!key && activity.verb === 'delete') {\n key = get(activity, 'target.defaultActivityEncryptionKeyUrl');\n }\n\n if (\n !key &&\n activity.verb === 'updateKey' &&\n has(activity, 'object.defaultActivityEncryptionKeyUrl')\n ) {\n key = get(activity, 'object.defaultActivityEncryptionKeyUrl');\n }\n\n if (\n !key &&\n activity.verb === 'leave' &&\n has(activity, 'target.defaultActivityEncryptionKeyUrl')\n ) {\n key = get(activity, 'target.defaultActivityEncryptionKeyUrl');\n }\n\n if (key) {\n const kro = activity.target.kmsResourceObjectUrl;\n\n ['uri', 'resourceUri'].forEach((k) => {\n if (activity.kmsMessage[k] && !kro && activity.kmsMessage[k].includes('<KRO>')) {\n throw new Error('encrypter: cannot determine kro');\n }\n\n if (activity.kmsMessage[k]) {\n activity.kmsMessage[k] = activity.kmsMessage[k].replace('<KRO>', kro);\n // key may be a key or a key url\n activity.kmsMessage[k] = activity.kmsMessage[k].replace('<KEYURL>', key.keyUrl || key);\n }\n });\n }\n // If we made it this far and still don't have an encryption key, assume\n // this is a conversation that is not encrypted and we're performing an\n // action that should not encrypt it (e.g. `leave`)\n else {\n Reflect.deleteProperty(activity, 'kmsMessage');\n }\n }\n },\n\n encryptVerbActivityWithKey: {\n direction: 'outbound',\n fn(ctx, key, activity) {\n return ctx.transform('encryptVerbActivity', key, activity).then(() => {\n key = key || activity[KEY];\n activity.encryptionKeyUrl = key.uri || key;\n });\n },\n },\n\n encryptAddActivity: {\n direction: 'outbound',\n fn(ctx, key, activity) {\n if (has(activity, 'object.objectType') && activity.object.objectType === 'reaction2') {\n return ctx.transform('encryptVerbActivityWithKey', key, activity);\n }\n\n return ctx.transform('encryptVerbActivity', key, activity);\n },\n },\n\n encryptAssignActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptCreateActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivity',\n },\n\n encryptPostActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptShareActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptCardactionActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptUpdateActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivityWithKey',\n },\n\n encryptUpdateKeyActivity: {\n direction: 'outbound',\n alias: 'encryptVerbActivity',\n },\n\n encryptComment(ctx, key, comment) {\n return Promise.all([\n ctx.transform('encryptPropDisplayName', key, comment),\n ctx.transform('encryptPropContent', key, comment),\n ]);\n },\n\n encryptContent(ctx, key, content) {\n const promises = content.files.items.map((item) => ctx.transform('encryptObject', key, item));\n\n promises.push(ctx.transform('encryptPropContent', key, content));\n promises.push(ctx.transform('encryptPropDisplayName', key, content));\n\n return Promise.all(promises);\n },\n\n encryptFile(ctx, key, file) {\n if (file.image && !file.image.scr) {\n return Promise.reject(new Error('`file.image` must have an `scr`'));\n }\n\n return Promise.all([\n ctx.transform('encryptPropScr', key, file),\n ctx.transform('encryptPropDisplayName', key, file),\n ctx.transform('encryptPropContent', key, file),\n file.image && ctx.transform('encryptPropScr', key, file.image),\n ]);\n },\n\n encryptSubmit(ctx, key, submit) {\n return ctx.transform('encryptPropInputs', key, submit);\n },\n\n // TODO is this used for anything other than the now-removed stickies service?\n encryptImageURI(ctx, key, imageURI) {\n return ctx.transform('encryptPropLocation', key, imageURI);\n },\n\n encryptPropContent: encryptTextProp('content'),\n\n encryptPropDisplayName: encryptTextProp('displayName'),\n\n encryptPropInputs: encryptJsonProp('inputs'),\n\n encryptPropLocation: encryptTextProp('location'),\n\n encryptPropScr(ctx, key, object) {\n if (!object.scr) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption.encryptScr(key, object.scr).then((scr) => {\n object.scr = scr;\n });\n },\n\n encryptJsonProp(ctx, name, key, object) {\n if (!object[name]) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption\n .encryptText(key.uri || key, JSON.stringify(object[name]))\n .then((ciphertext) => {\n object[name] = ciphertext;\n });\n },\n\n encryptTextProp(ctx, name, key, object) {\n if (!object[name]) {\n return Promise.resolve();\n }\n\n return ctx.webex.internal.encryption\n .encryptText(key.uri || key, object[name])\n .then((ciphertext) => {\n object[name] = ciphertext;\n });\n },\n});\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,76 +1,54 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  _Object$defineProperty(exports, "ConversationError", {
12
9
  enumerable: true,
13
10
  get: function get() {
14
11
  return _convoError.ConversationError;
15
12
  }
16
13
  });
17
-
18
14
  _Object$defineProperty(exports, "InvalidUserCreation", {
19
15
  enumerable: true,
20
16
  get: function get() {
21
17
  return _convoError.InvalidUserCreation;
22
18
  }
23
19
  });
24
-
25
20
  _Object$defineProperty(exports, "ShareActivity", {
26
21
  enumerable: true,
27
22
  get: function get() {
28
23
  return _shareActivity.default;
29
24
  }
30
25
  });
31
-
32
26
  _Object$defineProperty(exports, "default", {
33
27
  enumerable: true,
34
28
  get: function get() {
35
29
  return _conversation.default;
36
30
  }
37
31
  });
38
-
39
32
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
40
-
41
33
  var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
42
-
43
34
  var _has2 = _interopRequireDefault(require("lodash/has"));
44
-
45
35
  var _get2 = _interopRequireDefault(require("lodash/get"));
46
-
47
36
  var _capitalize2 = _interopRequireDefault(require("lodash/capitalize"));
48
-
49
37
  require("@webex/internal-plugin-encryption");
50
-
51
38
  require("@webex/internal-plugin-user");
52
-
53
39
  var _common = require("@webex/common");
54
-
55
40
  var _helperHtml = require("@webex/helper-html");
56
-
57
41
  var _webexCore = require("@webex/webex-core");
58
-
59
42
  var _conversation = _interopRequireDefault(require("./conversation"));
60
-
61
43
  var _config = _interopRequireDefault(require("./config"));
62
-
63
44
  var _encryptionTransforms = require("./encryption-transforms");
64
-
65
45
  var _decryptionTransforms = require("./decryption-transforms");
66
-
67
46
  var _shareActivity = _interopRequireDefault(require("./share-activity"));
68
-
69
47
  var _convoError = require("./convo-error");
70
-
71
48
  /*!
72
49
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
73
50
  */
51
+
74
52
  (0, _webexCore.registerInternalPlugin)('conversation', _conversation.default, {
75
53
  payloadTransformer: {
76
54
  predicates: [{
@@ -108,11 +86,9 @@ var _convoError = require("./convo-error");
108
86
  if (!(0, _has2.default)(options, 'body.items[0].objectType')) {
109
87
  return _promise.default.resolve(false);
110
88
  }
111
-
112
89
  if ((0, _get2.default)(options, 'options.deferDecrypt')) {
113
90
  return _promise.default.resolve(true);
114
91
  }
115
-
116
92
  return _promise.default.resolve(false);
117
93
  },
118
94
  extract: function extract(options) {
@@ -125,11 +101,9 @@ var _convoError = require("./convo-error");
125
101
  if (!(0, _has2.default)(options, 'body.items[0].objectType')) {
126
102
  return _promise.default.resolve(false);
127
103
  }
128
-
129
104
  if ((0, _get2.default)(options, 'options.deferDecrypt')) {
130
105
  return _promise.default.resolve(false);
131
106
  }
132
-
133
107
  return _promise.default.resolve(true);
134
108
  },
135
109
  extract: function extract(options) {
@@ -142,11 +116,9 @@ var _convoError = require("./convo-error");
142
116
  if (!(0, _has2.default)(options, 'body.items[0].childType') || !(0, _has2.default)(options, 'body.items[0].actorId')) {
143
117
  return _promise.default.resolve(false);
144
118
  }
145
-
146
119
  if ((0, _get2.default)(options, 'options.deferDecrypt')) {
147
120
  return _promise.default.resolve(false);
148
121
  }
149
-
150
122
  return _promise.default.resolve(true);
151
123
  },
152
124
  extract: function extract(options) {
@@ -162,7 +134,6 @@ var _convoError = require("./convo-error");
162
134
  (0, _deleteProperty.default)(item, 'decrypt');
163
135
  return ctx.transform('decryptObject', item);
164
136
  };
165
-
166
137
  return item;
167
138
  });
168
139
  }));
@@ -188,11 +159,9 @@ var _convoError = require("./convo-error");
188
159
  if (!object) {
189
160
  return _promise.default.resolve();
190
161
  }
191
-
192
162
  if (!object.objectType) {
193
163
  return _promise.default.resolve();
194
164
  }
195
-
196
165
  return ctx.transform('normalizeObject', object).then(function () {
197
166
  return ctx.transform('encryptObject', object);
198
167
  }).then(function () {
@@ -206,11 +175,9 @@ var _convoError = require("./convo-error");
206
175
  if (!object) {
207
176
  return _promise.default.resolve();
208
177
  }
209
-
210
178
  if (!object.objectType) {
211
179
  return _promise.default.resolve();
212
180
  }
213
-
214
181
  return ctx.transform('decryptObject', object).then(function () {
215
182
  return ctx.transform('normalizeObject', object);
216
183
  });
@@ -221,11 +188,9 @@ var _convoError = require("./convo-error");
221
188
  if (!object) {
222
189
  return _promise.default.resolve();
223
190
  }
224
-
225
191
  if (!object.objectType) {
226
192
  return _promise.default.resolve();
227
193
  }
228
-
229
194
  return _promise.default.all([ctx.transform("normalize".concat((0, _capitalize2.default)(object.objectType)), object), ctx.transform('normalizePropContent', object)]);
230
195
  }
231
196
  }, {
@@ -235,7 +200,6 @@ var _convoError = require("./convo-error");
235
200
  if (!object) {
236
201
  return _promise.default.resolve();
237
202
  }
238
-
239
203
  return ctx.transform('decryptThread', object).then(function () {
240
204
  return ctx.transform('normalizeThread', object);
241
205
  });
@@ -247,11 +211,10 @@ var _convoError = require("./convo-error");
247
211
  if (!object.content) {
248
212
  return _promise.default.resolve();
249
213
  }
250
-
251
214
  var _ctx$webex$config$con = ctx.webex.config.conversation,
252
- inboundProcessFunc = _ctx$webex$config$con.inboundProcessFunc,
253
- allowedInboundTags = _ctx$webex$config$con.allowedInboundTags,
254
- allowedInboundStyles = _ctx$webex$config$con.allowedInboundStyles;
215
+ inboundProcessFunc = _ctx$webex$config$con.inboundProcessFunc,
216
+ allowedInboundTags = _ctx$webex$config$con.allowedInboundTags,
217
+ allowedInboundStyles = _ctx$webex$config$con.allowedInboundStyles;
255
218
  return (0, _helperHtml.filter)(inboundProcessFunc, allowedInboundTags || {}, allowedInboundStyles, object.content).then(function (c) {
256
219
  object.content = c;
257
220
  });
@@ -263,11 +226,10 @@ var _convoError = require("./convo-error");
263
226
  if (!object.content) {
264
227
  return _promise.default.resolve();
265
228
  }
266
-
267
229
  var _ctx$webex$config$con2 = ctx.webex.config.conversation,
268
- outboundProcessFunc = _ctx$webex$config$con2.outboundProcessFunc,
269
- allowedOutboundTags = _ctx$webex$config$con2.allowedOutboundTags,
270
- allowedOutboundStyles = _ctx$webex$config$con2.allowedOutboundStyles;
230
+ outboundProcessFunc = _ctx$webex$config$con2.outboundProcessFunc,
231
+ allowedOutboundTags = _ctx$webex$config$con2.allowedOutboundTags,
232
+ allowedOutboundStyles = _ctx$webex$config$con2.allowedOutboundStyles;
271
233
  return (0, _helperHtml.filterEscape)(outboundProcessFunc, allowedOutboundTags || {}, allowedOutboundStyles, object.content).then(function (c) {
272
234
  object.content = c;
273
235
  });
@@ -304,27 +266,22 @@ var _convoError = require("./convo-error");
304
266
  fn: function fn(ctx, person) {
305
267
  var email = person.entryEmail || person.emailAddress || person.id;
306
268
  var id = person.entryUUID || person.id;
307
-
308
269
  if (_common.patterns.email.test(email)) {
309
270
  person.entryEmail = person.emailAddress = email.toLowerCase();
310
271
  } else {
311
272
  (0, _deleteProperty.default)(person, 'entryEmail');
312
273
  (0, _deleteProperty.default)(person, 'emailAddress');
313
274
  }
314
-
315
275
  if (person.roomProperties) {
316
276
  person.roomProperties.isModerator = Boolean(person.roomProperties.isModerator);
317
277
  }
318
-
319
278
  if (_common.patterns.uuid.test(id)) {
320
279
  person.entryUUID = person.id = id.toLowerCase();
321
280
  return _promise.default.resolve(person);
322
281
  }
323
-
324
282
  if (!email) {
325
283
  return _promise.default.reject(new Error('cannot determine id without an `emailAddress` or `entryUUID` property'));
326
284
  }
327
-
328
285
  return ctx.webex.internal.user.asUUID(email).then(function (uuid) {
329
286
  person.entryUUID = person.id = uuid;
330
287
  return person;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["registerInternalPlugin","Conversation","payloadTransformer","predicates","name","test","ctx","optionsOrResponse","resolve","extract","body","direction","event","activity","response","multistatus","map","item","data","options","items","transforms","fn","array","all","transform","then","decrypt","object","objectType","content","webex","config","conversation","inboundProcessFunc","allowedInboundTags","allowedInboundStyles","htmlFilter","c","outboundProcessFunc","allowedOutboundTags","allowedOutboundStyles","htmlFilterEscape","activities","participants","actor","target","threadActivity","childActivities","person","email","entryEmail","emailAddress","id","entryUUID","patterns","toLowerCase","roomProperties","isModerator","Boolean","uuid","reject","Error","internal","user","asUUID","concat","decryptionTransforms","encryptionTransforms"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-user';\n\nimport {patterns} from '@webex/common';\nimport {filter as htmlFilter, filterEscape as htmlFilterEscape} from '@webex/helper-html';\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {capitalize, get, has} from 'lodash';\n\nimport Conversation from './conversation';\nimport config from './config';\nimport {transforms as encryptionTransforms} from './encryption-transforms';\nimport {transforms as decryptionTransforms} from './decryption-transforms';\n\nregisterInternalPlugin('conversation', Conversation, {\n payloadTransformer: {\n predicates: [\n {\n name: 'transformObject',\n test(ctx, optionsOrResponse) {\n return Promise.resolve(has(optionsOrResponse, 'body.objectType'));\n },\n extract(optionsOrResponse) {\n return Promise.resolve(optionsOrResponse.body);\n },\n },\n {\n name: 'transformObject',\n direction: 'inbound',\n test(ctx, event) {\n return Promise.resolve(has(event, 'activity'));\n },\n extract(event) {\n return Promise.resolve(event.activity);\n },\n },\n {\n name: 'transformObjectArray',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(has(response, 'body.multistatus'));\n },\n extract(response) {\n return Promise.resolve(\n response.body.multistatus.map((item) => item && item.data && item.data.activity)\n );\n },\n },\n {\n name: 'normalizeConversationListAndBindDecrypters',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].objectType')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n {\n name: 'transformObjectArray',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].objectType')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n {\n name: 'transformThreadArray',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].childType') || !has(options, 'body.items[0].actorId')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n ],\n transforms: [\n {\n name: 'normalizeConversationListAndBindDecrypters',\n fn(ctx, array) {\n return Promise.all(\n array.map((item) =>\n ctx.transform('normalizeObject', item).then(() => {\n item.decrypt = function decrypt() {\n Reflect.deleteProperty(item, 'decrypt');\n\n return ctx.transform('decryptObject', item);\n };\n\n return item;\n })\n )\n );\n },\n },\n {\n name: 'transformObjectArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformObject', item)));\n },\n },\n {\n name: 'transformThreadArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformThread', item)));\n },\n },\n {\n name: 'transformObject',\n direction: 'outbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('normalizeObject', object)\n .then(() => ctx.transform('encryptObject', object))\n .then(() => ctx.transform('encryptKmsMessage', object));\n },\n },\n {\n name: 'transformObject',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('decryptObject', object)\n .then(() => ctx.transform('normalizeObject', object));\n },\n },\n {\n name: 'normalizeObject',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return Promise.all([\n ctx.transform(`normalize${capitalize(object.objectType)}`, object),\n ctx.transform('normalizePropContent', object),\n ]);\n },\n },\n {\n name: 'transformThread',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('decryptThread', object)\n .then(() => ctx.transform('normalizeThread', object));\n },\n },\n {\n name: 'normalizePropContent',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object.content) {\n return Promise.resolve();\n }\n const {inboundProcessFunc, allowedInboundTags, allowedInboundStyles} =\n ctx.webex.config.conversation;\n\n return htmlFilter(\n inboundProcessFunc,\n allowedInboundTags || {},\n allowedInboundStyles,\n object.content\n ).then((c) => {\n object.content = c;\n });\n },\n },\n {\n name: 'normalizePropContent',\n direction: 'outbound',\n fn(ctx, object) {\n if (!object.content) {\n return Promise.resolve();\n }\n\n const {outboundProcessFunc, allowedOutboundTags, allowedOutboundStyles} =\n ctx.webex.config.conversation;\n\n return htmlFilterEscape(\n outboundProcessFunc,\n allowedOutboundTags || {},\n allowedOutboundStyles,\n object.content\n ).then((c) => {\n object.content = c;\n });\n },\n },\n {\n name: 'normalizeConversation',\n fn(ctx, conversation) {\n conversation.activities = conversation.activities || {};\n conversation.activities.items = conversation.activities.items || [];\n conversation.participants = conversation.participants || {};\n conversation.participants.items = conversation.participants.items || [];\n\n return Promise.all([\n Promise.all(\n conversation.activities.items.map((item) => ctx.transform('normalizeObject', item))\n ),\n Promise.all(\n conversation.participants.items.map((item) => ctx.transform('normalizeObject', item))\n ),\n ]);\n },\n },\n {\n name: 'normalizeActivity',\n fn(ctx, activity) {\n return Promise.all([\n ctx.transform('normalizeObject', activity.actor),\n ctx.transform('normalizeObject', activity.object),\n ctx.transform('normalizeObject', activity.target),\n ]);\n },\n },\n {\n name: 'normalizeThread',\n fn(ctx, threadActivity) {\n // childActivities are of type Activity\n return Promise.all(\n threadActivity.childActivities.map((item) => ctx.transform('normalizeObject', item))\n );\n },\n },\n {\n name: 'normalizePerson',\n // eslint-disable-next-line complexity\n fn(ctx, person) {\n const email = person.entryEmail || person.emailAddress || person.id;\n const id = person.entryUUID || person.id;\n\n if (patterns.email.test(email)) {\n person.entryEmail = person.emailAddress = email.toLowerCase();\n } else {\n Reflect.deleteProperty(person, 'entryEmail');\n Reflect.deleteProperty(person, 'emailAddress');\n }\n\n if (person.roomProperties) {\n person.roomProperties.isModerator = Boolean(person.roomProperties.isModerator);\n }\n\n if (patterns.uuid.test(id)) {\n person.entryUUID = person.id = id.toLowerCase();\n\n return Promise.resolve(person);\n }\n\n if (!email) {\n return Promise.reject(\n new Error('cannot determine id without an `emailAddress` or `entryUUID` property')\n );\n }\n\n return ctx.webex.internal.user.asUUID(email).then((uuid) => {\n person.entryUUID = person.id = uuid;\n\n return person;\n });\n },\n },\n ]\n .concat(decryptionTransforms)\n .concat(encryptionTransforms),\n },\n config,\n});\n\nexport {default} from './conversation';\nexport {default as ShareActivity} from './share-activity';\nexport {ConversationError, InvalidUserCreation} from './convo-error';\n"],"mappings":"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"}
1
+ {"version":3,"names":["registerInternalPlugin","Conversation","payloadTransformer","predicates","name","test","ctx","optionsOrResponse","resolve","extract","body","direction","event","activity","response","multistatus","map","item","data","options","items","transforms","fn","array","all","transform","then","decrypt","object","objectType","content","webex","config","conversation","inboundProcessFunc","allowedInboundTags","allowedInboundStyles","htmlFilter","c","outboundProcessFunc","allowedOutboundTags","allowedOutboundStyles","htmlFilterEscape","activities","participants","actor","target","threadActivity","childActivities","person","email","entryEmail","emailAddress","id","entryUUID","patterns","toLowerCase","roomProperties","isModerator","Boolean","uuid","reject","Error","internal","user","asUUID","concat","decryptionTransforms","encryptionTransforms"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-encryption';\nimport '@webex/internal-plugin-user';\n\nimport {patterns} from '@webex/common';\nimport {filter as htmlFilter, filterEscape as htmlFilterEscape} from '@webex/helper-html';\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {capitalize, get, has} from 'lodash';\n\nimport Conversation from './conversation';\nimport config from './config';\nimport {transforms as encryptionTransforms} from './encryption-transforms';\nimport {transforms as decryptionTransforms} from './decryption-transforms';\n\nregisterInternalPlugin('conversation', Conversation, {\n payloadTransformer: {\n predicates: [\n {\n name: 'transformObject',\n test(ctx, optionsOrResponse) {\n return Promise.resolve(has(optionsOrResponse, 'body.objectType'));\n },\n extract(optionsOrResponse) {\n return Promise.resolve(optionsOrResponse.body);\n },\n },\n {\n name: 'transformObject',\n direction: 'inbound',\n test(ctx, event) {\n return Promise.resolve(has(event, 'activity'));\n },\n extract(event) {\n return Promise.resolve(event.activity);\n },\n },\n {\n name: 'transformObjectArray',\n direction: 'inbound',\n test(ctx, response) {\n return Promise.resolve(has(response, 'body.multistatus'));\n },\n extract(response) {\n return Promise.resolve(\n response.body.multistatus.map((item) => item && item.data && item.data.activity)\n );\n },\n },\n {\n name: 'normalizeConversationListAndBindDecrypters',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].objectType')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n {\n name: 'transformObjectArray',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].objectType')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n {\n name: 'transformThreadArray',\n direction: 'inbound',\n test(ctx, options) {\n if (!has(options, 'body.items[0].childType') || !has(options, 'body.items[0].actorId')) {\n return Promise.resolve(false);\n }\n\n if (get(options, 'options.deferDecrypt')) {\n return Promise.resolve(false);\n }\n\n return Promise.resolve(true);\n },\n extract(options) {\n return Promise.resolve(options.body.items);\n },\n },\n ],\n transforms: [\n {\n name: 'normalizeConversationListAndBindDecrypters',\n fn(ctx, array) {\n return Promise.all(\n array.map((item) =>\n ctx.transform('normalizeObject', item).then(() => {\n item.decrypt = function decrypt() {\n Reflect.deleteProperty(item, 'decrypt');\n\n return ctx.transform('decryptObject', item);\n };\n\n return item;\n })\n )\n );\n },\n },\n {\n name: 'transformObjectArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformObject', item)));\n },\n },\n {\n name: 'transformThreadArray',\n fn(ctx, array) {\n return Promise.all(array.map((item) => ctx.transform('transformThread', item)));\n },\n },\n {\n name: 'transformObject',\n direction: 'outbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('normalizeObject', object)\n .then(() => ctx.transform('encryptObject', object))\n .then(() => ctx.transform('encryptKmsMessage', object));\n },\n },\n {\n name: 'transformObject',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('decryptObject', object)\n .then(() => ctx.transform('normalizeObject', object));\n },\n },\n {\n name: 'normalizeObject',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n if (!object.objectType) {\n return Promise.resolve();\n }\n\n return Promise.all([\n ctx.transform(`normalize${capitalize(object.objectType)}`, object),\n ctx.transform('normalizePropContent', object),\n ]);\n },\n },\n {\n name: 'transformThread',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object) {\n return Promise.resolve();\n }\n\n return ctx\n .transform('decryptThread', object)\n .then(() => ctx.transform('normalizeThread', object));\n },\n },\n {\n name: 'normalizePropContent',\n direction: 'inbound',\n fn(ctx, object) {\n if (!object.content) {\n return Promise.resolve();\n }\n const {inboundProcessFunc, allowedInboundTags, allowedInboundStyles} =\n ctx.webex.config.conversation;\n\n return htmlFilter(\n inboundProcessFunc,\n allowedInboundTags || {},\n allowedInboundStyles,\n object.content\n ).then((c) => {\n object.content = c;\n });\n },\n },\n {\n name: 'normalizePropContent',\n direction: 'outbound',\n fn(ctx, object) {\n if (!object.content) {\n return Promise.resolve();\n }\n\n const {outboundProcessFunc, allowedOutboundTags, allowedOutboundStyles} =\n ctx.webex.config.conversation;\n\n return htmlFilterEscape(\n outboundProcessFunc,\n allowedOutboundTags || {},\n allowedOutboundStyles,\n object.content\n ).then((c) => {\n object.content = c;\n });\n },\n },\n {\n name: 'normalizeConversation',\n fn(ctx, conversation) {\n conversation.activities = conversation.activities || {};\n conversation.activities.items = conversation.activities.items || [];\n conversation.participants = conversation.participants || {};\n conversation.participants.items = conversation.participants.items || [];\n\n return Promise.all([\n Promise.all(\n conversation.activities.items.map((item) => ctx.transform('normalizeObject', item))\n ),\n Promise.all(\n conversation.participants.items.map((item) => ctx.transform('normalizeObject', item))\n ),\n ]);\n },\n },\n {\n name: 'normalizeActivity',\n fn(ctx, activity) {\n return Promise.all([\n ctx.transform('normalizeObject', activity.actor),\n ctx.transform('normalizeObject', activity.object),\n ctx.transform('normalizeObject', activity.target),\n ]);\n },\n },\n {\n name: 'normalizeThread',\n fn(ctx, threadActivity) {\n // childActivities are of type Activity\n return Promise.all(\n threadActivity.childActivities.map((item) => ctx.transform('normalizeObject', item))\n );\n },\n },\n {\n name: 'normalizePerson',\n // eslint-disable-next-line complexity\n fn(ctx, person) {\n const email = person.entryEmail || person.emailAddress || person.id;\n const id = person.entryUUID || person.id;\n\n if (patterns.email.test(email)) {\n person.entryEmail = person.emailAddress = email.toLowerCase();\n } else {\n Reflect.deleteProperty(person, 'entryEmail');\n Reflect.deleteProperty(person, 'emailAddress');\n }\n\n if (person.roomProperties) {\n person.roomProperties.isModerator = Boolean(person.roomProperties.isModerator);\n }\n\n if (patterns.uuid.test(id)) {\n person.entryUUID = person.id = id.toLowerCase();\n\n return Promise.resolve(person);\n }\n\n if (!email) {\n return Promise.reject(\n new Error('cannot determine id without an `emailAddress` or `entryUUID` property')\n );\n }\n\n return ctx.webex.internal.user.asUUID(email).then((uuid) => {\n person.entryUUID = person.id = uuid;\n\n return person;\n });\n },\n },\n ]\n .concat(decryptionTransforms)\n .concat(encryptionTransforms),\n },\n config,\n});\n\nexport {default} from './conversation';\nexport {default as ShareActivity} from './share-activity';\nexport {ConversationError, InvalidUserCreation} from './convo-error';\n"],"mappings":"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"}