@nlabs/reaktor 0.1.2 → 0.1.4

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 (145) hide show
  1. package/.DS_Store +0 -0
  2. package/.eslintrc +18 -0
  3. package/lib/config.d.ts +21 -0
  4. package/lib/config.js +130 -0
  5. package/lib/data/conversations.d.ts +6 -0
  6. package/lib/data/conversations.js +197 -0
  7. package/lib/data/dynamodb.d.ts +8 -0
  8. package/lib/data/dynamodb.js +139 -0
  9. package/lib/data/email.d.ts +7 -0
  10. package/lib/data/email.js +163 -0
  11. package/lib/data/files.d.ts +16 -0
  12. package/lib/data/files.js +406 -0
  13. package/lib/data/groups.d.ts +13 -0
  14. package/lib/data/groups.js +354 -0
  15. package/lib/data/images.d.ts +12 -0
  16. package/lib/data/images.js +667 -0
  17. package/{src/data/index.ts → lib/data/index.d.ts} +1 -5
  18. package/lib/data/index.js +24 -0
  19. package/lib/data/ios.d.ts +6 -0
  20. package/lib/data/ios.js +302 -0
  21. package/lib/data/locations.d.ts +3 -0
  22. package/lib/data/locations.js +132 -0
  23. package/lib/data/messages.d.ts +9 -0
  24. package/lib/data/messages.js +248 -0
  25. package/lib/data/notifications.d.ts +5 -0
  26. package/lib/data/notifications.js +42 -0
  27. package/lib/data/payments.d.ts +11 -0
  28. package/lib/data/payments.js +748 -0
  29. package/lib/data/posts.d.ts +22 -0
  30. package/lib/data/posts.js +579 -0
  31. package/lib/data/reactions.d.ts +6 -0
  32. package/lib/data/reactions.js +218 -0
  33. package/lib/data/s3.d.ts +6 -0
  34. package/lib/data/s3.js +103 -0
  35. package/lib/data/search.d.ts +3 -0
  36. package/lib/data/search.js +98 -0
  37. package/lib/data/sms.d.ts +3 -0
  38. package/lib/data/sms.js +59 -0
  39. package/lib/data/subscription.d.ts +7 -0
  40. package/lib/data/subscription.js +284 -0
  41. package/lib/data/tags.d.ts +14 -0
  42. package/lib/data/tags.js +304 -0
  43. package/lib/data/users.d.ts +12 -0
  44. package/lib/data/users.js +310 -0
  45. package/lib/index.d.ts +3 -0
  46. package/lib/index.js +8 -0
  47. package/lib/types/apps.d.ts +43 -0
  48. package/lib/types/apps.js +2 -0
  49. package/lib/types/arangodb.d.ts +17 -0
  50. package/lib/types/arangodb.js +2 -0
  51. package/lib/types/auth.d.ts +10 -0
  52. package/lib/types/auth.js +2 -0
  53. package/lib/types/conversations.d.ts +6 -0
  54. package/lib/types/conversations.js +2 -0
  55. package/lib/types/email.d.ts +12 -0
  56. package/lib/types/email.js +2 -0
  57. package/lib/types/files.d.ts +26 -0
  58. package/lib/types/files.js +2 -0
  59. package/lib/types/google.d.ts +27 -0
  60. package/lib/types/google.js +2 -0
  61. package/lib/types/groups.d.ts +21 -0
  62. package/lib/types/groups.js +2 -0
  63. package/lib/types/images.d.ts +24 -0
  64. package/lib/types/images.js +2 -0
  65. package/{src/types/index.ts → lib/types/index.d.ts} +0 -4
  66. package/lib/types/index.js +22 -0
  67. package/lib/types/locations.d.ts +20 -0
  68. package/lib/types/locations.js +2 -0
  69. package/lib/types/messages.d.ts +12 -0
  70. package/lib/types/messages.js +2 -0
  71. package/lib/types/notifications.d.ts +19 -0
  72. package/lib/types/notifications.js +2 -0
  73. package/lib/types/payments.d.ts +114 -0
  74. package/lib/types/payments.js +2 -0
  75. package/lib/types/posts.d.ts +28 -0
  76. package/lib/types/posts.js +2 -0
  77. package/lib/types/reactions.d.ts +4 -0
  78. package/lib/types/reactions.js +2 -0
  79. package/lib/types/tags.d.ts +9 -0
  80. package/lib/types/tags.js +2 -0
  81. package/lib/types/users.d.ts +78 -0
  82. package/lib/types/users.js +2 -0
  83. package/lib/utils/analytics.d.ts +3 -0
  84. package/lib/utils/analytics.js +47 -0
  85. package/lib/utils/arangodb.d.ts +9 -0
  86. package/lib/utils/arangodb.js +98 -0
  87. package/lib/utils/auth.d.ts +7 -0
  88. package/lib/utils/auth.js +80 -0
  89. package/lib/utils/graphql.d.ts +1 -0
  90. package/lib/utils/graphql.js +7 -0
  91. package/{src/utils/index.ts → lib/utils/index.d.ts} +0 -4
  92. package/lib/utils/index.js +11 -0
  93. package/lib/utils/objects.d.ts +3 -0
  94. package/lib/utils/objects.js +34 -0
  95. package/lib/utils/redis.d.ts +1 -0
  96. package/lib/utils/redis.js +15 -0
  97. package/package.json +8 -7
  98. package/.vscode/extensions.json +0 -15
  99. package/.vscode/settings.json +0 -82
  100. package/lex.config.js +0 -4
  101. package/src/config.ts +0 -127
  102. package/src/data/conversations.ts +0 -181
  103. package/src/data/dynamodb.ts +0 -157
  104. package/src/data/email.ts +0 -163
  105. package/src/data/files.ts +0 -352
  106. package/src/data/groups.ts +0 -308
  107. package/src/data/images.ts +0 -606
  108. package/src/data/ios.ts +0 -249
  109. package/src/data/locations.ts +0 -114
  110. package/src/data/messages.ts +0 -237
  111. package/src/data/notifications.ts +0 -48
  112. package/src/data/payments.ts +0 -675
  113. package/src/data/posts.ts +0 -580
  114. package/src/data/reactions.ts +0 -186
  115. package/src/data/s3.ts +0 -117
  116. package/src/data/search.ts +0 -74
  117. package/src/data/sms.ts +0 -60
  118. package/src/data/subscription.ts +0 -228
  119. package/src/data/tags.ts +0 -230
  120. package/src/data/users.ts +0 -254
  121. package/src/index.ts +0 -7
  122. package/src/types/apps.ts +0 -56
  123. package/src/types/arangodb.ts +0 -23
  124. package/src/types/auth.ts +0 -20
  125. package/src/types/conversations.ts +0 -11
  126. package/src/types/email.ts +0 -17
  127. package/src/types/files.ts +0 -31
  128. package/src/types/google.ts +0 -37
  129. package/src/types/groups.ts +0 -27
  130. package/src/types/images.ts +0 -32
  131. package/src/types/locations.ts +0 -24
  132. package/src/types/messages.ts +0 -16
  133. package/src/types/notifications.ts +0 -26
  134. package/src/types/payments.ts +0 -129
  135. package/src/types/posts.ts +0 -34
  136. package/src/types/reactions.ts +0 -8
  137. package/src/types/tags.ts +0 -13
  138. package/src/types/users.ts +0 -89
  139. package/src/utils/analytics.ts +0 -41
  140. package/src/utils/arangodb.ts +0 -100
  141. package/src/utils/auth.ts +0 -61
  142. package/src/utils/graphql.ts +0 -7
  143. package/src/utils/objects.ts +0 -34
  144. package/src/utils/redis.ts +0 -17
  145. package/tsconfig.json +0 -45
