@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.
Files changed (52) hide show
  1. package/lib/config.js +20 -11
  2. package/lib/data/conversations.js +69 -39
  3. package/lib/data/dynamodb.js +60 -27
  4. package/lib/data/email.js +50 -19
  5. package/lib/data/files.js +103 -46
  6. package/lib/data/groups.js +114 -67
  7. package/lib/data/images.js +169 -102
  8. package/lib/data/index.js +234 -24
  9. package/lib/data/ios.js +48 -23
  10. package/lib/data/locations.js +45 -29
  11. package/lib/data/messages.d.ts +2 -2
  12. package/lib/data/messages.js +105 -72
  13. package/lib/data/notifications.js +31 -14
  14. package/lib/data/payments.js +164 -114
  15. package/lib/data/posts.js +144 -87
  16. package/lib/data/reactions.js +58 -33
  17. package/lib/data/s3.js +54 -24
  18. package/lib/data/search.js +32 -19
  19. package/lib/data/sms.js +35 -15
  20. package/lib/data/subscription.js +78 -51
  21. package/lib/data/tags.js +90 -51
  22. package/lib/data/users.js +119 -72
  23. package/lib/index.js +42 -8
  24. package/lib/types/apps.js +1 -1
  25. package/lib/types/arangodb.js +1 -1
  26. package/lib/types/auth.js +1 -1
  27. package/lib/types/conversations.js +1 -1
  28. package/lib/types/email.js +1 -1
  29. package/lib/types/files.js +1 -1
  30. package/lib/types/google.js +1 -1
  31. package/lib/types/groups.js +1 -1
  32. package/lib/types/images.js +1 -1
  33. package/lib/types/index.js +210 -22
  34. package/lib/types/locations.js +1 -1
  35. package/lib/types/messages.d.ts +12 -7
  36. package/lib/types/messages.js +1 -1
  37. package/lib/types/notifications.js +1 -1
  38. package/lib/types/payments.js +1 -1
  39. package/lib/types/posts.js +1 -1
  40. package/lib/types/reactions.js +1 -1
  41. package/lib/types/tags.js +1 -1
  42. package/lib/types/users.d.ts +0 -1
  43. package/lib/types/users.js +1 -1
  44. package/lib/utils/analytics.js +23 -11
  45. package/lib/utils/arangodb.js +48 -19
  46. package/lib/utils/auth.js +31 -15
  47. package/lib/utils/graphql.js +16 -4
  48. package/lib/utils/index.js +78 -11
  49. package/lib/utils/objects.js +30 -10
  50. package/lib/utils/redis.js +21 -8
  51. package/package.json +5 -5
  52. package/index.d.ts +0 -1
