@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.
- package/.vscode/extensions.json +15 -0
- package/.vscode/settings.json +82 -0
- package/README.md +211 -0
- package/index.d.ts +1 -0
- package/index.js +5 -0
- package/lex.config.js +4 -0
- package/lib/config.d.ts +21 -0
- package/lib/config.js +127 -0
- package/lib/data/conversations.d.ts +6 -0
- package/lib/data/conversations.js +201 -0
- package/lib/data/dynamodb.d.ts +8 -0
- package/lib/data/dynamodb.js +139 -0
- package/lib/data/email.d.ts +7 -0
- package/lib/data/email.js +164 -0
- package/lib/data/files.d.ts +16 -0
- package/lib/data/files.js +407 -0
- package/lib/data/groups.d.ts +13 -0
- package/lib/data/groups.js +354 -0
- package/lib/data/images.d.ts +12 -0
- package/lib/data/images.js +668 -0
- package/lib/data/index.d.ts +19 -0
- package/lib/data/index.js +24 -0
- package/lib/data/ios.d.ts +6 -0
- package/lib/data/ios.js +302 -0
- package/lib/data/locations.d.ts +3 -0
- package/lib/data/locations.js +132 -0
- package/lib/data/messages.d.ts +9 -0
- package/lib/data/messages.js +248 -0
- package/lib/data/notifications.d.ts +5 -0
- package/lib/data/notifications.js +42 -0
- package/lib/data/payments.d.ts +11 -0
- package/lib/data/payments.js +748 -0
- package/lib/data/posts.d.ts +14 -0
- package/lib/data/posts.js +458 -0
- package/lib/data/reactions.d.ts +6 -0
- package/lib/data/reactions.js +218 -0
- package/lib/data/s3.d.ts +6 -0
- package/lib/data/s3.js +103 -0
- package/lib/data/search.d.ts +3 -0
- package/lib/data/search.js +98 -0
- package/lib/data/sms.d.ts +3 -0
- package/lib/data/sms.js +59 -0
- package/lib/data/subscription.d.ts +7 -0
- package/lib/data/subscription.js +284 -0
- package/lib/data/tags.d.ts +14 -0
- package/lib/data/tags.js +304 -0
- package/lib/data/users.d.ts +12 -0
- package/lib/data/users.js +312 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +8 -0
- package/lib/types/apps.d.ts +44 -0
- package/lib/types/apps.js +2 -0
- package/lib/types/arangodb.d.ts +17 -0
- package/lib/types/arangodb.js +2 -0
- package/lib/types/auth.d.ts +9 -0
- package/lib/types/auth.js +2 -0
- package/lib/types/conversations.d.ts +6 -0
- package/lib/types/conversations.js +2 -0
- package/lib/types/email.d.ts +12 -0
- package/lib/types/email.js +2 -0
- package/lib/types/files.d.ts +28 -0
- package/lib/types/files.js +2 -0
- package/lib/types/google.d.ts +27 -0
- package/lib/types/google.js +2 -0
- package/lib/types/groups.d.ts +22 -0
- package/lib/types/groups.js +2 -0
- package/lib/types/images.d.ts +25 -0
- package/lib/types/images.js +2 -0
- package/lib/types/index.d.ts +17 -0
- package/lib/types/index.js +22 -0
- package/lib/types/locations.d.ts +21 -0
- package/lib/types/locations.js +2 -0
- package/lib/types/messages.d.ts +12 -0
- package/lib/types/messages.js +2 -0
- package/lib/types/notifications.d.ts +19 -0
- package/lib/types/notifications.js +2 -0
- package/lib/types/payments.d.ts +119 -0
- package/lib/types/payments.js +2 -0
- package/lib/types/posts.d.ts +20 -0
- package/lib/types/posts.js +2 -0
- package/lib/types/reactions.d.ts +4 -0
- package/lib/types/reactions.js +2 -0
- package/lib/types/tags.d.ts +10 -0
- package/lib/types/tags.js +2 -0
- package/lib/types/users.d.ts +78 -0
- package/lib/types/users.js +2 -0
- package/lib/utils/analytics.d.ts +3 -0
- package/lib/utils/analytics.js +47 -0
- package/lib/utils/arangodb.d.ts +9 -0
- package/lib/utils/arangodb.js +98 -0
- package/lib/utils/auth.d.ts +2 -0
- package/lib/utils/auth.js +43 -0
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.js +10 -0
- package/lib/utils/objects.d.ts +3 -0
- package/lib/utils/objects.js +34 -0
- package/lib/utils/redis.d.ts +1 -0
- package/lib/utils/redis.js +15 -0
- package/package.json +75 -0
- package/src/config.ts +121 -0
- package/src/data/conversations.ts +183 -0
- package/src/data/dynamodb.ts +157 -0
- package/src/data/email.ts +164 -0
- package/src/data/files.ts +352 -0
- package/src/data/groups.ts +308 -0
- package/src/data/images.ts +606 -0
- package/src/data/index.ts +23 -0
- package/src/data/ios.ts +249 -0
- package/src/data/locations.ts +114 -0
- package/src/data/messages.ts +237 -0
- package/src/data/notifications.ts +48 -0
- package/src/data/payments.ts +675 -0
- package/src/data/posts.ts +508 -0
- package/src/data/reactions.ts +186 -0
- package/src/data/s3.ts +117 -0
- package/src/data/search.ts +74 -0
- package/src/data/sms.ts +60 -0
- package/src/data/subscription.ts +228 -0
- package/src/data/tags.ts +230 -0
- package/src/data/users.ts +256 -0
- package/src/index.ts +7 -0
- package/src/types/apps.ts +57 -0
- package/src/types/arangodb.ts +23 -0
- package/src/types/auth.ts +19 -0
- package/src/types/conversations.ts +11 -0
- package/src/types/email.ts +17 -0
- package/src/types/files.ts +33 -0
- package/src/types/google.ts +37 -0
- package/src/types/groups.ts +28 -0
- package/src/types/images.ts +33 -0
- package/src/types/index.ts +21 -0
- package/src/types/locations.ts +25 -0
- package/src/types/messages.ts +16 -0
- package/src/types/notifications.ts +26 -0
- package/src/types/payments.ts +134 -0
- package/src/types/posts.ts +25 -0
- package/src/types/reactions.ts +8 -0
- package/src/types/tags.ts +14 -0
- package/src/types/users.ts +89 -0
- package/src/utils/analytics.ts +41 -0
- package/src/utils/arangodb.ts +100 -0
- package/src/utils/auth.ts +28 -0
- package/src/utils/index.ts +9 -0
- package/src/utils/objects.ts +34 -0
- package/src/utils/redis.ts +17 -0
- package/templates/email/layout.html +279 -0
- package/templates/email/passwordForgot.html +15 -0
- package/templates/email/passwordRecovery.html +12 -0
- package/templates/email/verifyEmail.html +15 -0
- package/templates/sms/passwordForgot.txt +1 -0
- package/templates/sms/passwordRecovery.txt +1 -0
- package/templates/sms/verifyEmail.txt +1 -0
- package/templates/sms/verifyPhone.txt +1 -0
- 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>;
|
package/lib/data/ios.js
ADDED
|
@@ -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,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>;
|