@nlabs/reaktor 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/package.json +14 -14
  2. package/lib/config.js +0 -139
  3. package/lib/data/conversations.js +0 -228
  4. package/lib/data/dynamodb.js +0 -172
  5. package/lib/data/email.js +0 -194
  6. package/lib/data/files.js +0 -463
  7. package/lib/data/groups.js +0 -401
  8. package/lib/data/images.js +0 -841
  9. package/lib/data/index.js +0 -234
  10. package/lib/data/ios.js +0 -327
  11. package/lib/data/locations.js +0 -148
  12. package/lib/data/messages.js +0 -281
  13. package/lib/data/notifications.js +0 -59
  14. package/lib/data/payments.js +0 -798
  15. package/lib/data/posts.js +0 -637
  16. package/lib/data/reactions.js +0 -243
  17. package/lib/data/s3.js +0 -133
  18. package/lib/data/search.js +0 -111
  19. package/lib/data/sms.js +0 -79
  20. package/lib/data/subscription.js +0 -311
  21. package/lib/data/tags.js +0 -343
  22. package/lib/data/users.js +0 -415
  23. package/lib/index.js +0 -42
  24. package/lib/types/apps.js +0 -2
  25. package/lib/types/arangodb.js +0 -2
  26. package/lib/types/auth.js +0 -2
  27. package/lib/types/conversations.js +0 -2
  28. package/lib/types/email.js +0 -2
  29. package/lib/types/files.js +0 -2
  30. package/lib/types/google.js +0 -2
  31. package/lib/types/groups.js +0 -2
  32. package/lib/types/images.js +0 -2
  33. package/lib/types/index.js +0 -210
  34. package/lib/types/locations.js +0 -2
  35. package/lib/types/messages.js +0 -2
  36. package/lib/types/notifications.js +0 -2
  37. package/lib/types/payments.js +0 -2
  38. package/lib/types/posts.js +0 -2
  39. package/lib/types/reactions.js +0 -2
  40. package/lib/types/tags.js +0 -2
  41. package/lib/types/users.js +0 -2
  42. package/lib/utils/analytics.js +0 -59
  43. package/lib/utils/arangodb.js +0 -131
  44. package/lib/utils/auth.js +0 -104
  45. package/lib/utils/graphql.js +0 -19
  46. package/lib/utils/index.js +0 -78
  47. package/lib/utils/objects.js +0 -54
  48. package/lib/utils/redis.js +0 -28
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/reaktor",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Reaktor",
5
5
  "main": "./index.js",
6
6
  "types": "./lib/index.d.js",
@@ -34,43 +34,43 @@
34
34
  "update": "lex update -i"
35
35
  },
36
36
  "dependencies": {
37
- "@nlabs/arkhamjs": "^3.11.11",
37
+ "@nlabs/arkhamjs": "^3.13.1",
38
38
  "@nlabs/rip-hunter": "^2.0.2",
39
39
  "@nlabs/utils": "^1.2.2",
40
40
  "apn": "^2.2.0",
41
- "arangojs": "^6.0.0",
42
- "aws-sdk": "^2.432.0",
43
- "file-type": "^10.9.0",
41
+ "arangojs": "^6.10.0",
42
+ "aws-sdk": "^2.436.0",
43
+ "file-type": "^10.10.0",
44
44
  "gm": "^1.23.1",
45
- "google-libphonenumber": "^3.0.10",
46
- "googleapis": "^39.1.0",
47
- "graphql": "^14.2.0",
45
+ "google-libphonenumber": "^3.2.2",
46
+ "googleapis": "^39.2.0",
47
+ "graphql": "^14.2.1",
48
48
  "graphql-errors": "^2.1.0",
49
49
  "graphql-fields": "^2.0.3",
50
50
  "hiredis": "^0.5.0",
51
- "lodash": "^4.17.4",
51
+ "lodash": "^4.17.11",
52
52
  "luxon": "^1.12.0",
53
53
  "node-yelp": "0.0.3",
54
54
  "numeral": "^2.0.6",
55
55
  "redis": "^2.8.0",
56
- "request-promise": "^4.2.2",
56
+ "request-promise": "^4.2.4",
57
57
  "stripe": "^6.28.0",
58
58
  "to": "^0.2.9",
59
59
  "twilio": "^3.30.0",
60
60
  "typed-promisify": "^0.4.0",
61
- "universal-analytics": "^0.4.16",
61
+ "universal-analytics": "^0.4.20",
62
62
  "update": "^0.7.4"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@types/graphql": "^14.2.0",
66
66
  "@types/history": "^4.6.2",
67
67
  "@types/jest": "^24.0.11",
68
- "@types/luxon": "^1.11.0",
69
- "@types/node": "^11.12.2",
68
+ "@types/luxon": "^1.12.0",
69
+ "@types/node": "^11.13.0",
70
70
  "@types/twilio": "^0.0.10",
71
71
  "eslint": "^5.16.0",
72
72
  "eslint-config-styleguidejs": "^1.0.10",
73
- "graphql-tools": "^4.0.0",
73
+ "graphql-tools": "^4.0.4",
74
74
  "source-map-loader": "^0.2.4",
75
75
  "typescript": "^3.4.1"
76
76
  }