@@ -1,3 +1,24 @@
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
+
1
22
  function _templateObject() {
2
23
  var data = _taggedTemplateLiteral(["UPSERT {googleId: ", "}\n INSERT ", "\n UPDATE ", "\n IN locations RETURN NEW"]);
3
24
 
@@ -10,31 +31,24 @@ function _templateObject() {
10
31
 
11
32
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
12
33
 
13
- /**
14
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
15
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
16
- */
17
- import { get as httpGet, queryString } from '@nlabs/rip-hunter';
18
- import { createHash, parseChar, parseId } from '@nlabs/utils';
19
- import { aql } from 'arangojs';
20
- import get from 'lodash/get';
21
- import { Config } from '../config';
22
- import { logError, useDb } from '../utils';
23
34
  var eventCategory = 'locations';
24
- export var addLocation = function addLocation(context, location) {
35
+
36
+ var addLocation = function addLocation(context, location) {
25
37
  var action = 'add';
26
38
  var database = context.database,
27
39
  sessionId = context.userId;
28
40
  var address = location.address,
29
41
  itemId = location.itemId,
30
42
  itemType = location.itemType;
31
- var geocodeUrl = Config.get('google.geocode.url');
43
+
44
+ var geocodeUrl = _config.Config.get('google.geocode.url');
45
+
32
46
  var params = {
33
47
  address: address,
34
- key: Config.get('google.geocode.key')
48
+ key: _config.Config.get('google.geocode.key')
35
49
  };
36
- var url = "".concat(geocodeUrl, "?").concat(queryString(params));
37
- return httpGet(url).then(function (json) {
50
+ var url = "".concat(geocodeUrl, "?").concat((0, _ripHunter.queryString)(params));
51
+ return (0, _ripHunter.get)(url).then(function (json) {
38
52
  var _json$results = json.results,
39
53
  results = _json$results === void 0 ? [] : _json$results,
40
54
  _json$status = json.status,
@@ -42,7 +56,7 @@ export var addLocation = function addLocation(context, location) {
42
56
 
43
57
  if (status === 'OK' && results.length) {
44
58
  var geodata = results[0];
45
- var addressComponents = get(geodata, 'address_components');
59
+ var addressComponents = (0, _get.default)(geodata, 'address_components');
46
60
 
47
61
  var getFieldVal = function getFieldVal(name) {
48
62
  var _ref = addressComponents.find(function (addressField) {
@@ -63,27 +77,27 @@ export var addLocation = function addLocation(context, location) {
63
77
 
64
78
  var now = Date.now(); // Item
65
79
 
66
- var formatItemType = parseChar(itemType).toLowerCase();
67
- var formatItemId = parseId(itemId);
68
- var googleId = get(geodata, 'place_id');
80
+ var formatItemType = (0, _utils.parseChar)(itemType).toLowerCase();
81
+ var formatItemId = (0, _utils.parseId)(itemId);
82
+ var googleId = (0, _get.default)(geodata, 'place_id');
69
83
  var update = {};
70
84
  var insert = {
71
- _key: createHash("post-".concat(sessionId)),
85
+ _key: (0, _utils.createHash)("post-".concat(sessionId)),
72
86
  added: now,
73
87
  city: getFieldVal('locality'),
74
88
  country: getFieldVal('country'),
75
- formatted: get(geodata, 'formatted_address'),
89
+ formatted: (0, _get.default)(geodata, 'formatted_address'),
76
90
  googleId: googleId,
77
- latitude: get(geodata, 'geometry.location.lat'),
78
- longitude: get(geodata, 'geometry.location.lng'),
91
+ latitude: (0, _get.default)(geodata, 'geometry.location.lat'),
92
+ longitude: (0, _get.default)(geodata, 'geometry.location.lng'),
79
93
  state: getFieldVal('administrative_area_level_1'),
80
94
  street: [streetNumber, route].filter(function (obj) {
81
95
  return obj;
82
96
  }).join(' '),
83
97
  zip: getFieldVal('postal_code')
84
98
  };
85
- var aqlQry = aql(_templateObject(), googleId, insert, update);
86
- return useDb(database).query(aqlQry).then(function (cursor) {
99
+ var aqlQry = (0, _arangojs.aql)(_templateObject(), googleId, insert, update);
100
+ return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
87
101
  return cursor.next();
88
102
  }).then(function () {
89
103
  var updatedLocation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -101,10 +115,10 @@ export var addLocation = function addLocation(context, location) {
101
115
 
102
116
 
103
117
  if (itemDocId) {
104
- var edgeCollection = useDb(database).edgeCollection('hasLocation');
118
+ var edgeCollection = (0, _utils2.useDb)(database).edgeCollection('hasLocation');
105
119
  var locationId = updatedLocationKey;
106
120
  var locationDocId = "locations/".concat(locationId);
107
- var edgeId = createHash("hasLocation-".concat(locationId, "-").concat(sessionId));
121
+ var edgeId = (0, _utils.createHash)("hasLocation-".concat(locationId, "-").concat(sessionId));
108
122
  var edge = {
109
123
  _key: edgeId
110
124
  };
@@ -116,7 +130,7 @@ export var addLocation = function addLocation(context, location) {
116
130
 
117
131
  return updatedLocation;
118
132
  }).catch(function (error) {
119
- return logError({
133
+ return (0, _utils2.logError)({
120
134
  action: action,
121
135
  category: eventCategory,
122
136
  label: 'db_error'
@@ -129,4 +143,6 @@ export var addLocation = function addLocation(context, location) {
129
143
  return {};
130
144
  });
131
145
  };
132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2xvY2F0aW9ucy50cyJdLCJuYW1lcyI6WyJnZXQiLCJodHRwR2V0IiwicXVlcnlTdHJpbmciLCJjcmVhdGVIYXNoIiwicGFyc2VDaGFyIiwicGFyc2VJZCIsImFxbCIsIkNvbmZpZyIsImxvZ0Vycm9yIiwidXNlRGIiLCJldmVudENhdGVnb3J5IiwiYWRkTG9jYXRpb24iLCJjb250ZXh0IiwibG9jYXRpb24iLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImFkZHJlc3MiLCJpdGVtSWQiLCJpdGVtVHlwZSIsImdlb2NvZGVVcmwiLCJwYXJhbXMiLCJrZXkiLCJ1cmwiLCJ0aGVuIiwianNvbiIsInJlc3VsdHMiLCJzdGF0dXMiLCJsZW5ndGgiLCJnZW9kYXRhIiwiYWRkcmVzc0NvbXBvbmVudHMiLCJnZXRGaWVsZFZhbCIsIm5hbWUiLCJmaW5kIiwiYWRkcmVzc0ZpZWxkIiwidHlwZXMiLCJmaW5kSW5kZXgiLCJmaWVsZFR5cGUiLCJzaG9ydF9uYW1lIiwic2hvcnROYW1lIiwic3RyZWV0TnVtYmVyIiwicm91dGUiLCJub3ciLCJEYXRlIiwiZm9ybWF0SXRlbVR5cGUiLCJ0b0xvd2VyQ2FzZSIsImZvcm1hdEl0ZW1JZCIsImdvb2dsZUlkIiwidXBkYXRlIiwiaW5zZXJ0IiwiX2tleSIsImFkZGVkIiwiY2l0eSIsImNvdW50cnkiLCJmb3JtYXR0ZWQiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInN0YXRlIiwic3RyZWV0IiwiZmlsdGVyIiwib2JqIiwiam9pbiIsInppcCIsImFxbFFyeSIsInF1ZXJ5IiwiY3Vyc29yIiwibmV4dCIsInVwZGF0ZWRMb2NhdGlvbiIsIml0ZW1Eb2NJZCIsInVwZGF0ZWRMb2NhdGlvbktleSIsImVkZ2VDb2xsZWN0aW9uIiwibG9jYXRpb25JZCIsImxvY2F0aW9uRG9jSWQiLCJlZGdlSWQiLCJlZGdlIiwic2F2ZSIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVs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RCxFQUk5QkYsS0FKOEIsRUFJdkJsRSxPQUp1QixDQUFSLENBSU5hLElBSk0sQ0FJRDtBQUFBLGlCQUFNLElBQU47QUFBQSxTQUpDLENBQWxCO0FBQUEsT0E1QkYsQ0FBUDtBQWlDRDs7QUFFRCxXQUFPLEVBQVA7QUFDRCxHQWxGSSxDQUFQO0FBbUZELENBOUZNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXQsIHF1ZXJ5U3RyaW5nfSBmcm9tICdAbmxhYnMvcmlwLWh1bnRlcic7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge0dvb2dsZU1hcHNBZGRyZXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMvZ29vZ2xlJztcbmltcG9ydCB7TG9jYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9sb2NhdGlvbnMnO1xuaW1wb3J0IHtsb2dFcnJvciwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2xvY2F0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBhZGRMb2NhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhdGlvbjogTG9jYXRpb25UeXBlKTogUHJvbWlzZTxMb2NhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7YWRkcmVzcywgaXRlbUlkLCBpdGVtVHlwZX0gPSBsb2NhdGlvbjtcbiAgY29uc3QgZ2VvY29kZVVybDogc3RyaW5nID0gQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUudXJsJyk7XG4gIGNvbnN0IHBhcmFtczogb2JqZWN0ID0ge1xuICAgIGFkZHJlc3MsXG4gICAga2V5OiBDb25maWcuZ2V0KCdnb29nbGUuZ2VvY29kZS5rZXknKVxuICB9O1xuICBjb25zdCB1cmw6IHN0cmluZyA9IGAke2dlb2NvZGVVcmx9PyR7cXVlcnlTdHJpbmcocGFyYW1zKX1gO1xuXG4gIHJldHVybiBodHRwR2V0KHVybClcbiAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgY29uc3Qge3Jlc3VsdHMgPSBbXSwgc3RhdHVzID0gJyd9ID0ganNvbjtcblxuICAgICAgaWYoc3RhdHVzID09PSAnT0snICYmIHJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGdlb2RhdGE6IG9iamVjdCA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IGFkZHJlc3NDb21wb25lbnRzOiBHb29nbGVNYXBzQWRkcmVzc1R5cGVbXSA9IGdldChnZW9kYXRhLCAnYWRkcmVzc19jb21wb25lbnRzJyk7XG4gICAgICAgIGNvbnN0IGdldEZpZWxkVmFsID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgY29uc3Qge3Nob3J0X25hbWU6IHNob3J0TmFtZSA9ICcnfSA9IGFkZHJlc3NDb21wb25lbnRzLmZpbmQoKGFkZHJlc3NGaWVsZDogR29vZ2xlTWFwc0FkZHJlc3NUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlcyA9IGFkZHJlc3NGaWVsZC50eXBlcyB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlcy5maW5kSW5kZXgoKGZpZWxkVHlwZTogc3RyaW5nKSA9PiBmaWVsZFR5cGUgPT09IG5hbWUpID49IDA7XG4gICAgICAgICAgfSkgfHwge307XG5cbiAgICAgICAgICByZXR1cm4gc2hvcnROYW1lO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFN0cmVldFxuICAgICAgICBjb25zdCBzdHJlZXROdW1iZXI6IHN0cmluZyA9IGdldEZpZWxkVmFsKCdzdHJlZXRfbnVtYmVyJyk7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSBnZXRGaWVsZFZhbCgncm91dGUnKTtcblxuICAgICAgICAvLyBMb2NhdGlvblxuICAgICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gSXRlbVxuICAgICAgICBjb25zdCBmb3JtYXRJdGVtVHlwZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1UeXBlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlSWQ6IHN0cmluZyA9IGdldChnZW9kYXRhLCAncGxhY2VfaWQnKTtcbiAgICAgICAgY29uc3QgdXBkYXRlOiBMb2NhdGlvblR5cGUgPSB7fTtcbiAgICAgICAgY29uc3QgaW5zZXJ0OiBMb2NhdGlvblR5cGUgPSB7XG4gICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgcG9zdC0ke3Nlc3Npb25JZH1gKSxcbiAgICAgICAgICBhZGRlZDogbm93LFxuICAgICAgICAgIGNpdHk6IGdldEZpZWxkVmFsKCdsb2NhbGl0eScpLFxuICAgICAgICAgIGNvdW50cnk6IGdldEZpZWxkVmFsKCdjb3VudHJ5JyksXG4gICAgICAgICAgZm9ybWF0dGVkOiBnZXQoZ2VvZGF0YSwgJ2Zvcm1hdHRlZF9hZGRyZXNzJyksXG4gICAgICAgICAgZ29vZ2xlSWQsXG4gICAgICAgICAgbGF0aXR1ZGU6IGdldChnZW9kYXRhLCAnZ2VvbWV0cnkubG9jYXRpb24ubGF0JyksXG4gICAgICAgICAgbG9uZ2l0dWRlOiBnZXQoZ2VvZGF0YSwgJ2dlb21ldHJ5LmxvY2F0aW9uLmxuZycpLFxuICAgICAgICAgIHN0YXRlOiBnZXRGaWVsZFZhbCgnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJyksXG4gICAgICAgICAgc3RyZWV0OiBbc3RyZWV0TnVtYmVyLCByb3V0ZV0uZmlsdGVyKChvYmopID0+IG9iaikuam9pbignICcpLFxuICAgICAgICAgIHppcDogZ2V0RmllbGRWYWwoJ3Bvc3RhbF9jb2RlJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge2dvb2dsZUlkOiAke2dvb2dsZUlkfX1cbiAgICAgICAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgICAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgICAgICAgIElOIGxvY2F0aW9ucyBSRVRVUk4gTkVXYDtcblxuICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAudGhlbigodXBkYXRlZExvY2F0aW9uOiBMb2NhdGlvblR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW1Eb2NJZDogc3RyaW5nO1xuICAgICAgICAgICAgY29uc3Qge19rZXk6IHVwZGF0ZWRMb2NhdGlvbktleX0gPSB1cGRhdGVkTG9jYXRpb247XG5cbiAgICAgICAgICAgIHN3aXRjaChmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdwb3N0cyc6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gYHBvc3RzLyR7Zm9ybWF0SXRlbUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgdmFsaWQgaXRlbSBkb2MgaWQsIGNyZWF0ZSBhbiBlZGdlXG4gICAgICAgICAgICBpZihpdGVtRG9jSWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZSkuZWRnZUNvbGxlY3Rpb24oJ2hhc0xvY2F0aW9uJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uSWQ6IHN0cmluZyA9IHVwZGF0ZWRMb2NhdGlvbktleTtcbiAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25Eb2NJZDogc3RyaW5nID0gYGxvY2F0aW9ucy8ke2xvY2F0aW9uSWR9YDtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgaGFzTG9jYXRpb24tJHtsb2NhdGlvbklkfS0ke3Nlc3Npb25JZH1gKTtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZTogYW55ID0ge19rZXk6IGVkZ2VJZH07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwgaXRlbURvY0lkLCBsb2NhdGlvbkRvY0lkKS50aGVuKCgpID0+IHVwZGF0ZWRMb2NhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUgbmV3IGxvY2F0aW9uXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZExvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICAgICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7fTtcbiAgICB9KTtcbn07XG4iXX0=
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,7 +1,7 @@
1
1
  import { ApiContext } from '../types/auth';
2
- import { MessageType } from '../types/messages';
2
+ import { MessageInputType, MessageType } from '../types/messages';
3
3
  export declare const getMessageList: (context: ApiContext, convoId: string, from: number, to: number) => Promise<MessageType[]>;
4
- export declare const updateMessage: (context: ApiContext, message: MessageType) => Promise<MessageType>;
4
+ export declare const updateMessage: (context: ApiContext, message: MessageInputType) => Promise<MessageType>;
5
5
  export declare const saveMessage: (context: ApiContext, msgId: string, convoId: string) => Promise<MessageType>;
6
6
  export declare const unsaveMessage: (context: ApiContext, msgId: string, convoId: string) => Promise<MessageType>;
7
7
  export declare const deleteMessage: (context: ApiContext, msgId: string, convoId: string) => Promise<MessageType>;
@@ -1,3 +1,24 @@
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
+
1
22
  function _templateObject5() {
2
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"]);
3
24
 
@@ -39,7 +60,7 @@ function _templateObject2() {
39
60
  }
40
61
 
41
62
  function _templateObject() {
42
- var data = _taggedTemplateLiteral(["UPSERT {_key: ", ", to: ", "}\n INSERT ", "\n UPDATE ", "\n IN messages RETURN NEW"]);
63
+ var data = _taggedTemplateLiteral(["UPSERT {_key: ", ", convoId: ", "}\n INSERT ", "\n UPDATE ", "\n IN messages RETURN NEW"]);
43
64
 
44
65
  _templateObject = function _templateObject() {
45
66
  return data;
@@ -54,63 +75,58 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
54
75
 
55
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; }
56
77
 
57
- /**
58
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
59
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
60
- */
61
- import { createHash, parseId, parseVarChar } from '@nlabs/utils';
62
- import { aql } from 'arangojs';
63
- import cloneDeep from 'lodash/cloneDeep';
64
- import isEmpty from 'lodash/isEmpty';
65
- import { getLimit, useDb } from '../utils';
66
- import { getConversation } from './conversations'; // const eventCategory: string = 'messages';
67
-
68
- export var getMessageList = function getMessageList(context, convoId, from, to) {
78
+ // const eventCategory: string = 'messages';
79
+ var getMessageList = function getMessageList(context, convoId, from, to) {
69
80
  var database = context.database;
70
- var formatConvoId = parseId(convoId);
71
- return getConversation(context, formatConvoId).then(function (conversation) {
81
+ var formatConvoId = (0, _utils.parseId)(convoId);
82
+ return (0, _conversations.getConversation)(context, formatConvoId).then(function (conversation) {
72
83
  var conversationKey = conversation._key;
73
- var limit = getLimit(from, to);
84
+ var limit = (0, _utils2.getLimit)(from, to);
74
85
  var aqlQry = "FOR m IN messages\n FILTER m.to == \"".concat(conversationKey, "\"\n ").concat(limit.aql, "\n SORT m.added\n RETURN m");
75
- return useDb(database).query(aqlQry).then(function (cursor) {
86
+ return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
76
87
  return cursor.all();
77
88
  }).catch(function (error) {
78
89
  throw error;
79
90
  });
80
91
  });
81
92
  };
82
- export var updateMessage = function updateMessage(context, message) {
93
+
94
+ exports.getMessageList = getMessageList;
95
+
96
+ var updateMessage = function updateMessage(context, message) {
83
97
  var database = context.database,
84
98
  sessionId = context.userId;
85
- var files = message.files,
86
- messageId = message.id,
87
- toId = message.toId;
88
- var formatToId = parseId(toId);
99
+ var convoId = message.convoId,
100
+ files = message.files,
101
+ images = message.images,
102
+ msgId = message.msgId;
103
+ var formatConvoId = (0, _utils.parseId)(convoId);
89
104
 
90
- if (formatToId === '') {
91
- throw new Error('required_to');
105
+ if (formatConvoId === '') {
106
+ throw new Error('required_convoId');
92
107
  }
93
108
 
94
- return getConversation(context, formatToId).then(function (conversation) {
109
+ return (0, _conversations.getConversation)(context, formatConvoId).then(function (conversation) {
95
110
  var conversationKey = conversation._key;
96
- var now = new Date().getTime();
111
+ var now = Date.now();
97
112
  var update = {
98
- content: parseVarChar(message.content, 640),
113
+ content: (0, _utils.parseVarChar)(message.content, 640),
114
+ convoId: formatConvoId,
99
115
  files: files || [],
100
- fromId: sessionId,
116
+ images: images || [],
101
117
  modified: now,
102
- toId: formatToId
118
+ userId: sessionId
103
119
  };
104
- var formatId = parseId(messageId);
105
- var updatedId = formatId === '' ? createHash("message-".concat(sessionId)) : formatId;
120
+ var formatMsgId = (0, _utils.parseId)(msgId);
121
+ var updatedId = formatMsgId === '' ? (0, _utils.createHash)("message-".concat(sessionId)) : formatMsgId;
106
122
 
107
- var insert = _objectSpread({}, cloneDeep(update), {
123
+ var insert = _objectSpread({}, (0, _cloneDeep.default)(update), {
108
124
  _key: updatedId,
109
125
  added: now
110
126
  });
111
127
 
112
- var aqlQry = aql(_templateObject(), updatedId, conversationKey, insert, update);
113
- return useDb(database).query(aqlQry).then(function (cursor) {
128
+ var aqlQry = (0, _arangojs.aql)(_templateObject(), updatedId, conversationKey, insert, update);
129
+ return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
114
130
  return cursor.next();
115
131
  }).then(function () {
116
132
  var updatedMessage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -145,19 +161,22 @@ export var updateMessage = function updateMessage(context, message) {
145
161
  });
146
162
  });
147
163
  };
148
- export var saveMessage = function saveMessage(context, msgId, convoId) {
164
+
165
+ exports.updateMessage = updateMessage;
166
+
167
+ var saveMessage = function saveMessage(context, msgId, convoId) {
149
168
  var database = context.database,
150
169
  sessionId = context.userId;
151
- var formatId = parseId(msgId);
152
- return getConversation(context, convoId).then(function (conversation) {
170
+ var formatId = (0, _utils.parseId)(msgId);
171
+ return (0, _conversations.getConversation)(context, convoId).then(function (conversation) {
153
172
  var conversationKey = conversation._key;
154
- var aqlQry = aql(_templateObject2(), formatId, conversationKey, sessionId);
155
- return useDb(database).query(aqlQry).then(function (cursor) {
173
+ var aqlQry = (0, _arangojs.aql)(_templateObject2(), formatId, conversationKey, sessionId);
174
+ return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
156
175
  return cursor.next();
157
176
  }).then(function () {
158
177
  var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
159
178
 
160
- if (!isEmpty(message)) {// Broadcast to message box
179
+ if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
161
180
  // const msg: MessageType = Messages.getMessageObject(message);
162
181
  // io.to(message.toId).emit('message_save', msg);
163
182
  }
@@ -168,19 +187,22 @@ export var saveMessage = function saveMessage(context, msgId, convoId) {
168
187
  });
169
188
  });
170
189
  };
171
- export var unsaveMessage = function unsaveMessage(context, msgId, convoId) {
190
+
191
+ exports.saveMessage = saveMessage;
192
+
193
+ var unsaveMessage = function unsaveMessage(context, msgId, convoId) {
172
194
  var database = context.database,
173
195
  sessionId = context.userId;
174
- var formatId = parseId(msgId);
175
- return getConversation(context, convoId).then(function (conversation) {
196
+ var formatId = (0, _utils.parseId)(msgId);
197
+ return (0, _conversations.getConversation)(context, convoId).then(function (conversation) {
176
198
  var conversationKey = conversation._key;
177
- var aqlQry = aql(_templateObject3(), formatId, conversationKey, sessionId);
178
- return useDb(database).query(aqlQry).then(function (cursor) {
199
+ var aqlQry = (0, _arangojs.aql)(_templateObject3(), formatId, conversationKey, sessionId);
200
+ return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
179
201
  return cursor.next();
180
202
  }).then(function () {
181
203
  var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
182
204
 
183
- if (!isEmpty(message)) {// Broadcast to message box
205
+ if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
184
206
  // const msg: MessageType = Messages.getMessageObject(message);
185
207
  // io.to(message.id).emit('message_unsave', msg);
186
208
  }
@@ -191,19 +213,22 @@ export var unsaveMessage = function unsaveMessage(context, msgId, convoId) {
191
213
  });
192
214
  });
193
215
  };
194
- export var deleteMessage = function deleteMessage(context, msgId, convoId) {
216
+
217
+ exports.unsaveMessage = unsaveMessage;
218
+
219
+ var deleteMessage = function deleteMessage(context, msgId, convoId) {
195
220
  var database = context.database,
196
221
  sessionId = context.userId;
197
- var formatId = parseId(msgId);
198
- return getConversation(context, convoId).then(function (conversation) {
222
+ var formatId = (0, _utils.parseId)(msgId);
223
+ return (0, _conversations.getConversation)(context, convoId).then(function (conversation) {
199
224
  var conversationKey = conversation._key;
200
- var aqlQry = aql(_templateObject4(), formatId, conversationKey, sessionId);
201
- return useDb(database).query(aqlQry).then(function (cursor) {
225
+ var aqlQry = (0, _arangojs.aql)(_templateObject4(), formatId, conversationKey, sessionId);
226
+ return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
202
227
  return cursor.next();
203
228
  }).then(function () {
204
229
  var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
205
230
 
206
- if (!isEmpty(message)) {// Broadcast to message box
231
+ if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
207
232
  // const msg: MessageType = Messages.getMessageObject(message);
208
233
  // io.to(message.toId).emit('message_delete', msg);
209
234
  }
@@ -214,30 +239,36 @@ export var deleteMessage = function deleteMessage(context, msgId, convoId) {
214
239
  });
215
240
  });
216
241
  };
217
- export var getMessage = function getMessage(data) {
218
- var msgAdded = data.added,
219
- msgContent = data.content,
220
- msgFiles = data.files,
221
- msgFromId = data.fromId,
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,
222
250
  msgId = data._key,
223
- msgRead = data.read,
224
- msgSaved = data.saved,
225
- msgToId = data.toId;
251
+ read = data.read,
252
+ saved = data.saved,
253
+ userId = data.userId;
226
254
  return {
227
- added: msgAdded,
228
- content: msgContent,
229
- files: msgFiles,
230
- fromId: msgFromId,
231
- id: msgId,
232
- read: msgRead,
233
- saved: msgSaved,
234
- toId: msgToId
255
+ added: added,
256
+ content: content,
257
+ convoId: convoId,
258
+ files: files,
259
+ msgId: msgId,
260
+ read: read,
261
+ saved: saved,
262
+ userId: userId
235
263
  };
236
264
  };
237
- export var cleanMessages = function cleanMessages(database) {
265
+
266
+ exports.getMessage = getMessage;
267
+
268
+ var cleanMessages = function cleanMessages(database) {
238
269
  // Remove all messages that are over 60 days and not saved
239
- var aqlQry = aql(_templateObject5());
240
- return useDb(database).query(aqlQry).then(function (cursor) {
270
+ var aqlQry = (0, _arangojs.aql)(_templateObject5());
271
+ return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
241
272
  return cursor.all();
242
273
  }).then(function (list) {
243
274
  return list.length;
@@ -245,4 +276,6 @@ export var cleanMessages = function cleanMessages(database) {
245
276
  throw error;
246
277
  });
247
278
  };
248
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbImNyZWF0ZUhhc2giLCJwYXJzZUlkIiwicGFyc2VWYXJDaGFyIiwiYXFsIiwiY2xvbmVEZWVwIiwiaXNFbXB0eSIsImdldExpbWl0IiwidXNlRGIiLCJnZXRDb252ZXJzYXRpb24iLCJnZXRNZXNzYWdlTGlzdCIsImNvbnRleHQiLCJjb252b0lkIiwiZnJvbSIsInRvIiwiZGF0YWJhc2UiLCJmb3JtYXRDb252b0lkIiwidGhlbiIsImNvbnZlcnNhdGlvbiIsImNvbnZlcnNhdGlvbktleSIsIl9rZXkiLCJsaW1pdCIsImFxbFFyeSIsInF1ZXJ5IiwiY3Vyc29yIiwiYWxsIiwiY2F0Y2giLCJlcnJvciIsInVwZGF0ZU1lc3NhZ2UiLCJtZXNzYWdlIiwic2Vzc2lvbklkIiwidXNlcklkIiwiZmlsZXMiLCJtZXNzYWdlSWQiLCJpZCIsInRvSWQiLCJmb3JtYXRUb0lkIiwiRXJyb3IiLCJub3ciLCJEYXRlIiwiZ2V0VGltZSIsInVwZGF0ZSIsImNvbnRlbnQiLCJmcm9tSWQiLCJtb2RpZmllZCIsImZvcm1hdElkIiwidXBkYXRlZElkIiwiaW5zZXJ0IiwiYWRkZWQiLCJuZXh0IiwidXBkYXRlZE1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwic2F2ZU1lc3NhZ2UiLCJtc2dJZCIsInVuc2F2ZU1lc3NhZ2UiLCJkZWxldGVNZXNzYWdlIiwiZ2V0TWVzc2FnZSIsImRhdGEiLCJtc2dBZGRlZCIsIm1zZ0NvbnRlbnQiLCJtc2dGaWxlcyIsIm1zZ0Zyb21JZCIsIm1zZ1JlYWQiLCJyZWFkIiwibXNnU2F2ZWQiLCJzYXZlZCIsIm1zZ1RvSWQiLCJjbGVhbk1lc3NhZ2VzIiwibGlzdCIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUlBLFNBQVFBLFVBQVIsRUFBb0JDLE9BQXBCLEVBQTZCQyxZ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TEM7QUFNTFUsSUFBQUEsSUFBSSxFQUFFRCxPQU5EO0FBT0xHLElBQUFBLEtBQUssRUFBRUQsUUFQRjtBQVFMOUIsSUFBQUEsSUFBSSxFQUFFZ0M7QUFSRCxHQUFQO0FBVUQsQ0F0Qk07QUF3QlAsT0FBTyxJQUFNQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQUNyRCxRQUFELEVBQXVDO0FBQ2xFO0FBQ0EsTUFBTU8sTUFBTSxHQUFHbEIsR0FBSCxvQkFBWjtBQUtBLFNBQU9JLEtBQUssQ0FBQ08sUUFBRCxDQUFMLENBQWdCUSxLQUFoQixDQUFzQkQsTUFBdEIsRUFDSkwsSUFESSxDQUNDLFVBQUNPLE1BQUQ7QUFBQSxXQUF5QkEsTUFBTSxDQUFDQyxHQUFQLEVBQXpCO0FBQUEsR0FERCxFQUVKUixJQUZJLENBRUMsVUFBQ29ELElBQUQ7QUFBQSxXQUF5QkEsSUFBSSxDQUFDQyxNQUE5QjtBQUFBLEdBRkQsRUFHSjVDLEtBSEksQ0FHRSxVQUFDQyxLQUFELEVBQWtCO0FBQ3ZCLFVBQU1BLEtBQU47QUFDRCxHQUxJLENBQVA7QUFNRCxDQWJNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VJZCwgcGFyc2VWYXJDaGFyfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvYXFsLXF1ZXJ5JztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvY3Vyc29yJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5cbmltcG9ydCB7QXJhbmdvREJMaW1pdH0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGInO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoJztcbmltcG9ydCB7Q29udmVyc2F0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvY29udmVyc2F0aW9ucyc7XG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi90eXBlcy9tZXNzYWdlcyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtnZXRDb252ZXJzYXRpb259IGZyb20gJy4vY29udmVyc2F0aW9ucyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdtZXNzYWdlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRNZXNzYWdlTGlzdCA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udm9JZDogc3RyaW5nLFxuICBmcm9tOiBudW1iZXIsXG4gIHRvOiBudW1iZXJcbik6IFByb21pc2U8TWVzc2FnZVR5cGVbXT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0Q29udm9JZDogc3RyaW5nID0gcGFyc2VJZChjb252b0lkKTtcblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGZvcm1hdENvbnZvSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBsaW1pdDogQXJhbmdvREJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgICAgIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgICAgRklMVEVSIG0udG8gPT0gXCIke2NvbnZlcnNhdGlvbktleX1cIlxuICAgICAgICAgICR7bGltaXQuYXFsfVxuICAgICAgICAgIFNPUlQgbS5hZGRlZFxuICAgICAgICAgIFJFVFVSTiBtYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZTogTWVzc2FnZVR5cGUpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3Qge2ZpbGVzLCBpZDogbWVzc2FnZUlkLCB0b0lkfSA9IG1lc3NhZ2U7XG4gIGNvbnN0IGZvcm1hdFRvSWQ6IHN0cmluZyA9IHBhcnNlSWQodG9JZCk7XG5cbiAgaWYoZm9ybWF0VG9JZCA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlcXVpcmVkX3RvJyk7XG4gIH1cblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGZvcm1hdFRvSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBub3c6IG51bWJlciA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgICBjb25zdCB1cGRhdGU6IE1lc3NhZ2VUeXBlID0ge1xuICAgICAgICBjb250ZW50OiBwYXJzZVZhckNoYXIobWVzc2FnZS5jb250ZW50LCA2NDApLFxuICAgICAgICBmaWxlczogZmlsZXMgfHwgW10sXG4gICAgICAgIGZyb21JZDogc2Vzc2lvbklkLFxuICAgICAgICBtb2RpZmllZDogbm93LFxuICAgICAgICB0b0lkOiBmb3JtYXRUb0lkXG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobWVzc2FnZUlkKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRJZDogc3RyaW5nID0gZm9ybWF0SWQgPT09ICcnID8gY3JlYXRlSGFzaChgbWVzc2FnZS0ke3Nlc3Npb25JZH1gKSA6IGZvcm1hdElkO1xuICAgICAgY29uc3QgaW5zZXJ0OiBNZXNzYWdlVHlwZSA9IHtcbiAgICAgICAgLi4uY2xvbmVEZWVwKHVwZGF0ZSksXG4gICAgICAgIF9rZXk6IHVwZGF0ZWRJZCxcbiAgICAgICAgYWRkZWQ6IG5vd1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtfa2V5OiAke3VwZGF0ZWRJZH0sIHRvOiAke2NvbnZlcnNhdGlvbktleX19XG4gICAgICAgICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgICAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgICAgICBJTiBtZXNzYWdlcyBSRVRVUk4gTkVXYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigodXBkYXRlZE1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICAvLyBjb25zdCB7XG4gICAgICAgICAgLy8gICBfa2V5OiBtc2dJZCxcbiAgICAgICAgICAvLyAgIGFkZGVkOiBtc2dBZGRlZCxcbiAgICAgICAgICAvLyAgIGNvbnRlbnQ6IG1zZ0NvbnRlbnQsXG4gICAgICAgICAgLy8gICBmaWxlczogbXNnRmlsZXMsXG4gICAgICAgICAgLy8gICBmcm9tSWQ6IG1zZ0Zyb21JZCxcbiAgICAgICAgICAvLyAgIHJlYWQ6IG1zZ1JlYWQsXG4gICAgICAgICAgLy8gICBzYXZlZDogbXNnU2F2ZWQsXG4gICAgICAgICAgLy8gICB0b0lkOiBtc2dUb0lkXG4gICAgICAgICAgLy8gfSA9IHVwZGF0ZWRNZXNzYWdlO1xuXG4gICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgLy8gaWYoaW8pIHtcbiAgICAgICAgICAvLyAgIGNvbnN0IG1zZzogTWVzc2FnZVR5cGUgPSB7XG4gICAgICAgICAgLy8gICAgIGFkZGVkOiBtc2dBZGRlZCxcbiAgICAgICAgICAvLyAgICAgY29udGVudDogbXNnQ29udGVudCxcbiAgICAgICAgICAvLyAgICAgZmlsZXM6IG1zZ0ZpbGVzLFxuICAgICAgICAgIC8vICAgICBmcm9tSWQ6IG1zZ0Zyb21JZCxcbiAgICAgICAgICAvLyAgICAgaWQ6IG1zZ0lkLFxuICAgICAgICAgIC8vICAgICByZWFkOiBtc2dSZWFkLFxuICAgICAgICAgIC8vICAgICBzYXZlZDogbXNnU2F2ZWQsXG4gICAgICAgICAgLy8gICAgIHRvSWQ6IG1zZ1RvSWRcbiAgICAgICAgICAvLyAgIH07XG5cbiAgICAgICAgICAvLyAgIGlvLnRvKG1zZ1RvSWQpLmVtaXQoJ21lc3NhZ2VfdXBkYXRlJywgbXNnKTtcbiAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygndXBkYXRlZE1lc3NhZ2UnLCB1cGRhdGVkTWVzc2FnZSk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRNZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtc2dJZDogc3RyaW5nLCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobXNnSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9XG4gICAgICAgIFVQREFURSBtIFdJVEgge3NhdmVkOiBBUFBFTkQobS5zYXZlZCwgJHtzZXNzaW9uSWR9LCB0cnVlKX0gSU4gbWVzc2FnZXNcbiAgICAgICAgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9zYXZlJywgbXNnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdW5zYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtc2dJZDogc3RyaW5nLCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobXNnSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9XG4gICAgICAgICAgVVBEQVRFIG0gV0lUSCB7c2F2ZWQ6IFJFTU9WRV9WQUxVRShtLnNhdmVkLCAke3Nlc3Npb25JZH0pfSBJTiBtZXNzYWdlc1xuICAgICAgICAgIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpIHtcbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBtZXNzYWdlIGJveFxuICAgICAgICAgICAgLy8gY29uc3QgbXNnOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VzLmdldE1lc3NhZ2VPYmplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBpby50byhtZXNzYWdlLmlkKS5lbWl0KCdtZXNzYWdlX3Vuc2F2ZScsIG1zZyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbXNnSWQ6IHN0cmluZywgY29udm9JZDogc3RyaW5nKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdElkOiBzdHJpbmcgPSBwYXJzZUlkKG1zZ0lkKTtcblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGNvbnZvSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fSAmJiBtLmZyb20gPT0gJHtzZXNzaW9uSWR9XG4gICAgICAgIFJFTU9WRSBtIElOIG1lc3NhZ2VzXG4gICAgICAgIFJFVFVSTiBPTERgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpIHtcbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBtZXNzYWdlIGJveFxuICAgICAgICAgICAgLy8gY29uc3QgbXNnOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VzLmdldE1lc3NhZ2VPYmplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBpby50byhtZXNzYWdlLnRvSWQpLmVtaXQoJ21lc3NhZ2VfZGVsZXRlJywgbXNnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVzc2FnZSA9IChkYXRhOiBNZXNzYWdlVHlwZSk6IE1lc3NhZ2VUeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIGFkZGVkOiBtc2dBZGRlZCxcbiAgICBjb250ZW50OiBtc2dDb250ZW50LFxuICAgIGZpbGVzOiBtc2dGaWxlcyxcbiAgICBmcm9tSWQ6IG1zZ0Zyb21JZCxcbiAgICBfa2V5OiBtc2dJZCxcbiAgICByZWFkOiBtc2dSZWFkLFxuICAgIHNhdmVkOiBtc2dTYXZlZCxcbiAgICB0b0lkOiBtc2dUb0lkXG4gIH0gPSBkYXRhO1xuXG4gIHJldHVybiB7XG4gICAgYWRkZWQ6IG1zZ0FkZGVkLFxuICAgIGNvbnRlbnQ6IG1zZ0NvbnRlbnQsXG4gICAgZmlsZXM6IG1zZ0ZpbGVzLFxuICAgIGZyb21JZDogbXNnRnJvbUlkLFxuICAgIGlkOiBtc2dJZCxcbiAgICByZWFkOiBtc2dSZWFkLFxuICAgIHNhdmVkOiBtc2dTYXZlZCxcbiAgICB0b0lkOiBtc2dUb0lkXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYW5NZXNzYWdlcyA9IChkYXRhYmFzZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgLy8gUmVtb3ZlIGFsbCBtZXNzYWdlcyB0aGF0IGFyZSBvdmVyIDYwIGRheXMgYW5kIG5vdCBzYXZlZFxuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgIEZJTFRFUiBtLmFkZGVkIDwgREFURV9USU1FU1RBTVAoREFURV9TVUJUUkFDVChEQVRFX05PVygpLCA2MCwgJ2RheScpKSAmJiBMRU5HVEgobS5zYXZlZCkgPiAwXG4gICAgICBSRU1PVkUgbSBJTiBtZXNzYWdlc1xuICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigobGlzdDogTWVzc2FnZVR5cGVbXSkgPT4gbGlzdC5sZW5ndGgpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcbiJdfQ==
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==