@nlabs/reaktor 0.1.2 → 0.1.3
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/.DS_Store +0 -0
- package/lib/config.d.ts +21 -0
- package/lib/config.js +130 -0
- package/lib/data/conversations.d.ts +6 -0
- package/lib/data/conversations.js +197 -0
- package/lib/data/dynamodb.d.ts +8 -0
- package/lib/data/dynamodb.js +139 -0
- package/lib/data/email.d.ts +7 -0
- package/lib/data/email.js +163 -0
- package/lib/data/files.d.ts +16 -0
- package/lib/data/files.js +406 -0
- package/lib/data/groups.d.ts +13 -0
- package/lib/data/groups.js +354 -0
- package/lib/data/images.d.ts +12 -0
- package/lib/data/images.js +667 -0
- package/{src/data/index.ts → lib/data/index.d.ts} +1 -5
- package/lib/data/index.js +24 -0
- package/lib/data/ios.d.ts +6 -0
- package/lib/data/ios.js +302 -0
- package/lib/data/locations.d.ts +3 -0
- package/lib/data/locations.js +132 -0
- package/lib/data/messages.d.ts +9 -0
- package/lib/data/messages.js +248 -0
- package/lib/data/notifications.d.ts +5 -0
- package/lib/data/notifications.js +42 -0
- package/lib/data/payments.d.ts +11 -0
- package/lib/data/payments.js +748 -0
- package/lib/data/posts.d.ts +22 -0
- package/lib/data/posts.js +578 -0
- package/lib/data/reactions.d.ts +6 -0
- package/lib/data/reactions.js +218 -0
- package/lib/data/s3.d.ts +6 -0
- package/lib/data/s3.js +103 -0
- package/lib/data/search.d.ts +3 -0
- package/lib/data/search.js +98 -0
- package/lib/data/sms.d.ts +3 -0
- package/lib/data/sms.js +59 -0
- package/lib/data/subscription.d.ts +7 -0
- package/lib/data/subscription.js +284 -0
- package/lib/data/tags.d.ts +14 -0
- package/lib/data/tags.js +304 -0
- package/lib/data/users.d.ts +12 -0
- package/lib/data/users.js +310 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +8 -0
- package/lib/types/apps.d.ts +43 -0
- package/lib/types/apps.js +2 -0
- package/lib/types/arangodb.d.ts +17 -0
- package/lib/types/arangodb.js +2 -0
- package/lib/types/auth.d.ts +10 -0
- package/lib/types/auth.js +2 -0
- package/lib/types/conversations.d.ts +6 -0
- package/lib/types/conversations.js +2 -0
- package/lib/types/email.d.ts +12 -0
- package/lib/types/email.js +2 -0
- package/lib/types/files.d.ts +26 -0
- package/lib/types/files.js +2 -0
- package/lib/types/google.d.ts +27 -0
- package/lib/types/google.js +2 -0
- package/lib/types/groups.d.ts +21 -0
- package/lib/types/groups.js +2 -0
- package/lib/types/images.d.ts +24 -0
- package/lib/types/images.js +2 -0
- package/{src/types/index.ts → lib/types/index.d.ts} +0 -4
- package/lib/types/index.js +22 -0
- package/lib/types/locations.d.ts +20 -0
- package/lib/types/locations.js +2 -0
- package/lib/types/messages.d.ts +12 -0
- package/lib/types/messages.js +2 -0
- package/lib/types/notifications.d.ts +19 -0
- package/lib/types/notifications.js +2 -0
- package/lib/types/payments.d.ts +114 -0
- package/lib/types/payments.js +2 -0
- package/lib/types/posts.d.ts +28 -0
- package/lib/types/posts.js +2 -0
- package/lib/types/reactions.d.ts +4 -0
- package/lib/types/reactions.js +2 -0
- package/lib/types/tags.d.ts +9 -0
- package/lib/types/tags.js +2 -0
- package/lib/types/users.d.ts +78 -0
- package/lib/types/users.js +2 -0
- package/lib/utils/analytics.d.ts +3 -0
- package/lib/utils/analytics.js +47 -0
- package/lib/utils/arangodb.d.ts +9 -0
- package/lib/utils/arangodb.js +98 -0
- package/lib/utils/auth.d.ts +7 -0
- package/lib/utils/auth.js +80 -0
- package/lib/utils/graphql.d.ts +1 -0
- package/lib/utils/graphql.js +7 -0
- package/{src/utils/index.ts → lib/utils/index.d.ts} +0 -4
- package/lib/utils/index.js +11 -0
- package/lib/utils/objects.d.ts +3 -0
- package/lib/utils/objects.js +34 -0
- package/lib/utils/redis.d.ts +1 -0
- package/lib/utils/redis.js +15 -0
- package/package.json +5 -5
- package/.vscode/extensions.json +0 -15
- package/.vscode/settings.json +0 -82
- package/lex.config.js +0 -4
- package/src/config.ts +0 -127
- package/src/data/conversations.ts +0 -181
- package/src/data/dynamodb.ts +0 -157
- package/src/data/email.ts +0 -163
- package/src/data/files.ts +0 -352
- package/src/data/groups.ts +0 -308
- package/src/data/images.ts +0 -606
- package/src/data/ios.ts +0 -249
- package/src/data/locations.ts +0 -114
- package/src/data/messages.ts +0 -237
- package/src/data/notifications.ts +0 -48
- package/src/data/payments.ts +0 -675
- package/src/data/posts.ts +0 -580
- package/src/data/reactions.ts +0 -186
- package/src/data/s3.ts +0 -117
- package/src/data/search.ts +0 -74
- package/src/data/sms.ts +0 -60
- package/src/data/subscription.ts +0 -228
- package/src/data/tags.ts +0 -230
- package/src/data/users.ts +0 -254
- package/src/index.ts +0 -7
- package/src/types/apps.ts +0 -56
- package/src/types/arangodb.ts +0 -23
- package/src/types/auth.ts +0 -20
- package/src/types/conversations.ts +0 -11
- package/src/types/email.ts +0 -17
- package/src/types/files.ts +0 -31
- package/src/types/google.ts +0 -37
- package/src/types/groups.ts +0 -27
- package/src/types/images.ts +0 -32
- package/src/types/locations.ts +0 -24
- package/src/types/messages.ts +0 -16
- package/src/types/notifications.ts +0 -26
- package/src/types/payments.ts +0 -129
- package/src/types/posts.ts +0 -34
- package/src/types/reactions.ts +0 -8
- package/src/types/tags.ts +0 -13
- package/src/types/users.ts +0 -89
- package/src/utils/analytics.ts +0 -41
- package/src/utils/arangodb.ts +0 -100
- package/src/utils/auth.ts +0 -61
- package/src/utils/graphql.ts +0 -7
- package/src/utils/objects.ts +0 -34
- package/src/utils/redis.ts +0 -17
- package/tsconfig.json +0 -45
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ApiContext } from '../types/auth';
|
|
2
|
+
import { GroupEdgeType, GroupType, GroupUserType } from '../types/groups';
|
|
3
|
+
export declare const getGroupList: (context: ApiContext, from: number, to: number) => Promise<GroupType[]>;
|
|
4
|
+
export declare const getGroupListByUser: (context: ApiContext, from: number, to: number) => Promise<GroupType[]>;
|
|
5
|
+
export declare const getGroupListByTags: (context: ApiContext, tags: string[], from: number, to: number) => Promise<GroupType[]>;
|
|
6
|
+
export declare const getGroup: (context: ApiContext, itemId: string) => Promise<GroupType>;
|
|
7
|
+
export declare const getGroupDetails: (context: ApiContext, groupId: string) => Promise<GroupType>;
|
|
8
|
+
export declare const addGroup: (context: ApiContext, item?: GroupType) => Promise<GroupType>;
|
|
9
|
+
export declare const updateGroup: (context: ApiContext, item?: GroupType) => Promise<GroupType>;
|
|
10
|
+
export declare const deleteGroup: (context: ApiContext, itemId: string) => Promise<GroupType>;
|
|
11
|
+
export declare const getGroupsByReaction: (context: ApiContext, reaction: string) => Promise<GroupType[]>;
|
|
12
|
+
export declare const isGrouped: (database: string, userId: string, groupId: string) => Promise<GroupUserType>;
|
|
13
|
+
export declare const createGroupEdge: (database: string, userId: string, groupId: string, type: string) => Promise<GroupEdgeType>;
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
function _templateObject7() {
|
|
2
|
+
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"]);
|
|
3
|
+
|
|
4
|
+
_templateObject7 = function _templateObject7() {
|
|
5
|
+
return data;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function _templateObject6() {
|
|
12
|
+
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)}"]);
|
|
13
|
+
|
|
14
|
+
_templateObject6 = function _templateObject6() {
|
|
15
|
+
return data;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function _templateObject5() {
|
|
22
|
+
var data = _taggedTemplateLiteral(["FOR g IN groups\n FILTER g._key == ", "\n REMOVE g IN groups\n RETURN OLD"]);
|
|
23
|
+
|
|
24
|
+
_templateObject5 = function _templateObject5() {
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function _templateObject4() {
|
|
32
|
+
var data = _taggedTemplateLiteral(["UPDATE ", " WITH ", " IN groups RETURN NEW"]);
|
|
33
|
+
|
|
34
|
+
_templateObject4 = function _templateObject4() {
|
|
35
|
+
return data;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function _templateObject3() {
|
|
42
|
+
var data = _taggedTemplateLiteral(["INSERT ", " IN groups RETURN NEW"]);
|
|
43
|
+
|
|
44
|
+
_templateObject3 = function _templateObject3() {
|
|
45
|
+
return data;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function _templateObject2() {
|
|
52
|
+
var data = _taggedTemplateLiteral(["FOR g IN groups\n FILTER g._key == ", "\n LIMIT 1\n RETURN g"]);
|
|
53
|
+
|
|
54
|
+
_templateObject2 = function _templateObject2() {
|
|
55
|
+
return data;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
return data;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function _templateObject() {
|
|
62
|
+
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})"]);
|
|
63
|
+
|
|
64
|
+
_templateObject = function _templateObject() {
|
|
65
|
+
return data;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
return data;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
72
|
+
|
|
73
|
+
import { createHash, parseChar, parseId } from '@nlabs/utils';
|
|
74
|
+
import { aql } from 'arangojs';
|
|
75
|
+
import flatten from 'lodash/flatten';
|
|
76
|
+
import uniqBy from 'lodash/uniqBy';
|
|
77
|
+
import { getLimit, logError, useDb } from '../utils';
|
|
78
|
+
import { extractTags } from './tags';
|
|
79
|
+
/**
|
|
80
|
+
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
81
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
var eventCategory = 'groups';
|
|
85
|
+
export var getGroupList = function getGroupList(context, from, to) {
|
|
86
|
+
var action = 'getListByApp';
|
|
87
|
+
var database = context.database;
|
|
88
|
+
var limit = getLimit(from, to);
|
|
89
|
+
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})");
|
|
90
|
+
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
91
|
+
return cursor.all();
|
|
92
|
+
}).catch(function (error) {
|
|
93
|
+
return logError({
|
|
94
|
+
action: action,
|
|
95
|
+
category: eventCategory,
|
|
96
|
+
label: 'db_error'
|
|
97
|
+
}, error, context).then(function () {
|
|
98
|
+
return null;
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
export var getGroupListByUser = function getGroupListByUser(context, from, to) {
|
|
103
|
+
// const action: string = 'getListByUser';
|
|
104
|
+
var database = context.database,
|
|
105
|
+
sessionId = context.userId;
|
|
106
|
+
var limit = getLimit(from, to);
|
|
107
|
+
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})");
|
|
108
|
+
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
109
|
+
return cursor.all();
|
|
110
|
+
}).catch(function (error) {
|
|
111
|
+
throw error;
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
export var getGroupListByTags = function getGroupListByTags(context, tags, from, to) {
|
|
115
|
+
var action = 'getListByTags';
|
|
116
|
+
var database = context.database;
|
|
117
|
+
return Promise.all((tags || []).map(function (tagName) {
|
|
118
|
+
var formatTagName = parseId(tagName);
|
|
119
|
+
var limit = getLimit(from, to);
|
|
120
|
+
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)})");
|
|
121
|
+
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
122
|
+
return cursor.all();
|
|
123
|
+
});
|
|
124
|
+
})).then(function (results) {
|
|
125
|
+
return uniqBy(flatten(results), '_key');
|
|
126
|
+
}).catch(function (error) {
|
|
127
|
+
return logError({
|
|
128
|
+
action: action,
|
|
129
|
+
category: eventCategory,
|
|
130
|
+
label: 'db_error'
|
|
131
|
+
}, error, context).then(function () {
|
|
132
|
+
return null;
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
export var getGroup = function getGroup(context, itemId) {
|
|
137
|
+
var action = 'getItem';
|
|
138
|
+
var database = context.database,
|
|
139
|
+
sessionId = context.userId;
|
|
140
|
+
var formatItemId = parseId(itemId);
|
|
141
|
+
var aqlQry = aql(_templateObject(), "users/".concat(sessionId), formatItemId);
|
|
142
|
+
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
143
|
+
return cursor.next();
|
|
144
|
+
}).then(function () {
|
|
145
|
+
var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
146
|
+
return group;
|
|
147
|
+
}).catch(function (error) {
|
|
148
|
+
return logError({
|
|
149
|
+
action: action,
|
|
150
|
+
category: eventCategory,
|
|
151
|
+
label: 'db_error'
|
|
152
|
+
}, error, context).then(function () {
|
|
153
|
+
return null;
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
export var getGroupDetails = function getGroupDetails(context, groupId) {
|
|
158
|
+
var action = 'getDetails';
|
|
159
|
+
var database = context.database;
|
|
160
|
+
var formatGroupId = parseId(groupId);
|
|
161
|
+
var aqlQry = aql(_templateObject2(), formatGroupId);
|
|
162
|
+
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
163
|
+
return cursor.next();
|
|
164
|
+
}).then(function () {
|
|
165
|
+
var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
166
|
+
return group;
|
|
167
|
+
}).catch(function (error) {
|
|
168
|
+
return logError({
|
|
169
|
+
action: action,
|
|
170
|
+
category: eventCategory,
|
|
171
|
+
label: 'db_error'
|
|
172
|
+
}, error, context).then(function () {
|
|
173
|
+
return null;
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
export var addGroup = function addGroup(context) {
|
|
178
|
+
var item = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
179
|
+
var action = 'add';
|
|
180
|
+
var database = context.database,
|
|
181
|
+
sessionId = context.userId;
|
|
182
|
+
var now = Date.now();
|
|
183
|
+
var _item$description = item.description,
|
|
184
|
+
description = _item$description === void 0 ? '' : _item$description,
|
|
185
|
+
_item$name = item.name,
|
|
186
|
+
name = _item$name === void 0 ? 'Untitled' : _item$name,
|
|
187
|
+
type = item.type;
|
|
188
|
+
var id = createHash("group-".concat(sessionId));
|
|
189
|
+
var formatDesc = description.substr(0, 640);
|
|
190
|
+
var formatType = parseChar(type, 16) || 'private';
|
|
191
|
+
var insert = {
|
|
192
|
+
_key: id,
|
|
193
|
+
added: now,
|
|
194
|
+
description: formatDesc,
|
|
195
|
+
modified: now,
|
|
196
|
+
name: name,
|
|
197
|
+
type: formatType
|
|
198
|
+
};
|
|
199
|
+
var db = useDb(database);
|
|
200
|
+
var aqlQry = aql(_templateObject3(), insert);
|
|
201
|
+
return db.query(aqlQry).then(function (cursor) {
|
|
202
|
+
return cursor.next();
|
|
203
|
+
}).then(function () {
|
|
204
|
+
var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
205
|
+
var itemType = 'groups'; // Update linked tags
|
|
206
|
+
|
|
207
|
+
var groupId = group._key;
|
|
208
|
+
return extractTags(db, itemType, groupId, formatDesc).then(function () {
|
|
209
|
+
return createGroupEdge(database, sessionId, groupId, 'admin').then(function () {
|
|
210
|
+
return group;
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
}).catch(function (error) {
|
|
214
|
+
return logError({
|
|
215
|
+
action: action,
|
|
216
|
+
category: eventCategory,
|
|
217
|
+
label: 'db_error'
|
|
218
|
+
}, error, context).then(function () {
|
|
219
|
+
return null;
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
export var updateGroup = function updateGroup(context) {
|
|
224
|
+
var item = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
225
|
+
var action = 'update';
|
|
226
|
+
var database = context.database;
|
|
227
|
+
var _item$description2 = item.description,
|
|
228
|
+
description = _item$description2 === void 0 ? '' : _item$description2,
|
|
229
|
+
id = item.id,
|
|
230
|
+
_item$name2 = item.name,
|
|
231
|
+
name = _item$name2 === void 0 ? 'Untitled' : _item$name2;
|
|
232
|
+
var itemId = parseId(id);
|
|
233
|
+
var now = Date.now();
|
|
234
|
+
var formatDesc = description.substr(0, 640);
|
|
235
|
+
var update = {
|
|
236
|
+
description: formatDesc,
|
|
237
|
+
modified: now,
|
|
238
|
+
name: name
|
|
239
|
+
};
|
|
240
|
+
var db = useDb(database);
|
|
241
|
+
var aqlQry = aql(_templateObject4(), itemId, update);
|
|
242
|
+
return db.query(aqlQry).then(function (cursor) {
|
|
243
|
+
return cursor.next();
|
|
244
|
+
}).then(function () {
|
|
245
|
+
var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
246
|
+
var groupKey = group._key;
|
|
247
|
+
var itemType = 'groups'; // Update linked tags
|
|
248
|
+
|
|
249
|
+
return extractTags(db, itemType, groupKey, description).then(function () {
|
|
250
|
+
return group;
|
|
251
|
+
});
|
|
252
|
+
}).catch(function (error) {
|
|
253
|
+
return logError({
|
|
254
|
+
action: action,
|
|
255
|
+
category: eventCategory,
|
|
256
|
+
label: 'db_error'
|
|
257
|
+
}, error, context).then(function () {
|
|
258
|
+
return null;
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
};
|
|
262
|
+
export var deleteGroup = function deleteGroup(context, itemId) {
|
|
263
|
+
var action = 'delete';
|
|
264
|
+
var database = context.database;
|
|
265
|
+
var formatItemId = parseId(itemId);
|
|
266
|
+
var aqlQry = aql(_templateObject5(), formatItemId);
|
|
267
|
+
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
268
|
+
return cursor.next();
|
|
269
|
+
}).then(function () {
|
|
270
|
+
var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
271
|
+
return group;
|
|
272
|
+
}).catch(function (error) {
|
|
273
|
+
return logError({
|
|
274
|
+
action: action,
|
|
275
|
+
category: eventCategory,
|
|
276
|
+
label: 'db_error'
|
|
277
|
+
}, error, context).then(function () {
|
|
278
|
+
return null;
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
};
|
|
282
|
+
export var getGroupsByReaction = function getGroupsByReaction(context, reaction) {
|
|
283
|
+
var action = 'getGroupsByReaction';
|
|
284
|
+
var database = context.database,
|
|
285
|
+
sessionId = context.userId;
|
|
286
|
+
var formatReaction = parseChar(reaction, 32);
|
|
287
|
+
var userDocId = "users/".concat(sessionId); // Query
|
|
288
|
+
|
|
289
|
+
var aqlQry = aql(_templateObject6(), userDocId, formatReaction);
|
|
290
|
+
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
291
|
+
return cursor.all();
|
|
292
|
+
}).catch(function (error) {
|
|
293
|
+
return logError({
|
|
294
|
+
action: action,
|
|
295
|
+
category: eventCategory,
|
|
296
|
+
label: 'db_error'
|
|
297
|
+
}, error, context).then(function () {
|
|
298
|
+
return null;
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
};
|
|
302
|
+
export var isGrouped = function isGrouped(database, userId, groupId) {
|
|
303
|
+
var action = 'isGrouped';
|
|
304
|
+
var formatUserId = parseId(userId);
|
|
305
|
+
var formatGroupId = parseId(groupId);
|
|
306
|
+
var aqlQry = aql(_templateObject7(), formatGroupId, formatUserId);
|
|
307
|
+
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
308
|
+
return cursor.all();
|
|
309
|
+
}).then(function () {
|
|
310
|
+
var results = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
311
|
+
var isValid = !!results.length;
|
|
312
|
+
return {
|
|
313
|
+
groupId: groupId,
|
|
314
|
+
isValid: isValid,
|
|
315
|
+
userId: userId
|
|
316
|
+
};
|
|
317
|
+
}).catch(function (error) {
|
|
318
|
+
return logError({
|
|
319
|
+
action: action,
|
|
320
|
+
category: eventCategory,
|
|
321
|
+
label: 'db_error'
|
|
322
|
+
}, error, {
|
|
323
|
+
id: userId
|
|
324
|
+
}).then(function () {
|
|
325
|
+
return null;
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
export var createGroupEdge = function createGroupEdge(database, userId, groupId, type) {
|
|
330
|
+
var action = 'createGroupEdge';
|
|
331
|
+
var formatUserId = parseId(userId);
|
|
332
|
+
var formatGroupId = parseId(groupId);
|
|
333
|
+
var formatType = parseChar(type, 16);
|
|
334
|
+
var now = Date.now();
|
|
335
|
+
var edgeCollection = useDb(database).edgeCollection('isGrouped');
|
|
336
|
+
var edgeId = createHash("group-".concat(formatUserId, "-").concat(formatGroupId));
|
|
337
|
+
var edge = {
|
|
338
|
+
_key: edgeId,
|
|
339
|
+
added: now,
|
|
340
|
+
type: formatType
|
|
341
|
+
};
|
|
342
|
+
return edgeCollection.save(edge, "users/".concat(formatUserId), "groups/".concat(formatGroupId)).catch(function (error) {
|
|
343
|
+
return logError({
|
|
344
|
+
action: action,
|
|
345
|
+
category: eventCategory,
|
|
346
|
+
label: 'db_error'
|
|
347
|
+
}, error, {
|
|
348
|
+
id: formatUserId
|
|
349
|
+
}).then(function () {
|
|
350
|
+
return null;
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
};
|
|
354
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2dyb3Vwcy50cyJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicGFyc2VDaGFyIiwicGFyc2VJZCIsImFxbCIsImZsYXR0ZW4iLCJ1bmlxQnkiLCJnZXRMaW1pdCIsImxvZ0Vycm9yIiwidXNlRGIiLCJleHRyYWN0VGFncyIsImV2ZW50Q2F0ZWdvcnkiLCJnZXRHcm91cExpc3QiLCJjb250ZXh0IiwiZnJvbSIsInRvIiwiYWN0aW9uIiwiZGF0YWJhc2UiLCJsaW1pdCIsImFxbFFyeSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsImFsbCIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiZ2V0R3JvdXBMaXN0QnlVc2VyIiwic2Vzc2lvbklkIiwidXNlcklkIiwiZ2V0R3JvdXBMaXN0QnlUYWdzIiwidGFncyIsIlByb21pc2UiLCJtYXAiLCJ0YWdOYW1lIiwiZm9ybWF0VGFnTmFtZSIsInJlc3VsdHMiLCJnZXRHcm91cCIsIml0ZW1JZCIsImZvcm1hdEl0ZW1JZCIsIm5leHQiLCJncm91cCIsImdldEdyb3VwRGV0YWlscyIsImdyb3VwSWQiLCJmb3JtYXRHcm91cElkIiwiYWRkR3JvdXAiLCJpdGVtIiwibm93IiwiRGF0ZSIsImRlc2NyaXB0aW9uIiwibmFtZSIsInR5cGUiLCJpZCIsImZvcm1hdERlc2MiLCJzdWJzdHIiLCJmb3JtYXRUeXBlIiwiaW5zZXJ0IiwiX2tleSIsImFkZGVkIiwibW9kaWZpZWQiLCJkYiIsIml0ZW1UeXBlIiwiY3JlYXRlR3JvdXBFZGdlIiwidXBkYXRlR3JvdXAiLCJ1cGRhdGUiLCJncm91cEtleSIsImRlbGV0ZUdyb3VwIiwiZ2V0R3JvdXBzQnlSZWFjdGlvbiIsInJlYWN0aW9uIiwiZm9ybWF0UmVhY3Rpb24iLCJ1c2VyRG9jSWQiLCJpc0dyb3VwZWQiLCJmb3JtYXRVc2VySWQiLCJpc1ZhbGlkIiwibGVuZ3RoIiwiZWRnZUNvbGxlY3Rpb24iLCJlZGdlSWQiLCJlZGdlIiwic2F2ZSJd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QSxXQUFrQmpCLFFBQVEsQ0FBQztBQUNoQ1EsTUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ1UsTUFBQUEsUUFBUSxFQUFFZixhQUZzQjtBQUdoQ2dCLE1BQUFBLEtBQUssRUFBRTtBQUh5QixLQUFELEVBSTlCRixLQUo4QixFQUl2QjtBQUFDNEIsTUFBQUEsRUFBRSxFQUFFb0I7QUFBTCxLQUp1QixDQUFSLENBSUtwRCxJQUpMLENBSVU7QUFBQSxhQUFNLElBQU47QUFBQSxLQUpWLENBQWxCO0FBQUEsR0FERixDQUFQO0FBTUQsQ0F0Qk0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsLCBEYXRhYmFzZX0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoL2ZsYXR0ZW4nO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtHcm91cEVkZ2VUeXBlLCBHcm91cFR5cGUsIEdyb3VwVXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL2dyb3Vwcyc7XG5pbXBvcnQge2dldExpbWl0LCBsb2dFcnJvciwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7ZXh0cmFjdFRhZ3N9IGZyb20gJy4vdGFncyc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdncm91cHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdEJ5QXBwJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgZyBpbiBncm91cHNcbiAgICAgIExFVCB1c2VycyA9IChcbiAgICAgICAgRk9SIHUsIGwgSU4gT1VUQk9VTkQgZy5faWQgaXNHcm91cGVkXG4gICAgICAgIFJFVFVSTiBNRVJHRSAodSwge3R5cGU6bC50eXBlfSlcbiAgICAgIClcbiAgICAgICR7bGltaXQuYXFsfVxuICAgICAgU09SVCBnLmFkZGVkXG4gICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UoZywge3VzZXJzOnVzZXJzfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0QnlVc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgLy8gY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdEJ5VXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBnLCBlIElOIElOQk9VTkQgXCIke2B1c2Vycy8ke3Nlc3Npb25JZH1gfVwiIGlzR3JvdXBlZFxuICAgICAgTEVUIHVzZXJzID0gKFxuICAgICAgICBGT1IgdSwgbCBJTiBPVVRCT1VORCBnLl9pZCBpc0dyb3VwZWRcbiAgICAgICAgUkVUVVJOIE1FUkdFICh1LCB7dHlwZTpsLnR5cGV9KVxuICAgICAgKVxuICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICBTT1JUIGcuYWRkZWRcbiAgICAgIFJFVFVSTiBESVNUSU5DVCBNRVJHRShnLCB7dXNlcnM6dXNlcnN9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0QnlUYWdzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHRhZ3M6IHN0cmluZ1tdLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPEdyb3VwVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldExpc3RCeVRhZ3MnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcblxuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgKHRhZ3MgfHwgW10pLm1hcCgodGFnTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmb3JtYXRUYWdOYW1lOiBzdHJpbmcgPSBwYXJzZUlkKHRhZ05hbWUpO1xuICAgICAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gICAgICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgcCwgZSBJTiBPVVRCT1VORCBcIiR7YHRhZ3MvJHtmb3JtYXRUYWdOYW1lfWB9XCIgaXNUYWdnZWRcbiAgICAgICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgICAgIExFVCBsaWtlcyA9IChcbiAgICAgICAgICAgIEZPUiBwb3N0LCBsaWtlIElOIElOQk9VTkQgcC5faWQgbGlrZXNcbiAgICAgICAgICAgIEZJTFRFUiBsaWtlLnZhbHVlID09ICdsaWtlJ1xuICAgICAgICAgICAgUkVUVVJOIGxpa2VcbiAgICAgICAgICApXG4gICAgICAgICAgTEVUIGRpc2xpa2VzID0gKFxuICAgICAgICAgICAgRk9SIHBvc3QsIGxpa2UgSU4gSU5CT1VORCBwLl9pZCBsaWtlc1xuICAgICAgICAgICAgRklMVEVSIGxpa2UudmFsdWUgPT0gJ2Rpc2xpa2UnXG4gICAgICAgICAgICBSRVRVUk4gbGlrZVxuICAgICAgICAgIClcbiAgICAgICAgICBGSUxURVIgZS50eXBlID09ICdwb3N0JyAmJiBwLnVzZXJJZCA9PSB1Ll9rZXlcbiAgICAgICAgICAke2xpbWl0LmFxbH1cbiAgICAgICAgICBTT1JUIHAuYWRkZWRcbiAgICAgICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UocCwge3VzZXI6dSwgbGlrZXM6TEVOR1RIKGxpa2VzKSwgZGlzbGlrZXM6TEVOR1RIKGRpc2xpa2VzKX0pYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSk7XG4gICAgfSlcbiAgKVxuICAgIC50aGVuKChyZXN1bHRzKSA9PiB1bmlxQnkoZmxhdHRlbihyZXN1bHRzKSwgJ19rZXknKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtSWQ6IHN0cmluZyk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpdGVtSWQpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcsIGUgSU4gSU5CT1VORCAke2B1c2Vycy8ke3Nlc3Npb25JZH1gfSBpc0dyb3VwZWRcbiAgICAgIEZJTFRFUiBnLl9rZXkgPT0gJHtmb3JtYXRJdGVtSWR9XG4gICAgICBMRVQgdXNlcnMgPSAoXG4gICAgICAgIEZPUiB1LCBsIElOIE9VVEJPVU5EIGcuX2lkIGlzR3JvdXBlZFxuICAgICAgICBSRVRVUk4gTUVSR0UgKHUsIHt0eXBlOmwudHlwZX0pXG4gICAgICApXG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UoZywge3VzZXJzOnVzZXJzfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlID0ge30pID0+IGdyb3VwKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwRGV0YWlscyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBncm91cElkOiBzdHJpbmcpOiBQcm9taXNlPEdyb3VwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXREZXRhaWxzJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEdyb3VwSWQ6IHN0cmluZyA9IHBhcnNlSWQoZ3JvdXBJZCk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcgSU4gZ3JvdXBzXG4gICAgICBGSUxURVIgZy5fa2V5ID09ICR7Zm9ybWF0R3JvdXBJZH1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiBnYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoZ3JvdXA6IEdyb3VwVHlwZSA9IHt9KSA9PiBncm91cClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtOiBHcm91cFR5cGUgPSB7fSk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCB7XG4gICAgZGVzY3JpcHRpb24gPSAnJyxcbiAgICBuYW1lID0gJ1VudGl0bGVkJyxcbiAgICB0eXBlXG4gIH06IEdyb3VwVHlwZSA9IGl0ZW07XG4gIGNvbnN0IGlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGBncm91cC0ke3Nlc3Npb25JZH1gKTtcbiAgY29uc3QgZm9ybWF0RGVzYzogc3RyaW5nID0gZGVzY3JpcHRpb24uc3Vic3RyKDAsIDY0MCk7XG4gIGNvbnN0IGZvcm1hdFR5cGU6IHN0cmluZyA9IHBhcnNlQ2hhcih0eXBlLCAxNikgfHwgJ3ByaXZhdGUnO1xuICBjb25zdCBpbnNlcnQ6IEdyb3VwVHlwZSA9IHtcbiAgICBfa2V5OiBpZCxcbiAgICBhZGRlZDogbm93LFxuICAgIGRlc2NyaXB0aW9uOiBmb3JtYXREZXNjLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgbmFtZSxcbiAgICB0eXBlOiBmb3JtYXRUeXBlXG4gIH07XG4gIGNvbnN0IGRiOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGdyb3VwcyBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gZGIucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlID0ge30pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1UeXBlOiBzdHJpbmcgPSAnZ3JvdXBzJztcblxuICAgICAgLy8gVXBkYXRlIGxpbmtlZCB0YWdzXG4gICAgICBjb25zdCB7X2tleTogZ3JvdXBJZH06IEdyb3VwVHlwZSA9IGdyb3VwO1xuICAgICAgcmV0dXJuIGV4dHJhY3RUYWdzKGRiLCBpdGVtVHlwZSwgZ3JvdXBJZCwgZm9ybWF0RGVzYylcbiAgICAgICAgLnRoZW4oKCkgPT4gY3JlYXRlR3JvdXBFZGdlKGRhdGFiYXNlLCBzZXNzaW9uSWQsIGdyb3VwSWQsICdhZG1pbicpLnRoZW4oKCkgPT4gZ3JvdXApKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUdyb3VwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW06IEdyb3VwVHlwZSA9IHt9KTogUHJvbWlzZTxHcm91cFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBkZXNjcmlwdGlvbiA9ICcnLFxuICAgIGlkLFxuICAgIG5hbWUgPSAnVW50aXRsZWQnXG4gIH06IEdyb3VwVHlwZSA9IGl0ZW07XG4gIGNvbnN0IGl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpZCk7XG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZm9ybWF0RGVzYzogc3RyaW5nID0gZGVzY3JpcHRpb24uc3Vic3RyKDAsIDY0MCk7XG4gIGNvbnN0IHVwZGF0ZTogYW55ID0ge1xuICAgIGRlc2NyaXB0aW9uOiBmb3JtYXREZXNjLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgbmFtZVxuICB9O1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZSk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFICR7aXRlbUlkfSBXSVRIICR7dXBkYXRlfSBJTiBncm91cHMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoZ3JvdXA6IEdyb3VwVHlwZSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogZ3JvdXBLZXl9ID0gZ3JvdXA7XG4gICAgICBjb25zdCBpdGVtVHlwZTogc3RyaW5nID0gJ2dyb3Vwcyc7XG5cbiAgICAgIC8vIFVwZGF0ZSBsaW5rZWQgdGFnc1xuICAgICAgcmV0dXJuIGV4dHJhY3RUYWdzKGRiLCBpdGVtVHlwZSwgZ3JvdXBLZXksIGRlc2NyaXB0aW9uKS50aGVuKCgpID0+IGdyb3VwKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUdyb3VwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW1JZDogc3RyaW5nKTogUHJvbWlzZTxHcm91cFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBnIElOIGdyb3Vwc1xuICAgICAgRklMVEVSIGcuX2tleSA9PSAke2Zvcm1hdEl0ZW1JZH1cbiAgICAgIFJFTU9WRSBnIElOIGdyb3Vwc1xuICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGdyb3VwOiBHcm91cFR5cGUgPSB7fSkgPT4gZ3JvdXApXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBzQnlSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxHcm91cFR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRHcm91cHNCeVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbjogc3RyaW5nID0gcGFyc2VDaGFyKHJlYWN0aW9uLCAzMik7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSwgciBJTiBPVVRCT1VORCAke3VzZXJEb2NJZH0gaGFzUmVhY3Rpb25cbiAgICAgIEZJTFRFUiByLnZhbHVlID09ICR7Zm9ybWF0UmVhY3Rpb259XG4gICAgICBDT0xMRUNUIHJlYWN0aW9uTmFtZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICBSRVRVUk4ge3ZhbHVlOiByZWFjdGlvbk5hbWUsIGNvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX1gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNHcm91cGVkID0gKGRhdGFiYXNlOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcpOiBQcm9taXNlPEdyb3VwVXNlclR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnaXNHcm91cGVkJztcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IGZvcm1hdEdyb3VwSWQ6IHN0cmluZyA9IHBhcnNlSWQoZ3JvdXBJZCk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcgSU4gZ3JvdXBzXG4gICAgRklMVEVSIGcuX2tleSA9PSAke2Zvcm1hdEdyb3VwSWR9XG4gICAgRk9SIHUgSU4gSU5CT1VORCBnLl9pZCBpc0dyb3VwZWRcbiAgICBGSUxURVIgdS5fa2V5ID09ICR7Zm9ybWF0VXNlcklkfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gdWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigocmVzdWx0cyA9IFtdKSA9PiB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gISFyZXN1bHRzLmxlbmd0aDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXBJZCxcbiAgICAgICAgaXNWYWxpZCxcbiAgICAgICAgdXNlcklkXG4gICAgICB9O1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwge2lkOiB1c2VySWR9KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cEVkZ2UgPSAoZGF0YWJhc2U6IHN0cmluZywgdXNlcklkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZywgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxHcm91cEVkZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2NyZWF0ZUdyb3VwRWRnZSc7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBmb3JtYXRHcm91cElkOiBzdHJpbmcgPSBwYXJzZUlkKGdyb3VwSWQpO1xuICBjb25zdCBmb3JtYXRUeXBlOiBzdHJpbmcgPSBwYXJzZUNoYXIodHlwZSwgMTYpO1xuXG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZSkuZWRnZUNvbGxlY3Rpb24oJ2lzR3JvdXBlZCcpO1xuICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYGdyb3VwLSR7Zm9ybWF0VXNlcklkfS0ke2Zvcm1hdEdyb3VwSWR9YCk7XG5cbiAgY29uc3QgZWRnZTogYW55ID0ge1xuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBhZGRlZDogbm93LFxuICAgIHR5cGU6IGZvcm1hdFR5cGVcbiAgfTtcblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCBgdXNlcnMvJHtmb3JtYXRVc2VySWR9YCwgYGdyb3Vwcy8ke2Zvcm1hdEdyb3VwSWR9YClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCB7aWQ6IGZvcm1hdFVzZXJJZH0pLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ApiContext, FileEdgeType, FileType, ImageType, ImageUrlData } from '../types';
|
|
3
|
+
export declare const getImageListByUser: (context: ApiContext, userId: string, from: number, to: number) => Promise<ImageType[]>;
|
|
4
|
+
export declare const getImageListByGroup: (context: ApiContext, params: any) => Promise<ImageType[]>;
|
|
5
|
+
export declare const getImage: (context: ApiContext, id: string) => Promise<ImageType>;
|
|
6
|
+
export declare const updateImage: (context: ApiContext, item: FileType) => Promise<ImageType>;
|
|
7
|
+
export declare const addImage: (context: ApiContext, image: ImageType) => Promise<ImageType>;
|
|
8
|
+
export declare const addImageEdge: (context: ApiContext, imageEdge: FileEdgeType) => Promise<object>;
|
|
9
|
+
export declare const deleteImage: (context: ApiContext, imgId: any) => Promise<ImageType>;
|
|
10
|
+
export declare const getPathUserImages: (userID: string, photoId: string, type: string, dir?: string) => string;
|
|
11
|
+
export declare const getUrlImages: (data: ImageUrlData) => string;
|
|
12
|
+
export declare const resizeSaveImage: (userId: string, photoId: string, buffer: Buffer, type?: string) => Promise<ImageType>;
|