@nlabs/reaktor 0.1.5 → 0.1.7
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/lib/config.js +20 -11
- package/lib/data/conversations.js +69 -39
- package/lib/data/dynamodb.js +60 -27
- package/lib/data/email.js +50 -19
- package/lib/data/files.js +103 -46
- package/lib/data/groups.js +114 -67
- package/lib/data/images.js +169 -102
- package/lib/data/index.js +234 -24
- package/lib/data/ios.js +48 -23
- package/lib/data/locations.js +45 -29
- package/lib/data/messages.d.ts +2 -2
- package/lib/data/messages.js +105 -72
- package/lib/data/notifications.js +31 -14
- package/lib/data/payments.js +164 -114
- package/lib/data/posts.js +144 -87
- package/lib/data/reactions.js +58 -33
- package/lib/data/s3.js +54 -24
- package/lib/data/search.js +32 -19
- package/lib/data/sms.js +35 -15
- package/lib/data/subscription.js +78 -51
- package/lib/data/tags.js +90 -51
- package/lib/data/users.js +119 -72
- package/lib/index.js +42 -8
- package/lib/types/apps.js +1 -1
- package/lib/types/arangodb.js +1 -1
- package/lib/types/auth.js +1 -1
- package/lib/types/conversations.js +1 -1
- package/lib/types/email.js +1 -1
- package/lib/types/files.js +1 -1
- package/lib/types/google.js +1 -1
- package/lib/types/groups.js +1 -1
- package/lib/types/images.js +1 -1
- package/lib/types/index.js +210 -22
- package/lib/types/locations.js +1 -1
- package/lib/types/messages.d.ts +12 -7
- package/lib/types/messages.js +1 -1
- package/lib/types/notifications.js +1 -1
- package/lib/types/payments.js +1 -1
- package/lib/types/posts.js +1 -1
- package/lib/types/reactions.js +1 -1
- package/lib/types/tags.js +1 -1
- package/lib/types/users.d.ts +0 -1
- package/lib/types/users.js +1 -1
- package/lib/utils/analytics.js +23 -11
- package/lib/utils/arangodb.js +48 -19
- package/lib/utils/auth.js +31 -15
- package/lib/utils/graphql.js +16 -4
- package/lib/utils/index.js +78 -11
- package/lib/utils/objects.js +30 -10
- package/lib/utils/redis.js +21 -8
- package/package.json +5 -5
- package/index.d.ts +0 -1
package/lib/data/sms.js
CHANGED
|
@@ -1,27 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sendSmsTemplate = exports.sendSms = void 0;
|
|
7
|
+
|
|
8
|
+
var _utils = require("@nlabs/utils");
|
|
9
|
+
|
|
10
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
11
|
+
|
|
12
|
+
var _twilio = _interopRequireDefault(require("twilio"));
|
|
13
|
+
|
|
14
|
+
var _config = require("../config");
|
|
15
|
+
|
|
16
|
+
var _email = require("./email");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
1
20
|
/**
|
|
2
21
|
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
3
22
|
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
23
|
*/
|
|
5
|
-
|
|
6
|
-
import fs from 'fs';
|
|
7
|
-
import twilioSdk from 'twilio';
|
|
8
|
-
import { Config } from '../config';
|
|
9
|
-
import { appTemplate } from './email'; // const eventCategory: string = 'sms';
|
|
24
|
+
// const eventCategory: string = 'sms';
|
|
10
25
|
// Twilio
|
|
11
|
-
|
|
12
|
-
export var sendSms = function sendSms(params) {
|
|
26
|
+
var sendSms = function sendSms(params) {
|
|
13
27
|
var _params$app = params.app,
|
|
14
28
|
app = _params$app === void 0 ? {} : _params$app,
|
|
15
29
|
content = params.content,
|
|
16
30
|
_params$user = params.user,
|
|
17
31
|
user = _params$user === void 0 ? {} : _params$user;
|
|
18
32
|
var country = user.country || 'US';
|
|
19
|
-
var phone = parsePhone(user.phone, country);
|
|
20
|
-
var templateContent = appTemplate(app, content);
|
|
21
|
-
var twilio =
|
|
33
|
+
var phone = (0, _utils.parsePhone)(user.phone, country);
|
|
34
|
+
var templateContent = (0, _email.appTemplate)(app, content);
|
|
35
|
+
var twilio = (0, _twilio.default)(_config.Config.get('twilio.sid'), _config.Config.get('twilio.token'));
|
|
22
36
|
var cfg = {
|
|
23
37
|
body: templateContent,
|
|
24
|
-
from: Config.get('twilio.number'),
|
|
38
|
+
from: _config.Config.get('twilio.number'),
|
|
25
39
|
to: phone
|
|
26
40
|
};
|
|
27
41
|
return new Promise(function (resolve, reject) {
|
|
@@ -34,14 +48,18 @@ export var sendSms = function sendSms(params) {
|
|
|
34
48
|
});
|
|
35
49
|
});
|
|
36
50
|
};
|
|
37
|
-
|
|
51
|
+
|
|
52
|
+
exports.sendSms = sendSms;
|
|
53
|
+
|
|
54
|
+
var sendSmsTemplate = function sendSmsTemplate(templateName, smsParams) {
|
|
38
55
|
var app = smsParams.app,
|
|
39
56
|
user = smsParams.user,
|
|
40
57
|
vars = smsParams.vars;
|
|
41
58
|
|
|
42
59
|
try {
|
|
43
|
-
var data =
|
|
44
|
-
|
|
60
|
+
var data = _fs.default.readFileSync("./templates/sms/".concat(templateName, ".txt"), 'utf8');
|
|
61
|
+
|
|
62
|
+
var text = (0, _email.appTemplate)(app, data, vars);
|
|
45
63
|
var params = {
|
|
46
64
|
app: app,
|
|
47
65
|
text: text,
|
|
@@ -56,4 +74,6 @@ export var sendSmsTemplate = function sendSmsTemplate(templateName, smsParams) {
|
|
|
56
74
|
return Promise.reject(error);
|
|
57
75
|
}
|
|
58
76
|
};
|
|
59
|
-
|
|
77
|
+
|
|
78
|
+
exports.sendSmsTemplate = sendSmsTemplate;
|
|
79
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3Ntcy50cyJdLCJuYW1lcyI6WyJzZW5kU21zIiwicGFyYW1zIiwiYXBwIiwiY29udGVudCIsInVzZXIiLCJjb3VudHJ5IiwicGhvbmUiLCJ0ZW1wbGF0ZUNvbnRlbnQiLCJ0d2lsaW8iLCJDb25maWciLCJnZXQiLCJjZmciLCJib2R5IiwiZnJvbSIsInRvIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZW5kTWVzc2FnZSIsImVycm9yIiwiZGF0YSIsIkVycm9yIiwiZXJyb3JfbWVzc2FnZSIsInNlbmRTbXNUZW1wbGF0ZSIsInRlbXBsYXRlTmFtZSIsInNtc1BhcmFtcyIsInZhcnMiLCJmcyIsInJlYWRGaWxlU3luYyIsInRleHQiLCJ0aGVuIiwicmVzIiwic3RhdHVzIiwiY2F0Y2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7OztBQVZBOzs7O0FBWUE7QUFFQTtBQUNPLElBQU1BLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNDLE1BQUQsRUFBZ0M7QUFBQSxvQkFLakRBLE1BTGlELENBRW5EQyxHQUZtRDtBQUFBLE1BRW5EQSxHQUZtRCw0QkFFN0MsRUFGNkM7QUFBQSxNQUduREMsT0FIbUQsR0FLakRGLE1BTGlELENBR25ERSxPQUhtRDtBQUFBLHFCQUtqREYsTUFMaUQsQ0FJbkRHLElBSm1EO0FBQUEsTUFJbkRBLElBSm1ELDZCQUk1QyxFQUo0QztBQU9yRCxNQUFNQyxPQUFPLEdBQUdELElBQUksQ0FBQ0MsT0FBTCxJQUFnQixJQUFoQztBQUNBLE1BQU1DLEtBQUssR0FBRyx1QkFBV0YsSUFBSSxDQUFDRSxLQUFoQixFQUF1QkQsT0FBdkIsQ0FBZDtBQUNBLE1BQU1FLGVBQXVCLEdBQUcsd0JBQVlMLEdBQVosRUFBaUJDLE9BQWpCLENBQWhDO0FBRUEsTUFBTUssTUFBVyxHQUFHLHFCQUFVQyxlQUFPQyxHQUFQLENBQVcsWUFBWCxDQUFWLEVBQW9DRCxlQUFPQyxHQUFQLENBQVcsY0FBWCxDQUFwQyxDQUFwQjtBQUNBLE1BQU1DLEdBQXNCLEdBQUc7QUFDN0JDLElBQUFBLElBQUksRUFBRUwsZUFEdUI7QUFFN0JNLElBQUFBLElBQUksRUFBRUosZUFBT0MsR0FBUCxDQUFXLGVBQVgsQ0FGdUI7QUFHN0JJLElBQUFBLEVBQUUsRUFBRVI7QUFIeUIsR0FBL0I7QUFNQSxTQUFPLElBQUlTLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdENULElBQUFBLE1BQU0sQ0FBQ1UsV0FBUCxDQUFtQlAsR0FBbkIsRUFBd0IsVUFBQ1EsS0FBRCxFQUFRQyxJQUFSLEVBQWlCO0FBQ3ZDLFVBQUdELEtBQUgsRUFBVTtBQUNSRixRQUFBQSxNQUFNLENBQUMsSUFBSUksS0FBSixDQUFVRixLQUFLLENBQUNHLGFBQWhCLENBQUQsQ0FBTjtBQUNELE9BRkQsTUFFTztBQUNMTixRQUFBQSxPQUFPLENBQUNJLElBQUQsQ0FBUDtBQUNEO0FBQ0YsS0FORDtBQU9ELEdBUk0sQ0FBUDtBQVNELENBM0JNOzs7O0FBNkJBLElBQU1HLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQ0MsWUFBRCxFQUF1QkMsU0FBdkIsRUFBc0U7QUFBQSxNQUM1RnZCLEdBRDRGLEdBQ3pFdUIsU0FEeUUsQ0FDNUZ2QixHQUQ0RjtBQUFBLE1BQ3ZGRSxJQUR1RixHQUN6RXFCLFNBRHlFLENBQ3ZGckIsSUFEdUY7QUFBQSxNQUNqRnNCLElBRGlGLEdBQ3pFRCxTQUR5RSxDQUNqRkMsSUFEaUY7O0FBRW5HLE1BQUk7QUFDRixRQUFNTixJQUFJLEdBQUdPLFlBQUdDLFlBQUgsMkJBQW1DSixZQUFuQyxXQUF1RCxNQUF2RCxDQUFiOztBQUNBLFFBQU1LLElBQUksR0FBRyx3QkFBWTNCLEdBQVosRUFBaUJrQixJQUFqQixFQUF1Qk0sSUFBdkIsQ0FBYjtBQUNBLFFBQU16QixNQUFNLEdBQUc7QUFBQ0MsTUFBQUEsR0FBRyxFQUFIQSxHQUFEO0FBQU0yQixNQUFBQSxJQUFJLEVBQUpBLElBQU47QUFBWXpCLE1BQUFBLElBQUksRUFBSkE7QUFBWixLQUFmO0FBRUEsV0FBT0osT0FBTyxDQUFDQyxNQUFELENBQVAsQ0FDSjZCLElBREksQ0FDQyxVQUFDQyxHQUFEO0FBQUEsYUFBU0EsR0FBRyxDQUFDQyxNQUFKLEtBQWUsUUFBeEI7QUFBQSxLQURELEVBRUpDLEtBRkksQ0FFRSxVQUFDZCxLQUFELEVBQWtCO0FBQ3ZCLFlBQU1BLEtBQU47QUFDRCxLQUpJLENBQVA7QUFLRCxHQVZELENBVUUsT0FBTUEsS0FBTixFQUFhO0FBQ2IsV0FBT0osT0FBTyxDQUFDRSxNQUFSLENBQWVFLEtBQWYsQ0FBUDtBQUNEO0FBQ0YsQ0FmTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3BhcnNlUGhvbmV9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHR3aWxpb1NkayBmcm9tICd0d2lsaW8nO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7U01TUGFyYW1zVHlwZSwgVHdpbGlvT3B0aW9uc1R5cGV9IGZyb20gJy4uL3R5cGVzL25vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHthcHBUZW1wbGF0ZX0gZnJvbSAnLi9lbWFpbCc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdzbXMnO1xuXG4vLyBUd2lsaW9cbmV4cG9ydCBjb25zdCBzZW5kU21zID0gKHBhcmFtczogU01TUGFyYW1zVHlwZSk6IGFueSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhcHAgPSB7fSxcbiAgICBjb250ZW50LFxuICAgIHVzZXIgPSB7fVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGNvdW50cnkgPSB1c2VyLmNvdW50cnkgfHwgJ1VTJztcbiAgY29uc3QgcGhvbmUgPSBwYXJzZVBob25lKHVzZXIucGhvbmUsIGNvdW50cnkpO1xuICBjb25zdCB0ZW1wbGF0ZUNvbnRlbnQ6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgY29udGVudCk7XG5cbiAgY29uc3QgdHdpbGlvOiBhbnkgPSB0d2lsaW9TZGsoQ29uZmlnLmdldCgndHdpbGlvLnNpZCcpLCBDb25maWcuZ2V0KCd0d2lsaW8udG9rZW4nKSk7XG4gIGNvbnN0IGNmZzogVHdpbGlvT3B0aW9uc1R5cGUgPSB7XG4gICAgYm9keTogdGVtcGxhdGVDb250ZW50LFxuICAgIGZyb206IENvbmZpZy5nZXQoJ3R3aWxpby5udW1iZXInKSxcbiAgICB0bzogcGhvbmVcbiAgfTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHR3aWxpby5zZW5kTWVzc2FnZShjZmcsIChlcnJvciwgZGF0YSkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihlcnJvci5lcnJvcl9tZXNzYWdlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHNlbmRTbXNUZW1wbGF0ZSA9ICh0ZW1wbGF0ZU5hbWU6IHN0cmluZywgc21zUGFyYW1zOiBTTVNQYXJhbXNUeXBlKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHthcHAsIHVzZXIsIHZhcnN9ID0gc21zUGFyYW1zO1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBmcy5yZWFkRmlsZVN5bmMoYC4vdGVtcGxhdGVzL3Ntcy8ke3RlbXBsYXRlTmFtZX0udHh0YCwgJ3V0ZjgnKTtcbiAgICBjb25zdCB0ZXh0ID0gYXBwVGVtcGxhdGUoYXBwLCBkYXRhLCB2YXJzKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7YXBwLCB0ZXh0LCB1c2VyfTtcblxuICAgIHJldHVybiBzZW5kU21zKHBhcmFtcylcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5zdGF0dXMgPT09ICdxdWV1ZWQnKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gIH1cbn07XG4iXX0=
|
package/lib/data/subscription.js
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.deleteSubscription = exports.addSubscription = exports.addPlan = exports.getSubscription = exports.getPlanList = void 0;
|
|
7
|
+
|
|
8
|
+
var _utils = require("@nlabs/utils");
|
|
9
|
+
|
|
10
|
+
var _arangojs = require("arangojs");
|
|
11
|
+
|
|
12
|
+
var _luxon = require("luxon");
|
|
13
|
+
|
|
14
|
+
var stripe = _interopRequireWildcard(require("stripe"));
|
|
15
|
+
|
|
16
|
+
var _config = require("../config");
|
|
17
|
+
|
|
18
|
+
var _utils2 = require("../utils");
|
|
19
|
+
|
|
20
|
+
var _users = require("./users");
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
|
23
|
+
|
|
1
24
|
function _templateObject3() {
|
|
2
25
|
var data = _taggedTemplateLiteral(["UPDATE s WITH ", " IN subscriptions"]);
|
|
3
26
|
|
|
@@ -30,32 +53,22 @@ function _templateObject() {
|
|
|
30
53
|
|
|
31
54
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
32
55
|
|
|
33
|
-
/**
|
|
34
|
-
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
35
|
-
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
36
|
-
*/
|
|
37
|
-
import { createHash, parseChar, parseId, parseNum, parseVarChar } from '@nlabs/utils';
|
|
38
|
-
import { aql } from 'arangojs';
|
|
39
|
-
import { DateTime } from 'luxon';
|
|
40
|
-
import * as stripe from 'stripe';
|
|
41
|
-
import { Config } from '../config';
|
|
42
|
-
import { getLimit, logError, logException, useDb } from '../utils';
|
|
43
|
-
import { getUser } from './users';
|
|
44
56
|
var eventCategory = 'subscription';
|
|
45
|
-
|
|
57
|
+
|
|
58
|
+
var getPlanList = function getPlanList(context) {
|
|
46
59
|
var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
47
60
|
var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
|
|
48
61
|
var action = 'getList';
|
|
49
62
|
var database = context.database;
|
|
50
|
-
var limit = getLimit(from, to);
|
|
63
|
+
var limit = (0, _utils2.getLimit)(from, to);
|
|
51
64
|
var aqlQry = "FOR p IN plans\n ".concat(limit.aql, "\n SORT p.amount\n RETURN p");
|
|
52
|
-
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
65
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
53
66
|
return cursor.all();
|
|
54
67
|
}).then(function () {
|
|
55
68
|
var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
56
69
|
return list;
|
|
57
70
|
}).catch(function (error) {
|
|
58
|
-
return logError({
|
|
71
|
+
return (0, _utils2.logError)({
|
|
59
72
|
action: action,
|
|
60
73
|
category: eventCategory,
|
|
61
74
|
label: 'db_error'
|
|
@@ -66,18 +79,21 @@ export var getPlanList = function getPlanList(context) {
|
|
|
66
79
|
});
|
|
67
80
|
});
|
|
68
81
|
};
|
|
69
|
-
|
|
82
|
+
|
|
83
|
+
exports.getPlanList = getPlanList;
|
|
84
|
+
|
|
85
|
+
var getSubscription = function getSubscription(context) {
|
|
70
86
|
var action = 'getItem';
|
|
71
87
|
var database = context.database,
|
|
72
88
|
sessionId = context.userId;
|
|
73
89
|
var aqlQry = "FOR s IN subscriptions\n FILTER s.userId == ".concat(sessionId, " && s.cancelled > 0\n LET plan = FIRST(\n FOR p IN plans\n FILTER p._key == s.planId\n )\n LIMIT 1\n RETURN MERGE(s, {plan: plan})");
|
|
74
|
-
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
90
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
75
91
|
return cursor.next();
|
|
76
92
|
}).then(function () {
|
|
77
93
|
var subscription = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
78
94
|
return subscription;
|
|
79
95
|
}).catch(function (error) {
|
|
80
|
-
return logError({
|
|
96
|
+
return (0, _utils2.logError)({
|
|
81
97
|
action: action,
|
|
82
98
|
category: eventCategory,
|
|
83
99
|
label: 'db_error'
|
|
@@ -88,7 +104,10 @@ export var getSubscription = function getSubscription(context) {
|
|
|
88
104
|
});
|
|
89
105
|
});
|
|
90
106
|
};
|
|
91
|
-
|
|
107
|
+
|
|
108
|
+
exports.getSubscription = getSubscription;
|
|
109
|
+
|
|
110
|
+
var addPlan = function addPlan(context, item) {
|
|
92
111
|
var action = 'addPlan';
|
|
93
112
|
var database = context.database,
|
|
94
113
|
sessionId = context.userId,
|
|
@@ -96,7 +115,7 @@ export var addPlan = function addPlan(context, item) {
|
|
|
96
115
|
var isAdmin = userType > 2;
|
|
97
116
|
|
|
98
117
|
if (!isAdmin) {
|
|
99
|
-
return logException({
|
|
118
|
+
return (0, _utils2.logException)({
|
|
100
119
|
action: action,
|
|
101
120
|
category: eventCategory,
|
|
102
121
|
label: 'unauthorized',
|
|
@@ -107,8 +126,8 @@ export var addPlan = function addPlan(context, item) {
|
|
|
107
126
|
}
|
|
108
127
|
|
|
109
128
|
var now = Date.now();
|
|
110
|
-
var formatId = parseId(item.id);
|
|
111
|
-
var planId = formatId === '' ? createHash("tag-".concat(sessionId)) : formatId;
|
|
129
|
+
var formatId = (0, _utils.parseId)(item.id);
|
|
130
|
+
var planId = formatId === '' ? (0, _utils.createHash)("tag-".concat(sessionId)) : formatId;
|
|
112
131
|
var amount = item.amount,
|
|
113
132
|
_item$currency = item.currency,
|
|
114
133
|
currency = _item$currency === void 0 ? 'USD' : _item$currency,
|
|
@@ -116,11 +135,11 @@ export var addPlan = function addPlan(context, item) {
|
|
|
116
135
|
interval = item.interval,
|
|
117
136
|
intervalCount = item.intervalCount,
|
|
118
137
|
name = item.name;
|
|
119
|
-
var formatAmount = parseNum(amount);
|
|
120
|
-
var formatInterval = parseChar(interval, 5).toLowerCase();
|
|
121
|
-
var formatIntervalCnt = parseNum(intervalCount, 5);
|
|
122
|
-
var formatName = parseVarChar(name, 32);
|
|
123
|
-
var formatDesc = parseVarChar(description, 32);
|
|
138
|
+
var formatAmount = (0, _utils.parseNum)(amount);
|
|
139
|
+
var formatInterval = (0, _utils.parseChar)(interval, 5).toLowerCase();
|
|
140
|
+
var formatIntervalCnt = (0, _utils.parseNum)(intervalCount, 5);
|
|
141
|
+
var formatName = (0, _utils.parseVarChar)(name, 32);
|
|
142
|
+
var formatDesc = (0, _utils.parseVarChar)(description, 32);
|
|
124
143
|
var insert = {
|
|
125
144
|
_key: planId,
|
|
126
145
|
added: now,
|
|
@@ -132,13 +151,13 @@ export var addPlan = function addPlan(context, item) {
|
|
|
132
151
|
modified: now,
|
|
133
152
|
name: formatName
|
|
134
153
|
};
|
|
135
|
-
var aqlQry = aql(_templateObject(), insert);
|
|
136
|
-
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
154
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject(), insert);
|
|
155
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
137
156
|
return cursor.next();
|
|
138
157
|
}).then(function () {
|
|
139
158
|
var plan = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
140
159
|
// Stripe
|
|
141
|
-
var stripeClient = stripe(Config.get('stripe.token'));
|
|
160
|
+
var stripeClient = stripe(_config.Config.get('stripe.token'));
|
|
142
161
|
return stripeClient.plans.create({
|
|
143
162
|
amount: formatAmount * 100,
|
|
144
163
|
currency: currency,
|
|
@@ -152,7 +171,7 @@ export var addPlan = function addPlan(context, item) {
|
|
|
152
171
|
return plan;
|
|
153
172
|
});
|
|
154
173
|
}).catch(function (error) {
|
|
155
|
-
return logError({
|
|
174
|
+
return (0, _utils2.logError)({
|
|
156
175
|
action: action,
|
|
157
176
|
category: eventCategory,
|
|
158
177
|
label: 'db_error'
|
|
@@ -163,7 +182,10 @@ export var addPlan = function addPlan(context, item) {
|
|
|
163
182
|
});
|
|
164
183
|
});
|
|
165
184
|
};
|
|
166
|
-
|
|
185
|
+
|
|
186
|
+
exports.addPlan = addPlan;
|
|
187
|
+
|
|
188
|
+
var addSubscription = function addSubscription(context, item) {
|
|
167
189
|
var action = 'addSubscription';
|
|
168
190
|
var database = context.database,
|
|
169
191
|
sessionId = context.userId,
|
|
@@ -171,7 +193,7 @@ export var addSubscription = function addSubscription(context, item) {
|
|
|
171
193
|
var isAdmin = userType > 2;
|
|
172
194
|
|
|
173
195
|
if (!isAdmin) {
|
|
174
|
-
return logException({
|
|
196
|
+
return (0, _utils2.logException)({
|
|
175
197
|
action: action,
|
|
176
198
|
category: eventCategory,
|
|
177
199
|
label: 'unauthorized',
|
|
@@ -182,24 +204,24 @@ export var addSubscription = function addSubscription(context, item) {
|
|
|
182
204
|
}
|
|
183
205
|
|
|
184
206
|
var now = Date.now();
|
|
185
|
-
var formatId = parseId(item.id);
|
|
186
|
-
var subscriptionId = formatId === '' ? createHash("tag-".concat(sessionId)) : formatId;
|
|
207
|
+
var formatId = (0, _utils.parseId)(item.id);
|
|
208
|
+
var subscriptionId = formatId === '' ? (0, _utils.createHash)("tag-".concat(sessionId)) : formatId;
|
|
187
209
|
var planId = item.planId,
|
|
188
210
|
tax = item.tax,
|
|
189
211
|
trialEnd = item.trialEnd,
|
|
190
212
|
trialPeriod = item.trialPeriod;
|
|
191
|
-
var formatPlanId = parseId(planId);
|
|
192
|
-
var formatTaxPercent = parseNum(tax) || 0;
|
|
193
|
-
var formatTrialPeriod = parseNum(tax) || 0;
|
|
213
|
+
var formatPlanId = (0, _utils.parseId)(planId);
|
|
214
|
+
var formatTaxPercent = (0, _utils.parseNum)(tax) || 0;
|
|
215
|
+
var formatTrialPeriod = (0, _utils.parseNum)(tax) || 0;
|
|
194
216
|
var formatTrialEnd = trialEnd || Date.now();
|
|
195
217
|
|
|
196
218
|
if (formatTrialPeriod) {
|
|
197
|
-
formatTrialEnd = DateTime.local().plus({
|
|
219
|
+
formatTrialEnd = _luxon.DateTime.local().plus({
|
|
198
220
|
days: trialPeriod
|
|
199
221
|
}).toMillis();
|
|
200
222
|
}
|
|
201
223
|
|
|
202
|
-
return getUser(context, sessionId).then(function (user) {
|
|
224
|
+
return (0, _users.getUser)(context, sessionId).then(function (user) {
|
|
203
225
|
var insert = {
|
|
204
226
|
_key: subscriptionId,
|
|
205
227
|
added: now,
|
|
@@ -210,13 +232,13 @@ export var addSubscription = function addSubscription(context, item) {
|
|
|
210
232
|
trialEnd: formatTrialEnd,
|
|
211
233
|
userId: sessionId
|
|
212
234
|
};
|
|
213
|
-
var aqlQry = aql(_templateObject2(), insert);
|
|
214
|
-
return useDb(database).query(aqlQry).then(function (cursor) {
|
|
235
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject2(), insert);
|
|
236
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
215
237
|
return cursor.next();
|
|
216
238
|
}).then(function () {
|
|
217
239
|
var subscription = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
218
240
|
// Stripe
|
|
219
|
-
var stripeClient = stripe(Config.get('stripe.token'));
|
|
241
|
+
var stripeClient = stripe(_config.Config.get('stripe.token'));
|
|
220
242
|
return stripeClient.subscriptions.create({
|
|
221
243
|
customer: user.stripeCustomerId,
|
|
222
244
|
items: [{
|
|
@@ -231,7 +253,7 @@ export var addSubscription = function addSubscription(context, item) {
|
|
|
231
253
|
return subscription;
|
|
232
254
|
});
|
|
233
255
|
}).catch(function (error) {
|
|
234
|
-
return logError({
|
|
256
|
+
return (0, _utils2.logError)({
|
|
235
257
|
action: action,
|
|
236
258
|
category: eventCategory,
|
|
237
259
|
label: 'db_error'
|
|
@@ -243,14 +265,17 @@ export var addSubscription = function addSubscription(context, item) {
|
|
|
243
265
|
});
|
|
244
266
|
});
|
|
245
267
|
};
|
|
246
|
-
|
|
268
|
+
|
|
269
|
+
exports.addSubscription = addSubscription;
|
|
270
|
+
|
|
271
|
+
var deleteSubscription = function deleteSubscription(context, endDate) {
|
|
247
272
|
var action = 'deleteSubscription';
|
|
248
273
|
var database = context.database;
|
|
249
274
|
var now = Date.now();
|
|
250
|
-
var formatEndDate = parseNum(endDate) || now;
|
|
275
|
+
var formatEndDate = (0, _utils.parseNum)(endDate) || now;
|
|
251
276
|
return getSubscription(context).then(function (subscription) {
|
|
252
277
|
// Stripe
|
|
253
|
-
var stripeClient = stripe(Config.get('stripe.token'));
|
|
278
|
+
var stripeClient = stripe(_config.Config.get('stripe.token'));
|
|
254
279
|
return stripeClient.subscriptions.del(subscription.transactionId, {
|
|
255
280
|
subscription: formatEndDate
|
|
256
281
|
}).then(function (stripeResponse) {
|
|
@@ -261,11 +286,11 @@ export var deleteSubscription = function deleteSubscription(context, endDate) {
|
|
|
261
286
|
modified: now,
|
|
262
287
|
planId: ''
|
|
263
288
|
};
|
|
264
|
-
var aqlQry = aql(_templateObject3(), update);
|
|
265
|
-
return useDb(database).query(aqlQry).then(function () {
|
|
289
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject3(), update);
|
|
290
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function () {
|
|
266
291
|
return true;
|
|
267
292
|
}).catch(function (error) {
|
|
268
|
-
return logError({
|
|
293
|
+
return (0, _utils2.logError)({
|
|
269
294
|
action: action,
|
|
270
295
|
category: eventCategory,
|
|
271
296
|
label: 'db_error'
|
|
@@ -281,4 +306,6 @@ export var deleteSubscription = function deleteSubscription(context, endDate) {
|
|
|
281
306
|
});
|
|
282
307
|
});
|
|
283
308
|
};
|
|
284
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3N1YnNjcmlwdGlvbi50cyJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicGFyc2VDaGFyIiwicGFyc2VJZCIsInBhcnNlTnVtIiwicGFyc2VWYXJDaGFyIiwiYXFsIiwiRGF0ZVRpbWUiLCJzdHJpcGUiLCJDb25maWciLCJnZXRMaW1pdCIsImxvZ0Vycm9yIiwibG9nRXhjZXB0aW9uIiwidXNlRGIiLCJnZXRVc2VyIiwiZXZlbnRDYXRlZ29yeSIsImdldFBsYW5MaXN0IiwiY29udGV4dCIsImZyb20iLCJ0byIsImFjdGlvbiIsImRhdGFiYXNlIiwibGltaXQiLCJhcWxRcnkiLCJxdWVyeSIsInRoZW4iLCJjdXJzb3IiLCJhbGwiLCJsaXN0IiwiY2F0Y2giLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJQcm9taXNlIiwicmVqZWN0IiwiZ2V0U3Vic2NyaXB0aW9uIiwic2Vzc2lvbklkIiwidXNlcklkIiwibmV4dCIsInN1YnNjcmlwdGlvbiIsImFkZFBsYW4iLCJpdGVtIiwidXNlclR5cGUiLCJpc0FkbWluIiwidmFsdWUiLCJub3ciLCJEYXRlIiwiZm9ybWF0SWQiLCJpZCIsInBsYW5JZCIsImFtb3VudCIsImN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJpbnRlcnZhbCIsImludGVydmFsQ291bnQiLCJuYW1lIiwiZm9ybWF0QW1vdW50IiwiZm9ybWF0SW50ZXJ2YWwiLCJ0b0xvd2VyQ2FzZSIsImZvcm1hdEludGVydmFsQ250IiwiZm9ybWF0TmFtZSIsImZvcm1hdERlc2MiLCJpbnNlcnQiLCJfa2V5IiwiYWRkZWQiLCJtb2RpZmllZCIsInBsYW4iLCJzdHJpcGVDbGllbnQiLCJnZXQiLCJwbGFucyIsImNyZWF0ZSIsImludGVydmFsX2NvdW50IiwibWV0YWRhdGEiLCJzdGF0ZW1lbnRfZGVzY3JpcHRvciIsImFkZFN1YnNjcmlwdGlvbiIsInN1YnNjcmlwdGlvbklkIiwidGF4IiwidHJpYWxFbmQiLCJ0cmlhbFBlcmlvZCIsImZvcm1hdFBsYW5JZCIsImZvcm1hdFRheFBlcmNlbnQiLCJmb3JtYXRUcmlhbFBlcmlvZCIsImZvcm1hdFRyaWFsRW5kIiwibG9jYWwiLCJwbHVzIiwiZGF5cyIsInRvTWlsbGlzIiwidXNlciIsImNhbmNlbERhdGUiLCJzdWJzY3JpcHRpb25zIiwiY3VzdG9tZXIiLCJzdHJpcGVDdXN0b21lcklkIiwiaXRlbXMiLCJ0YXhfcGVyY2VudCIsInRyaWFsX2VuZCIsImRlbGV0ZVN1YnNjcmlwdGlvbiIsImVuZERhdGUiLCJmb3JtYXRFbmREYXRlIiwiZGVsIiwidHJhbnNhY3Rpb25JZCIsInN0cmlwZVJlc3BvbnNlIiwiY2FuY2VsbGVkIiwiY2FuY2VsX2F0X3BlcmlvZF9lbmQiLCJ1cGRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFJQSxTQUFRQSxVQUFSLEVBQW9CQyxTQUFwQixFQUErQkMsT0FBL0IsRUFBd0NDLFFBQXhDLEVBQWtEQyxZQUFsRCxRQUFxRSxjQUFyRTtBQUNBLFNBQVFDLEdBQVIsUUFBa0IsVUFBbEI7QUFHQSxTQUFRQyxRQUFSLFFBQXVCLE9BQXZCO0FBQ0EsT0FBTyxLQUFLQyxNQUFaLE1BQXdCLFFBQXhCO0FBRUEsU0FBUUMsTUFBUixRQUFxQixXQUFyQjtBQUlBLFNBQVFDLFFBQVIsRUFBa0JDLFFBQWxCLEVBQTRCQyxZQUE1QixFQUEwQ0MsS0FBMUMsUUFBc0QsVUFBdEQ7QUFDQSxTQUFRQyxPQUFSLFFBQXNCLFNBQXRCO0FBRUEsSUFBTUMsYUFBcUIsR0FBRyxjQUE5QjtBQUVBLE9BQU8sSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsT0FBRCxFQUFvRjtBQUFBLE1BQTlEQyxJQUE4RCx1RUFBL0MsQ0FBK0M7QUFBQSxNQUE1Q0MsRUFBNEMsdUVBQS9CLEVBQStCO0FBQzdHLE1BQU1DLE1BQWMsR0FBRyxTQUF2QjtBQUQ2RyxNQUV0R0MsUUFGc0csR0FFMUZKLE9BRjBGLENBRXRHSSxRQUZzRztBQUc3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QTRCRCxjQUFjLENBQUNFLG9CQUE5QyxFQUFvRTtBQUNsRSxZQUFNQyxNQUEyQixHQUFHO0FBQ2xDZixVQUFBQSxVQUFVLEVBQUVTLGFBRHNCO0FBRWxDaEMsVUFBQUEsUUFBUSxFQUFFcEIsR0FGd0I7QUFHbENJLFVBQUFBLE1BQU0sRUFBRTtBQUgwQixTQUFwQztBQUtBLFlBQU0xQixNQUFnQixHQUFHakIsR0FBSCxxQkFBdUJpRyxNQUF2QixDQUF0QjtBQUVBLGVBQU8xRixLQUFLLENBQUNRLFFBQUQsQ0FBTCxDQUFnQkcsS0FBaEIsQ0FBc0JELE1BQXRCLEVBQ0pFLElBREksQ0FDQztBQUFBLGlCQUFNLElBQU47QUFBQSxTQURELEVBRUpJLEtBRkksQ0FFRSxVQUFDQyxLQUFEO0FBQUEsaUJBQWtCbkIsUUFBUSxDQUFDO0FBQ2hDUyxZQUFBQSxNQUFNLEVBQU5BLE1BRGdDO0FBRWhDVyxZQUFBQSxRQUFRLEVBQUVoQixhQUZzQjtBQUdoQ2lCLFlBQUFBLEtBQUssRUFBRTtBQUh5QixXQUFELEVBSTlCRixLQUo4QixFQUl2QixFQUp1QixDQUFSLENBSVhMLElBSlcsQ0FJTjtBQUFBLG1CQUFNLElBQU47QUFBQSxXQUpNLEVBSU1JLEtBSk4sQ0FJWSxVQUFDQyxLQUFEO0FBQUEsbUJBQVdHLE9BQU8sQ0FBQ0MsTUFBUixDQUFlSixLQUFmLENBQVg7QUFBQSxXQUpaLENBQWxCO0FBQUEsU0FGRixDQUFQO0FBT0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0QsS0F2QkksQ0FBUDtBQXdCRCxHQTVCSSxDQUFQO0FBNkJELENBbkNNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VDaGFyLCBwYXJzZUlkLCBwYXJzZU51bSwgcGFyc2VWYXJDaGFyfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvYXFsLXF1ZXJ5JztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvY3Vyc29yJztcbmltcG9ydCB7RGF0ZVRpbWV9IGZyb20gJ2x1eG9uJztcbmltcG9ydCAqIGFzIHN0cmlwZSBmcm9tICdzdHJpcGUnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7QXJhbmdvREJMaW1pdH0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGInO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoJztcbmltcG9ydCB7UGF5bWVudEludGVydmFsLCBQYXltZW50UGxhbiwgUGF5bWVudFN1YnNjcmlwdGlvbn0gZnJvbSAnLi4vdHlwZXMvcGF5bWVudHMnO1xuaW1wb3J0IHtnZXRMaW1pdCwgbG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbiwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7Z2V0VXNlcn0gZnJvbSAnLi91c2Vycyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdzdWJzY3JpcHRpb24nO1xuXG5leHBvcnQgY29uc3QgZ2V0UGxhbkxpc3QgPSAoY29udGV4dDogQXBpQ29udGV4dCwgZnJvbTogbnVtYmVyID0gMCwgdG86IG51bWJlciA9IDMwKTogUHJvbWlzZTxQYXltZW50UGxhbltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldExpc3QnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBwIElOIHBsYW5zXG4gICAgICAke2xpbWl0LmFxbH1cbiAgICAgIFNPUlQgcC5hbW91bnRcbiAgICAgIFJFVFVSTiBwYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChsaXN0ID0gW10pID0+IGxpc3QpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwge30pLnRoZW4oKCkgPT4gbnVsbCkuY2F0Y2goKGVycm9yKSA9PiBQcm9taXNlLnJlamVjdChlcnJvcikpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdWJzY3JpcHRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgcyBJTiBzdWJzY3JpcHRpb25zXG4gICAgICBGSUxURVIgcy51c2VySWQgPT0gJHtzZXNzaW9uSWR9ICYmIHMuY2FuY2VsbGVkID4gMFxuICAgICAgTEVUIHBsYW4gPSBGSVJTVChcbiAgICAgICAgRk9SIHAgSU4gcGxhbnNcbiAgICAgICAgRklMVEVSIHAuX2tleSA9PSBzLnBsYW5JZFxuICAgICAgKVxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIE1FUkdFKHMsIHtwbGFuOiBwbGFufSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChzdWJzY3JpcHRpb24gPSB7fSkgPT4gc3Vic2NyaXB0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIHt9KS50aGVuKCgpID0+IG51bGwpLmNhdGNoKChlcnJvcikgPT4gUHJvbWlzZS5yZWplY3QoZXJyb3IpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkUGxhbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtOiBQYXltZW50UGxhbik6IFByb21pc2U8UGF5bWVudFBsYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkUGxhbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWQsIHVzZXJUeXBlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGlzQWRtaW46IGJvb2xlYW4gPSB1c2VyVHlwZSA+IDI7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbS5pZCk7XG4gIGNvbnN0IHBsYW5JZDogc3RyaW5nID0gZm9ybWF0SWQgPT09ICcnID8gY3JlYXRlSGFzaChgdGFnLSR7c2Vzc2lvbklkfWApIDogZm9ybWF0SWQ7XG4gIGNvbnN0IHthbW91bnQsIGN1cnJlbmN5ID0gJ1VTRCcsIGRlc2NyaXB0aW9uLCBpbnRlcnZhbCwgaW50ZXJ2YWxDb3VudCwgbmFtZX0gPSBpdGVtO1xuICBjb25zdCBmb3JtYXRBbW91bnQ6IG51bWJlciA9IHBhcnNlTnVtKGFtb3VudCk7XG4gIGNvbnN0IGZvcm1hdEludGVydmFsOiBQYXltZW50SW50ZXJ2YWwgPSBwYXJzZUNoYXIoaW50ZXJ2YWwsIDUpLnRvTG93ZXJDYXNlKCkgYXMgUGF5bWVudEludGVydmFsO1xuICBjb25zdCBmb3JtYXRJbnRlcnZhbENudDogbnVtYmVyID0gcGFyc2VOdW0oaW50ZXJ2YWxDb3VudCwgNSk7XG4gIGNvbnN0IGZvcm1hdE5hbWU6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcihuYW1lLCAzMik7XG4gIGNvbnN0IGZvcm1hdERlc2M6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcihkZXNjcmlwdGlvbiwgMzIpO1xuXG4gIGNvbnN0IGluc2VydDogUGF5bWVudFBsYW4gPSB7XG4gICAgX2tleTogcGxhbklkLFxuICAgIGFkZGVkOiBub3csXG4gICAgYW1vdW50OiBmb3JtYXRBbW91bnQsXG4gICAgY3VycmVuY3ksXG4gICAgZGVzY3JpcHRpb246IGZvcm1hdERlc2MsXG4gICAgaW50ZXJ2YWw6IGZvcm1hdEludGVydmFsLFxuICAgIGludGVydmFsQ291bnQ6IGZvcm1hdEludGVydmFsQ250LFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgbmFtZTogZm9ybWF0TmFtZVxuICB9O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gcGxhbnMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHBsYW46IFBheW1lbnRQbGFuID0ge30pID0+IHtcbiAgICAgIC8vIFN0cmlwZVxuICAgICAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gc3RyaXBlKENvbmZpZy5nZXQoJ3N0cmlwZS50b2tlbicpKTtcbiAgICAgIHJldHVybiBzdHJpcGVDbGllbnQucGxhbnNcbiAgICAgICAgLmNyZWF0ZSh7XG4gICAgICAgICAgYW1vdW50OiBmb3JtYXRBbW91bnQgKiAxMDAsXG4gICAgICAgICAgY3VycmVuY3ksXG4gICAgICAgICAgaWQ6IHBsYW5JZCxcbiAgICAgICAgICBpbnRlcnZhbDogZm9ybWF0SW50ZXJ2YWwsXG4gICAgICAgICAgaW50ZXJ2YWxfY291bnQ6IGZvcm1hdEludGVydmFsQ250LFxuICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYW1lOiBmb3JtYXROYW1lLFxuICAgICAgICAgIHN0YXRlbWVudF9kZXNjcmlwdG9yOiBmb3JtYXREZXNjXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKCgpID0+IHBsYW4pO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwge30pLnRoZW4oKCkgPT4gbnVsbCkuY2F0Y2goKGVycm9yKSA9PiBQcm9taXNlLnJlamVjdChlcnJvcikpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRTdWJzY3JpcHRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgaXRlbSk6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRTdWJzY3JpcHRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkLCB1c2VyVHlwZX0gPSBjb250ZXh0O1xuICBjb25zdCBpc0FkbWluOiBib29sZWFuID0gdXNlclR5cGUgPiAyO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IGZvcm1hdElkOiBzdHJpbmcgPSBwYXJzZUlkKGl0ZW0uaWQpO1xuICBjb25zdCBzdWJzY3JpcHRpb25JZDogc3RyaW5nID0gZm9ybWF0SWQgPT09ICcnID8gY3JlYXRlSGFzaChgdGFnLSR7c2Vzc2lvbklkfWApIDogZm9ybWF0SWQ7XG4gIGNvbnN0IHtwbGFuSWQsIHRheCwgdHJpYWxFbmQsIHRyaWFsUGVyaW9kfSA9IGl0ZW07XG4gIGNvbnN0IGZvcm1hdFBsYW5JZDogc3RyaW5nID0gcGFyc2VJZChwbGFuSWQpO1xuICBjb25zdCBmb3JtYXRUYXhQZXJjZW50OiBudW1iZXIgPSBwYXJzZU51bSh0YXgpIHx8IDA7XG4gIGNvbnN0IGZvcm1hdFRyaWFsUGVyaW9kOiBudW1iZXIgPSBwYXJzZU51bSh0YXgpIHx8IDA7XG4gIGxldCBmb3JtYXRUcmlhbEVuZDogbnVtYmVyID0gdHJpYWxFbmQgfHwgRGF0ZS5ub3coKTtcblxuICBpZihmb3JtYXRUcmlhbFBlcmlvZCkge1xuICAgIGZvcm1hdFRyaWFsRW5kID0gRGF0ZVRpbWUubG9jYWwoKS5wbHVzKHtkYXlzOiB0cmlhbFBlcmlvZH0pLnRvTWlsbGlzKCk7XG4gIH1cblxuICByZXR1cm4gZ2V0VXNlcihjb250ZXh0LCBzZXNzaW9uSWQpXG4gICAgLnRoZW4oKHVzZXIpID0+IHtcbiAgICAgIGNvbnN0IGluc2VydDogUGF5bWVudFN1YnNjcmlwdGlvbiA9IHtcbiAgICAgICAgX2tleTogc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgIGFkZGVkOiBub3csXG4gICAgICAgIGNhbmNlbERhdGU6IDAsXG4gICAgICAgIG1vZGlmaWVkOiBub3csXG4gICAgICAgIHBsYW5JZDogZm9ybWF0UGxhbklkLFxuICAgICAgICB0YXg6IGZvcm1hdFRheFBlcmNlbnQsXG4gICAgICAgIHRyaWFsRW5kOiBmb3JtYXRUcmlhbEVuZCxcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgICAgIH07XG4gICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gcGxhbnMgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKHN1YnNjcmlwdGlvbjogUGF5bWVudFN1YnNjcmlwdGlvbiA9IHt9KSA9PiB7XG4gICAgICAgICAgLy8gU3RyaXBlXG4gICAgICAgICAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gc3RyaXBlKENvbmZpZy5nZXQoJ3N0cmlwZS50b2tlbicpKTtcbiAgICAgICAgICByZXR1cm4gc3RyaXBlQ2xpZW50LnN1YnNjcmlwdGlvbnNcbiAgICAgICAgICAgIC5jcmVhdGUoe1xuICAgICAgICAgICAgICBjdXN0b21lcjogdXNlci5zdHJpcGVDdXN0b21lcklkLFxuICAgICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgIHtwbGFuOiBmb3JtYXRQbGFuSWR9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGF4X3BlcmNlbnQ6IGZvcm1hdFRheFBlcmNlbnQgKiAxMDAsXG4gICAgICAgICAgICAgIHRyaWFsX2VuZDogZm9ybWF0VHJpYWxFbmRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiBzdWJzY3JpcHRpb24pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgICAgICB9LCBlcnJvciwge30pLnRoZW4oKCkgPT4gbnVsbCkuY2F0Y2goKGVycm9yKSA9PiBQcm9taXNlLnJlamVjdChlcnJvcikpKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVTdWJzY3JpcHRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgZW5kRGF0ZTogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZVN1YnNjcmlwdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IGZvcm1hdEVuZERhdGU6IG51bWJlciA9IHBhcnNlTnVtKGVuZERhdGUpIHx8IG5vdztcblxuICByZXR1cm4gZ2V0U3Vic2NyaXB0aW9uKGNvbnRleHQpXG4gICAgLnRoZW4oKHN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgLy8gU3RyaXBlXG4gICAgICBjb25zdCBzdHJpcGVDbGllbnQgPSBzdHJpcGUoQ29uZmlnLmdldCgnc3RyaXBlLnRva2VuJykpO1xuICAgICAgcmV0dXJuIHN0cmlwZUNsaWVudC5zdWJzY3JpcHRpb25zXG4gICAgICAgIC5kZWwoc3Vic2NyaXB0aW9uLnRyYW5zYWN0aW9uSWQsIHtcbiAgICAgICAgICBzdWJzY3JpcHRpb246IGZvcm1hdEVuZERhdGVcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHN0cmlwZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGNhbmNlbGxlZCBvbiBTdHJpcGUgYmVmb3JlIHVwZGF0aW5nIHRoZSBkYlxuICAgICAgICAgIGlmKHN0cmlwZVJlc3BvbnNlLmNhbmNlbGxlZCB8fCBzdHJpcGVSZXNwb25zZS5jYW5jZWxfYXRfcGVyaW9kX2VuZCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlOiBQYXltZW50U3Vic2NyaXB0aW9uID0ge1xuICAgICAgICAgICAgICBjYW5jZWxEYXRlOiBmb3JtYXRFbmREYXRlLFxuICAgICAgICAgICAgICBtb2RpZmllZDogbm93LFxuICAgICAgICAgICAgICBwbGFuSWQ6ICcnXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUERBVEUgcyBXSVRIICR7dXBkYXRlfSBJTiBzdWJzY3JpcHRpb25zYDtcblxuICAgICAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgICAgICAgICAgIH0sIGVycm9yLCB7fSkudGhlbigoKSA9PiBudWxsKS5jYXRjaCgoZXJyb3IpID0+IFByb21pc2UucmVqZWN0KGVycm9yKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcbiJdfQ==
|
|
309
|
+
|
|
310
|
+
exports.deleteSubscription = deleteSubscription;
|
|
311
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL3N1YnNjcmlwdGlvbi50cyJdLCJuYW1lcyI6WyJldmVudENhdGVnb3J5IiwiZ2V0UGxhbkxpc3QiLCJjb250ZXh0IiwiZnJvbSIsInRvIiwiYWN0aW9uIiwiZGF0YWJhc2UiLCJsaW1pdCIsImFxbFFyeSIsImFxbCIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsImFsbCIsImxpc3QiLCJjYXRjaCIsImVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCIsIlByb21pc2UiLCJyZWplY3QiLCJnZXRTdWJzY3JpcHRpb24iLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJuZXh0Iiwic3Vic2NyaXB0aW9uIiwiYWRkUGxhbiIsIml0ZW0iLCJ1c2VyVHlwZSIsImlzQWRtaW4iLCJ2YWx1ZSIsIm5vdyIsIkRhdGUiLCJmb3JtYXRJZCIsImlkIiwicGxhbklkIiwiYW1vdW50IiwiY3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImludGVydmFsIiwiaW50ZXJ2YWxDb3VudCIsIm5hbWUiLCJmb3JtYXRBbW91bnQiLCJmb3JtYXRJbnRlcnZhbCIsInRvTG93ZXJDYXNlIiwiZm9ybWF0SW50ZXJ2YWxDbnQiLCJmb3JtYXROYW1lIiwiZm9ybWF0RGVzYyIsImluc2VydCIsIl9rZXkiLCJhZGRlZCIsIm1vZGlmaWVkIiwicGxhbiIsInN0cmlwZUNsaWVudCIsInN0cmlwZSIsIkNvbmZpZyIsImdldCIsInBsYW5zIiwiY3JlYXRlIiwiaW50ZXJ2YWxfY291bnQiLCJtZXRhZGF0YSIsInN0YXRlbWVudF9kZXNjcmlwdG9yIiwiYWRkU3Vic2NyaXB0aW9uIiwic3Vic2NyaXB0aW9uSWQiLCJ0YXgiLCJ0cmlhbEVuZCIsInRyaWFsUGVyaW9kIiwiZm9ybWF0UGxhbklkIiwiZm9ybWF0VGF4UGVyY2VudCIsImZvcm1hdFRyaWFsUGVyaW9kIiwiZm9ybWF0VHJpYWxFbmQiLCJEYXRlVGltZSIsImxvY2FsIiwicGx1cyIsImRheXMiLCJ0b01pbGxpcyIsInVzZXIiLCJjYW5jZWxEYXRlIiwic3Vic2NyaXB0aW9ucyIsImN1c3RvbWVyIiwic3RyaXBlQ3VzdG9tZXJJZCIsIml0ZW1zIiwidGF4X3BlcmNlbnQiLCJ0cmlhbF9lbmQiLCJkZWxldGVTdWJzY3JpcHRpb24iLCJlbmREYXRlIiwiZm9ybWF0RW5kRGF0ZSIsImRlbCIsInRyYW5zYWN0aW9uSWQiLCJzdHJpcGVSZXNwb25zZSIsImNhbmNlbGxlZCIsImNhbmNlbF9hdF9wZXJpb2RfZW5kIiwidXBkYXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBRUE7O0FBSUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGFBQXFCLEdBQUcsY0FBOUI7O0FBRU8sSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsT0FBRCxFQUFvRjtBQUFBLE1BQTlEQyxJQUE4RCx1RUFBL0MsQ0FBK0M7QUFBQSxNQUE1Q0MsRUFBNEMsdUVBQS9CLEVBQStCO0FBQzdHLE1BQU1DLE1BQWMsR0FBRyxTQUF2QjtBQUQ2RyxNQUV0R0MsUUFGc0csR0FFMUZKLE9BRjBGLENBRXRHSSxRQUZzRztBQUc3RyxNQUFNQyxLQUFvQixHQUFHLHNCQUFTSixJQUFULEVBQWVDLEVBQWYsQ0FBN0I7QUFDQSxNQUFNSSxNQUFjLG1DQUNkRCxLQUFLLENBQUNFLEdBRFEsMENBQXBCO0FBS0EsU0FBTyxtQkFBTUgsUUFBTixFQUFnQkksS0FBaEIsQ0FBc0JGLE1BQXRCLEVBQ0pHLElBREksQ0FDQyxVQUFDQyxNQUFEO0FBQUEsV0FBeUJBLE1BQU0sQ0FBQ0MsR0FBUCxFQUF6QjtBQUFBLEdBREQsRUFFSkYsSUFGSSxDQUVDO0FBQUEsUUFBQ0csSUFBRCx1RUFBUSxFQUFSO0FBQUEsV0FBZUEsSUFBZjtBQUFBLEdBRkQsRUFHSkMsS0FISSxDQUdFLFVBQUNDLEtBQUQ7QUFBQSxXQUFrQixzQkFBUztBQUNoQ1gsTUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ1ksTUFBQUEs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QVA7QUF3QkQsR0E1QkksQ0FBUDtBQTZCRCxDQW5DTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZCwgcGFyc2VOdW0sIHBhcnNlVmFyQ2hhcn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5pbXBvcnQge0RhdGVUaW1lfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgKiBhcyBzdHJpcGUgZnJvbSAnc3RyaXBlJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge0FyYW5nb0RCTGltaXR9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge1BheW1lbnRJbnRlcnZhbCwgUGF5bWVudFBsYW4sIFBheW1lbnRTdWJzY3JpcHRpb259IGZyb20gJy4uL3R5cGVzL3BheW1lbnRzJztcbmltcG9ydCB7Z2V0TGltaXQsIGxvZ0Vycm9yLCBsb2dFeGNlcHRpb24sIHVzZURifSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2dldFVzZXJ9IGZyb20gJy4vdXNlcnMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnc3Vic2NyaXB0aW9uJztcblxuZXhwb3J0IGNvbnN0IGdldFBsYW5MaXN0ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZyb206IG51bWJlciA9IDAsIHRvOiBudW1iZXIgPSAzMCk6IFByb21pc2U8UGF5bWVudFBsYW5bXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRMaXN0JztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgcCBJTiBwbGFuc1xuICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICBTT1JUIHAuYW1vdW50XG4gICAgICBSRVRVUk4gcGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigobGlzdCA9IFtdKSA9PiBsaXN0KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIHt9KS50aGVuKCgpID0+IG51bGwpLmNhdGNoKChlcnJvcikgPT4gUHJvbWlzZS5yZWplY3QoZXJyb3IpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3Vic2NyaXB0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPFBheW1lbnRTdWJzY3JpcHRpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIHMgSU4gc3Vic2NyaXB0aW9uc1xuICAgICAgRklMVEVSIHMudXNlcklkID09ICR7c2Vzc2lvbklkfSAmJiBzLmNhbmNlbGxlZCA+IDBcbiAgICAgIExFVCBwbGFuID0gRklSU1QoXG4gICAgICAgIEZPUiBwIElOIHBsYW5zXG4gICAgICAgIEZJTFRFUiBwLl9rZXkgPT0gcy5wbGFuSWRcbiAgICAgIClcbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiBNRVJHRShzLCB7cGxhbjogcGxhbn0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoc3Vic2NyaXB0aW9uID0ge30pID0+IHN1YnNjcmlwdGlvbilcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCB7fSkudGhlbigoKSA9PiBudWxsKS5jYXRjaCgoZXJyb3IpID0+IFByb21pc2UucmVqZWN0KGVycm9yKSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFBsYW4gPSAoY29udGV4dDogQXBpQ29udGV4dCwgaXRlbTogUGF5bWVudFBsYW4pOiBQcm9taXNlPFBheW1lbnRQbGFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFBsYW4nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkLCB1c2VyVHlwZX0gPSBjb250ZXh0O1xuICBjb25zdCBpc0FkbWluOiBib29sZWFuID0gdXNlclR5cGUgPiAyO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IGZvcm1hdElkOiBzdHJpbmcgPSBwYXJzZUlkKGl0ZW0uaWQpO1xuICBjb25zdCBwbGFuSWQ6IHN0cmluZyA9IGZvcm1hdElkID09PSAnJyA/IGNyZWF0ZUhhc2goYHRhZy0ke3Nlc3Npb25JZH1gKSA6IGZvcm1hdElkO1xuICBjb25zdCB7YW1vdW50LCBjdXJyZW5jeSA9ICdVU0QnLCBkZXNjcmlwdGlvbiwgaW50ZXJ2YWwsIGludGVydmFsQ291bnQsIG5hbWV9ID0gaXRlbTtcbiAgY29uc3QgZm9ybWF0QW1vdW50OiBudW1iZXIgPSBwYXJzZU51bShhbW91bnQpO1xuICBjb25zdCBmb3JtYXRJbnRlcnZhbDogUGF5bWVudEludGVydmFsID0gcGFyc2VDaGFyKGludGVydmFsLCA1KS50b0xvd2VyQ2FzZSgpIGFzIFBheW1lbnRJbnRlcnZhbDtcbiAgY29uc3QgZm9ybWF0SW50ZXJ2YWxDbnQ6IG51bWJlciA9IHBhcnNlTnVtKGludGVydmFsQ291bnQsIDUpO1xuICBjb25zdCBmb3JtYXROYW1lOiBzdHJpbmcgPSBwYXJzZVZhckNoYXIobmFtZSwgMzIpO1xuICBjb25zdCBmb3JtYXREZXNjOiBzdHJpbmcgPSBwYXJzZVZhckNoYXIoZGVzY3JpcHRpb24sIDMyKTtcblxuICBjb25zdCBpbnNlcnQ6IFBheW1lbnRQbGFuID0ge1xuICAgIF9rZXk6IHBsYW5JZCxcbiAgICBhZGRlZDogbm93LFxuICAgIGFtb3VudDogZm9ybWF0QW1vdW50LFxuICAgIGN1cnJlbmN5LFxuICAgIGRlc2NyaXB0aW9uOiBmb3JtYXREZXNjLFxuICAgIGludGVydmFsOiBmb3JtYXRJbnRlcnZhbCxcbiAgICBpbnRlcnZhbENvdW50OiBmb3JtYXRJbnRlcnZhbENudCxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIG5hbWU6IGZvcm1hdE5hbWVcbiAgfTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIHBsYW5zIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChwbGFuOiBQYXltZW50UGxhbiA9IHt9KSA9PiB7XG4gICAgICAvLyBTdHJpcGVcbiAgICAgIGNvbnN0IHN0cmlwZUNsaWVudCA9IHN0cmlwZShDb25maWcuZ2V0KCdzdHJpcGUudG9rZW4nKSk7XG4gICAgICByZXR1cm4gc3RyaXBlQ2xpZW50LnBsYW5zXG4gICAgICAgIC5jcmVhdGUoe1xuICAgICAgICAgIGFtb3VudDogZm9ybWF0QW1vdW50ICogMTAwLFxuICAgICAgICAgIGN1cnJlbmN5LFxuICAgICAgICAgIGlkOiBwbGFuSWQsXG4gICAgICAgICAgaW50ZXJ2YWw6IGZvcm1hdEludGVydmFsLFxuICAgICAgICAgIGludGVydmFsX2NvdW50OiBmb3JtYXRJbnRlcnZhbENudCxcbiAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICAgICAgICBzdGF0ZW1lbnRfZGVzY3JpcHRvcjogZm9ybWF0RGVzY1xuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiBwbGFuKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIHt9KS50aGVuKCgpID0+IG51bGwpLmNhdGNoKChlcnJvcikgPT4gUHJvbWlzZS5yZWplY3QoZXJyb3IpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkU3Vic2NyaXB0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW0pOiBQcm9taXNlPFBheW1lbnRTdWJzY3JpcHRpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkU3Vic2NyaXB0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZCwgdXNlclR5cGV9ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbjogYm9vbGVhbiA9IHVzZXJUeXBlID4gMjtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChpdGVtLmlkKTtcbiAgY29uc3Qgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZyA9IGZvcm1hdElkID09PSAnJyA/IGNyZWF0ZUhhc2goYHRhZy0ke3Nlc3Npb25JZH1gKSA6IGZvcm1hdElkO1xuICBjb25zdCB7cGxhbklkLCB0YXgsIHRyaWFsRW5kLCB0cmlhbFBlcmlvZH0gPSBpdGVtO1xuICBjb25zdCBmb3JtYXRQbGFuSWQ6IHN0cmluZyA9IHBhcnNlSWQocGxhbklkKTtcbiAgY29uc3QgZm9ybWF0VGF4UGVyY2VudDogbnVtYmVyID0gcGFyc2VOdW0odGF4KSB8fCAwO1xuICBjb25zdCBmb3JtYXRUcmlhbFBlcmlvZDogbnVtYmVyID0gcGFyc2VOdW0odGF4KSB8fCAwO1xuICBsZXQgZm9ybWF0VHJpYWxFbmQ6IG51bWJlciA9IHRyaWFsRW5kIHx8IERhdGUubm93KCk7XG5cbiAgaWYoZm9ybWF0VHJpYWxQZXJpb2QpIHtcbiAgICBmb3JtYXRUcmlhbEVuZCA9IERhdGVUaW1lLmxvY2FsKCkucGx1cyh7ZGF5czogdHJpYWxQZXJpb2R9KS50b01pbGxpcygpO1xuICB9XG5cbiAgcmV0dXJuIGdldFVzZXIoY29udGV4dCwgc2Vzc2lvbklkKVxuICAgIC50aGVuKCh1c2VyKSA9PiB7XG4gICAgICBjb25zdCBpbnNlcnQ6IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7XG4gICAgICAgIF9rZXk6IHN1YnNjcmlwdGlvbklkLFxuICAgICAgICBhZGRlZDogbm93LFxuICAgICAgICBjYW5jZWxEYXRlOiAwLFxuICAgICAgICBtb2RpZmllZDogbm93LFxuICAgICAgICBwbGFuSWQ6IGZvcm1hdFBsYW5JZCxcbiAgICAgICAgdGF4OiBmb3JtYXRUYXhQZXJjZW50LFxuICAgICAgICB0cmlhbEVuZDogZm9ybWF0VHJpYWxFbmQsXG4gICAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgICB9O1xuICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIHBsYW5zIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChzdWJzY3JpcHRpb246IFBheW1lbnRTdWJzY3JpcHRpb24gPSB7fSkgPT4ge1xuICAgICAgICAgIC8vIFN0cmlwZVxuICAgICAgICAgIGNvbnN0IHN0cmlwZUNsaWVudCA9IHN0cmlwZShDb25maWcuZ2V0KCdzdHJpcGUudG9rZW4nKSk7XG4gICAgICAgICAgcmV0dXJuIHN0cmlwZUNsaWVudC5zdWJzY3JpcHRpb25zXG4gICAgICAgICAgICAuY3JlYXRlKHtcbiAgICAgICAgICAgICAgY3VzdG9tZXI6IHVzZXIuc3RyaXBlQ3VzdG9tZXJJZCxcbiAgICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7cGxhbjogZm9ybWF0UGxhbklkfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRheF9wZXJjZW50OiBmb3JtYXRUYXhQZXJjZW50ICogMTAwLFxuICAgICAgICAgICAgICB0cmlhbF9lbmQ6IGZvcm1hdFRyaWFsRW5kXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICAgICAgfSwgZXJyb3IsIHt9KS50aGVuKCgpID0+IG51bGwpLmNhdGNoKChlcnJvcikgPT4gUHJvbWlzZS5yZWplY3QoZXJyb3IpKSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlU3Vic2NyaXB0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGVuZERhdGU6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVTdWJzY3JpcHRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCBmb3JtYXRFbmREYXRlOiBudW1iZXIgPSBwYXJzZU51bShlbmREYXRlKSB8fCBub3c7XG5cbiAgcmV0dXJuIGdldFN1YnNjcmlwdGlvbihjb250ZXh0KVxuICAgIC50aGVuKChzdWJzY3JpcHRpb24pID0+IHtcbiAgICAgIC8vIFN0cmlwZVxuICAgICAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gc3RyaXBlKENvbmZpZy5nZXQoJ3N0cmlwZS50b2tlbicpKTtcbiAgICAgIHJldHVybiBzdHJpcGVDbGllbnQuc3Vic2NyaXB0aW9uc1xuICAgICAgICAuZGVsKHN1YnNjcmlwdGlvbi50cmFuc2FjdGlvbklkLCB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uOiBmb3JtYXRFbmREYXRlXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChzdHJpcGVSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBjYW5jZWxsZWQgb24gU3RyaXBlIGJlZm9yZSB1cGRhdGluZyB0aGUgZGJcbiAgICAgICAgICBpZihzdHJpcGVSZXNwb25zZS5jYW5jZWxsZWQgfHwgc3RyaXBlUmVzcG9uc2UuY2FuY2VsX2F0X3BlcmlvZF9lbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZTogUGF5bWVudFN1YnNjcmlwdGlvbiA9IHtcbiAgICAgICAgICAgICAgY2FuY2VsRGF0ZTogZm9ybWF0RW5kRGF0ZSxcbiAgICAgICAgICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgICAgICAgICAgcGxhbklkOiAnJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFIHMgV0lUSCAke3VwZGF0ZX0gSU4gc3Vic2NyaXB0aW9uc2A7XG5cbiAgICAgICAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgICAgICAgICAgICB9LCBlcnJvciwge30pLnRoZW4oKCkgPT4gbnVsbCkuY2F0Y2goKGVycm9yKSA9PiBQcm9taXNlLnJlamVjdChlcnJvcikpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG4iXX0=
|