@webex/internal-plugin-conversation 3.0.0-beta.9 → 3.0.0-bnr.0

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.
Files changed (57) hide show
  1. package/README.md +1 -3
  2. package/dist/activities.js +8 -69
  3. package/dist/activities.js.map +1 -1
  4. package/dist/activity-thread-ordering.js +19 -79
  5. package/dist/activity-thread-ordering.js.map +1 -1
  6. package/dist/config.js +1 -7
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +4 -5
  9. package/dist/constants.js.map +1 -1
  10. package/dist/conversation.js +790 -1199
  11. package/dist/conversation.js.map +1 -1
  12. package/dist/convo-error.js +0 -23
  13. package/dist/convo-error.js.map +1 -1
  14. package/dist/decryption-transforms.js +35 -98
  15. package/dist/decryption-transforms.js.map +1 -1
  16. package/dist/encryption-transforms.js +11 -48
  17. package/dist/encryption-transforms.js.map +1 -1
  18. package/dist/index.js +7 -50
  19. package/dist/index.js.map +1 -1
  20. package/dist/internal-plugin-conversation.d.ts +21 -0
  21. package/dist/share-activity.js +40 -106
  22. package/dist/share-activity.js.map +1 -1
  23. package/dist/to-array.js +9 -11
  24. package/dist/to-array.js.map +1 -1
  25. package/dist/tsdoc-metadata.json +11 -0
  26. package/dist/types/activities.d.ts +32 -0
  27. package/dist/types/activity-thread-ordering.d.ts +18 -0
  28. package/dist/types/config.d.ts +19 -0
  29. package/dist/types/constants.d.ts +5 -0
  30. package/dist/types/conversation.d.ts +2 -0
  31. package/dist/types/convo-error.d.ts +10 -0
  32. package/dist/types/decryption-transforms.d.ts +1 -0
  33. package/dist/types/encryption-transforms.d.ts +1 -0
  34. package/dist/types/index.d.ts +3 -0
  35. package/dist/types/share-activity.d.ts +7 -0
  36. package/dist/types/to-array.d.ts +9 -0
  37. package/package.json +15 -15
  38. package/src/activities.js +10 -7
  39. package/src/activity-thread-ordering.js +27 -30
  40. package/src/activity-threading.md +68 -49
  41. package/src/config.js +5 -5
  42. package/src/conversation.js +621 -589
  43. package/src/decryption-transforms.js +103 -62
  44. package/src/encryption-transforms.js +103 -83
  45. package/src/index.js +82 -66
  46. package/src/share-activity.js +64 -55
  47. package/src/to-array.js +2 -2
  48. package/test/integration/spec/create.js +184 -118
  49. package/test/integration/spec/encryption.js +250 -186
  50. package/test/integration/spec/get.js +761 -513
  51. package/test/integration/spec/mercury.js +37 -27
  52. package/test/integration/spec/share.js +292 -229
  53. package/test/integration/spec/verbs.js +628 -441
  54. package/test/unit/spec/conversation.js +265 -163
  55. package/test/unit/spec/decrypt-transforms.js +112 -131
  56. package/test/unit/spec/encryption-transforms.js +24 -18
  57. package/test/unit/spec/share-activity.js +37 -40
package/README.md CHANGED
@@ -21,14 +21,12 @@ npm install --save @webex/internal-plugin-conversation
21
21
  ## Usage
22
22
 
23
23
  ```js
24
-
25
24
  import '@webex/internal-plugin-conversation';
26
25
 
27
26
  import WebexCore from '@webex/webex-core';
28
27
 
29
28
  const webex = new WebexCore();
30
- webex.internal.conversation.WHATEVER
31
-
29
+ webex.internal.conversation.WHATEVER;
32
30
  ```
33
31
 
34
32
  This is the list of environment variable used by this plugin:
@@ -1,33 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
-
5
4
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
-
7
5
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
-
9
6
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
10
-
11
7
  var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
12
-
13
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
14
-
15
9
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
16
-
17
10
  _Object$defineProperty(exports, "__esModule", {
18
11
  value: true
19
12
  });
20
-
21
13
  exports.sortActivitiesByPublishedDate = exports.sanitizeActivity = exports.isRootActivity = exports.isReplyActivity = exports.isNewer = exports.isEditActivity = exports.isDeleteActivity = exports.isCreateActivity = exports.getPublishedDate = exports.getParentId = exports.getIsActivityOrphaned = exports.getActivityType = exports.determineActivityType = exports.createRootActivity = exports.createReplyEditActivity = exports.createReplyActivity = exports.createEditActivity = exports.OLDER = exports.NEWER = exports.MID = exports.INITIAL = exports.ACTIVITY_TYPES = void 0;
22
-
23
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
24
-
25
15
  var _sortBy2 = _interopRequireDefault(require("lodash/sortBy"));
26
-
27
16
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
28
-
29
17
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
30
-
31
18
  var OLDER = 'older';
32
19
  exports.OLDER = OLDER;
33
20
  var NEWER = 'newer';
@@ -56,167 +43,124 @@ var CREATE = 'create';
56
43
  var TOMBSTONE = 'tombstone';
57
44
  var DELETE = 'delete';
58
45
  var ADD = 'add';
