@nlabs/reaktor 0.4.0 → 0.4.1

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 (151) hide show
  1. package/lib/actions/conversations.d.ts +14 -0
  2. package/lib/actions/conversations.js +333 -0
  3. package/lib/actions/dynamodb.js +155 -0
  4. package/lib/actions/email.js +177 -0
  5. package/lib/actions/files.js +319 -0
  6. package/lib/{data → actions}/groups.d.ts +4 -3
  7. package/lib/actions/groups.js +282 -0
  8. package/lib/actions/images.d.ts +22 -0
  9. package/lib/actions/images.js +682 -0
  10. package/lib/actions/index.js +40 -0
  11. package/lib/{data → actions}/ios.d.ts +2 -1
  12. package/lib/actions/ios.js +179 -0
  13. package/lib/actions/locations.js +112 -0
  14. package/lib/actions/messages.d.ts +13 -0
  15. package/lib/actions/messages.js +216 -0
  16. package/lib/{data → actions}/notifications.d.ts +2 -2
  17. package/lib/actions/notifications.js +63 -0
  18. package/lib/{data → actions}/payments.d.ts +2 -2
  19. package/lib/actions/payments.js +491 -0
  20. package/lib/actions/posts.d.ts +19 -0
  21. package/lib/actions/posts.js +538 -0
  22. package/lib/actions/reactions.d.ts +30 -0
  23. package/lib/actions/reactions.js +340 -0
  24. package/lib/{data → actions}/s3.d.ts +1 -1
  25. package/lib/actions/s3.js +122 -0
  26. package/lib/{data → actions}/search.d.ts +2 -2
  27. package/lib/actions/search.js +99 -0
  28. package/lib/actions/sms.js +76 -0
  29. package/lib/actions/statistics.d.ts +2 -0
  30. package/lib/actions/statistics.js +63 -0
  31. package/lib/actions/subscription.js +209 -0
  32. package/lib/actions/tags.d.ts +26 -0
  33. package/lib/actions/tags.js +340 -0
  34. package/lib/actions/users.d.ts +44 -0
  35. package/lib/actions/users.js +571 -0
  36. package/lib/{data → actions}/websockets.d.ts +1 -1
  37. package/lib/actions/websockets.js +156 -0
  38. package/lib/config.d.ts +2 -3
  39. package/lib/config.js +116 -149
  40. package/lib/index.d.ts +1 -1
  41. package/lib/index.js +23 -45
  42. package/lib/templates/email/layout.d.ts +2 -0
  43. package/lib/templates/email/layout.js +292 -0
  44. package/lib/templates/email/passwordForgot.d.ts +2 -0
  45. package/lib/templates/email/passwordForgot.js +28 -0
  46. package/lib/templates/email/passwordRecovery.d.ts +2 -0
  47. package/lib/templates/email/passwordRecovery.js +25 -0
  48. package/lib/templates/email/verifyEmail.d.ts +2 -0
  49. package/lib/templates/email/verifyEmail.js +28 -0
  50. package/lib/templates/email/welcome.d.ts +2 -0
  51. package/lib/templates/email/welcome.js +28 -0
  52. package/lib/templates/sms/passwordForgot.d.ts +2 -0
  53. package/lib/templates/sms/passwordForgot.js +14 -0
  54. package/lib/templates/sms/passwordRecovery.d.ts +2 -0
  55. package/lib/templates/sms/passwordRecovery.js +14 -0
  56. package/lib/templates/sms/verifyEmail.d.ts +2 -0
  57. package/lib/templates/sms/verifyEmail.js +14 -0
  58. package/lib/templates/sms/verifyPhone.d.ts +2 -0
  59. package/lib/templates/sms/verifyPhone.js +14 -0
  60. package/lib/templates/sms/welcome.d.ts +2 -0
  61. package/lib/templates/sms/welcome.js +14 -0
  62. package/lib/types/apps.d.ts +2 -2
  63. package/lib/types/apps.js +4 -2
  64. package/lib/types/arangodb.js +4 -2
  65. package/lib/types/auth.d.ts +4 -8
  66. package/lib/types/auth.js +4 -2
  67. package/lib/types/conversations.d.ts +3 -3
  68. package/lib/types/conversations.js +4 -2
  69. package/lib/types/email.d.ts +2 -2
  70. package/lib/types/email.js +4 -2
  71. package/lib/types/files.js +4 -2
  72. package/lib/types/google.js +4 -2
  73. package/lib/types/groups.d.ts +2 -1
  74. package/lib/types/groups.js +4 -2
  75. package/lib/types/images.d.ts +8 -5
  76. package/lib/types/images.js +4 -2
  77. package/lib/types/index.d.ts +1 -1
  78. package/lib/types/index.js +37 -227
  79. package/lib/types/locations.js +4 -2
  80. package/lib/types/messages.d.ts +12 -2
  81. package/lib/types/messages.js +4 -2
  82. package/lib/types/notifications.d.ts +2 -2
  83. package/lib/types/notifications.js +4 -2
  84. package/lib/types/payments.js +4 -2
  85. package/lib/types/posts.d.ts +18 -1
  86. package/lib/types/posts.js +4 -2
  87. package/lib/types/statistics.d.ts +3 -0
  88. package/lib/types/statistics.js +4 -0
  89. package/lib/types/tags.d.ts +6 -0
  90. package/lib/types/tags.js +4 -2
  91. package/lib/types/users.d.ts +15 -11
  92. package/lib/types/users.js +4 -2
  93. package/lib/utils/analytics.d.ts +7 -0
  94. package/lib/utils/analytics.js +101 -77
  95. package/lib/utils/arangodb.d.ts +1 -1
  96. package/lib/utils/arangodb.js +93 -114
  97. package/lib/utils/auth.js +58 -55
  98. package/lib/utils/graphql.js +38 -19
  99. package/lib/utils/index.d.ts +1 -1
  100. package/lib/utils/index.js +26 -84
  101. package/lib/utils/objects.js +44 -53
  102. package/lib/utils/session.d.ts +18 -0
  103. package/lib/utils/session.js +42 -0
  104. package/package.json +32 -30
  105. package/lib/data/conversations.d.ts +0 -8
  106. package/lib/data/conversations.js +0 -311
  107. package/lib/data/dynamodb.js +0 -206
  108. package/lib/data/email.js +0 -222
  109. package/lib/data/files.js +0 -525
  110. package/lib/data/groups.js +0 -435
  111. package/lib/data/images.d.ts +0 -22
  112. package/lib/data/images.js +0 -1051
  113. package/lib/data/index.js +0 -266
  114. package/lib/data/ios.js +0 -355
  115. package/lib/data/locations.js +0 -172
  116. package/lib/data/messages.d.ts +0 -9
  117. package/lib/data/messages.js +0 -299
  118. package/lib/data/notifications.js +0 -59
  119. package/lib/data/payments.js +0 -771
  120. package/lib/data/posts.d.ts +0 -23
  121. package/lib/data/posts.js +0 -766
  122. package/lib/data/reactions.d.ts +0 -14
  123. package/lib/data/reactions.js +0 -529
  124. package/lib/data/s3.js +0 -155
  125. package/lib/data/search.js +0 -155
  126. package/lib/data/sms.js +0 -83
  127. package/lib/data/subscription.js +0 -337
  128. package/lib/data/tags.d.ts +0 -14
  129. package/lib/data/tags.js +0 -397
  130. package/lib/data/users.d.ts +0 -20
  131. package/lib/data/users.js +0 -470
  132. package/lib/data/websockets.js +0 -250
  133. package/lib/types/reactions.d.ts +0 -17
  134. package/lib/types/reactions.js +0 -2
  135. package/lib/utils/redis.d.ts +0 -1
  136. package/lib/utils/redis.js +0 -36
  137. package/templates/email/layout.html +0 -279
  138. package/templates/email/passwordForgot.html +0 -15
  139. package/templates/email/passwordRecovery.html +0 -12
  140. package/templates/email/verifyEmail.html +0 -15
  141. package/templates/sms/passwordForgot.txt +0 -1
  142. package/templates/sms/passwordRecovery.txt +0 -1
  143. package/templates/sms/verifyEmail.txt +0 -1
  144. package/templates/sms/verifyPhone.txt +0 -1
  145. /package/lib/{data → actions}/dynamodb.d.ts +0 -0
  146. /package/lib/{data → actions}/email.d.ts +0 -0
  147. /package/lib/{data → actions}/files.d.ts +0 -0
  148. /package/lib/{data → actions}/index.d.ts +0 -0
  149. /package/lib/{data → actions}/locations.d.ts +0 -0
  150. /package/lib/{data → actions}/sms.d.ts +0 -0
  151. /package/lib/{data → actions}/subscription.d.ts +0 -0
