@nlabs/reaktor 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/lib/actions/conversations.d.ts +14 -0
  2. package/lib/actions/conversations.js +333 -0
  3. package/lib/actions/dynamodb.js +155 -0
  4. package/lib/actions/email.js +177 -0
  5. package/lib/actions/files.js +319 -0
  6. package/lib/{data → actions}/groups.d.ts +4 -3
  7. package/lib/actions/groups.js +282 -0
  8. package/lib/actions/images.d.ts +22 -0
  9. package/lib/actions/images.js +682 -0
  10. package/lib/actions/index.js +40 -0
  11. package/lib/{data → actions}/ios.d.ts +2 -1
  12. package/lib/actions/ios.js +179 -0
  13. package/lib/actions/locations.js +112 -0
  14. package/lib/actions/messages.d.ts +13 -0
  15. package/lib/actions/messages.js +216 -0
  16. package/lib/{data → actions}/notifications.d.ts +2 -2
  17. package/lib/actions/notifications.js +63 -0
  18. package/lib/{data → actions}/payments.d.ts +2 -2
  19. package/lib/actions/payments.js +491 -0
  20. package/lib/actions/posts.d.ts +19 -0
  21. package/lib/actions/posts.js +538 -0
  22. package/lib/actions/reactions.d.ts +30 -0
  23. package/lib/actions/reactions.js +340 -0
  24. package/lib/{data → actions}/s3.d.ts +1 -1
  25. package/lib/actions/s3.js +122 -0
  26. package/lib/{data → actions}/search.d.ts +2 -2
  27. package/lib/actions/search.js +99 -0
  28. package/lib/actions/sms.js +76 -0
  29. package/lib/actions/statistics.d.ts +2 -0
  30. package/lib/actions/statistics.js +63 -0
  31. package/lib/actions/subscription.js +209 -0
  32. package/lib/actions/tags.d.ts +26 -0
  33. package/lib/actions/tags.js +340 -0
  34. package/lib/actions/users.d.ts +44 -0
  35. package/lib/actions/users.js +571 -0
  36. package/lib/{data → actions}/websockets.d.ts +1 -1
  37. package/lib/actions/websockets.js +156 -0
  38. package/lib/config.d.ts +2 -3
  39. package/lib/config.js +116 -149
  40. package/lib/index.d.ts +1 -1
  41. package/lib/index.js +23 -45
  42. package/lib/templates/email/layout.d.ts +2 -0
  43. package/lib/templates/email/layout.js +292 -0
  44. package/lib/templates/email/passwordForgot.d.ts +2 -0
  45. package/lib/templates/email/passwordForgot.js +28 -0
  46. package/lib/templates/email/passwordRecovery.d.ts +2 -0
  47. package/lib/templates/email/passwordRecovery.js +25 -0
  48. package/lib/templates/email/verifyEmail.d.ts +2 -0
  49. package/lib/templates/email/verifyEmail.js +28 -0
  50. package/lib/templates/email/welcome.d.ts +2 -0
  51. package/lib/templates/email/welcome.js +28 -0
  52. package/lib/templates/sms/passwordForgot.d.ts +2 -0
  53. package/lib/templates/sms/passwordForgot.js +14 -0
  54. package/lib/templates/sms/passwordRecovery.d.ts +2 -0
  55. package/lib/templates/sms/passwordRecovery.js +14 -0
  56. package/lib/templates/sms/verifyEmail.d.ts +2 -0
  57. package/lib/templates/sms/verifyEmail.js +14 -0
  58. package/lib/templates/sms/verifyPhone.d.ts +2 -0
  59. package/lib/templates/sms/verifyPhone.js +14 -0
  60. package/lib/templates/sms/welcome.d.ts +2 -0
  61. package/lib/templates/sms/welcome.js +14 -0
  62. package/lib/types/apps.d.ts +2 -2
  63. package/lib/types/apps.js +4 -2
  64. package/lib/types/arangodb.js +4 -2
  65. package/lib/types/auth.d.ts +4 -8
  66. package/lib/types/auth.js +4 -2
  67. package/lib/types/conversations.d.ts +3 -3
  68. package/lib/types/conversations.js +4 -2
  69. package/lib/types/email.d.ts +2 -2
  70. package/lib/types/email.js +4 -2
  71. package/lib/types/files.js +4 -2
  72. package/lib/types/google.js +4 -2
  73. package/lib/types/groups.d.ts +2 -1
  74. package/lib/types/groups.js +4 -2
  75. package/lib/types/images.d.ts +8 -5
  76. package/lib/types/images.js +4 -2
  77. package/lib/types/index.d.ts +1 -1
  78. package/lib/types/index.js +37 -227
  79. package/lib/types/locations.js +4 -2
  80. package/lib/types/messages.d.ts +12 -2
  81. package/lib/types/messages.js +4 -2
  82. package/lib/types/notifications.d.ts +2 -2
  83. package/lib/types/notifications.js +4 -2
  84. package/lib/types/payments.js +4 -2
  85. package/lib/types/posts.d.ts +18 -1
  86. package/lib/types/posts.js +4 -2
  87. package/lib/types/statistics.d.ts +3 -0
  88. package/lib/types/statistics.js +4 -0
  89. package/lib/types/tags.d.ts +6 -0
  90. package/lib/types/tags.js +4 -2
  91. package/lib/types/users.d.ts +15 -11
  92. package/lib/types/users.js +4 -2
  93. package/lib/utils/analytics.d.ts +7 -0
  94. package/lib/utils/analytics.js +101 -77
  95. package/lib/utils/arangodb.d.ts +1 -1
  96. package/lib/utils/arangodb.js +93 -114
  97. package/lib/utils/auth.js +58 -55
  98. package/lib/utils/graphql.js +38 -19
  99. package/lib/utils/index.d.ts +1 -1
  100. package/lib/utils/index.js +26 -84
  101. package/lib/utils/objects.js +44 -53
  102. package/lib/utils/session.d.ts +18 -0
  103. package/lib/utils/session.js +42 -0
  104. package/package.json +32 -30
  105. package/lib/data/conversations.d.ts +0 -8
  106. package/lib/data/conversations.js +0 -311
  107. package/lib/data/dynamodb.js +0 -206
  108. package/lib/data/email.js +0 -222
  109. package/lib/data/files.js +0 -525
  110. package/lib/data/groups.js +0 -435
  111. package/lib/data/images.d.ts +0 -22
  112. package/lib/data/images.js +0 -1051
  113. package/lib/data/index.js +0 -266
  114. package/lib/data/ios.js +0 -355
  115. package/lib/data/locations.js +0 -172
  116. package/lib/data/messages.d.ts +0 -9
  117. package/lib/data/messages.js +0 -299
  118. package/lib/data/notifications.js +0 -59
  119. package/lib/data/payments.js +0 -771
  120. package/lib/data/posts.d.ts +0 -23
  121. package/lib/data/posts.js +0 -766
  122. package/lib/data/reactions.d.ts +0 -14
  123. package/lib/data/reactions.js +0 -529
  124. package/lib/data/s3.js +0 -155
  125. package/lib/data/search.js +0 -155
  126. package/lib/data/sms.js +0 -83
  127. package/lib/data/subscription.js +0 -337
  128. package/lib/data/tags.d.ts +0 -14
  129. package/lib/data/tags.js +0 -397
  130. package/lib/data/users.d.ts +0 -20
  131. package/lib/data/users.js +0 -470
  132. package/lib/data/websockets.js +0 -250
  133. package/lib/types/reactions.d.ts +0 -17
  134. package/lib/types/reactions.js +0 -2
  135. package/lib/utils/redis.d.ts +0 -1
  136. package/lib/utils/redis.js +0 -36
  137. package/templates/email/layout.html +0 -279
  138. package/templates/email/passwordForgot.html +0 -15
  139. package/templates/email/passwordRecovery.html +0 -12
  140. package/templates/email/verifyEmail.html +0 -15
  141. package/templates/sms/passwordForgot.txt +0 -1
  142. package/templates/sms/passwordRecovery.txt +0 -1
  143. package/templates/sms/verifyEmail.txt +0 -1
  144. package/templates/sms/verifyPhone.txt +0 -1
  145. /package/lib/{data → actions}/dynamodb.d.ts +0 -0
  146. /package/lib/{data → actions}/email.d.ts +0 -0
  147. /package/lib/{data → actions}/files.d.ts +0 -0
  148. /package/lib/{data → actions}/index.d.ts +0 -0
  149. /package/lib/{data → actions}/locations.d.ts +0 -0
  150. /package/lib/{data → actions}/sms.d.ts +0 -0
  151. /package/lib/{data → actions}/subscription.d.ts +0 -0