package/lib/config.js DELETED
@@ -1,139 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Config = void 0;
7
-
8
- var _get2 = _interopRequireDefault(require("lodash/get"));
9
-
10
- var _merge = _interopRequireDefault(require("lodash/merge"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15
-
16
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
17
-
18
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
19
-
20
- 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; }
21
-
22
- var appPackage = require('../package.json');
23
-
24
- var _process$env = process.env,
25
- _process$env$arangodb = _process$env.arangodbDatabase,
26
- arangodbDatabase = _process$env$arangodb === void 0 ? 'reaktor' : _process$env$arangodb,
27
- arangodbPassword = _process$env.arangodbPassword,
28
- _process$env$arangodb2 = _process$env.arangodbPort,
29
- arangodbPort = _process$env$arangodb2 === void 0 ? '8529' : _process$env$arangodb2,
30
- _process$env$arangodb3 = _process$env.arangodbUrl,
31
- arangodbUrl = _process$env$arangodb3 === void 0 ? 'db.reaktor.io' : _process$env$arangodb3,
32
- _process$env$arangodb4 = _process$env.arangodbUsername,
33
- arangodbUsername = _process$env$arangodb4 === void 0 ? 'reaktor' : _process$env$arangodb4;
34
-
35
- var Config =
36
- /*#__PURE__*/
37
- function () {
38
- function Config() {
39
- _classCallCheck(this, Config);
40
- }
41
-
42
- _createClass(Config, null, [{
43
- key: "get",
44
- value: function get(path) {
45
- var environment = process.env.stage || 'dev';
46
- var configValues = (0, _merge.default)(this.values.default, this.values[environment], {
47
- environment: environment
48
- });
49
- return (0, _get2.default)(configValues, path);
50
- }
51
- }]);
52
-
53
- return Config;
54
- }();
55
-
56
- exports.Config = Config;
57
-
58
- _defineProperty(Config, "values", {
59
- default: {
60
- app: {
61
- name: 'reaktor',
62
- url: 'reaktor.io',
63
- version: appPackage.version
64
- },
65
- arangodb: {
66
- apiUrl: "".concat(arangodbUrl, ":").concat(arangodbPort),
67
- database: arangodbDatabase,
68
- dump: '/Applications/ArangoDB-CLI.app/Contents/MacOS/arangodump',
69
- password: arangodbPassword,
70
- port: arangodbPort,
71
- restore: '/Applications/ArangoDB-CLI.app/Contents/MacOS/arangorestore',
72
- url: arangodbUrl,
73
- username: arangodbUsername
74
- },
75
- aws: {
76
- Bucket: 'dev.reaktor.io',
77
- accessKeyId: 'AKIAJIYDT3EA2ZFMTJNA',
78
- maxRetries: 3,
79
- region: 'us-east-1',
80
- secretAccessKey: 'bUssQRtJTZC7geF9RDH5KCn8CalVnf2VT34yqS+9',
81
- signatureVersion: 'v4'
82
- },
83
- giphy: {
84
- key: 'dc6zaTOxFJmzC'
85
- },
86
- google: {
87
- analytics: {
88
- accountId: '78158717',
89
- trackingId: 'UA-78158717-1'
90
- },
91
- geocode: {
92
- key: 'AIzaSyBwjmpBjWhiJoBCZiYzRurM9m4WnCxslv0',
93
- url: 'https://maps.googleapis.com/maps/api/geocode/json'
94
- },
95
- key: 'AIzaSyC3_f2Us3y0qjbyMJ-4t5ObtCzfq_FHIgQ'
96
- },
97
- image: {
98
- imgQuality: 90,
99
- imgSize: 1500,
100
- thmQuality: 80,
101
- thmSize: 150
102
- },
103
- redis: {
104
- host: '127.0.0.1',
105
- port: 6379
106
- },
107
- stripe: {
108
- token: 'sk_test_LS956be57YUXTB5a4sLGb5BQ'
109
- },
110
- twilio: {
111
- number: '+15005550006',
112
- sid: 'AC6bd7f513cbed2e5134c650be06cc732e',
113
- token: '520ae739e761bab759b147f1ad28278f'
114
- }
115
- },
116
- dev: {},
117
- prod: {
118
- arangodb: {
119
- dump: '/usr/bin/arangodump',
120
- restore: '/usr/bin/arangorestore'
121
- },
122
- aws: {
123
- Bucket: 'box.reaktor.io'
124
- },
125
- redis: {
126
- host: 'reaktor-redis.ehcvnt.0001.use1.cache.amazonaws.com'
127
- },
128
- stripe: {
129
- token: 'sk_live_bElZl8RLhMCJy33KG4lyLD4o'
130
- },
131
- twilio: {
132
- number: '+18554165227',
133
- sid: 'AC90b0528a911e652d643329a4d7b4d2c7',
134
- token: 'a7941d173bd4846d0966a186e9865b72'
135
- }
136
- },
137
- test: {}
138
- });
139
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcudHMiXSwibmFtZXMiOlsiYXBwUGFja2FnZSIsInJlcXVpcmUiLCJwcm9jZXNzIiwiZW52IiwiYXJhbmdvZGJEYXRhYmFzZSIsImFyYW5nb2RiUGFzc3dvcmQiLCJhcmFuZ29kYlBvcnQiLCJhcmFuZ29kYlVybCIsImFyYW5nb2RiVXNlcm5hbWUiLCJDb25maWciLCJwYXRoIiwiZW52aXJvbm1lbnQiLCJzdGFnZSIsImNvbmZpZ1ZhbHVlcyIsInZhbHVlcyIsImRlZmF1bHQiLCJhcHAiLCJuYW1lIiwidXJsIiwidmVyc2lvbiIsImFyYW5nb2RiIiwiYXBpVXJsIiwiZGF0YWJhc2UiLCJkdW1wIiwicGFzc3dvcmQiLCJwb3J0IiwicmVzdG9yZSIsInVzZXJuYW1lIiwiYXdzIiwiQnVja2V0IiwiYWNjZXNzS2V5SWQiLCJtYXhSZXRyaWVzIiwicmVnaW9uIiwic2VjcmV0QWNjZXNzS2V5Iiwic2lnbmF0dXJlVmVyc2lvbiIsImdpcGh5Iiwia2V5IiwiZ29vZ2xlIiwiYW5hbHl0aWNzIiwiYWNjb3VudElkIiwidHJhY2tpbmdJZCIsImdlb2NvZGUiLCJpbWFnZSIsImltZ1F1YWxpdHkiLCJpbWdTaXplIiwidGhtUXVhbGl0eSIsInRobVNpemUiLCJyZWRpcyIsImhvc3QiLCJzdHJpcGUiLCJ0b2tlbiIsInR3aWxpbyIsIm51bWJlciIsInNpZCIsImRldiIsInByb2QiLCJ0ZXN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBQ0E7Ozs7Ozs7Ozs7OztBQXFCQSxJQUFNQSxVQUFlLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUEvQjs7bUJBUUlDLE9BQU8sQ0FBQ0MsRzt5Q0FMVkMsZ0I7SUFBQUEsZ0Isc0NBQW1CLFM7SUFDbkJDLGdCLGdCQUFBQSxnQjswQ0FDQUMsWTtJQUFBQSxZLHVDQUFlLE07MENBQ2ZDLFc7SUFBQUEsVyx1Q0FBYyxlOzBDQUNkQyxnQjtJQUFBQSxnQix1Q0FBbUIsUzs7SUFHUkMsTTs7Ozs7Ozs7O3dCQXFG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RUFBRTtBQURELEtBUkg7QUFXSkMsSUFBQUEsTUFBTSxFQUFFO0FBQ05DLE1BQUFBLEtBQUssRUFBRTtBQURELEtBWEo7QUFjSkMsSUFBQUEsTUFBTSxFQUFFO0FBQ05DLE1BQUFBLE1BQU0sRUFBRSxjQURGO0FBRU5DLE1BQUFBLEdBQUcsRUFBRSxvQ0FGQztBQUdOSCxNQUFBQSxLQUFLLEVBQUU7QUFIRDtBQWRKLEdBNURtQjtBQWdGekJNLEVBQUFBLElBQUksRUFBRTtBQWhGbUIsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnIHtcbiAgcmVhZG9ubHkgYXBwPzogb2JqZWN0O1xuICByZWFkb25seSBhcmFuZ29kYj86IG9iamVjdDtcbiAgcmVhZG9ubHkgYXdzPzogb2JqZWN0O1xuICByZWFkb25seSBnaXBoeT86IG9iamVjdDtcbiAgcmVhZG9ubHkgZ29vZ2xlPzogb2JqZWN0O1xuICByZWFkb25seSBpbWFnZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgcmVkaXM/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHN0cmlwZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgdHdpbGlvPzogb2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudkNvbmZpZyB7XG4gIHJlYWRvbmx5IGRlZmF1bHQ6IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgZGV2OiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IHByb2Q6IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgdGVzdDogQXBwQ29uZmlnO1xufVxuXG5jb25zdCBhcHBQYWNrYWdlOiBhbnkgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3Qge1xuICBhcmFuZ29kYkRhdGFiYXNlID0gJ3JlYWt0b3InLFxuICBhcmFuZ29kYlBhc3N3b3JkLFxuICBhcmFuZ29kYlBvcnQgPSAnODUyOScsXG4gIGFyYW5nb2RiVXJsID0gJ2RiLnJlYWt0b3IuaW8nLFxuICBhcmFuZ29kYlVzZXJuYW1lID0gJ3JlYWt0b3InXG59ID0gcHJvY2Vzcy5lbnY7XG5cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBzdGF0aWMgdmFsdWVzOiBFbnZDb25maWcgPSB7XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXBwOiB7XG4gICAgICAgIG5hbWU6ICdyZWFrdG9yJyxcbiAgICAgICAgdXJsOiAncmVha3Rvci5pbycsXG4gICAgICAgIHZlcnNpb246IGFwcFBhY2thZ2UudmVyc2lvblxuICAgICAgfSxcbiAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgIGFwaVVybDogYCR7YXJhbmdvZGJVcmx9OiR7YXJhbmdvZGJQb3J0fWAsXG4gICAgICAgIGRhdGFiYXNlOiBhcmFuZ29kYkRhdGFiYXNlLFxuICAgICAgICBkdW1wOiAnL0FwcGxpY2F0aW9ucy9BcmFuZ29EQi1DTEkuYXBwL0NvbnRlbnRzL01hY09TL2FyYW5nb2R1bXAnLFxuICAgICAgICBwYXNzd29yZDogYXJhbmdvZGJQYXNzd29yZCxcbiAgICAgICAgcG9ydDogYXJhbmdvZGJQb3J0LFxuICAgICAgICByZXN0b3JlOiAnL0FwcGxpY2F0aW9ucy9BcmFuZ29EQi1DTEkuYXBwL0NvbnRlbnRzL01hY09TL2FyYW5nb3Jlc3RvcmUnLFxuICAgICAgICB1cmw6IGFyYW5nb2RiVXJsLFxuICAgICAgICB1c2VybmFtZTogYXJhbmdvZGJVc2VybmFtZVxuICAgICAgfSxcbiAgICAgIGF3czoge1xuICAgICAgICBCdWNrZXQ6ICdkZXYucmVha3Rvci5pbycsXG4gICAgICAgIGFjY2Vzc0tleUlkOiAnQUtJQUpJWURUM0VBMlpGTVRKTkEnLFxuICAgICAgICBtYXhSZXRyaWVzOiAzLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6ICdiVXNzUVJ0SlRaQzdnZUY5UkRINUtDbjhDYWxWbmYyVlQzNHlxUys5JyxcbiAgICAgICAgc2lnbmF0dXJlVmVyc2lvbjogJ3Y0J1xuICAgICAgfSxcbiAgICAgIGdpcGh5OiB7XG4gICAgICAgIGtleTogJ2RjNnphVE94RkptekMnXG4gICAgICB9LFxuICAgICAgZ29vZ2xlOiB7XG4gICAgICAgIGFuYWx5dGljczoge1xuICAgICAgICAgIGFjY291bnRJZDogJzc4MTU4NzE3JyxcbiAgICAgICAgICB0cmFja2luZ0lkOiAnVUEtNzgxNTg3MTctMSdcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvY29kZToge1xuICAgICAgICAgIGtleTogJ0FJemFTeUJ3am1wQmpXaGlKb0JDWmlZelJ1ck05bTRXbkN4c2x2MCcsXG4gICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2dlb2NvZGUvanNvbidcbiAgICAgICAgfSxcbiAgICAgICAga2V5OiAnQUl6YVN5QzNfZjJVczN5MHFqYnlNSi00dDVPYnRDemZxX0ZISWdRJ1xuICAgICAgfSxcbiAgICAgIGltYWdlOiB7XG4gICAgICAgIGltZ1F1YWxpdHk6IDkwLFxuICAgICAgICBpbWdTaXplOiAxNTAwLFxuICAgICAgICB0aG1RdWFsaXR5OiA4MCxcbiAgICAgICAgdGhtU2l6ZTogMTUwXG4gICAgICB9LFxuICAgICAgcmVkaXM6IHtcbiAgICAgICAgaG9zdDogJzEyNy4wLjAuMScsXG4gICAgICAgIHBvcnQ6IDYzNzlcbiAgICAgIH0sXG4gICAgICBzdHJpcGU6IHtcbiAgICAgICAgdG9rZW46ICdza190ZXN0X0xTOTU2YmU1N1lVWFRCNWE0c0xHYjVCUSdcbiAgICAgIH0sXG4gICAgICB0d2lsaW86IHtcbiAgICAgICAgbnVtYmVyOiAnKzE1MDA1NTUwMDA2JyxcbiAgICAgICAgc2lkOiAnQUM2YmQ3ZjUxM2NiZWQyZTUxMzRjNjUwYmUwNmNjNzMyZScsXG4gICAgICAgIHRva2VuOiAnNTIwYWU3MzllNzYxYmFiNzU5YjE0N2YxYWQyODI3OGYnXG4gICAgICB9XG4gICAgfSxcbiAgICBkZXY6IHtcbiAgICB9LFxuICAgIHByb2Q6IHtcbiAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgIGR1bXA6ICcvdXNyL2Jpbi9hcmFuZ29kdW1wJyxcbiAgICAgICAgcmVzdG9yZTogJy91c3IvYmluL2FyYW5nb3Jlc3RvcmUnXG4gICAgICB9LFxuICAgICAgYXdzOiB7XG4gICAgICAgIEJ1Y2tldDogJ2JveC5yZWFrdG9yLmlvJ1xuICAgICAgfSxcbiAgICAgIHJlZGlzOiB7XG4gICAgICAgIGhvc3Q6ICdyZWFrdG9yLXJlZGlzLmVoY3ZudC4wMDAxLnVzZTEuY2FjaGUuYW1hem9uYXdzLmNvbSdcbiAgICAgIH0sXG4gICAgICBzdHJpcGU6IHtcbiAgICAgICAgdG9rZW46ICdza19saXZlX2JFbFpsOFJMaE1DSnkzM0tHNGx5TEQ0bydcbiAgICAgIH0sXG4gICAgICB0d2lsaW86IHtcbiAgICAgICAgbnVtYmVyOiAnKzE4NTU0MTY1MjI3JyxcbiAgICAgICAgc2lkOiAnQUM5MGIwNTI4YTkxMWU2NTJkNjQzMzI5YTRkN2I0ZDJjNycsXG4gICAgICAgIHRva2VuOiAnYTc5NDFkMTczYmQ0ODQ2ZDA5NjZhMTg2ZTk4NjViNzInXG4gICAgICB9XG4gICAgfSxcbiAgICB0ZXN0OiB7XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBnZXQocGF0aDogc3RyaW5nIHwgc3RyaW5nW10pOiBhbnkge1xuICAgIGNvbnN0IGVudmlyb25tZW50OiBzdHJpbmcgPSBwcm9jZXNzLmVudi5zdGFnZSB8fCAnZGV2JztcbiAgICBjb25zdCBjb25maWdWYWx1ZXM6IG9iamVjdCA9IG1lcmdlKHRoaXMudmFsdWVzLmRlZmF1bHQsIHRoaXMudmFsdWVzW2Vudmlyb25tZW50XSwge2Vudmlyb25tZW50fSk7XG4gICAgcmV0dXJuIGdldChjb25maWdWYWx1ZXMsIHBhdGgpO1xuICB9XG59XG4iXX0=
@@ -1,228 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.updateConversation = exports.getConversation = exports.getDirectConversation = exports.getConversationList = void 0;
7
-
8
- var _utils = require("@nlabs/utils");
9
-
10
- var _arangojs = require("arangojs");
11
-
12
- var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
13
-
14
- var _identity = _interopRequireDefault(require("lodash/identity"));
15
-
16
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
17
-
18
- var _pick2 = _interopRequireDefault(require("lodash/pick"));
19
-
20
- var _utils2 = require("../utils");
21
-
22
- var _analytics = require("../utils/analytics");
23
-
24
- var _images = require("./images");
25
-
26
- var _users = require("./users");
27
-
28
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
- function _templateObject3() {
31
- var data = _taggedTemplateLiteral(["UPSERT {_key: ", "}\n INSERT ", "\n UPDATE ", "\n IN conversations RETURN NEW"]);
32
-
33
- _templateObject3 = function _templateObject3() {
34
- return data;
35
- };
36
-
37
- return data;
38
- }
39
-
40
- function _templateObject2() {
41
- var data = _taggedTemplateLiteral(["FOR c IN conversations\n FILTER c._key == ", " && IS_LIST(c.users) && POSITION(c.users, ", ", false)\n LET u = (\n FOR g IN c.users\n FOR u IN users\n FILTER g == u._key\n RETURN {_key:u._key, first:u.first, last:u.last, name:u.name, email:u.email, username:u.username, photo:u.photo }\n )\n FILTER LENGTH(u) > 1\n LIMIT 1\n RETURN MERGE(c, {users: u})"]);
42
-
43
- _templateObject2 = function _templateObject2() {
44
- return data;
45
- };
46
-
47
- return data;
48
- }
49
-
50
- 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; }
51
-
52
- 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; }
53
-
54
- function _templateObject() {
55
- var data = _taggedTemplateLiteral(["FOR c IN conversations\n FILTER LENGTH(c.users) == 2 &&\n POSITION(c.users, ", ", false) &&\n POSITION(c.users, ", ", false)\n LET u = (\n FOR g IN c.users\n FOR user IN users\n FILTER user._key == g\n RETURN user\n )\n LIMIT 1\n RETURN MERGE(c, {users: u})"]);
56
-
57
- _templateObject = function _templateObject() {
58
- return data;
59
- };
60
-
61
- return data;
62
- }
63
-
64
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
65
-
66
- /**
67
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
68
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
69
- */
70
- var eventCategory = 'conversations';
71
-
72
- var getConversationList = function getConversationList(context, from, to) {
73
- var action = 'getList';
74
- var database = context.database,
75
- sessionId = context.userId;
76
- var limit = (0, _utils2.getLimit)(from, to);
77
- var aqlQry = "FOR c IN conversations\n FILTER POSITION(c.users, \"".concat(sessionId, "\", false)\n LET u = (\n FOR g IN c.users\n FOR u IN users\n FILTER g == u._key\n RETURN {_key:u._key, first:u.first, last:u.last, name:u.name, email:u.email, username:u.username, photo:u.photo }\n )\n FILTER LENGTH(u) > 1\n ").concat(limit.aql, "\n RETURN {_key:c._key, name: c.name, direct: c.direct, users: u}");
78
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
79
- return cursor.all();
80
- }).catch(function (error) {
81
- return (0, _analytics.logError)({
82
- action: action,
83
- category: eventCategory,
84
- label: 'db_error'
85
- }, error, context).then(function () {
86
- return null;
87
- });
88
- });
89
- };
90
-
91
- exports.getConversationList = getConversationList;
92
-
93
- var getDirectConversation = function getDirectConversation(context, userId) {
94
- var action = 'getDirect';
95
- var database = context.database,
96
- sessionId = context.userId;
97
- var formatUserId = (0, _utils.parseId)(userId);
98
- var aqlQry = (0, _arangojs.aql)(_templateObject(), sessionId, formatUserId);
99
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
100
- return cursor.next();
101
- }).then(function () {
102
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
103
- var _conversation$users = conversation.users,
104
- users = _conversation$users === void 0 ? [] : _conversation$users;
105
-
106
- if (users.length) {
107
- conversation.users = users.map(function (user) {
108
- var userKey = user._key,
109
- imgId = user.imgId;
110
- var thumbUrlData = {
111
- directory: 'images',
112
- imgId: imgId,
113
- isThumb: true,
114
- type: 'users',
115
- typeId: userKey
116
- };
117
- return _objectSpread({}, user, {
118
- name: (0, _users.getDisplayName)(user),
119
- thumb: (0, _images.getUrlImages)(thumbUrlData)
120
- });
121
- });
122
- }
123
-
124
- return conversation;
125
- }).catch(function (error) {
126
- return (0, _analytics.logError)({
127
- action: action,
128
- category: eventCategory,
129
- label: 'db_error'
130
- }, error, context).then(function () {
131
- return null;
132
- });
133
- });
134
- };
135
-
136
- exports.getDirectConversation = getDirectConversation;
137
-
138
- var getConversation = function getConversation(context, convoId) {
139
- var action = 'getItem';
140
- var database = context.database,
141
- sessionId = context.userId;
142
- var formatConvoId = (0, _utils.parseId)(convoId);
143
- var aqlQry = (0, _arangojs.aql)(_templateObject2(), formatConvoId, sessionId);
144
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
145
- return cursor.next();
146
- }).then(function () {
147
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
148
-
149
- if (!(0, _isEmpty.default)(conversation)) {
150
- conversation.users = conversation.users.map(function (user) {
151
- var userKey = user._key,
152
- imgId = user.imgId;
153
- var thumbUrlData = {
154
- directory: 'images',
155
- imgId: imgId,
156
- isThumb: true,
157
- type: 'users',
158
- typeId: userKey
159
- };
160
- return _objectSpread({}, user, {
161
- name: (0, _users.getDisplayName)(user),
162
- thumb: (0, _images.getUrlImages)(thumbUrlData)
163
- });
164
- });
165
- return conversation;
166
- }
167
-
168
- return {};
169
- }).catch(function (error) {
170
- return (0, _analytics.logError)({
171
- action: action,
172
- category: eventCategory,
173
- label: 'db_error'
174
- }, error, context).then(function () {
175
- return null;
176
- });
177
- });
178
- };
179
-
180
- exports.getConversation = getConversation;
181
-
182
- var updateConversation = function updateConversation(context, item) {
183
- var action = 'update';
184
- var database = context.database,
185
- sessionId = context.userId;
186
-
187
- var _pick = (0, _pick2.default)(item, _identity.default),
188
- direct = _pick.direct,
189
- id = _pick.id,
190
- name = _pick.name,
191
- users = _pick.users;
192
-
193
- var rcpt = users || [];
194
- var formatId = item.id || (0, _utils.createHash)("convo-".concat(sessionId, "-").concat(rcpt.join('')));
195
- var now = Date.now();
196
- var update = {
197
- // Direct message
198
- direct: !!direct ? direct : undefined,
199
- modified: now,
200
- name: !!name ? name : undefined,
201
- // Users
202
- users: !!users ? users : undefined
203
- };
204
-
205
- var insert = _objectSpread({}, (0, _cloneDeep.default)(update), {
206
- _key: formatId,
207
- added: now
208
- });
209
-
210
- var aqlQry = (0, _arangojs.aql)(_templateObject3(), id, insert, update);
211
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
212
- return cursor.next();
213
- }).then(function () {
214
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
215
- return conversation;
216
- }).catch(function (error) {
217
- return (0, _analytics.logError)({
218
- action: action,
219
- category: eventCategory,
220
- label: 'db_error'
221
- }, error, context).then(function () {
222
- return null;
223
- });
224
- });
225
- };
226
-
227
- exports.updateConversation = updateConversation;
228
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2NvbnZlcnNhdGlvbnMudHMiXSwibmFtZXMiOlsiZXZlbnRDYXRlZ29yeSIsImdldENvbnZlcnNhdGlvbkxpc3QiLCJjb250ZXh0IiwiZnJvbSIsInRvIiwiYWN0aW9uIiwiZGF0YWJhc2UiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJsaW1pdCIsImFxbFFyeSIsImFxbCIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsImFsbCIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiZ2V0RGlyZWN0Q29udmVyc2F0aW9uIiwiZm9ybWF0VXNlcklkIiwibmV4dCIsImNvbnZlcnNhdGlvbiIsInVzZXJzIiwibGVuZ3RoIiwibWFwIiwidXNlciIsInVzZXJLZXkiLCJfa2V5IiwiaW1nSWQiLCJ0aHVtYlVybERhdGEiLCJkaXJlY3RvcnkiLCJpc1RodW1iIiwidHlwZSIsInR5cGVJZCIsIm5hbWUiLCJ0aHVtYiIsImdldENvbnZlcnNhdGlvbiIsImNvbnZvSWQiLCJmb3JtYXRDb252b0lkIiwidXBkYXRlQ29udmVyc2F0aW9uIiwiaXRlbSIsImlkZW50aXR5IiwiZGlyZWN0IiwiaWQiLCJyY3B0IiwiZm9ybWF0SWQiLCJqb2luIiwibm93IiwiRGF0ZSIsInVwZGF0ZSIsInVuZGVmaW5lZCIsIm1vZGlmaWVkIiwiaW5zZXJ0IiwiYWRkZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOzs7O0FBSUEsSUFBTUEsYUFBcUIsR0FBRyxlQUE5Qjs7QUFFTyxJQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBQUNDLE9BQUQsRUFBc0JDLElBQXRCLEVBQW9DQyxFQUFwQyxFQUFnRjtBQUNqSCxNQUFNQyxNQUFjLEdBQUcsU0FBdkI7QUFEaUgsTUFFMUdD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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvYXFsLXF1ZXJ5JztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvY3Vyc29yJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSAnbG9kYXNoL2lkZW50aXR5JztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC9waWNrJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAndHlwZXMvYXV0aCc7XG5cbmltcG9ydCB7QXJhbmdvREJMaW1pdCwgQ29udmVyc2F0aW9uVHlwZSwgSW1hZ2VVcmxEYXRhLCBVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRMaW1pdCwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljcyc7XG5pbXBvcnQge2dldFVybEltYWdlc30gZnJvbSAnLi9pbWFnZXMnO1xuaW1wb3J0IHtnZXREaXNwbGF5TmFtZX0gZnJvbSAnLi91c2Vycyc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnY29udmVyc2F0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBnZXRDb252ZXJzYXRpb25MaXN0ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldExpc3QnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgYyBJTiBjb252ZXJzYXRpb25zXG4gICAgRklMVEVSIFBPU0lUSU9OKGMudXNlcnMsIFwiJHtzZXNzaW9uSWR9XCIsIGZhbHNlKVxuICAgIExFVCB1ID0gKFxuICAgICAgRk9SIGcgSU4gYy51c2Vyc1xuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiBnID09IHUuX2tleVxuICAgICAgUkVUVVJOIHtfa2V5OnUuX2tleSwgZmlyc3Q6dS5maXJzdCwgbGFzdDp1Lmxhc3QsIG5hbWU6dS5uYW1lLCBlbWFpbDp1LmVtYWlsLCB1c2VybmFtZTp1LnVzZXJuYW1lLCBwaG90bzp1LnBob3RvIH1cbiAgICApXG4gICAgRklMVEVSIExFTkdUSCh1KSA+IDFcbiAgICAke2xpbWl0LmFxbH1cbiAgICBSRVRVUk4ge19rZXk6Yy5fa2V5LCBuYW1lOiBjLm5hbWUsIGRpcmVjdDogYy5kaXJlY3QsIHVzZXJzOiB1fWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXJlY3RDb252ZXJzYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0RGlyZWN0JztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRVc2VySWQ6IHN0cmluZyA9IHBhcnNlSWQodXNlcklkKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBjIElOIGNvbnZlcnNhdGlvbnNcbiAgICBGSUxURVIgTEVOR1RIKGMudXNlcnMpID09IDIgJiZcbiAgICBQT1NJVElPTihjLnVzZXJzLCAke3Nlc3Npb25JZH0sIGZhbHNlKSAmJlxuICAgIFBPU0lUSU9OKGMudXNlcnMsICR7Zm9ybWF0VXNlcklkfSwgZmFsc2UpXG4gICAgTEVUIHUgPSAoXG4gICAgICBGT1IgZyBJTiBjLnVzZXJzXG4gICAgICBGT1IgdXNlciBJTiB1c2Vyc1xuICAgICAgRklMVEVSIHVzZXIuX2tleSA9PSBnXG4gICAgICBSRVRVUk4gdXNlclxuICAgIClcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIE1FUkdFKGMsIHt1c2VyczogdX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlID0ge30pID0+IHtcbiAgICAgIGNvbnN0IHt1c2VycyA9IFtdfSA9IGNvbnZlcnNhdGlvbjtcblxuICAgICAgaWYodXNlcnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnZlcnNhdGlvbi51c2VycyA9IHVzZXJzLm1hcCgodXNlcjogVXNlclR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCB7X2tleTogdXNlcktleSwgaW1nSWR9ID0gdXNlcjtcbiAgICAgICAgICBjb25zdCB0aHVtYlVybERhdGE6IEltYWdlVXJsRGF0YSA9IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogJ2ltYWdlcycsXG4gICAgICAgICAgICBpbWdJZCxcbiAgICAgICAgICAgIGlzVGh1bWI6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiAndXNlcnMnLFxuICAgICAgICAgICAgdHlwZUlkOiB1c2VyS2V5XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgIG5hbWU6IGdldERpc3BsYXlOYW1lKHVzZXIpLFxuICAgICAgICAgICAgdGh1bWI6IGdldFVybEltYWdlcyh0aHVtYlVybERhdGEpXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb252ZXJzYXRpb247XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb252ZXJzYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgY29udm9JZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdENvbnZvSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udm9JZCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgYyBJTiBjb252ZXJzYXRpb25zXG4gICAgRklMVEVSIGMuX2tleSA9PSAke2Zvcm1hdENvbnZvSWR9ICYmIElTX0xJU1QoYy51c2VycykgJiYgUE9TSVRJT04oYy51c2VycywgJHtzZXNzaW9uSWR9LCBmYWxzZSlcbiAgICBMRVQgdSA9IChcbiAgICAgIEZPUiBnIElOIGMudXNlcnNcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgZyA9PSB1Ll9rZXlcbiAgICAgIFJFVFVSTiB7X2tleTp1Ll9rZXksIGZpcnN0OnUuZmlyc3QsIGxhc3Q6dS5sYXN0LCBuYW1lOnUubmFtZSwgZW1haWw6dS5lbWFpbCwgdXNlcm5hbWU6dS51c2VybmFtZSwgcGhvdG86dS5waG90byB9XG4gICAgKVxuICAgIEZJTFRFUiBMRU5HVEgodSkgPiAxXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBNRVJHRShjLCB7dXNlcnM6IHV9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSA9IHt9KSA9PiB7XG4gICAgICBpZighaXNFbXB0eShjb252ZXJzYXRpb24pKSB7XG4gICAgICAgIGNvbnZlcnNhdGlvbi51c2VycyA9IGNvbnZlcnNhdGlvbi51c2Vycy5tYXAoKHVzZXI6IFVzZXJUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3Qge19rZXk6IHVzZXJLZXksIGltZ0lkfSA9IHVzZXI7XG4gICAgICAgICAgY29uc3QgdGh1bWJVcmxEYXRhOiBJbWFnZVVybERhdGEgPSB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6ICdpbWFnZXMnLFxuICAgICAgICAgICAgaW1nSWQsXG4gICAgICAgICAgICBpc1RodW1iOiB0cnVlLFxuICAgICAgICAgICAgdHlwZTogJ3VzZXJzJyxcbiAgICAgICAgICAgIHR5cGVJZDogdXNlcktleVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgICBuYW1lOiBnZXREaXNwbGF5TmFtZSh1c2VyKSxcbiAgICAgICAgICAgIHRodW1iOiBnZXRVcmxJbWFnZXModGh1bWJVcmxEYXRhKVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb252ZXJzYXRpb247XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVDb252ZXJzYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgaXRlbSk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGUnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtkaXJlY3QsIGlkLCBuYW1lLCB1c2Vyc30gPSBwaWNrKGl0ZW0sIGlkZW50aXR5KTtcbiAgY29uc3QgcmNwdDogVXNlclR5cGVbXSA9IHVzZXJzIHx8IFtdO1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gaXRlbS5pZCB8fCBjcmVhdGVIYXNoKGBjb252by0ke3Nlc3Npb25JZH0tJHtyY3B0LmpvaW4oJycpfWApO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IHVwZGF0ZTogYW55ID0ge1xuICAgIC8vIERpcmVjdCBtZXNzYWdlXG4gICAgZGlyZWN0OiAhIWRpcmVjdCA/IGRpcmVjdCA6IHVuZGVmaW5lZCxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIG5hbWU6ICEhbmFtZSA/IG5hbWUgOiB1bmRlZmluZWQsXG4gICAgLy8gVXNlcnNcbiAgICB1c2VyczogISF1c2VycyA/IHVzZXJzIDogdW5kZWZpbmVkXG4gIH07XG5cbiAgY29uc3QgaW5zZXJ0OiBhbnkgPSB7XG4gICAgLi4uY2xvbmVEZWVwKHVwZGF0ZSksXG4gICAgX2tleTogZm9ybWF0SWQsXG4gICAgYWRkZWQ6IG5vd1xuICB9O1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtfa2V5OiAke2lkfX1cbiAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgVVBEQVRFICR7dXBkYXRlfVxuICAgIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSA9IHt9KSA9PiBjb252ZXJzYXRpb24pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuIl19
@@ -1,172 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.parseDynamo = exports.dynamoDel = exports.dynamoPutList = exports.dynamoUpdate = exports.dynamoPut = exports.dynamoGetList = exports.dynamoGet = void 0;
7
-
8
- var _awsSdk = _interopRequireWildcard(require("aws-sdk"));
9
-
10
- var _config = require("../config");
11
-
12
- 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; } }
13
-
14
- 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; }
15
-
16
- 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; }
17
-
18
- // const eventCategory: string = 'dynamodb';
19
- var dynamoGet = function dynamoGet(params) {
20
- return new Promise(function (resolve, reject) {
21
- _awsSdk.default.config.update(_config.Config.get('aws'));
22
-
23
- var dynamodb = new _awsSdk.DynamoDB();
24
- params.ConsistentRead = false;
25
- dynamodb.getItem(params, function (error, results) {
26
- if (error) {
27
- return reject(error);
28
- }
29
-
30
- return resolve(results);
31
- });
32
- });
33
- };
34
-
35
- exports.dynamoGet = dynamoGet;
36
-
37
- var dynamoGetList = function dynamoGetList(params, index) {
38
- return new Promise(function (resolve, reject) {
39
- _awsSdk.default.config.update(_config.Config.get('aws'));
40
-
41
- var dynamodb = new _awsSdk.DynamoDB();
42
- var consistentRead = params.ConsistentRead;
43
-
44
- var updatedParams = _objectSpread({}, params);
45
-
46
- if (index) {
47
- updatedParams.ExclusiveStartKey = index;
48
- }
49
-
50
- if (!consistentRead) {
51
- updatedParams.ConsistentRead = false;
52
- }
53
-
54
- dynamodb.query(updatedParams, function (error, output) {
55
- if (error) {
56
- return reject(error);
57
- } // Save list of items
58
-
59
-
60
- var list = parseDynamo(output);
61
- var lastKey = output.LastEvaluatedKey;
62
-
63
- if (lastKey !== undefined) {
64
- // Save last index before looping
65
- return dynamoGetList(params, lastKey);
66
- } // Query complete, return final list
67
-
68
-
69
- return resolve(list);
70
- });
71
- });
72
- };
73
-
74
- exports.dynamoGetList = dynamoGetList;
75
-
76
- var dynamoPut = function dynamoPut(params) {
77
- return new Promise(function (resolve, reject) {
78
- _awsSdk.default.config.update(_config.Config.get('aws'));
79
-
80
- var dynamodb = new _awsSdk.DynamoDB();
81
- dynamodb.putItem(params, function (error, output) {
82
- if (error) {
83
- return reject(error);
84
- }
85
-
86
- return resolve(output);
87
- });
88
- });
89
- };
90
-
91
- exports.dynamoPut = dynamoPut;
92
-
93
- var dynamoUpdate = function dynamoUpdate(params) {
94
- return new Promise(function (resolve, reject) {
95
- _awsSdk.default.config.update(_config.Config.get('aws'));
96
-
97
- var dynamodb = new _awsSdk.DynamoDB();
98
- dynamodb.updateItem(params, function (error, output) {
99
- if (error) {
100
- return reject(error);
101
- }
102
-
103
- return resolve(output);
104
- });
105
- });
106
- };
107
-
108
- exports.dynamoUpdate = dynamoUpdate;
109
-
110
- var dynamoPutList = function dynamoPutList(params) {
111
- return new Promise(function (resolve, reject) {
112
- _awsSdk.default.config.update(_config.Config.get('aws'));
113
-
114
- var dynamodb = new _awsSdk.DynamoDB();
115
- dynamodb.batchWriteItem(params, function (error, output) {
116
- if (error) {
117
- return reject(error);
118
- }
119
-
120
- return resolve(output);
121
- });
122
- });
123
- };
124
-
125
- exports.dynamoPutList = dynamoPutList;
126
-
127
- var dynamoDel = function dynamoDel(params) {
128
- return new Promise(function (resolve, reject) {
129
- _awsSdk.default.config.update(_config.Config.get('aws'));
130
-
131
- var dynamodb = new _awsSdk.DynamoDB();
132
- dynamodb.deleteItem(params, function (error, output) {
133
- if (error) {
134
- return reject(error);
135
- }
136
-
137
- return resolve(output);
138
- });
139
- });
140
- };
141
-
142
- exports.dynamoDel = dynamoDel;
143
-
144
- var parseDynamo = function parseDynamo(results) {
145
- var items = results.Items;
146
- var data = [];
147
-
148
- for (var idx = 0, len = items.length; idx < len; idx++) {
149
- var tmp = items[idx];
150
- var obj = {};
151
- var key = void 0;
152
-
153
- for (key in tmp) {
154
- if (tmp.hasOwnProperty(key)) {
155
- if (tmp[key].S) {
156
- obj[key] = tmp[key].S.toString();
157
- } else if (tmp[key].N) {
158
- obj[key] = parseFloat(tmp[key].N);
159
- } else {
160
- obj[key] = tmp[key].B;
161
- }
162
- }
163
- }
164
-
165
- data.push(obj);
166
- }
167
-
168
- return data;
169
- };
170
-
171
- exports.parseDynamo = parseDynamo;
172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2R5bmFtb2RiLnRzIl0sIm5hbWVzIjpbImR5bmFtb0dldCIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYXdzIiwiY29uZmlnIiwidXBkYXRlIiwiQ29uZmlnIiwiZ2V0IiwiZHluYW1vZGIiLCJEeW5hbW9EQiIsIkNvbnNpc3RlbnRSZWFkIiwiZ2V0SXRlbSIsImVycm9yIiwicmVzdWx0cyIsImR5bmFtb0dldExpc3QiLCJpbmRleCIsImNvbnNpc3RlbnRSZWFkIiwidXBkYXRlZFBhcmFtcyIsIkV4Y2x1c2l2ZVN0YXJ0S2V5IiwicXVlcnkiLCJvdXRwdXQiLCJsaXN0IiwicGFyc2VEeW5hbW8iLCJsYXN0S2V5IiwiTGFzdEV2YWx1YXRlZEtleSIsInVuZGVmaW5lZCIsImR5bmFtb1B1dCIsInB1dEl0ZW0iLCJkeW5hbW9VcGRhdGUiLCJ1cGRhdGVJdGVtIiwiZHluYW1vUHV0TGlzdCIsImJhdGNoV3JpdGVJdGVtIiwiZHluYW1vRGVsIiwiZGVsZXRlSXRlbSIsIml0ZW1zIiwiSXRlbXMiLCJkYXRhIiwiaWR4IiwibGVuIiwibGVuZ3RoIiwidG1wIiwib2JqIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJTIiwidG9TdHJpbmciLCJOIiwicGFyc2VGbG9hdCIsIkIiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBZ0JBOzs7Ozs7OztBQUVBO0FBRU8sSUFBTUEsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsTUFBRCxFQUFrRDtBQUN6RSxTQUFPLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdENDLG9CQUFJQyxNQUFKLENBQVdDLE1BQVgsQ0FBa0JDLGVBQU9DLEdBQVAsQ0FBVyxLQUFYLENBQWxCOztBQUNBLFFBQU1DLFFBQWtCLEdBQUcsSUFBSUMsZ0JBQUosRUFBM0I7QUFDQVYsSUFBQUEsTUFBTSxDQUFDVyxjQUFQLEdBQXdCLEtBQXhCO0FB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QU9MLElBQVA7QUFDRCxDQXpCTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYXdzLCB7RHluYW1vREJ9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHtcbiAgQmF0Y2hXcml0ZUl0ZW1JbnB1dCxcbiAgQmF0Y2hXcml0ZUl0ZW1PdXRwdXQsXG4gIERlbGV0ZUl0ZW1JbnB1dCxcbiAgRGVsZXRlSXRlbU91dHB1dCxcbiAgR2V0SXRlbUlucHV0LFxuICBHZXRJdGVtT3V0cHV0LFxuICBQdXRJdGVtSW5wdXQsXG4gIFB1dEl0ZW1PdXRwdXQsXG4gIFF1ZXJ5SW5wdXQsXG4gIFF1ZXJ5T3V0cHV0LFxuICBVcGRhdGVJdGVtSW5wdXQsXG4gIFVwZGF0ZUl0ZW1PdXRwdXRcbn0gZnJvbSAnYXdzLXNkay9jbGllbnRzL2R5bmFtb2RiJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdkeW5hbW9kYic7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9HZXQgPSAocGFyYW1zOiBHZXRJdGVtSW5wdXQpOiBQcm9taXNlPEdldEl0ZW1PdXRwdXQ+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gICAgY29uc3QgZHluYW1vZGI6IER5bmFtb0RCID0gbmV3IER5bmFtb0RCKCk7XG4gICAgcGFyYW1zLkNvbnNpc3RlbnRSZWFkID0gZmFsc2U7XG5cbiAgICBkeW5hbW9kYi5nZXRJdGVtKHBhcmFtcywgKGVycm9yOiBFcnJvciwgcmVzdWx0czogR2V0SXRlbU91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHJlc3VsdHMpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9HZXRMaXN0ID0gKHBhcmFtczogUXVlcnlJbnB1dCwgaW5kZXgpOiBQcm9taXNlPEdldEl0ZW1PdXRwdXRbXT4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcbiAgICBjb25zdCB7Q29uc2lzdGVudFJlYWQ6IGNvbnNpc3RlbnRSZWFkfSA9IHBhcmFtcztcbiAgICBjb25zdCB1cGRhdGVkUGFyYW1zID0gey4uLnBhcmFtc307XG5cbiAgICBpZihpbmRleCkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5FeGNsdXNpdmVTdGFydEtleSA9IGluZGV4O1xuICAgIH1cblxuICAgIGlmKCFjb25zaXN0ZW50UmVhZCkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5Db25zaXN0ZW50UmVhZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGR5bmFtb2RiLnF1ZXJ5KHVwZGF0ZWRQYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogUXVlcnlPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgLy8gU2F2ZSBsaXN0IG9mIGl0ZW1zXG4gICAgICBjb25zdCBsaXN0OiBhbnlbXSA9IHBhcnNlRHluYW1vKG91dHB1dCk7XG4gICAgICBjb25zdCB7TGFzdEV2YWx1YXRlZEtleTogbGFzdEtleX0gPSBvdXRwdXQ7XG5cbiAgICAgIGlmKGxhc3RLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBTYXZlIGxhc3QgaW5kZXggYmVmb3JlIGxvb3BpbmdcbiAgICAgICAgcmV0dXJuIGR5bmFtb0dldExpc3QocGFyYW1zLCBsYXN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgLy8gUXVlcnkgY29tcGxldGUsIHJldHVybiBmaW5hbCBsaXN0XG4gICAgICByZXR1cm4gcmVzb2x2ZShsaXN0KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0ID0gKHBhcmFtczogUHV0SXRlbUlucHV0KTogUHJvbWlzZTxQdXRJdGVtT3V0cHV0PiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gICAgZHluYW1vZGIucHV0SXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBQdXRJdGVtT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1VwZGF0ZSA9IChwYXJhbXM6IFVwZGF0ZUl0ZW1JbnB1dCk6IFByb21pc2U8VXBkYXRlSXRlbU91dHB1dD4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcblxuICAgIGR5bmFtb2RiLnVwZGF0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFVwZGF0ZUl0ZW1PdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0TGlzdCA9IChwYXJhbXM6IEJhdGNoV3JpdGVJdGVtSW5wdXQpOiBQcm9taXNlPEJhdGNoV3JpdGVJdGVtT3V0cHV0PiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gICAgZHluYW1vZGIuYmF0Y2hXcml0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEJhdGNoV3JpdGVJdGVtT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0RlbCA9IChwYXJhbXM6IERlbGV0ZUl0ZW1JbnB1dCk6IFByb21pc2U8RGVsZXRlSXRlbU91dHB1dD4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcblxuICAgIGR5bmFtb2RiLmRlbGV0ZUl0ZW0ocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogRGVsZXRlSXRlbU91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUR5bmFtbyA9IChyZXN1bHRzOiBRdWVyeU91dHB1dCk6IGFueVtdID0+IHtcbiAgY29uc3Qge0l0ZW1zOiBpdGVtc30gPSByZXN1bHRzO1xuICBjb25zdCBkYXRhOiBhbnlbXSA9IFtdO1xuXG4gIGZvcihsZXQgaWR4OiBudW1iZXIgPSAwLCBsZW4gPSBpdGVtcy5sZW5ndGg7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjb25zdCB0bXAgPSBpdGVtc1tpZHhdO1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgIGxldCBrZXk7XG5cbiAgICBmb3Ioa2V5IGluIHRtcCkge1xuICAgICAgaWYodG1wLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgaWYodG1wW2tleV0uUykge1xuICAgICAgICAgIG9ialtrZXldID0gdG1wW2tleV0uUy50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYodG1wW2tleV0uTikge1xuICAgICAgICAgIG9ialtrZXldID0gcGFyc2VGbG9hdCh0bXBba2V5XS5OKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHRtcFtrZXldLkI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkYXRhLnB1c2gob2JqKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufTtcblxuIl19