@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,19 @@
1
+ export * from './conversations';
2
+ export * from './dynamodb';
3
+ export * from './email';
4
+ export * from './files';
5
+ export * from './groups';
6
+ export * from './images';
7
+ export * from './ios';
8
+ export * from './locations';
9
+ export * from './messages';
10
+ export * from './notifications';
11
+ export * from './payments';
12
+ export * from './posts';
13
+ export * from './reactions';
14
+ export * from './s3';
15
+ export * from './search';
16
+ export * from './sms';
17
+ export * from './subscription';
18
+ export * from './tags';
19
+ export * from './users';
@@ -0,0 +1,24 @@
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
+ export * from './conversations';
6
+ export * from './dynamodb';
7
+ export * from './email';
8
+ export * from './files';
9
+ export * from './groups';
10
+ export * from './images';
11
+ export * from './ios';
12
+ export * from './locations';
13
+ export * from './messages';
14
+ export * from './notifications';
15
+ export * from './payments';
16
+ export * from './posts';
17
+ export * from './reactions';
18
+ export * from './s3';
19
+ export * from './search';
20
+ export * from './sms';
21
+ export * from './subscription';
22
+ export * from './tags';
23
+ export * from './users';
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBSUEsY0FBYyxpQkFBZDtBQUNBLGNBQWMsWUFBZDtBQUNBLGNBQWMsU0FBZDtBQUNBLGNBQWMsU0FBZDtBQUNBLGNBQWMsVUFBZDtBQUNBLGNBQWMsVUFBZDtBQUNBLGNBQWMsT0FBZDtBQUNBLGNBQWMsYUFBZDtBQUNBLGNBQWMsWUFBZDtBQUNBLGNBQWMsaUJBQWQ7QUFDQSxjQUFjLFlBQWQ7QUFDQSxjQUFjLFNBQWQ7QUFDQSxjQUFjLGFBQWQ7QUFDQSxjQUFjLE1BQWQ7QUFDQSxjQUFjLFVBQWQ7QUFDQSxjQUFjLE9BQWQ7QUFDQSxjQUFjLGdCQUFkO0FBQ0EsY0FBYyxRQUFkO0FBQ0EsY0FBYyxTQUFkIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vY29udmVyc2F0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2R5bmFtb2RiJztcbmV4cG9ydCAqIGZyb20gJy4vZW1haWwnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2dyb3Vwcyc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlcyc7XG5leHBvcnQgKiBmcm9tICcuL2lvcyc7XG5leHBvcnQgKiBmcm9tICcuL2xvY2F0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3BheW1lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vcG9zdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zMyc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaCc7XG5leHBvcnQgKiBmcm9tICcuL3Ntcyc7XG5leHBvcnQgKiBmcm9tICcuL3N1YnNjcmlwdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3RhZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi91c2Vycyc7Il19
@@ -0,0 +1,6 @@
1
+ import { ApiContext, PaymentIOSInAppError, PaymentIOSSubscriptionUpdate, PaymentSubscription } from '../types';
2
+ export declare const getIOSInAppError: (statusCode: string) => PaymentIOSInAppError;
3
+ export declare const iOSSubscriptionUpdate: (database: string, subscriptionUpdate: PaymentIOSSubscriptionUpdate) => Promise<void>;
4
+ export declare const getIOSSubscription: (context: ApiContext) => Promise<PaymentSubscription>;
5
+ export declare const addIOSInApp: (context: ApiContext, subscription: PaymentSubscription) => Promise<PaymentSubscription>;
6
+ export declare const getIOSInApp: (context: ApiContext) => Promise<PaymentSubscription>;
@@ -0,0 +1,302 @@
1
+ function _templateObject4() {
2
+ var data = _taggedTemplateLiteral(["FOR s IN subscription\n FILTER s.userId == ", " && s.type == \"ios\"\n LIMIT 1\n RETURN s"]);
3
+
4
+ _templateObject4 = function _templateObject4() {
5
+ return data;
6
+ };
7
+
8
+ return data;
9
+ }
10
+
11
+ function _templateObject3() {
12
+ var data = _taggedTemplateLiteral(["INSERT ", " IN subscriptions RETURN NEW"]);
13
+
14
+ _templateObject3 = function _templateObject3() {
15
+ return data;
16
+ };
17
+
18
+ return data;
19
+ }
20
+
21
+ function _templateObject2() {
22
+ var data = _taggedTemplateLiteral(["FOR s IN subscriptions\n FILTER s.userId == ", " && s.type == \"ios_payment\"\n LIMIT 1\n RETURN s"]);
23
+
24
+ _templateObject2 = function _templateObject2() {
25
+ return data;
26
+ };
27
+
28
+ return data;
29
+ }
30
+
31
+ function _templateObject() {
32
+ var data = _taggedTemplateLiteral(["UPSERT {transactionId: ", "}\n INSERT ", "\n UPDATE ", " IN subscriptions\n LIMIT 1"]);
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
+ 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; }
44
+
45
+ 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; }
46
+
47
+ import { createHash } from '@nlabs/utils';
48
+ import { aql } from 'arangojs';
49
+ import { logError, useDb } from '../utils';
50
+ var eventCategory = 'ios';
51
+ export var getIOSInAppError = function getIOSInAppError(statusCode) {
52
+ var _codes;
53
+
54
+ var codes = (_codes = {}, _defineProperty(_codes, 0, {
55
+ error: false,
56
+ message: 'Active',
57
+ valid: true
58
+ }), _defineProperty(_codes, 21000, {
59
+ error: true,
60
+ id: 'payment_receipt_unreadable',
61
+ message: 'App store could not read',
62
+ valid: false
63
+ }), _defineProperty(_codes, 21002, {
64
+ error: true,
65
+ id: 'payment_data_malformed',
66
+ message: 'Data was malformed',
67
+ valid: false
68
+ }), _defineProperty(_codes, 21003, {
69
+ error: true,
70
+ id: 'payment_receipt_unauthorized',
71
+ message: 'Receipt not authenticated',
72
+ valid: false
73
+ }), _defineProperty(_codes, 21004, {
74
+ error: true,
75
+ id: 'payment_invalid_secret',
76
+ message: 'Shared secret does not match',
77
+ valid: false
78
+ }), _defineProperty(_codes, 21005, {
79
+ error: true,
80
+ id: 'payment_server_unavailable',
81
+ message: 'Receipt server unavailable',
82
+ valid: false
83
+ }), _defineProperty(_codes, 21006, {
84
+ error: false,
85
+ id: 'payment_subscription_expired',
86
+ message: 'Receipt valid but sub expired',
87
+ valid: true
88
+ }), _defineProperty(_codes, 21007, {
89
+ error: true,
90
+ id: 'payment_invalid_server',
91
+ message: 'Sandbox receipt sent to Production environment',
92
+ redirect: true,
93
+ valid: false
94
+ }), _defineProperty(_codes, 21008, {
95
+ error: true,
96
+ id: 'payment_invalid_server',
97
+ message: 'Production receipt sent to Sandbox environment',
98
+ valid: false
99
+ }), _codes);
100
+ return codes[statusCode] || {};
101
+ };
102
+ export var iOSSubscriptionUpdate = function iOSSubscriptionUpdate(database, subscriptionUpdate) {
103
+ var action = 'iOSSubscriptionUpdate';
104
+ var planId = subscriptionUpdate.auto_renew_adam_id,
105
+ cancelDate = subscriptionUpdate.cancellation_date,
106
+ status = subscriptionUpdate.notification_type,
107
+ latestReceipt = subscriptionUpdate.latest_receipt,
108
+ latestInfo = subscriptionUpdate.latest_receipt_info,
109
+ expiredReceipt = subscriptionUpdate.latest_expired_receipt,
110
+ expiredInfo = subscriptionUpdate.latest_expired_receipt_info,
111
+ transactionId = subscriptionUpdate.original_transaction_id;
112
+ var formatStatus = (status || '').toLowerCase();
113
+ var now = Date.now();
114
+ var receiptInfo = latestInfo || expiredInfo;
115
+ var id = createHash("payment-".concat(transactionId));
116
+ var update = {
117
+ cancelDate: cancelDate,
118
+ isValid: receiptInfo[0].expires_date_ms > now,
119
+ modified: now,
120
+ planId: planId,
121
+ receipt: latestReceipt || expiredReceipt,
122
+ status: formatStatus
123
+ };
124
+
125
+ var insert = _objectSpread({}, update, {
126
+ _key: id,
127
+ added: now,
128
+ type: 'ios_payment'
129
+ });
130
+
131
+ var aqlQry = aql(_templateObject(), transactionId, insert, update);
132
+ return useDb(database).query(aqlQry).then(function () {
133
+ return null;
134
+ }).catch(function (dbError) {
135
+ return logError({
136
+ action: action,
137
+ category: eventCategory,
138
+ label: 'db_error'
139
+ }, dbError, {}).then(function () {
140
+ return null;
141
+ });
142
+ });
143
+ }; // export const addIOSInApp = (
144
+ // context: ApiContext,
145
+ // app,
146
+ // subscription: PaymentSubscription
147
+ // ): Promise<PaymentSubscription> => {
148
+ // const action: string = 'addIOSInApp';
149
+ // const {isProduction, receipt} = subscription;
150
+ // const {database, userId: sessionId} = context;
151
+ // const productionHost: string = 'buy.itunes.apple.com';
152
+ // const sandboxHost: string = 'sandbox.itunes.apple.com';
153
+ // const endpoint: string = isProduction ? productionHost : sandboxHost;
154
+ // const verifyUrl: string = `https://${endpoint}/verifyReceipt`;
155
+ // const payload: object = {
156
+ // password: app.iap,
157
+ // 'receipt-data': decodeURIComponent(receipt)
158
+ // };
159
+ // const options: object = {
160
+ // headers: {
161
+ // 'Content-Type': 'application/x-www-form-urlencoded'
162
+ // }
163
+ // };
164
+ // return post(verifyUrl, payload, options)
165
+ // .then((results) => {
166
+ // const json = JSON.parse(results);
167
+ // const {
168
+ // latest_receipt: latestReceipt,
169
+ // latest_receipt_info: latestInfo,
170
+ // status
171
+ // } = json;
172
+ // const {
173
+ // is_trial_period: trialPeriod,
174
+ // original_purchase_date_ms: added,
175
+ // expires_date: expires,
176
+ // product_id: planId,
177
+ // transaction_id: transactionId
178
+ // } = latestInfo;
179
+ // if(status === 0 || status === 21006) {
180
+ // const id: string = createHash(`payment-${transactionId}`);
181
+ // const now: number = Date.now();
182
+ // const update: PaymentSubscription = {
183
+ // expires,
184
+ // isTrial: trialPeriod === 'true',
185
+ // isValid: expires > now,
186
+ // modified: now,
187
+ // planId,
188
+ // receipt: latestReceipt,
189
+ // transactionId,
190
+ // userId: sessionId
191
+ // };
192
+ // const insert: PaymentSubscription = {
193
+ // ...update,
194
+ // _key: id,
195
+ // added,
196
+ // type: 'ios_payment'
197
+ // };
198
+ // const aqlQry: AqlQuery = aql`UPSERT {transactionId: ${transactionId}}
199
+ // INSERT ${insert}
200
+ // UPDATE ${update} IN subscriptions
201
+ // RETURN NEW`;
202
+ // return useDb(database).query(aqlQry)
203
+ // .then((cursor: ArrayCursor) => cursor.next())
204
+ // .then((updatedSubscription: PaymentSubscription = {}) => updatedSubscription)
205
+ // .catch((dbError: Error) => logError({
206
+ // action,
207
+ // category: eventCategory,
208
+ // label: 'db_error'
209
+ // }, dbError, context).then(() => null));
210
+ // }
211
+ // // Errors
212
+ // const error: PaymentIOSInAppError = getIOSInAppError(results.status);
213
+ // return logException({
214
+ // action,
215
+ // category: eventCategory,
216
+ // label: 'payment_error',
217
+ // message: error.message,
218
+ // value: error.id
219
+ // }, context).then(() => null);
220
+ // });
221
+ // };
222
+
223
+ export var getIOSSubscription = function getIOSSubscription(context) {
224
+ var action = 'getIOSSubscription';
225
+ var database = context.database,
226
+ sessionId = context.userId;
227
+ var aqlQry = aql(_templateObject2(), sessionId);
228
+ return useDb(database).query(aqlQry).then(function (cursor) {
229
+ return cursor.next();
230
+ }).then(function () {
231
+ var subscription = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
232
+ return subscription;
233
+ }).catch(function (error) {
234
+ return logError({
235
+ action: action,
236
+ category: eventCategory,
237
+ label: 'db_error'
238
+ }, error, context).then(function () {
239
+ return null;
240
+ });
241
+ });
242
+ };
243
+ export var addIOSInApp = function addIOSInApp(context, subscription) {
244
+ var action = 'addIOSInApp';
245
+ var database = context.database,
246
+ sessionId = context.userId;
247
+ var now = Date.now();
248
+ var _subscription$added = subscription.added,
249
+ added = _subscription$added === void 0 ? now : _subscription$added,
250
+ planId = subscription.planId,
251
+ receipt = subscription.receipt,
252
+ transactionId = subscription.transactionId,
253
+ trialEnd = subscription.trialEnd;
254
+ var subscriptionId = createHash("subscription-".concat(transactionId));
255
+ var insert = {
256
+ _key: subscriptionId,
257
+ added: added,
258
+ modified: now,
259
+ planId: planId,
260
+ receipt: receipt,
261
+ transactionId: transactionId,
262
+ trialEnd: trialEnd,
263
+ type: 'ios_subscription',
264
+ userId: sessionId
265
+ };
266
+ var aqlQry = aql(_templateObject3(), insert);
267
+ return useDb(database).query(aqlQry).then(function (cursor) {
268
+ return cursor.next();
269
+ }).then(function () {
270
+ var updatedSubscription = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
271
+ return updatedSubscription;
272
+ }).catch(function (error) {
273
+ return logError({
274
+ action: action,
275
+ category: eventCategory,
276
+ label: 'db_error'
277
+ }, error, context).then(function () {
278
+ return null;
279
+ });
280
+ });
281
+ };
282
+ export var getIOSInApp = function getIOSInApp(context) {
283
+ var action = 'getIOSInApp';
284
+ var database = context.database,
285
+ sessionId = context.userId;
286
+ var aqlQry = aql(_templateObject4(), sessionId);
287
+ return useDb(database).query(aqlQry).then(function (cursor) {
288
+ return cursor.next();
289
+ }).then(function () {
290
+ var subscription = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
291
+ return subscription;
292
+ }).catch(function (error) {
293
+ return logError({
294
+ action: action,
295
+ category: eventCategory,
296
+ label: 'db_error'
297
+ }, error, context).then(function () {
298
+ return null;
299
+ });
300
+ });
301
+ };
302
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2lvcy50cyJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiYXFsIiwibG9nRXJyb3IiLCJ1c2VEYiIsImV2ZW50Q2F0ZWdvcnkiLCJnZXRJT1NJbkFwcEVycm9yIiwic3RhdHVzQ29kZSIsImNvZGVzIiwiZXJyb3IiLCJtZXNzYWdlIiwidmFsaWQiLCJpZCIsInJlZGlyZWN0IiwiaU9TU3Vic2NyaXB0aW9uVXBkYXRlIiwiZGF0YWJhc2UiLCJzdWJzY3JpcHRpb25VcGRhdGUiLCJhY3Rpb24iLCJwbGFuSWQiLCJhdXRvX3JlbmV3X2FkYW1faWQiLCJjYW5jZWxEYXRlIiwiY2FuY2VsbGF0aW9uX2RhdGUiLCJzdGF0dXMiLCJub3RpZmljYXRpb25fdHlwZSIsImxhdGVzdFJlY2VpcHQiLCJsYXRlc3RfcmVjZWlwdCIsImxhdGVzdEluZm8iLCJsYXRlc3RfcmVjZWlwdF9pbmZvIiwiZXhwaXJlZFJlY2VpcHQiLCJsYXRlc3RfZXhwaXJlZF9yZWNlaXB0IiwiZXhwaXJlZEluZm8iLCJsYXRlc3RfZXhwaXJlZF9yZWNlaXB0X2luZm8iLCJ0cmFuc2FjdGlvbklkIiwib3JpZ2luYWxfdHJhbnNhY3Rpb25faWQiLCJmb3JtYXRTdGF0dXMiLCJ0b0xvd2VyQ2FzZSIsIm5vdyIsIkRhdGUiLCJyZWNlaXB0SW5mbyIsInVwZGF0ZSIsImlzVmFsaWQiLCJleHBpcmVzX2RhdGVfbXMiLCJtb2RpZmllZCIsInJlY2VpcHQiLCJpbnNlcnQiLCJfa2V5IiwiYWRkZWQiLCJ0eXBlIiwiYXFsUXJ5IiwicXVlcnkiLCJ0aGVuIiwiY2F0Y2giLCJkYkVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCIsImdldElPU1N1YnNjcmlwdGlvbiIsImNvbnRleHQiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJjdXJzb3IiLCJuZXh0Iiwic3Vic2NyaXB0aW9uIiwiYWRkSU9TSW5BcHAiLCJ0cmlhbEVuZCIsInN1YnNjcmlwdGlvbklkIiwidXBkYXRlZFN1YnNjcmlwdGlvbiIs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LElBSk0sQ0FJRDtBQUFBLGFBQU0sSUFBTjtBQUFBLEtBSkMsQ0FBbEI7QUFBQSxHQUhGLENBQVA7QUFRRCxDQTNCTTtBQTZCUCxPQUFPLElBQU1nQixXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFDVixPQUFELEVBQXVEO0FBQ2hGLE1BQU12QyxNQUFjLEdBQUcsYUFBdkI7QUFEZ0YsTUFFekVGLFFBRnlFLEdBRTFDeUMsT0FGMEMsQ0FFekV6QyxRQUZ5RTtBQUFBLE1BRXZEMEMsU0FGdUQsR0FFMUNELE9BRjBDLENBRS9ERSxNQUYrRDtBQUdoRixNQUFNVixNQUFnQixHQUFHOUMsR0FBSCxxQkFDR3VELFNBREgsQ0FBdEI7QUFLQSxTQUFPckQsS0FBSyxDQUFDVyxRQUFELENBQUwsQ0FBZ0JrQyxLQUFoQixDQUFzQkQsTUFBdEIsRUFDSkUsSUFESSxDQUNDLFVBQUNTLE1BQUQ7QUFBQSxXQUF5QkEsTUFBTSxDQUFDQyxJQUFQLEVBQXpCO0FBQUEsR0FERCxFQUVKVixJQUZJLENBRUM7QUFBQSxRQUFDVyxZQUFELHVFQUFxQyxFQUFyQztBQUFBLFdBQTRDQSxZQUE1QztBQUFBLEdBRkQsRUFHSlYsS0FISSxDQUdFLFVBQUMxQyxLQUFEO0FBQUEsV0FBa0JOLFFBQVEsQ0FBQztBQUNoQ2MsTUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ29DLE1BQUFBLFFBQVEsRUFBRWhELGFBRnNCO0FBR2hDaUQsTUFBQUEsS0FBSyxFQUFFO0FBSHlCLEtBQUQsRUFJOUI3QyxLQUo4QixFQUl2QitDLE9BSnVCLENBQVIsQ0FJTk4sSUFKTSxDQUlEO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FKQyxDQUFsQjtBQUFBLEdBSEYsQ0FBUDtBQVFELENBaEJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmVhdGVIYXNofSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvYXFsLXF1ZXJ5JztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvY3Vyc29yJztcblxuaW1wb3J0IHtcbiAgQXBpQ29udGV4dCxcbiAgUGF5bWVudElPU0luQXBwRXJyb3IsXG4gIFBheW1lbnRJT1NTdWJzY3JpcHRpb25JbmZvLFxuICBQYXltZW50SU9TU3Vic2NyaXB0aW9uVXBkYXRlLFxuICBQYXltZW50U3Vic2NyaXB0aW9uXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7bG9nRXJyb3IsIHVzZURifSBmcm9tICcuLi91dGlscyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdpb3MnO1xuXG5leHBvcnQgY29uc3QgZ2V0SU9TSW5BcHBFcnJvciA9IChzdGF0dXNDb2RlOiBzdHJpbmcpOiBQYXltZW50SU9TSW5BcHBFcnJvciA9PiB7XG4gIGNvbnN0IGNvZGVzID0ge1xuICAgIFswXToge2Vycm9yOiBmYWxzZSwgbWVzc2FnZTogJ0FjdGl2ZScsIHZhbGlkOiB0cnVlfSxcbiAgICBbMjEwMDBdOiB7ZXJyb3I6IHRydWUsIGlkOiAncGF5bWVudF9yZWNlaXB0X3VucmVhZGFibGUnLCBtZXNzYWdlOiAnQXBwIHN0b3JlIGNvdWxkIG5vdCByZWFkJywgdmFsaWQ6IGZhbHNlfSxcbiAgICBbMjEwMDJdOiB7ZXJyb3I6IHRydWUsIGlkOiAncGF5bWVudF9kYXRhX21hbGZvcm1lZCcsIG1lc3NhZ2U6ICdEYXRhIHdhcyBtYWxmb3JtZWQnLCB2YWxpZDogZmFsc2V9LFxuICAgIFsyMTAwM106IHtlcnJvcjogdHJ1ZSwgaWQ6ICdwYXltZW50X3JlY2VpcHRfdW5hdXRob3JpemVkJywgbWVzc2FnZTogJ1JlY2VpcHQgbm90IGF1dGhlbnRpY2F0ZWQnLCB2YWxpZDogZmFsc2V9LFxuICAgIFsyMTAwNF06IHtlcnJvcjogdHJ1ZSwgaWQ6ICdwYXltZW50X2ludmFsaWRfc2VjcmV0JywgbWVzc2FnZTogJ1NoYXJlZCBzZWNyZXQgZG9lcyBub3QgbWF0Y2gnLCB2YWxpZDogZmFsc2V9LFxuICAgIFsyMTAwNV06IHtlcnJvcjogdHJ1ZSwgaWQ6ICdwYXltZW50X3NlcnZlcl91bmF2YWlsYWJsZScsIG1lc3NhZ2U6ICdSZWNlaXB0IHNlcnZlciB1bmF2YWlsYWJsZScsIHZhbGlkOiBmYWxzZX0sXG4gICAgWzIxMDA2XToge1xuICAgICAgZXJyb3I6IGZhbHNlLFxuICAgICAgaWQ6ICdwYXltZW50X3N1YnNjcmlwdGlvbl9leHBpcmVkJyxcbiAgICAgIG1lc3NhZ2U6ICdSZWNlaXB0IHZhbGlkIGJ1dCBzdWIgZXhwaXJlZCcsXG4gICAgICB2YWxpZDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogc3BlY2lhbCBjYXNlIGZvciBhcHAgcmV2aWV3IGhhbmRsaW5nIC0gZm9yd2FyZCBhbnkgcmVxdWVzdCB0aGF0IGlzIGludGVuZGVkIGZvciB0aGUgU2FuZGJveCBidXQgd2FzIHNlbnQgdG9cbiAgICAgKiBQcm9kdWN0aW9uLCB0aGlzIGlzIHdoYXQgdGhlIGFwcCByZXZpZXcgdGVhbSBkb2VzXG4gICAgICovXG4gICAgWzIxMDA3XToge1xuICAgICAgZXJyb3I6IHRydWUsXG4gICAgICBpZDogJ3BheW1lbnRfaW52YWxpZF9zZXJ2ZXInLFxuICAgICAgbWVzc2FnZTogJ1NhbmRib3ggcmVjZWlwdCBzZW50IHRvIFByb2R1Y3Rpb24gZW52aXJvbm1lbnQnLFxuICAgICAgcmVkaXJlY3Q6IHRydWUsXG4gICAgICB2YWxpZDogZmFsc2VcbiAgICB9LFxuICAgIFsyMTAwOF06IHtcbiAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgaWQ6ICdwYXltZW50X2ludmFsaWRfc2VydmVyJyxcbiAgICAgIG1lc3NhZ2U6ICdQcm9kdWN0aW9uIHJlY2VpcHQgc2VudCB0byBTYW5kYm94IGVudmlyb25tZW50JyxcbiAgICAgIHZhbGlkOiBmYWxzZVxuICAgIH1cbiAgfTtcblxuICByZXR1cm4gY29kZXNbc3RhdHVzQ29kZV0gfHwge307XG59O1xuXG5leHBvcnQgY29uc3QgaU9TU3Vic2NyaXB0aW9uVXBkYXRlID0gKGRhdGFiYXNlOiBzdHJpbmcsIHN1YnNjcmlwdGlvblVwZGF0ZTogUGF5bWVudElPU1N1YnNjcmlwdGlvblVwZGF0ZSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdpT1NTdWJzY3JpcHRpb25VcGRhdGUnO1xuICBjb25zdCB7XG4gICAgYXV0b19yZW5ld19hZGFtX2lkOiBwbGFuSWQsXG4gICAgY2FuY2VsbGF0aW9uX2RhdGU6IGNhbmNlbERhdGUsXG4gICAgbm90aWZpY2F0aW9uX3R5cGU6IHN0YXR1cyxcbiAgICBsYXRlc3RfcmVjZWlwdDogbGF0ZXN0UmVjZWlwdCxcbiAgICBsYXRlc3RfcmVjZWlwdF9pbmZvOiBsYXRlc3RJbmZvLFxuICAgIGxhdGVzdF9leHBpcmVkX3JlY2VpcHQ6IGV4cGlyZWRSZWNlaXB0LFxuICAgIGxhdGVzdF9leHBpcmVkX3JlY2VpcHRfaW5mbzogZXhwaXJlZEluZm8sXG4gICAgb3JpZ2luYWxfdHJhbnNhY3Rpb25faWQ6IHRyYW5zYWN0aW9uSWRcbiAgfSA9IHN1YnNjcmlwdGlvblVwZGF0ZTtcbiAgY29uc3QgZm9ybWF0U3RhdHVzOiBzdHJpbmcgPSAoc3RhdHVzIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IHJlY2VpcHRJbmZvOiBQYXltZW50SU9TU3Vic2NyaXB0aW9uSW5mb1tdID0gbGF0ZXN0SW5mbyB8fCBleHBpcmVkSW5mbztcbiAgY29uc3QgaWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYHBheW1lbnQtJHt0cmFuc2FjdGlvbklkfWApO1xuXG4gIGNvbnN0IHVwZGF0ZTogUGF5bWVudFN1YnNjcmlwdGlvbiA9IHtcbiAgICBjYW5jZWxEYXRlLFxuICAgIGlzVmFsaWQ6IHJlY2VpcHRJbmZvWzBdLmV4cGlyZXNfZGF0ZV9tcyA+IG5vdyxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIHBsYW5JZCxcbiAgICByZWNlaXB0OiBsYXRlc3RSZWNlaXB0IHx8IGV4cGlyZWRSZWNlaXB0LFxuICAgIHN0YXR1czogZm9ybWF0U3RhdHVzXG4gIH07XG4gIGNvbnN0IGluc2VydDogUGF5bWVudFN1YnNjcmlwdGlvbiA9IHtcbiAgICAuLi51cGRhdGUsXG4gICAgX2tleTogaWQsXG4gICAgYWRkZWQ6IG5vdyxcbiAgICB0eXBlOiAnaW9zX3BheW1lbnQnXG4gIH07XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHt0cmFuc2FjdGlvbklkOiAke3RyYW5zYWN0aW9uSWR9fVxuICAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgIFVQREFURSAke3VwZGF0ZX0gSU4gc3Vic2NyaXB0aW9uc1xuICAgICBMSU1JVCAxYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoKSA9PiBudWxsKVxuICAgIC5jYXRjaCgoZGJFcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBkYkVycm9yLCB7fSkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG4vLyBleHBvcnQgY29uc3QgYWRkSU9TSW5BcHAgPSAoXG4vLyAgIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4vLyAgIGFwcCxcbi8vICAgc3Vic2NyaXB0aW9uOiBQYXltZW50U3Vic2NyaXB0aW9uXG4vLyApOiBQcm9taXNlPFBheW1lbnRTdWJzY3JpcHRpb24+ID0+IHtcbi8vICAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkSU9TSW5BcHAnO1xuLy8gICBjb25zdCB7aXNQcm9kdWN0aW9uLCByZWNlaXB0fSA9IHN1YnNjcmlwdGlvbjtcbi8vICAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuXG4vLyAgIGNvbnN0IHByb2R1Y3Rpb25Ib3N0OiBzdHJpbmcgPSAnYnV5Lml0dW5lcy5hcHBsZS5jb20nO1xuLy8gICBjb25zdCBzYW5kYm94SG9zdDogc3RyaW5nID0gJ3NhbmRib3guaXR1bmVzLmFwcGxlLmNvbSc7XG4vLyAgIGNvbnN0IGVuZHBvaW50OiBzdHJpbmcgPSBpc1Byb2R1Y3Rpb24gPyBwcm9kdWN0aW9uSG9zdCA6IHNhbmRib3hIb3N0O1xuLy8gICBjb25zdCB2ZXJpZnlVcmw6IHN0cmluZyA9IGBodHRwczovLyR7ZW5kcG9pbnR9L3ZlcmlmeVJlY2VpcHRgO1xuLy8gICBjb25zdCBwYXlsb2FkOiBvYmplY3QgPSB7XG4vLyAgICAgcGFzc3dvcmQ6IGFwcC5pYXAsXG4vLyAgICAgJ3JlY2VpcHQtZGF0YSc6IGRlY29kZVVSSUNvbXBvbmVudChyZWNlaXB0KVxuLy8gICB9O1xuLy8gICBjb25zdCBvcHRpb25zOiBvYmplY3QgPSB7XG4vLyAgICAgaGVhZGVyczoge1xuLy8gICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG4vLyAgICAgfVxuLy8gICB9O1xuXG4vLyAgIHJldHVybiBwb3N0KHZlcmlmeVVybCwgcGF5bG9hZCwgb3B0aW9ucylcbi8vICAgICAudGhlbigocmVzdWx0cykgPT4ge1xuLy8gICAgICAgY29uc3QganNvbiA9IEpTT04ucGFyc2UocmVzdWx0cyk7XG4vLyAgICAgICBjb25zdCB7XG4vLyAgICAgICAgIGxhdGVzdF9yZWNlaXB0OiBsYXRlc3RSZWNlaXB0LFxuLy8gICAgICAgICBsYXRlc3RfcmVjZWlwdF9pbmZvOiBsYXRlc3RJbmZvLFxuLy8gICAgICAgICBzdGF0dXNcbi8vICAgICAgIH0gPSBqc29uO1xuXG4vLyAgICAgICBjb25zdCB7XG4vLyAgICAgICAgIGlzX3RyaWFsX3BlcmlvZDogdHJpYWxQZXJpb2QsXG4vLyAgICAgICAgIG9yaWdpbmFsX3B1cmNoYXNlX2RhdGVfbXM6IGFkZGVkLFxuLy8gICAgICAgICBleHBpcmVzX2RhdGU6IGV4cGlyZXMsXG4vLyAgICAgICAgIHByb2R1Y3RfaWQ6IHBsYW5JZCxcbi8vICAgICAgICAgdHJhbnNhY3Rpb25faWQ6IHRyYW5zYWN0aW9uSWRcbi8vICAgICAgIH0gPSBsYXRlc3RJbmZvO1xuXG4vLyAgICAgICBpZihzdGF0dXMgPT09IDAgfHwgc3RhdHVzID09PSAyMTAwNikge1xuLy8gICAgICAgICBjb25zdCBpZDogc3RyaW5nID0gY3JlYXRlSGFzaChgcGF5bWVudC0ke3RyYW5zYWN0aW9uSWR9YCk7XG4vLyAgICAgICAgIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbi8vICAgICAgICAgY29uc3QgdXBkYXRlOiBQYXltZW50U3Vic2NyaXB0aW9uID0ge1xuLy8gICAgICAgICAgIGV4cGlyZXMsXG4vLyAgICAgICAgICAgaXNUcmlhbDogdHJpYWxQZXJpb2QgPT09ICd0cnVlJyxcbi8vICAgICAgICAgICBpc1ZhbGlkOiBleHBpcmVzID4gbm93LFxuLy8gICAgICAgICAgIG1vZGlmaWVkOiBub3csXG4vLyAgICAgICAgICAgcGxhbklkLFxuLy8gICAgICAgICAgIHJlY2VpcHQ6IGxhdGVzdFJlY2VpcHQsXG4vLyAgICAgICAgICAgdHJhbnNhY3Rpb25JZCxcbi8vICAgICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuLy8gICAgICAgICB9O1xuLy8gICAgICAgICBjb25zdCBpbnNlcnQ6IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7XG4vLyAgICAgICAgICAgLi4udXBkYXRlLFxuLy8gICAgICAgICAgIF9rZXk6IGlkLFxuLy8gICAgICAgICAgIGFkZGVkLFxuLy8gICAgICAgICAgIHR5cGU6ICdpb3NfcGF5bWVudCdcbi8vICAgICAgICAgfTtcblxuLy8gICAgICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7dHJhbnNhY3Rpb25JZDogJHt0cmFuc2FjdGlvbklkfX1cbi8vICAgICAgICAgICAgICAgSU5TRVJUICR7aW5zZXJ0fVxuLy8gICAgICAgICAgICAgICBVUERBVEUgJHt1cGRhdGV9IElOIHN1YnNjcmlwdGlvbnNcbi8vICAgICAgICAgICAgICAgUkVUVVJOIE5FV2A7XG5cbi8vICAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4vLyAgICAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4vLyAgICAgICAgICAgLnRoZW4oKHVwZGF0ZWRTdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7fSkgPT4gdXBkYXRlZFN1YnNjcmlwdGlvbilcbi8vICAgICAgICAgICAuY2F0Y2goKGRiRXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4vLyAgICAgICAgICAgICBhY3Rpb24sXG4vLyAgICAgICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbi8vICAgICAgICAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4vLyAgICAgICAgICAgfSwgZGJFcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4vLyAgICAgICB9XG5cbi8vICAgICAgIC8vIEVycm9yc1xuLy8gICAgICAgY29uc3QgZXJyb3I6IFBheW1lbnRJT1NJbkFwcEVycm9yID0gZ2V0SU9TSW5BcHBFcnJvcihyZXN1bHRzLnN0YXR1cyk7XG5cbi8vICAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuLy8gICAgICAgICBhY3Rpb24sXG4vLyAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuLy8gICAgICAgICBsYWJlbDogJ3BheW1lbnRfZXJyb3InLFxuLy8gICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuLy8gICAgICAgICB2YWx1ZTogZXJyb3IuaWRcbi8vICAgICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4vLyAgICAgfSk7XG4vLyB9O1xuXG5leHBvcnQgY29uc3QgZ2V0SU9TU3Vic2NyaXB0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPFBheW1lbnRTdWJzY3JpcHRpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0SU9TU3Vic2NyaXB0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBzIElOIHN1YnNjcmlwdGlvbnNcbiAgICAgIEZJTFRFUiBzLnVzZXJJZCA9PSAke3Nlc3Npb25JZH0gJiYgcy50eXBlID09IFwiaW9zX3BheW1lbnRcIlxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIHNgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChzdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7fSkgPT4gc3Vic2NyaXB0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZElPU0luQXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHN1YnNjcmlwdGlvbjogUGF5bWVudFN1YnNjcmlwdGlvbik6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRJT1NJbkFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCB7YWRkZWQgPSBub3csIHBsYW5JZCwgcmVjZWlwdCwgdHJhbnNhY3Rpb25JZCwgdHJpYWxFbmR9ID0gc3Vic2NyaXB0aW9uO1xuICBjb25zdCBzdWJzY3JpcHRpb25JZDogc3RyaW5nID0gY3JlYXRlSGFzaChgc3Vic2NyaXB0aW9uLSR7dHJhbnNhY3Rpb25JZH1gKTtcbiAgY29uc3QgaW5zZXJ0OiBQYXltZW50U3Vic2NyaXB0aW9uID0ge1xuICAgIF9rZXk6IHN1YnNjcmlwdGlvbklkLFxuICAgIGFkZGVkLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgcGxhbklkLFxuICAgIHJlY2VpcHQsXG4gICAgdHJhbnNhY3Rpb25JZCxcbiAgICB0cmlhbEVuZCxcbiAgICB0eXBlOiAnaW9zX3N1YnNjcmlwdGlvbicsXG4gICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgfTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIHN1YnNjcmlwdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHVwZGF0ZWRTdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7fSkgPT4gdXBkYXRlZFN1YnNjcmlwdGlvbilcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJT1NJbkFwcCA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogUHJvbWlzZTxQYXltZW50U3Vic2NyaXB0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldElPU0luQXBwJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBzIElOIHN1YnNjcmlwdGlvblxuICAgICAgRklMVEVSIHMudXNlcklkID09ICR7c2Vzc2lvbklkfSAmJiBzLnR5cGUgPT0gXCJpb3NcIlxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIHNgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChzdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7fSkgPT4gc3Vic2NyaXB0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { ApiContext } from '../types/auth';
2
+ import { LocationType } from '../types/locations';
3
+ export declare const addLocation: (context: ApiContext, location: LocationType) => Promise<LocationType>;
@@ -0,0 +1,132 @@
1
+ function _templateObject() {
2
+ var data = _taggedTemplateLiteral(["UPSERT {googleId: ", "}\n INSERT ", "\n UPDATE ", "\n IN locations RETURN NEW"]);
3
+
4
+ _templateObject = function _templateObject() {
5
+ return data;
6
+ };
7
+
8
+ return data;
9
+ }
10
+
11
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
12
+
13
+ /**
14
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
15
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
16
+ */
17
+ import { get as httpGet, queryString } from '@nlabs/rip-hunter';
18
+ import { createHash, parseChar, parseId } from '@nlabs/utils';
19
+ import { aql } from 'arangojs';
20
+ import get from 'lodash/get';
21
+ import { Config } from '../config';
22
+ import { logError, useDb } from '../utils';
23
+ var eventCategory = 'locations';
24
+ export var addLocation = function addLocation(context, location) {
25
+ var action = 'add';
26
+ var database = context.database,
27
+ sessionId = context.userId;
28
+ var address = location.address,
29
+ itemId = location.itemId,
30
+ itemType = location.itemType;
31
+ var geocodeUrl = Config.get('google.geocode.url');
32
+ var params = {
33
+ address: address,
34
+ key: Config.get('google.geocode.key')
35
+ };
36
+ var url = "".concat(geocodeUrl, "?").concat(queryString(params));
37
+ return httpGet(url).then(function (json) {
38
+ var _json$results = json.results,
39
+ results = _json$results === void 0 ? [] : _json$results,
40
+ _json$status = json.status,
41
+ status = _json$status === void 0 ? '' : _json$status;
42
+
43
+ if (status === 'OK' && results.length) {
44
+ var geodata = results[0];
45
+ var addressComponents = get(geodata, 'address_components');
46
+
47
+ var getFieldVal = function getFieldVal(name) {
48
+ var _ref = addressComponents.find(function (addressField) {
49
+ var types = addressField.types || [];
50
+ return types.findIndex(function (fieldType) {
51
+ return fieldType === name;
52
+ }) >= 0;
53
+ }) || {},
54
+ _ref$short_name = _ref.short_name,
55
+ shortName = _ref$short_name === void 0 ? '' : _ref$short_name;
56
+
57
+ return shortName;
58
+ }; // Street
59
+
60
+
61
+ var streetNumber = getFieldVal('street_number');
62
+ var route = getFieldVal('route'); // Location
63
+
64
+ var now = Date.now(); // Item
65
+
66
+ var formatItemType = parseChar(itemType).toLowerCase();
67
+ var formatItemId = parseId(itemId);
68
+ var googleId = get(geodata, 'place_id');
69
+ var update = {};
70
+ var insert = {
71
+ _key: createHash("post-".concat(sessionId)),
72
+ added: now,
73
+ city: getFieldVal('locality'),
74
+ country: getFieldVal('country'),
75
+ formatted: get(geodata, 'formatted_address'),
76
+ googleId: googleId,
77
+ latitude: get(geodata, 'geometry.location.lat'),
78
+ longitude: get(geodata, 'geometry.location.lng'),
79
+ state: getFieldVal('administrative_area_level_1'),
80
+ street: [streetNumber, route].filter(function (obj) {
81
+ return obj;
82
+ }).join(' '),
83
+ zip: getFieldVal('postal_code')
84
+ };
85
+ var aqlQry = aql(_templateObject(), googleId, insert, update);
86
+ return useDb(database).query(aqlQry).then(function (cursor) {
87
+ return cursor.next();
88
+ }).then(function () {
89
+ var updatedLocation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
90
+ var itemDocId;
91
+ var updatedLocationKey = updatedLocation._key;
92
+
93
+ switch (formatItemType) {
94
+ case 'posts':
95
+ itemDocId = "posts/".concat(formatItemId);
96
+ break;
97
+
98
+ default:
99
+ itemDocId = '';
100
+ } // If there is a valid item doc id, create an edge
101
+
102
+
103
+ if (itemDocId) {
104
+ var edgeCollection = useDb(database).edgeCollection('hasLocation');
105
+ var locationId = updatedLocationKey;
106
+ var locationDocId = "locations/".concat(locationId);
107
+ var edgeId = createHash("hasLocation-".concat(locationId, "-").concat(sessionId));
108
+ var edge = {
109
+ _key: edgeId
110
+ };
111
+ return edgeCollection.save(edge, itemDocId, locationDocId).then(function () {
112
+ return updatedLocation;
113
+ });
114
+ } // Otherwise just return the new location
115
+
116
+
117
+ return updatedLocation;
118
+ }).catch(function (error) {
119
+ return logError({
120
+ action: action,
121
+ category: eventCategory,
122
+ label: 'db_error'
123
+ }, error, context).then(function () {
124
+ return null;
125
+ });
126
+ });
127
+ }
128
+
129
+ return {};
130
+ });
131
+ };
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2xvY2F0aW9ucy50cyJdLCJuYW1lcyI6WyJnZXQiLCJodHRwR2V0IiwicXVlcnlTdHJpbmciLCJjcmVhdGVIYXNoIiwicGFyc2VDaGFyIiwicGFyc2VJZCIsImFxbCIsIkNvbmZpZyIsImxvZ0Vycm9yIiwidXNlRGIiLCJldmVudENhdGVnb3J5IiwiYWRkTG9jYXRpb24iLCJjb250ZXh0IiwibG9jYXRpb24iLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImFkZHJlc3MiLCJpdGVtSWQiLCJpdGVtVHlwZSIsImdlb2NvZGVVcmwiLCJwYXJhbXMiLCJrZXkiLCJ1cmwiLCJ0aGVuIiwianNvbiIsInJlc3VsdHMiLCJzdGF0dXMiLCJsZW5ndGgiLCJnZW9kYXRhIiwiYWRkcmVzc0NvbXBvbmVudHMiLCJnZXRGaWVsZFZhbCIsIm5hbWUiLCJmaW5kIiwiYWRkcmVzc0ZpZWxkIiwidHlwZXMiLCJmaW5kSW5kZXgiLCJmaWVsZFR5cGUiLCJzaG9ydF9uYW1lIiwic2hvcnROYW1lIiwic3RyZWV0TnVtYmVyIiwicm91dGUiLCJub3ciLCJEYXRlIiwiZm9ybWF0SXRlbVR5cGUiLCJ0b0xvd2VyQ2FzZSIsImZvcm1hdEl0ZW1JZCIsImdvb2dsZUlkIiwidXBkYXRlIiwiaW5zZXJ0IiwiX2tleSIsImFkZGVkIiwiY2l0eSIsImNvdW50cnkiLCJmb3JtYXR0ZWQiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInN0YXRlIiwic3RyZWV0IiwiZmlsdGVyIiwib2JqIiwiam9pbiIsInppcCIsImFxbFFyeSIsInF1ZXJ5IiwiY3Vyc29yIiwibmV4dCIsInVwZGF0ZWRMb2NhdGlvbiIsIml0ZW1Eb2NJZCIsInVwZGF0ZWRMb2NhdGlvbktleSIsImVkZ2VDb2xsZWN0aW9uIiwibG9jYXRpb25JZCIsImxvY2F0aW9uRG9jSWQiLCJlZGdlSWQiLCJlZGdlIiwic2F2ZSIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVs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RCxFQUk5QkYsS0FKOEIsRUFJdkJsRSxPQUp1QixDQUFSLENBSU5hLElBSk0sQ0FJRDtBQUFBLGlCQUFNLElBQU47QUFBQSxTQUpDLENBQWxCO0FBQUEsT0E1QkYsQ0FBUDtBQWlDRDs7QUFFRCxXQUFPLEVBQVA7QUFDRCxHQWxGSSxDQUFQO0FBbUZELENBOUZNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXQsIHF1ZXJ5U3RyaW5nfSBmcm9tICdAbmxhYnMvcmlwLWh1bnRlcic7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge0dvb2dsZU1hcHNBZGRyZXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMvZ29vZ2xlJztcbmltcG9ydCB7TG9jYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9sb2NhdGlvbnMnO1xuaW1wb3J0IHtsb2dFcnJvciwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2xvY2F0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBhZGRMb2NhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhdGlvbjogTG9jYXRpb25UeXBlKTogUHJvbWlzZTxMb2NhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7YWRkcmVzcywgaXRlbUlkLCBpdGVtVHlwZX0gPSBsb2NhdGlvbjtcbiAgY29uc3QgZ2VvY29kZVVybDogc3RyaW5nID0gQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUudXJsJyk7XG4gIGNvbnN0IHBhcmFtczogb2JqZWN0ID0ge1xuICAgIGFkZHJlc3MsXG4gICAga2V5OiBDb25maWcuZ2V0KCdnb29nbGUuZ2VvY29kZS5rZXknKVxuICB9O1xuICBjb25zdCB1cmw6IHN0cmluZyA9IGAke2dlb2NvZGVVcmx9PyR7cXVlcnlTdHJpbmcocGFyYW1zKX1gO1xuXG4gIHJldHVybiBodHRwR2V0KHVybClcbiAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgY29uc3Qge3Jlc3VsdHMgPSBbXSwgc3RhdHVzID0gJyd9ID0ganNvbjtcblxuICAgICAgaWYoc3RhdHVzID09PSAnT0snICYmIHJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGdlb2RhdGE6IG9iamVjdCA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IGFkZHJlc3NDb21wb25lbnRzOiBHb29nbGVNYXBzQWRkcmVzc1R5cGVbXSA9IGdldChnZW9kYXRhLCAnYWRkcmVzc19jb21wb25lbnRzJyk7XG4gICAgICAgIGNvbnN0IGdldEZpZWxkVmFsID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgY29uc3Qge3Nob3J0X25hbWU6IHNob3J0TmFtZSA9ICcnfSA9IGFkZHJlc3NDb21wb25lbnRzLmZpbmQoKGFkZHJlc3NGaWVsZDogR29vZ2xlTWFwc0FkZHJlc3NUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlcyA9IGFkZHJlc3NGaWVsZC50eXBlcyB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlcy5maW5kSW5kZXgoKGZpZWxkVHlwZTogc3RyaW5nKSA9PiBmaWVsZFR5cGUgPT09IG5hbWUpID49IDA7XG4gICAgICAgICAgfSkgfHwge307XG5cbiAgICAgICAgICByZXR1cm4gc2hvcnROYW1lO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFN0cmVldFxuICAgICAgICBjb25zdCBzdHJlZXROdW1iZXI6IHN0cmluZyA9IGdldEZpZWxkVmFsKCdzdHJlZXRfbnVtYmVyJyk7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSBnZXRGaWVsZFZhbCgncm91dGUnKTtcblxuICAgICAgICAvLyBMb2NhdGlvblxuICAgICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gSXRlbVxuICAgICAgICBjb25zdCBmb3JtYXRJdGVtVHlwZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1UeXBlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlSWQ6IHN0cmluZyA9IGdldChnZW9kYXRhLCAncGxhY2VfaWQnKTtcbiAgICAgICAgY29uc3QgdXBkYXRlOiBMb2NhdGlvblR5cGUgPSB7fTtcbiAgICAgICAgY29uc3QgaW5zZXJ0OiBMb2NhdGlvblR5cGUgPSB7XG4gICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgcG9zdC0ke3Nlc3Npb25JZH1gKSxcbiAgICAgICAgICBhZGRlZDogbm93LFxuICAgICAgICAgIGNpdHk6IGdldEZpZWxkVmFsKCdsb2NhbGl0eScpLFxuICAgICAgICAgIGNvdW50cnk6IGdldEZpZWxkVmFsKCdjb3VudHJ5JyksXG4gICAgICAgICAgZm9ybWF0dGVkOiBnZXQoZ2VvZGF0YSwgJ2Zvcm1hdHRlZF9hZGRyZXNzJyksXG4gICAgICAgICAgZ29vZ2xlSWQsXG4gICAgICAgICAgbGF0aXR1ZGU6IGdldChnZW9kYXRhLCAnZ2VvbWV0cnkubG9jYXRpb24ubGF0JyksXG4gICAgICAgICAgbG9uZ2l0dWRlOiBnZXQoZ2VvZGF0YSwgJ2dlb21ldHJ5LmxvY2F0aW9uLmxuZycpLFxuICAgICAgICAgIHN0YXRlOiBnZXRGaWVsZFZhbCgnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJyksXG4gICAgICAgICAgc3RyZWV0OiBbc3RyZWV0TnVtYmVyLCByb3V0ZV0uZmlsdGVyKChvYmopID0+IG9iaikuam9pbignICcpLFxuICAgICAgICAgIHppcDogZ2V0RmllbGRWYWwoJ3Bvc3RhbF9jb2RlJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge2dvb2dsZUlkOiAke2dvb2dsZUlkfX1cbiAgICAgICAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgICAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgICAgICAgIElOIGxvY2F0aW9ucyBSRVRVUk4gTkVXYDtcblxuICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAudGhlbigodXBkYXRlZExvY2F0aW9uOiBMb2NhdGlvblR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW1Eb2NJZDogc3RyaW5nO1xuICAgICAgICAgICAgY29uc3Qge19rZXk6IHVwZGF0ZWRMb2NhdGlvbktleX0gPSB1cGRhdGVkTG9jYXRpb247XG5cbiAgICAgICAgICAgIHN3aXRjaChmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdwb3N0cyc6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gYHBvc3RzLyR7Zm9ybWF0SXRlbUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgdmFsaWQgaXRlbSBkb2MgaWQsIGNyZWF0ZSBhbiBlZGdlXG4gICAgICAgICAgICBpZihpdGVtRG9jSWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZSkuZWRnZUNvbGxlY3Rpb24oJ2hhc0xvY2F0aW9uJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uSWQ6IHN0cmluZyA9IHVwZGF0ZWRMb2NhdGlvbktleTtcbiAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25Eb2NJZDogc3RyaW5nID0gYGxvY2F0aW9ucy8ke2xvY2F0aW9uSWR9YDtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgaGFzTG9jYXRpb24tJHtsb2NhdGlvbklkfS0ke3Nlc3Npb25JZH1gKTtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZTogYW55ID0ge19rZXk6IGVkZ2VJZH07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwgaXRlbURvY0lkLCBsb2NhdGlvbkRvY0lkKS50aGVuKCgpID0+IHVwZGF0ZWRMb2NhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUgbmV3IGxvY2F0aW9uXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZExvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICAgICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7fTtcbiAgICB9KTtcbn07XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { ApiContext } from '../types/auth';
2
+ import { MessageType } from '../types/messages';
3
+ export declare const getMessageList: (context: ApiContext, convoId: string, from: number, to: number) => Promise<MessageType[]>;
4
+ export declare const updateMessage: (context: ApiContext, message: MessageType) => Promise<MessageType>;
5
+ export declare const saveMessage: (context: ApiContext, msgId: string, convoId: string) => Promise<MessageType>;
6
+ export declare const unsaveMessage: (context: ApiContext, msgId: string, convoId: string) => Promise<MessageType>;
7
+ export declare const deleteMessage: (context: ApiContext, msgId: string, convoId: string) => Promise<MessageType>;
8
+ export declare const getMessage: (data: MessageType) => MessageType;
9
+ export declare const cleanMessages: (database: string) => Promise<number>;