@nlabs/reaktor 0.1.17 → 0.2.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.
- package/lib/data/conversations.js +13 -15
- package/lib/data/dynamodb.js +4 -2
- package/lib/data/files.js +4 -2
- package/lib/data/images.d.ts +5 -3
- package/lib/data/images.js +143 -85
- package/lib/data/index.js +1 -1
- package/lib/data/ios.js +4 -2
- package/lib/data/messages.js +4 -2
- package/lib/data/payments.js +4 -2
- package/lib/data/posts.js +9 -3
- package/lib/data/reactions.d.ts +14 -6
- package/lib/data/reactions.js +316 -72
- package/lib/data/s3.d.ts +1 -0
- package/lib/data/s3.js +16 -2
- package/lib/data/search.js +4 -2
- package/lib/data/tags.js +4 -2
- package/lib/data/users.d.ts +11 -8
- package/lib/data/users.js +148 -134
- package/lib/types/apps.d.ts +1 -0
- package/lib/types/conversations.d.ts +4 -1
- package/lib/types/images.d.ts +4 -3
- package/lib/types/reactions.d.ts +11 -0
- package/lib/types/users.d.ts +7 -9
- package/lib/utils/analytics.js +7 -5
- package/lib/utils/arangodb.js +2 -1
- package/lib/utils/auth.js +4 -2
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +7 -7
- package/package.json +26 -22
- package/.DS_Store +0 -0
package/lib/data/reactions.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.hasReaction = exports.getItemsByReaction = exports.getReactionsByItem = exports.getGroupUsersByReaction = exports.getReactionCountByUser = exports.getReactionCount = exports.updateReaction = exports.removeReactionByItem = exports.removeReaction = exports.addReaction = exports.parseReactionOptions = void 0;
|
|
7
7
|
|
|
8
8
|
var _utils = require("@nlabs/utils");
|
|
9
9
|
|
|
@@ -11,8 +11,28 @@ var _arangojs = require("arangojs");
|
|
|
11
11
|
|
|
12
12
|
var _utils2 = require("../utils");
|
|
13
13
|
|
|
14
|
+
function _templateObject6() {
|
|
15
|
+
var data = _taggedTemplateLiteral(["FOR i, r IN INBOUND ", " hasReactions\n FILTER r.name == ", " && r._from == ", "\n COLLECT reactionValue = r.value INTO reactionItems\n RETURN MERGE(r, {count: LENGTH(reactionItems[*].r.value)})"]);
|
|
16
|
+
|
|
17
|
+
_templateObject6 = function _templateObject6() {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function _templateObject5() {
|
|
25
|
+
var data = _taggedTemplateLiteral(["FOR i, r IN INBOUND ", " hasReactions\n FILTER r.name == ", " && r.type == ", "\n COLLECT WITH COUNT INTO count\n RETURN count"]);
|
|
26
|
+
|
|
27
|
+
_templateObject5 = function _templateObject5() {
|
|
28
|
+
return data;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
|
|
14
34
|
function _templateObject4() {
|
|
15
|
-
var data = _taggedTemplateLiteral(["
|
|
35
|
+
var data = _taggedTemplateLiteral(["UPSERT ", "\n INSERT ", "\n UPDATE ", "\n LIMIT 1\n RETURN NEW"]);
|
|
16
36
|
|
|
17
37
|
_templateObject4 = function _templateObject4() {
|
|
18
38
|
return data;
|
|
@@ -21,8 +41,14 @@ function _templateObject4() {
|
|
|
21
41
|
return data;
|
|
22
42
|
}
|
|
23
43
|
|
|
44
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
45
|
+
|
|
46
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
47
|
+
|
|
48
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
49
|
+
|
|
24
50
|
function _templateObject3() {
|
|
25
|
-
var data = _taggedTemplateLiteral(["FOR
|
|
51
|
+
var data = _taggedTemplateLiteral(["FOR r IN hasReactions\n FILTER r._from == ", "\n && r._to == ", "\n && r.type == ", "\n && r.name == ", "\n LIMIT 1\n REMOVE r IN hasReactions\n RETURN OLD"]);
|
|
26
52
|
|
|
27
53
|
_templateObject3 = function _templateObject3() {
|
|
28
54
|
return data;
|
|
@@ -32,7 +58,7 @@ function _templateObject3() {
|
|
|
32
58
|
}
|
|
33
59
|
|
|
34
60
|
function _templateObject2() {
|
|
35
|
-
var data = _taggedTemplateLiteral(["
|
|
61
|
+
var data = _taggedTemplateLiteral(["LET r = DOCUMENT(", ")\n FILTER r._from == ", "\n LIMIT 1\n REMOVE r IN hasReactions\n RETURN OLD"]);
|
|
36
62
|
|
|
37
63
|
_templateObject2 = function _templateObject2() {
|
|
38
64
|
return data;
|
|
@@ -42,7 +68,7 @@ function _templateObject2() {
|
|
|
42
68
|
}
|
|
43
69
|
|
|
44
70
|
function _templateObject() {
|
|
45
|
-
var data = _taggedTemplateLiteral(["FOR
|
|
71
|
+
var data = _taggedTemplateLiteral(["FOR r IN hasReactions\n FILTER r._from == ", " && r._to == ", " && r.name == ", "\n LIMIT 1\n RETURN r"]);
|
|
46
72
|
|
|
47
73
|
_templateObject = function _templateObject() {
|
|
48
74
|
return data;
|
|
@@ -55,9 +81,24 @@ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(
|
|
|
55
81
|
|
|
56
82
|
var eventCategory = 'reactions';
|
|
57
83
|
|
|
58
|
-
var
|
|
59
|
-
var
|
|
60
|
-
var
|
|
84
|
+
var parseReactionOptions = function parseReactionOptions() {
|
|
85
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
86
|
+
var _options$from = options.from,
|
|
87
|
+
from = _options$from === void 0 ? 0 : _options$from,
|
|
88
|
+
_options$to = options.to,
|
|
89
|
+
to = _options$to === void 0 ? 30 : _options$to;
|
|
90
|
+
return {
|
|
91
|
+
limit: (0, _utils2.getLimit)(from, to)
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
exports.parseReactionOptions = parseReactionOptions;
|
|
96
|
+
|
|
97
|
+
var addReaction = function addReaction(context, itemId) {
|
|
98
|
+
var itemType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'users';
|
|
99
|
+
var reaction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
100
|
+
var allowDuplicate = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
101
|
+
var action = 'addReaction';
|
|
61
102
|
var database = context.database,
|
|
62
103
|
sessionId = context.userId;
|
|
63
104
|
|
|
@@ -72,39 +113,195 @@ var addGroupReaction = function addGroupReaction(context) {
|
|
|
72
113
|
});
|
|
73
114
|
}
|
|
74
115
|
|
|
75
|
-
var
|
|
76
|
-
|
|
77
|
-
itemValue =
|
|
116
|
+
var _reaction$name = reaction.name,
|
|
117
|
+
itemName = _reaction$name === void 0 ? 'like' : _reaction$name,
|
|
118
|
+
itemValue = reaction.value;
|
|
78
119
|
var formatItemId = (0, _utils.parseId)(itemId);
|
|
79
|
-
var
|
|
80
|
-
var
|
|
81
|
-
|
|
82
|
-
var
|
|
83
|
-
var
|
|
120
|
+
var formatItemType = (0, _utils.parseChar)(itemType, 32);
|
|
121
|
+
var formatReactionName = (0, _utils.parseChar)(itemName, 32);
|
|
122
|
+
var formatValue = (0, _utils.parseString)(itemValue, 32);
|
|
123
|
+
var edgeCollection = (0, _utils2.useDb)(database).edgeCollection('hasReactions');
|
|
124
|
+
var typeDocId = "".concat(formatItemType, "/").concat(formatItemId);
|
|
125
|
+
var sessionDocId = "users/".concat(sessionId);
|
|
84
126
|
var edgeId = (0, _utils.createHash)("reaction-".concat(formatItemId, "-").concat(sessionId));
|
|
85
127
|
var edge = {
|
|
86
128
|
_key: edgeId,
|
|
87
129
|
added: Date.now(),
|
|
88
|
-
|
|
130
|
+
name: formatReactionName,
|
|
131
|
+
type: formatItemType,
|
|
132
|
+
value: formatValue
|
|
133
|
+
}; // Check for duplicates if not allowed
|
|
134
|
+
|
|
135
|
+
if (!allowDuplicate) {
|
|
136
|
+
// Query
|
|
137
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject(), sessionDocId, typeDocId, formatReactionName);
|
|
138
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
139
|
+
return cursor.next();
|
|
140
|
+
}).then(function (reaction) {
|
|
141
|
+
if (!!reaction) {
|
|
142
|
+
return reaction;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return edgeCollection.save(edge, sessionDocId, typeDocId).then(function () {
|
|
146
|
+
return edge;
|
|
147
|
+
});
|
|
148
|
+
})["catch"](function (error) {
|
|
149
|
+
return (0, _utils2.logError)({
|
|
150
|
+
action: action,
|
|
151
|
+
category: eventCategory,
|
|
152
|
+
label: 'db_error'
|
|
153
|
+
}, error, context).then(function () {
|
|
154
|
+
return null;
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return edgeCollection.save(edge, sessionDocId, typeDocId).then(function () {
|
|
160
|
+
return edge;
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
exports.addReaction = addReaction;
|
|
165
|
+
|
|
166
|
+
var removeReaction = function removeReaction(context, reactionId) {
|
|
167
|
+
var action = 'removeReaction';
|
|
168
|
+
var database = context.database,
|
|
169
|
+
sessionId = context.userId;
|
|
170
|
+
|
|
171
|
+
if (!sessionId) {
|
|
172
|
+
return (0, _utils2.logException)({
|
|
173
|
+
action: action,
|
|
174
|
+
category: eventCategory,
|
|
175
|
+
label: 'unauthorized',
|
|
176
|
+
value: 'invalid_session'
|
|
177
|
+
}, context).then(function () {
|
|
178
|
+
return null;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
var formatSessionnId = "users/".concat((0, _utils.parseId)(sessionId));
|
|
183
|
+
var formatReactionId = "hasReactions/".concat((0, _utils.parseId)(reactionId)); // Query
|
|
184
|
+
|
|
185
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject2(), formatReactionId, formatSessionnId);
|
|
186
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
187
|
+
return cursor.next();
|
|
188
|
+
})["catch"](function (error) {
|
|
189
|
+
return (0, _utils2.logError)({
|
|
190
|
+
action: action,
|
|
191
|
+
category: eventCategory,
|
|
192
|
+
label: 'db_error'
|
|
193
|
+
}, error, context).then(function () {
|
|
194
|
+
return null;
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
exports.removeReaction = removeReaction;
|
|
200
|
+
|
|
201
|
+
var removeReactionByItem = function removeReactionByItem(context, itemId, itemType, reactionName) {
|
|
202
|
+
var action = 'removeReaction';
|
|
203
|
+
var database = context.database,
|
|
204
|
+
sessionId = context.userId;
|
|
205
|
+
|
|
206
|
+
if (!sessionId) {
|
|
207
|
+
return (0, _utils2.logException)({
|
|
208
|
+
action: action,
|
|
209
|
+
category: eventCategory,
|
|
210
|
+
label: 'unauthorized',
|
|
211
|
+
value: 'invalid_session'
|
|
212
|
+
}, context).then(function () {
|
|
213
|
+
return null;
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
var formatSessionId = "users/".concat((0, _utils.parseId)(sessionId));
|
|
218
|
+
var formatItemType = (0, _utils.parseChar)(itemType, 32);
|
|
219
|
+
var formatItemDocId = "".concat(formatItemType, "/").concat((0, _utils.parseId)(itemId));
|
|
220
|
+
var formatReactionName = (0, _utils.parseChar)(reactionName, 32); // Query
|
|
221
|
+
|
|
222
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject3(), formatSessionId, formatItemDocId, formatItemType, formatReactionName);
|
|
223
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
224
|
+
return cursor.next();
|
|
225
|
+
})["catch"](function (error) {
|
|
226
|
+
return (0, _utils2.logError)({
|
|
227
|
+
action: action,
|
|
228
|
+
category: eventCategory,
|
|
229
|
+
label: 'db_error'
|
|
230
|
+
}, error, context).then(function () {
|
|
231
|
+
return null;
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
exports.removeReactionByItem = removeReactionByItem;
|
|
237
|
+
|
|
238
|
+
var updateReaction = function updateReaction(context) {
|
|
239
|
+
var reaction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
240
|
+
var action = 'updateReaction';
|
|
241
|
+
var database = context.database,
|
|
242
|
+
sessionId = context.userId;
|
|
243
|
+
|
|
244
|
+
if (!sessionId) {
|
|
245
|
+
return (0, _utils2.logException)({
|
|
246
|
+
action: action,
|
|
247
|
+
category: eventCategory,
|
|
248
|
+
label: 'unauthorized',
|
|
249
|
+
value: 'invalid_session'
|
|
250
|
+
}, context).then(function () {
|
|
251
|
+
return null;
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
var itemId = reaction.id,
|
|
256
|
+
itemName = reaction.name,
|
|
257
|
+
itemType = reaction.type,
|
|
258
|
+
itemValue = reaction.value;
|
|
259
|
+
var formatId = (0, _utils.parseId)(itemId);
|
|
260
|
+
var formatName = (0, _utils.parseChar)(itemName, 32);
|
|
261
|
+
var formatType = (0, _utils.parseChar)(itemType, 32);
|
|
262
|
+
var formatValue = (0, _utils.parseString)(itemValue, 32);
|
|
263
|
+
var edgeId = (0, _utils.createHash)("reaction-".concat(formatId, "-").concat(sessionId));
|
|
264
|
+
var update = {
|
|
265
|
+
name: formatName,
|
|
266
|
+
type: formatType,
|
|
89
267
|
value: formatValue
|
|
90
268
|
};
|
|
91
|
-
|
|
92
|
-
|
|
269
|
+
|
|
270
|
+
var insert = _objectSpread({}, update, {
|
|
271
|
+
_key: edgeId,
|
|
272
|
+
added: Date.now()
|
|
273
|
+
}); // Query
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject4(), {
|
|
277
|
+
_key: formatId
|
|
278
|
+
}, insert, update);
|
|
279
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
280
|
+
return cursor.next();
|
|
281
|
+
})["catch"](function (error) {
|
|
282
|
+
return (0, _utils2.logError)({
|
|
283
|
+
action: action,
|
|
284
|
+
category: eventCategory,
|
|
285
|
+
label: 'db_error'
|
|
286
|
+
}, error, context).then(function () {
|
|
287
|
+
return null;
|
|
288
|
+
});
|
|
93
289
|
});
|
|
94
290
|
};
|
|
95
291
|
|
|
96
|
-
exports.
|
|
292
|
+
exports.updateReaction = updateReaction;
|
|
97
293
|
|
|
98
|
-
var
|
|
99
|
-
var
|
|
100
|
-
var action = 'getReactions';
|
|
294
|
+
var getReactionCount = function getReactionCount(context, itemId, itemType, reactionName) {
|
|
295
|
+
var action = 'getReactionCount';
|
|
101
296
|
var database = context.database;
|
|
102
|
-
var
|
|
103
|
-
var
|
|
297
|
+
var formatItemId = (0, _utils.parseId)(itemId);
|
|
298
|
+
var formatReactionName = (0, _utils.parseChar)(reactionName, 32);
|
|
299
|
+
var formatItemType = (0, _utils.parseChar)(itemType, 32);
|
|
300
|
+
var itemDocId = "".concat(formatItemType, "/").concat(formatItemId); // Query
|
|
104
301
|
|
|
105
|
-
var aqlQry = (0, _arangojs.aql)(
|
|
302
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject5(), itemDocId, formatReactionName, formatItemType);
|
|
106
303
|
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
107
|
-
return cursor.
|
|
304
|
+
return cursor.next();
|
|
108
305
|
})["catch"](function (error) {
|
|
109
306
|
return (0, _utils2.logError)({
|
|
110
307
|
action: action,
|
|
@@ -116,16 +313,19 @@ var getGroupReactions = function getGroupReactions(context) {
|
|
|
116
313
|
});
|
|
117
314
|
};
|
|
118
315
|
|
|
119
|
-
exports.
|
|
316
|
+
exports.getReactionCount = getReactionCount;
|
|
120
317
|
|
|
121
|
-
var
|
|
318
|
+
var getReactionCountByUser = function getReactionCountByUser(context, itemId, itemType, reactionName) {
|
|
122
319
|
var action = 'getReactionsByUser';
|
|
123
320
|
var database = context.database,
|
|
124
321
|
sessionId = context.userId;
|
|
125
|
-
var
|
|
126
|
-
var
|
|
322
|
+
var formatItemId = (0, _utils.parseId)(itemId);
|
|
323
|
+
var formatReactionName = (0, _utils.parseChar)(reactionName, 32);
|
|
324
|
+
var formatItemType = (0, _utils.parseChar)(itemType, 32);
|
|
325
|
+
var sessionDocId = "users/".concat(sessionId);
|
|
326
|
+
var itemDocId = "".concat(formatItemType, "/").concat(formatItemId); // Query
|
|
127
327
|
|
|
128
|
-
var aqlQry = (0, _arangojs.aql)(
|
|
328
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject6(), itemDocId, formatReactionName, sessionDocId);
|
|
129
329
|
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
130
330
|
return cursor.all();
|
|
131
331
|
})["catch"](function (error) {
|
|
@@ -139,9 +339,9 @@ var getReactionsByUser = function getReactionsByUser(context, groupId) {
|
|
|
139
339
|
});
|
|
140
340
|
};
|
|
141
341
|
|
|
142
|
-
exports.
|
|
342
|
+
exports.getReactionCountByUser = getReactionCountByUser;
|
|
143
343
|
|
|
144
|
-
var
|
|
344
|
+
var getGroupUsersByReaction = function getGroupUsersByReaction(context) {
|
|
145
345
|
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
146
346
|
var action = 'getUsersByReaction';
|
|
147
347
|
var database = context.database,
|
|
@@ -183,7 +383,7 @@ var getUsersByReaction = function getUsersByReaction(context) {
|
|
|
183
383
|
}
|
|
184
384
|
}).concat(["r.value == \"".concat(reaction, "\""), 'u._id == r._from']).join(' && '); // Query
|
|
185
385
|
|
|
186
|
-
var aqlQry = "FOR g, r IN INBOUND \"".concat(groupDocId, "\"
|
|
386
|
+
var aqlQry = "FOR g, r IN INBOUND \"".concat(groupDocId, "\" hasReactions\n FOR u IN users\n FILTER ").concat(filterStr, "\n RETURN u");
|
|
187
387
|
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
188
388
|
return cursor.all();
|
|
189
389
|
})["catch"](function (error) {
|
|
@@ -197,47 +397,91 @@ var getUsersByReaction = function getUsersByReaction(context) {
|
|
|
197
397
|
});
|
|
198
398
|
};
|
|
199
399
|
|
|
200
|
-
exports.
|
|
400
|
+
exports.getGroupUsersByReaction = getGroupUsersByReaction;
|
|
401
|
+
|
|
402
|
+
var getReactionsByItem = function getReactionsByItem(context, itemId, itemType, reactionName, options) {
|
|
403
|
+
var action = 'getUsersByReactions';
|
|
404
|
+
var database = context.database;
|
|
405
|
+
var formatItemId = (0, _utils.parseId)(itemId);
|
|
406
|
+
var formatItemType = (0, _utils.parseChar)(itemType, 32);
|
|
407
|
+
var formatReactionName = (0, _utils.parseChar)(reactionName, 32);
|
|
408
|
+
var itemDocId = "".concat(formatItemType, "/").concat(formatItemId);
|
|
409
|
+
|
|
410
|
+
var _parseReactionOptions = parseReactionOptions(options),
|
|
411
|
+
limit = _parseReactionOptions.limit;
|
|
201
412
|
|
|
202
|
-
var
|
|
203
|
-
|
|
413
|
+
var aqlQry = "FOR i, r IN INBOUND \"".concat(itemDocId, "\" hasReactions\n FILTER r.name == \"").concat(formatReactionName, "\"\n ").concat(limit.aql, "\n RETURN MERGE(i, {reaction: r}");
|
|
414
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
415
|
+
return cursor.all();
|
|
416
|
+
})["catch"](function (error) {
|
|
417
|
+
return (0, _utils2.logError)({
|
|
418
|
+
action: action,
|
|
419
|
+
category: eventCategory,
|
|
420
|
+
label: 'db_error'
|
|
421
|
+
}, error, context).then(function () {
|
|
422
|
+
return null;
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
};
|
|
426
|
+
|
|
427
|
+
exports.getReactionsByItem = getReactionsByItem;
|
|
428
|
+
|
|
429
|
+
var getItemsByReaction = function getItemsByReaction(context, itemId, itemType, reactionName, options) {
|
|
430
|
+
var action = 'getUserReactionsByReaction';
|
|
431
|
+
var database = context.database;
|
|
432
|
+
var formatItemId = (0, _utils.parseId)(itemId);
|
|
433
|
+
var formatItemType = (0, _utils.parseChar)(itemType, 32);
|
|
434
|
+
var formatReactionName = (0, _utils.parseChar)(reactionName, 32);
|
|
435
|
+
var itemDocId = "".concat(formatItemType, "/").concat(formatItemId);
|
|
436
|
+
|
|
437
|
+
var _parseReactionOptions2 = parseReactionOptions(options),
|
|
438
|
+
limit = _parseReactionOptions2.limit; // Query
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
var aqlQry = "FOR u, r IN OUTBOUND \"".concat(itemDocId, "\" hasReactions\n FILTER r.name == ").concat(formatReactionName, "\n ").concat(limit.aql, "\n RETURN MERGE(u, {reaction: r})");
|
|
442
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
443
|
+
return cursor.all();
|
|
444
|
+
})["catch"](function (error) {
|
|
445
|
+
return (0, _utils2.logError)({
|
|
446
|
+
action: action,
|
|
447
|
+
category: eventCategory,
|
|
448
|
+
label: 'db_error'
|
|
449
|
+
}, error, context).then(function () {
|
|
450
|
+
return null;
|
|
451
|
+
});
|
|
452
|
+
});
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
exports.getItemsByReaction = getItemsByReaction;
|
|
456
|
+
|
|
457
|
+
var hasReaction = function hasReaction(context, itemId, itemType, reactionName) {
|
|
458
|
+
var direction = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'OUTBOUND';
|
|
459
|
+
var action = 'getReactionsByUser';
|
|
204
460
|
var database = context.database,
|
|
205
461
|
sessionId = context.userId;
|
|
206
|
-
var
|
|
207
|
-
var
|
|
208
|
-
var
|
|
209
|
-
var
|
|
210
|
-
|
|
211
|
-
var
|
|
212
|
-
|
|
213
|
-
var aqlQry = (
|
|
214
|
-
return
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
type: 'posts',
|
|
220
|
-
value: type
|
|
221
|
-
};
|
|
222
|
-
return edgeCollection.save(edge, userDocId, postDocId).then(function () {
|
|
223
|
-
var reactionAqlQry = (0, _arangojs.aql)(_templateObject4());
|
|
224
|
-
return db.query(reactionAqlQry).then(function (cursor) {
|
|
225
|
-
return cursor.next();
|
|
226
|
-
}).then(function () {
|
|
227
|
-
var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
228
|
-
reactions: []
|
|
229
|
-
};
|
|
230
|
-
return result;
|
|
231
|
-
})["catch"](function (error) {
|
|
232
|
-
throw error;
|
|
233
|
-
});
|
|
234
|
-
})["catch"](function (error) {
|
|
235
|
-
throw error;
|
|
236
|
-
});
|
|
462
|
+
var sessionDocId = "users/".concat(sessionId);
|
|
463
|
+
var formatItemId = (0, _utils.parseId)(itemId);
|
|
464
|
+
var formatItemType = (0, _utils.parseChar)(itemType, 32);
|
|
465
|
+
var formatDirection = direction === 'OUTBOUND' ? 'OUTBOUND' : 'INBOUND';
|
|
466
|
+
var itemDirection = direction === 'OUTBOUND' ? 'r._to' : 'r._from';
|
|
467
|
+
var itemDocId = "".concat(formatItemType, "/").concat(formatItemId); // Query
|
|
468
|
+
|
|
469
|
+
var aqlQry = "FOR i, r IN ".concat(formatDirection, " \"").concat(sessionDocId, "\" hasReactions\n FILTER r.name == \"").concat(reactionName, "\" && ").concat(itemDirection, " == \"").concat(itemDocId, "\"\n RETURN MERGE(i, {reaction: r})");
|
|
470
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
471
|
+
return cursor.all();
|
|
472
|
+
}).then(function () {
|
|
473
|
+
var reactions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
474
|
+
return !!reactions.length;
|
|
237
475
|
})["catch"](function (error) {
|
|
238
|
-
|
|
476
|
+
return (0, _utils2.logError)({
|
|
477
|
+
action: action,
|
|
478
|
+
category: eventCategory,
|
|
479
|
+
label: 'db_error'
|
|
480
|
+
}, error, context).then(function () {
|
|
481
|
+
return null;
|
|
482
|
+
});
|
|
239
483
|
});
|
|
240
484
|
};
|
|
241
485
|
|
|
242
|
-
exports.
|
|
243
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3JlYWN0aW9ucy50cyJdLCJuYW1lcyI6WyJldmVudENhdGVnb3J5IiwiYWRkR3JvdXBSZWFjdGlvbiIsImNvbnRleHQiLCJwYXJhbXMiLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImNhdGVnb3J5IiwibGFiZWwiLCJ2YWx1ZSIsInRoZW4iLCJpdGVtSWQiLCJpZCIsIml0ZW1WYWx1ZSIsImZvcm1hdEl0ZW1JZCIsImZvcm1hdFZhbHVlIiwiZWRnZUNvbGxlY3Rpb24iLCJncm91cERvY0lkIiwidXNlckRvY0lkIiwiZWRnZUlkIiwiZWRnZSIsIl9rZXkiLCJhZGRlZCIsIkRhdGUiLCJub3ciLCJ0eXBlIiwic2F2ZSIsImdldEdyb3VwUmVhY3Rpb25zIiwiZ3JvdXBJZCIsImFxbFFyeSIsImFxbCIsInF1ZXJ5IiwiY3Vyc29yIiwiYWxsIiwiZXJyb3IiLCJnZXRSZWFjdGlvbnNCeVVzZXIiLCJnZXRVc2Vyc0J5UmVhY3Rpb24iLCJmaWx0ZXJzIiwicmVhY3Rpb24iLCJmaWx0ZXJTdHIiLCJtYXAiLCJmaWx0ZXIiLCJjb25kaXRpb25hbCIsIm5hbWUiLCJxdWVyeVZhbHVlIiwiZmlsdGVyQ29uZCIsImNvbmNhdCIsImpvaW4iLCJwb3N0UmVhY3Rpb24iLCJwb3N0SWQiLCJkYiIsInBvc3REb2NJZCIsInJlYWN0aW9uQXFsUXJ5IiwibmV4dCIsInJlc3VsdCIsInJlYWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUtBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGFBQXFCLEdBQUcsV0FBOUI7O0FBRU8sSUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDQyxPQUFELEVBQTBFO0FBQUEsTUFBcERDLE1BQW9ELHVFQUF6QixFQUF5QjtBQUN4RyxNQUFNQyxNQUFjLEdBQUcsVUFBdkI7QUFEd0csTUFFakdDLFFB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LCBwYXJzZU51bX0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsLCBEYXRhYmFzZSwgRWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvYXFsLXF1ZXJ5JztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvY3Vyc29yJztcblxuaW1wb3J0IHtBcGlDb250ZXh0LCBRdWVyeUZpbHRlciwgUmVhY3Rpb25UeXBlLCBVc2VyUmVhY3Rpb25RdWVyeSwgVXNlclJlYWN0aW9uVHlwZSwgVXNlclR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7bG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbiwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ3JlYWN0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBhZGRHcm91cFJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uVHlwZSA9IHt9KTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3JlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtpZDogaXRlbUlkLCB2YWx1ZTogaXRlbVZhbHVlID0gJ2xpa2UnfSA9IHBhcmFtcztcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUlkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFZhbHVlOiBzdHJpbmcgPSBwYXJzZUNoYXIoaXRlbVZhbHVlLCAzMik7XG4gIGNvbnN0IGVkZ2VDb2xsZWN0aW9uID0gdXNlRGIoZGF0YWJhc2UpLmVkZ2VDb2xsZWN0aW9uKCdoYXNSZWFjdGlvbicpO1xuXG4gIC8vIFJlbW92ZSBleGlzdGluZyBsaWtlc1xuICBjb25zdCBncm91cERvY0lkOiBzdHJpbmcgPSBgZ3JvdXBzLyR7Zm9ybWF0SXRlbUlkfWA7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGVkZ2VJZDogc3RyaW5nID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtmb3JtYXRJdGVtSWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCBlZGdlOiBhbnkgPSB7XG4gICAgX2tleTogZWRnZUlkLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgIHR5cGU6ICdncm91cCcsXG4gICAgdmFsdWU6IGZvcm1hdFZhbHVlXG4gIH07XG5cbiAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwgdXNlckRvY0lkLCBncm91cERvY0lkKS50aGVuKCgpID0+IHRydWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwUmVhY3Rpb25zID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uVHlwZSA9IHt9KTogUHJvbWlzZTxVc2VyUmVhY3Rpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9ucyc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCB7aWQ6IGdyb3VwSWR9OiBVc2VyUmVhY3Rpb25UeXBlID0gcGFyYW1zO1xuICBjb25zdCBncm91cERvY0lkOiBzdHJpbmcgPSBgZ3JvdXBzLyR7cGFyc2VJZChncm91cElkKX1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcsIHIgSU4gSU5CT1VORCAke2dyb3VwRG9jSWR9IGhhc1JlYWN0aW9uXG4gICAgICBDT0xMRUNUIHJlYWN0aW9uTmFtZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICBSRVRVUk4ge3ZhbHVlOiByZWFjdGlvbk5hbWUsIGNvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX1gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25zQnlVc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGdyb3VwSWQ6IHN0cmluZyk6IFByb21pc2U8VXNlclJlYWN0aW9uVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uc0J5VXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZ3JvdXBEb2NJZDogc3RyaW5nID0gYGdyb3Vwcy8ke3BhcnNlSWQoZ3JvdXBJZCl9YDtcbiAgY29uc3QgdXNlckRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBnLCByIElOIElOQk9VTkQgJHtncm91cERvY0lkfSBoYXNSZWFjdGlvblxuICAgICAgRklMVEVSIHIuX2Zyb20gPT0gJHt1c2VyRG9jSWR9XG4gICAgICBDT0xMRUNUIHJlYWN0aW9uTmFtZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICBSRVRVUk4ge3ZhbHVlOiByZWFjdGlvbk5hbWUsIGNvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX1gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlcnNCeVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uUXVlcnkgPSB7fSk6IFByb21pc2U8VXNlclR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRVc2Vyc0J5UmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG5cbiAgaWYoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3Qge2ZpbHRlcnMgPSBbXSwgaWQ6IGdyb3VwSWQsIHZhbHVlfTogVXNlclJlYWN0aW9uUXVlcnkgPSBwYXJhbXM7XG4gIGNvbnN0IHJlYWN0aW9uID0gcGFyc2VDaGFyKHZhbHVlLCAzMik7XG4gIGNvbnN0IGdyb3VwRG9jSWQgPSBgZ3JvdXBzLyR7cGFyc2VJZChncm91cElkKX1gO1xuICBjb25zdCBmaWx0ZXJTdHI6IHN0cmluZyA9IGZpbHRlcnNcbiAgICAubWFwKChmaWx0ZXI6IFF1ZXJ5RmlsdGVyKSA9PiB7XG4gICAgICBjb25zdCB7Y29uZGl0aW9uYWwsIG5hbWUsIHZhbHVlOiBxdWVyeVZhbHVlfTogUXVlcnlGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICBsZXQgZmlsdGVyQ29uZDogc3RyaW5nID0gY29uZGl0aW9uYWw7XG5cbiAgICAgIGlmKGNvbmRpdGlvbmFsICE9PSAnPj0nICYmIGNvbmRpdGlvbmFsICE9PSAnPD0nICYmIGNvbmRpdGlvbmFsICE9PSAnPicgJiYgY29uZGl0aW9uYWwgIT09ICc8Jykge1xuICAgICAgICBmaWx0ZXJDb25kID0gJz09JztcbiAgICAgIH1cblxuICAgICAgc3dpdGNoKG5hbWUpIHtcbiAgICAgICAgY2FzZSAnYWRkZWQnOlxuICAgICAgICAgIHJldHVybiBgci5hZGRlZCAke2ZpbHRlckNvbmR9ICR7cGFyc2VOdW0ocXVlcnlWYWx1ZSl9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSlcbiAgICAuY29uY2F0KFtcbiAgICAgIGByLnZhbHVlID09IFwiJHtyZWFjdGlvbn1cImAsXG4gICAgICAndS5faWQgPT0gci5fZnJvbSdcbiAgICBdKVxuICAgIC5qb2luKCcgJiYgJyk7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGcsIHIgSU4gSU5CT1VORCBcIiR7Z3JvdXBEb2NJZH1cIiBoYXNSZWFjdGlvblxuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiAgJHtmaWx0ZXJTdHJ9XG4gICAgICBSRVRVUk4gdWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IHBvc3RSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBwb3N0SWQ6IHN0cmluZywgdHlwZTogc3RyaW5nID0gJ2xpa2UnKTogUHJvbWlzZTxSZWFjdGlvblR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQocG9zdElkKTtcbiAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2UpO1xuICBjb25zdCBlZGdlQ29sbGVjdGlvbjogRWRnZUNvbGxlY3Rpb24gPSBkYi5lZGdlQ29sbGVjdGlvbigncmVhY3Rpb25zJyk7XG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcblxuICAvLyBSZW1vdmUgZXhpc3RpbmcgcmVhY3Rpb24gdG8gcG9zdFxuICBjb25zdCBwb3N0RG9jSWQ6IHN0cmluZyA9IGBwb3N0cy8ke2Zvcm1hdEl0ZW1JZH1gO1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBwLCByIElOIElOQk9VTkQgJHtwb3N0RG9jSWR9IHJlYWN0aW9uXG4gICAgRklMVEVSIHIudHlwZSA9PSBcInBvc3RzXCIgJiYgci5fZnJvbSA9PSAke3VzZXJEb2NJZH1cbiAgICBSRU1PVkUgciBJTiByZWFjdGlvbnNcbiAgICBSRVRVUk4gcmA7XG5cbiAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBlZGdlSWQgPSBjcmVhdGVIYXNoKGByZWFjdGlvbi0ke3Bvc3RJZH0tJHtzZXNzaW9uSWR9YCk7XG4gICAgICBjb25zdCBlZGdlOiBhbnkgPSB7XG4gICAgICAgIF9rZXk6IGVkZ2VJZCxcbiAgICAgICAgYWRkZWQ6IG5vdyxcbiAgICAgICAgdHlwZTogJ3Bvc3RzJyxcbiAgICAgICAgdmFsdWU6IHR5cGVcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHVzZXJEb2NJZCwgcG9zdERvY0lkKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVhY3Rpb25BcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCByZWFjdGlvbnMgPSAoXG4gICAgICAgICAgICBGT1IgcG9zdCwgciBJTiBJTkJPVU5EIHAuX2lkIHJlYWN0aW9uc1xuICAgICAgICAgICAgQ09MTEVDVCByZWFjdGlvbk5hbWUgPSByLnZhbHVlIElOVE8gcmVhY3Rpb25JdGVtc1xuICAgICAgICAgICAgUkVUVVJOIHtpZDogcC5faWQsIHR5cGU6IHJlYWN0aW9uTmFtZSwgY291bnQ6IExFTkdUSChyZWFjdGlvbkl0ZW1zWypdLnIudmFsdWUpfVxuICAgICAgICAgIClcbiAgICAgICAgICBSRVRVUk4gcmVhY3Rpb25zYDtcblxuICAgICAgICAgIHJldHVybiBkYi5xdWVyeShyZWFjdGlvbkFxbFFyeSlcbiAgICAgICAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAgICAgLnRoZW4oKHJlc3VsdCA9IHtyZWFjdGlvbnM6IFtdfSkgPT4gcmVzdWx0KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuIl19
|
|
486
|
+
exports.hasReaction = hasReaction;
|
|
487
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3JlYWN0aW9ucy50cyJdLCJuYW1lcyI6WyJldmVudENhdGVnb3J5IiwicGFyc2VSZWFjdGlvbk9wdGlvbnMiLCJvcHRpb25zIiwiZnJvbSIsInRvIiwibGltaXQiLCJhZGRSZWFjdGlvbiIsImNvbnRleHQiLCJpdGVtSWQiLCJpdGVtVHlwZSIsInJlYWN0aW9uIiwiYWxsb3dEdXBsaWNhdGUiLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImNhdGVnb3J5IiwibGFiZWwiLCJ2YWx1ZSIsInRoZW4iLCJuYW1lIiwiaXRlbU5hbWUiLCJpdGVtVmFsdWUiLCJmb3JtYXRJdGVtSWQiLCJmb3JtYXRJdGVtVHlwZSIsImZvcm1hdFJlYWN0aW9uTmFtZSIsImZvcm1hdFZhbHVlIiwiZWRnZUNvbGxlY3Rpb24iLCJ0eXBlRG9jSWQiLCJzZXNzaW9uRG9jSWQiLCJlZGdlSWQiLCJlZGdlIiwiX2tleSIsImFkZGVkIiwiRGF0ZSIsIm5vdyIsInR5cGUiLCJhcWxRcnkiLCJhcWwiLCJxdWVyeSIsImN1cnNvciIsIm5leHQiLCJzYXZlIiwiZXJyb3IiLCJyZW1vdmVSZWFjdGlvbiIsInJlYWN0aW9uSWQiLCJmb3JtYXRTZXNzaW9ubklkIiwiZm9ybWF0UmVhY3Rpb25JZCIsInJlbW92ZVJlYWN0aW9uQnlJdGVtIiwicmVhY3Rpb25OYW1lIiwiZm9ybWF0U2Vzc2lvbklkIiwiZm9ybWF0SXRlbURvY0lkIiwidXBkYXRlUmVhY3Rpb24iLCJpZCIsImZvcm1hdElkIiwiZm9ybWF0TmFtZSIsImZvcm1hdFR5cGUiLCJ1cGRhdGUiLCJpbnNlcnQiLCJnZXRSZWFjdGlvbkNvdW50IiwiaXRlbURvY0lkIiwiZ2V0UmVhY3Rpb25Db3VudEJ5VXNlciIsImFsbCIsImdldEdyb3VwVXNlcnNCeVJlYWN0aW9uIiwicGFyYW1zIiwiZmlsdGVycyIsImdyb3VwSWQiLCJncm91cERvY0lkIiwiZmlsdGVyU3RyIiwibWFwIiwiZmlsdGVyIiwiY29uZGl0aW9uYWwiLCJxdWVyeVZhbHVlIiwiZmlsdGVyQ29uZCIsImNvbmNhdCIsImpvaW4iLCJnZXRSZWFjdGlvbnNCeUl0ZW0iLCJnZXRJdGVtc0J5UmVhY3Rpb24iLCJoYXNSZWFjdGlvbiIsImRpcmVjdGlvbiIsImZvcm1hdERpcmVjdGlvbiIsIml0ZW1EaXJlY3Rpb24iLCJyZWFjdGlvbnMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFhQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGFBQXFCLEdBQUcsV0FBOUI7O0FBRU8sSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixHQUFtQztBQUFBLE1BQWxDQyxPQUFrQyx1RUFBUCxFQUFPO0FBQUEsc0JBSWpFQSxPQUppRSxDQUVuRUMsSUFGbUU7QUFBQSxNQUVuRUEsSUFGbUUsOEJBRTVELENBRjREO0FBQUEsb0JBSWpFRCxPQUppRSxDQUduRUUsRUFIbUU7QUFBQSxNQUduRUEsRUFIbUUsNEJBRzlELEVBSDhEO0FBTXJFLFNBQU87QUFDTEMsSUFBQUEsS0FBSyxFQUFFLHNCQUFTRixJQUFULEVBQWVDLEVBQWY7QUFERixHQUFQO0FBR0QsQ0FUTTs7OztBQVdBLElBQU1FLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQ3pCQyxPQUR5QixFQUV6QkMsTUFGeUIsRUFNQztBQUFBLE1BSDFCQyxRQUcwQix1RUFIUCxPQUdPO0FBQUEsTUFGMUJDLFFBRTBCLHVFQUZELEVBRUM7QUFBQSxNQUQxQkMsY0FDMEIsdUVBREEsS0FDQTtBQUMxQixNQUFNQyxNQUFjLEdBQUcsYUFBdkI7QUFEMEIsTUFFbkJDLFFBRm1CLEdBRVlOLE9BRlosQ0FFbkJNLFFBRm1CO0FBQUEsTUFFREMsU0FGQyxHQUVZUCxPQUZaLENBRVRRLE1BRlM7O0FBSTFCLE1BQUcsQ0FBQ0QsU0FBSixFQUFlO0FBQ2IsV0FBTywwQkFBYTtBQUNs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UWYsTUFBUixDQUE3QjtBQUNBLE1BQU1nQixjQUFzQixHQUFHLHNCQUFVZixRQUFWLEVBQW9CLEVBQXBCLENBQS9CO0FBQ0EsTUFBTXVFLGVBQWUsR0FBR0QsU0FBUyxLQUFLLFVBQWQsR0FBMkIsVUFBM0IsR0FBd0MsU0FBaEU7QUFDQSxNQUFNRSxhQUFxQixHQUFHRixTQUFTLEtBQUssVUFBZCxHQUEyQixPQUEzQixHQUFxQyxTQUFuRTtBQUNBLE1BQU1uQixTQUFpQixhQUFNcEMsY0FBTixjQUF3QkQsWUFBeEIsQ0FBdkIsQ0FSNEIsQ0FVNUI7O0FBQ0EsTUFBTWMsTUFBYyx5QkFBa0IyQyxlQUFsQixnQkFBc0NuRCxZQUF0QyxxREFDRW9CLFlBREYsbUJBQ3NCZ0MsYUFEdEIsbUJBQzJDckIsU0FEM0MsMkNBQXBCO0FBSUEsU0FBTyxtQkFBTS9DLFFBQU4sRUFBZ0IwQixLQUFoQixDQUFzQkYsTUFBdEIsRUFDSmxCLElBREksQ0FDQyxVQUFDcUIsTUFBRDtBQUFBLFdBQXlCQSxNQUFNLENBQUNzQixHQUFQLEVBQXpCO0FBQUEsR0FERCxFQUVKM0MsSUFGSSxDQUVDO0FBQUEsUUFBQytELFNBQUQsdUVBQWEsRUFBYjtBQUFBLFdBQW9CLENBQUMsQ0FBQ0EsU0FBUyxDQUFDQyxNQUFoQztBQUFBLEdBRkQsV0FHRSxVQUFDeEMsS0FBRDtBQUFBLFdBQWtCLHNCQUFTO0FBQ2hDL0IsTUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ0ksTUFBQUEsUUFBUSxFQUFFaEIsYUFGc0I7QUFHaENpQixNQUFBQSxLQUFLLEVBQUU7QUFIeUIsS0FBVCxFQUl0QjBCLEtBSnNCLEVBSWZwQyxPQUplLEVBSU5ZLElBSk0sQ0FJRDtBQUFBLGFBQU0sSUFBTjtBQUFBLEtBSkMsQ0FBbEI7QUFBQSxHQUhGLENBQVA7QUFRRCxDQTdCTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VDaGFyLCBwYXJzZUlkLCBwYXJzZU51bSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuXG5pbXBvcnQge1xuICBBcGlDb250ZXh0LFxuICBRdWVyeUZpbHRlcixcbiAgUmVhY3Rpb25EaXJlY3Rpb24sXG4gIFJlYWN0aW9uT3B0aW9ucyxcbiAgUmVhY3Rpb25UeXBlLFxuICBVc2VyUmVhY3Rpb25RdWVyeSxcbiAgVXNlclR5cGVcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRMaW1pdCwgbG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbiwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ3JlYWN0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZVJlYWN0aW9uT3B0aW9ucyA9IChvcHRpb25zOiBSZWFjdGlvbk9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgZnJvbSA9IDAsXG4gICAgdG8gPSAzMFxuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIGxpbWl0OiBnZXRMaW1pdChmcm9tLCB0bylcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRSZWFjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIGl0ZW1UeXBlOiBzdHJpbmcgPSAndXNlcnMnLFxuICByZWFjdGlvbjogUmVhY3Rpb25UeXBlID0ge30sXG4gIGFsbG93RHVwbGljYXRlOiBib29sZWFuID0gZmFsc2Vcbik6IFByb21pc2U8UmVhY3Rpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBuYW1lOiBpdGVtTmFtZSA9ICdsaWtlJyxcbiAgICB2YWx1ZTogaXRlbVZhbHVlXG4gIH0gPSByZWFjdGlvbjtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUlkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdEl0ZW1UeXBlOiBhbnkgPSBwYXJzZUNoYXIoaXRlbVR5cGUsIDMyKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0VmFsdWU6IHN0cmluZyA9IHBhcnNlU3RyaW5nKGl0ZW1WYWx1ZSwgMzIpO1xuICBjb25zdCBlZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlKS5lZGdlQ29sbGVjdGlvbignaGFzUmVhY3Rpb25zJyk7XG4gIGNvbnN0IHR5cGVEb2NJZDogc3RyaW5nID0gYCR7Zm9ybWF0SXRlbVR5cGV9LyR7Zm9ybWF0SXRlbUlkfWA7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGVkZ2VJZDogc3RyaW5nID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtmb3JtYXRJdGVtSWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCBlZGdlOiBSZWFjdGlvblR5cGUgPSB7XG4gICAgX2tleTogZWRnZUlkLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgIG5hbWU6IGZvcm1hdFJlYWN0aW9uTmFtZSxcbiAgICB0eXBlOiBmb3JtYXRJdGVtVHlwZSxcbiAgICB2YWx1ZTogZm9ybWF0VmFsdWVcbiAgfTtcblxuICAvLyBDaGVjayBmb3IgZHVwbGljYXRlcyBpZiBub3QgYWxsb3dlZFxuICBpZighYWxsb3dEdXBsaWNhdGUpIHtcbiAgICAvLyBRdWVyeVxuICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHIgSU4gaGFzUmVhY3Rpb25zXG4gICAgICBGSUxURVIgci5fZnJvbSA9PSAke3Nlc3Npb25Eb2NJZH0gJiYgci5fdG8gPT0gJHt0eXBlRG9jSWR9ICYmIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiByYDtcblxuICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAudGhlbigocmVhY3Rpb24pID0+IHtcbiAgICAgICAgaWYoISFyZWFjdGlvbikge1xuICAgICAgICAgIHJldHVybiByZWFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHNlc3Npb25Eb2NJZCwgdHlwZURvY0lkKS50aGVuKCgpID0+IGVkZ2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gIH1cblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCBzZXNzaW9uRG9jSWQsIHR5cGVEb2NJZCkudGhlbigoKSA9PiBlZGdlKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJlYWN0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdyZW1vdmVSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcblxuICBpZighc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCBmb3JtYXRTZXNzaW9ubklkOiBzdHJpbmcgPSBgdXNlcnMvJHtwYXJzZUlkKHNlc3Npb25JZCl9YDtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25JZDogc3RyaW5nID0gYGhhc1JlYWN0aW9ucy8ke3BhcnNlSWQocmVhY3Rpb25JZCl9YDtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCByID0gRE9DVU1FTlQoJHtmb3JtYXRSZWFjdGlvbklkfSlcbiAgICBGSUxURVIgci5fZnJvbSA9PSAke2Zvcm1hdFNlc3Npb25uSWR9XG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSByIElOIGhhc1JlYWN0aW9uc1xuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVJlYWN0aW9uQnlJdGVtID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgaXRlbVR5cGU6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmdcbik6IFByb21pc2U8UmVhY3Rpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3JlbW92ZVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZDogc3RyaW5nID0gYHVzZXJzLyR7cGFyc2VJZChzZXNzaW9uSWQpfWA7XG4gIGNvbnN0IGZvcm1hdEl0ZW1UeXBlOiBzdHJpbmcgPSBwYXJzZUNoYXIoaXRlbVR5cGUsIDMyKTtcbiAgY29uc3QgZm9ybWF0SXRlbURvY0lkOiBzdHJpbmcgPSBgJHtmb3JtYXRJdGVtVHlwZX0vJHtwYXJzZUlkKGl0ZW1JZCl9YDtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgciBJTiBoYXNSZWFjdGlvbnNcbiAgICBGSUxURVIgci5fZnJvbSA9PSAke2Zvcm1hdFNlc3Npb25JZH1cbiAgICAgICYmIHIuX3RvID09ICR7Zm9ybWF0SXRlbURvY0lkfVxuICAgICAgJiYgci50eXBlID09ICR7Zm9ybWF0SXRlbVR5cGV9XG4gICAgICAmJiByLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSByIElOIGhhc1JlYWN0aW9uc1xuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHJlYWN0aW9uOiBSZWFjdGlvblR5cGUgPSB7fSk6IFByb21pc2U8UmVhY3Rpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpZDogaXRlbUlkLFxuICAgIG5hbWU6IGl0ZW1OYW1lLFxuICAgIHR5cGU6IGl0ZW1UeXBlLFxuICAgIHZhbHVlOiBpdGVtVmFsdWVcbiAgfSA9IHJlYWN0aW9uO1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXROYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0VHlwZTogYW55ID0gcGFyc2VDaGFyKGl0ZW1UeXBlLCAzMik7XG4gIGNvbnN0IGZvcm1hdFZhbHVlOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhpdGVtVmFsdWUsIDMyKTtcbiAgY29uc3QgZWRnZUlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGByZWFjdGlvbi0ke2Zvcm1hdElkfS0ke3Nlc3Npb25JZH1gKTtcbiAgY29uc3QgdXBkYXRlOiBSZWFjdGlvblR5cGUgPSB7XG4gICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICB0eXBlOiBmb3JtYXRUeXBlLFxuICAgIHZhbHVlOiBmb3JtYXRWYWx1ZVxuICB9O1xuICBjb25zdCBpbnNlcnQ6IFJlYWN0aW9uVHlwZSA9IHtcbiAgICAuLi51cGRhdGUsXG4gICAgX2tleTogZWRnZUlkLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpXG4gIH07XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQgJHt7X2tleTogZm9ybWF0SWR9fVxuICAgIElOU0VSVCAke2luc2VydH1cbiAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlYWN0aW9uQ291bnQgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICBpdGVtVHlwZTogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxSZWFjdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0UmVhY3Rpb25Db3VudCc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBhbnkgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IGZvcm1hdEl0ZW1UeXBlOiBhbnkgPSBwYXJzZUNoYXIoaXRlbVR5cGUsIDMyKTtcbiAgY29uc3QgaXRlbURvY0lkOiBzdHJpbmcgPSBgJHtmb3JtYXRJdGVtVHlwZX0vJHtmb3JtYXRJdGVtSWR9YDtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBpLCByIElOIElOQk9VTkQgJHtpdGVtRG9jSWR9IGhhc1JlYWN0aW9uc1xuICAgIEZJTFRFUiByLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9ICYmIHIudHlwZSA9PSAke2Zvcm1hdEl0ZW1UeXBlfVxuICAgIENPTExFQ1QgV0lUSCBDT1VOVCBJTlRPIGNvdW50XG4gICAgUkVUVVJOIGNvdW50YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWFjdGlvbkNvdW50QnlVc2VyID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgaXRlbVR5cGU6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmdcbik6IFByb21pc2U8UmVhY3Rpb25UeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0UmVhY3Rpb25zQnlVc2VyJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBhbnkgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IGZvcm1hdEl0ZW1UeXBlOiBhbnkgPSBwYXJzZUNoYXIoaXRlbVR5cGUsIDMyKTtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgaXRlbURvY0lkOiBzdHJpbmcgPSBgJHtmb3JtYXRJdGVtVHlwZX0vJHtmb3JtYXRJdGVtSWR9YDtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBpLCByIElOIElOQk9VTkQgJHtpdGVtRG9jSWR9IGhhc1JlYWN0aW9uc1xuICAgICAgRklMVEVSIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX0gJiYgci5fZnJvbSA9PSAke3Nlc3Npb25Eb2NJZH1cbiAgICAgIENPTExFQ1QgcmVhY3Rpb25WYWx1ZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICBSRVRVUk4gTUVSR0Uociwge2NvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwVXNlcnNCeVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uUXVlcnkgPSB7fSk6IFByb21pc2U8VXNlclR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRVc2Vyc0J5UmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG5cbiAgaWYoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3Qge2ZpbHRlcnMgPSBbXSwgaWQ6IGdyb3VwSWQsIHZhbHVlfTogVXNlclJlYWN0aW9uUXVlcnkgPSBwYXJhbXM7XG4gIGNvbnN0IHJlYWN0aW9uID0gcGFyc2VDaGFyKHZhbHVlLCAzMik7XG4gIGNvbnN0IGdyb3VwRG9jSWQgPSBgZ3JvdXBzLyR7cGFyc2VJZChncm91cElkKX1gO1xuICBjb25zdCBmaWx0ZXJTdHI6IHN0cmluZyA9IGZpbHRlcnNcbiAgICAubWFwKChmaWx0ZXI6IFF1ZXJ5RmlsdGVyKSA9PiB7XG4gICAgICBjb25zdCB7Y29uZGl0aW9uYWwsIG5hbWUsIHZhbHVlOiBxdWVyeVZhbHVlfTogUXVlcnlGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICBsZXQgZmlsdGVyQ29uZDogc3RyaW5nID0gY29uZGl0aW9uYWw7XG5cbiAgICAgIGlmKGNvbmRpdGlvbmFsICE9PSAnPj0nICYmIGNvbmRpdGlvbmFsICE9PSAnPD0nICYmIGNvbmRpdGlvbmFsICE9PSAnPicgJiYgY29uZGl0aW9uYWwgIT09ICc8Jykge1xuICAgICAgICBmaWx0ZXJDb25kID0gJz09JztcbiAgICAgIH1cblxuICAgICAgc3dpdGNoKG5hbWUpIHtcbiAgICAgICAgY2FzZSAnYWRkZWQnOlxuICAgICAgICAgIHJldHVybiBgci5hZGRlZCAke2ZpbHRlckNvbmR9ICR7cGFyc2VOdW0ocXVlcnlWYWx1ZSl9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSlcbiAgICAuY29uY2F0KFtcbiAgICAgIGByLnZhbHVlID09IFwiJHtyZWFjdGlvbn1cImAsXG4gICAgICAndS5faWQgPT0gci5fZnJvbSdcbiAgICBdKVxuICAgIC5qb2luKCcgJiYgJyk7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGcsIHIgSU4gSU5CT1VORCBcIiR7Z3JvdXBEb2NJZH1cIiBoYXNSZWFjdGlvbnNcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgICR7ZmlsdGVyU3RyfVxuICAgICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25zQnlJdGVtID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgaXRlbVR5cGU6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlYWN0aW9uT3B0aW9uc1xuKTogUHJvbWlzZTxVc2VyVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFVzZXJzQnlSZWFjdGlvbnMnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUlkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdEl0ZW1UeXBlOiBzdHJpbmcgPSBwYXJzZUNoYXIoaXRlbVR5cGUsIDMyKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IGl0ZW1Eb2NJZCA9IGAke2Zvcm1hdEl0ZW1UeXBlfS8ke2Zvcm1hdEl0ZW1JZH1gO1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VSZWFjdGlvbk9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBpLCByIElOIElOQk9VTkQgXCIke2l0ZW1Eb2NJZH1cIiBoYXNSZWFjdGlvbnNcbiAgICBGSUxURVIgci5uYW1lID09IFwiJHtmb3JtYXRSZWFjdGlvbk5hbWV9XCJcbiAgICAke2xpbWl0LmFxbH1cbiAgICBSRVRVUk4gTUVSR0UoaSwge3JlYWN0aW9uOiByfWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJdGVtc0J5UmVhY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICBpdGVtVHlwZTogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVhY3Rpb25PcHRpb25zXG4pOiBQcm9taXNlPFJlYWN0aW9uVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFVzZXJSZWFjdGlvbnNCeVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRJdGVtVHlwZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1UeXBlLCAzMik7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogc3RyaW5nID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuICBjb25zdCBpdGVtRG9jSWQgPSBgJHtmb3JtYXRJdGVtVHlwZX0vJHtmb3JtYXRJdGVtSWR9YDtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlUmVhY3Rpb25PcHRpb25zKG9wdGlvbnMpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiB1LCByIElOIE9VVEJPVU5EIFwiJHtpdGVtRG9jSWR9XCIgaGFzUmVhY3Rpb25zXG4gICAgRklMVEVSIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICAke2xpbWl0LmFxbH1cbiAgICBSRVRVUk4gTUVSR0UodSwge3JlYWN0aW9uOiByfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzUmVhY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICBpdGVtVHlwZTogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgZGlyZWN0aW9uOiBSZWFjdGlvbkRpcmVjdGlvbiA9ICdPVVRCT1VORCdcbik6IFByb21pc2U8UmVhY3Rpb25UeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0UmVhY3Rpb25zQnlVc2VyJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0SXRlbVR5cGU6IHN0cmluZyA9IHBhcnNlQ2hhcihpdGVtVHlwZSwgMzIpO1xuICBjb25zdCBmb3JtYXREaXJlY3Rpb24gPSBkaXJlY3Rpb24gPT09ICdPVVRCT1VORCcgPyAnT1VUQk9VTkQnIDogJ0lOQk9VTkQnO1xuICBjb25zdCBpdGVtRGlyZWN0aW9uOiBzdHJpbmcgPSBkaXJlY3Rpb24gPT09ICdPVVRCT1VORCcgPyAnci5fdG8nIDogJ3IuX2Zyb20nO1xuICBjb25zdCBpdGVtRG9jSWQ6IHN0cmluZyA9IGAke2Zvcm1hdEl0ZW1UeXBlfS8ke2Zvcm1hdEl0ZW1JZH1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBpLCByIElOICR7Zm9ybWF0RGlyZWN0aW9ufSBcIiR7c2Vzc2lvbkRvY0lkfVwiIGhhc1JlYWN0aW9uc1xuICAgIEZJTFRFUiByLm5hbWUgPT0gXCIke3JlYWN0aW9uTmFtZX1cIiAmJiAke2l0ZW1EaXJlY3Rpb259ID09IFwiJHtpdGVtRG9jSWR9XCJcbiAgICBSRVRVUk4gTUVSR0UoaSwge3JlYWN0aW9uOiByfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLnRoZW4oKHJlYWN0aW9ucyA9IFtdKSA9PiAhIXJlYWN0aW9ucy5sZW5ndGgpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuIl19
|
package/lib/data/s3.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ export declare const s3Head: (params: S3.HeadObjectRequest) => Promise<S3.HeadOb
|
|
|
4
4
|
export declare const s3Put: (params: S3.PutObjectRequest) => Promise<S3.PutObjectOutput>;
|
|
5
5
|
export declare const s3Delete: (params: S3.DeleteObjectRequest) => Promise<S3.DeleteObjectOutput>;
|
|
6
6
|
export declare const s3DeleteList: (params: S3.DeleteObjectsRequest) => Promise<S3.DeleteObjectsOutput>;
|
|
7
|
+
export declare const s3GetSignedUrl: (params: any) => string;
|