@nlabs/reaktor 0.1.11 → 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
@@ -1,148 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.addLocation = void 0;
7
-
8
- var _ripHunter = require("@nlabs/rip-hunter");
9
-
10
- var _utils = require("@nlabs/utils");
11
-
12
- var _arangojs = require("arangojs");
13
-
14
- var _get = _interopRequireDefault(require("lodash/get"));
15
-
16
- var _config = require("../config");
17
-
18
- var _utils2 = require("../utils");
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- function _templateObject() {
23
- var data = _taggedTemplateLiteral(["UPSERT {googleId: ", "}\n INSERT ", "\n UPDATE ", "\n IN locations RETURN NEW"]);
24
-
25
- _templateObject = function _templateObject() {
26
- return data;
27
- };
28
-
29
- return data;
30
- }
31
-
32
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
33
-
34
- var eventCategory = 'locations';
35
-
36
- var addLocation = function addLocation(context, location) {
37
- var action = 'add';
38
- var database = context.database,
39
- sessionId = context.userId;
40
- var address = location.address,
41
- itemId = location.itemId,
42
- itemType = location.itemType;
43
-
44
- var geocodeUrl = _config.Config.get('google.geocode.url');
45
-
46
- var params = {
47
- address: address,
48
- key: _config.Config.get('google.geocode.key')
49
- };
50
- var url = "".concat(geocodeUrl, "?").concat((0, _ripHunter.queryString)(params));
51
- return (0, _ripHunter.get)(url).then(function (json) {
52
- var _json$results = json.results,
53
- results = _json$results === void 0 ? [] : _json$results,
54
- _json$status = json.status,
55
- status = _json$status === void 0 ? '' : _json$status;
56
-
57
- if (status === 'OK' && results.length) {
58
- var geodata = results[0];
59
- var addressComponents = (0, _get.default)(geodata, 'address_components');
60
-
61
- var getFieldVal = function getFieldVal(name) {
62
- var _ref = addressComponents.find(function (addressField) {
63
- var types = addressField.types || [];
64
- return types.findIndex(function (fieldType) {
65
- return fieldType === name;
66
- }) >= 0;
67
- }) || {},
68
- _ref$short_name = _ref.short_name,
69
- shortName = _ref$short_name === void 0 ? '' : _ref$short_name;
70
-
71
- return shortName;
72
- }; // Street
73
-
74
-
75
- var streetNumber = getFieldVal('street_number');
76
- var route = getFieldVal('route'); // Location
77
-
78
- var now = Date.now(); // Item
79
-
80
- var formatItemType = (0, _utils.parseChar)(itemType).toLowerCase();
81
- var formatItemId = (0, _utils.parseId)(itemId);
82
- var googleId = (0, _get.default)(geodata, 'place_id');
83
- var update = {};
84
- var insert = {
85
- _key: (0, _utils.createHash)("post-".concat(sessionId)),
86
- added: now,
87
- city: getFieldVal('locality'),
88
- country: getFieldVal('country'),
89
- formatted: (0, _get.default)(geodata, 'formatted_address'),
90
- googleId: googleId,
91
- latitude: (0, _get.default)(geodata, 'geometry.location.lat'),
92
- longitude: (0, _get.default)(geodata, 'geometry.location.lng'),
93
- state: getFieldVal('administrative_area_level_1'),
94
- street: [streetNumber, route].filter(function (obj) {
95
- return obj;
96
- }).join(' '),
97
- zip: getFieldVal('postal_code')
98
- };
99
- var aqlQry = (0, _arangojs.aql)(_templateObject(), googleId, insert, update);
100
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
101
- return cursor.next();
102
- }).then(function () {
103
- var updatedLocation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
104
- var itemDocId;
105
- var updatedLocationKey = updatedLocation._key;
106
-
107
- switch (formatItemType) {
108
- case 'posts':
109
- itemDocId = "posts/".concat(formatItemId);
110
- break;
111
-
112
- default:
113
- itemDocId = '';
114
- } // If there is a valid item doc id, create an edge
115
-
116
-
117
- if (itemDocId) {
118
- var edgeCollection = (0, _utils2.useDb)(database).edgeCollection('hasLocation');
119
- var locationId = updatedLocationKey;
120
- var locationDocId = "locations/".concat(locationId);
121
- var edgeId = (0, _utils.createHash)("hasLocation-".concat(locationId, "-").concat(sessionId));
122
- var edge = {
123
- _key: edgeId
124
- };
125
- return edgeCollection.save(edge, itemDocId, locationDocId).then(function () {
126
- return updatedLocation;
127
- });
128
- } // Otherwise just return the new location
129
-
130
-
131
- return updatedLocation;
132
- }).catch(function (error) {
133
- return (0, _utils2.logError)({
134
- action: action,
135
- category: eventCategory,
136
- label: 'db_error'
137
- }, error, context).then(function () {
138
- return null;
139
- });
140
- });
141
- }
142
-
143
- return {};
144
- });
145
- };
146
-
147
- exports.addLocation = addLocation;
148
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2xvY2F0aW9ucy50cyJdLCJuYW1lcyI6WyJldmVudENhdGVnb3J5IiwiYWRkTG9jYXRpb24iLCJjb250ZXh0IiwibG9jYXRpb24iLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImFkZHJlc3MiLCJpdGVtSWQiLCJpdGVtVHlwZSIsImdlb2NvZGVVcmwiLCJDb25maWciLCJnZXQiLCJwYXJhbXMiLCJrZXkiLCJ1cmwiLCJ0aGVuIiwianNvbiIsInJlc3VsdHMiLCJzdGF0dXMiLCJsZW5ndGgiLCJnZW9kYXRhIiwiYWRkcmVzc0NvbXBvbmVudHMiLCJnZXRGaWVsZFZhbCIsIm5hbWUiLCJmaW5kIiwiYWRkcmVzc0ZpZWxkIiwidHlwZXMiLCJmaW5kSW5kZXgiLCJmaWVsZFR5cGUiLCJzaG9ydF9uYW1lIiwic2hvcnROYW1lIiwic3RyZWV0TnVtYmVyIiwicm91dGUiLCJub3ciLCJEYXRlIiwiZm9ybWF0SXRlbVR5cGUiLCJ0b0xvd2VyQ2FzZSIsImZvcm1hdEl0ZW1JZCIsImdvb2dsZUlkIiwidXBkYXRlIiwiaW5zZXJ0IiwiX2tleSIsImFkZGVkIiwiY2l0eSIsImNvdW50cnkiLCJmb3JtYXR0ZWQiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInN0YXRlIiwic3RyZWV0IiwiZmlsdGVyIiwib2JqIiwiam9pbiIsInppcCIsImFxbFFyeSIsImFxbCIsInF1ZXJ5IiwiY3Vyc29yIiwibmV4dCIsInVwZGF0ZWRMb2NhdGlvbiIsIml0ZW1Eb2NJZCIsInVwZGF0ZWRMb2NhdGlvbktleSIsImVkZ2VDb2xsZWN0aW9uIiwibG9jYXRpb25JZCIsImxvY2F0aW9uRG9jSWQiLCJlZGdlSWQiLCJlZGdlIiwic2F2ZSIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBRUE7O0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJ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QixDQUErQixhQUEvQixDQUF2QjtBQUNBLGNBQU1DLFVBQWtCLEdBQUdGLGtCQUEzQjtBQUNBLGNBQU1HLGFBQXFCLHVCQUFnQkQsVUFBaEIsQ0FBM0I7QUFDQSxjQUFNRSxNQUFNLEdBQUcsNkNBQTBCRixVQUExQixjQUF3QzNELFNBQXhDLEVBQWY7QUFDQSxjQUFNOEQsSUFBUyxHQUFHO0FBQUN6QixZQUFBQSxJQUFJLEVBQUV3QjtBQUFQLFdBQWxCO0FBRUEsaUJBQU9ILGNBQWMsQ0FBQ0ssSUFBZixDQUFvQkQsSUFBcEIsRUFBMEJOLFNBQTFCLEVBQXFDSSxhQUFyQyxFQUFvRGpELElBQXBELENBQXlEO0FBQUEsbUJBQU00QyxlQUFOO0FBQUEsV0FBekQsQ0FBUDtBQUNELFNBckIyQyxDQXVCNUM7OztBQUNBLGVBQU9BLGVBQVA7QUFDRCxPQTNCSSxFQTRCSlMsS0E1QkksQ0E0QkUsVUFBQ0MsS0FBRDtBQUFBLGVBQWtCLHNCQUFTO0FBQ2hDbkUsVUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ29FLFVBQUFBLFFBQVEsRUFBRXhFLGFBRnNCO0FBR2hDeUUsVUFBQUEsS0FBSyxFQUFFO0FBSHlCLFNBQVQsRUFJdEJGLEtBSnNCLEVBSWZyRSxPQUplLEVBSU5lLElBSk0sQ0FJRDtBQUFBLGlCQUFNLElBQU47QUFBQSxTQUpDLENBQWxCO0FBQUEsT0E1QkYsQ0FBUDtBQWlDRDs7QUFFRCxXQUFPLEVBQVA7QUFDRCxHQWxGSSxDQUFQO0FBbUZELENBOUZNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXQsIHF1ZXJ5U3RyaW5nfSBmcm9tICdAbmxhYnMvcmlwLWh1bnRlcic7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge0dvb2dsZU1hcHNBZGRyZXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMvZ29vZ2xlJztcbmltcG9ydCB7TG9jYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9sb2NhdGlvbnMnO1xuaW1wb3J0IHtsb2dFcnJvciwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2xvY2F0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBhZGRMb2NhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhdGlvbjogTG9jYXRpb25UeXBlKTogUHJvbWlzZTxMb2NhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7YWRkcmVzcywgaXRlbUlkLCBpdGVtVHlwZX0gPSBsb2NhdGlvbjtcbiAgY29uc3QgZ2VvY29kZVVybDogc3RyaW5nID0gQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUudXJsJyk7XG4gIGNvbnN0IHBhcmFtczogb2JqZWN0ID0ge1xuICAgIGFkZHJlc3MsXG4gICAga2V5OiBDb25maWcuZ2V0KCdnb29nbGUuZ2VvY29kZS5rZXknKVxuICB9O1xuICBjb25zdCB1cmw6IHN0cmluZyA9IGAke2dlb2NvZGVVcmx9PyR7cXVlcnlTdHJpbmcocGFyYW1zKX1gO1xuXG4gIHJldHVybiBodHRwR2V0KHVybClcbiAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgY29uc3Qge3Jlc3VsdHMgPSBbXSwgc3RhdHVzID0gJyd9ID0ganNvbjtcblxuICAgICAgaWYoc3RhdHVzID09PSAnT0snICYmIHJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGdlb2RhdGE6IG9iamVjdCA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IGFkZHJlc3NDb21wb25lbnRzOiBHb29nbGVNYXBzQWRkcmVzc1R5cGVbXSA9IGdldChnZW9kYXRhLCAnYWRkcmVzc19jb21wb25lbnRzJyk7XG4gICAgICAgIGNvbnN0IGdldEZpZWxkVmFsID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgY29uc3Qge3Nob3J0X25hbWU6IHNob3J0TmFtZSA9ICcnfSA9IGFkZHJlc3NDb21wb25lbnRzLmZpbmQoKGFkZHJlc3NGaWVsZDogR29vZ2xlTWFwc0FkZHJlc3NUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlcyA9IGFkZHJlc3NGaWVsZC50eXBlcyB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlcy5maW5kSW5kZXgoKGZpZWxkVHlwZTogc3RyaW5nKSA9PiBmaWVsZFR5cGUgPT09IG5hbWUpID49IDA7XG4gICAgICAgICAgfSkgfHwge307XG5cbiAgICAgICAgICByZXR1cm4gc2hvcnROYW1lO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFN0cmVldFxuICAgICAgICBjb25zdCBzdHJlZXROdW1iZXI6IHN0cmluZyA9IGdldEZpZWxkVmFsKCdzdHJlZXRfbnVtYmVyJyk7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSBnZXRGaWVsZFZhbCgncm91dGUnKTtcblxuICAgICAgICAvLyBMb2NhdGlvblxuICAgICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gSXRlbVxuICAgICAgICBjb25zdCBmb3JtYXRJdGVtVHlwZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1UeXBlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlSWQ6IHN0cmluZyA9IGdldChnZW9kYXRhLCAncGxhY2VfaWQnKTtcbiAgICAgICAgY29uc3QgdXBkYXRlOiBMb2NhdGlvblR5cGUgPSB7fTtcbiAgICAgICAgY29uc3QgaW5zZXJ0OiBMb2NhdGlvblR5cGUgPSB7XG4gICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgcG9zdC0ke3Nlc3Npb25JZH1gKSxcbiAgICAgICAgICBhZGRlZDogbm93LFxuICAgICAgICAgIGNpdHk6IGdldEZpZWxkVmFsKCdsb2NhbGl0eScpLFxuICAgICAgICAgIGNvdW50cnk6IGdldEZpZWxkVmFsKCdjb3VudHJ5JyksXG4gICAgICAgICAgZm9ybWF0dGVkOiBnZXQoZ2VvZGF0YSwgJ2Zvcm1hdHRlZF9hZGRyZXNzJyksXG4gICAgICAgICAgZ29vZ2xlSWQsXG4gICAgICAgICAgbGF0aXR1ZGU6IGdldChnZW9kYXRhLCAnZ2VvbWV0cnkubG9jYXRpb24ubGF0JyksXG4gICAgICAgICAgbG9uZ2l0dWRlOiBnZXQoZ2VvZGF0YSwgJ2dlb21ldHJ5LmxvY2F0aW9uLmxuZycpLFxuICAgICAgICAgIHN0YXRlOiBnZXRGaWVsZFZhbCgnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJyksXG4gICAgICAgICAgc3RyZWV0OiBbc3RyZWV0TnVtYmVyLCByb3V0ZV0uZmlsdGVyKChvYmopID0+IG9iaikuam9pbignICcpLFxuICAgICAgICAgIHppcDogZ2V0RmllbGRWYWwoJ3Bvc3RhbF9jb2RlJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge2dvb2dsZUlkOiAke2dvb2dsZUlkfX1cbiAgICAgICAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgICAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgICAgICAgIElOIGxvY2F0aW9ucyBSRVRVUk4gTkVXYDtcblxuICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAudGhlbigodXBkYXRlZExvY2F0aW9uOiBMb2NhdGlvblR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW1Eb2NJZDogc3RyaW5nO1xuICAgICAgICAgICAgY29uc3Qge19rZXk6IHVwZGF0ZWRMb2NhdGlvbktleX0gPSB1cGRhdGVkTG9jYXRpb247XG5cbiAgICAgICAgICAgIHN3aXRjaChmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdwb3N0cyc6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gYHBvc3RzLyR7Zm9ybWF0SXRlbUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgdmFsaWQgaXRlbSBkb2MgaWQsIGNyZWF0ZSBhbiBlZGdlXG4gICAgICAgICAgICBpZihpdGVtRG9jSWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZSkuZWRnZUNvbGxlY3Rpb24oJ2hhc0xvY2F0aW9uJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uSWQ6IHN0cmluZyA9IHVwZGF0ZWRMb2NhdGlvbktleTtcbiAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25Eb2NJZDogc3RyaW5nID0gYGxvY2F0aW9ucy8ke2xvY2F0aW9uSWR9YDtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgaGFzTG9jYXRpb24tJHtsb2NhdGlvbklkfS0ke3Nlc3Npb25JZH1gKTtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZTogYW55ID0ge19rZXk6IGVkZ2VJZH07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwgaXRlbURvY0lkLCBsb2NhdGlvbkRvY0lkKS50aGVuKCgpID0+IHVwZGF0ZWRMb2NhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUgbmV3IGxvY2F0aW9uXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZExvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICAgICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7fTtcbiAgICB9KTtcbn07XG4iXX0=
@@ -1,281 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.cleanMessages = exports.getMessage = exports.deleteMessage = exports.unsaveMessage = exports.saveMessage = exports.updateMessage = exports.getMessageList = 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 _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
15
-
16
- var _utils2 = require("../utils");
17
-
18
- var _conversations = require("./conversations");
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- function _templateObject5() {
23
- var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m.added < DATE_TIMESTAMP(DATE_SUBTRACT(DATE_NOW(), 60, 'day')) && LENGTH(m.saved) > 0\n REMOVE m IN messages\n RETURN OLD"]);
24
-
25
- _templateObject5 = function _templateObject5() {
26
- return data;
27
- };
28
-
29
- return data;
30
- }
31
-
32
- function _templateObject4() {
33
- var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m._key == ", " && m.to == ", " && m.from == ", "\n REMOVE m IN messages\n RETURN OLD"]);
34
-
35
- _templateObject4 = function _templateObject4() {
36
- return data;
37
- };
38
-
39
- return data;
40
- }
41
-
42
- function _templateObject3() {
43
- var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m._key == ", " && m.to == ", "\n UPDATE m WITH {saved: REMOVE_VALUE(m.saved, ", ")} IN messages\n RETURN NEW"]);
44
-
45
- _templateObject3 = function _templateObject3() {
46
- return data;
47
- };
48
-
49
- return data;
50
- }
51
-
52
- function _templateObject2() {
53
- var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m._key == ", " && m.to == ", "\n UPDATE m WITH {saved: APPEND(m.saved, ", ", true)} IN messages\n RETURN NEW"]);
54
-
55
- _templateObject2 = function _templateObject2() {
56
- return data;
57
- };
58
-
59
- return data;
60
- }
61
-
62
- function _templateObject() {
63
- var data = _taggedTemplateLiteral(["UPSERT {_key: ", ", convoId: ", "}\n INSERT ", "\n UPDATE ", "\n IN messages RETURN NEW"]);
64
-
65
- _templateObject = function _templateObject() {
66
- return data;
67
- };
68
-
69
- return data;
70
- }
71
-
72
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
73
-
74
- 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; }
75
-
76
- 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; }
77
-
78
- // const eventCategory: string = 'messages';
79
- var getMessageList = function getMessageList(context, convoId, from, to) {
80
- var database = context.database;
81
- var formatConvoId = (0, _utils.parseId)(convoId);
82
- return (0, _conversations.getConversation)(context, formatConvoId).then(function (conversation) {
83
- var conversationKey = conversation._key;
84
- var limit = (0, _utils2.getLimit)(from, to);
85
- var aqlQry = "FOR m IN messages\n FILTER m.to == \"".concat(conversationKey, "\"\n ").concat(limit.aql, "\n SORT m.added\n RETURN m");
86
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
87
- return cursor.all();
88
- }).catch(function (error) {
89
- throw error;
90
- });
91
- });
92
- };
93
-
94
- exports.getMessageList = getMessageList;
95
-
96
- var updateMessage = function updateMessage(context, message) {
97
- var database = context.database,
98
- sessionId = context.userId;
99
- var convoId = message.convoId,
100
- files = message.files,
101
- images = message.images,
102
- msgId = message.msgId;
103
- var formatConvoId = (0, _utils.parseId)(convoId);
104
-
105
- if (formatConvoId === '') {
106
- throw new Error('required_convoId');
107
- }
108
-
109
- return (0, _conversations.getConversation)(context, formatConvoId).then(function (conversation) {
110
- var conversationKey = conversation._key;
111
- var now = Date.now();
112
- var update = {
113
- content: (0, _utils.parseVarChar)(message.content, 640),
114
- convoId: formatConvoId,
115
- files: files || [],
116
- images: images || [],
117
- modified: now,
118
- userId: sessionId
119
- };
120
- var formatMsgId = (0, _utils.parseId)(msgId);
121
- var updatedId = formatMsgId === '' ? (0, _utils.createHash)("message-".concat(sessionId)) : formatMsgId;
122
-
123
- var insert = _objectSpread({}, (0, _cloneDeep.default)(update), {
124
- _key: updatedId,
125
- added: now
126
- });
127
-
128
- var aqlQry = (0, _arangojs.aql)(_templateObject(), updatedId, conversationKey, insert, update);
129
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
130
- return cursor.next();
131
- }).then(function () {
132
- var updatedMessage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
133
- // const {
134
- // _key: msgId,
135
- // added: msgAdded,
136
- // content: msgContent,
137
- // files: msgFiles,
138
- // fromId: msgFromId,
139
- // read: msgRead,
140
- // saved: msgSaved,
141
- // toId: msgToId
142
- // } = updatedMessage;
143
- // Broadcast to message box
144
- // if(io) {
145
- // const msg: MessageType = {
146
- // added: msgAdded,
147
- // content: msgContent,
148
- // files: msgFiles,
149
- // fromId: msgFromId,
150
- // id: msgId,
151
- // read: msgRead,
152
- // saved: msgSaved,
153
- // toId: msgToId
154
- // };
155
- // io.to(msgToId).emit('message_update', msg);
156
- // }
157
- console.log('updatedMessage', updatedMessage);
158
- return updatedMessage;
159
- }).catch(function (error) {
160
- throw error;
161
- });
162
- });
163
- };
164
-
165
- exports.updateMessage = updateMessage;
166
-
167
- var saveMessage = function saveMessage(context, msgId, convoId) {
168
- var database = context.database,
169
- sessionId = context.userId;
170
- var formatId = (0, _utils.parseId)(msgId);
171
- return (0, _conversations.getConversation)(context, convoId).then(function (conversation) {
172
- var conversationKey = conversation._key;
173
- var aqlQry = (0, _arangojs.aql)(_templateObject2(), formatId, conversationKey, sessionId);
174
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
175
- return cursor.next();
176
- }).then(function () {
177
- var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
178
-
179
- if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
180
- // const msg: MessageType = Messages.getMessageObject(message);
181
- // io.to(message.toId).emit('message_save', msg);
182
- }
183
-
184
- return message;
185
- }).catch(function (error) {
186
- throw error;
187
- });
188
- });
189
- };
190
-
191
- exports.saveMessage = saveMessage;
192
-
193
- var unsaveMessage = function unsaveMessage(context, msgId, convoId) {
194
- var database = context.database,
195
- sessionId = context.userId;
196
- var formatId = (0, _utils.parseId)(msgId);
197
- return (0, _conversations.getConversation)(context, convoId).then(function (conversation) {
198
- var conversationKey = conversation._key;
199
- var aqlQry = (0, _arangojs.aql)(_templateObject3(), formatId, conversationKey, sessionId);
200
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
201
- return cursor.next();
202
- }).then(function () {
203
- var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
204
-
205
- if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
206
- // const msg: MessageType = Messages.getMessageObject(message);
207
- // io.to(message.id).emit('message_unsave', msg);
208
- }
209
-
210
- return message;
211
- }).catch(function (error) {
212
- throw error;
213
- });
214
- });
215
- };
216
-
217
- exports.unsaveMessage = unsaveMessage;
218
-
219
- var deleteMessage = function deleteMessage(context, msgId, convoId) {
220
- var database = context.database,
221
- sessionId = context.userId;
222
- var formatId = (0, _utils.parseId)(msgId);
223
- return (0, _conversations.getConversation)(context, convoId).then(function (conversation) {
224
- var conversationKey = conversation._key;
225
- var aqlQry = (0, _arangojs.aql)(_templateObject4(), formatId, conversationKey, sessionId);
226
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
227
- return cursor.next();
228
- }).then(function () {
229
- var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
230
-
231
- if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
232
- // const msg: MessageType = Messages.getMessageObject(message);
233
- // io.to(message.toId).emit('message_delete', msg);
234
- }
235
-
236
- return message;
237
- }).catch(function (error) {
238
- throw error;
239
- });
240
- });
241
- };
242
-
243
- exports.deleteMessage = deleteMessage;
244
-
245
- var getMessage = function getMessage(data) {
246
- var added = data.added,
247
- content = data.content,
248
- convoId = data.convoId,
249
- files = data.files,
250
- msgId = data._key,
251
- read = data.read,
252
- saved = data.saved,
253
- userId = data.userId;
254
- return {
255
- added: added,
256
- content: content,
257
- convoId: convoId,
258
- files: files,
259
- msgId: msgId,
260
- read: read,
261
- saved: saved,
262
- userId: userId
263
- };
264
- };
265
-
266
- exports.getMessage = getMessage;
267
-
268
- var cleanMessages = function cleanMessages(database) {
269
- // Remove all messages that are over 60 days and not saved
270
- var aqlQry = (0, _arangojs.aql)(_templateObject5());
271
- return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
272
- return cursor.all();
273
- }).then(function (list) {
274
- return list.length;
275
- }).catch(function (error) {
276
- throw error;
277
- });
278
- };
279
-
280
- exports.cleanMessages = cleanMessages;
281
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbImdldE1lc3NhZ2VMaXN0IiwiY29udGV4dCIsImNvbnZvSWQiLCJmcm9tIiwidG8iLCJkYXRhYmFzZSIsImZvcm1hdENvbnZvSWQiLCJ0aGVuIiwiY29udmVyc2F0aW9uIiwiY29udmVyc2F0aW9uS2V5IiwiX2tleSIsImxpbWl0IiwiYXFsUXJ5IiwiYXFsIiwicXVlcnkiLCJjdXJzb3IiLCJhbGwiLCJjYXRjaCIsImVycm9yIiwidXBkYXRlTWVzc2FnZSIsIm1lc3NhZ2UiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJmaWxlcyIsImltYWdlcyIsIm1zZ0lkIiwiRXJyb3IiLCJub3ciLCJEYXRlIiwidXBkYXRlIiwiY29udGVudCIsIm1vZGlmaWVkIiwiZm9ybWF0TXNnSWQiLCJ1cGRhdGVkSWQiLCJpbnNlcnQiLCJhZGRlZCIsIm5leHQiLCJ1cGRhdGVkTWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJzYXZlTWVzc2FnZSIsImZvcm1hdElkIiwidW5zYXZlTWVzc2FnZSIsImRlbGV0ZU1lc3NhZ2UiLCJnZXRNZXNzYWdlIiwiZGF0YSIsInJlYWQiLCJzYXZlZCIsImNsZWFuTWVzc2FnZXMiLCJsaXN0IiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBTUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBRU8sSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUM1QkMsT0FENEIsRUFFNUJDLE9BRjRCLEVBRzVCQyxJQUg0QixFQUk1QkMsRUFKNEIsRUFLRDtBQUFBLE1BQ3BCQyxRQURvQixHQUNSSixPQURRLENBQ3BCSSxRQURvQjtBQUUzQixNQUFNQyxhQUFxQixHQUFHLG9CQUFRSixPQUFSLENBQTlCO0FBRUEsU0FBTyxvQ0FBZ0JELE9BQWhCLEVBQXlC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dCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkLCBwYXJzZVZhckNoYXJ9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtDb252ZXJzYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9jb252ZXJzYXRpb25zJztcbmltcG9ydCB7TWVzc2FnZUlucHV0VHlwZSwgTWVzc2FnZVR5cGV9IGZyb20gJy4uL3R5cGVzL21lc3NhZ2VzJztcbmltcG9ydCB7Z2V0TGltaXQsIHVzZURifSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2dldENvbnZlcnNhdGlvbn0gZnJvbSAnLi9jb252ZXJzYXRpb25zJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ21lc3NhZ2VzJztcblxuZXhwb3J0IGNvbnN0IGdldE1lc3NhZ2VMaXN0ID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb252b0lkOiBzdHJpbmcsXG4gIGZyb206IG51bWJlcixcbiAgdG86IG51bWJlclxuKTogUHJvbWlzZTxNZXNzYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgZm9ybWF0Q29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICAgICAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBGSUxURVIgbS50byA9PSBcIiR7Y29udmVyc2F0aW9uS2V5fVwiXG4gICAgICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICAgICAgU09SVCBtLmFkZGVkXG4gICAgICAgICAgUkVUVVJOIG1gO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlOiBNZXNzYWdlSW5wdXRUeXBlKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtjb252b0lkLCBmaWxlcywgaW1hZ2VzLCBtc2dJZH0gPSBtZXNzYWdlO1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuXG4gIGlmKGZvcm1hdENvbnZvSWQgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlZF9jb252b0lkJyk7XG4gIH1cblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGZvcm1hdENvbnZvSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB1cGRhdGU6IE1lc3NhZ2VUeXBlID0ge1xuICAgICAgICBjb250ZW50OiBwYXJzZVZhckNoYXIobWVzc2FnZS5jb250ZW50LCA2NDApLFxuICAgICAgICBjb252b0lkOiBmb3JtYXRDb252b0lkLFxuICAgICAgICBmaWxlczogZmlsZXMgfHwgW10sXG4gICAgICAgIGltYWdlczogaW1hZ2VzIHx8IFtdLFxuICAgICAgICBtb2RpZmllZDogbm93LFxuICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdE1zZ0lkOiBzdHJpbmcgPSBwYXJzZUlkKG1zZ0lkKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRJZDogc3RyaW5nID0gZm9ybWF0TXNnSWQgPT09ICcnID8gY3JlYXRlSGFzaChgbWVzc2FnZS0ke3Nlc3Npb25JZH1gKSA6IGZvcm1hdE1zZ0lkO1xuICAgICAgY29uc3QgaW5zZXJ0OiBNZXNzYWdlVHlwZSA9IHtcbiAgICAgICAgLi4uY2xvbmVEZWVwKHVwZGF0ZSksXG4gICAgICAgIF9rZXk6IHVwZGF0ZWRJZCxcbiAgICAgICAgYWRkZWQ6IG5vd1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtfa2V5OiAke3VwZGF0ZWRJZH0sIGNvbnZvSWQ6ICR7Y29udmVyc2F0aW9uS2V5fX1cbiAgICAgICAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgICAgICAgVVBEQVRFICR7dXBkYXRlfVxuICAgICAgICAgIElOIG1lc3NhZ2VzIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKCh1cGRhdGVkTWVzc2FnZTogTWVzc2FnZVR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnN0IHtcbiAgICAgICAgICAvLyAgIF9rZXk6IG1zZ0lkLFxuICAgICAgICAgIC8vICAgYWRkZWQ6IG1zZ0FkZGVkLFxuICAgICAgICAgIC8vICAgY29udGVudDogbXNnQ29udGVudCxcbiAgICAgICAgICAvLyAgIGZpbGVzOiBtc2dGaWxlcyxcbiAgICAgICAgICAvLyAgIGZyb21JZDogbXNnRnJvbUlkLFxuICAgICAgICAgIC8vICAgcmVhZDogbXNnUmVhZCxcbiAgICAgICAgICAvLyAgIHNhdmVkOiBtc2dTYXZlZCxcbiAgICAgICAgICAvLyAgIHRvSWQ6IG1zZ1RvSWRcbiAgICAgICAgICAvLyB9ID0gdXBkYXRlZE1lc3NhZ2U7XG5cbiAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAvLyBpZihpbykge1xuICAgICAgICAgIC8vICAgY29uc3QgbXNnOiBNZXNzYWdlVHlwZSA9IHtcbiAgICAgICAgICAvLyAgICAgYWRkZWQ6IG1zZ0FkZGVkLFxuICAgICAgICAgIC8vICAgICBjb250ZW50OiBtc2dDb250ZW50LFxuICAgICAgICAgIC8vICAgICBmaWxlczogbXNnRmlsZXMsXG4gICAgICAgICAgLy8gICAgIGZyb21JZDogbXNnRnJvbUlkLFxuICAgICAgICAgIC8vICAgICBpZDogbXNnSWQsXG4gICAgICAgICAgLy8gICAgIHJlYWQ6IG1zZ1JlYWQsXG4gICAgICAgICAgLy8gICAgIHNhdmVkOiBtc2dTYXZlZCxcbiAgICAgICAgICAvLyAgICAgdG9JZDogbXNnVG9JZFxuICAgICAgICAgIC8vICAgfTtcblxuICAgICAgICAgIC8vICAgaW8udG8obXNnVG9JZCkuZW1pdCgnbWVzc2FnZV91cGRhdGUnLCBtc2cpO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIGNvbnNvbGUubG9nKCd1cGRhdGVkTWVzc2FnZScsIHVwZGF0ZWRNZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlZE1lc3NhZ2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNhdmVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1zZ0lkOiBzdHJpbmcsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtc2dJZCk7XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBjb252b0lkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH0gJiYgbS50byA9PSAke2NvbnZlcnNhdGlvbktleX1cbiAgICAgICAgVVBEQVRFIG0gV0lUSCB7c2F2ZWQ6IEFQUEVORChtLnNhdmVkLCAke3Nlc3Npb25JZH0sIHRydWUpfSBJTiBtZXNzYWdlc1xuICAgICAgICBSRVRVUk4gTkVXYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigobWVzc2FnZTogTWVzc2FnZVR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgIGlmKCFpc0VtcHR5KG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAgIC8vIGNvbnN0IG1zZzogTWVzc2FnZVR5cGUgPSBNZXNzYWdlcy5nZXRNZXNzYWdlT2JqZWN0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gaW8udG8obWVzc2FnZS50b0lkKS5lbWl0KCdtZXNzYWdlX3NhdmUnLCBtc2cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1bnNhdmVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1zZ0lkOiBzdHJpbmcsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtc2dJZCk7XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBjb252b0lkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH0gJiYgbS50byA9PSAke2NvbnZlcnNhdGlvbktleX1cbiAgICAgICAgICBVUERBVEUgbSBXSVRIIHtzYXZlZDogUkVNT1ZFX1ZBTFVFKG0uc2F2ZWQsICR7c2Vzc2lvbklkfSl9IElOIG1lc3NhZ2VzXG4gICAgICAgICAgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UuaWQpLmVtaXQoJ21lc3NhZ2VfdW5zYXZlJywgbXNnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtc2dJZDogc3RyaW5nLCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobXNnSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9ICYmIG0uZnJvbSA9PSAke3Nlc3Npb25JZH1cbiAgICAgICAgUkVNT1ZFIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9kZWxldGUnLCBtc2cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNZXNzYWdlID0gKGRhdGE6IE1lc3NhZ2VUeXBlKTogTWVzc2FnZVR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgYWRkZWQsXG4gICAgY29udGVudCxcbiAgICBjb252b0lkLFxuICAgIGZpbGVzLFxuICAgIF9rZXk6IG1zZ0lkLFxuICAgIHJlYWQsXG4gICAgc2F2ZWQsXG4gICAgdXNlcklkXG4gIH0gPSBkYXRhO1xuXG4gIHJldHVybiB7XG4gICAgYWRkZWQsXG4gICAgY29udGVudCxcbiAgICBjb252b0lkLFxuICAgIGZpbGVzLFxuICAgIG1zZ0lkLFxuICAgIHJlYWQsXG4gICAgc2F2ZWQsXG4gICAgdXNlcklkXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYW5NZXNzYWdlcyA9IChkYXRhYmFzZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgLy8gUmVtb3ZlIGFsbCBtZXNzYWdlcyB0aGF0IGFyZSBvdmVyIDYwIGRheXMgYW5kIG5vdCBzYXZlZFxuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgIEZJTFRFUiBtLmFkZGVkIDwgREFURV9USU1FU1RBTVAoREFURV9TVUJUUkFDVChEQVRFX05PVygpLCA2MCwgJ2RheScpKSAmJiBMRU5HVEgobS5zYXZlZCkgPiAwXG4gICAgICBSRU1PVkUgbSBJTiBtZXNzYWdlc1xuICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigobGlzdDogTWVzc2FnZVR5cGVbXSkgPT4gbGlzdC5sZW5ndGgpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcbiJdfQ==
@@ -1,59 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.clearBadges = exports.pushNotification = exports.getAPNProvider = void 0;
7
-
8
- var _apn = require("apn");
9
-
10
- var _config = require("../config");
11
-
12
- /**
13
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
14
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
15
- */
16
- // const eventCategory: string = 'notifications';
17
- // Push Notifications
18
- var getAPNProvider = function getAPNProvider() {
19
- return new _apn.Provider({
20
- ca: _config.Config.get('app.apn.ca'),
21
- cert: _config.Config.get('app.apn.cert'),
22
- key: _config.Config.get('app.apn.key'),
23
- production: _config.Config.get('environment') === 'prod'
24
- });
25
- };
26
-
27
- exports.getAPNProvider = getAPNProvider;
28
-
29
- var pushNotification = function pushNotification(deviceTokens, note) {
30
- // Push notification to device
31
- var provider = getAPNProvider();
32
- var notification = new _apn.Notification();
33
- notification.topic = _config.Config.get('app.apn.id');
34
- notification.alert = note.message;
35
-
36
- if (note.data) {
37
- notification.mutableContent = true;
38
- notification.payload = note.data;
39
- }
40
-
41
- if (note.badge !== undefined) {
42
- notification.badge = note.badge;
43
- }
44
-
45
- return provider.send(notification, deviceTokens);
46
- };
47
-
48
- exports.pushNotification = pushNotification;
49
-
50
- var clearBadges = function clearBadges(deviceTokens) {
51
- // Push notification to device
52
- var provider = getAPNProvider();
53
- var notification = new _apn.Notification();
54
- notification.badge = 0;
55
- return provider.send(notification, deviceTokens);
56
- };
57
-
58
- exports.clearBadges = clearBadges;
59
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL25vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOlsiZ2V0QVBOUHJvdmlkZXIiLCJQcm92aWRlciIsImNhIiwiQ29uZmlnIiwiZ2V0IiwiY2VydCIsImtleSIsInByb2R1Y3Rpb24iLCJwdXNoTm90aWZpY2F0aW9uIiwiZGV2aWNlVG9rZW5zIiwibm90ZSIsInByb3ZpZGVyIiwibm90aWZpY2F0aW9uIiwiQVBOTm90aWZpY2F0aW9uIiwidG9waWMiLCJhbGVydCIsIm1lc3NhZ2UiLCJkYXRhIiwibXV0YWJsZUNvbnRlbnQiLCJwYXlsb2FkIiwiYmFkZ2UiLCJ1bmRlZmluZWQiLCJzZW5kIiwiY2xlYXJCYWRnZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQTs7QUFFQTs7QUFOQTs7OztBQVNBO0FBRUE7QUFDTyxJQUFNQSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCO0FBQUEsU0FBZ0IsSUFBSUMsYUFBSixDQUFhO0FBQ3pEQyxJQUFBQSxFQUFFLEVBQUVDLGVBQU9DLEdBQVAsQ0FBVyxZQUFYLENBRHFEO0FBRXpEQyxJQUFBQSxJQUFJLEVBQUVGLGVBQU9DLEdBQVAsQ0FBVyxjQUFYLENBRm1EO0FBR3pERSxJQUFBQSxHQUFHLEVBQUVILGVBQU9DLEdBQVAsQ0FBVyxhQUFYLENBSG9EO0FBSXpERyxJQUFBQSxVQUFVLEVBQUVKLGVBQU9DLEdBQVAsQ0FBVyxhQUFYLE1BQThCO0FBSmUsR0FBYixDQUFoQjtBQUFBLENBQXZCOzs7O0FBT0EsSUFBTUksZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDQyxZQUFELEVBQXlCQyxJQUF6QixFQUF3RTtBQUN0RztBQUNBLE1BQU1DLFFBQWtCLEdBQUdYLGNBQWMsRUFBekM7QUFDQSxNQUFNWSxZQUE2QixHQUFHLElBQUlDLGlCQUFKLEVBQXRDO0FBQ0FELEVBQUFBLFlBQVksQ0FBQ0UsS0FBYixHQUFxQlgsZUFBT0MsR0FBUCxDQUFXLFlBQVgsQ0FBckI7QUFDQVEsRUFBQUEsWUFBWSxDQUFDRyxLQUFiLEdBQXFCTCxJQUFJLENBQUNNLE9BQTFCOztBQUVBLE1BQUdOLElBQUksQ0FBQ08sSUFBUixFQUFjO0FBQ1pMLElBQUFBLFlBQVksQ0FBQ00sY0FBYixHQUE4QixJQUE5QjtBQUNBTixJQUFBQSxZQUFZLENBQUNPLE9BQWIsR0FBdUJULElBQUksQ0FBQ08sSUFBNUI7QUFDRDs7QUFFRCxNQUFHUCxJQUFJLENBQUNVLEtBQUwsS0FBZUMsU0FBbEIsRUFBNkI7QUFDM0JULElBQUFBLFlBQVksQ0FBQ1EsS0FBYixHQUFxQlYsSUFBSSxDQUFDVSxLQUExQjtBQUNEOztBQUVELFNBQU9ULFFBQVEsQ0FBQ1csSUFBVCxDQUFjVixZQUFkLEVBQTRCSCxZQUE1QixDQUFQO0FBQ0QsQ0FqQk07Ozs7QUFtQkEsSUFBTWMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ2QsWUFBRCxFQUFnRDtBQUN6RTtBQUNBLE1BQU1FLFFBQVEsR0FBR1gsY0FBYyxFQUEvQjtBQUNBLE1BQU1ZLFlBQVksR0FBRyxJQUFJQyxpQkFBSixFQUFyQjtBQUNBRCxFQUFBQSxZQUFZLENBQUNRLEtBQWIsR0FBcUIsQ0FBckI7QUFFQSxTQUFPVCxRQUFRLENBQUNXLElBQVQsQ0FBY1YsWUFBZCxFQUE0QkgsWUFBNUIsQ0FBUDtBQUNELENBUE0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtOb3RpZmljYXRpb24gYXMgQVBOTm90aWZpY2F0aW9uLCBQcm92aWRlciwgUmVzcG9uc2VzfSBmcm9tICdhcG4nO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7Tm90aWZpY2F0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvbm90aWZpY2F0aW9ucyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdub3RpZmljYXRpb25zJztcblxuLy8gUHVzaCBOb3RpZmljYXRpb25zXG5leHBvcnQgY29uc3QgZ2V0QVBOUHJvdmlkZXIgPSAoKTogUHJvdmlkZXIgPT4gbmV3IFByb3ZpZGVyKHtcbiAgY2E6IENvbmZpZy5nZXQoJ2FwcC5hcG4uY2EnKSxcbiAgY2VydDogQ29uZmlnLmdldCgnYXBwLmFwbi5jZXJ0JyksXG4gIGtleTogQ29uZmlnLmdldCgnYXBwLmFwbi5rZXknKSxcbiAgcHJvZHVjdGlvbjogQ29uZmlnLmdldCgnZW52aXJvbm1lbnQnKSA9PT0gJ3Byb2QnXG59KTtcblxuZXhwb3J0IGNvbnN0IHB1c2hOb3RpZmljYXRpb24gPSAoZGV2aWNlVG9rZW5zOiBzdHJpbmdbXSwgbm90ZTogTm90aWZpY2F0aW9uVHlwZSk6IFByb21pc2U8UmVzcG9uc2VzPiA9PiB7XG4gIC8vIFB1c2ggbm90aWZpY2F0aW9uIHRvIGRldmljZVxuICBjb25zdCBwcm92aWRlcjogUHJvdmlkZXIgPSBnZXRBUE5Qcm92aWRlcigpO1xuICBjb25zdCBub3RpZmljYXRpb246IEFQTk5vdGlmaWNhdGlvbiA9IG5ldyBBUE5Ob3RpZmljYXRpb24oKTtcbiAgbm90aWZpY2F0aW9uLnRvcGljID0gQ29uZmlnLmdldCgnYXBwLmFwbi5pZCcpO1xuICBub3RpZmljYXRpb24uYWxlcnQgPSBub3RlLm1lc3NhZ2U7XG5cbiAgaWYobm90ZS5kYXRhKSB7XG4gICAgbm90aWZpY2F0aW9uLm11dGFibGVDb250ZW50ID0gdHJ1ZTtcbiAgICBub3RpZmljYXRpb24ucGF5bG9hZCA9IG5vdGUuZGF0YTtcbiAgfVxuXG4gIGlmKG5vdGUuYmFkZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgIG5vdGlmaWNhdGlvbi5iYWRnZSA9IG5vdGUuYmFkZ2U7XG4gIH1cblxuICByZXR1cm4gcHJvdmlkZXIuc2VuZChub3RpZmljYXRpb24sIGRldmljZVRva2Vucyk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJCYWRnZXMgPSAoZGV2aWNlVG9rZW5zOiBzdHJpbmdbXSk6IFByb21pc2U8UmVzcG9uc2VzPiA9PiB7XG4gIC8vIFB1c2ggbm90aWZpY2F0aW9uIHRvIGRldmljZVxuICBjb25zdCBwcm92aWRlciA9IGdldEFQTlByb3ZpZGVyKCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbiA9IG5ldyBBUE5Ob3RpZmljYXRpb24oKTtcbiAgbm90aWZpY2F0aW9uLmJhZGdlID0gMDtcblxuICByZXR1cm4gcHJvdmlkZXIuc2VuZChub3RpZmljYXRpb24sIGRldmljZVRva2Vucyk7XG59O1xuIl19