@nlabs/reaktor 0.1.0

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 (154) hide show
  1. package/.vscode/extensions.json +15 -0
  2. package/.vscode/settings.json +82 -0
  3. package/README.md +211 -0
  4. package/index.d.ts +1 -0
  5. package/index.js +5 -0
  6. package/lex.config.js +4 -0
  7. package/lib/config.d.ts +21 -0
  8. package/lib/config.js +127 -0
  9. package/lib/data/conversations.d.ts +6 -0
  10. package/lib/data/conversations.js +201 -0
  11. package/lib/data/dynamodb.d.ts +8 -0
  12. package/lib/data/dynamodb.js +139 -0
  13. package/lib/data/email.d.ts +7 -0
  14. package/lib/data/email.js +164 -0
  15. package/lib/data/files.d.ts +16 -0
  16. package/lib/data/files.js +407 -0
  17. package/lib/data/groups.d.ts +13 -0
  18. package/lib/data/groups.js +354 -0
  19. package/lib/data/images.d.ts +12 -0
  20. package/lib/data/images.js +668 -0
  21. package/lib/data/index.d.ts +19 -0
  22. package/lib/data/index.js +24 -0
  23. package/lib/data/ios.d.ts +6 -0
  24. package/lib/data/ios.js +302 -0
  25. package/lib/data/locations.d.ts +3 -0
  26. package/lib/data/locations.js +132 -0
  27. package/lib/data/messages.d.ts +9 -0
  28. package/lib/data/messages.js +248 -0
  29. package/lib/data/notifications.d.ts +5 -0
  30. package/lib/data/notifications.js +42 -0
  31. package/lib/data/payments.d.ts +11 -0
  32. package/lib/data/payments.js +748 -0
  33. package/lib/data/posts.d.ts +14 -0
  34. package/lib/data/posts.js +458 -0
  35. package/lib/data/reactions.d.ts +6 -0
  36. package/lib/data/reactions.js +218 -0
  37. package/lib/data/s3.d.ts +6 -0
  38. package/lib/data/s3.js +103 -0
  39. package/lib/data/search.d.ts +3 -0
  40. package/lib/data/search.js +98 -0
  41. package/lib/data/sms.d.ts +3 -0
  42. package/lib/data/sms.js +59 -0
  43. package/lib/data/subscription.d.ts +7 -0
  44. package/lib/data/subscription.js +284 -0
  45. package/lib/data/tags.d.ts +14 -0
  46. package/lib/data/tags.js +304 -0
  47. package/lib/data/users.d.ts +12 -0
  48. package/lib/data/users.js +312 -0
  49. package/lib/index.d.ts +3 -0
  50. package/lib/index.js +8 -0
  51. package/lib/types/apps.d.ts +44 -0
  52. package/lib/types/apps.js +2 -0
  53. package/lib/types/arangodb.d.ts +17 -0
  54. package/lib/types/arangodb.js +2 -0
  55. package/lib/types/auth.d.ts +9 -0
  56. package/lib/types/auth.js +2 -0
  57. package/lib/types/conversations.d.ts +6 -0
  58. package/lib/types/conversations.js +2 -0
  59. package/lib/types/email.d.ts +12 -0
  60. package/lib/types/email.js +2 -0
  61. package/lib/types/files.d.ts +28 -0
  62. package/lib/types/files.js +2 -0
  63. package/lib/types/google.d.ts +27 -0
  64. package/lib/types/google.js +2 -0
  65. package/lib/types/groups.d.ts +22 -0
  66. package/lib/types/groups.js +2 -0
  67. package/lib/types/images.d.ts +25 -0
  68. package/lib/types/images.js +2 -0
  69. package/lib/types/index.d.ts +17 -0
  70. package/lib/types/index.js +22 -0
  71. package/lib/types/locations.d.ts +21 -0
  72. package/lib/types/locations.js +2 -0
  73. package/lib/types/messages.d.ts +12 -0
  74. package/lib/types/messages.js +2 -0
  75. package/lib/types/notifications.d.ts +19 -0
  76. package/lib/types/notifications.js +2 -0
  77. package/lib/types/payments.d.ts +119 -0
  78. package/lib/types/payments.js +2 -0
  79. package/lib/types/posts.d.ts +20 -0
  80. package/lib/types/posts.js +2 -0
  81. package/lib/types/reactions.d.ts +4 -0
  82. package/lib/types/reactions.js +2 -0
  83. package/lib/types/tags.d.ts +10 -0
  84. package/lib/types/tags.js +2 -0
  85. package/lib/types/users.d.ts +78 -0
  86. package/lib/types/users.js +2 -0
  87. package/lib/utils/analytics.d.ts +3 -0
  88. package/lib/utils/analytics.js +47 -0
  89. package/lib/utils/arangodb.d.ts +9 -0
  90. package/lib/utils/arangodb.js +98 -0
  91. package/lib/utils/auth.d.ts +2 -0
  92. package/lib/utils/auth.js +43 -0
  93. package/lib/utils/index.d.ts +5 -0
  94. package/lib/utils/index.js +10 -0
  95. package/lib/utils/objects.d.ts +3 -0
  96. package/lib/utils/objects.js +34 -0
  97. package/lib/utils/redis.d.ts +1 -0
  98. package/lib/utils/redis.js +15 -0
  99. package/package.json +75 -0
  100. package/src/config.ts +121 -0
  101. package/src/data/conversations.ts +183 -0
  102. package/src/data/dynamodb.ts +157 -0
  103. package/src/data/email.ts +164 -0
  104. package/src/data/files.ts +352 -0
  105. package/src/data/groups.ts +308 -0
  106. package/src/data/images.ts +606 -0
  107. package/src/data/index.ts +23 -0
  108. package/src/data/ios.ts +249 -0
  109. package/src/data/locations.ts +114 -0
  110. package/src/data/messages.ts +237 -0
  111. package/src/data/notifications.ts +48 -0
  112. package/src/data/payments.ts +675 -0
  113. package/src/data/posts.ts +508 -0
  114. package/src/data/reactions.ts +186 -0
  115. package/src/data/s3.ts +117 -0
  116. package/src/data/search.ts +74 -0
  117. package/src/data/sms.ts +60 -0
  118. package/src/data/subscription.ts +228 -0
  119. package/src/data/tags.ts +230 -0
  120. package/src/data/users.ts +256 -0
  121. package/src/index.ts +7 -0
  122. package/src/types/apps.ts +57 -0
  123. package/src/types/arangodb.ts +23 -0
  124. package/src/types/auth.ts +19 -0
  125. package/src/types/conversations.ts +11 -0
  126. package/src/types/email.ts +17 -0
  127. package/src/types/files.ts +33 -0
  128. package/src/types/google.ts +37 -0
  129. package/src/types/groups.ts +28 -0
  130. package/src/types/images.ts +33 -0
  131. package/src/types/index.ts +21 -0
  132. package/src/types/locations.ts +25 -0
  133. package/src/types/messages.ts +16 -0
  134. package/src/types/notifications.ts +26 -0
  135. package/src/types/payments.ts +134 -0
  136. package/src/types/posts.ts +25 -0
  137. package/src/types/reactions.ts +8 -0
  138. package/src/types/tags.ts +14 -0
  139. package/src/types/users.ts +89 -0
  140. package/src/utils/analytics.ts +41 -0
  141. package/src/utils/arangodb.ts +100 -0
  142. package/src/utils/auth.ts +28 -0
  143. package/src/utils/index.ts +9 -0
  144. package/src/utils/objects.ts +34 -0
  145. package/src/utils/redis.ts +17 -0
  146. package/templates/email/layout.html +279 -0
  147. package/templates/email/passwordForgot.html +15 -0
  148. package/templates/email/passwordRecovery.html +12 -0
  149. package/templates/email/verifyEmail.html +15 -0
  150. package/templates/sms/passwordForgot.txt +1 -0
  151. package/templates/sms/passwordRecovery.txt +1 -0
  152. package/templates/sms/verifyEmail.txt +1 -0
  153. package/templates/sms/verifyPhone.txt +1 -0
  154. package/tsconfig.json +45 -0