59
-
60
46
  var getActivityType = function getActivityType(activity) {
61
47
  var _activity$parent, _activity$parent2;
62
-
63
48
  if (((_activity$parent = activity.parent) === null || _activity$parent === void 0 ? void 0 : _activity$parent.type) === REPLY) {
64
49
  return ACTIVITY_TYPES.REPLY;
65
50
  }
66
-
67
51
  if (((_activity$parent2 = activity.parent) === null || _activity$parent2 === void 0 ? void 0 : _activity$parent2.type) === EDIT) {
68
52
  return ACTIVITY_TYPES.EDIT;
69
53
  }
70
-
71
54
  if (activity.verb === ADD || activity.type === REACTION_SUMMARY) {
72
55
  return ACTIVITY_TYPES.REACTION;
73
56
  }
74
-
75
57
  if (activity.type === REACTION_SELF_SUMMARY) {
76
58
  return ACTIVITY_TYPES.REACTION_SELF;
77
59
  }
78
-
79
60
  if (activity.verb === CREATE) {
80
61
  return ACTIVITY_TYPES.CREATE;
81
62
  }
82
-
83
63
  if (activity.verb === TOMBSTONE) {
84
64
  return ACTIVITY_TYPES.TOMBSTONE;
85
65
  }
86
-
87
66
  if (activity.verb === DELETE) {
88
67
  return ACTIVITY_TYPES.DELETE;
89
68
  }
90
-
91
69
  return ACTIVITY_TYPES.ROOT;
92
70
  };
93
-
94
71
  exports.getActivityType = getActivityType;
95
-
96
72
  var getPublishedDate = function getPublishedDate() {
97
73
  var activity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
98
74
  return new Date(activity.published).getTime();
99
75
  };
76
+
100
77
  /**
101
78
  * @param {Object} activity1
102
79
  * @param {Object} activity2
103
80
  * @returns {boolean} true if first activity is newer than second
104
81
  */
105
-
106
-
107
82
  exports.getPublishedDate = getPublishedDate;
108
-
109
83
  var isNewer = function isNewer(activity1, activity2) {
110
84
  return getPublishedDate(activity1) > getPublishedDate(activity2);
111
85
  };
112
-
113
86
  exports.isNewer = isNewer;
114
-
115
87
  var sortActivitiesByPublishedDate = function sortActivitiesByPublishedDate(activities) {
116
88
  return (0, _sortBy2.default)(activities, function (activity) {
117
89
  return getPublishedDate(activity);
118
90
  });
119
91
  };
120
-
121
92
  exports.sortActivitiesByPublishedDate = sortActivitiesByPublishedDate;
122
-
123
93
  var getParentId = function getParentId(activity) {
124
94
  var _activity$parent3;
125
-
126
95
  return activity === null || activity === void 0 ? void 0 : (_activity$parent3 = activity.parent) === null || _activity$parent3 === void 0 ? void 0 : _activity$parent3.id;
127
96
  };
128
-
129
97
  exports.getParentId = getParentId;
130
-
131
98
  var isRootActivity = function isRootActivity(act) {
132
99
  return getActivityType(act) === ACTIVITY_TYPES.ROOT;
133
100
  };
134
-
135
101
  exports.isRootActivity = isRootActivity;
136
-
137
102
  var isReplyActivity = function isReplyActivity(act) {
138
103
  return getActivityType(act) === ACTIVITY_TYPES.REPLY;
139
104
  };
140
-
141
105
  exports.isReplyActivity = isReplyActivity;
142
-
143
106
  var isEditActivity = function isEditActivity(act) {
144
107
  return getActivityType(act) === ACTIVITY_TYPES.EDIT;
145
108
  };
146
-
147
109
  exports.isEditActivity = isEditActivity;
148
-
149
110
  var isCreateActivity = function isCreateActivity(act) {
150
111
  return getActivityType(act) === ACTIVITY_TYPES.CREATE;
151
112
  };
152
-
153
113
  exports.isCreateActivity = isCreateActivity;
154
-
155
114
  var isDeleteActivity = function isDeleteActivity(act) {
156
115
  return getActivityType(act) === ACTIVITY_TYPES.DELETE;
157
116
  };
158
-
159
117
  exports.isDeleteActivity = isDeleteActivity;
160
-
161
118
  var sanitizeActivity = function sanitizeActivity(activity) {
162
119
  var final = _objectSpread({}, activity);
163
-
164
120
  final.reaction = activity.reaction || {};
165
- final.reactionSelf = activity.reactionSelf || {}; // replies will be spread in order beneath parent, no need to include on final objects
121
+ final.reactionSelf = activity.reactionSelf || {};
166
122
 
123
+ // replies will be spread in order beneath parent, no need to include on final objects
167
124
  delete final.replies;
168
125
  return final;
169
126
  };
170
-
171
127
  exports.sanitizeActivity = sanitizeActivity;
172
-
173
128
  var getIsActivityOrphaned = function getIsActivityOrphaned(activity, activities) {
174
129
  return activity.parent && activity.parent.id && !activities[activity.parent.id];
175
130
  };
176
-
177
131
  exports.getIsActivityOrphaned = getIsActivityOrphaned;
178
-
179
132
  var getIsReplyEditActivity = function getIsReplyEditActivity(activity, activities) {
180
133
  var parentId = activity.parent.id;
181
134
  var parentActivity = activities[parentId];
182
135
  return parentActivity && isReplyActivity(parentActivity);
183
136
  };
