@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.
- package/dist/activities.js +8 -69
- package/dist/activities.js.map +1 -1
- package/dist/activity-thread-ordering.js +19 -79
- package/dist/activity-thread-ordering.js.map +1 -1
- package/dist/config.js +0 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +4 -5
- package/dist/constants.js.map +1 -1
- package/dist/conversation.js +715 -1164
- package/dist/conversation.js.map +1 -1
- package/dist/convo-error.js +0 -23
- package/dist/convo-error.js.map +1 -1
- package/dist/decryption-transforms.js +11 -74
- package/dist/decryption-transforms.js.map +1 -1
- package/dist/encryption-transforms.js +10 -47
- package/dist/encryption-transforms.js.map +1 -1
- package/dist/index.js +7 -50
- package/dist/index.js.map +1 -1
- package/dist/share-activity.js +24 -104
- package/dist/share-activity.js.map +1 -1
- package/dist/to-array.js +0 -16
- package/dist/to-array.js.map +1 -1
- package/package.json +15 -15
|
@@ -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
|
-
});
|
|
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
|
-
|
|
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;
|
|
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);
|
|
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
|
-
}
|
|
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
|
-
|
|
253
|
-
|
|
254
|
-
|
|
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
|
-
|
|
269
|
-
|
|
270
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AAsTA;AACA;AAtUA;AACA;AACA;;AAeA,IAAAA,iCAAsB,EAAC,cAAc,EAAEC,qBAAY,EAAE;EACnDC,kBAAkB,EAAE;IAClBC,UAAU,EAAE,CACV;MACEC,IAAI,EAAE,iBAAiB;MACvBC,IAAI,gBAACC,GAAG,EAAEC,iBAAiB,EAAE;QAC3B,OAAO,iBAAQC,OAAO,CAAC,mBAAID,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;MACnE,CAAC;MACDE,OAAO,mBAACF,iBAAiB,EAAE;QACzB,OAAO,iBAAQC,OAAO,CAACD,iBAAiB,CAACG,IAAI,CAAC;MAChD;IACF,CAAC,EACD;MACEN,IAAI,EAAE,iBAAiB;MACvBO,SAAS,EAAE,SAAS;MACpBN,IAAI,gBAACC,GAAG,EAAEM,KAAK,EAAE;QACf,OAAO,iBAAQJ,OAAO,CAAC,mBAAII,KAAK,EAAE,UAAU,CAAC,CAAC;MAChD,CAAC;MACDH,OAAO,mBAACG,KAAK,EAAE;QACb,OAAO,iBAAQJ,OAAO,CAACI,KAAK,CAACC,QAAQ,CAAC;MACxC;IACF,CAAC,EACD;MACET,IAAI,EAAE,sBAAsB;MAC5BO,SAAS,EAAE,SAAS;MACpBN,IAAI,gBAACC,GAAG,EAAEQ,QAAQ,EAAE;QAClB,OAAO,iBAAQN,OAAO,CAAC,mBAAIM,QAAQ,EAAE,kBAAkB,CAAC,CAAC;MAC3D,CAAC;MACDL,OAAO,mBAACK,QAAQ,EAAE;QAChB,OAAO,iBAAQN,OAAO,CACpBM,QAAQ,CAACJ,IAAI,CAACK,WAAW,CAACC,GAAG,CAAC,UAACC,IAAI;UAAA,OAAKA,IAAI,IAAIA,IAAI,CAACC,IAAI,IAAID,IAAI,CAACC,IAAI,CAACL,QAAQ;QAAA,EAAC,CACjF;MACH;IACF,CAAC,EACD;MACET,IAAI,EAAE,4CAA4C;MAClDO,SAAS,EAAE,SAAS;MACpBN,IAAI,gBAACC,GAAG,EAAEa,OAAO,EAAE;QACjB,IAAI,CAAC,mBAAIA,OAAO,EAAE,0BAA0B,CAAC,EAAE;UAC7C,OAAO,iBAAQX,OAAO,CAAC,KAAK,CAAC;QAC/B;QAEA,IAAI,mBAAIW,OAAO,EAAE,sBAAsB,CAAC,EAAE;UACxC,OAAO,iBAAQX,OAAO,CAAC,IAAI,CAAC;QAC9B;QAEA,OAAO,iBAAQA,OAAO,CAAC,KAAK,CAAC;MAC/B,CAAC;MACDC,OAAO,mBAACU,OAAO,EAAE;QACf,OAAO,iBAAQX,OAAO,CAACW,OAAO,CAACT,IAAI,CAACU,KAAK,CAAC;MAC5C;IACF,CAAC,EACD;MACEhB,IAAI,EAAE,sBAAsB;MAC5BO,SAAS,EAAE,SAAS;MACpBN,IAAI,gBAACC,GAAG,EAAEa,OAAO,EAAE;QACjB,IAAI,CAAC,mBAAIA,OAAO,EAAE,0BAA0B,CAAC,EAAE;UAC7C,OAAO,iBAAQX,OAAO,CAAC,KAAK,CAAC;QAC/B;QAEA,IAAI,mBAAIW,OAAO,EAAE,sBAAsB,CAAC,EAAE;UACxC,OAAO,iBAAQX,OAAO,CAAC,KAAK,CAAC;QAC/B;QAEA,OAAO,iBAAQA,OAAO,CAAC,IAAI,CAAC;MAC9B,CAAC;MACDC,OAAO,mBAACU,OAAO,EAAE;QACf,OAAO,iBAAQX,OAAO,CAACW,OAAO,CAACT,IAAI,CAACU,KAAK,CAAC;MAC5C;IACF,CAAC,EACD;MACEhB,IAAI,EAAE,sBAAsB;MAC5BO,SAAS,EAAE,SAAS;MACpBN,IAAI,gBAACC,GAAG,EAAEa,OAAO,EAAE;QACjB,IAAI,CAAC,mBAAIA,OAAO,EAAE,yBAAyB,CAAC,IAAI,CAAC,mBAAIA,OAAO,EAAE,uBAAuB,CAAC,EAAE;UACtF,OAAO,iBAAQX,OAAO,CAAC,KAAK,CAAC;QAC/B;QAEA,IAAI,mBAAIW,OAAO,EAAE,sBAAsB,CAAC,EAAE;UACxC,OAAO,iBAAQX,OAAO,CAAC,KAAK,CAAC;QAC/B;QAEA,OAAO,iBAAQA,OAAO,CAAC,IAAI,CAAC;MAC9B,CAAC;MACDC,OAAO,mBAACU,OAAO,EAAE;QACf,OAAO,iBAAQX,OAAO,CAACW,OAAO,CAACT,IAAI,CAACU,KAAK,CAAC;MAC5C;IACF,CAAC,CACF;IACDC,UAAU,EAAE,CACV;MACEjB,IAAI,EAAE,4CAA4C;MAClDkB,EAAE,cAAChB,GAAG,EAAEiB,KAAK,EAAE;QACb,OAAO,iBAAQC,GAAG,CAChBD,KAAK,CAACP,GAAG,CAAC,UAACC,IAAI;UAAA,OACbX,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAER,IAAI,CAAC,CAACS,IAAI,CAAC,YAAM;YAChDT,IAAI,CAACU,OAAO,GAAG,SAASA,OAAO,GAAG;cAChC,6BAAuBV,IAAI,EAAE,SAAS,CAAC;cAEvC,OAAOX,GAAG,CAACmB,SAAS,CAAC,eAAe,EAAER,IAAI,CAAC;YAC7C,CAAC;YAED,OAAOA,IAAI;UACb,CAAC,CAAC;QAAA,EACH,CACF;MACH;IACF,CAAC,EACD;MACEb,IAAI,EAAE,sBAAsB;MAC5BkB,EAAE,cAAChB,GAAG,EAAEiB,KAAK,EAAE;QACb,OAAO,iBAAQC,GAAG,CAACD,KAAK,CAACP,GAAG,CAAC,UAACC,IAAI;UAAA,OAAKX,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAER,IAAI,CAAC;QAAA,EAAC,CAAC;MACjF;IACF,CAAC,EACD;MACEb,IAAI,EAAE,sBAAsB;MAC5BkB,EAAE,cAAChB,GAAG,EAAEiB,KAAK,EAAE;QACb,OAAO,iBAAQC,GAAG,CAACD,KAAK,CAACP,GAAG,CAAC,UAACC,IAAI;UAAA,OAAKX,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAER,IAAI,CAAC;QAAA,EAAC,CAAC;MACjF;IACF,CAAC,EACD;MACEb,IAAI,EAAE,iBAAiB;MACvBO,SAAS,EAAE,UAAU;MACrBW,EAAE,cAAChB,GAAG,EAAEsB,MAAM,EAAE;QACd,IAAI,CAACA,MAAM,EAAE;UACX,OAAO,iBAAQpB,OAAO,EAAE;QAC1B;QAEA,IAAI,CAACoB,MAAM,CAACC,UAAU,EAAE;UACtB,OAAO,iBAAQrB,OAAO,EAAE;QAC1B;QAEA,OAAOF,GAAG,CACPmB,SAAS,CAAC,iBAAiB,EAAEG,MAAM,CAAC,CACpCF,IAAI,CAAC;UAAA,OAAMpB,GAAG,CAACmB,SAAS,CAAC,eAAe,EAAEG,MAAM,CAAC;QAAA,EAAC,CAClDF,IAAI,CAAC;UAAA,OAAMpB,GAAG,CAACmB,SAAS,CAAC,mBAAmB,EAAEG,MAAM,CAAC;QAAA,EAAC;MAC3D;IACF,CAAC,EACD;MACExB,IAAI,EAAE,iBAAiB;MACvBO,SAAS,EAAE,SAAS;MACpBW,EAAE,cAAChB,GAAG,EAAEsB,MAAM,EAAE;QACd,IAAI,CAACA,MAAM,EAAE;UACX,OAAO,iBAAQpB,OAAO,EAAE;QAC1B;QAEA,IAAI,CAACoB,MAAM,CAACC,UAAU,EAAE;UACtB,OAAO,iBAAQrB,OAAO,EAAE;QAC1B;QAEA,OAAOF,GAAG,CACPmB,SAAS,CAAC,eAAe,EAAEG,MAAM,CAAC,CAClCF,IAAI,CAAC;UAAA,OAAMpB,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAEG,MAAM,CAAC;QAAA,EAAC;MACzD;IACF,CAAC,EACD;MACExB,IAAI,EAAE,iBAAiB;MACvBkB,EAAE,cAAChB,GAAG,EAAEsB,MAAM,EAAE;QACd,IAAI,CAACA,MAAM,EAAE;UACX,OAAO,iBAAQpB,OAAO,EAAE;QAC1B;QAEA,IAAI,CAACoB,MAAM,CAACC,UAAU,EAAE;UACtB,OAAO,iBAAQrB,OAAO,EAAE;QAC1B;QAEA,OAAO,iBAAQgB,GAAG,CAAC,CACjBlB,GAAG,CAACmB,SAAS,oBAAa,0BAAWG,MAAM,CAACC,UAAU,CAAC,GAAID,MAAM,CAAC,EAClEtB,GAAG,CAACmB,SAAS,CAAC,sBAAsB,EAAEG,MAAM,CAAC,CAC9C,CAAC;MACJ;IACF,CAAC,EACD;MACExB,IAAI,EAAE,iBAAiB;MACvBO,SAAS,EAAE,SAAS;MACpBW,EAAE,cAAChB,GAAG,EAAEsB,MAAM,EAAE;QACd,IAAI,CAACA,MAAM,EAAE;UACX,OAAO,iBAAQpB,OAAO,EAAE;QAC1B;QAEA,OAAOF,GAAG,CACPmB,SAAS,CAAC,eAAe,EAAEG,MAAM,CAAC,CAClCF,IAAI,CAAC;UAAA,OAAMpB,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAEG,MAAM,CAAC;QAAA,EAAC;MACzD;IACF,CAAC,EACD;MACExB,IAAI,EAAE,sBAAsB;MAC5BO,SAAS,EAAE,SAAS;MACpBW,EAAE,cAAChB,GAAG,EAAEsB,MAAM,EAAE;QACd,IAAI,CAACA,MAAM,CAACE,OAAO,EAAE;UACnB,OAAO,iBAAQtB,OAAO,EAAE;QAC1B;QACA,4BACEF,GAAG,CAACyB,KAAK,CAACC,MAAM,CAACC,YAAY;UADxBC,kBAAkB,yBAAlBA,kBAAkB;UAAEC,kBAAkB,yBAAlBA,kBAAkB;UAAEC,oBAAoB,yBAApBA,oBAAoB;QAGnE,OAAO,IAAAC,kBAAU,EACfH,kBAAkB,EAClBC,kBAAkB,IAAI,CAAC,CAAC,EACxBC,oBAAoB,EACpBR,MAAM,CAACE,OAAO,CACf,CAACJ,IAAI,CAAC,UAACY,CAAC,EAAK;UACZV,MAAM,CAACE,OAAO,GAAGQ,CAAC;QACpB,CAAC,CAAC;MACJ;IACF,CAAC,EACD;MACElC,IAAI,EAAE,sBAAsB;MAC5BO,SAAS,EAAE,UAAU;MACrBW,EAAE,cAAChB,GAAG,EAAEsB,MAAM,EAAE;QACd,IAAI,CAACA,MAAM,CAACE,OAAO,EAAE;UACnB,OAAO,iBAAQtB,OAAO,EAAE;QAC1B;QAEA,6BACEF,GAAG,CAACyB,KAAK,CAACC,MAAM,CAACC,YAAY;UADxBM,mBAAmB,0BAAnBA,mBAAmB;UAAEC,mBAAmB,0BAAnBA,mBAAmB;UAAEC,qBAAqB,0BAArBA,qBAAqB;QAGtE,OAAO,IAAAC,wBAAgB,EACrBH,mBAAmB,EACnBC,mBAAmB,IAAI,CAAC,CAAC,EACzBC,qBAAqB,EACrBb,MAAM,CAACE,OAAO,CACf,CAACJ,IAAI,CAAC,UAACY,CAAC,EAAK;UACZV,MAAM,CAACE,OAAO,GAAGQ,CAAC;QACpB,CAAC,CAAC;MACJ;IACF,CAAC,EACD;MACElC,IAAI,EAAE,uBAAuB;MAC7BkB,EAAE,cAAChB,GAAG,EAAE2B,YAAY,EAAE;QACpBA,YAAY,CAACU,UAAU,GAAGV,YAAY,CAACU,UAAU,IAAI,CAAC,CAAC;QACvDV,YAAY,CAACU,UAAU,CAACvB,KAAK,GAAGa,YAAY,CAACU,UAAU,CAACvB,KAAK,IAAI,EAAE;QACnEa,YAAY,CAACW,YAAY,GAAGX,YAAY,CAACW,YAAY,IAAI,CAAC,CAAC;QAC3DX,YAAY,CAACW,YAAY,CAACxB,KAAK,GAAGa,YAAY,CAACW,YAAY,CAACxB,KAAK,IAAI,EAAE;QAEvE,OAAO,iBAAQI,GAAG,CAAC,CACjB,iBAAQA,GAAG,CACTS,YAAY,CAACU,UAAU,CAACvB,KAAK,CAACJ,GAAG,CAAC,UAACC,IAAI;UAAA,OAAKX,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAER,IAAI,CAAC;QAAA,EAAC,CACpF,EACD,iBAAQO,GAAG,CACTS,YAAY,CAACW,YAAY,CAACxB,KAAK,CAACJ,GAAG,CAAC,UAACC,IAAI;UAAA,OAAKX,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAER,IAAI,CAAC;QAAA,EAAC,CACtF,CACF,CAAC;MACJ;IACF,CAAC,EACD;MACEb,IAAI,EAAE,mBAAmB;MACzBkB,EAAE,cAAChB,GAAG,EAAEO,QAAQ,EAAE;QAChB,OAAO,iBAAQW,GAAG,CAAC,CACjBlB,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAEZ,QAAQ,CAACgC,KAAK,CAAC,EAChDvC,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAEZ,QAAQ,CAACe,MAAM,CAAC,EACjDtB,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAEZ,QAAQ,CAACiC,MAAM,CAAC,CAClD,CAAC;MACJ;IACF,CAAC,EACD;MACE1C,IAAI,EAAE,iBAAiB;MACvBkB,EAAE,cAAChB,GAAG,EAAEyC,cAAc,EAAE;QACtB;QACA,OAAO,iBAAQvB,GAAG,CAChBuB,cAAc,CAACC,eAAe,CAAChC,GAAG,CAAC,UAACC,IAAI;UAAA,OAAKX,GAAG,CAACmB,SAAS,CAAC,iBAAiB,EAAER,IAAI,CAAC;QAAA,EAAC,CACrF;MACH;IACF,CAAC,EACD;MACEb,IAAI,EAAE,iBAAiB;MACvB;MACAkB,EAAE,cAAChB,GAAG,EAAE2C,MAAM,EAAE;QACd,IAAMC,KAAK,GAAGD,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACG,YAAY,IAAIH,MAAM,CAACI,EAAE;QACnE,IAAMA,EAAE,GAAGJ,MAAM,CAACK,SAAS,IAAIL,MAAM,CAACI,EAAE;QAExC,IAAIE,gBAAQ,CAACL,KAAK,CAAC7C,IAAI,CAAC6C,KAAK,CAAC,EAAE;UAC9BD,MAAM,CAACE,UAAU,GAAGF,MAAM,CAACG,YAAY,GAAGF,KAAK,CAACM,WAAW,EAAE;QAC/D,CAAC,MAAM;UACL,6BAAuBP,MAAM,EAAE,YAAY,CAAC;UAC5C,6BAAuBA,MAAM,EAAE,cAAc,CAAC;QAChD;QAEA,IAAIA,MAAM,CAACQ,cAAc,EAAE;UACzBR,MAAM,CAACQ,cAAc,CAACC,WAAW,GAAGC,OAAO,CAACV,MAAM,CAACQ,cAAc,CAACC,WAAW,CAAC;QAChF;QAEA,IAAIH,gBAAQ,CAACK,IAAI,CAACvD,IAAI,CAACgD,EAAE,CAAC,EAAE;UAC1BJ,MAAM,CAACK,SAAS,GAAGL,MAAM,CAACI,EAAE,GAAGA,EAAE,CAACG,WAAW,EAAE;UAE/C,OAAO,iBAAQhD,OAAO,CAACyC,MAAM,CAAC;QAChC;QAEA,IAAI,CAACC,KAAK,EAAE;UACV,OAAO,iBAAQW,MAAM,CACnB,IAAIC,KAAK,CAAC,uEAAuE,CAAC,CACnF;QACH;QAEA,OAAOxD,GAAG,CAACyB,KAAK,CAACgC,QAAQ,CAACC,IAAI,CAACC,MAAM,CAACf,KAAK,CAAC,CAACxB,IAAI,CAAC,UAACkC,IAAI,EAAK;UAC1DX,MAAM,CAACK,SAAS,GAAGL,MAAM,CAACI,EAAE,GAAGO,IAAI;UAEnC,OAAOX,MAAM;QACf,CAAC,CAAC;MACJ;IACF,CAAC,CACF,CACEiB,MAAM,CAACC,gCAAoB,CAAC,CAC5BD,MAAM,CAACE,gCAAoB;EAChC,CAAC;EACDpC,MAAM,EAANA;AACF,CAAC,CAAC"}
|