@@ -0,0 +1,6 @@
1
+ import { ApiContext, ReactionType, UserReactionQuery, UserReactionType, UserType } from '../types';
2
+ export declare const addGroupReaction: (context: ApiContext, params?: UserReactionType) => Promise<boolean>;
3
+ export declare const getGroupReactions: (context: ApiContext, params?: UserReactionType) => Promise<UserReactionType>;
4
+ export declare const getReactionsByUser: (context: ApiContext, groupId: string) => Promise<UserReactionType[]>;
5
+ export declare const getUsersByReaction: (context: ApiContext, params?: UserReactionQuery) => Promise<UserType[]>;
6
+ export declare const postReaction: (context: ApiContext, postId: string, type?: string) => Promise<ReactionType>;
@@ -0,0 +1,218 @@
1
+ function _templateObject4() {
2
+ var data = _taggedTemplateLiteral(["LET reactions = (\n FOR post, r IN INBOUND p._id reactions\n COLLECT reactionName = r.value INTO reactionItems\n RETURN {id: p._id, type: reactionName, count: LENGTH(reactionItems[*].r.value)}\n )\n RETURN reactions"]);
3
+
4
+ _templateObject4 = function _templateObject4() {
5
+ return data;
6
+ };
7
+
8
+ return data;
9
+ }
10
+
11
+ function _templateObject3() {
12
+ var data = _taggedTemplateLiteral(["FOR p, r IN INBOUND ", " reaction\n FILTER r.type == \"posts\" && r._from == ", "\n REMOVE r IN reactions\n RETURN r"]);
13
+
14
+ _templateObject3 = function _templateObject3() {
15
+ return data;
16
+ };
17
+
18
+ return data;
19
+ }
20
+
21
+ function _templateObject2() {
22
+ var data = _taggedTemplateLiteral(["FOR g, r IN INBOUND ", " hasReaction\n FILTER r._from == ", "\n COLLECT reactionName = r.value INTO reactionItems\n RETURN {value: reactionName, count: LENGTH(reactionItems[*].r.value)}"]);
23
+
24
+ _templateObject2 = function _templateObject2() {
25
+ return data;
26
+ };
27
+
28
+ return data;
29
+ }
30
+
31
+ function _templateObject() {
32
+ var data = _taggedTemplateLiteral(["FOR g, r IN INBOUND ", " hasReaction\n COLLECT reactionName = r.value INTO reactionItems\n RETURN {value: reactionName, count: LENGTH(reactionItems[*].r.value)}"]);
33
+
34
+ _templateObject = function _templateObject() {
35
+ return data;
36
+ };
37
+
38
+ return data;
39
+ }
40
+
41
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
42
+
43
+ import { createHash, parseChar, parseId, parseNum } from '@nlabs/utils';
44
+ import { aql } from 'arangojs';
45
+ import { logError, logException, useDb } from '../utils';
46
+ var eventCategory = 'reactions';
47
+ export var addGroupReaction = function addGroupReaction(context) {
48
+ var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
49
+ var action = 'reaction';
50
+ var database = context.database,
51
+ sessionId = context.userId;
52
+
53
+ if (!sessionId) {
54
+ return logException({
55
+ action: action,
56
+ category: eventCategory,
57
+ label: 'unauthorized',
58
+ value: 'invalid_session'
59
+ }, context).then(function () {
60
+ return null;
61
+ });
62
+ }
63
+
64
+ var itemId = params.id,
65
+ _params$value = params.value,
66
+ itemValue = _params$value === void 0 ? 'like' : _params$value;
67
+ var formatItemId = parseId(itemId);
68
+ var formatValue = parseChar(itemValue, 32);
69
+ var edgeCollection = useDb(database).edgeCollection('hasReaction'); // Remove existing likes
70
+
71
+ var groupDocId = "groups/".concat(formatItemId);
72
+ var userDocId = "users/".concat(sessionId);
73
+ var edgeId = createHash("reaction-".concat(formatItemId, "-").concat(sessionId));
74
+ var edge = {
75
+ _key: edgeId,
76
+ added: Date.now(),
77
+ type: 'group',
78
+ value: formatValue
79
+ };
80
+ return edgeCollection.save(edge, userDocId, groupDocId).then(function () {
81
+ return true;
82
+ });
83
+ };
84
+ export var getGroupReactions = function getGroupReactions(context) {
85
+ var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
86
+ var action = 'getReactions';
87
+ var database = context.database;
88
+ var groupId = params.id;
89
+ var groupDocId = "groups/".concat(parseId(groupId)); // Query
90
+
91
+ var aqlQry = aql(_templateObject(), groupDocId);
92
+ return useDb(database).query(aqlQry).then(function (cursor) {
93
+ return cursor.all();
94
+ }).catch(function (error) {
95
+ return logError({
96
+ action: action,
97
+ category: eventCategory,
98
+ label: 'db_error'
99
+ }, error, context).then(function () {
100
+ return null;
101
+ });
102
+ });
103
+ };
104
+ export var getReactionsByUser = function getReactionsByUser(context, groupId) {
105
+ var action = 'getReactionsByUser';
106
+ var database = context.database,
107
+ sessionId = context.userId;
108
+ var groupDocId = "groups/".concat(parseId(groupId));
109
+ var userDocId = "users/".concat(sessionId); // Query
110
+
111
+ var aqlQry = aql(_templateObject2(), groupDocId, userDocId);
112
+ return useDb(database).query(aqlQry).then(function (cursor) {
113
+ return cursor.all();
114
+ }).catch(function (error) {
115
+ return logError({
116
+ action: action,
117
+ category: eventCategory,
118
+ label: 'db_error'
119
+ }, error, context).then(function () {
120
+ return null;
121
+ });
122
+ });
123
+ };
124
+ export var getUsersByReaction = function getUsersByReaction(context) {
125
+ var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
126
+ var action = 'getUsersByReaction';
127
+ var database = context.database,
128
+ sessionId = context.userId;
129
+
130
+ if (!sessionId) {
131
+ return logException({
132
+ action: action,
133
+ category: eventCategory,
134
+ label: 'unauthorized',
135
+ value: 'invalid_session'
136
+ }, context).then(function () {
137
+ return null;
138
+ });
139
+ }
140
+
141
+ var _params$filters = params.filters,
142
+ filters = _params$filters === void 0 ? [] : _params$filters,
143
+ groupId = params.id,
144
+ value = params.value;
145
+ var reaction = parseChar(value, 32);
146
+ var groupDocId = "groups/".concat(parseId(groupId));
147
+ var filterStr = filters.map(function (filter) {
148
+ var conditional = filter.conditional,
149
+ name = filter.name,
150
+ queryValue = filter.value;
151
+ var filterCond = conditional;
152
+
153
+ if (conditional !== '>=' && conditional !== '<=' && conditional !== '>' && conditional !== '<') {
154
+ filterCond = '==';
155
+ }
156
+
157
+ switch (name) {
158
+ case 'added':
159
+ return "r.added ".concat(filterCond, " ").concat(parseNum(queryValue));
160
+
161
+ default:
162
+ return '';
163
+ }
164
+ }).concat(["r.value == \"".concat(reaction, "\""), 'u._id == r._from']).join(' && '); // Query
165
+
166
+ var aqlQry = "FOR g, r IN INBOUND \"".concat(groupDocId, "\" hasReaction\n FOR u IN users\n FILTER ").concat(filterStr, "\n RETURN u");
167
+ return useDb(database).query(aqlQry).then(function (cursor) {
168
+ return cursor.all();
169
+ }).catch(function (error) {
170
+ return logError({
171
+ action: action,
172
+ category: eventCategory,
173
+ label: 'db_error'
174
+ }, error, context).then(function () {
175
+ return null;
176
+ });
177
+ });
178
+ };
179
+ export var postReaction = function postReaction(context, postId) {
180
+ var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'like';
181
+ var database = context.database,
182
+ sessionId = context.userId;
183
+ var formatItemId = parseId(postId);
184
+ var db = useDb(database);
185
+ var edgeCollection = db.edgeCollection('reactions');
186
+ var now = Date.now(); // Remove existing reaction to post
187
+
188
+ var postDocId = "posts/".concat(formatItemId);
189
+ var userDocId = "users/".concat(sessionId);
190
+ var aqlQry = aql(_templateObject3(), postDocId, userDocId);
191
+ return db.query(aqlQry).then(function () {
192
+ var edgeId = createHash("reaction-".concat(postId, "-").concat(sessionId));
193
+ var edge = {
194
+ _key: edgeId,
195
+ added: now,
196
+ type: 'posts',
197
+ value: type
198
+ };
199
+ return edgeCollection.save(edge, userDocId, postDocId).then(function () {
200
+ var reactionAqlQry = aql(_templateObject4());
201
+ return db.query(reactionAqlQry).then(function (cursor) {
202
+ return cursor.next();
203
+ }).then(function () {
204
+ var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
205
+ reactions: []
206
+ };
207
+ return result;
208
+ }).catch(function (error) {
209
+ throw error;
210
+ });
211
+ }).catch(function (error) {
212
+ throw error;
213
+ });
214
+ }).catch(function (error) {
215
+ throw error;
216
+ });
217
+ };
218
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3JlYWN0aW9ucy50cyJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicGFyc2VDaGFyIiwicGFyc2VJZCIsInBhcnNlTnVtIiwiYXFsIiwibG9nRXJyb3IiLCJsb2dFeGNlcHRpb24iLCJ1c2VEYiIsImV2ZW50Q2F0ZWdvcnkiLCJhZGRHcm91cFJlYWN0aW9uIiwiY29udGV4dCIsInBhcmFtcyIsImFjdGlvbiIsImRhdGFiYXNlIiwic2Vzc2lvbklkIiwidXNlcklkIiwiY2F0ZWdvcnkiLCJsYWJlbCIsInZhbHVlIiwidGhlbiIsIml0ZW1JZCIsImlkIiwiaXRlbVZhbHVlIiwiZm9ybWF0SXRlbUlkIiwiZm9ybWF0VmFsdWUiLCJlZGdlQ29sbGVjdGlvbiIsImdyb3VwRG9jSWQiLCJ1c2VyRG9jSWQiLCJlZGdlSWQiLCJlZGdlIiwiX2tleSIsImFkZGVkIiwiRGF0ZSIsIm5vdyIsInR5cGUiLCJzYXZlIiwiZ2V0R3JvdXBSZWFjdGlvbnMiLCJncm91cElkIiwiYXFsUXJ5IiwicXVlcnkiLCJjdXJzb3IiLCJhbGwiLCJjYXRjaCIsImVycm9yIiwiZ2V0UmVhY3Rpb25zQnlVc2VyIiwiZ2V0VXNlcnNCeVJlYWN0aW9uIiwiZmlsdGVycyIsInJlYWN0aW9uIiwiZmlsdGVyU3RyIiwibWFwIiwiZmlsdGVyIiwiY29uZGl0aW9uYWwiLCJuYW1lIiwicXVlcnlWYWx1ZSIsImZpbHRlckNvbmQiLCJjb25jYXQiLCJqb2luIiwicG9zdFJlYWN0aW9uIiwicG9zdElkIiwiZGIiLCJwb3N0RG9jSWQiLCJyZWFjdGlvbkFxbFFyeSIsIm5leHQiLCJyZXN1bHQiLCJyZWFjdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVFBLFVBQVIsRUFBb0JDLFNBQXBCLEVBQStCQyxPQUEvQixFQUF3Q0MsUUFBeEMsUUFBdUQsY0FBdkQ7QUFDQSxTQUFRQyxHQUFSLFFBQTRDLFVBQTVD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VCxFQUNKMUMsSUFESSxDQUNDLFVBQUNxQixNQUFEO0FBQUEsZUFBeUJBLE1BQU0sQ0FBQ3NCLElBQVAsRUFBekI7QUFBQSxPQURELEVBRUozQyxJQUZJLENBRUM7QUFBQSxZQUFDNEMsTUFBRCx1RUFBVTtBQUFDQyxVQUFBQSxTQUFTLEVBQUU7QUFBWixTQUFWO0FBQUEsZUFBOEJELE1BQTlCO0FBQUEsT0FGRCxFQUdKckIsS0FISSxDQUdFLFVBQUNDLEtBQUQsRUFBa0I7QUFDdkIsY0FBTUEsS0FBTjtBQUNELE9BTEksQ0FBUDtBQU1ELEtBZkksRUFnQkpELEtBaEJJLENBZ0JFLFVBQUNDLEtBQUQsRUFBa0I7QUFDdkIsWUFBTUEsS0FBTjtBQUNELEtBbEJJLENBQVA7QUFtQkQsR0E3QkksRUE4QkpELEtBOUJJLENBOEJFLFVBQUNDLEtBQUQsRUFBa0I7QUFDdkIsVUFBTUEsS0FBTjtBQUNELEdBaENJLENBQVA7QUFpQ0QsQ0FoRE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZCwgcGFyc2VOdW19IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbCwgRGF0YWJhc2UsIEVkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5cbmltcG9ydCB7QXBpQ29udGV4dCwgUXVlcnlGaWx0ZXIsIFJlYWN0aW9uVHlwZSwgVXNlclJlYWN0aW9uUXVlcnksIFVzZXJSZWFjdGlvblR5cGUsIFVzZXJUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2xvZ0Vycm9yLCBsb2dFeGNlcHRpb24sIHVzZURifSBmcm9tICcuLi91dGlscyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdyZWFjdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgYWRkR3JvdXBSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBwYXJhbXM6IFVzZXJSZWFjdGlvblR5cGUgPSB7fSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdyZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcblxuICBpZighc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCB7aWQ6IGl0ZW1JZCwgdmFsdWU6IGl0ZW1WYWx1ZSA9ICdsaWtlJ30gPSBwYXJhbXM7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRWYWx1ZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1WYWx1ZSwgMzIpO1xuICBjb25zdCBlZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlKS5lZGdlQ29sbGVjdGlvbignaGFzUmVhY3Rpb24nKTtcblxuICAvLyBSZW1vdmUgZXhpc3RpbmcgbGlrZXNcbiAgY29uc3QgZ3JvdXBEb2NJZDogc3RyaW5nID0gYGdyb3Vwcy8ke2Zvcm1hdEl0ZW1JZH1gO1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYHJlYWN0aW9uLSR7Zm9ybWF0SXRlbUlkfS0ke3Nlc3Npb25JZH1gKTtcbiAgY29uc3QgZWRnZTogYW55ID0ge1xuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICB0eXBlOiAnZ3JvdXAnLFxuICAgIHZhbHVlOiBmb3JtYXRWYWx1ZVxuICB9O1xuXG4gIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHVzZXJEb2NJZCwgZ3JvdXBEb2NJZCkudGhlbigoKSA9PiB0cnVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcm91cFJlYWN0aW9ucyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBwYXJhbXM6IFVzZXJSZWFjdGlvblR5cGUgPSB7fSk6IFByb21pc2U8VXNlclJlYWN0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRSZWFjdGlvbnMnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge2lkOiBncm91cElkfTogVXNlclJlYWN0aW9uVHlwZSA9IHBhcmFtcztcbiAgY29uc3QgZ3JvdXBEb2NJZDogc3RyaW5nID0gYGdyb3Vwcy8ke3BhcnNlSWQoZ3JvdXBJZCl9YDtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBnLCByIElOIElOQk9VTkQgJHtncm91cERvY0lkfSBoYXNSZWFjdGlvblxuICAgICAgQ09MTEVDVCByZWFjdGlvbk5hbWUgPSByLnZhbHVlIElOVE8gcmVhY3Rpb25JdGVtc1xuICAgICAgUkVUVVJOIHt2YWx1ZTogcmVhY3Rpb25OYW1lLCBjb3VudDogTEVOR1RIKHJlYWN0aW9uSXRlbXNbKl0uci52YWx1ZSl9YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlYWN0aW9uc0J5VXNlciA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBncm91cElkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJSZWFjdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRSZWFjdGlvbnNCeVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGdyb3VwRG9jSWQ6IHN0cmluZyA9IGBncm91cHMvJHtwYXJzZUlkKGdyb3VwSWQpfWA7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgZywgciBJTiBJTkJPVU5EICR7Z3JvdXBEb2NJZH0gaGFzUmVhY3Rpb25cbiAgICAgIEZJTFRFUiByLl9mcm9tID09ICR7dXNlckRvY0lkfVxuICAgICAgQ09MTEVDVCByZWFjdGlvbk5hbWUgPSByLnZhbHVlIElOVE8gcmVhY3Rpb25JdGVtc1xuICAgICAgUkVUVVJOIHt2YWx1ZTogcmVhY3Rpb25OYW1lLCBjb3VudDogTEVOR1RIKHJlYWN0aW9uSXRlbXNbKl0uci52YWx1ZSl9YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJzQnlSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBwYXJhbXM6IFVzZXJSZWFjdGlvblF1ZXJ5ID0ge30pOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0VXNlcnNCeVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtmaWx0ZXJzID0gW10sIGlkOiBncm91cElkLCB2YWx1ZX06IFVzZXJSZWFjdGlvblF1ZXJ5ID0gcGFyYW1zO1xuICBjb25zdCByZWFjdGlvbiA9IHBhcnNlQ2hhcih2YWx1ZSwgMzIpO1xuICBjb25zdCBncm91cERvY0lkID0gYGdyb3Vwcy8ke3BhcnNlSWQoZ3JvdXBJZCl9YDtcbiAgY29uc3QgZmlsdGVyU3RyOiBzdHJpbmcgPSBmaWx0ZXJzXG4gICAgLm1hcCgoZmlsdGVyOiBRdWVyeUZpbHRlcikgPT4ge1xuICAgICAgY29uc3Qge2NvbmRpdGlvbmFsLCBuYW1lLCB2YWx1ZTogcXVlcnlWYWx1ZX06IFF1ZXJ5RmlsdGVyID0gZmlsdGVyO1xuICAgICAgbGV0IGZpbHRlckNvbmQ6IHN0cmluZyA9IGNvbmRpdGlvbmFsO1xuXG4gICAgICBpZihjb25kaXRpb25hbCAhPT0gJz49JyAmJiBjb25kaXRpb25hbCAhPT0gJzw9JyAmJiBjb25kaXRpb25hbCAhPT0gJz4nICYmIGNvbmRpdGlvbmFsICE9PSAnPCcpIHtcbiAgICAgICAgZmlsdGVyQ29uZCA9ICc9PSc7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaChuYW1lKSB7XG4gICAgICAgIGNhc2UgJ2FkZGVkJzpcbiAgICAgICAgICByZXR1cm4gYHIuYWRkZWQgJHtmaWx0ZXJDb25kfSAke3BhcnNlTnVtKHF1ZXJ5VmFsdWUpfWA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNvbmNhdChbXG4gICAgICBgci52YWx1ZSA9PSBcIiR7cmVhY3Rpb259XCJgLFxuICAgICAgJ3UuX2lkID09IHIuX2Zyb20nXG4gICAgXSlcbiAgICAuam9pbignICYmICcpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBnLCByIElOIElOQk9VTkQgXCIke2dyb3VwRG9jSWR9XCIgaGFzUmVhY3Rpb25cbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgICR7ZmlsdGVyU3RyfVxuICAgICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5cbmV4cG9ydCBjb25zdCBwb3N0UmVhY3Rpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgcG9zdElkOiBzdHJpbmcsIHR5cGU6IHN0cmluZyA9ICdsaWtlJyk6IFByb21pc2U8UmVhY3Rpb25UeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUlkKHBvc3RJZCk7XG4gIGNvbnN0IGRiOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlKTtcbiAgY29uc3QgZWRnZUNvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gZGIuZWRnZUNvbGxlY3Rpb24oJ3JlYWN0aW9ucycpO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgLy8gUmVtb3ZlIGV4aXN0aW5nIHJlYWN0aW9uIHRvIHBvc3RcbiAgY29uc3QgcG9zdERvY0lkOiBzdHJpbmcgPSBgcG9zdHMvJHtmb3JtYXRJdGVtSWR9YDtcbiAgY29uc3QgdXNlckRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgcCwgciBJTiBJTkJPVU5EICR7cG9zdERvY0lkfSByZWFjdGlvblxuICAgIEZJTFRFUiByLnR5cGUgPT0gXCJwb3N0c1wiICYmIHIuX2Zyb20gPT0gJHt1c2VyRG9jSWR9XG4gICAgUkVNT1ZFIHIgSU4gcmVhY3Rpb25zXG4gICAgUkVUVVJOIHJgO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtwb3N0SWR9LSR7c2Vzc2lvbklkfWApO1xuICAgICAgY29uc3QgZWRnZTogYW55ID0ge1xuICAgICAgICBfa2V5OiBlZGdlSWQsXG4gICAgICAgIGFkZGVkOiBub3csXG4gICAgICAgIHR5cGU6ICdwb3N0cycsXG4gICAgICAgIHZhbHVlOiB0eXBlXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB1c2VyRG9jSWQsIHBvc3REb2NJZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlYWN0aW9uQXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgcmVhY3Rpb25zID0gKFxuICAgICAgICAgICAgRk9SIHBvc3QsIHIgSU4gSU5CT1VORCBwLl9pZCByZWFjdGlvbnNcbiAgICAgICAgICAgIENPTExFQ1QgcmVhY3Rpb25OYW1lID0gci52YWx1ZSBJTlRPIHJlYWN0aW9uSXRlbXNcbiAgICAgICAgICAgIFJFVFVSTiB7aWQ6IHAuX2lkLCB0eXBlOiByZWFjdGlvbk5hbWUsIGNvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX1cbiAgICAgICAgICApXG4gICAgICAgICAgUkVUVVJOIHJlYWN0aW9uc2A7XG5cbiAgICAgICAgICByZXR1cm4gZGIucXVlcnkocmVhY3Rpb25BcWxRcnkpXG4gICAgICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAgIC50aGVuKChyZXN1bHQgPSB7cmVhY3Rpb25zOiBbXX0pID0+IHJlc3VsdClcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTsiXX0=
@@ -0,0 +1,6 @@
1
+ import { S3 } from 'aws-sdk';
2
+ export declare const s3Get: (params: S3.GetObjectRequest) => Promise<S3.GetObjectOutput>;
3
+ export declare const s3Head: (params: S3.HeadObjectRequest) => Promise<S3.HeadObjectOutput>;
4
+ export declare const s3Put: (params: S3.PutObjectRequest) => Promise<S3.PutObjectOutput>;
5
+ export declare const s3Delete: (params: S3.DeleteObjectRequest) => Promise<S3.DeleteObjectOutput>;
6
+ export declare const s3DeleteList: (params: S3.DeleteObjectsRequest) => Promise<S3.DeleteObjectsOutput>;
package/lib/data/s3.js ADDED
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ import aws, { S3 } from 'aws-sdk';
6
+ import { Config } from '../config'; // AWS S3
7
+ // const eventCategory: string = 's3';
8
+
9
+ export var s3Get = function s3Get(params) {
10
+ return new Promise(function (resolve, reject) {
11
+ aws.config.update(Config.get('aws'));
12
+ var s3 = new S3();
13
+
14
+ if (!params.Bucket) {
15
+ params.Bucket = Config.get('aws.Bucket');
16
+ }
17
+
18
+ s3.getObject(params, function (error, output) {
19
+ if (error) {
20
+ return reject(error);
21
+ }
22
+
23
+ return resolve(output);
24
+ });
25
+ });
26
+ };
27
+ export var s3Head = function s3Head(params) {
28
+ return new Promise(function (resolve, reject) {
29
+ aws.config.update(Config.get('aws'));
30
+ var s3 = new S3();
31
+
32
+ if (!params.Bucket) {
33
+ params.Bucket = Config.get('aws.Bucket');
34
+ }
35
+
36
+ s3.headObject(params, function (error, output) {
37
+ if (error) {
38
+ return reject(error);
39
+ }
40
+
41
+ return resolve(output);
42
+ });
43
+ });
44
+ };
45
+ export var s3Put = function s3Put(params) {
46
+ return new Promise(function (resolve, reject) {
47
+ aws.config.update(Config.get('aws'));
48
+ var s3 = new aws.S3();
49
+
50
+ if (!params.Bucket) {
51
+ params.Bucket = Config.get('aws.Bucket');
52
+ }
53
+
54
+ if (!params.StorageClass) {
55
+ params.StorageClass = 'REDUCED_REDUNDANCY';
56
+ }
57
+
58
+ s3.putObject(params, function (error, output) {
59
+ if (error) {
60
+ return reject(error);
61
+ }
62
+
63
+ return resolve(output);
64
+ });
65
+ });
66
+ };
67
+ export var s3Delete = function s3Delete(params) {
68
+ return new Promise(function (resolve, reject) {
69
+ aws.config.update(Config.get('aws'));
70
+ var s3 = new S3();
71
+
72
+ if (!params.Bucket) {
73
+ params.Bucket = Config.get('aws.Bucket');
74
+ }
75
+
76
+ s3.deleteObject(params, function (error, output) {
77
+ if (error) {
78
+ return reject(error);
79
+ }
80
+
81
+ return resolve(output);
82
+ });
83
+ });
84
+ };
85
+ export var s3DeleteList = function s3DeleteList(params) {
86
+ return new Promise(function (resolve, reject) {
87
+ aws.config.update(Config.get('aws'));
88
+ var s3 = new S3();
89
+
90
+ if (!params.Bucket) {
91
+ params.Bucket = Config.get('aws.Bucket');
92
+ }
93
+
94
+ s3.deleteObjects(params, function (error, output) {
95
+ if (error) {
96
+ return reject(error);
97
+ }
98
+
99
+ return resolve(output);
100
+ });
101
+ });
102
+ };
103
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3MzLnRzIl0sIm5hbWVzIjpbImF3cyIsIlMzIiwiQ29uZmlnIiwiczNHZXQiLCJwYXJhbXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImNvbmZpZyIsInVwZGF0ZSIsImdldCIsInMzIiwiQnVja2V0IiwiZ2V0T2JqZWN0IiwiZXJyb3IiLCJvdXRwdXQiLCJzM0hlYWQiLCJoZWFkT2JqZWN0IiwiczNQdXQiLCJTdG9yYWdlQ2xhc3MiLCJwdXRPYmplY3QiLCJzM0RlbGV0ZSIsImRlbGV0ZU9iamVjdCIsInMzRGVsZXRlTGlzdCIsImRlbGV0ZU9iamVjdHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBSUEsT0FBT0EsR0FBUCxJQUFhQyxFQUFiLFFBQXNCLFNBQXRCO0FBY0EsU0FBUUMsTUFBUixRQUFxQixXQUFyQixDLENBRUE7QUFDQTs7QUFFQSxPQUFPLElBQU1DLEtBQUssR0FBRyxTQUFSQSxLQUFRLENBQUNDLE1BQUQsRUFBd0Q7QUFDM0UsU0FBTyxJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ3RDUCxJQUFBQSxHQUFHLENBQUNRLE1BQUosQ0FBV0MsTUFBWCxDQUFrQlAsTUFBTSxDQUFDUSxHQUFQLENBQVcsS0FBWCxDQUFsQjtBQUNBLFFBQU1DLEVBQU0sR0FBRyxJQUFJVixFQUFKLEVBQWY7O0FBRUEsUUFBRyxDQUFDRyxNQUFNLENBQUNRLE1BQVgsRUFBbUI7QUFDakJSLE1BQUFBLE1BQU0sQ0FBQ1EsTUFBUCxHQUFnQlYsTUFBTSxDQUFDUSxHQUFQLENBQVcsWUFBWCxDQUFoQjtBQUNEOztBQUVEQyxJQUFBQSxFQUFFLENBQUNFLFNBQUgsQ0FBYVQsTUFBYixFQUFxQixVQUFDVSxLQUFELEVBQWVDLE1BQWYsRUFBMkM7QUFDOUQsVUFBR0QsS0FBSCxFQUFVO0FBQ1IsZUFBT1AsTUFBTSxDQUFDTyxLQUFELENBQWI7QUFDRDs7QUFFRCxhQUFPUixPQUFPLENBQUNTLE1B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QSxZQUFlLENBQUNuQixNQUFELEVBQWdFO0FBQzFGLFNBQU8sSUFBSUMsT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUN0Q1AsSUFBQUEsR0FBRyxDQUFDUSxNQUFKLENBQVdDLE1BQVgsQ0FBa0JQLE1BQU0sQ0FBQ1EsR0FBUCxDQUFXLEtBQVgsQ0FBbEI7QUFDQSxRQUFNQyxFQUFNLEdBQUcsSUFBSVYsRUFBSixFQUFmOztBQUVBLFFBQUcsQ0FBQ0csTUFBTSxDQUFDUSxNQUFYLEVBQW1CO0FBQ2pCUixNQUFBQSxNQUFNLENBQUNRLE1BQVAsR0FBZ0JWLE1BQU0sQ0FBQ1EsR0FBUCxDQUFXLFlBQVgsQ0FBaEI7QUFDRDs7QUFFREMsSUFBQUEsRUFBRSxDQUFDYSxhQUFILENBQWlCcEIsTUFBakIsRUFBeUIsVUFBQ1UsS0FBRCxFQUFlQyxNQUFmLEVBQStDO0FBQ3RFLFVBQUdELEtBQUgsRUFBVTtBQUNSLGVBQU9QLE1BQU0sQ0FBQ08sS0FBRCxDQUFiO0FBQ0Q7O0FBQ0QsYUFBT1IsT0FBTyxDQUFDUyxNQUFELENBQWQ7QUFDRCxLQUxEO0FBTUQsR0FkTSxDQUFQO0FBZUQsQ0FoQk0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IGF3cywge1MzfSBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7XG4gIERlbGV0ZU9iamVjdE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0UmVxdWVzdCxcbiAgRGVsZXRlT2JqZWN0c091dHB1dCxcbiAgRGVsZXRlT2JqZWN0c1JlcXVlc3QsXG4gIEdldE9iamVjdE91dHB1dCxcbiAgR2V0T2JqZWN0UmVxdWVzdCxcbiAgSGVhZE9iamVjdE91dHB1dCxcbiAgSGVhZE9iamVjdFJlcXVlc3QsXG4gIFB1dE9iamVjdE91dHB1dCxcbiAgUHV0T2JqZWN0UmVxdWVzdFxufSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvczMnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcblxuLy8gQVdTIFMzXG4vLyBjb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnczMnO1xuXG5leHBvcnQgY29uc3QgczNHZXQgPSAocGFyYW1zOiBHZXRPYmplY3RSZXF1ZXN0KTogUHJvbWlzZTxHZXRPYmplY3RPdXRwdXQ+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gICAgY29uc3QgczM6IFMzID0gbmV3IFMzKCk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IENvbmZpZy5nZXQoJ2F3cy5CdWNrZXQnKTtcbiAgICB9XG5cbiAgICBzMy5nZXRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEdldE9iamVjdE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzSGVhZCA9IChwYXJhbXM6IEhlYWRPYmplY3RSZXF1ZXN0KTogUHJvbWlzZTxIZWFkT2JqZWN0T3V0cHV0PiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHMzOiBTMyA9IG5ldyBTMygpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuQnVja2V0Jyk7XG4gICAgfVxuXG4gICAgczMuaGVhZE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogSGVhZE9iamVjdE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzM1B1dCA9IChwYXJhbXM6IFB1dE9iamVjdFJlcXVlc3QpOiBQcm9taXNlPFB1dE9iamVjdE91dHB1dD4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBzMyA9IG5ldyBhd3MuUzMoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gQ29uZmlnLmdldCgnYXdzLkJ1Y2tldCcpO1xuICAgIH1cblxuICAgIGlmKCFwYXJhbXMuU3RvcmFnZUNsYXNzKSB7XG4gICAgICBwYXJhbXMuU3RvcmFnZUNsYXNzID0gJ1JFRFVDRURfUkVEVU5EQU5DWSc7XG4gICAgfVxuXG4gICAgczMucHV0T2JqZWN0KHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0OiBQdXRPYmplY3RPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgczNEZWxldGUgPSAocGFyYW1zOiBEZWxldGVPYmplY3RSZXF1ZXN0KTogUHJvbWlzZTxEZWxldGVPYmplY3RPdXRwdXQ+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gICAgY29uc3QgczM6IFMzID0gbmV3IFMzKCk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IENvbmZpZy5nZXQoJ2F3cy5CdWNrZXQnKTtcbiAgICB9XG5cbiAgICBzMy5kZWxldGVPYmplY3QocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogRGVsZXRlT2JqZWN0T3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlTGlzdCA9IChwYXJhbXM6IERlbGV0ZU9iamVjdHNSZXF1ZXN0KTogUHJvbWlzZTxEZWxldGVPYmplY3RzT3V0cHV0PiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHMzOiBTMyA9IG5ldyBTMygpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuQnVja2V0Jyk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0cyhwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogRGVsZXRlT2JqZWN0c091dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcbn07XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { ApiContext } from '../types/auth';
2
+ import { UserType } from '../types/users';
3
+ export declare const getSearchList: (context: ApiContext, query: string, from: number, to: number) => Promise<UserType[]>;
@@ -0,0 +1,98 @@
1
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
2
+
3
+ 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; }
4
+
5
+ function _templateObject() {
6
+ var data = _taggedTemplateLiteral(["FOR u IN FULLTEXT(", ", ", ", ", ", 50) RETURN u"]);
7
+
8
+ _templateObject = function _templateObject() {
9
+ return data;
10
+ };
11
+
12
+ return data;
13
+ }
14
+
15
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
16
+
17
+ /**
18
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
19
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
20
+ */
21
+ import { aql } from 'arangojs';
22
+ import flatten from 'lodash/flatten';
23
+ import uniqBy from 'lodash/uniqBy';
24
+ import { getLimit, logException, useDb } from '../utils';
25
+ import { getDisplayName } from './users';
26
+ var eventCategory = 'search';
27
+ export var getSearchList = function getSearchList(context, query, from, to) {
28
+ var action = 'getList';
29
+ var database = context.database;
30
+ var isString = true;
31
+
32
+ if (isString) {
33
+ var fields = [{
34
+ collection: 'users',
35
+ field: 'first'
36
+ }, {
37
+ collection: 'users',
38
+ field: 'last'
39
+ }, {
40
+ collection: 'users',
41
+ field: 'email'
42
+ }, {
43
+ collection: 'users',
44
+ field: 'username'
45
+ }, {
46
+ collection: 'users',
47
+ field: 'name'
48
+ }];
49
+ return Promise.all(fields.map(function (obj) {
50
+ var qry = "prefix:".concat(query);
51
+ var userQry = aql(_templateObject(), obj.collection, obj.field, qry);
52
+ return useDb(database).query(userQry).then(function (cursor) {
53
+ return cursor.all();
54
+ });
55
+ })).then(function (results) {
56
+ var list = uniqBy(flatten(results), '_key');
57
+ return list.map(function (item) {
58
+ var itemId = item._id,
59
+ itemName = item.name;
60
+ var collectionIdList = itemId.split('/');
61
+ var collection = collectionIdList[0];
62
+ var name = collection === 'users' ? getDisplayName(item) : itemName;
63
+ return _objectSpread({}, item, {
64
+ name: name
65
+ });
66
+ });
67
+ });
68
+ }
69
+
70
+ var limit = getLimit(from, to);
71
+ var aqlQry = "FOR u IN users\n FILTER u.phone == \"".concat(query, "\"\n ").concat(limit.aql, "\n RETURN u");
72
+ return useDb(database).query(aqlQry).then(function (cursor) {
73
+ return cursor.all();
74
+ }).then(function () {
75
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
76
+ return list.map(function () {
77
+ var item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
78
+ var itemId = item._id,
79
+ itemName = item.name;
80
+ var collectionIdList = itemId.split('/');
81
+ var collection = collectionIdList[0];
82
+ var name = collection === 'users' ? getDisplayName(item) : itemName;
83
+ return _objectSpread({}, item, {
84
+ name: name
85
+ });
86
+ });
87
+ }).catch(function (error) {
88
+ return logException({
89
+ action: action,
90
+ category: eventCategory,
91
+ label: 'db_error',
92
+ value: error.message
93
+ }, context).then(function () {
94
+ return null;
95
+ });
96
+ });
97
+ };
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3NlYXJjaC50cyJdLCJuYW1lcyI6WyJhcWwiLCJmbGF0dGVuIiwidW5pcUJ5IiwiZ2V0TGltaXQiLCJsb2dFeGNlcHRpb24iLCJ1c2VEYiIsImdldERpc3BsYXlOYW1lIiwiZXZlbnRDYXRlZ29yeSIsImdldFNlYXJjaExpc3QiLCJjb250ZXh0IiwicXVlcnkiLCJmcm9tIiwidG8iLCJhY3Rpb24iLCJkYXRhYmFzZSIsImlzU3RyaW5nIiwiZmllbGRzIiwiY29sbGVjdGlvbiIsImZpZWxkIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsIm9iaiIsInFyeSIsInVzZXJRcnkiLCJ0aGVuIiwiY3Vyc29yIiwicmVzdWx0cyIsImxpc3QiLCJpdGVtIiwiaXRlbUlkIiwiX2lkIiwiaXRlbU5hbWUiLCJuYW1lIiwiY29sbGVjdGlvbklkTGlzdCIsInNwbGl0IiwibGltaXQiLCJhcWxRcnkiLCJjYXRjaCIsImVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCIsInZhbHVlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBSUEsU0FBUUEsR0FBUixRQUFrQixVQUFsQjtBQUdBLE9BQU9DLE9BQVAsTUFBb0IsZ0JBQXBCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixlQUFuQjtBQUtBLFNBQVFDLFFBQVIsRUFBa0JDLFlBQWxCLEVBQWdDQyxLQUFoQyxRQUE0QyxVQUE1QztBQUNBLFNBQVFDLGNBQVIsUUFBNkIsU0FBN0I7QUFFQSxJQUFNQyxhQUFxQixHQUFHLFFBQTlCO0FBRUEsT0FBTyxJQUFNQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQUNDLE9BQUQsRUFBc0JDLEtBQXRCLEVBQXFDQyxJQUFyQyxFQUFtREMsRUFBbkQsRUFBdUY7QUFDbEgsTUFBTUMsTUFBYyxHQUFHLFNBQXZCO0FBRGtILE1BRTNHQyxRQUYyRyxHQUUvRkwsT0FGK0YsQ0FFM0dLLFFBRjJHO0FBR2xILE1BQU1DLFFBQWlCLEdBQUcsSUFB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QUQsQ0FBM0M7QUFDQSxVQUFNRCxJQUFZLEdBQUdoQixVQUFVLEtBQUssT0FBZixHQUF5QlgsY0FBYyxDQUFDdUIsSUFBRCxDQUF2QyxHQUFnREcsUUFBckU7QUFFQSwrQkFBV0gsSUFBWDtBQUFpQkksUUFBQUEsSUFBSSxFQUFKQTtBQUFqQjtBQUNELEtBUGdDLENBQTNCO0FBQUEsR0FGRCxFQVVKSyxLQVZJLENBVUUsVUFBQ0MsS0FBRDtBQUFBLFdBQWtCbkMsWUFBWSxDQUFDO0FBQ3BDUyxNQUFBQSxNQUFNLEVBQU5BLE1BRG9DO0FBRXBDMkIsTUFBQUEsUUFBUSxFQUFFakMsYUFGMEI7QUFHcENrQyxNQUFBQSxLQUFLLEVBQUUsVUFINkI7QUFJcENDLE1BQUFBLEtBQUssRUFBRUgsS0FBSyxDQUFDSTtBQUp1QixLQUFELEVBS2xDbEMsT0FMa0MsQ0FBWixDQUtiZ0IsSUFMYSxDQUtSO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FMUSxDQUFsQjtBQUFBLEdBVkYsQ0FBUDtBQWdCRCxDQXZETSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoL2ZsYXR0ZW4nO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMvdXNlcnMnO1xuaW1wb3J0IHtnZXRMaW1pdCwgbG9nRXhjZXB0aW9uLCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtnZXREaXNwbGF5TmFtZX0gZnJvbSAnLi91c2Vycyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdzZWFyY2gnO1xuXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoTGlzdCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBxdWVyeTogc3RyaW5nLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdCc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBpc1N0cmluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgaWYoaXNTdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZHM6IGFueVtdID0gW1xuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnZmlyc3QnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ2xhc3QnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ2VtYWlsJ30sXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICd1c2VybmFtZSd9LFxuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnbmFtZSd9XG4gICAgXTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChmaWVsZHMubWFwKChvYmopID0+IHtcbiAgICAgIGNvbnN0IHFyeTogc3RyaW5nID0gYHByZWZpeDoke3F1ZXJ5fWA7XG4gICAgICBjb25zdCB1c2VyUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiBGVUxMVEVYVCgke29iai5jb2xsZWN0aW9ufSwgJHtvYmouZmllbGR9LCAke3FyeX0sIDUwKSBSRVRVUk4gdWA7XG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KHVzZXJRcnkpLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSk7XG4gICAgfSkpXG4gICAgICAudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICBjb25zdCBsaXN0ID0gdW5pcUJ5KGZsYXR0ZW4ocmVzdWx0cyksICdfa2V5Jyk7XG5cbiAgICAgICAgcmV0dXJuIGxpc3QubWFwKChpdGVtOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtfaWQ6IGl0ZW1JZCwgbmFtZTogaXRlbU5hbWV9ID0gaXRlbTtcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uSWRMaXN0OiBzdHJpbmdbXSA9IGl0ZW1JZC5zcGxpdCgnLycpO1xuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb246IHN0cmluZyA9IGNvbGxlY3Rpb25JZExpc3RbMF07XG4gICAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gY29sbGVjdGlvbiA9PT0gJ3VzZXJzJyA/IGdldERpc3BsYXlOYW1lKGl0ZW0pIDogaXRlbU5hbWU7XG5cbiAgICAgICAgICByZXR1cm4gey4uLml0ZW0sIG5hbWV9O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiB1IElOIHVzZXJzXG4gICAgICAgIEZJTFRFUiB1LnBob25lID09IFwiJHtxdWVyeX1cIlxuICAgICAgICAke2xpbWl0LmFxbH1cbiAgICAgICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLnRoZW4oKGxpc3Q6IFVzZXJUeXBlW10gPSBbXSkgPT4gbGlzdC5tYXAoKGl0ZW0gPSB7fSkgPT4ge1xuICAgICAgY29uc3Qge19pZDogaXRlbUlkLCBuYW1lOiBpdGVtTmFtZX0gPSBpdGVtO1xuICAgICAgY29uc3QgY29sbGVjdGlvbklkTGlzdDogc3RyaW5nW10gPSBpdGVtSWQuc3BsaXQoJy8nKTtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb246IHN0cmluZyA9IGNvbGxlY3Rpb25JZExpc3RbMF07XG4gICAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSBjb2xsZWN0aW9uID09PSAndXNlcnMnID8gZ2V0RGlzcGxheU5hbWUoaXRlbSkgOiBpdGVtTmFtZTtcblxuICAgICAgcmV0dXJuIHsuLi5pdGVtLCBuYW1lfTtcbiAgICB9KSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcicsXG4gICAgICB2YWx1ZTogZXJyb3IubWVzc2FnZVxuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { SMSParamsType } from '../types/notifications';
2
+ export declare const sendSms: (params: SMSParamsType) => any;
3
+ export declare const sendSmsTemplate: (templateName: string, smsParams: SMSParamsType) => Promise<boolean>;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ import { parsePhone } from '@nlabs/utils';
6
+ import fs from 'fs';
7
+ import twilioSdk from 'twilio';
8
+ import { Config } from '../config';
9
+ import { appTemplate } from './email'; // const eventCategory: string = 'sms';
10
+ // Twilio
11
+
12
+ export var sendSms = function sendSms(params) {
13
+ var _params$app = params.app,
14
+ app = _params$app === void 0 ? {} : _params$app,
15
+ content = params.content,
16
+ _params$user = params.user,
17
+ user = _params$user === void 0 ? {} : _params$user;
18
+ var country = user.country || 'US';
19
+ var phone = parsePhone(user.phone, country);
20
+ var templateContent = appTemplate(app, content);
21
+ var twilio = twilioSdk(Config.get('twilio.sid'), Config.get('twilio.token'));
22
+ var cfg = {
23
+ body: templateContent,
24
+ from: Config.get('twilio.number'),
25
+ to: phone
26
+ };
27
+ return new Promise(function (resolve, reject) {
28
+ twilio.sendMessage(cfg, function (error, data) {
29
+ if (error) {
30
+ reject(new Error(error.error_message));
31
+ } else {
32
+ resolve(data);
33
+ }
34
+ });
35
+ });
36
+ };
37
+ export var sendSmsTemplate = function sendSmsTemplate(templateName, smsParams) {
38
+ var app = smsParams.app,
39
+ user = smsParams.user,
40
+ vars = smsParams.vars;
41
+
42
+ try {
43
+ var data = fs.readFileSync("./templates/sms/".concat(templateName, ".txt"), 'utf8');
44
+ var text = appTemplate(app, data, vars);
45
+ var params = {
46
+ app: app,
47
+ text: text,
48
+ user: user
49
+ };
50
+ return sendSms(params).then(function (res) {
51
+ return res.status === 'queued';
52
+ }).catch(function (error) {
53
+ throw error;
54
+ });
55
+ } catch (error) {
56
+ return Promise.reject(error);
57
+ }
58
+ };
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3Ntcy50cyJdLCJuYW1lcyI6WyJwYXJzZVBob25lIiwiZnMiLCJ0d2lsaW9TZGsiLCJDb25maWciLCJhcHBUZW1wbGF0ZSIsInNlbmRTbXMiLCJwYXJhbXMiLCJhcHAiLCJjb250ZW50IiwidXNlciIsImNvdW50cnkiLCJwaG9uZSIsInRlbXBsYXRlQ29udGVudCIsInR3aWxpbyIsImdldCIsImNmZyIsImJvZHkiLCJmcm9tIiwidG8iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNlbmRNZXNzYWdlIiwiZXJyb3IiLCJkYXRhIiwiRXJyb3IiLCJlcnJvcl9tZXNzYWdlIiwic2VuZFNtc1RlbXBsYXRlIiwidGVtcGxhdGVOYW1lIiwic21zUGFyYW1zIiwidmFycyIsInJlYWRGaWxlU3luYyIsInRleHQiLCJ0aGVuIiwicmVzIiwic3RhdHVzIiwiY2F0Y2giXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBSUEsU0FBUUEsVUFBUixRQUF5QixjQUF6QjtBQUNBLE9BQU9DLEVBQVAsTUFBZSxJQUFmO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixRQUF0QjtBQUVBLFNBQVFDLE1BQVIsUUFBcUIsV0FBckI7QUFFQSxTQUFRQyxXQUFSLFFBQTBCLFNBQTFCLEMsQ0FFQTtBQUVBOztBQUNBLE9BQU8sSUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0MsTUFBRCxFQUFnQztBQUFBLG9CQUtqREEsTUFMaUQsQ0FFbkRDLEdBRm1EO0FBQUEsTUFFbkRBLEdBRm1ELDRCQUU3QyxFQUY2QztBQUFBLE1BR25EQyxPQUhtRCxHQUtqREYsTUFMaUQsQ0FHbkRFLE9BSG1EO0FBQUEscUJBS2pERixNQUxpRCxDQUluREcsSUFKbUQ7QUFBQSxNQUluREEsSUFKbUQsNkJBSTVDLEVBSjRDO0FBT3JELE1BQU1DLE9BQU8sR0FBR0QsSUFBSSxDQUFDQyxPQUFMLElBQWdCLElBQWhDO0FBQ0EsTUFBTUMsS0FBSyxHQUFHWCxVQUFVLENBQUNTLElBQUksQ0FBQ0UsS0FBTixFQUFhRCxPQUFiLENBQXhCO0FBQ0EsTUFBTUUsZUFBdUIsR0FBR1IsV0FBVyxDQUFDRyxHQUFELEVBQU1DLE9BQU4sQ0FBM0M7QUFFQSxNQUFNSyxNQUFXLEdBQUdYLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDVyxHQUFQLENBQVcsWUFBWCxDQUFELEVBQTJCWCxNQUFNLENBQUNXLEdBQVAsQ0FBVyxjQUFYLENBQTNCLENBQTdCO0FBQ0EsTUFBTUMsR0FBc0IsR0FBRztBQUM3QkMsSUFBQUEsSUFBSSxFQUFFSixlQUR1QjtBQUU3QkssSUFBQUEsSUFBSSxFQUFFZCxNQUFNLENBQUNXLEdBQVAsQ0FBVyxlQUFYLENBRnVCO0FBRzdCSSxJQUFBQSxFQUFFLEVBQUVQO0FBSHlCLEdBQS9CO0FBTUEsU0FBTyxJQUFJUSxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ3RDUixJQUFBQSxNQUFNLENBQUNTLFdBQVAsQ0FBbUJQLEdBQW5CLEVBQXdCLFVBQUNRLEtBQUQsRUFBUUMsSUFBUixFQUFpQjtBQUN2QyxVQUFHRCxLQUFILEVBQVU7QUFDUkYsUUFBQUEsTUFBTSxDQUFDLElBQUlJLEtBQUosQ0FBVUYsS0FBSyxDQUFDRyxhQUFoQixDQUFELENBQU47QUFDRCxPQUZELE1BRU87QUFDTE4sUUFBQUEsT0FBTyxDQUFDSSxJQUFELENBQVA7QUFDRDtBQUNGLEtBTkQ7QUFPRCxHQVJNLENBQVA7QUFTRCxDQTNCTTtBQTZCUCxPQUFPLElBQU1HLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQ0MsWUFBRCxFQUF1QkMsU0FBdkIsRUFBc0U7QUFBQSxNQUM1RnRCLEdBRDRGLEdBQ3pFc0IsU0FEeUUsQ0FDNUZ0QixHQUQ0RjtBQUFBLE1BQ3ZGRSxJQUR1RixHQUN6RW9CLFNBRHlFLENBQ3ZGcEIsSUFEdUY7QUFBQSxNQUNqRnFCLElBRGlGLEdBQ3pFRCxTQUR5RSxDQUNqRkMsSUFEaUY7O0FBRW5HLE1BQUk7QUFDRixRQUFNTixJQUFJLEdBQUd2QixFQUFFLENBQUM4QixZQUFILDJCQUFtQ0gsWUFBbkMsV0FBdUQsTUFBdkQsQ0FBYjtBQUNBLFFBQU1JLElBQUksR0FBRzVCLFdBQVcsQ0FBQ0csR0FBRCxFQUFNaUIsSUFBTixFQUFZTSxJQUFaLENBQXhCO0FBQ0EsUUFBTXhCLE1BQU0sR0FBRztBQUFDQyxNQUFBQSxHQUFHLEVBQUhBLEdBQUQ7QUFBTXlCLE1BQUFBLElBQUksRUFBSkEsSUFBTjtBQUFZdkIsTUFBQUEsSUFBSSxFQUFKQTtBQUFaLEtBQWY7QUFFQSxXQUFPSixPQUFPLENBQUNDLE1BQUQsQ0FBUCxDQUNKMkIsSUFESSxDQUNDLFVBQUNDLEdBQUQ7QUFBQSxhQUFTQSxHQUFHLENBQUNDLE1BQUosS0FBZSxRQUF4QjtBQUFBLEtBREQsRUFFSkMsS0FGSSxDQUVFLFVBQUNiLEtBQUQsRUFBa0I7QUFDdkIsWUFBTUEsS0FBTjtBQUNELEtBSkksQ0FBUDtBQUtELEdBVkQsQ0FVRSxPQUFNQSxLQUFOLEVBQWE7QUFDYixXQUFPSixPQUFPLENBQUNFLE1BQVIsQ0FBZUUsS0FBZixDQUFQO0FBQ0Q7QUFDRixDQWZNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7cGFyc2VQaG9uZX0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgdHdpbGlvU2RrIGZyb20gJ3R3aWxpbyc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHtTTVNQYXJhbXNUeXBlLCBUd2lsaW9PcHRpb25zVHlwZX0gZnJvbSAnLi4vdHlwZXMvbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQge2FwcFRlbXBsYXRlfSBmcm9tICcuL2VtYWlsJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ3Ntcyc7XG5cbi8vIFR3aWxpb1xuZXhwb3J0IGNvbnN0IHNlbmRTbXMgPSAocGFyYW1zOiBTTVNQYXJhbXNUeXBlKTogYW55ID0+IHtcbiAgY29uc3Qge1xuICAgIGFwcCA9IHt9LFxuICAgIGNvbnRlbnQsXG4gICAgdXNlciA9IHt9XG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgY291bnRyeSA9IHVzZXIuY291bnRyeSB8fCAnVVMnO1xuICBjb25zdCBwaG9uZSA9IHBhcnNlUGhvbmUodXNlci5waG9uZSwgY291bnRyeSk7XG4gIGNvbnN0IHRlbXBsYXRlQ29udGVudDogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCBjb250ZW50KTtcblxuICBjb25zdCB0d2lsaW86IGFueSA9IHR3aWxpb1NkayhDb25maWcuZ2V0KCd0d2lsaW8uc2lkJyksIENvbmZpZy5nZXQoJ3R3aWxpby50b2tlbicpKTtcbiAgY29uc3QgY2ZnOiBUd2lsaW9PcHRpb25zVHlwZSA9IHtcbiAgICBib2R5OiB0ZW1wbGF0ZUNvbnRlbnQsXG4gICAgZnJvbTogQ29uZmlnLmdldCgndHdpbGlvLm51bWJlcicpLFxuICAgIHRvOiBwaG9uZVxuICB9O1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHdpbGlvLnNlbmRNZXNzYWdlKGNmZywgKGVycm9yLCBkYXRhKSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGVycm9yLmVycm9yX21lc3NhZ2UpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3Qgc2VuZFNtc1RlbXBsYXRlID0gKHRlbXBsYXRlTmFtZTogc3RyaW5nLCBzbXNQYXJhbXM6IFNNU1BhcmFtc1R5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge2FwcCwgdXNlciwgdmFyc30gPSBzbXNQYXJhbXM7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhgLi90ZW1wbGF0ZXMvc21zLyR7dGVtcGxhdGVOYW1lfS50eHRgLCAndXRmOCcpO1xuICAgIGNvbnN0IHRleHQgPSBhcHBUZW1wbGF0ZShhcHAsIGRhdGEsIHZhcnMpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHthcHAsIHRleHQsIHVzZXJ9O1xuXG4gICAgcmV0dXJuIHNlbmRTbXMocGFyYW1zKVxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLnN0YXR1cyA9PT0gJ3F1ZXVlZCcpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxufTtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { ApiContext } from '../types/auth';
2
+ import { PaymentPlan, PaymentSubscription } from '../types/payments';
3
+ export declare const getPlanList: (context: ApiContext, from?: number, to?: number) => Promise<PaymentPlan[]>;
4
+ export declare const getSubscription: (context: ApiContext) => Promise<PaymentSubscription>;
5
+ export declare const addPlan: (context: ApiContext, item: PaymentPlan) => Promise<PaymentPlan>;
6
+ export declare const addSubscription: (context: ApiContext, item: any) => Promise<PaymentSubscription>;
7
+ export declare const deleteSubscription: (context: ApiContext, endDate: number) => Promise<boolean>;