184
-
185
137
  var determineActivityType = function determineActivityType(activity, activities) {
186
- var initialType = getActivityType(activity); // edits to a reply, while they are replies themselves, appear in every way as edits
187
- // the only way to dermine their status as an edited reply is to find the original reply
138
+ var initialType = getActivityType(activity);
188
139
 
140
+ // edits to a reply, while they are replies themselves, appear in every way as edits
141
+ // the only way to dermine their status as an edited reply is to find the original reply
189
142
  if (initialType === ACTIVITY_TYPES.EDIT) {
190
143
  var isReplyEditActivity = getIsReplyEditActivity(activity, activities);
191
144
  return isReplyEditActivity ? ACTIVITY_TYPES.REPLY_EDIT : initialType;
192
145
  }
193
-
194
146
  return initialType;
195
147
  };
196
-
197
148
  exports.determineActivityType = determineActivityType;
198
-
199
149
  var createRootActivity = function createRootActivity(activity) {
200
150
  return activity;
201
151
  };
202
-
203
152
  exports.createRootActivity = createRootActivity;
204
-
205
153
  var createReplyActivity = function createReplyActivity(activity) {
206
154
  var replyAct = _objectSpread(_objectSpread({}, activity), {}, {
207
155
  replyParent: activity.parent
208
156
  });
209
-
210
157
  return replyAct;
211
158
  };
212
-
213
159
  exports.createReplyActivity = createReplyActivity;
214
-
215
160
  var createEditActivity = function createEditActivity(editActivity, activities) {
216
161
  var editActParentObj = editActivity.parent;
217
162
  var parentId = editActParentObj.id;
218
163
  var parentAct = activities[parentId];
219
-
220
164
  var joinedEditAct = _objectSpread(_objectSpread({}, parentAct), {}, {
221
165
  id: editActivity.id,
222
166
  parent: editActParentObj,
@@ -224,18 +168,15 @@ var createEditActivity = function createEditActivity(editActivity, activities) {
224
168
  object: editActivity.object,
225
169
  published: editActivity.published
226
170
  });
227
-
228
171
  return joinedEditAct;
229
- }; // takes an edit activity whose parent is a reply activity
230
-
172
+ };
231
173
 
174
+ // takes an edit activity whose parent is a reply activity
232
175
  exports.createEditActivity = createEditActivity;