@@ -1,435 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.symbol");
4
-
5
- require("core-js/modules/es.symbol.description");
6
-
7
- require("core-js/modules/es.array.concat");
8
-
9
- require("core-js/modules/es.array.iterator");
10
-
11
- require("core-js/modules/es.array.map");
12
-
13
- require("core-js/modules/es.array.slice");
14
-
15
- require("core-js/modules/es.date.now");
16
-
17
- require("core-js/modules/es.date.to-string");
18
-
19
- require("core-js/modules/es.function.name");
20
-
21
- require("core-js/modules/es.object.define-properties");
22
-
23
- require("core-js/modules/es.object.freeze");
24
-
25
- require("core-js/modules/es.object.to-string");
26
-
27
- require("core-js/modules/es.promise");
28
-
29
- require("core-js/modules/es.string.iterator");
30
-
31
- require("core-js/modules/web.dom-collections.iterator");
32
-
33
- Object.defineProperty(exports, "__esModule", {
34
- value: true
35
- });
36
- exports.isGrouped = exports.getGroupsByReaction = exports.deleteGroup = exports.updateGroup = exports.addGroup = exports.createGroupEdge = exports.getGroupDetails = exports.getGroup = exports.getGroupListByTags = exports.getGroupListByUser = exports.getGroupList = void 0;
37
-
38
- var _utils = require("@nlabs/utils");
39
-
40
- var _arangojs = require("arangojs");
41
-
42
- var _flatten = _interopRequireDefault(require("lodash/flatten"));
43
-
44
- var _uniqBy = _interopRequireDefault(require("lodash/uniqBy"));
45
-
46
- var _utils2 = require("../utils");
47
-
48
- var _tags = require("./tags");
49
-
50
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
51
-
52
- function _templateObject7() {
53
- var data = _taggedTemplateLiteral(["FOR g IN groups\n FILTER g._key == ", "\n FOR u IN INBOUND g._id isGrouped\n FILTER u._key == ", "\n LIMIT 1\n RETURN u"]);
54
-
55
- _templateObject7 = function _templateObject7() {
56
- return data;
57
- };
58
-
59
- return data;
60
- }
61
-
62
- function _templateObject6() {
63
- var data = _taggedTemplateLiteral(["FOR u, r IN OUTBOUND ", " hasReaction\n FILTER r.value == ", "\n COLLECT reactionName = r.value INTO reactionItems\n RETURN {value: reactionName, count: LENGTH(reactionItems[*].r.value)}"]);
64
-
65
- _templateObject6 = function _templateObject6() {
66
- return data;
67
- };
68
-
69
- return data;
70
- }
71
-
72
- function _templateObject5() {
73
- var data = _taggedTemplateLiteral(["FOR g IN groups\n FILTER g._key == ", "\n REMOVE g IN groups\n RETURN OLD"]);
74
-
75
- _templateObject5 = function _templateObject5() {
76
- return data;
77
- };
78
-
79
- return data;
80
- }
81
-
82
- function _templateObject4() {
83
- var data = _taggedTemplateLiteral(["UPDATE ", " WITH ", " IN groups RETURN NEW"]);
84
-
85
- _templateObject4 = function _templateObject4() {
86
- return data;
87
- };
88
-
89
- return data;
90
- }
91
-
92
- function _templateObject3() {
93
- var data = _taggedTemplateLiteral(["INSERT ", " IN groups RETURN NEW"]);
94
-
95
- _templateObject3 = function _templateObject3() {
96
- return data;
97
- };
98
-
99
- return data;
100
- }
101
-
102
- function _templateObject2() {
103
- var data = _taggedTemplateLiteral(["FOR g IN groups\n FILTER g._key == ", "\n LIMIT 1\n RETURN g"]);
104
-
105
- _templateObject2 = function _templateObject2() {
106
- return data;
107
- };
108
-
109
- return data;
110
- }
111
-
112
- function _templateObject() {
113
- var data = _taggedTemplateLiteral(["FOR g, e IN INBOUND ", " isGrouped\n FILTER g._key == ", "\n LET users = (\n FOR u, l IN OUTBOUND g._id isGrouped\n RETURN MERGE (u, {type:l.type})\n )\n LIMIT 1\n RETURN DISTINCT MERGE(g, {users:users})"]);
114
-
115
- _templateObject = function _templateObject() {
116
- return data;
117
- };
118
-
119
- return data;
120
- }
121
-
122
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
123
-
124
- /**
125
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
126
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
127
- */
128
- var eventCategory = 'groups';
129
-
130
- var getGroupList = function getGroupList(context, from, to) {
131
- var action = 'getListByApp';
132
- var database = context.database;
133
- var limit = (0, _utils2.getLimit)(from, to);
134
- var aqlQry = "FOR g in groups\n LET users = (\n FOR u, l IN OUTBOUND g._id isGrouped\n RETURN MERGE (u, {type:l.type})\n )\n ".concat(limit.aql, "\n SORT g.added\n RETURN DISTINCT MERGE(g, {users:users})");
135
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
136
- return cursor.all();
137
- })["catch"](function (error) {
138
- return (0, _utils2.logError)({
139
- action: action,
140
- category: eventCategory,
141
- label: 'db_error'
142
- }, error, context).then(function () {
143
- return null;
144
- });
145
- });
146
- };
147
-
148
- exports.getGroupList = getGroupList;
149
-
150
- var getGroupListByUser = function getGroupListByUser(context, from, to) {
151
- // const action: string = 'getListByUser';
152
- var database = context.database,
153
- sessionId = context.userId;
154
- var limit = (0, _utils2.getLimit)(from, to);
155
- var aqlQry = "FOR g, e IN INBOUND \"".concat("users/".concat(sessionId), "\" isGrouped\n LET users = (\n FOR u, l IN OUTBOUND g._id isGrouped\n RETURN MERGE (u, {type:l.type})\n )\n ", limit.aql, "\n SORT g.added\n RETURN DISTINCT MERGE(g, {users:users})");
156
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
157
- return cursor.all();
158
- })["catch"](function (error) {
159
- throw error;
160
- });
161
- };
162
-
163
- exports.getGroupListByUser = getGroupListByUser;
164
-
165
- var getGroupListByTags = function getGroupListByTags(context, tags, from, to) {
166
- var action = 'getListByTags';
167
- var database = context.database;
168
- return Promise.all((tags || []).map(function (tagName) {
169
- var formatTagName = (0, _utils.parseId)(tagName);
170
- var limit = (0, _utils2.getLimit)(from, to);
171
- var aqlQry = "FOR p, e IN OUTBOUND \"".concat("tags/".concat(formatTagName), "\" isTagged\n FOR u IN users\n LET likes = (\n FOR post, like IN INBOUND p._id likes\n FILTER like.value == 'like'\n RETURN like\n )\n LET dislikes = (\n FOR post, like IN INBOUND p._id likes\n FILTER like.value == 'dislike'\n RETURN like\n )\n FILTER e.type == 'post' && p.userId == u._key\n ", limit.aql, "\n SORT p.added\n RETURN DISTINCT MERGE(p, {user:u, likes:LENGTH(likes), dislikes:LENGTH(dislikes)})");
172
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
173
- return cursor.all();
174
- });
175
- })).then(function (results) {
176
- return (0, _uniqBy["default"])((0, _flatten["default"])(results), '_key');
177
- })["catch"](function (error) {
178
- return (0, _utils2.logError)({
179
- action: action,
180
- category: eventCategory,
181
- label: 'db_error'
182
- }, error, context).then(function () {
183
- return null;
184
- });
185
- });
186
- };
187
-
188
- exports.getGroupListByTags = getGroupListByTags;
189
-
190
- var getGroup = function getGroup(context, itemId) {
191
- var action = 'getItem';
192
- var database = context.database,
193
- sessionId = context.userId;
194
- var formatItemId = (0, _utils.parseId)(itemId);
195
- var aqlQry = (0, _arangojs.aql)(_templateObject(), "users/".concat(sessionId), formatItemId);
196
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
197
- return cursor.next();
198
- }).then(function () {
199
- var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
200
- return group;
201
- })["catch"](function (error) {
202
- return (0, _utils2.logError)({
203
- action: action,
204
- category: eventCategory,
205
- label: 'db_error'
206
- }, error, context).then(function () {
207
- return null;
208
- });
209
- });
210
- };
211
-
212
- exports.getGroup = getGroup;
213
-
214
- var getGroupDetails = function getGroupDetails(context, groupId) {
215
- var action = 'getDetails';
216
- var database = context.database;
217
- var formatGroupId = (0, _utils.parseId)(groupId);
218
- var aqlQry = (0, _arangojs.aql)(_templateObject2(), formatGroupId);
219
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
220
- return cursor.next();
221
- }).then(function () {
222
- var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
223
- return group;
224
- })["catch"](function (error) {
225
- return (0, _utils2.logError)({
226
- action: action,
227
- category: eventCategory,
228
- label: 'db_error'
229
- }, error, context).then(function () {
230
- return null;
231
- });
232
- });
233
- };
234
-
235
- exports.getGroupDetails = getGroupDetails;
236
-
237
- var createGroupEdge = function createGroupEdge(database, userId, groupId, type) {
238
- var action = 'createGroupEdge';
239
- var formatUserId = (0, _utils.parseId)(userId);
240
- var formatGroupId = (0, _utils.parseId)(groupId);
241
- var formatType = (0, _utils.parseChar)(type, 16);
242
- var now = Date.now();
243
- var edgeCollection = (0, _utils2.useDb)(database).collection('isGrouped');
244
- var edgeId = (0, _utils.createHash)("group-".concat(formatUserId, "-").concat(formatGroupId));
245
- var edge = {
246
- _from: "users/".concat(formatUserId),
247
- _key: edgeId,
248
- _to: "groups/".concat(formatGroupId),
249
- added: now,
250
- type: formatType
251
- };
252
- return edgeCollection.save(edge, {
253
- returnNew: true
254
- })["catch"](function (error) {
255
- return (0, _utils2.logError)({
256
- action: action,
257
- category: eventCategory,
258
- label: 'db_error'
259
- }, error, {
260
- id: formatUserId
261
- }).then(function () {
262
- return null;
263
- });
264
- });
265
- };
266
-
267
- exports.createGroupEdge = createGroupEdge;
268
-
269
- var addGroup = function addGroup(context) {
270
- var item = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
271
- var action = 'add';
272
- var database = context.database,
273
- sessionId = context.userId;
274
- var now = Date.now();
275
- var _item$description = item.description,
276
- description = _item$description === void 0 ? '' : _item$description,
277
- _item$name = item.name,
278
- name = _item$name === void 0 ? 'Untitled' : _item$name,
279
- type = item.type;
280
- var id = (0, _utils.createHash)("group-".concat(sessionId));
281
- var formatDesc = description.substr(0, 640);
282
- var formatType = (0, _utils.parseChar)(type, 16) || 'private';
283
- var insert = {
284
- _key: id,
285
- added: now,
286
- description: formatDesc,
287
- modified: now,
288
- name: name,
289
- type: formatType
290
- };
291
- var db = (0, _utils2.useDb)(database);
292
- var aqlQry = (0, _arangojs.aql)(_templateObject3(), insert);
293
- return db.query(aqlQry).then(function (cursor) {
294
- return cursor.next();
295
- }).then(function () {
296
- var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
297
- var itemType = 'groups'; // Update linked tags
298
-
299
- var groupId = group._key;
300
- return (0, _tags.extractTags)(db, itemType, groupId, formatDesc).then(function () {
301
- return createGroupEdge(database, sessionId, groupId, 'admin').then(function () {
302
- return group;
303
- });
304
- });
305
- })["catch"](function (error) {
306
- return (0, _utils2.logError)({
307
- action: action,
308
- category: eventCategory,
309
- label: 'db_error'
310
- }, error, context).then(function () {
311
- return null;
312
- });
313
- });
314
- };
315
-
316
- exports.addGroup = addGroup;
317
-
318
- var updateGroup = function updateGroup(context) {
319
- var item = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
320
- var action = 'update';
321
- var database = context.database;
322
- var _item$description2 = item.description,
323
- description = _item$description2 === void 0 ? '' : _item$description2,
324
- id = item.id,
325
- _item$name2 = item.name,
326
- name = _item$name2 === void 0 ? 'Untitled' : _item$name2;
327
- var itemId = (0, _utils.parseId)(id);
328
- var now = Date.now();
329
- var formatDesc = description.substr(0, 640);
330
- var update = {
331
- description: formatDesc,
332
- modified: now,
333
- name: name
334
- };
335
- var db = (0, _utils2.useDb)(database);
336
- var aqlQry = (0, _arangojs.aql)(_templateObject4(), itemId, update);
337
- return db.query(aqlQry).then(function (cursor) {
338
- return cursor.next();
339
- }).then(function () {
340
- var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
341
- var groupKey = group._key;
342
- var itemType = 'groups'; // Update linked tags
343
-
344
- return (0, _tags.extractTags)(db, itemType, groupKey, description).then(function () {
345
- return group;
346
- });
347
- })["catch"](function (error) {
348
- return (0, _utils2.logError)({
349
- action: action,
350
- category: eventCategory,
351
- label: 'db_error'
352
- }, error, context).then(function () {
353
- return null;
354
- });
355
- });
356
- };
357
-
358
- exports.updateGroup = updateGroup;
359
-
360
- var deleteGroup = function deleteGroup(context, itemId) {
361
- var action = 'delete';
362
- var database = context.database;
363
- var formatItemId = (0, _utils.parseId)(itemId);
364
- var aqlQry = (0, _arangojs.aql)(_templateObject5(), formatItemId);
365
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
366
- return cursor.next();
367
- }).then(function () {
368
- var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
369
- return group;
370
- })["catch"](function (error) {
371
- return (0, _utils2.logError)({
372
- action: action,
373
- category: eventCategory,
374
- label: 'db_error'
375
- }, error, context).then(function () {
376
- return null;
377
- });
378
- });
379
- };
380
-
381
- exports.deleteGroup = deleteGroup;
382
-
383
- var getGroupsByReaction = function getGroupsByReaction(context, reaction) {
384
- var action = 'getGroupsByReaction';
385
- var database = context.database,
386
- sessionId = context.userId;
387
- var formatReaction = (0, _utils.parseChar)(reaction, 32);
388
- var userDocId = "users/".concat(sessionId); // Query
389
-
390
- var aqlQry = (0, _arangojs.aql)(_templateObject6(), userDocId, formatReaction);
391
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
392
- return cursor.all();
393
- })["catch"](function (error) {
394
- return (0, _utils2.logError)({
395
- action: action,
396
- category: eventCategory,
397
- label: 'db_error'
398
- }, error, context).then(function () {
399
- return null;
400
- });
401
- });
402
- };
403
-
404
- exports.getGroupsByReaction = getGroupsByReaction;
405
-
406
- var isGrouped = function isGrouped(database, userId, groupId) {
407
- var action = 'isGrouped';
408
- var formatUserId = (0, _utils.parseId)(userId);
409
- var formatGroupId = (0, _utils.parseId)(groupId);
410
- var aqlQry = (0, _arangojs.aql)(_templateObject7(), formatGroupId, formatUserId);
411
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
412
- return cursor.all();
413
- }).then(function () {
414
- var results = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
415
- var isValid = !!results.length;
416
- return {
417
- groupId: groupId,
418
- isValid: isValid,
419
- userId: userId
420
- };
421
- })["catch"](function (error) {
422
- return (0, _utils2.logError)({
423
- action: action,
424
- category: eventCategory,
425
- label: 'db_error'
426
- }, error, {
427
- id: userId
428
- }).then(function () {
429
- return null;
430
- });
431
- });
432
- };
433
-
434
- exports.isGrouped = isGrouped;
435
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2dyb3Vwcy50cyJdLCJuYW1lcyI6WyJldmVudENhdGVnb3J5IiwiZ2V0R3JvdXBMaXN0IiwiY29udGV4dCIsImZyb20iLCJ0byIsImFjdGlvbiIsImRhdGFiYXNlIiwibGltaXQiLCJhcWxRcnkiLCJhcWwiLCJxdWVyeSIsInRoZW4iLCJjdXJzb3IiLCJhbGwiLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJnZXRHcm91cExpc3RCeVVzZXIiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJnZXRHcm91cExpc3RCeVRhZ3MiLCJ0YWdzIiwiUHJvbWlzZSIsIm1hcCIsInRhZ05hbWUiLCJmb3JtYXRUYWdOYW1lIiwicmVzdWx0cyIsImdldEdyb3VwIiwiaXRlbUlkIiwiZm9ybWF0SXRlbUlkIiwibmV4dCIsImdyb3VwIiwiZ2V0R3JvdXBEZXRhaWxzIiwiZ3JvdXBJZCIsImZvcm1hdEdyb3VwSWQiLCJjcmVhdGVHcm91cEVkZ2UiLCJ0eXBlIiwiZm9ybWF0VXNlcklkIiwiZm9ybWF0VHlwZSIsIm5vdyIsIkRhdGUiLCJlZGdlQ29sbGVjdGlvbiIsImNvbGxlY3Rpb24iLCJlZGdlSWQiLCJlZGdlIiwiX2Zyb20iLCJfa2V5IiwiX3RvIiwiYWRkZWQiLCJzYXZlIiwicmV0dXJuTmV3IiwiaWQiLCJhZGRHcm91cCIsIml0ZW0iLCJkZXNjcmlwdGlvbiIsIm5hbWUiLCJmb3JtYXREZXNjIiwic3Vic3RyIiwiaW5zZXJ0IiwibW9kaWZpZWQiLCJkYiIsIml0ZW1UeXBlIiwidXBkYXRlR3JvdXAiLCJ1cGRhdGUiLCJncm91cEtleSIsImRlbGV0ZUdyb3VwIiwiZ2V0R3JvdXBzQnlSZWFjdGlvbiIsInJlYWN0aW9uIiwiZm9ybWF0UmVhY3Rpb24iLCJ1c2VyRG9jSWQiLCJpc0dyb3VwZWQiLCJpc1ZhbGlkIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBSUE7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QUFBQSxXQUF5QkEsTUFBTSxDQUFDQyxHQUFQLEVBQXpCO0FBQUEsR0FERCxFQUVKRixJQUZJLENBRUMsWUFBa0I7QUFBQSxRQUFqQmUsT0FBaUIsdUVBQVAsRUFBTztBQUN0QixRQUFNNkMsT0FBTyxHQUFHLENBQUMsQ0FBQzdDLE9BQU8sQ0FBQzhDLE1BQTFCO0FBRUEsV0FBTztBQUNMdkMsTUFBQUEsT0FBTyxFQUFQQSxPQURLO0FBRUxzQyxNQUFBQSxPQUFPLEVBQVBBLE9BRks7QUFHTHBELE1BQUFBLE1BQU0sRUFBTkE7QUFISyxLQUFQO0FBS0QsR0FWSSxXQVdFLFVBQUNMLEtBQUQ7QUFBQSxXQUFrQixzQkFBUztBQUNoQ1QsTUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ1UsTUFBQUEsUUFBUSxFQUFFZixhQUZzQjtBQUdoQ2dCLE1BQUFBLEtBQUssRUFBRTtBQUh5QixLQUFULEVBSXRCRixLQUpzQixFQUlmO0FBQUNxQyxNQUFBQSxFQUFFLEVBQUVoQztBQUFMLEtBSmUsRUFJRFIsSUFKQyxDQUlJO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FKSixDQUFsQjtBQUFBLEdBWEYsQ0FBUDtBQWdCRCxDQTNCTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VDaGFyLCBwYXJzZUlkfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWwsIERhdGFiYXNlfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IHtFZGdlQ29sbGVjdGlvbn0gZnJvbSAnYXJhbmdvanMvY29sbGVjdGlvbic7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9jdXJzb3InO1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoL2ZsYXR0ZW4nO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtHcm91cEVkZ2VUeXBlLCBHcm91cFR5cGUsIEdyb3VwVXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL2dyb3Vwcyc7XG5pbXBvcnQge2dldExpbWl0LCBsb2dFcnJvciwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7ZXh0cmFjdFRhZ3N9IGZyb20gJy4vdGFncyc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdncm91cHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdEJ5QXBwJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgZyBpbiBncm91cHNcbiAgICAgIExFVCB1c2VycyA9IChcbiAgICAgICAgRk9SIHUsIGwgSU4gT1VUQk9VTkQgZy5faWQgaXNHcm91cGVkXG4gICAgICAgIFJFVFVSTiBNRVJHRSAodSwge3R5cGU6bC50eXBlfSlcbiAgICAgIClcbiAgICAgICR7bGltaXQuYXFsfVxuICAgICAgU09SVCBnLmFkZGVkXG4gICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UoZywge3VzZXJzOnVzZXJzfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0QnlVc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgLy8gY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdEJ5VXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBnLCBlIElOIElOQk9VTkQgXCIke2B1c2Vycy8ke3Nlc3Npb25JZH1gfVwiIGlzR3JvdXBlZFxuICAgICAgTEVUIHVzZXJzID0gKFxuICAgICAgICBGT1IgdSwgbCBJTiBPVVRCT1VORCBnLl9pZCBpc0dyb3VwZWRcbiAgICAgICAgUkVUVVJOIE1FUkdFICh1LCB7dHlwZTpsLnR5cGV9KVxuICAgICAgKVxuICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICBTT1JUIGcuYWRkZWRcbiAgICAgIFJFVFVSTiBESVNUSU5DVCBNRVJHRShnLCB7dXNlcnM6dXNlcnN9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0QnlUYWdzID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB0YWdzOiBzdHJpbmdbXSxcbiAgZnJvbTogbnVtYmVyLFxuICB0bzogbnVtYmVyXG4pOiBQcm9taXNlPEdyb3VwVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldExpc3RCeVRhZ3MnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcblxuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgKHRhZ3MgfHwgW10pLm1hcCgodGFnTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmb3JtYXRUYWdOYW1lOiBzdHJpbmcgPSBwYXJzZUlkKHRhZ05hbWUpO1xuICAgICAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gICAgICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgcCwgZSBJTiBPVVRCT1VORCBcIiR7YHRhZ3MvJHtmb3JtYXRUYWdOYW1lfWB9XCIgaXNUYWdnZWRcbiAgICAgICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgICAgIExFVCBsaWtlcyA9IChcbiAgICAgICAgICAgIEZPUiBwb3N0LCBsaWtlIElOIElOQk9VTkQgcC5faWQgbGlrZXNcbiAgICAgICAgICAgIEZJTFRFUiBsaWtlLnZhbHVlID09ICdsaWtlJ1xuICAgICAgICAgICAgUkVUVVJOIGxpa2VcbiAgICAgICAgICApXG4gICAgICAgICAgTEVUIGRpc2xpa2VzID0gKFxuICAgICAgICAgICAgRk9SIHBvc3QsIGxpa2UgSU4gSU5CT1VORCBwLl9pZCBsaWtlc1xuICAgICAgICAgICAgRklMVEVSIGxpa2UudmFsdWUgPT0gJ2Rpc2xpa2UnXG4gICAgICAgICAgICBSRVRVUk4gbGlrZVxuICAgICAgICAgIClcbiAgICAgICAgICBGSUxURVIgZS50eXBlID09ICdwb3N0JyAmJiBwLnVzZXJJZCA9PSB1Ll9rZXlcbiAgICAgICAgICAke2xpbWl0LmFxbH1cbiAgICAgICAgICBTT1JUIHAuYWRkZWRcbiAgICAgICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UocCwge3VzZXI6dSwgbGlrZXM6TEVOR1RIKGxpa2VzKSwgZGlzbGlrZXM6TEVOR1RIKGRpc2xpa2VzKX0pYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSk7XG4gICAgfSlcbiAgKVxuICAgIC50aGVuKChyZXN1bHRzKSA9PiB1bmlxQnkoZmxhdHRlbihyZXN1bHRzKSwgJ19rZXknKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtSWQ6IHN0cmluZyk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpdGVtSWQpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcsIGUgSU4gSU5CT1VORCAke2B1c2Vycy8ke3Nlc3Npb25JZH1gfSBpc0dyb3VwZWRcbiAgICAgIEZJTFRFUiBnLl9rZXkgPT0gJHtmb3JtYXRJdGVtSWR9XG4gICAgICBMRVQgdXNlcnMgPSAoXG4gICAgICAgIEZPUiB1LCBsIElOIE9VVEJPVU5EIGcuX2lkIGlzR3JvdXBlZFxuICAgICAgICBSRVRVUk4gTUVSR0UgKHUsIHt0eXBlOmwudHlwZX0pXG4gICAgICApXG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UoZywge3VzZXJzOnVzZXJzfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlID0ge30pID0+IGdyb3VwKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwRGV0YWlscyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBncm91cElkOiBzdHJpbmcpOiBQcm9taXNlPEdyb3VwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXREZXRhaWxzJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEdyb3VwSWQ6IHN0cmluZyA9IHBhcnNlSWQoZ3JvdXBJZCk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcgSU4gZ3JvdXBzXG4gICAgICBGSUxURVIgZy5fa2V5ID09ICR7Zm9ybWF0R3JvdXBJZH1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiBnYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoZ3JvdXA6IEdyb3VwVHlwZSA9IHt9KSA9PiBncm91cClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cEVkZ2UgPSAoXG4gIGRhdGFiYXNlOiBzdHJpbmcsXG4gIHVzZXJJZDogc3RyaW5nLFxuICBncm91cElkOiBzdHJpbmcsXG4gIHR5cGU6IHN0cmluZ1xuKTogUHJvbWlzZTxHcm91cEVkZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2NyZWF0ZUdyb3VwRWRnZSc7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBmb3JtYXRHcm91cElkOiBzdHJpbmcgPSBwYXJzZUlkKGdyb3VwSWQpO1xuICBjb25zdCBmb3JtYXRUeXBlOiBzdHJpbmcgPSBwYXJzZUNoYXIodHlwZSwgMTYpO1xuXG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZWRnZUNvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gdXNlRGIoZGF0YWJhc2UpLmNvbGxlY3Rpb24oJ2lzR3JvdXBlZCcpO1xuICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYGdyb3VwLSR7Zm9ybWF0VXNlcklkfS0ke2Zvcm1hdEdyb3VwSWR9YCk7XG5cbiAgY29uc3QgZWRnZTogYW55ID0ge1xuICAgIF9mcm9tOiBgdXNlcnMvJHtmb3JtYXRVc2VySWR9YCxcbiAgICBfa2V5OiBlZGdlSWQsXG4gICAgX3RvOiBgZ3JvdXBzLyR7Zm9ybWF0R3JvdXBJZH1gLFxuICAgIGFkZGVkOiBub3csXG4gICAgdHlwZTogZm9ybWF0VHlwZVxuICB9O1xuXG4gIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIHtpZDogZm9ybWF0VXNlcklkfSkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkR3JvdXAgPSAoY29udGV4dDogQXBpQ29udGV4dCwgaXRlbTogR3JvdXBUeXBlID0ge30pOiBQcm9taXNlPEdyb3VwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGQnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3Qge1xuICAgIGRlc2NyaXB0aW9uID0gJycsXG4gICAgbmFtZSA9ICdVbnRpdGxlZCcsXG4gICAgdHlwZVxuICB9OiBHcm91cFR5cGUgPSBpdGVtO1xuICBjb25zdCBpZDogc3RyaW5nID0gY3JlYXRlSGFzaChgZ3JvdXAtJHtzZXNzaW9uSWR9YCk7XG4gIGNvbnN0IGZvcm1hdERlc2M6IHN0cmluZyA9IGRlc2NyaXB0aW9uLnN1YnN0cigwLCA2NDApO1xuICBjb25zdCBmb3JtYXRUeXBlOiBzdHJpbmcgPSBwYXJzZUNoYXIodHlwZSwgMTYpIHx8ICdwcml2YXRlJztcbiAgY29uc3QgaW5zZXJ0OiBHcm91cFR5cGUgPSB7XG4gICAgX2tleTogaWQsXG4gICAgYWRkZWQ6IG5vdyxcbiAgICBkZXNjcmlwdGlvbjogZm9ybWF0RGVzYyxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIG5hbWUsXG4gICAgdHlwZTogZm9ybWF0VHlwZVxuICB9O1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZSk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBncm91cHMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoZ3JvdXA6IEdyb3VwVHlwZSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCBpdGVtVHlwZTogc3RyaW5nID0gJ2dyb3Vwcyc7XG5cbiAgICAgIC8vIFVwZGF0ZSBsaW5rZWQgdGFnc1xuICAgICAgY29uc3Qge19rZXk6IGdyb3VwSWR9OiBHcm91cFR5cGUgPSBncm91cDtcbiAgICAgIHJldHVybiBleHRyYWN0VGFncyhkYiwgaXRlbVR5cGUsIGdyb3VwSWQsIGZvcm1hdERlc2MpXG4gICAgICAgIC50aGVuKCgpID0+IGNyZWF0ZUdyb3VwRWRnZShkYXRhYmFzZSwgc2Vzc2lvbklkLCBncm91cElkLCAnYWRtaW4nKS50aGVuKCgpID0+IGdyb3VwKSk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtOiBHcm91cFR5cGUgPSB7fSk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZGVzY3JpcHRpb24gPSAnJyxcbiAgICBpZCxcbiAgICBuYW1lID0gJ1VudGl0bGVkJ1xuICB9OiBHcm91cFR5cGUgPSBpdGVtO1xuICBjb25zdCBpdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaWQpO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IGZvcm1hdERlc2M6IHN0cmluZyA9IGRlc2NyaXB0aW9uLnN1YnN0cigwLCA2NDApO1xuICBjb25zdCB1cGRhdGU6IGFueSA9IHtcbiAgICBkZXNjcmlwdGlvbjogZm9ybWF0RGVzYyxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIG5hbWVcbiAgfTtcbiAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2UpO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2l0ZW1JZH0gV0lUSCAke3VwZGF0ZX0gSU4gZ3JvdXBzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGdyb3VwOiBHcm91cFR5cGUgPSB7fSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGdyb3VwS2V5fSA9IGdyb3VwO1xuICAgICAgY29uc3QgaXRlbVR5cGU6IHN0cmluZyA9ICdncm91cHMnO1xuXG4gICAgICAvLyBVcGRhdGUgbGlua2VkIHRhZ3NcbiAgICAgIHJldHVybiBleHRyYWN0VGFncyhkYiwgaXRlbVR5cGUsIGdyb3VwS2V5LCBkZXNjcmlwdGlvbikudGhlbigoKSA9PiBncm91cCk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtSWQ6IHN0cmluZyk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgZyBJTiBncm91cHNcbiAgICAgIEZJTFRFUiBnLl9rZXkgPT0gJHtmb3JtYXRJdGVtSWR9XG4gICAgICBSRU1PVkUgZyBJTiBncm91cHNcbiAgICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlID0ge30pID0+IGdyb3VwKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3Vwc0J5UmVhY3Rpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgcmVhY3Rpb246IHN0cmluZyk6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0R3JvdXBzQnlSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb246IHN0cmluZyA9IHBhcnNlQ2hhcihyZWFjdGlvbiwgMzIpO1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHUsIHIgSU4gT1VUQk9VTkQgJHt1c2VyRG9jSWR9IGhhc1JlYWN0aW9uXG4gICAgICBGSUxURVIgci52YWx1ZSA9PSAke2Zvcm1hdFJlYWN0aW9ufVxuICAgICAgQ09MTEVDVCByZWFjdGlvbk5hbWUgPSByLnZhbHVlIElOVE8gcmVhY3Rpb25JdGVtc1xuICAgICAgUkVUVVJOIHt2YWx1ZTogcmVhY3Rpb25OYW1lLCBjb3VudDogTEVOR1RIKHJlYWN0aW9uSXRlbXNbKl0uci52YWx1ZSl9YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzR3JvdXBlZCA9IChkYXRhYmFzZTogc3RyaW5nLCB1c2VySWQ6IHN0cmluZywgZ3JvdXBJZDogc3RyaW5nKTogUHJvbWlzZTxHcm91cFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2lzR3JvdXBlZCc7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBmb3JtYXRHcm91cElkOiBzdHJpbmcgPSBwYXJzZUlkKGdyb3VwSWQpO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBnIElOIGdyb3Vwc1xuICAgIEZJTFRFUiBnLl9rZXkgPT0gJHtmb3JtYXRHcm91cElkfVxuICAgIEZPUiB1IElOIElOQk9VTkQgZy5faWQgaXNHcm91cGVkXG4gICAgRklMVEVSIHUuX2tleSA9PSAke2Zvcm1hdFVzZXJJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLnRoZW4oKHJlc3VsdHMgPSBbXSkgPT4ge1xuICAgICAgY29uc3QgaXNWYWxpZCA9ICEhcmVzdWx0cy5sZW5ndGg7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGdyb3VwSWQsXG4gICAgICAgIGlzVmFsaWQsXG4gICAgICAgIHVzZXJJZFxuICAgICAgfTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIHtpZDogdXNlcklkfSkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuIl19
@@ -1,22 +0,0 @@
1
- /// <reference types="node" />
2
- import { PutObjectRequest } from 'aws-sdk/clients/s3';
3
- import { ApiContext, AppCollectionTypes, ArangoDBLimit, ImageEdgeType, ImageOptions, ImageType, ImageUrlData } from '../types';
4
- export declare const parseImageOptions: (options?: ImageOptions) => {
5
- limit: ArangoDBLimit;
6
- type: string;
7
- };
8
- export declare const getImageOptional: (fields: string[]) => any;
9
- export declare const getImageListByUser: (context: ApiContext, userId: string, from: number, to: number) => Promise<ImageType[]>;
10
- export declare const getImageCountByItem: (context: ApiContext, itemId: string, itemType?: AppCollectionTypes) => Promise<number>;
11
- export declare const getImageListByItem: (context: ApiContext, itemId: string, itemType: AppCollectionTypes, options: ImageOptions) => Promise<ImageType[]>;
12
- export declare const getImageListByGroup: (context: ApiContext, params: any) => Promise<ImageType[]>;
13
- export declare const getImagesByReaction: (context: ApiContext, reactionName: string, options?: ImageOptions) => Promise<ImageType[]>;
14
- export declare const getImage: (context: ApiContext, id: string) => Promise<ImageType>;
15
- export declare const getPathUserImages: (sub: string, imgId: string, type: string, dir?: string) => string;
16
- export declare const getAppImageUrl: (data: ImageUrlData) => string;
17
- export declare const getUserImageUrl: (data: ImageUrlData) => string;
18
- export declare const resizeSaveImage: (context: ApiContext, imgId: string, buffer: Buffer, type?: string, s3Options?: PutObjectRequest) => Promise<ImageType>;
19
- export declare const addImage: (context: ApiContext, image: ImageType, s3Options: PutObjectRequest) => Promise<ImageType>;
20
- export declare const addImageEdge: (context: ApiContext, imageEdge: ImageEdgeType) => Promise<object>;
21
- export declare const updateImage: (context: ApiContext, item: ImageType, s3Options: PutObjectRequest) => Promise<ImageType>;
22
- export declare const deleteImage: (context: ApiContext, imgId: string) => Promise<ImageType>;