@@ -1,311 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.symbol");
4
-
5
- require("core-js/modules/es.array.concat");
6
-
7
- require("core-js/modules/es.array.filter");
8
-
9
- require("core-js/modules/es.array.for-each");
10
-
11
- require("core-js/modules/es.array.map");
12
-
13
- require("core-js/modules/es.array.slice");
14
-
15
- require("core-js/modules/es.date.now");
16
-
17
- require("core-js/modules/es.date.to-string");
18
-
19
- require("core-js/modules/es.function.name");
20
-
21
- require("core-js/modules/es.object.define-properties");
22
-
23
- require("core-js/modules/es.object.define-property");
24
-
25
- require("core-js/modules/es.object.freeze");
26
-
27
- require("core-js/modules/es.object.get-own-property-descriptor");
28
-
29
- require("core-js/modules/es.object.get-own-property-descriptors");
30
-
31
- require("core-js/modules/es.object.keys");
32
-
33
- require("core-js/modules/es.string.sub");
34
-
35
- require("core-js/modules/web.dom-collections.for-each");
36
-
37
- Object.defineProperty(exports, "__esModule", {
38
- value: true
39
- });
40
- exports.removeUserToConversation = exports.addUserToConversation = exports.updateConversation = exports.getConversation = exports.getDirectConversation = exports.getConversationList = void 0;
41
-
42
- var _utils = require("@nlabs/utils");
43
-
44
- var _arangojs = require("arangojs");
45
-
46
- var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
47
-
48
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
49
-
50
- var _utils2 = require("../utils");
51
-
52
- var _analytics = require("../utils/analytics");
53
-
54
- var _images = require("./images");
55
-
56
- var _users = require("./users");
57
-
58
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
59
-
60
- function _templateObject5() {
61
- var data = _taggedTemplateLiteral(["FOR c IN hasConversations\n FILTER c._from == ", " && c._to == ", "\n LIMIT 1\n REMOVE c IN hasConversations\n RETURN OLD"]);
62
-
63
- _templateObject5 = function _templateObject5() {
64
- return data;
65
- };
66
-
67
- return data;
68
- }
69
-
70
- function _templateObject4() {
71
- var data = _taggedTemplateLiteral(["FOR c IN hasConversations\n FILTER c._from == ", " && c._to == ", "\n LIMIT 1\n RETURN c"]);
72
-
73
- _templateObject4 = function _templateObject4() {
74
- return data;
75
- };
76
-
77
- return data;
78
- }
79
-
80
- function _templateObject3() {
81
- var data = _taggedTemplateLiteral(["UPSERT {_key: ", " }\n INSERT ", "\n UPDATE ", "\n IN conversations RETURN NEW"]);
82
-
83
- _templateObject3 = function _templateObject3() {
84
- return data;
85
- };
86
-
87
- return data;
88
- }
89
-
90
- 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; }
91
-
92
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
93
-
94
- 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; }
95
-
96
- function _templateObject2() {
97
- var data = _taggedTemplateLiteral(["FOR c, e IN 1..1 OUTBOUND ", " hasConversations\n FILTER c._id == ", "\n LET u = (\n FOR inUser, inEdge IN 1..1 INBOUND ", " hasConversations\n RETURN inUser\n )\n LIMIT 1\n RETURN MERGE(c, {users: u})"]);
98
-
99
- _templateObject2 = function _templateObject2() {
100
- return data;
101
- };
102
-
103
- return data;
104
- }
105
-
106
- function _templateObject() {
107
- var data = _taggedTemplateLiteral(["LET from = (\n FOR c, e IN 1..1 OUTBOUND ", " hasConversations\n FILTER c.direct == true\n RETURN c\n )\n LET to = (\n FOR c, e IN 1..1 OUTBOUND ", " hasConversations\n FILTER c.direct == true\n RETURN c\n )\n LET conversation = FIRST(INTERSECTION(from, to))\n LET users = !IS_NULL(conversation) && (\n FOR g IN[", ", ", "]\n FOR u IN users\n FILTER g == u._id\n RETURN u\n )\n RETURN IS_NULL(conversation) ? null : MERGE(conversation, {users: users})"]);
108
-
109
- _templateObject = function _templateObject() {
110
- return data;
111
- };
112
-
113
- return data;
114
- }
115
-
116
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
117
-
118
- var eventCategory = 'conversations';
119
-
120
- var getConversationList = function getConversationList(context, from, to) {
121
- var action = 'getList';
122
- var database = context.database,
123
- sessionId = context.userId;
124
- var limit = (0, _utils2.getLimit)(from, to);
125
- var sessionDocId = "users/".concat(sessionId);
126
- var aqlQry = "FOR c, e IN 1..1 OUTBOUND \"".concat(sessionDocId, "\" hasConversations\n ").concat(limit.aql, "\n LET users = (\n FOR u, uc IN 1..1 INBOUND c._id hasConversations\n FILTER u._id != \"").concat(sessionDocId, "\"\n RETURN u\n )\n RETURN MERGE(c, {users: users})");
127
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
128
- return cursor.all();
129
- })["catch"](function (error) {
130
- return (0, _analytics.logError)({
131
- action: action,
132
- category: eventCategory,
133
- label: 'db_error'
134
- }, error, context).then(function () {
135
- return null;
136
- });
137
- });
138
- };
139
-
140
- exports.getConversationList = getConversationList;
141
-
142
- var getDirectConversation = function getDirectConversation(context, userId) {
143
- var action = 'getDirectConversation';
144
- var database = context.database,
145
- sessionId = context.userId;
146
- var sessionDocId = "users/".concat(sessionId);
147
- var userDocId = "users/".concat((0, _utils.parseId)(userId));
148
- var aqlQry = (0, _arangojs.aql)(_templateObject(), sessionDocId, userDocId, sessionDocId, userDocId);
149
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
150
- return cursor.next();
151
- })["catch"](function (error) {
152
- return (0, _analytics.logError)({
153
- action: action,
154
- category: eventCategory,
155
- label: 'db_error'
156
- }, error, context).then(function () {
157
- return null;
158
- });
159
- });
160
- };
161
-
162
- exports.getDirectConversation = getDirectConversation;
163
-
164
- var getConversation = function getConversation(context, convoId) {
165
- var action = 'getItem';
166
- var database = context.database,
167
- sessionId = context.userId;
168
- var sessionDocId = "users/".concat(sessionId);
169
- var convoDocId = "conversations/".concat((0, _utils.parseId)(convoId));
170
- var aqlQry = (0, _arangojs.aql)(_templateObject2(), sessionDocId, convoDocId, convoDocId);
171
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
172
- return cursor.next();
173
- }).then(function () {
174
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
175
-
176
- if (!(0, _isEmpty["default"])(conversation)) {
177
- conversation.users = conversation.users.map(function (user) {
178
- var imgId = user.imgId,
179
- sub = user.sub;
180
- var thumbUrlData = {
181
- imgId: imgId,
182
- isThumb: true,
183
- sub: sub
184
- };
185
- return _objectSpread(_objectSpread({}, user), {}, {
186
- name: (0, _users.getDisplayName)(user),
187
- thumb: (0, _images.getUserImageUrl)(thumbUrlData)
188
- });
189
- });
190
- return conversation;
191
- }
192
-
193
- return {};
194
- })["catch"](function (error) {
195
- return (0, _analytics.logError)({
196
- action: action,
197
- category: eventCategory,
198
- label: 'db_error'
199
- }, error, context).then(function () {
200
- return null;
201
- });
202
- });
203
- };
204
-
205
- exports.getConversation = getConversation;
206
-
207
- var updateConversation = function updateConversation(context, conversation) {
208
- var action = 'updateConversation';
209
- var database = context.database,
210
- sessionId = context.userId;
211
- var direct = conversation.direct,
212
- _conversation$convoId = conversation.convoId,
213
- convoId = _conversation$convoId === void 0 ? (0, _utils.createHash)("convo - ".concat(sessionId, " ")) : _conversation$convoId,
214
- name = conversation.name;
215
- var formatConvoId = (0, _utils.parseId)(convoId);
216
- var now = Date.now();
217
- var update = {
218
- // Direct message
219
- direct: direct,
220
- modified: now,
221
- name: name
222
- };
223
-
224
- var insert = _objectSpread(_objectSpread({}, (0, _cloneDeep["default"])(update)), {}, {
225
- _key: formatConvoId,
226
- added: now
227
- });
228
-
229
- var aqlQry = (0, _arangojs.aql)(_templateObject3(), formatConvoId, insert, update);
230
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
231
- return cursor.next();
232
- }).then(function () {
233
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
234
- return conversation;
235
- })["catch"](function (error) {
236
- return (0, _analytics.logError)({
237
- action: action,
238
- category: eventCategory,
239
- label: 'db_error'
240
- }, error, context).then(function () {
241
- return null;
242
- });
243
- });
244
- };
245
-
246
- exports.updateConversation = updateConversation;
247
-
248
- var addUserToConversation = function addUserToConversation(context, convoId, userId) {
249
- var action = 'addUserToConversation';
250
- var database = context.database;
251
- var formatConvoId = (0, _utils.parseId)(convoId);
252
- var formatUserId = (0, _utils.parseId)(userId);
253
- var convoDocId = "conversations/".concat(formatConvoId, " ");
254
- var userDocId = "users/".concat(formatUserId, " ");
255
- var aqlQry = (0, _arangojs.aql)(_templateObject4(), userDocId, convoDocId);
256
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
257
- return cursor.next();
258
- }).then(function (conversationEdge) {
259
- if (!!conversationEdge) {
260
- return conversationEdge;
261
- }
262
-
263
- var edgeCollection = (0, _utils2.useDb)(database).collection('hasConversations');
264
- var edgeId = (0, _utils.createHash)("convo - ".concat(formatConvoId, " -").concat(formatUserId, " "));
265
- var edge = {
266
- _from: userDocId,
267
- _key: edgeId,
268
- _to: convoDocId,
269
- added: Date.now()
270
- };
271
- return edgeCollection.save(edge, {
272
- returnNew: true
273
- }).then(function () {
274
- return edge;
275
- });
276
- })["catch"](function (error) {
277
- return (0, _analytics.logError)({
278
- action: action,
279
- category: eventCategory,
280
- label: 'db_error'
281
- }, error, context).then(function () {
282
- return null;
283
- });
284
- });
285
- };
286
-
287
- exports.addUserToConversation = addUserToConversation;
288
-
289
- var removeUserToConversation = function removeUserToConversation(context, convoId, userId) {
290
- var action = 'addUserToConversation';
291
- var database = context.database;
292
- var formatConvoId = (0, _utils.parseId)(convoId);
293
- var formatUserId = (0, _utils.parseId)(userId);
294
- var convoDocId = "conversations / ".concat(formatConvoId, " ");
295
- var userDocId = "users/".concat(formatUserId, " ");
296
- var aqlQry = (0, _arangojs.aql)(_templateObject5(), userDocId, convoDocId);
297
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
298
- return cursor.next();
299
- })["catch"](function (error) {
300
- return (0, _analytics.logError)({
301
- action: action,
302
- category: eventCategory,
303
- label: 'db_error'
304
- }, error, context).then(function () {
305
- return null;
306
- });
307
- });
308
- };
309
-
310
- exports.removeUserToConversation = removeUserToConversation;
311
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2NvbnZlcnNhdGlvbnMudHMiXSwibmFtZXMiOlsiZXZlbnRDYXRlZ29yeSIsImdldENvbnZlcnNhdGlvbkxpc3QiLCJjb250ZXh0IiwiZnJvbSIsInRvIiwiYWN0aW9uIiwiZGF0YWJhc2UiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJsaW1pdCIsInNlc3Npb25Eb2NJZCIsImFxbFFyeSIsImFxbCIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsImFsbCIsImVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCIsImdldERpcmVjdENvbnZlcnNhdGlvbiIsInVzZXJEb2NJZCIsIm5leHQiLCJnZXRDb252ZXJzYXRpb24iLCJjb252b0lkIiwiY29udm9Eb2NJZCIsImNvbnZlcnNhdGlvbiIsInVzZXJzIiwibWFwIiwidXNlciIsImltZ0lkIiwic3ViIiwidGh1bWJVcmxEYXRhIiwiaXNUaHVtYiIsIm5hbWUiLCJ0aHVtYiIsInVwZGF0ZUNvbnZlcnNhdGlvbiIsImRpcmVjdCIsImZvcm1hdENvbnZvSWQiLCJub3ciLCJEYXRlIiwidXBkYXRlIiwibW9kaWZpZWQiLCJpbnNlcnQiLCJfa2V5IiwiYWRkZWQiLCJhZGRVc2VyVG9Db252ZXJzYXRpb24iLCJmb3JtYXRVc2VySWQiLCJjb252ZXJzYXRpb25FZGdlIiwiZWRnZUNvbGxlY3Rpb24iLCJjb2xsZWN0aW9uIiwiZWRnZUlkIiwiZWRnZSIsIl9mcm9tIiwiX3RvIiwic2F2ZSIsInJldHVybk5ldyIsInJlbW92ZVVzZXJUb0NvbnZlcnNhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxhQUFxQixHQUFHLGVBQTlCOztBQUVP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QUFILHNCQUNBUyxTQURBLEVBQ3lCSSxVQUR6QixDQUF0QjtBQU1BLFNBQU8sbUJBQU1uQixRQUFOLEVBQWdCTyxLQUFoQixDQUFzQkYsTUFBdEIsRUFDSkcsSUFESSxDQUNDLFVBQUNDLE1BQUQ7QUFBQSxXQUF5QkEsTUFBTSxDQUFDTyxJQUFQLEVBQXpCO0FBQUEsR0FERCxXQUVFLFVBQUNMLEtBQUQ7QUFBQSxXQUFrQix5QkFBUztBQUNoQ1osTUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ2EsTUFBQUEsUUFBUSxFQUFFbEIsYUFGc0I7QUFHaENtQixNQUFBQSxLQUFLLEVBQUU7QUFIeUIsS0FBVCxFQUl0QkYsS0FKc0IsRUFJZmYsT0FKZSxFQUlOWSxJQUpNLENBSUQ7QUFBQSxhQUFNLElBQU47QUFBQSxLQUpDLENBQWxCO0FBQUEsR0FGRixDQUFQO0FBT0QsQ0FyQk0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9uJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICd0eXBlcy9hdXRoJztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0LCBDb252ZXJzYXRpb25UeXBlLCBJbWFnZVVybERhdGEsIFVzZXJUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzJztcbmltcG9ydCB7Z2V0VXNlckltYWdlVXJsfSBmcm9tICcuL2ltYWdlcyc7XG5pbXBvcnQge2dldERpc3BsYXlOYW1lfSBmcm9tICcuL3VzZXJzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2NvbnZlcnNhdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uTGlzdCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRMaXN0JztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBsaW1pdDogQXJhbmdvREJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGMsIGUgSU4gMS4uMSBPVVRCT1VORCBcIiR7c2Vzc2lvbkRvY0lkfVwiIGhhc0NvbnZlcnNhdGlvbnNcbiAgICAke2xpbWl0LmFxbH1cbiAgICBMRVQgdXNlcnMgPSAoXG4gICAgICBGT1IgdSwgdWMgSU4gMS4uMSBJTkJPVU5EIGMuX2lkIGhhc0NvbnZlcnNhdGlvbnNcbiAgICAgIEZJTFRFUiB1Ll9pZCAhPSBcIiR7c2Vzc2lvbkRvY0lkfVwiXG4gICAgICBSRVRVUk4gdVxuICAgIClcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXJzOiB1c2Vyc30pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERpcmVjdENvbnZlcnNhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCB1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXREaXJlY3RDb252ZXJzYXRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7cGFyc2VJZCh1c2VySWQpfWA7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgZnJvbSA9IChcbiAgICAgIEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgJHtzZXNzaW9uRG9jSWR9IGhhc0NvbnZlcnNhdGlvbnNcbiAgICAgIEZJTFRFUiBjLmRpcmVjdCA9PSB0cnVlXG4gICAgICBSRVRVUk4gY1xuICAgIClcbiAgICBMRVQgdG8gPSAoXG4gICAgICBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7dXNlckRvY0lkfSBoYXNDb252ZXJzYXRpb25zXG4gICAgICBGSUxURVIgYy5kaXJlY3QgPT0gdHJ1ZVxuICAgICAgUkVUVVJOIGNcbiAgICApXG4gICAgTEVUIGNvbnZlcnNhdGlvbiA9IEZJUlNUKElOVEVSU0VDVElPTihmcm9tLCB0bykpXG4gICAgTEVUIHVzZXJzID0gIUlTX05VTEwoY29udmVyc2F0aW9uKSAmJiAoXG4gICAgICBGT1IgZyBJTlske3Nlc3Npb25Eb2NJZH0sICR7dXNlckRvY0lkfV1cbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgZyA9PSB1Ll9pZFxuICAgICAgUkVUVVJOIHVcbiAgICApXG4gICAgUkVUVVJOIElTX05VTEwoY29udmVyc2F0aW9uKSA/IG51bGwgOiBNRVJHRShjb252ZXJzYXRpb24sIHt1c2VyczogdXNlcnN9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBjb252b0RvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke3BhcnNlSWQoY29udm9JZCl9YDtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgJHtzZXNzaW9uRG9jSWR9IGhhc0NvbnZlcnNhdGlvbnNcbiAgICBGSUxURVIgYy5faWQgPT0gJHtjb252b0RvY0lkfVxuICAgIExFVCB1ID0gKFxuICAgICAgRk9SIGluVXNlciwgaW5FZGdlIElOIDEuLjEgSU5CT1VORCAke2NvbnZvRG9jSWR9IGhhc0NvbnZlcnNhdGlvbnNcbiAgICAgIFJFVFVSTiBpblVzZXJcbiAgICApXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBNRVJHRShjLCB7dXNlcnM6IHV9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSA9IHt9KSA9PiB7XG4gICAgICBpZighaXNFbXB0eShjb252ZXJzYXRpb24pKSB7XG4gICAgICAgIGNvbnZlcnNhdGlvbi51c2VycyA9IGNvbnZlcnNhdGlvbi51c2Vycy5tYXAoKHVzZXI6IFVzZXJUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3Qge2ltZ0lkLCBzdWJ9ID0gdXNlcjtcbiAgICAgICAgICBjb25zdCB0aHVtYlVybERhdGE6IEltYWdlVXJsRGF0YSA9IHtcbiAgICAgICAgICAgIGltZ0lkLFxuICAgICAgICAgICAgaXNUaHVtYjogdHJ1ZSxcbiAgICAgICAgICAgIHN1YlxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgICBuYW1lOiBnZXREaXNwbGF5TmFtZSh1c2VyKSxcbiAgICAgICAgICAgIHRodW1iOiBnZXRVc2VySW1hZ2VVcmwodGh1bWJVcmxEYXRhKVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb252ZXJzYXRpb247XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVDb252ZXJzYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgY29udmVyc2F0aW9uKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZUNvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGRpcmVjdCxcbiAgICBjb252b0lkID0gY3JlYXRlSGFzaChgY29udm8gLSAke3Nlc3Npb25JZH0gYCksXG4gICAgbmFtZVxuICB9ID0gY29udmVyc2F0aW9uO1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IHVwZGF0ZTogYW55ID0ge1xuICAgIC8vIERpcmVjdCBtZXNzYWdlXG4gICAgZGlyZWN0LFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgbmFtZVxuICB9O1xuXG4gIGNvbnN0IGluc2VydDogYW55ID0ge1xuICAgIC4uLmNsb25lRGVlcCh1cGRhdGUpLFxuICAgIF9rZXk6IGZvcm1hdENvbnZvSWQsXG4gICAgYWRkZWQ6IG5vd1xuICB9O1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtfa2V5OiAke2Zvcm1hdENvbnZvSWR9IH1cbiAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgVVBEQVRFICR7dXBkYXRlfVxuICAgIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSA9IHt9KSA9PiBjb252ZXJzYXRpb24pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkVXNlclRvQ29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkVXNlclRvQ29udmVyc2F0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdENvbnZvSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udm9JZCk7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBjb252b0RvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke2Zvcm1hdENvbnZvSWR9IGA7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7Zm9ybWF0VXNlcklkfSBgO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGMgSU4gaGFzQ29udmVyc2F0aW9uc1xuICAgIEZJTFRFUiBjLl9mcm9tID09ICR7dXNlckRvY0lkfSAmJiBjLl90byA9PSAke2NvbnZvRG9jSWR9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBjYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoY29udmVyc2F0aW9uRWRnZSkgPT4ge1xuICAgICAgaWYoISFjb252ZXJzYXRpb25FZGdlKSB7XG4gICAgICAgIHJldHVybiBjb252ZXJzYXRpb25FZGdlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlZGdlQ29sbGVjdGlvbjogRWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZSkuY29sbGVjdGlvbignaGFzQ29udmVyc2F0aW9ucycpO1xuICAgICAgY29uc3QgZWRnZUlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGBjb252byAtICR7Zm9ybWF0Q29udm9JZH0gLSR7Zm9ybWF0VXNlcklkfSBgKTtcblxuICAgICAgY29uc3QgZWRnZTogQ29udmVyc2F0aW9uVHlwZSA9IHtcbiAgICAgICAgX2Zyb206IHVzZXJEb2NJZCxcbiAgICAgICAgX2tleTogZWRnZUlkLFxuICAgICAgICBfdG86IGNvbnZvRG9jSWQsXG4gICAgICAgIGFkZGVkOiBEYXRlLm5vdygpXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSkudGhlbigoKSA9PiBlZGdlKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVVzZXJUb0NvbnZlcnNhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBjb252b0lkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFVzZXJUb0NvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuICBjb25zdCBmb3JtYXRVc2VySWQ6IHN0cmluZyA9IHBhcnNlSWQodXNlcklkKTtcbiAgY29uc3QgY29udm9Eb2NJZDogc3RyaW5nID0gYGNvbnZlcnNhdGlvbnMgLyAke2Zvcm1hdENvbnZvSWR9IGA7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7Zm9ybWF0VXNlcklkfSBgO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGMgSU4gaGFzQ29udmVyc2F0aW9uc1xuICAgIEZJTFRFUiBjLl9mcm9tID09ICR7dXNlckRvY0lkfSAmJiBjLl90byA9PSAke2NvbnZvRG9jSWR9XG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSBjIElOIGhhc0NvbnZlcnNhdGlvbnNcbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG4iXX0=
@@ -1,206 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
-
5
- require("core-js/modules/es.symbol");
6
-
7
- require("core-js/modules/es.array.filter");
8
-
9
- require("core-js/modules/es.array.for-each");
10
-
11
- require("core-js/modules/es.date.to-string");
12
-
13
- require("core-js/modules/es.object.define-properties");
14
-
15
- require("core-js/modules/es.object.define-property");
16
-
17
- require("core-js/modules/es.object.get-own-property-descriptor");
18
-
19
- require("core-js/modules/es.object.get-own-property-descriptors");
20
-
21
- require("core-js/modules/es.object.keys");
22
-
23
- require("core-js/modules/es.object.to-string");
24
-
25
- require("core-js/modules/es.parse-float");
26
-
27
- require("core-js/modules/es.promise");
28
-
29
- require("core-js/modules/es.regexp.to-string");
30
-
31
- require("core-js/modules/web.dom-collections.for-each");
32
-
33
- Object.defineProperty(exports, "__esModule", {
34
- value: true
35
- });
36
- exports.dynamoDel = exports.dynamoPutList = exports.dynamoUpdate = exports.dynamoPut = exports.dynamoGetList = exports.parseDynamo = exports.dynamoGet = void 0;
37
-
38
- var _awsSdk = _interopRequireWildcard(require("aws-sdk"));
39
-
40
- var _config = require("../config");
41
-
42
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
43
-
44
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
45
-
46
- 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; }
47
-
48
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
49
-
50
- 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; }
51
-
52
- // const eventCategory: string = 'dynamodb';
53
- var dynamoGet = function dynamoGet(params) {
54
- return new Promise(function (resolve, reject) {
55
- _awsSdk["default"].config.update(_config.Config.get('aws'));
56
-
57
- var dynamodb = new _awsSdk.DynamoDB();
58
- params.ConsistentRead = false;
59
- dynamodb.getItem(params, function (error, results) {
60
- if (error) {
61
- return reject(error);
62
- }
63
-
64
- return resolve(results);
65
- });
66
- });
67
- };
68
-
69
- exports.dynamoGet = dynamoGet;
70
-
71
- var parseDynamo = function parseDynamo(results) {
72
- var items = results.Items;
73
- var data = [];
74
-
75
- for (var idx = 0, len = items.length; idx < len; idx++) {
76
- var tmp = items[idx];
77
- var obj = {};
78
- var key = void 0;
79
-
80
- for (key in tmp) {
81
- if (tmp.hasOwnProperty(key)) {
82
- if (tmp[key].S) {
83
- obj[key] = tmp[key].S.toString();
84
- } else if (tmp[key].N) {
85
- obj[key] = parseFloat(tmp[key].N);
86
- } else {
87
- obj[key] = tmp[key].B;
88
- }
89
- }
90
- }
91
-
92
- data.push(obj);
93
- }
94
-
95
- return data;
96
- };
97
-
98
- exports.parseDynamo = parseDynamo;
99
-
100
- var dynamoGetList = function dynamoGetList(params, index) {
101
- return new Promise(function (resolve, reject) {
102
- _awsSdk["default"].config.update(_config.Config.get('aws'));
103
-
104
- var dynamodb = new _awsSdk.DynamoDB();
105
- var consistentRead = params.ConsistentRead;
106
-
107
- var updatedParams = _objectSpread({}, params);
108
-
109
- if (index) {
110
- updatedParams.ExclusiveStartKey = index;
111
- }
112
-
113
- if (!consistentRead) {
114
- updatedParams.ConsistentRead = false;
115
- }
116
-
117
- dynamodb.query(updatedParams, function (error, output) {
118
- if (error) {
119
- return reject(error);
120
- } // Save list of items
121
-
122
-
123
- var list = parseDynamo(output);
124
- var lastKey = output.LastEvaluatedKey;
125
-
126
- if (lastKey !== undefined) {
127
- // Save last index before looping
128
- return dynamoGetList(params, lastKey);
129
- } // Query complete, return final list
130
-
131
-
132
- return resolve(list);
133
- });
134
- });
135
- };
136
-
137
- exports.dynamoGetList = dynamoGetList;
138
-
139
- var dynamoPut = function dynamoPut(params) {
140
- return new Promise(function (resolve, reject) {
141
- _awsSdk["default"].config.update(_config.Config.get('aws'));
142
-
143
- var dynamodb = new _awsSdk.DynamoDB();
144
- dynamodb.putItem(params, function (error, output) {
145
- if (error) {
146
- return reject(error);
147
- }
148
-
149
- return resolve(output);
150
- });
151
- });
152
- };
153
-
154
- exports.dynamoPut = dynamoPut;
155
-
156
- var dynamoUpdate = function dynamoUpdate(params) {
157
- return new Promise(function (resolve, reject) {
158
- _awsSdk["default"].config.update(_config.Config.get('aws'));
159
-
160
- var dynamodb = new _awsSdk.DynamoDB();
161
- dynamodb.updateItem(params, function (error, output) {
162
- if (error) {
163
- return reject(error);
164
- }
165
-
166
- return resolve(output);
167
- });
168
- });
169
- };
170
-
171
- exports.dynamoUpdate = dynamoUpdate;
172
-
173
- var dynamoPutList = function dynamoPutList(params) {
174
- return new Promise(function (resolve, reject) {
175
- _awsSdk["default"].config.update(_config.Config.get('aws'));
176
-
177
- var dynamodb = new _awsSdk.DynamoDB();
178
- dynamodb.batchWriteItem(params, function (error, output) {
179
- if (error) {
180
- return reject(error);
181
- }
182
-
183
- return resolve(output);
184
- });
185
- });
186
- };
187
-
188
- exports.dynamoPutList = dynamoPutList;
189
-
190
- var dynamoDel = function dynamoDel(params) {
191
- return new Promise(function (resolve, reject) {
192
- _awsSdk["default"].config.update(_config.Config.get('aws'));
193
-
194
- var dynamodb = new _awsSdk.DynamoDB();
195
- dynamodb.deleteItem(params, function (error, output) {
196
- if (error) {
197
- return reject(error);
198
- }
199
-
200
- return resolve(output);
201
- });
202
- });
203
- };
204
-
205
- exports.dynamoDel = dynamoDel;
206
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2R5bmFtb2RiLnRzIl0sIm5hbWVzIjpbImR5bmFtb0dldCIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYXdzIiwiY29uZmlnIiwidXBkYXRlIiwiQ29uZmlnIiwiZ2V0IiwiZHluYW1vZGIiLCJEeW5hbW9EQiIsIkNvbnNpc3RlbnRSZWFkIiwiZ2V0SXRlbSIsImVycm9yIiwicmVzdWx0cyIsInBhcnNlRHluYW1vIiwiaXRlbXMiLCJJdGVtcyIsImRhdGEiLCJpZHgiLCJsZW4iLCJsZW5ndGgiLCJ0bXAiLCJvYmoiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsIlMiLCJ0b1N0cmluZyIsIk4iLCJwYXJzZUZsb2F0IiwiQiIsInB1c2giLCJkeW5hbW9HZXRMaXN0IiwiaW5kZXgiLCJjb25zaXN0ZW50UmVhZCIsInVwZGF0ZWRQYXJhbXMiLCJFeGNsdXNpdmVTdGFydEtleSIsInF1ZXJ5Iiwib3V0cHV0IiwibGlzdCIsImxhc3RLZXkiLCJMYXN0RXZhbHVhdGVkS2V5IiwidW5kZWZpbmVkIiwiZHluYW1vUHV0IiwicHV0SXRlbSIsImR5bmFtb1VwZGF0ZSIsInVwZGF0ZUl0ZW0iLCJkeW5hbW9QdXRMaXN0IiwiYmF0Y2hXcml0ZUl0ZW0iLCJkeW5hbW9EZWwiLCJkZWxldGVJdGVtIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUE7O0FBZ0JBOzs7Ozs7Ozs7Ozs7QUFFQTtBQUVPLElBQU1BLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQUNDLE1BQUQ7QUFBQSxTQUFrRCxJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQzFHQyx1QkFBSUMsTUFBSixDQUFXQyxNQUFYLENBQWtCQyxlQUFPQyxHQUFQLENBQVcsS0FBWCxDQUFsQjs7QUFDQSxRQUFNQyxRQUFrQixHQUFHLElBQUlDLGdCQUFKLEVBQTNCO0FBQ0FWLElBQUFBLE1BQU0sQ0FBQ1csY0FBUCxHQUF3QixLQUF4QjtBQUVBRixJQUFBQSxRQUFRLENBQUNHLE9BQVQsQ0FBaUJaLE1BQWpCLEVBQXlCLFVBQUNhLEtBQUQsRUFBZUMsT0FBZixFQUEwQztBQUNqRSxVQUFHRCxLQUFILEVBQVU7QUFDUixlQUFPVixNQUFNLENBQUNVLEtBQUQsQ0FBYjtBQUNEOztBQUVELGFBQU9YLE9BQU8sQ0FBQ1ksT0FBRCxDQUFkO0FBQ0QsS0FORDtBQU9ELEdBWjBFLENBQWxEO0FBQUEsQ0FBbEI7Ozs7QUFjQSxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFDRCxPQUFELEVBQWlDO0FBQUEsTUFDNUNFLEtBRDRDLEdBQ25DRixPQURtQyxDQUNuREcsS0FEbUQ7QUFFMUQsTUFBTUMsSUFBVyxHQUFHLEVBQXBCOztBQUVBLE9BQUksSUFBSUMsR0FBVyxHQUFHLENBQWxCLEVBQXFCQyxHQUFHLEdBQUdKLEtBQUssQ0FBQ0ssTUFBckMsRUFBNkNGLEdBQUcsR0FBR0MsR0FBbkQsRUFBd0RELEdBQUcsRUFBM0QsRUFBK0Q7QUFDN0QsUUFBTUcsR0FBRyxHQUFHTixLQUFLLENBQUNHLEdBQUQsQ0FBakI7QUFDQSxRQUFNSSxHQUFHLEdBQUcsRUFBWjtBQUNBLFFBQUlDLEdBQUcsU0FBUDs7QUFFQSxTQUFJQSxHQUFKLElBQVdGLEdBQVgsRUFBZ0I7QUFDZCxVQUFHQSxHQUFHLENBQUNHLGNBQUosQ0FBbUJELEdBQW5CLENBQUgsRUFBNEI7QUFDMUIsWUFBR0YsR0FBRyxDQUFDRSxHQUFELENBQUgsQ0FBU0UsQ0FBWixFQUFlO0FBQ2JILFVBQUFBLEdBQUcsQ0FBQ0MsR0FBRCxDQUFILEdBQVdGLEdBQUcsQ0FBQ0UsR0FBRCxDQUFILENBQVNFLENBQVQsQ0FBV0MsUUFBWCxFQUFYO0FBQ0QsU0FGRCxNQUVPLElBQUdMLEdBQUcsQ0FBQ0UsR0FBRCxDQUFILENBQVNJLENBQVosRUFBZTtBQUNwQkwsVUFBQUEsR0FBRyxDQUFDQyxHQUFELENBQUgsR0FBV0ssVUFBVSxDQUFDUCxHQUFHLENBQUNFLEdBQUQsQ0FBSCxDQUFTSSxDQUFWLENBQXJCO0FBQ0QsU0FGTSxNQUVBO0FBQ0xMLFVBQUFBLEdBQUcsQ0FBQ0MsR0FBRCxDQUFILEdBQVdGLEdBQUcsQ0FBQ0UsR0FBRCxDQUFILENBQVNNLENBQXBCO0FBQ0Q7QUFDRjtBQUNGOztBQUVEWixJQUFBQSxJQUFJLENBQUNhLElBQUwsQ0FBVVIsR0FBVjtBQUNEOztBQUVELFNBQU9MLElBQVA7QUFDRCxDQXpCTTs7OztBQTJCQSxJQUFNYyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQUNoQyxNQUFELEVBQXFCaUMsS0FBckI7QUFBQSxTQUF5RCxJQUFJaEMsT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUNySEMsdUJBQUlDLE1BQUosQ0FBV0MsTUFBWCxDQUFrQkMsZUFBT0MsR0FBUCxDQUFXLEtBQVgsQ0FBbEI7O0FBQ0EsUUFBTUMsUUFBa0IsR0FBRyxJQUFJQyxnQkFBSixFQUEzQjtBQUZxSCxRQUc5RndCLGNBSDhGLEdBRzVFbEMsTUFINEUsQ0FHOUdXLGNBSDhHOztBQUlySCxRQUFNd0IsYUFBYSxxQkFBT25DLE1BQVAsQ0FBbkI7O0FBRUEsUUFBR2lDLEtBQUgsRUFBVTtBQUNSRSxNQUFBQSxhQUFhLENBQUNDLGlCQUFkLEdBQWtDSCxLQUFsQztBQUNEOztBQUVELFFBQUcsQ0FBQ0MsY0FBSixFQUFvQjtBQUNsQkMsTUFBQUEsYUFBYSxDQUFDeEIsY0FBZCxHQUErQixLQUEvQjtBQUNEOztBQUVERixJQUFBQSxRQUFRLENBQUM0QixLQUFULENBQWVGLGFBQWYsRUFBOEIsVUFBQ3RCLEtBQUQsRUFBZXlCLE1BQWYsRUFBdUM7QUFDbkUsVUFBR3pCLEtBQUgsRUFBVTtBQUNSLGVBQU9WLE1BQU0sQ0FBQ1UsS0FBRCxDQUFiO0FBQ0QsT0FIa0UsQ0FJbkU7OztBQUNBLFVBQU0wQixJQUFXLEdBQUd4QixXQUFXLENBQUN1QixNQUFELENBQS9CO0FBTG1FLFVBTTFDRSxPQU4wQyxHQU0vQkYsTUFOK0IsQ0FNNURHLGdCQU40RDs7QUFRbkUsVUFBR0QsT0FBTyxLQUFLRSxTQUFmLEVBQTBCO0FBQ3hCO0FBQ0EsZUFBT1YsYUFBYSxDQUFDaEMsTUFBRCxFQUFTd0MsT0FBVCxDQUFwQjtBQUNELE9BWGtFLENBYW5FOzs7QUFDQSxhQUFPdEMsT0FBTyxDQUFDcUMsSUFBRCxDQUFkO0FBQ0QsS0FmRDtBQWdCRCxHQTlCcUYsQ0FBekQ7QUFBQSxDQUF0Qjs7OztBQWdDQSxJQUFNSSxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFDM0MsTUFBRDtBQUFBLFNBQWtELElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDMUdDLHVCQUFJQyxNQUFKLENBQVdDLE1BQVgsQ0FBa0JDLGVBQU9DLEdBQVAsQ0FBVyxLQUFYLENBQWxCOztBQUNBLFFBQU1DLFFBQWtCLEdBQUcsSUFBSUMsZ0JBQUosRUFBM0I7QUFFQUQsSUFBQUEsUUFBUSxDQUFDbUMsT0FBVCxDQUFpQjVDLE1BQWpCLEVBQXlCLFVBQUNhLEtBQUQsRUFBUXlCLE1BQVIsRUFBa0M7QUFDekQsVUFBR3pCLEtBQUgsRUFBVTtBQUNSLGVBQU9WLE1BQU0sQ0FBQ1UsS0FBRCxDQUFiO0FBQ0Q7O0FBQ0QsYUFBT1gsT0FBTyxDQUFDb0MsTUFBRCxDQUFkO0FBQ0QsS0FMRDtBQU1ELEdBVjBFLENBQWxEO0FBQUEsQ0FBbEI7Ozs7QUFZQSxJQUFNTyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFDN0MsTUFBRDtBQUFBLFNBQXdELElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDbkhDLHVCQUFJQyxNQUFKLENBQVdDLE1BQVgsQ0FBa0JDLGVBQU9DLEdBQVAsQ0FBVyxLQUFYLENBQWxCOztBQUNBLFFBQU1DLFFBQWtCLEdBQUcsSUFBSUMsZ0JBQUosRUFBM0I7QUFFQUQsSUFBQUEsUUFBUSxDQUFDcUMsVUFBVCxDQUFvQjlDLE1BQXBCLEVBQTRCLFVBQUNhLEtBQUQsRUFBZXlCLE1BQWYsRUFBNEM7QUFDdEUsVUFBR3pCLEtBQUgsRUFBVTtBQUNSLGVBQU9WLE1BQU0sQ0FBQ1UsS0FBRCxDQUFiO0FBQ0Q7O0FBQ0QsYUFBT1gsT0FBTyxDQUFDb0MsTUFBRCxDQUFkO0FBQ0QsS0FMRDtBQU1ELEdBVm1GLENBQXhEO0FBQUEsQ0FBckI7Ozs7QUFZQSxJQUFNUyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQUMvQyxNQUFEO0FBQUEsU0FDM0IsSUFBSUMsT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUMvQkMsdUJBQUlDLE1BQUosQ0FBV0MsTUFBWCxDQUFrQkMsZUFBT0MsR0FBUCxDQUFXLEtBQVgsQ0FBbEI7O0FBQ0EsUUFBTUMsUUFBa0IsR0FBRyxJQUFJQyxnQkFBSixFQUEzQjtBQUVBRCxJQUFBQSxRQUFRLENBQUN1QyxjQUFULENBQXdCaEQsTUFBeEIsRUFBZ0MsVUFBQ2EsS0FBRCxFQUFleUIsTUFBZixFQUFnRDtBQUM5RSxVQUFHekIsS0FBSCxFQUFVO0FBQ1IsZUFBT1YsTUFBTSxDQUFDVSxLQUFELENBQWI7QUFDRDs7QUFDRCxhQUFPWCxPQUFPLENBQUNvQyxNQUFELENBQWQ7QUFDRCxLQUxEO0FBTUQsR0FWRCxDQUQyQjtBQUFBLENBQXRCOzs7O0FBYUEsSUFBTVcsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ2pELE1BQUQ7QUFBQSxTQUF3RCxJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ2hIQyx1QkFBSUMsTUFBSixDQUFXQyxNQUFYLENBQWtCQyxlQUFPQyxHQUFQLENBQVcsS0FBWCxDQUFsQjs7QUFDQSxRQUFNQyxRQUFrQixHQUFHLElBQUlDLGdCQUFKLEVBQTNCO0FBRUFELElBQUFBLFFBQVEsQ0FBQ3lDLFVBQVQsQ0FBb0JsRCxNQUFwQixFQUE0QixVQUFDYSxLQUFELEVBQVF5QixNQUFSLEVBQXFDO0FBQy9ELFVBQUd6QixLQUFILEVBQVU7QUFDUixlQUFPVixNQUFNLENBQUNVLEtBQUQsQ0FBYjtBQUNEOztBQUNELGFBQU9YLE9BQU8sQ0FBQ29DLE1BQUQsQ0FBZDtBQUNELEtBTEQ7QUFNRCxHQVZnRixDQUF4RDtBQUFBLENBQWxCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBhd3MsIHtEeW5hbW9EQn0gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQge1xuICBCYXRjaFdyaXRlSXRlbUlucHV0LFxuICBCYXRjaFdyaXRlSXRlbU91dHB1dCxcbiAgRGVsZXRlSXRlbUlucHV0LFxuICBEZWxldGVJdGVtT3V0cHV0LFxuICBHZXRJdGVtSW5wdXQsXG4gIEdldEl0ZW1PdXRwdXQsXG4gIFB1dEl0ZW1JbnB1dCxcbiAgUHV0SXRlbU91dHB1dCxcbiAgUXVlcnlJbnB1dCxcbiAgUXVlcnlPdXRwdXQsXG4gIFVwZGF0ZUl0ZW1JbnB1dCxcbiAgVXBkYXRlSXRlbU91dHB1dFxufSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvZHluYW1vZGInO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2R5bmFtb2RiJztcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0dldCA9IChwYXJhbXM6IEdldEl0ZW1JbnB1dCk6IFByb21pc2U8R2V0SXRlbU91dHB1dD4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuICBwYXJhbXMuQ29uc2lzdGVudFJlYWQgPSBmYWxzZTtcblxuICBkeW5hbW9kYi5nZXRJdGVtKHBhcmFtcywgKGVycm9yOiBFcnJvciwgcmVzdWx0czogR2V0SXRlbU91dHB1dCkgPT4ge1xuICAgIGlmKGVycm9yKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHRzKTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlRHluYW1vID0gKHJlc3VsdHM6IFF1ZXJ5T3V0cHV0KTogYW55W10gPT4ge1xuICBjb25zdCB7SXRlbXM6IGl0ZW1zfSA9IHJlc3VsdHM7XG4gIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG5cbiAgZm9yKGxldCBpZHg6IG51bWJlciA9IDAsIGxlbiA9IGl0ZW1zLmxlbmd0aDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNvbnN0IHRtcCA9IGl0ZW1zW2lkeF07XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgbGV0IGtleTtcblxuICAgIGZvcihrZXkgaW4gdG1wKSB7XG4gICAgICBpZih0bXAuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBpZih0bXBba2V5XS5TKSB7XG4gICAgICAgICAgb2JqW2tleV0gPSB0bXBba2V5XS5TLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZih0bXBba2V5XS5OKSB7XG4gICAgICAgICAgb2JqW2tleV0gPSBwYXJzZUZsb2F0KHRtcFtrZXldLk4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9ialtrZXldID0gdG1wW2tleV0uQjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGRhdGEucHVzaChvYmopO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgZHluYW1vR2V0TGlzdCA9IChwYXJhbXM6IFF1ZXJ5SW5wdXQsIGluZGV4KTogUHJvbWlzZTxHZXRJdGVtT3V0cHV0W10+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcbiAgY29uc3Qge0NvbnNpc3RlbnRSZWFkOiBjb25zaXN0ZW50UmVhZH0gPSBwYXJhbXM7XG4gIGNvbnN0IHVwZGF0ZWRQYXJhbXMgPSB7Li4ucGFyYW1zfTtcblxuICBpZihpbmRleCkge1xuICAgIHVwZGF0ZWRQYXJhbXMuRXhjbHVzaXZlU3RhcnRLZXkgPSBpbmRleDtcbiAgfVxuXG4gIGlmKCFjb25zaXN0ZW50UmVhZCkge1xuICAgIHVwZGF0ZWRQYXJhbXMuQ29uc2lzdGVudFJlYWQgPSBmYWxzZTtcbiAgfVxuXG4gIGR5bmFtb2RiLnF1ZXJ5KHVwZGF0ZWRQYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogUXVlcnlPdXRwdXQpID0+IHtcbiAgICBpZihlcnJvcikge1xuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgfVxuICAgIC8vIFNhdmUgbGlzdCBvZiBpdGVtc1xuICAgIGNvbnN0IGxpc3Q6IGFueVtdID0gcGFyc2VEeW5hbW8ob3V0cHV0KTtcbiAgICBjb25zdCB7TGFzdEV2YWx1YXRlZEtleTogbGFzdEtleX0gPSBvdXRwdXQ7XG5cbiAgICBpZihsYXN0S2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFNhdmUgbGFzdCBpbmRleCBiZWZvcmUgbG9vcGluZ1xuICAgICAgcmV0dXJuIGR5bmFtb0dldExpc3QocGFyYW1zLCBsYXN0S2V5KTtcbiAgICB9XG5cbiAgICAvLyBRdWVyeSBjb21wbGV0ZSwgcmV0dXJuIGZpbmFsIGxpc3RcbiAgICByZXR1cm4gcmVzb2x2ZShsaXN0KTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1B1dCA9IChwYXJhbXM6IFB1dEl0ZW1JbnB1dCk6IFByb21pc2U8UHV0SXRlbU91dHB1dD4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gIGR5bmFtb2RiLnB1dEl0ZW0ocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogUHV0SXRlbU91dHB1dCkgPT4ge1xuICAgIGlmKGVycm9yKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1VwZGF0ZSA9IChwYXJhbXM6IFVwZGF0ZUl0ZW1JbnB1dCk6IFByb21pc2U8VXBkYXRlSXRlbU91dHB1dD4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gIGR5bmFtb2RiLnVwZGF0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFVwZGF0ZUl0ZW1PdXRwdXQpID0+IHtcbiAgICBpZihlcnJvcikge1xuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gIH0pO1xufSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9QdXRMaXN0ID0gKHBhcmFtczogQmF0Y2hXcml0ZUl0ZW1JbnB1dCk6IFByb21pc2U8QmF0Y2hXcml0ZUl0ZW1PdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gICAgY29uc3QgZHluYW1vZGI6IER5bmFtb0RCID0gbmV3IER5bmFtb0RCKCk7XG5cbiAgICBkeW5hbW9kYi5iYXRjaFdyaXRlSXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogQmF0Y2hXcml0ZUl0ZW1PdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9EZWwgPSAocGFyYW1zOiBEZWxldGVJdGVtSW5wdXQpOiBQcm9taXNlPERlbGV0ZUl0ZW1PdXRwdXQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcblxuICBkeW5hbW9kYi5kZWxldGVJdGVtKHBhcmFtcywgKGVycm9yLCBvdXRwdXQ6IERlbGV0ZUl0ZW1PdXRwdXQpID0+IHtcbiAgICBpZihlcnJvcikge1xuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gIH0pO1xufSk7XG4iXX0=