233
-
234
176
  var createReplyEditActivity = function createReplyEditActivity(editActivity, activities) {
235
177
  var editActParentObj = editActivity.parent;
236
178
  var parentId = editActParentObj.id;
237
179
  var parentReplyAct = activities[parentId];
238
-
239
180
  var joinedReplyEditActivity = _objectSpread(_objectSpread({}, parentReplyAct), {}, {
240
181
  id: editActivity.id,
241
182
  parent: editActParentObj,
@@ -244,9 +185,7 @@ var createReplyEditActivity = function createReplyEditActivity(editActivity, act
244
185
  object: editActivity.object,
245
186
  published: editActivity.published
246
187
  });
247
-
248
188
  return joinedReplyEditActivity;
249
189
  };
250
-
251
190
  exports.createReplyEditActivity = createReplyEditActivity;
252
191
  //# sourceMappingURL=activities.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["OLDER","NEWER","MID","INITIAL","ACTIVITY_TYPES","REPLY","EDIT","REACTION","REACTION_SELF","ROOT","CREATE","TOMBSTONE","DELETE","REPLY_EDIT","REACTION_SUMMARY","REACTION_SELF_SUMMARY","ADD","getActivityType","activity","parent","type","verb","getPublishedDate","Date","published","getTime","isNewer","activity1","activity2","sortActivitiesByPublishedDate","activities","getParentId","id","isRootActivity","act","isReplyActivity","isEditActivity","isCreateActivity","isDeleteActivity","sanitizeActivity","final","reaction","reactionSelf","replies","getIsActivityOrphaned","getIsReplyEditActivity","parentId","parentActivity","determineActivityType","initialType","isReplyEditActivity","createRootActivity","createReplyActivity","replyAct","replyParent","createEditActivity","editActivity","editActParentObj","parentAct","joinedEditAct","editParent","object","createReplyEditActivity","parentReplyAct","joinedReplyEditActivity"],"sources":["activities.js"],"sourcesContent":["import {sortBy} from 'lodash';\n\nexport const OLDER = 'older';\nexport const NEWER = 'newer';\nexport const MID = 'mid';\nexport const INITIAL = 'initial';\n\nexport const ACTIVITY_TYPES = {\n REPLY: 'REPLY',\n EDIT: 'EDIT',\n REACTION: 'REACTION',\n REACTION_SELF: 'REACTION_SELF',\n ROOT: 'ROOT',\n CREATE: 'CREATE',\n TOMBSTONE: 'TOMBSTONE',\n DELETE: 'DELETE',\n REPLY_EDIT: 'REPLY_EDIT'\n};\n\nconst REPLY = 'reply';\nconst EDIT = 'edit';\nconst REACTION_SUMMARY = 'reactionSummary';\nconst REACTION_SELF_SUMMARY = 'reactionSelfSummary';\nconst CREATE = 'create';\nconst TOMBSTONE = 'tombstone';\nconst DELETE = 'delete';\nconst ADD = 'add';\n\nexport const getActivityType = (activity) => {\n if (activity.parent?.type === REPLY) {\n return ACTIVITY_TYPES.REPLY;\n }\n if (activity.parent?.type === EDIT) {\n return ACTIVITY_TYPES.EDIT;\n }\n if (activity.verb === ADD || activity.type === REACTION_SUMMARY) {\n return ACTIVITY_TYPES.REACTION;\n }\n if (activity.type === REACTION_SELF_SUMMARY) {\n return ACTIVITY_TYPES.REACTION_SELF;\n }\n if (activity.verb === CREATE) {\n return ACTIVITY_TYPES.CREATE;\n }\n if (activity.verb === TOMBSTONE) {\n return ACTIVITY_TYPES.TOMBSTONE;\n }\n if (activity.verb === DELETE) {\n return ACTIVITY_TYPES.DELETE;\n }\n\n return ACTIVITY_TYPES.ROOT;\n};\n\nexport const getPublishedDate = (activity = {}) => new Date(activity.published).getTime();\n\n/**\n * @param {Object} activity1\n * @param {Object} activity2\n * @returns {boolean} true if first activity is newer than second\n */\nexport const isNewer = (activity1, activity2) => getPublishedDate(activity1) > getPublishedDate(activity2);\n\nexport const sortActivitiesByPublishedDate = (activities) => sortBy(activities, (activity) => getPublishedDate(activity));\n\nexport const getParentId = (activity) => activity?.parent?.id;\n\nexport const isRootActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.ROOT;\nexport const isReplyActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.REPLY;\nexport const isEditActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.EDIT;\nexport const isCreateActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.CREATE;\nexport const isDeleteActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.DELETE;\n\nexport const sanitizeActivity = (activity) => {\n const final = {...activity};\n\n final.reaction = activity.reaction || {};\n final.reactionSelf = activity.reactionSelf || {};\n\n // replies will be spread in order beneath parent, no need to include on final objects\n delete final.replies;\n\n return final;\n};\n\nexport const getIsActivityOrphaned = (activity, activities) => activity.parent && activity.parent.id && !activities[activity.parent.id];\n\nconst getIsReplyEditActivity = (activity, activities) => {\n const parentId = activity.parent.id;\n const parentActivity = activities[parentId];\n\n return parentActivity && isReplyActivity(parentActivity);\n};\n\nexport const determineActivityType = (activity, activities) => {\n const initialType = getActivityType(activity);\n\n // edits to a reply, while they are replies themselves, appear in every way as edits\n // the only way to dermine their status as an edited reply is to find the original reply\n if (initialType === ACTIVITY_TYPES.EDIT) {\n const isReplyEditActivity = getIsReplyEditActivity(activity, activities);\n\n return isReplyEditActivity ? ACTIVITY_TYPES.REPLY_EDIT : initialType;\n }\n\n return initialType;\n};\n\nexport const createRootActivity = (activity) => activity;\n\nexport const createReplyActivity = (activity) => {\n const replyAct = {\n ...activity,\n replyParent: activity.parent\n };\n\n return replyAct;\n};\n\nexport const createEditActivity = (editActivity, activities) => {\n const editActParentObj = editActivity.parent;\n const parentId = editActParentObj.id;\n const parentAct = activities[parentId];\n\n const joinedEditAct = {\n ...parentAct,\n id: editActivity.id,\n parent: editActParentObj,\n editParent: editActParentObj,\n object: editActivity.object,\n published: editActivity.published\n };\n\n return joinedEditAct;\n};\n\n// takes an edit activity whose parent is a reply activity\nexport const createReplyEditActivity = (editActivity, activities) => {\n const editActParentObj = editActivity.parent;\n const parentId = editActParentObj.id;\n const parentReplyAct = activities[parentId];\n\n const joinedReplyEditActivity = {\n ...parentReplyAct,\n id: editActivity.id,\n parent: editActParentObj,\n editParent: editActParentObj,\n replyParent: parentReplyAct.parent,\n object: editActivity.object,\n published: editActivity.published\n };\n\n return joinedReplyEditActivity;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["OLDER","NEWER","MID","INITIAL","ACTIVITY_TYPES","REPLY","EDIT","REACTION","REACTION_SELF","ROOT","CREATE","TOMBSTONE","DELETE","REPLY_EDIT","REACTION_SUMMARY","REACTION_SELF_SUMMARY","ADD","getActivityType","activity","parent","type","verb","getPublishedDate","Date","published","getTime","isNewer","activity1","activity2","sortActivitiesByPublishedDate","activities","getParentId","id","isRootActivity","act","isReplyActivity","isEditActivity","isCreateActivity","isDeleteActivity","sanitizeActivity","final","reaction","reactionSelf","replies","getIsActivityOrphaned","getIsReplyEditActivity","parentId","parentActivity","determineActivityType","initialType","isReplyEditActivity","createRootActivity","createReplyActivity","replyAct","replyParent","createEditActivity","editActivity","editActParentObj","parentAct","joinedEditAct","editParent","object","createReplyEditActivity","parentReplyAct","joinedReplyEditActivity"],"sources":["activities.js"],"sourcesContent":["import {sortBy} from 'lodash';\n\nexport const OLDER = 'older';\nexport const NEWER = 'newer';\nexport const MID = 'mid';\nexport const INITIAL = 'initial';\n\nexport const ACTIVITY_TYPES = {\n REPLY: 'REPLY',\n EDIT: 'EDIT',\n REACTION: 'REACTION',\n REACTION_SELF: 'REACTION_SELF',\n ROOT: 'ROOT',\n CREATE: 'CREATE',\n TOMBSTONE: 'TOMBSTONE',\n DELETE: 'DELETE',\n REPLY_EDIT: 'REPLY_EDIT',\n};\n\nconst REPLY = 'reply';\nconst EDIT = 'edit';\nconst REACTION_SUMMARY = 'reactionSummary';\nconst REACTION_SELF_SUMMARY = 'reactionSelfSummary';\nconst CREATE = 'create';\nconst TOMBSTONE = 'tombstone';\nconst DELETE = 'delete';\nconst ADD = 'add';\n\nexport const getActivityType = (activity) => {\n if (activity.parent?.type === REPLY) {\n return ACTIVITY_TYPES.REPLY;\n }\n if (activity.parent?.type === EDIT) {\n return ACTIVITY_TYPES.EDIT;\n }\n if (activity.verb === ADD || activity.type === REACTION_SUMMARY) {\n return ACTIVITY_TYPES.REACTION;\n }\n if (activity.type === REACTION_SELF_SUMMARY) {\n return ACTIVITY_TYPES.REACTION_SELF;\n }\n if (activity.verb === CREATE) {\n return ACTIVITY_TYPES.CREATE;\n }\n if (activity.verb === TOMBSTONE) {\n return ACTIVITY_TYPES.TOMBSTONE;\n }\n if (activity.verb === DELETE) {\n return ACTIVITY_TYPES.DELETE;\n }\n\n return ACTIVITY_TYPES.ROOT;\n};\n\nexport const getPublishedDate = (activity = {}) => new Date(activity.published).getTime();\n\n/**\n * @param {Object} activity1\n * @param {Object} activity2\n * @returns {boolean} true if first activity is newer than second\n */\nexport const isNewer = (activity1, activity2) =>\n getPublishedDate(activity1) > getPublishedDate(activity2);\n\nexport const sortActivitiesByPublishedDate = (activities) =>\n sortBy(activities, (activity) => getPublishedDate(activity));\n\nexport const getParentId = (activity) => activity?.parent?.id;\n\nexport const isRootActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.ROOT;\nexport const isReplyActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.REPLY;\nexport const isEditActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.EDIT;\nexport const isCreateActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.CREATE;\nexport const isDeleteActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.DELETE;\n\nexport const sanitizeActivity = (activity) => {\n const final = {...activity};\n\n final.reaction = activity.reaction || {};\n final.reactionSelf = activity.reactionSelf || {};\n\n // replies will be spread in order beneath parent, no need to include on final objects\n delete final.replies;\n\n return final;\n};\n\nexport const getIsActivityOrphaned = (activity, activities) =>\n activity.parent && activity.parent.id && !activities[activity.parent.id];\n\nconst getIsReplyEditActivity = (activity, activities) => {\n const parentId = activity.parent.id;\n const parentActivity = activities[parentId];\n\n return parentActivity && isReplyActivity(parentActivity);\n};\n\nexport const determineActivityType = (activity, activities) => {\n const initialType = getActivityType(activity);\n\n // edits to a reply, while they are replies themselves, appear in every way as edits\n // the only way to dermine their status as an edited reply is to find the original reply\n if (initialType === ACTIVITY_TYPES.EDIT) {\n const isReplyEditActivity = getIsReplyEditActivity(activity, activities);\n\n return isReplyEditActivity ? ACTIVITY_TYPES.REPLY_EDIT : initialType;\n }\n\n return initialType;\n};\n\nexport const createRootActivity = (activity) => activity;\n\nexport const createReplyActivity = (activity) => {\n const replyAct = {\n ...activity,\n replyParent: activity.parent,\n };\n\n return replyAct;\n};\n\nexport const createEditActivity = (editActivity, activities) => {\n const editActParentObj = editActivity.parent;\n const parentId = editActParentObj.id;\n const parentAct = activities[parentId];\n\n const joinedEditAct = {\n ...parentAct,\n id: editActivity.id,\n parent: editActParentObj,\n editParent: editActParentObj,\n object: editActivity.object,\n published: editActivity.published,\n };\n\n return joinedEditAct;\n};\n\n// takes an edit activity whose parent is a reply activity\nexport const createReplyEditActivity = (editActivity, activities) => {\n const editActParentObj = editActivity.parent;\n const parentId = editActParentObj.id;\n const parentReplyAct = activities[parentId];\n\n const joinedReplyEditActivity = {\n ...parentReplyAct,\n id: editActivity.id,\n parent: editActParentObj,\n editParent: editActParentObj,\n replyParent: parentReplyAct.parent,\n object: editActivity.object,\n published: editActivity.published,\n };\n\n return joinedReplyEditActivity;\n};\n"],"mappings":"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"}
@@ -1,44 +1,33 @@
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.setValue = exports.rootActivityManager = exports.noMoreActivitiesManager = exports.minBatchSize = exports.getValue = exports.getQuery = exports.getLoopCounterFailsafe = exports.getActivityObjectsFromMap = exports.fetchLoopCountMax = exports.defaultMinDisplayableActivities = exports.bookendManager = exports.batchSizeIncrementCount = exports.activityManager = void 0;
12
-
13
9
  var _from = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/from"));
14
-
15
10
  var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
16
-
17
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
18
-
19
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
20
-
21
13
  var _last2 = _interopRequireDefault(require("lodash/last"));
22
-
23
14
  var _activities = require("./activities");
24
-
25
15
  var defaultMinDisplayableActivities = 20;
26
16
  exports.defaultMinDisplayableActivities = defaultMinDisplayableActivities;
27
17
  var minBatchSize = 10;
28
18
  exports.minBatchSize = minBatchSize;
29
19
  var fetchLoopCountMax = 100;
30
20
  exports.fetchLoopCountMax = fetchLoopCountMax;
31
- var batchSizeIncrementCount = 10; // use accessors for ease of refactoring underlying implementation
21
+ var batchSizeIncrementCount = 10;
32
22
 
23
+ // use accessors for ease of refactoring underlying implementation
33
24
  /**
34
25
  * @param {Map} destination destination map object for data. Currently a Map, but could be refactored to use any type.
35
26
  * @param {string} key
36
27
  * @param {any} value
37
28
  * @returns {Map}
38
29
  */
39
-
40
30
  exports.batchSizeIncrementCount = batchSizeIncrementCount;
41
-
42
31
  var setValue = function setValue(destination, key, value) {
43
32
  return destination.set(key, value);
44
33
  };
@@ -47,21 +36,15 @@ var setValue = function setValue(destination, key, value) {
47
36
  * @param {string} key
48
37
  * @returns {Map}
49
38
  */
50
-
51
-
52
39
  exports.setValue = setValue;
53
-
54
40
  var getValue = function getValue(source, key) {
55
41
  return source.get(key);
56
42
  };
57
-
58
43
  exports.getValue = getValue;
59
-
60
44
  var getActivityObjectsFromMap = function getActivityObjectsFromMap(hashMap) {
61
45
  return (0, _from.default)(hashMap).map(function (_ref) {
62
46
  var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
63
- activity = _ref2[1];
64
-
47
+ activity = _ref2[1];
65
48
  return activity;
66
49
  });
67
50
  };
@@ -73,20 +56,15 @@ var getActivityObjectsFromMap = function getActivityObjectsFromMap(hashMap) {
73
56
  * getActivityHandlerByKey(activityType) - accepts a key to map to a defined activity handler
74
57
  * getActivityByTypeAndParentId(activityType, parentId) accepts a key and a parent ID to return an activity of that type whose parent is the parentId
75
58
  */
76
-
77
-
78
59
  exports.getActivityObjectsFromMap = getActivityObjectsFromMap;
79
-
80
60
  var activityManager = function activityManager() {
81
61
  var replyActivityHash = new _map.default();
82
62
  var editActivityHash = new _map.default();
83
63
  var reactionActivityHash = new _map.default();
84
64
  var reactionSelfActivityHash = new _map.default();
85
-
86
65
  var handleNewReply = function handleNewReply(replyAct) {
87
66
  var replyParentId = (0, _activities.getParentId)(replyAct);
88
67
  var existingReplyHash = getValue(replyActivityHash, replyParentId);
89
-
90
68
  if (existingReplyHash) {
91
69
  setValue(existingReplyHash, replyAct.id, replyAct);
92
70
  } else {
@@ -95,78 +73,67 @@ var activityManager = function activityManager() {
95
73
  setValue(replyActivityHash, replyParentId, replyHash);
96
74
  }
97
75
  };
98
-
99
76
  var handleNewEdit = function handleNewEdit(editAct) {
100
- var isTombstone = editAct.verb === _activities.ACTIVITY_TYPES.TOMBSTONE; // we can ignore tombstone edits in favor of the newer one
77
+ var isTombstone = editAct.verb === _activities.ACTIVITY_TYPES.TOMBSTONE;
101
78
 
79
+ // we can ignore tombstone edits in favor of the newer one
102
80
  if (isTombstone) {
103
81
  return;
104
82
  }
105
-
106
83
  var editParentId = (0, _activities.getParentId)(editAct);
107
- var existingEdit = getValue(editActivityHash, editParentId); // edited activity must be newer than what we already have
84
+ var existingEdit = getValue(editActivityHash, editParentId);
108
85
 
86
+ // edited activity must be newer than what we already have
109
87
  if (!existingEdit || (0, _activities.isNewer)(editAct, existingEdit)) {
110
88
  setValue(editActivityHash, editParentId, editAct);
111
89
  }
112
- }; // logic is identical between reactions and reaction selfs, so handler simply passes the activity and the correct hash
113
-
90
+ };
114
91
 
92
+ // logic is identical between reactions and reaction selfs, so handler simply passes the activity and the correct hash
115
93
  var reactionHelper = function reactionHelper(reactionAct, hash) {
116
94
  var reactionParentId = (0, _activities.getParentId)(reactionAct);
117
- var existingReaction = getValue(hash, reactionParentId); // reaction activity must be newer than what we already have
95
+ var existingReaction = getValue(hash, reactionParentId);
118
96
 
97
+ // reaction activity must be newer than what we already have
119
98
  if (!existingReaction || (0, _activities.isNewer)(reactionAct, existingReaction)) {
120
99
  setValue(hash, reactionParentId, reactionAct);
121
100
  }
122
101
  };
123
-
124
102
  var handleNewReaction = function handleNewReaction(reactionAct) {
125
103
  reactionHelper(reactionAct, reactionActivityHash);
126
104
  };
127
-
128
105
  var handleNewReactionSelf = function handleNewReactionSelf(reactionSelfAct) {
129
106
  reactionHelper(reactionSelfAct, reactionSelfActivityHash);
130
107
  };
131
-
132
108
  var getActivityHandlerByKey = function getActivityHandlerByKey(key) {
133
109
  var _ACTIVITY_TYPES$REACT;
134
-
135
110
  return (_ACTIVITY_TYPES$REACT = {}, (0, _defineProperty2.default)(_ACTIVITY_TYPES$REACT, _activities.ACTIVITY_TYPES.REACTION, handleNewReaction), (0, _defineProperty2.default)(_ACTIVITY_TYPES$REACT, _activities.ACTIVITY_TYPES.REACTION_SELF, handleNewReactionSelf), (0, _defineProperty2.default)(_ACTIVITY_TYPES$REACT, _activities.ACTIVITY_TYPES.EDIT, handleNewEdit), (0, _defineProperty2.default)(_ACTIVITY_TYPES$REACT, _activities.ACTIVITY_TYPES.REPLY, handleNewReply), _ACTIVITY_TYPES$REACT)[key];
136
111
  };
137
-
138
112
  var getActivityByTypeAndParentId = function getActivityByTypeAndParentId(type, id) {
139
113
  var _ACTIVITY_TYPES$EDIT$;
140
-
141
114
  return (_ACTIVITY_TYPES$EDIT$ = {}, (0, _defineProperty2.default)(_ACTIVITY_TYPES$EDIT$, _activities.ACTIVITY_TYPES.EDIT, getValue(editActivityHash, id)), (0, _defineProperty2.default)(_ACTIVITY_TYPES$EDIT$, _activities.ACTIVITY_TYPES.REPLY, getValue(replyActivityHash, id)), (0, _defineProperty2.default)(_ACTIVITY_TYPES$EDIT$, _activities.ACTIVITY_TYPES.REACTION, getValue(reactionActivityHash, id)), (0, _defineProperty2.default)(_ACTIVITY_TYPES$EDIT$, _activities.ACTIVITY_TYPES.REACTION_SELF, getValue(reactionSelfActivityHash, id)), _ACTIVITY_TYPES$EDIT$)[type];
142
115
  };
143
-
144
116
  return {
145
117
  getActivityHandlerByKey: getActivityHandlerByKey,
146
118
  getActivityByTypeAndParentId: getActivityByTypeAndParentId
147
119
  };
148
120
  };
121
+
149
122
  /**
150
123
  * encapsulates state and logic for managing oldest and newest activities
151
124
  * @returns {object} setters and getters for activity state management
152
125
  */
153
-
154
-
155
126
  exports.activityManager = activityManager;
156
-
157
127
  var bookendManager = function bookendManager() {
158
128
  // keep track of generator state, like what our current oldest & newest activities are
159
129
  var oldestAct;
160
130
  var newestAct;
161
-
162
131
  var getOldestAct = function getOldestAct() {
163
132
  return oldestAct;
164
133
  };
165
-
166
134
  var getNewestAct = function getNewestAct() {
167
135
  return newestAct;
168
136
  };
169
-
170
137
  var setOldestAct = function setOldestAct(act) {
171
138
  if (!oldestAct) {
172
139
  oldestAct = act;
@@ -174,7 +141,6 @@ var bookendManager = function bookendManager() {
174
141
  oldestAct = act;
175
142
  }
176
143
  };
177
-
178
144
  var setNewestAct = function setNewestAct(act) {
179
145
  if (!newestAct) {
180
146
  newestAct = act;
@@ -182,7 +148,6 @@ var bookendManager = function bookendManager() {
182
148
  newestAct = act;
183
149
  }
184
150
  };
185
-
186
151
  var setBookends = function setBookends(activities) {
187
152
  var oldestActsFirst = (0, _activities.sortActivitiesByPublishedDate)(activities);
188
153
  var newestInBatch = (0, _last2.default)(oldestActsFirst);
@@ -190,50 +155,42 @@ var bookendManager = function bookendManager() {
190
155
  setOldestAct(oldestInBatch);
191
156
  setNewestAct(newestInBatch);
192
157
  };
193
-
194
158
  return {
195
159
  setBookends: setBookends,
196
160
  getNewestAct: getNewestAct,
197
161
  getOldestAct: getOldestAct
198
162
  };
199
163
  };
164
+
200
165
  /**
201
166
  * encapsulates state and logic for when there are no more fetchable activities from convo
202
167
  * @returns {object} setters and getters for no more activities logic
203
168
  */
204
-
205
-
206
169
  exports.bookendManager = bookendManager;
207
-
208
170
  var noMoreActivitiesManager = function noMoreActivitiesManager() {
209
171
  // used to determine if we should continue to fetch older activities
210
172
  // must be set per iteration, as querying newer activities is still valid when all end of convo has been reached
211
173
  var noMoreActs = false;
212
174
  var noOlderActs = false;
213
175
  var noNewerActs = false;
214
-
215
176
  var getNoMoreActs = function getNoMoreActs() {
216
177
  return noMoreActs;
217
178
  };
218
-
219
179
  var checkAndSetNoOlderActs = function checkAndSetNoOlderActs(act) {
220
180
  if (!noOlderActs && (0, _activities.getActivityType)(act) === _activities.ACTIVITY_TYPES.CREATE) {
221
181
  noOlderActs = true;
222
182
  }
223
183
  };
224
-
225
184
  var checkAndSetNoNewerActs = function checkAndSetNoNewerActs(activities) {
226
185
  if (!activities || !activities.length) {
227
186
  noNewerActs = true;
228
187
  }
229
188
  };
230
-
231
189
  var checkAndSetNoMoreActs = function checkAndSetNoMoreActs(queryType, visibleActs, currentBatchSize) {
232
190
  if (queryType === _activities.NEWER && noNewerActs || (queryType === _activities.OLDER || queryType === _activities.INITIAL) && noOlderActs || queryType === _activities.MID && visibleActs < currentBatchSize && noOlderActs) {
233
191
  noMoreActs = true;
234
192
  }
235
193
  };
236
-
237
194
  return {
238
195
  getNoMoreActs: getNoMoreActs,
239
196
  checkAndSetNoMoreActs: checkAndSetNoMoreActs,
@@ -241,43 +198,36 @@ var noMoreActivitiesManager = function noMoreActivitiesManager() {
241
198
  checkAndSetNoOlderActs: checkAndSetNoOlderActs
242
199
  };
243
200
  };
201
+
244
202
  /**
245
203
  * encapsulates state and logic for managing root activities
246
204
  * @returns {object} setters and getters for activity state management
247
205
  */
248
-
249
-
250
206
  exports.noMoreActivitiesManager = noMoreActivitiesManager;
251
-
252
207
  var rootActivityManager = function rootActivityManager() {
253
208
  var rootActivityHash = new _map.default();
254
-
255
209
  var addNewRoot = function addNewRoot(rootAct) {
256
210
  setValue(rootActivityHash, rootAct.id, rootAct);
257
211
  };
258
-
259
212
  var getRootActivityHash = function getRootActivityHash() {
260
213
  return rootActivityHash;
261
214
  };
262
-
263
215
  return {
264
216
  addNewRoot: addNewRoot,
265
217
  getRootActivityHash: getRootActivityHash
266
218
  };
267
219
  };
268
-
269
220
  exports.rootActivityManager = rootActivityManager;
270
-
271
221
  var getLoopCounterFailsafe = function getLoopCounterFailsafe() {
272
222
  var fetchLoopCount = 0;
273
223
  return function () {
274
224
  fetchLoopCount += 1;
275
-
276
225
  if (fetchLoopCount > fetchLoopCountMax) {
277
226
  throw new Error('max fetches reached');
278
227
  }
279
228
  };
280
229
  };
230
+
281
231
  /**
282
232
  * creates activity query object
283
233
  * @param {string} type type of query to create
@@ -288,17 +238,13 @@ var getLoopCounterFailsafe = function getLoopCounterFailsafe() {
288
238
  * @param {object} [queryOptions.activityToSearch] a server activity to use to build middate query
289
239
  * @returns {object}
290
240
  */
291
-
292
-
293
241
  exports.getLoopCounterFailsafe = getLoopCounterFailsafe;
294
-
295
242
  var getQuery = function getQuery(type, queryOptions) {
296
243
  var newestPublishedDate = queryOptions.newestPublishedDate,
297
- oldestPublishedDate = queryOptions.oldestPublishedDate,
298
- batchSize = queryOptions.batchSize,
299
- _queryOptions$activit = queryOptions.activityToSearch,
300
- activityToSearch = _queryOptions$activit === void 0 ? {} : _queryOptions$activit;
301
-
244
+ oldestPublishedDate = queryOptions.oldestPublishedDate,
245
+ batchSize = queryOptions.batchSize,
246
+ _queryOptions$activit = queryOptions.activityToSearch,
247
+ activityToSearch = _queryOptions$activit === void 0 ? {} : _queryOptions$activit;
302
248
  switch (type) {
303
249
  case _activities.NEWER:
304
250
  {
@@ -309,24 +255,20 @@ var getQuery = function getQuery(type, queryOptions) {
309
255
  lastActivityFirst: lastActivityFirst
310
256
  };
311
257
  }
312
-
313
258
  case _activities.MID:
314
259
  {
315
260
  var searchType = (0, _activities.getActivityType)(activityToSearch);
316
261
  var midDate;
317
-
318
262
  if (searchType === _activities.ACTIVITY_TYPES.REPLY || searchType === _activities.ACTIVITY_TYPES.EDIT) {
319
263
  midDate = activityToSearch.parent.published;
320
264
  } else {
321
265
  midDate = activityToSearch.published;
322
266
  }
323
-
324
267
  return {
325
268
  midDate: midDate,
326
269
  limit: batchSize
327
270
  };
328
271
  }
329
-
330
272
  case _activities.OLDER:
331
273
  {
332
274
  var maxDate = oldestPublishedDate - 1;
@@ -334,7 +276,6 @@ var getQuery = function getQuery(type, queryOptions) {
334
276
  maxDate: maxDate
335
277
  };
336
278
  }
337
-
338
279
  case _activities.INITIAL:
339
280
  default:
340
281
  {
@@ -342,6 +283,5 @@ var getQuery = function getQuery(type, queryOptions) {
342
283
  }
343
284
  }
344
285
  };
345
-
346
286
  exports.getQuery = getQuery;
347
287
  //# sourceMappingURL=activity-thread-ordering.js.map