@@ -0,0 +1,248 @@
1
+ function _templateObject5() {
2
+ var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m.added < DATE_TIMESTAMP(DATE_SUBTRACT(DATE_NOW(), 60, 'day')) && LENGTH(m.saved) > 0\n REMOVE m IN messages\n RETURN OLD"]);
3
+
4
+ _templateObject5 = function _templateObject5() {
5
+ return data;
6
+ };
7
+
8
+ return data;
9
+ }
10
+
11
+ function _templateObject4() {
12
+ var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m._key == ", " && m.to == ", " && m.from == ", "\n REMOVE m IN messages\n RETURN OLD"]);
13
+
14
+ _templateObject4 = function _templateObject4() {
15
+ return data;
16
+ };
17
+
18
+ return data;
19
+ }
20
+
21
+ function _templateObject3() {
22
+ var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m._key == ", " && m.to == ", "\n UPDATE m WITH {saved: REMOVE_VALUE(m.saved, ", ")} IN messages\n RETURN NEW"]);
23
+
24
+ _templateObject3 = function _templateObject3() {
25
+ return data;
26
+ };
27
+
28
+ return data;
29
+ }
30
+
31
+ function _templateObject2() {
32
+ var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m._key == ", " && m.to == ", "\n UPDATE m WITH {saved: APPEND(m.saved, ", ", true)} IN messages\n RETURN NEW"]);
33
+
34
+ _templateObject2 = function _templateObject2() {
35
+ return data;
36
+ };
37
+
38
+ return data;
39
+ }
40
+
41
+ function _templateObject() {
42
+ var data = _taggedTemplateLiteral(["UPSERT {_key: ", ", to: ", "}\n INSERT ", "\n UPDATE ", "\n IN messages RETURN NEW"]);
43
+
44
+ _templateObject = function _templateObject() {
45
+ return data;
46
+ };
47
+
48
+ return data;
49
+ }
50
+
51
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
52
+
53
+ 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; }
54
+
55
+ 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; }
56
+
57
+ /**
58
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
59
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
60
+ */
61
+ import { createHash, parseId, parseVarChar } from '@nlabs/utils';
62
+ import { aql } from 'arangojs';
63
+ import cloneDeep from 'lodash/cloneDeep';
64
+ import isEmpty from 'lodash/isEmpty';
65
+ import { getLimit, useDb } from '../utils';
66
+ import { getConversation } from './conversations'; // const eventCategory: string = 'messages';
67
+
68
+ export var getMessageList = function getMessageList(context, convoId, from, to) {
69
+ var database = context.database;
70
+ var formatConvoId = parseId(convoId);
71
+ return getConversation(context, formatConvoId).then(function (conversation) {
72
+ var conversationKey = conversation._key;
73
+ var limit = getLimit(from, to);
74
+ var aqlQry = "FOR m IN messages\n FILTER m.to == \"".concat(conversationKey, "\"\n ").concat(limit.aql, "\n SORT m.added\n RETURN m");
75
+ return useDb(database).query(aqlQry).then(function (cursor) {
76
+ return cursor.all();
77
+ }).catch(function (error) {
78
+ throw error;
79
+ });
80
+ });
81
+ };
82
+ export var updateMessage = function updateMessage(context, message) {
83
+ var database = context.database,
84
+ sessionId = context.userId;
85
+ var files = message.files,
86
+ messageId = message.id,
87
+ toId = message.toId;
88
+ var formatToId = parseId(toId);
89
+
90
+ if (formatToId === '') {
91
+ throw new Error('required_to');
92
+ }
93
+
94
+ return getConversation(context, formatToId).then(function (conversation) {
95
+ var conversationKey = conversation._key;
96
+ var now = new Date().getTime();
97
+ var update = {
98
+ content: parseVarChar(message.content, 640),
99
+ files: files || [],
100
+ fromId: sessionId,
101
+ modified: now,
102
+ toId: formatToId
103
+ };
104
+ var formatId = parseId(messageId);
105
+ var updatedId = formatId === '' ? createHash("message-".concat(sessionId)) : formatId;
106
+
107
+ var insert = _objectSpread({}, cloneDeep(update), {
108
+ _key: updatedId,
109
+ added: now
110
+ });
111
+
112
+ var aqlQry = aql(_templateObject(), updatedId, conversationKey, insert, update);
113
+ return useDb(database).query(aqlQry).then(function (cursor) {
114
+ return cursor.next();
115
+ }).then(function () {
116
+ var updatedMessage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
117
+ return (// const {
118
+ // _key: msgId,
119
+ // added: msgAdded,
120
+ // content: msgContent,
121
+ // files: msgFiles,
122
+ // fromId: msgFromId,
123
+ // read: msgRead,
124
+ // saved: msgSaved,
125
+ // toId: msgToId
126
+ // } = updatedMessage;
127
+ // Broadcast to message box
128
+ // if(io) {
129
+ // const msg: MessageType = {
130
+ // added: msgAdded,
131
+ // content: msgContent,
132
+ // files: msgFiles,
133
+ // fromId: msgFromId,
134
+ // id: msgId,
135
+ // read: msgRead,
136
+ // saved: msgSaved,
137
+ // toId: msgToId
138
+ // };
139
+ // io.to(msgToId).emit('message_update', msg);
140
+ // }
141
+ updatedMessage
142
+ );
143
+ }).catch(function (error) {
144
+ throw error;
145
+ });
146
+ });
147
+ };
148
+ export var saveMessage = function saveMessage(context, msgId, convoId) {
149
+ var database = context.database,
150
+ sessionId = context.userId;
151
+ var formatId = parseId(msgId);
152
+ return getConversation(context, convoId).then(function (conversation) {
153
+ var conversationKey = conversation._key;
154
+ var aqlQry = aql(_templateObject2(), formatId, conversationKey, sessionId);
155
+ return useDb(database).query(aqlQry).then(function (cursor) {
156
+ return cursor.next();
157
+ }).then(function () {
158
+ var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
159
+
160
+ if (!isEmpty(message)) {// Broadcast to message box
161
+ // const msg: MessageType = Messages.getMessageObject(message);
162
+ // io.to(message.toId).emit('message_save', msg);
163
+ }
164
+
165
+ return message;
166
+ }).catch(function (error) {
167
+ throw error;
168
+ });
169
+ });
170
+ };
171
+ export var unsaveMessage = function unsaveMessage(context, msgId, convoId) {
172
+ var database = context.database,
173
+ sessionId = context.userId;
174
+ var formatId = parseId(msgId);
175
+ return getConversation(context, convoId).then(function (conversation) {
176
+ var conversationKey = conversation._key;
177
+ var aqlQry = aql(_templateObject3(), formatId, conversationKey, sessionId);
178
+ return useDb(database).query(aqlQry).then(function (cursor) {
179
+ return cursor.next();
180
+ }).then(function () {
181
+ var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
182
+
183
+ if (!isEmpty(message)) {// Broadcast to message box
184
+ // const msg: MessageType = Messages.getMessageObject(message);
185
+ // io.to(message.id).emit('message_unsave', msg);
186
+ }
187
+
188
+ return message;
189
+ }).catch(function (error) {
190
+ throw error;
191
+ });
192
+ });
193
+ };
194
+ export var deleteMessage = function deleteMessage(context, msgId, convoId) {
195
+ var database = context.database,
196
+ sessionId = context.userId;
197
+ var formatId = parseId(msgId);
198
+ return getConversation(context, convoId).then(function (conversation) {
199
+ var conversationKey = conversation._key;
200
+ var aqlQry = aql(_templateObject4(), formatId, conversationKey, sessionId);
201
+ return useDb(database).query(aqlQry).then(function (cursor) {
202
+ return cursor.next();
203
+ }).then(function () {
204
+ var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
205
+
206
+ if (!isEmpty(message)) {// Broadcast to message box
207
+ // const msg: MessageType = Messages.getMessageObject(message);
208
+ // io.to(message.toId).emit('message_delete', msg);
209
+ }
210
+
211
+ return message;
212
+ }).catch(function (error) {
213
+ throw error;
214
+ });
215
+ });
216
+ };
217
+ export var getMessage = function getMessage(data) {
218
+ var msgAdded = data.added,
219
+ msgContent = data.content,
220
+ msgFiles = data.files,
221
+ msgFromId = data.fromId,
222
+ msgId = data._key,
223
+ msgRead = data.read,
224
+ msgSaved = data.saved,
225
+ msgToId = data.toId;
226
+ return {
227
+ added: msgAdded,
228
+ content: msgContent,
229
+ files: msgFiles,
230
+ fromId: msgFromId,
231
+ id: msgId,
232
+ read: msgRead,
233
+ saved: msgSaved,
234
+ toId: msgToId
235
+ };
236
+ };
237
+ export var cleanMessages = function cleanMessages(database) {
238
+ // Remove all messages that are over 60 days and not saved
239
+ var aqlQry = aql(_templateObject5());
240
+ return useDb(database).query(aqlQry).then(function (cursor) {
241
+ return cursor.all();
242
+ }).then(function (list) {
243
+ return list.length;
244
+ }).catch(function (error) {
245
+ throw error;
246
+ });
247
+ };
248
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbImNyZWF0ZUhhc2giLCJwYXJzZUlkIiwicGFyc2VWYXJDaGFyIiwiYXFsIiwiY2xvbmVEZWVwIiwiaXNFbXB0eSIsImdldExpbWl0IiwidXNlRGIiLCJnZXRDb252ZXJzYXRpb24iLCJnZXRNZXNzYWdlTGlzdCIsImNvbnRleHQiLCJjb252b0lkIiwiZnJvbSIsInRvIiwiZGF0YWJhc2UiLCJmb3JtYXRDb252b0lkIiwidGhlbiIsImNvbnZlcnNhdGlvbiIsImNvbnZlcnNhdGlvbktleSIsIl9rZXkiLCJsaW1pdCIsImFxbFFyeSIsInF1ZXJ5IiwiY3Vyc29yIiwiYWxsIiwiY2F0Y2giLCJlcnJvciIsInVwZGF0ZU1lc3NhZ2UiLCJtZXNzYWdlIiwic2Vzc2lvbklkIiwidXNlcklkIiwiZmlsZXMiLCJtZXNzYWdlSWQiLCJpZCIsInRvSWQiLCJmb3JtYXRUb0lkIiwiRXJyb3IiLCJub3ciLCJEYXRlIiwiZ2V0VGltZSIsInVwZGF0ZSIsImNvbnRlbnQiLCJmcm9tSWQiLCJtb2RpZmllZCIsImZvcm1hdElkIiwidXBkYXRlZElkIiwiaW5zZXJ0IiwiYWRkZWQiLCJuZXh0IiwidXBkYXRlZE1lc3NhZ2UiLCJzYXZlTWVzc2FnZSIsIm1zZ0lkIiwidW5zYXZlTWVzc2FnZSIsImRlbGV0ZU1lc3NhZ2UiLCJnZXRNZXNzYWdlIiwiZGF0YSIsIm1zZ0FkZGVkIiwibXNnQ29udGVudCIsIm1zZ0ZpbGVzIiwibXNnRnJvbUlkIiwibXNnUmVhZCIsInJlYWQiLCJtc2dTYXZlZCIsInNhdmVkIiwibXNnVG9JZCIsImNsZWFuTWVzc2FnZXMiLCJsaXN0IiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBSUEsU0FBUUEsVUFBUixFQUFvQkMsT0FBcEIsRUFBNkJDLFlBQTdCLFFBQWdELGNBQWhE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QSxJQUFJLEVBQUU4QjtBQVJELEdBQVA7QUFVRCxDQXRCTTtBQXdCUCxPQUFPLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsQ0FBQ25ELFFBQUQsRUFBdUM7QUFDbEU7QUFDQSxNQUFNTyxNQUFNLEdBQUdsQixHQUFILG9CQUFaO0FBS0EsU0FBT0ksS0FBSyxDQUFDTyxRQUFELENBQUwsQ0FBZ0JRLEtBQWhCLENBQXNCRCxNQUF0QixFQUNKTCxJQURJLENBQ0MsVUFBQ08sTUFBRDtBQUFBLFdBQXlCQSxNQUFNLENBQUNDLEdBQVAsRUFBekI7QUFBQSxHQURELEVBRUpSLElBRkksQ0FFQyxVQUFDa0QsSUFBRDtBQUFBLFdBQXlCQSxJQUFJLENBQUNDLE1BQTlCO0FBQUEsR0FGRCxFQUdKMUMsS0FISSxDQUdFLFVBQUNDLEtBQUQsRUFBa0I7QUFDdkIsVUFBTUEsS0FBTjtBQUNELEdBTEksQ0FBUDtBQU1ELENBYk0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkLCBwYXJzZVZhckNoYXJ9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtDb252ZXJzYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9jb252ZXJzYXRpb25zJztcbmltcG9ydCB7TWVzc2FnZVR5cGV9IGZyb20gJy4uL3R5cGVzL21lc3NhZ2VzJztcbmltcG9ydCB7Z2V0TGltaXQsIHVzZURifSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2dldENvbnZlcnNhdGlvbn0gZnJvbSAnLi9jb252ZXJzYXRpb25zJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ21lc3NhZ2VzJztcblxuZXhwb3J0IGNvbnN0IGdldE1lc3NhZ2VMaXN0ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZywgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogUHJvbWlzZTxNZXNzYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgZm9ybWF0Q29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICAgICAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBGSUxURVIgbS50byA9PSBcIiR7Y29udmVyc2F0aW9uS2V5fVwiXG4gICAgICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICAgICAgU09SVCBtLmFkZGVkXG4gICAgICAgICAgUkVUVVJOIG1gO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1lc3NhZ2U6IE1lc3NhZ2VUeXBlKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtmaWxlcywgaWQ6IG1lc3NhZ2VJZCwgdG9JZH0gPSBtZXNzYWdlO1xuICBjb25zdCBmb3JtYXRUb0lkOiBzdHJpbmcgPSBwYXJzZUlkKHRvSWQpO1xuXG4gIGlmKGZvcm1hdFRvSWQgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlZF90bycpO1xuICB9XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBmb3JtYXRUb0lkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3Qgbm93OiBudW1iZXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICAgICAgY29uc3QgdXBkYXRlOiBNZXNzYWdlVHlwZSA9IHtcbiAgICAgICAgY29udGVudDogcGFyc2VWYXJDaGFyKG1lc3NhZ2UuY29udGVudCwgNjQwKSxcbiAgICAgICAgZmlsZXM6IGZpbGVzIHx8IFtdLFxuICAgICAgICBmcm9tSWQ6IHNlc3Npb25JZCxcbiAgICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgICAgdG9JZDogZm9ybWF0VG9JZFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdElkOiBzdHJpbmcgPSBwYXJzZUlkKG1lc3NhZ2VJZCk7XG4gICAgICBjb25zdCB1cGRhdGVkSWQ6IHN0cmluZyA9IGZvcm1hdElkID09PSAnJyA/IGNyZWF0ZUhhc2goYG1lc3NhZ2UtJHtzZXNzaW9uSWR9YCkgOiBmb3JtYXRJZDtcbiAgICAgIGNvbnN0IGluc2VydDogTWVzc2FnZVR5cGUgPSB7XG4gICAgICAgIC4uLmNsb25lRGVlcCh1cGRhdGUpLFxuICAgICAgICBfa2V5OiB1cGRhdGVkSWQsXG4gICAgICAgIGFkZGVkOiBub3dcbiAgICAgIH07XG4gICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHt1cGRhdGVkSWR9LCB0bzogJHtjb252ZXJzYXRpb25LZXl9fVxuICAgICAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgICAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgICAgICAgSU4gbWVzc2FnZXMgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKHVwZGF0ZWRNZXNzYWdlOiBNZXNzYWdlVHlwZSA9IHt9KSA9PlxuICAgICAgICAgIC8vIGNvbnN0IHtcbiAgICAgICAgICAvLyAgIF9rZXk6IG1zZ0lkLFxuICAgICAgICAgIC8vICAgYWRkZWQ6IG1zZ0FkZGVkLFxuICAgICAgICAgIC8vICAgY29udGVudDogbXNnQ29udGVudCxcbiAgICAgICAgICAvLyAgIGZpbGVzOiBtc2dGaWxlcyxcbiAgICAgICAgICAvLyAgIGZyb21JZDogbXNnRnJvbUlkLFxuICAgICAgICAgIC8vICAgcmVhZDogbXNnUmVhZCxcbiAgICAgICAgICAvLyAgIHNhdmVkOiBtc2dTYXZlZCxcbiAgICAgICAgICAvLyAgIHRvSWQ6IG1zZ1RvSWRcbiAgICAgICAgICAvLyB9ID0gdXBkYXRlZE1lc3NhZ2U7XG5cbiAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAvLyBpZihpbykge1xuICAgICAgICAgIC8vICAgY29uc3QgbXNnOiBNZXNzYWdlVHlwZSA9IHtcbiAgICAgICAgICAvLyAgICAgYWRkZWQ6IG1zZ0FkZGVkLFxuICAgICAgICAgIC8vICAgICBjb250ZW50OiBtc2dDb250ZW50LFxuICAgICAgICAgIC8vICAgICBmaWxlczogbXNnRmlsZXMsXG4gICAgICAgICAgLy8gICAgIGZyb21JZDogbXNnRnJvbUlkLFxuICAgICAgICAgIC8vICAgICBpZDogbXNnSWQsXG4gICAgICAgICAgLy8gICAgIHJlYWQ6IG1zZ1JlYWQsXG4gICAgICAgICAgLy8gICAgIHNhdmVkOiBtc2dTYXZlZCxcbiAgICAgICAgICAvLyAgICAgdG9JZDogbXNnVG9JZFxuICAgICAgICAgIC8vICAgfTtcblxuICAgICAgICAgIC8vICAgaW8udG8obXNnVG9JZCkuZW1pdCgnbWVzc2FnZV91cGRhdGUnLCBtc2cpO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIHVwZGF0ZWRNZXNzYWdlXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBzYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtc2dJZDogc3RyaW5nLCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobXNnSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9XG4gICAgICAgIFVQREFURSBtIFdJVEgge3NhdmVkOiBBUFBFTkQobS5zYXZlZCwgJHtzZXNzaW9uSWR9LCB0cnVlKX0gSU4gbWVzc2FnZXNcbiAgICAgICAgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9zYXZlJywgbXNnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCB1bnNhdmVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1zZ0lkOiBzdHJpbmcsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtc2dJZCk7XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBjb252b0lkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH0gJiYgbS50byA9PSAke2NvbnZlcnNhdGlvbktleX1cbiAgICAgICAgICBVUERBVEUgbSBXSVRIIHtzYXZlZDogUkVNT1ZFX1ZBTFVFKG0uc2F2ZWQsICR7c2Vzc2lvbklkfSl9IElOIG1lc3NhZ2VzXG4gICAgICAgICAgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UuaWQpLmVtaXQoJ21lc3NhZ2VfdW5zYXZlJywgbXNnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtc2dJZDogc3RyaW5nLCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobXNnSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9ICYmIG0uZnJvbSA9PSAke3Nlc3Npb25JZH1cbiAgICAgICAgUkVNT1ZFIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9kZWxldGUnLCBtc2cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNZXNzYWdlID0gKGRhdGE6IE1lc3NhZ2VUeXBlKTogTWVzc2FnZVR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgYWRkZWQ6IG1zZ0FkZGVkLFxuICAgIGNvbnRlbnQ6IG1zZ0NvbnRlbnQsXG4gICAgZmlsZXM6IG1zZ0ZpbGVzLFxuICAgIGZyb21JZDogbXNnRnJvbUlkLFxuICAgIF9rZXk6IG1zZ0lkLFxuICAgIHJlYWQ6IG1zZ1JlYWQsXG4gICAgc2F2ZWQ6IG1zZ1NhdmVkLFxuICAgIHRvSWQ6IG1zZ1RvSWRcbiAgfSA9IGRhdGE7XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRlZDogbXNnQWRkZWQsXG4gICAgY29udGVudDogbXNnQ29udGVudCxcbiAgICBmaWxlczogbXNnRmlsZXMsXG4gICAgZnJvbUlkOiBtc2dGcm9tSWQsXG4gICAgaWQ6IG1zZ0lkLFxuICAgIHJlYWQ6IG1zZ1JlYWQsXG4gICAgc2F2ZWQ6IG1zZ1NhdmVkLFxuICAgIHRvSWQ6IG1zZ1RvSWRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhbk1lc3NhZ2VzID0gKGRhdGFiYXNlOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAvLyBSZW1vdmUgYWxsIG1lc3NhZ2VzIHRoYXQgYXJlIG92ZXIgNjAgZGF5cyBhbmQgbm90IHNhdmVkXG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgRklMVEVSIG0uYWRkZWQgPCBEQVRFX1RJTUVTVEFNUChEQVRFX1NVQlRSQUNUKERBVEVfTk9XKCksIDYwLCAnZGF5JykpICYmIExFTkdUSChtLnNhdmVkKSA+IDBcbiAgICAgIFJFTU9WRSBtIElOIG1lc3NhZ2VzXG4gICAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChsaXN0OiBNZXNzYWdlVHlwZVtdKSA9PiBsaXN0Lmxlbmd0aClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuIl19
@@ -0,0 +1,5 @@
1
+ import { Provider, Responses } from 'apn';
2
+ import { NotificationType } from '../types/notifications';
3
+ export declare const getAPNProvider: () => Provider;
4
+ export declare const pushNotification: (deviceTokens: string[], note: NotificationType) => Promise<Responses>;
5
+ export declare const clearBadges: (deviceTokens: string[]) => Promise<Responses>;
@@ -0,0 +1,42 @@
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 { Notification as APNNotification, Provider } from 'apn';
6
+ import { Config } from '../config';
7
+ // const eventCategory: string = 'notifications';
8
+ // Push Notifications
9
+ export var getAPNProvider = function getAPNProvider() {
10
+ return new Provider({
11
+ ca: Config.get('app.apn.ca'),
12
+ cert: Config.get('app.apn.cert'),
13
+ key: Config.get('app.apn.key'),
14
+ production: Config.get('environment') === 'production'
15
+ });
16
+ };
17
+ export var pushNotification = function pushNotification(deviceTokens, note) {
18
+ // Push notification to device
19
+ var provider = getAPNProvider();
20
+ var notification = new APNNotification();
21
+ notification.topic = Config.get('app.apn.id');
22
+ notification.alert = note.message;
23
+
24
+ if (note.data) {
25
+ notification.mutableContent = true;
26
+ notification.payload = note.data;
27
+ }
28
+
29
+ if (note.badge !== undefined) {
30
+ notification.badge = note.badge;
31
+ }
32
+
33
+ return provider.send(notification, deviceTokens);
34
+ };
35
+ export var clearBadges = function clearBadges(deviceTokens) {
36
+ // Push notification to device
37
+ var provider = getAPNProvider();
38
+ var notification = new APNNotification();
39
+ notification.badge = 0;
40
+ return provider.send(notification, deviceTokens);
41
+ };
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL25vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOlsiTm90aWZpY2F0aW9uIiwiQVBOTm90aWZpY2F0aW9uIiwiUHJvdmlkZXIiLCJDb25maWciLCJnZXRBUE5Qcm92aWRlciIsImNhIiwiZ2V0IiwiY2VydCIsImtleSIsInByb2R1Y3Rpb24iLCJwdXNoTm90aWZpY2F0aW9uIiwiZGV2aWNlVG9rZW5zIiwibm90ZSIsInByb3ZpZGVyIiwibm90aWZpY2F0aW9uIiwidG9waWMiLCJhbGVydCIsIm1lc3NhZ2UiLCJkYXRhIiwibXV0YWJsZUNvbnRlbnQiLCJwYXlsb2FkIiwiYmFkZ2UiLCJ1bmRlZmluZWQiLCJzZW5kIiwiY2xlYXJCYWRnZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBSUEsU0FBUUEsWUFBWSxJQUFJQyxlQUF4QixFQUF5Q0MsUUFBekMsUUFBbUUsS0FBbkU7QUFFQSxTQUFRQyxNQUFSLFFBQXFCLFdBQXJCO0FBR0E7QUFFQTtBQUNBLE9BQU8sSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixHQUFnQjtBQUM1QyxTQUFPLElBQUlGLFFBQUosQ0FBYTtBQUNsQkcsSUFBQUEsRUFBRSxFQUFFRixNQUFNLENBQUNHLEdBQVAsQ0FBVyxZQUFYLENBRGM7QUFFbEJDLElBQUFBLElBQUksRUFBRUosTUFBTSxDQUFDRyxHQUFQLENBQVcsY0FBWCxDQUZZO0FBR2xCRSxJQUFBQSxHQUFHLEVBQUVMLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLGFBQVgsQ0FIYTtBQUlsQkcsSUFBQUEsVUFBVSxFQUFFTixNQUFNLENBQUNHLEdBQVAsQ0FBVyxhQUFYLE1BQThCO0FBSnhCLEdBQWIsQ0FBUDtBQU1ELENBUE07QUFTUCxPQUFPLElBQU1JLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBQ0MsWUFBRCxFQUF5QkMsSUFBekIsRUFBd0U7QUFDdEc7QUFDQSxNQUFNQyxRQUFrQixHQUFHVCxjQUFjLEVBQXpDO0FBQ0EsTUFBTVUsWUFBNkIsR0FBRyxJQUFJYixlQUFKLEVBQXRDO0FBQ0FhLEVBQUFBLFlBQVksQ0FBQ0MsS0FBYixHQUFxQlosTUFBTSxDQUFDRyxHQUFQLENBQVcsWUFBWCxDQUFyQjtBQUNBUSxFQUFBQSxZQUFZLENBQUNFLEtBQWIsR0FBcUJKLElBQUksQ0FBQ0ssT0FBMUI7O0FBRUEsTUFBR0wsSUFBSSxDQUFDTSxJQUFSLEVBQWM7QUFDWkosSUFBQUEsWUFBWSxDQUFDSyxjQUFiLEdBQThCLElBQTlCO0FBQ0FMLElBQUFBLFlBQVksQ0FBQ00sT0FBYixHQUF1QlIsSUFBSSxDQUFDTSxJQUE1QjtBQUNEOztBQUVELE1BQUdOLElBQUksQ0FBQ1MsS0FBTCxLQUFlQyxTQUFsQixFQUE2QjtBQUMzQlIsSUFBQUEsWUFBWSxDQUFDTyxLQUFiLEdBQXFCVCxJQUFJLENBQUNTLEtBQTFCO0FBQ0Q7O0FBRUQsU0FBT1IsUUFBUSxDQUFDVSxJQUFULENBQWNULFlBQWQsRUFBNEJILFlBQTVCLENBQVA7QUFDRCxDQWpCTTtBQW1CUCxPQUFPLElBQU1hLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUNiLFlBQUQsRUFBZ0Q7QUFDekU7QUFDQSxNQUFNRSxRQUFRLEdBQUdULGNBQWMsRUFBL0I7QUFDQSxNQUFNVSxZQUFZLEdBQUcsSUFBSWIsZUFBSixFQUFyQjtBQUNBYSxFQUFBQSxZQUFZLENBQUNPLEtBQWIsR0FBcUIsQ0FBckI7QUFFQSxTQUFPUixRQUFRLENBQUNVLElBQVQsQ0FBY1QsWUFBZCxFQUE0QkgsWUFBNUIsQ0FBUDtBQUNELENBUE0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtOb3RpZmljYXRpb24gYXMgQVBOTm90aWZpY2F0aW9uLCBQcm92aWRlciwgUmVzcG9uc2VzfSBmcm9tICdhcG4nO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7Tm90aWZpY2F0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvbm90aWZpY2F0aW9ucyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdub3RpZmljYXRpb25zJztcblxuLy8gUHVzaCBOb3RpZmljYXRpb25zXG5leHBvcnQgY29uc3QgZ2V0QVBOUHJvdmlkZXIgPSAoKTogUHJvdmlkZXIgPT4ge1xuICByZXR1cm4gbmV3IFByb3ZpZGVyKHtcbiAgICBjYTogQ29uZmlnLmdldCgnYXBwLmFwbi5jYScpLFxuICAgIGNlcnQ6IENvbmZpZy5nZXQoJ2FwcC5hcG4uY2VydCcpLFxuICAgIGtleTogQ29uZmlnLmdldCgnYXBwLmFwbi5rZXknKSxcbiAgICBwcm9kdWN0aW9uOiBDb25maWcuZ2V0KCdlbnZpcm9ubWVudCcpID09PSAncHJvZHVjdGlvbidcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcHVzaE5vdGlmaWNhdGlvbiA9IChkZXZpY2VUb2tlbnM6IHN0cmluZ1tdLCBub3RlOiBOb3RpZmljYXRpb25UeXBlKTogUHJvbWlzZTxSZXNwb25zZXM+ID0+IHtcbiAgLy8gUHVzaCBub3RpZmljYXRpb24gdG8gZGV2aWNlXG4gIGNvbnN0IHByb3ZpZGVyOiBQcm92aWRlciA9IGdldEFQTlByb3ZpZGVyKCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbjogQVBOTm90aWZpY2F0aW9uID0gbmV3IEFQTk5vdGlmaWNhdGlvbigpO1xuICBub3RpZmljYXRpb24udG9waWMgPSBDb25maWcuZ2V0KCdhcHAuYXBuLmlkJyk7XG4gIG5vdGlmaWNhdGlvbi5hbGVydCA9IG5vdGUubWVzc2FnZTtcblxuICBpZihub3RlLmRhdGEpIHtcbiAgICBub3RpZmljYXRpb24ubXV0YWJsZUNvbnRlbnQgPSB0cnVlO1xuICAgIG5vdGlmaWNhdGlvbi5wYXlsb2FkID0gbm90ZS5kYXRhO1xuICB9XG5cbiAgaWYobm90ZS5iYWRnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbm90aWZpY2F0aW9uLmJhZGdlID0gbm90ZS5iYWRnZTtcbiAgfVxuXG4gIHJldHVybiBwcm92aWRlci5zZW5kKG5vdGlmaWNhdGlvbiwgZGV2aWNlVG9rZW5zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhckJhZGdlcyA9IChkZXZpY2VUb2tlbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxSZXNwb25zZXM+ID0+IHtcbiAgLy8gUHVzaCBub3RpZmljYXRpb24gdG8gZGV2aWNlXG4gIGNvbnN0IHByb3ZpZGVyID0gZ2V0QVBOUHJvdmlkZXIoKTtcbiAgY29uc3Qgbm90aWZpY2F0aW9uID0gbmV3IEFQTk5vdGlmaWNhdGlvbigpO1xuICBub3RpZmljYXRpb24uYmFkZ2UgPSAwO1xuXG4gIHJldHVybiBwcm92aWRlci5zZW5kKG5vdGlmaWNhdGlvbiwgZGV2aWNlVG9rZW5zKTtcbn07XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { ApiContext, PaymentBankAccount, PaymentCardType, PaymentCharge, PaymentTransfer, UserType } from '../types';
2
+ export declare const addCustomerAccount: (context: ApiContext) => Promise<boolean>;
3
+ export declare const addPaymentAccountBank: (context: ApiContext, bankAccount: PaymentBankAccount) => Promise<boolean>;
4
+ export declare const addPaymentAccountCard: (context: ApiContext, card: PaymentCardType, requestData: any) => Promise<UserType>;
5
+ export declare const addCreditCard: (context: ApiContext, card: PaymentCardType) => Promise<PaymentCardType>;
6
+ export declare const updateCreditCard: (context: ApiContext, card: PaymentCardType) => Promise<PaymentCardType>;
7
+ export declare const getCreditCards: (context: ApiContext) => Promise<PaymentCardType[]>;
8
+ export declare const deleteCreditCard: (context: ApiContext, cardId: string) => Promise<boolean>;
9
+ export declare const deletePaymentAccountBank: (context: ApiContext, bankId: string) => Promise<boolean>;
10
+ export declare const createPaymentTransfer: (context: ApiContext, transfer: PaymentTransfer) => Promise<PaymentTransfer>;
11
+ export declare const createPaymentHold: (context: ApiContext, payment: PaymentCharge) => Promise<PaymentCharge>;