@nlabs/reaktor 0.1.1 → 0.1.2

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 (98) hide show
  1. package/package.json +5 -5
  2. package/src/config.ts +8 -2
  3. package/src/data/posts.ts +79 -60
  4. package/src/types/posts.ts +1 -0
  5. package/lib/config.d.ts +0 -21
  6. package/lib/config.js +0 -127
  7. package/lib/data/conversations.d.ts +0 -6
  8. package/lib/data/conversations.js +0 -197
  9. package/lib/data/dynamodb.d.ts +0 -8
  10. package/lib/data/dynamodb.js +0 -139
  11. package/lib/data/email.d.ts +0 -7
  12. package/lib/data/email.js +0 -163
  13. package/lib/data/files.d.ts +0 -16
  14. package/lib/data/files.js +0 -406
  15. package/lib/data/groups.d.ts +0 -13
  16. package/lib/data/groups.js +0 -354
  17. package/lib/data/images.d.ts +0 -12
  18. package/lib/data/images.js +0 -667
  19. package/lib/data/index.d.ts +0 -19
  20. package/lib/data/index.js +0 -24
  21. package/lib/data/ios.d.ts +0 -6
  22. package/lib/data/ios.js +0 -302
  23. package/lib/data/locations.d.ts +0 -3
  24. package/lib/data/locations.js +0 -132
  25. package/lib/data/messages.d.ts +0 -9
  26. package/lib/data/messages.js +0 -248
  27. package/lib/data/notifications.d.ts +0 -5
  28. package/lib/data/notifications.js +0 -42
  29. package/lib/data/payments.d.ts +0 -11
  30. package/lib/data/payments.js +0 -748
  31. package/lib/data/posts.d.ts +0 -16
  32. package/lib/data/posts.js +0 -540
  33. package/lib/data/reactions.d.ts +0 -6
  34. package/lib/data/reactions.js +0 -218
  35. package/lib/data/s3.d.ts +0 -6
  36. package/lib/data/s3.js +0 -103
  37. package/lib/data/search.d.ts +0 -3
  38. package/lib/data/search.js +0 -98
  39. package/lib/data/sms.d.ts +0 -3
  40. package/lib/data/sms.js +0 -59
  41. package/lib/data/subscription.d.ts +0 -7
  42. package/lib/data/subscription.js +0 -284
  43. package/lib/data/tags.d.ts +0 -14
  44. package/lib/data/tags.js +0 -304
  45. package/lib/data/users.d.ts +0 -12
  46. package/lib/data/users.js +0 -310
  47. package/lib/index.d.ts +0 -3
  48. package/lib/index.js +0 -8
  49. package/lib/types/apps.d.ts +0 -43
  50. package/lib/types/apps.js +0 -2
  51. package/lib/types/arangodb.d.ts +0 -17
  52. package/lib/types/arangodb.js +0 -2
  53. package/lib/types/auth.d.ts +0 -10
  54. package/lib/types/auth.js +0 -2
  55. package/lib/types/conversations.d.ts +0 -6
  56. package/lib/types/conversations.js +0 -2
  57. package/lib/types/email.d.ts +0 -12
  58. package/lib/types/email.js +0 -2
  59. package/lib/types/files.d.ts +0 -26
  60. package/lib/types/files.js +0 -2
  61. package/lib/types/google.d.ts +0 -27
  62. package/lib/types/google.js +0 -2
  63. package/lib/types/groups.d.ts +0 -21
  64. package/lib/types/groups.js +0 -2
  65. package/lib/types/images.d.ts +0 -24
  66. package/lib/types/images.js +0 -2
  67. package/lib/types/index.d.ts +0 -17
  68. package/lib/types/index.js +0 -22
  69. package/lib/types/locations.d.ts +0 -20
  70. package/lib/types/locations.js +0 -2
  71. package/lib/types/messages.d.ts +0 -12
  72. package/lib/types/messages.js +0 -2
  73. package/lib/types/notifications.d.ts +0 -19
  74. package/lib/types/notifications.js +0 -2
  75. package/lib/types/payments.d.ts +0 -114
  76. package/lib/types/payments.js +0 -2
  77. package/lib/types/posts.d.ts +0 -27
  78. package/lib/types/posts.js +0 -2
  79. package/lib/types/reactions.d.ts +0 -4
  80. package/lib/types/reactions.js +0 -2
  81. package/lib/types/tags.d.ts +0 -9
  82. package/lib/types/tags.js +0 -2
  83. package/lib/types/users.d.ts +0 -78
  84. package/lib/types/users.js +0 -2
  85. package/lib/utils/analytics.d.ts +0 -3
  86. package/lib/utils/analytics.js +0 -47
  87. package/lib/utils/arangodb.d.ts +0 -9
  88. package/lib/utils/arangodb.js +0 -98
  89. package/lib/utils/auth.d.ts +0 -7
  90. package/lib/utils/auth.js +0 -80
  91. package/lib/utils/graphql.d.ts +0 -1
  92. package/lib/utils/graphql.js +0 -7
  93. package/lib/utils/index.d.ts +0 -6
  94. package/lib/utils/index.js +0 -11
  95. package/lib/utils/objects.d.ts +0 -3
  96. package/lib/utils/objects.js +0 -34
  97. package/lib/utils/redis.d.ts +0 -1
  98. package/lib/utils/redis.js +0 -15
@@ -1,197 +0,0 @@
1
- function _templateObject3() {
2
- var data = _taggedTemplateLiteral(["UPSERT {_key: ", "}\n INSERT ", "\n UPDATE ", "\n IN conversations RETURN NEW"]);
3
-
4
- _templateObject3 = function _templateObject3() {
5
- return data;
6
- };
7
-
8
- return data;
9
- }
10
-
11
- function _templateObject2() {
12
- var data = _taggedTemplateLiteral(["FOR c IN conversations\n FILTER ", " == c._key && IS_LIST(c.users) && POSITION(c.users, ", ", false)\n LET u = (\n FOR g IN c.users\n FOR u IN users\n FILTER g == u._key\n RETURN {_key:u._key, first:u.first, last:u.last, name:u.name, email:u.email, username:u.username, photo:u.photo }\n )\n FILTER LENGTH(u) > 1\n LIMIT 1\n RETURN MERGE(c, {users: u})"]);
13
-
14
- _templateObject2 = function _templateObject2() {
15
- return data;
16
- };
17
-
18
- return data;
19
- }
20
-
21
- 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; }
22
-
23
- 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; }
24
-
25
- function _templateObject() {
26
- var data = _taggedTemplateLiteral(["FOR c IN conversations\n FILTER LENGTH(c.users) == 2 &&\n POSITION(c.users, ", ", false) &&\n POSITION(c.users, ", ", false)\n LET u = (\n FOR g IN c.users\n FOR user IN users\n FILTER user._key == g\n RETURN user\n )\n LIMIT 1\n RETURN MERGE(c, {users: u})"]);
27
-
28
- _templateObject = function _templateObject() {
29
- return data;
30
- };
31
-
32
- return data;
33
- }
34
-
35
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
36
-
37
- /**
38
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
39
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
40
- */
41
- import { createHash, parseId } from '@nlabs/utils';
42
- import { aql } from 'arangojs';
43
- import cloneDeep from 'lodash/cloneDeep';
44
- import identity from 'lodash/identity';
45
- import isEmpty from 'lodash/isEmpty';
46
- import pick from 'lodash/pick';
47
- import { getLimit, useDb } from '../utils';
48
- import { logError } from '../utils/analytics';
49
- import { getUrlImages } from './images';
50
- import { getDisplayName } from './users';
51
- var eventCategory = 'conversations';
52
- export var getConversationList = function getConversationList(context, from, to) {
53
- var action = 'getList';
54
- var database = context.database,
55
- sessionId = context.userId;
56
- var limit = getLimit(from, to);
57
- var aqlQry = "FOR c IN conversations\n FILTER POSITION(c.users, \"".concat(sessionId, "\", false)\n LET u = (\n FOR g IN c.users\n FOR u IN users\n FILTER g == u._key\n RETURN {_key:u._key, first:u.first, last:u.last, name:u.name, email:u.email, username:u.username, photo:u.photo }\n )\n FILTER LENGTH(u) > 1\n ").concat(limit.aql, "\n RETURN {_key:c._key, name: c.name, direct: c.direct, users: u}");
58
- return useDb(database).query(aqlQry).then(function (cursor) {
59
- return cursor.all();
60
- }).catch(function (error) {
61
- return logError({
62
- action: action,
63
- category: eventCategory,
64
- label: 'db_error'
65
- }, error, context).then(function () {
66
- return null;
67
- });
68
- });
69
- };
70
- export var getDirectConversation = function getDirectConversation(context, userId) {
71
- var action = 'getDirect';
72
- var database = context.database,
73
- sessionId = context.userId;
74
- var formatUserId = parseId(userId);
75
- var aqlQry = aql(_templateObject(), sessionId, formatUserId);
76
- return useDb(database).query(aqlQry).then(function (cursor) {
77
- return cursor.next();
78
- }).then(function () {
79
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
80
- var _conversation$users = conversation.users,
81
- users = _conversation$users === void 0 ? [] : _conversation$users;
82
-
83
- if (users.length) {
84
- conversation.users = users.map(function (user) {
85
- var userKey = user._key,
86
- imgId = user.imgId;
87
- var thumbUrlData = {
88
- directory: 'images',
89
- imgId: imgId,
90
- isThumb: true,
91
- type: 'users',
92
- typeId: userKey
93
- };
94
- return _objectSpread({}, user, {
95
- name: getDisplayName(user),
96
- thumb: getUrlImages(thumbUrlData)
97
- });
98
- });
99
- }
100
-
101
- return conversation;
102
- }).catch(function (error) {
103
- return logError({
104
- action: action,
105
- category: eventCategory,
106
- label: 'db_error'
107
- }, error, context).then(function () {
108
- return null;
109
- });
110
- });
111
- };
112
- export var getConversation = function getConversation(context, convoId) {
113
- var action = 'getItem';
114
- var database = context.database,
115
- sessionId = context.userId;
116
- var formatConvoId = parseId(convoId);
117
- var aqlQry = aql(_templateObject2(), formatConvoId, sessionId);
118
- return useDb(database).query(aqlQry).then(function (cursor) {
119
- return cursor.next();
120
- }).then(function () {
121
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
122
-
123
- if (!isEmpty(conversation)) {
124
- conversation.users = conversation.users.map(function (user) {
125
- var userKey = user._key,
126
- imgId = user.imgId;
127
- var thumbUrlData = {
128
- directory: 'images',
129
- imgId: imgId,
130
- isThumb: true,
131
- type: 'users',
132
- typeId: userKey
133
- };
134
- return _objectSpread({}, user, {
135
- name: getDisplayName(user),
136
- thumb: getUrlImages(thumbUrlData)
137
- });
138
- });
139
- return conversation;
140
- }
141
-
142
- return {};
143
- }).catch(function (error) {
144
- return logError({
145
- action: action,
146
- category: eventCategory,
147
- label: 'db_error'
148
- }, error, context).then(function () {
149
- return null;
150
- });
151
- });
152
- };
153
- export var updateConversation = function updateConversation(context, item) {
154
- var action = 'update';
155
- var database = context.database,
156
- sessionId = context.userId;
157
-
158
- var _pick = pick(item, identity),
159
- direct = _pick.direct,
160
- id = _pick.id,
161
- name = _pick.name,
162
- users = _pick.users;
163
-
164
- var rcpt = users || [];
165
- var formatId = item.id || createHash("convo-".concat(sessionId, "-").concat(rcpt.join('')));
166
- var now = Date.now();
167
- var update = {
168
- // Direct message
169
- direct: !!direct ? direct : undefined,
170
- modified: now,
171
- name: !!name ? name : undefined,
172
- // Users
173
- users: !!users ? users : undefined
174
- };
175
-
176
- var insert = _objectSpread({}, cloneDeep(update), {
177
- _key: formatId,
178
- added: now
179
- });
180
-
181
- var aqlQry = aql(_templateObject3(), id, insert, update);
182
- return useDb(database).query(aqlQry).then(function (cursor) {
183
- return cursor.next();
184
- }).then(function () {
185
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
186
- return conversation;
187
- }).catch(function (error) {
188
- return logError({
189
- action: action,
190
- category: eventCategory,
191
- label: 'db_error'
192
- }, error, context).then(function () {
193
- return null;
194
- });
195
- });
196
- };
197
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2NvbnZlcnNhdGlvbnMudHMiXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsInBhcnNlSWQiLCJhcWwiLCJjbG9uZURlZXAiLCJpZGVudGl0eSIsImlzRW1wdHkiLCJwaWNrIiwiZ2V0TGltaXQiLCJ1c2VEYiIsImxvZ0Vycm9yIiwiZ2V0VXJsSW1hZ2VzIiwiZ2V0RGlzcGxheU5hbWUiLCJldmVudENhdGVnb3J5IiwiZ2V0Q29udmVyc2F0aW9uTGlzdCIsImNvbnRleHQiLCJmcm9tIiwidG8iLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImxpbWl0IiwiYXFsUXJ5IiwicXVlcnkiLCJ0aGVuIiwiY3Vyc29yIiwiYWxsIiwiY2F0Y2giLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJnZXREaXJlY3RDb252ZXJzYXRpb24iLCJmb3JtYXRVc2VySWQiLCJuZXh0IiwiY29udmVyc2F0aW9uIiwidXNlcnMiLCJsZW5ndGgiLCJtYXAiLCJ1c2VyIiwidXNlcktleSIsIl9rZXkiLCJpbWdJZCIsInRodW1iVXJsRGF0YSIsImRpcmVjdG9yeSIsImlzVGh1bWIiLCJ0eXBlIiwidHlwZUlkIiwibmFtZSIsInRodW1iIiwiZ2V0Q29udmVyc2F0aW9uIiwiY29udm9JZCIsImZvcm1hdENvbnZvSWQiLCJ1cGRhdGVDb252ZXJzYXRpb24iLCJpdGVtIiwiZGlyZWN0IiwiaWQiLCJyY3B0IiwiZm9ybWF0SWQiLCJqb2luIiwibm93IiwiRGF0ZSIsInVwZGF0ZSIsInVuZGVmaW5lZCIsIm1vZGlmaWVkIiwiaW5zZXJ0IiwiYWRkZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBSUEsU0FBUUEsVUFBUixFQUFvQkMsT0FBcEIsUUFBa0MsY0FBbEM7QUFDQSxTQUFRQyxHQUFSLFFBQWtCLFVBQWxCO0FBR0EsT0FBT0MsU0FBUCxNQUFzQixrQkFBdEI7QUFDQSxP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SUFBakI7O0FBTUEsTUFBTXJDLE1BQWdCLEdBQUdwQixHQUFILHFCQUF1QnFELEVBQXZCLEVBQ1hTLE1BRFcsRUFFWEgsTUFGVyxDQUF0QjtBQUtBLFNBQU9yRCxLQUFLLENBQUNVLFFBQUQsQ0FBTCxDQUFnQkssS0FBaEIsQ0FBc0JELE1BQXRCLEVBQ0pFLElBREksQ0FDQyxVQUFDQyxNQUFEO0FBQUEsV0FBeUJBLE1BQU0sQ0FBQ1EsSUFBUCxFQUF6QjtBQUFBLEdBREQsRUFFSlQsSUFGSSxDQUVDO0FBQUEsUUFBQ1UsWUFBRCx1RUFBa0MsRUFBbEM7QUFBQSxXQUF5Q0EsWUFBekM7QUFBQSxHQUZELEVBR0pQLEtBSEksQ0FHRSxVQUFDQyxLQUFEO0FBQUEsV0FBa0JuQixRQUFRLENBQUM7QUFDaENRLE1BQUFBLE1BQU0sRUFBTkEsTUFEZ0M7QUFFaENZLE1BQUFBLFFBQVEsRUFBRWpCLGFBRnNCO0FBR2hDa0IsTUFBQUEsS0FBSyxFQUFFO0FBSHlCLEtBQUQsRUFJOUJGLEtBSjhCLEVBSXZCZCxPQUp1QixDQUFSLENBSU5VLElBSk0sQ0FJRDtBQUFBLGFBQU0sSUFBTjtBQUFBLEtBSkMsQ0FBbEI7QUFBQSxHQUhGLENBQVA7QUFRRCxDQW5DTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlSWR9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBpZGVudGl0eSBmcm9tICdsb2Rhc2gvaWRlbnRpdHknO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoL3BpY2snO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICd0eXBlcy9hdXRoJztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0LCBDb252ZXJzYXRpb25UeXBlLCBJbWFnZVVybERhdGEsIFVzZXJUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzJztcbmltcG9ydCB7Z2V0VXJsSW1hZ2VzfSBmcm9tICcuL2ltYWdlcyc7XG5pbXBvcnQge2dldERpc3BsYXlOYW1lfSBmcm9tICcuL3VzZXJzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2NvbnZlcnNhdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uTGlzdCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRMaXN0JztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBsaW1pdDogQXJhbmdvREJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGMgSU4gY29udmVyc2F0aW9uc1xuICAgIEZJTFRFUiBQT1NJVElPTihjLnVzZXJzLCBcIiR7c2Vzc2lvbklkfVwiLCBmYWxzZSlcbiAgICBMRVQgdSA9IChcbiAgICAgIEZPUiBnIElOIGMudXNlcnNcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgZyA9PSB1Ll9rZXlcbiAgICAgIFJFVFVSTiB7X2tleTp1Ll9rZXksIGZpcnN0OnUuZmlyc3QsIGxhc3Q6dS5sYXN0LCBuYW1lOnUubmFtZSwgZW1haWw6dS5lbWFpbCwgdXNlcm5hbWU6dS51c2VybmFtZSwgcGhvdG86dS5waG90byB9XG4gICAgKVxuICAgIEZJTFRFUiBMRU5HVEgodSkgPiAxXG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIHtfa2V5OmMuX2tleSwgbmFtZTogYy5uYW1lLCBkaXJlY3Q6IGMuZGlyZWN0LCB1c2VyczogdX1gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGlyZWN0Q29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldERpcmVjdCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgYyBJTiBjb252ZXJzYXRpb25zXG4gICAgRklMVEVSIExFTkdUSChjLnVzZXJzKSA9PSAyICYmXG4gICAgUE9TSVRJT04oYy51c2VycywgJHtzZXNzaW9uSWR9LCBmYWxzZSkgJiZcbiAgICBQT1NJVElPTihjLnVzZXJzLCAke2Zvcm1hdFVzZXJJZH0sIGZhbHNlKVxuICAgIExFVCB1ID0gKFxuICAgICAgRk9SIGcgSU4gYy51c2Vyc1xuICAgICAgRk9SIHVzZXIgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiB1c2VyLl9rZXkgPT0gZ1xuICAgICAgUkVUVVJOIHVzZXJcbiAgICApXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBNRVJHRShjLCB7dXNlcnM6IHV9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7dXNlcnMgPSBbXX0gPSBjb252ZXJzYXRpb247XG5cbiAgICAgIGlmKHVzZXJzLmxlbmd0aCkge1xuICAgICAgICBjb252ZXJzYXRpb24udXNlcnMgPSB1c2Vycy5tYXAoKHVzZXI6IFVzZXJUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3Qge19rZXk6IHVzZXJLZXksIGltZ0lkfSA9IHVzZXI7XG4gICAgICAgICAgY29uc3QgdGh1bWJVcmxEYXRhOiBJbWFnZVVybERhdGEgPSB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6ICdpbWFnZXMnLFxuICAgICAgICAgICAgaW1nSWQsXG4gICAgICAgICAgICBpc1RodW1iOiB0cnVlLFxuICAgICAgICAgICAgdHlwZTogJ3VzZXJzJyxcbiAgICAgICAgICAgIHR5cGVJZDogdXNlcktleVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgICBuYW1lOiBnZXREaXNwbGF5TmFtZSh1c2VyKSxcbiAgICAgICAgICAgIHRodW1iOiBnZXRVcmxJbWFnZXModGh1bWJVcmxEYXRhKVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udmVyc2F0aW9uO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGMgSU4gY29udmVyc2F0aW9uc1xuICAgIEZJTFRFUiAke2Zvcm1hdENvbnZvSWR9ID09IGMuX2tleSAmJiBJU19MSVNUKGMudXNlcnMpICYmIFBPU0lUSU9OKGMudXNlcnMsICR7c2Vzc2lvbklkfSwgZmFsc2UpXG4gICAgTEVUIHUgPSAoXG4gICAgICBGT1IgZyBJTiBjLnVzZXJzXG4gICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgRklMVEVSIGcgPT0gdS5fa2V5XG4gICAgICBSRVRVUk4ge19rZXk6dS5fa2V5LCBmaXJzdDp1LmZpcnN0LCBsYXN0OnUubGFzdCwgbmFtZTp1Lm5hbWUsIGVtYWlsOnUuZW1haWwsIHVzZXJuYW1lOnUudXNlcm5hbWUsIHBob3RvOnUucGhvdG8gfVxuICAgIClcbiAgICBGSUxURVIgTEVOR1RIKHUpID4gMVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXJzOiB1fSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUgPSB7fSkgPT4ge1xuICAgICAgaWYoIWlzRW1wdHkoY29udmVyc2F0aW9uKSkge1xuICAgICAgICBjb252ZXJzYXRpb24udXNlcnMgPSBjb252ZXJzYXRpb24udXNlcnMubWFwKCh1c2VyOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtfa2V5OiB1c2VyS2V5LCBpbWdJZH0gPSB1c2VyO1xuICAgICAgICAgIGNvbnN0IHRodW1iVXJsRGF0YTogSW1hZ2VVcmxEYXRhID0ge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiAnaW1hZ2VzJyxcbiAgICAgICAgICAgIGltZ0lkLFxuICAgICAgICAgICAgaXNUaHVtYjogdHJ1ZSxcbiAgICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgICB0eXBlSWQ6IHVzZXJLZXlcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgbmFtZTogZ2V0RGlzcGxheU5hbWUodXNlciksXG4gICAgICAgICAgICB0aHVtYjogZ2V0VXJsSW1hZ2VzKHRodW1iVXJsRGF0YSlcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udmVyc2F0aW9uO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW0pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7ZGlyZWN0LCBpZCwgbmFtZSwgdXNlcnN9ID0gcGljayhpdGVtLCBpZGVudGl0eSk7XG4gIGNvbnN0IHJjcHQ6IFVzZXJUeXBlW10gPSB1c2VycyB8fCBbXTtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IGl0ZW0uaWQgfHwgY3JlYXRlSGFzaChgY29udm8tJHtzZXNzaW9uSWR9LSR7cmNwdC5qb2luKCcnKX1gKTtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCB1cGRhdGU6IGFueSA9IHtcbiAgICAvLyBEaXJlY3QgbWVzc2FnZVxuICAgIGRpcmVjdDogISFkaXJlY3QgPyBkaXJlY3QgOiB1bmRlZmluZWQsXG4gICAgbW9kaWZpZWQ6IG5vdyxcbiAgICBuYW1lOiAhIW5hbWUgPyBuYW1lIDogdW5kZWZpbmVkLFxuICAgIC8vIFVzZXJzXG4gICAgdXNlcnM6ICEhdXNlcnMgPyB1c2VycyA6IHVuZGVmaW5lZFxuICB9O1xuXG4gIGNvbnN0IGluc2VydDogYW55ID0ge1xuICAgIC4uLmNsb25lRGVlcCh1cGRhdGUpLFxuICAgIF9rZXk6IGZvcm1hdElkLFxuICAgIGFkZGVkOiBub3dcbiAgfTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtpZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUgPSB7fSkgPT4gY29udmVyc2F0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdfQ==
@@ -1,8 +0,0 @@
1
- import { DynamoDB } from 'aws-sdk';
2
- export declare const dynamoGet: (params: DynamoDB.GetItemInput) => Promise<DynamoDB.GetItemOutput>;
3
- export declare const dynamoGetList: (params: DynamoDB.QueryInput, index: any) => Promise<DynamoDB.GetItemOutput[]>;
4
- export declare const dynamoPut: (params: DynamoDB.PutItemInput) => Promise<DynamoDB.PutItemOutput>;
5
- export declare const dynamoUpdate: (params: DynamoDB.UpdateItemInput) => Promise<DynamoDB.UpdateItemOutput>;
6
- export declare const dynamoPutList: (params: DynamoDB.BatchWriteItemInput) => Promise<DynamoDB.BatchWriteItemOutput>;
7
- export declare const dynamoDel: (params: DynamoDB.DeleteItemInput) => Promise<DynamoDB.DeleteItemOutput>;
8
- export declare const parseDynamo: (results: DynamoDB.QueryOutput) => any[];
@@ -1,139 +0,0 @@
1
- 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; }
2
-
3
- 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; }
4
-
5
- /**
6
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
7
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
8
- */
9
- import aws, { DynamoDB } from 'aws-sdk';
10
- import { Config } from '../config'; // const eventCategory: string = 'dynamodb';
11
-
12
- export var dynamoGet = function dynamoGet(params) {
13
- return new Promise(function (resolve, reject) {
14
- aws.config.update(Config.get('aws'));
15
- var dynamodb = new DynamoDB();
16
- params.ConsistentRead = false;
17
- dynamodb.getItem(params, function (error, results) {
18
- if (error) {
19
- return reject(error);
20
- }
21
-
22
- return resolve(results);
23
- });
24
- });
25
- };
26
- export var dynamoGetList = function dynamoGetList(params, index) {
27
- return new Promise(function (resolve, reject) {
28
- aws.config.update(Config.get('aws'));
29
- var dynamodb = new DynamoDB();
30
- var consistentRead = params.ConsistentRead;
31
-
32
- var updatedParams = _objectSpread({}, params);
33
-
34
- if (index) {
35
- updatedParams.ExclusiveStartKey = index;
36
- }
37
-
38
- if (!consistentRead) {
39
- updatedParams.ConsistentRead = false;
40
- }
41
-
42
- dynamodb.query(updatedParams, function (error, output) {
43
- if (error) {
44
- return reject(error);
45
- } // Save list of items
46
-
47
-
48
- var list = parseDynamo(output);
49
- var lastKey = output.LastEvaluatedKey;
50
-
51
- if (lastKey !== undefined) {
52
- // Save last index before looping
53
- return dynamoGetList(params, lastKey);
54
- } // Query complete, return final list
55
-
56
-
57
- return resolve(list);
58
- });
59
- });
60
- };
61
- export var dynamoPut = function dynamoPut(params) {
62
- return new Promise(function (resolve, reject) {
63
- aws.config.update(Config.get('aws'));
64
- var dynamodb = new DynamoDB();
65
- dynamodb.putItem(params, function (error, output) {
66
- if (error) {
67
- return reject(error);
68
- }
69
-
70
- return resolve(output);
71
- });
72
- });
73
- };
74
- export var dynamoUpdate = function dynamoUpdate(params) {
75
- return new Promise(function (resolve, reject) {
76
- aws.config.update(Config.get('aws'));
77
- var dynamodb = new DynamoDB();
78
- dynamodb.updateItem(params, function (error, output) {
79
- if (error) {
80
- return reject(error);
81
- }
82
-
83
- return resolve(output);
84
- });
85
- });
86
- };
87
- export var dynamoPutList = function dynamoPutList(params) {
88
- return new Promise(function (resolve, reject) {
89
- aws.config.update(Config.get('aws'));
90
- var dynamodb = new DynamoDB();
91
- dynamodb.batchWriteItem(params, function (error, output) {
92
- if (error) {
93
- return reject(error);
94
- }
95
-
96
- return resolve(output);
97
- });
98
- });
99
- };
100
- export var dynamoDel = function dynamoDel(params) {
101
- return new Promise(function (resolve, reject) {
102
- aws.config.update(Config.get('aws'));
103
- var dynamodb = new DynamoDB();
104
- dynamodb.deleteItem(params, function (error, output) {
105
- if (error) {
106
- return reject(error);
107
- }
108
-
109
- return resolve(output);
110
- });
111
- });
112
- };
113
- export var parseDynamo = function parseDynamo(results) {
114
- var items = results.Items;
115
- var data = [];
116
-
117
- for (var idx = 0, len = items.length; idx < len; idx++) {
118
- var tmp = items[idx];
119
- var obj = {};
120
- var key = void 0;
121
-
122
- for (key in tmp) {
123
- if (tmp.hasOwnProperty(key)) {
124
- if (tmp[key].S) {
125
- obj[key] = tmp[key].S.toString();
126
- } else if (tmp[key].N) {
127
- obj[key] = parseFloat(tmp[key].N);
128
- } else {
129
- obj[key] = tmp[key].B;
130
- }
131
- }
132
- }
133
-
134
- data.push(obj);
135
- }
136
-
137
- return data;
138
- };
139
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2R5bmFtb2RiLnRzIl0sIm5hbWVzIjpbImF3cyIsIkR5bmFtb0RCIiwiQ29uZmlnIiwiZHluYW1vR2V0IiwicGFyYW1zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJjb25maWciLCJ1cGRhdGUiLCJnZXQiLCJkeW5hbW9kYiIsIkNvbnNpc3RlbnRSZWFkIiwiZ2V0SXRlbSIsImVycm9yIiwicmVzdWx0cyIsImR5bmFtb0dldExpc3QiLCJpbmRleCIsImNvbnNpc3RlbnRSZWFkIiwidXBkYXRlZFBhcmFtcyIsIkV4Y2x1c2l2ZVN0YXJ0S2V5IiwicXVlcnkiLCJvdXRwdXQiLCJsaXN0IiwicGFyc2VEeW5hbW8iLCJsYXN0S2V5IiwiTGFzdEV2YWx1YXRlZEtleSIsInVuZGVmaW5lZCIsImR5bmFtb1B1dCIsInB1dEl0ZW0iLCJkeW5hbW9VcGRhdGUiLCJ1cGRhdGVJdGVtIiwiZHluYW1vUHV0TGlzdCIsImJhdGNoV3JpdGVJdGVtIiwiZHluYW1vRGVsIiwiZGVsZXRlSXRlbSIsIml0ZW1zIiwiSXRlbXMiLCJkYXRhIiwiaWR4IiwibGVuIiwibGVuZ3RoIiwidG1wIiwib2JqIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJTIiwidG9TdHJpbmciLCJOIiwicGFyc2VGbG9hdCIsIkIiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFJQSxPQUFPQSxHQUFQLElBQWFDLFFBQWIsUUFBNEIsU0FBNUI7QUFnQkEsU0FBUUMsTUFBUixRQUFxQixXQUFyQixDLENBRUE7O0FBRUEsT0FBTyxJQUFNQyxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFDQyxNQUFELEVBQWtEO0FBQ3pFLFNBQU8sSUFBSUMsT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUN0Q1AsSUFBQUEsR0FBRyxDQUFDUSxNQUFKLENBQVdDLE1BQVgsQ0FBa0JQLE1BQU0sQ0FBQ1EsR0FBUCxDQUFXLEtBQVgsQ0FBbEI7QUFDQSxR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QUZNLE1BRUE7QUFDTEwsVUFBQUEsR0FBRyxDQUFDQyxHQUFELENBQUgsR0FBV0YsR0FBRyxDQUFDRSxHQUFELENBQUgsQ0FBU00sQ0FBcEI7QUFDRDtBQUNGO0FBQ0Y7O0FBRURaLElBQUFBLElBQUksQ0FBQ2EsSUFBTCxDQUFVUixHQUFWO0FBQ0Q7O0FBRUQsU0FBT0wsSUFBUDtBQUNELENBekJNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBhd3MsIHtEeW5hbW9EQn0gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQge1xuICBCYXRjaFdyaXRlSXRlbUlucHV0LFxuICBCYXRjaFdyaXRlSXRlbU91dHB1dCxcbiAgRGVsZXRlSXRlbUlucHV0LFxuICBEZWxldGVJdGVtT3V0cHV0LFxuICBHZXRJdGVtSW5wdXQsXG4gIEdldEl0ZW1PdXRwdXQsXG4gIFB1dEl0ZW1JbnB1dCxcbiAgUHV0SXRlbU91dHB1dCxcbiAgUXVlcnlJbnB1dCxcbiAgUXVlcnlPdXRwdXQsXG4gIFVwZGF0ZUl0ZW1JbnB1dCxcbiAgVXBkYXRlSXRlbU91dHB1dFxufSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvZHluYW1vZGInO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2R5bmFtb2RiJztcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0dldCA9IChwYXJhbXM6IEdldEl0ZW1JbnB1dCk6IFByb21pc2U8R2V0SXRlbU91dHB1dD4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcbiAgICBwYXJhbXMuQ29uc2lzdGVudFJlYWQgPSBmYWxzZTtcblxuICAgIGR5bmFtb2RiLmdldEl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCByZXN1bHRzOiBHZXRJdGVtT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUocmVzdWx0cyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0dldExpc3QgPSAocGFyYW1zOiBRdWVyeUlucHV0LCBpbmRleCk6IFByb21pc2U8R2V0SXRlbU91dHB1dFtdPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuICAgIGNvbnN0IHtDb25zaXN0ZW50UmVhZDogY29uc2lzdGVudFJlYWR9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHVwZGF0ZWRQYXJhbXMgPSB7Li4ucGFyYW1zfTtcblxuICAgIGlmKGluZGV4KSB7XG4gICAgICB1cGRhdGVkUGFyYW1zLkV4Y2x1c2l2ZVN0YXJ0S2V5ID0gaW5kZXg7XG4gICAgfVxuXG4gICAgaWYoIWNvbnNpc3RlbnRSZWFkKSB7XG4gICAgICB1cGRhdGVkUGFyYW1zLkNvbnNpc3RlbnRSZWFkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZHluYW1vZGIucXVlcnkodXBkYXRlZFBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0OiBRdWVyeU91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICAvLyBTYXZlIGxpc3Qgb2YgaXRlbXNcbiAgICAgIGNvbnN0IGxpc3Q6IGFueVtdID0gcGFyc2VEeW5hbW8ob3V0cHV0KTtcbiAgICAgIGNvbnN0IHtMYXN0RXZhbHVhdGVkS2V5OiBsYXN0S2V5fSA9IG91dHB1dDtcblxuICAgICAgaWYobGFzdEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIFNhdmUgbGFzdCBpbmRleCBiZWZvcmUgbG9vcGluZ1xuICAgICAgICByZXR1cm4gZHluYW1vR2V0TGlzdChwYXJhbXMsIGxhc3RLZXkpO1xuICAgICAgfVxuXG4gICAgICAvLyBRdWVyeSBjb21wbGV0ZSwgcmV0dXJuIGZpbmFsIGxpc3RcbiAgICAgIHJldHVybiByZXNvbHZlKGxpc3QpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9QdXQgPSAocGFyYW1zOiBQdXRJdGVtSW5wdXQpOiBQcm9taXNlPFB1dEl0ZW1PdXRwdXQ+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gICAgY29uc3QgZHluYW1vZGI6IER5bmFtb0RCID0gbmV3IER5bmFtb0RCKCk7XG5cbiAgICBkeW5hbW9kYi5wdXRJdGVtKHBhcmFtcywgKGVycm9yLCBvdXRwdXQ6IFB1dEl0ZW1PdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZHluYW1vVXBkYXRlID0gKHBhcmFtczogVXBkYXRlSXRlbUlucHV0KTogUHJvbWlzZTxVcGRhdGVJdGVtT3V0cHV0PiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gICAgZHluYW1vZGIudXBkYXRlSXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogVXBkYXRlSXRlbU91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9QdXRMaXN0ID0gKHBhcmFtczogQmF0Y2hXcml0ZUl0ZW1JbnB1dCk6IFByb21pc2U8QmF0Y2hXcml0ZUl0ZW1PdXRwdXQ+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gICAgY29uc3QgZHluYW1vZGI6IER5bmFtb0RCID0gbmV3IER5bmFtb0RCKCk7XG5cbiAgICBkeW5hbW9kYi5iYXRjaFdyaXRlSXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogQmF0Y2hXcml0ZUl0ZW1PdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZHluYW1vRGVsID0gKHBhcmFtczogRGVsZXRlSXRlbUlucHV0KTogUHJvbWlzZTxEZWxldGVJdGVtT3V0cHV0PiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gICAgZHluYW1vZGIuZGVsZXRlSXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBEZWxldGVJdGVtT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlRHluYW1vID0gKHJlc3VsdHM6IFF1ZXJ5T3V0cHV0KTogYW55W10gPT4ge1xuICBjb25zdCB7SXRlbXM6IGl0ZW1zfSA9IHJlc3VsdHM7XG4gIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG5cbiAgZm9yKGxldCBpZHg6IG51bWJlciA9IDAsIGxlbiA9IGl0ZW1zLmxlbmd0aDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNvbnN0IHRtcCA9IGl0ZW1zW2lkeF07XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgbGV0IGtleTtcblxuICAgIGZvcihrZXkgaW4gdG1wKSB7XG4gICAgICBpZih0bXAuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBpZih0bXBba2V5XS5TKSB7XG4gICAgICAgICAgb2JqW2tleV0gPSB0bXBba2V5XS5TLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZih0bXBba2V5XS5OKSB7XG4gICAgICAgICAgb2JqW2tleV0gPSBwYXJzZUZsb2F0KHRtcFtrZXldLk4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9ialtrZXldID0gdG1wW2tleV0uQjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGRhdGEucHVzaChvYmopO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuXG4iXX0=
@@ -1,7 +0,0 @@
1
- import { SES } from 'aws-sdk';
2
- import { AppType } from '../types/apps';
3
- import { EmailType } from '../types/email';
4
- export declare const appTemplate: (app: AppType, message?: string, vars?: {}) => string;
5
- export declare const sendEmail: (params: EmailType) => Promise<boolean>;
6
- export declare const sendTemplate: (templateName: string, emailParams: EmailType) => Promise<boolean>;
7
- export declare const sesSend: (params: SES.SendEmailRequest) => Promise<SES.SendEmailResponse>;
package/lib/data/email.js DELETED
@@ -1,163 +0,0 @@
1
- /**
2
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
- */
5
- import aws, { SES } from 'aws-sdk';
6
- import fs from 'fs';
7
- import isEmpty from 'lodash/isEmpty';
8
- import { Config } from '../config';
9
- import { s3Get } from './s3'; // const eventCategory: string = 'email';
10
-
11
- export var appTemplate = function appTemplate(app) {
12
- var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
13
- var vars = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
14
- var updatedMessage = '';
15
-
16
- if (!isEmpty(app)) {
17
- updatedMessage = message.replace(/\[appName\]/g, app.name).replace(/\[appUrl\]/g, app.url).replace(/\[appEmail\]/g, app.email);
18
- }
19
-
20
- Object.keys(vars).forEach(function (key) {
21
- if (vars[key]) {
22
- updatedMessage = message.replace(new RegExp("\\[".concat(key, "\\]"), 'g'), vars[key]);
23
- }
24
- });
25
- return updatedMessage;
26
- };
27
- export var sendEmail = function sendEmail(params) {
28
- var _params$app = params.app,
29
- app = _params$app === void 0 ? {} : _params$app,
30
- html = params.html,
31
- subject = params.subject,
32
- _params$subTitle = params.subTitle,
33
- subTitle = _params$subTitle === void 0 ? '' : _params$subTitle,
34
- text = params.text,
35
- _params$title = params.title,
36
- title = _params$title === void 0 ? '' : _params$title,
37
- _params$user = params.user,
38
- user = _params$user === void 0 ? {} : _params$user;
39
- var to = [user.email];
40
- var promise;
41
- var formatSubject = appTemplate(app, subject);
42
- var formatSubTitle = appTemplate(app, subTitle);
43
- var formatTitle = appTemplate(app, title);
44
- var formatText = appTemplate(app, text);
45
- var formatHtml = appTemplate(app, html);
46
- var hasCustomEmail = app._key,
47
- urlFacebook = app.urlFacebook,
48
- urlTwitter = app.urlTwitter;
49
-
50
- var parseTemplate = function parseTemplate(body) {
51
- var templateBody = appTemplate(app, body || ''); // Links
52
-
53
- var links = '';
54
- var spacer = '<td width="5"><img width="1" height="1" border="0" title="" alt="" ' + 'src="https://box.reaktor.io/images/email/spacer.gif"/></td>';
55
-
56
- if (urlFacebook) {
57
- links = "<td width=\"30\"><a href=\"".concat(urlFacebook, "\"><img width=\"30\" height=\"30\" border=\"0\" ") + 'title="Facebook" alt="Facebook" src="https://box.reaktor.io/images/email/icon-facebook.png"/></a></td>';
58
- }
59
-
60
- if (urlTwitter) {
61
- if (urlFacebook) {
62
- links += spacer;
63
- }
64
-
65
- links += "<td width=\"30\"><a href=\"".concat(urlTwitter, "\"><img width=\"30\" height=\"30\" border=\"0\" ") + 'title="Twitter" alt="Twitter" src="https://box.reaktor.io/images/email/icon-twitter.png"/></a></td>';
66
- }
67
-
68
- if (!links.length) {
69
- links += spacer;
70
- }
71
-
72
- return templateBody.replace(/\[title\]/g, formatTitle).replace(/\[subTitle\]/g, formatSubTitle).replace(/\[subject\]/g, formatSubject).replace(/\[message\]/g, formatHtml).replace(/\[links\]/g, links);
73
- };
74
-
75
- if (hasCustomEmail) {
76
- var s3Params = {
77
- Bucket: null,
78
- Key: "apps/templates/email.html"
79
- };
80
- promise = s3Get(s3Params).then(function (results) {
81
- return parseTemplate(results.Body.toString());
82
- });
83
- } else {
84
- promise = new Promise(function (resolve, reject) {
85
- fs.readFile('./templates/email/layout.html', 'utf8', function (err, data) {
86
- if (err) {
87
- return reject(err);
88
- }
89
-
90
- return resolve(parseTemplate(data));
91
- });
92
- });
93
- }
94
-
95
- return promise.then(function (parsedHtml) {
96
- var emailParams = {
97
- Destination: {
98
- ToAddresses: to
99
- },
100
- Message: {
101
- Body: {
102
- Html: {
103
- Data: parsedHtml
104
- },
105
- Text: {
106
- Data: formatText
107
- }
108
- },
109
- Subject: {
110
- Data: formatSubject
111
- }
112
- },
113
- Source: "\"".concat(app.supportName, "\" <noreply@").concat(Config.get('app.url'), ">")
114
- };
115
- return sesSend(emailParams);
116
- });
117
- };
118
- export var sendTemplate = function sendTemplate(templateName, emailParams) {
119
- var app = emailParams.app,
120
- user = emailParams.user,
121
- subject = emailParams.subject,
122
- subTitle = emailParams.subTitle,
123
- title = emailParams.title,
124
- vars = emailParams.vars;
125
-
126
- try {
127
- var html = fs.readFileSync("./templates/email/".concat(templateName, ".html"), 'utf8');
128
- var templateHtml = appTemplate(app, html, vars);
129
- var text = fs.readFileSync("./templates/sms/".concat(templateName, ".txt"), 'utf8');
130
- var templateText = appTemplate(app, text, vars);
131
- var params = {
132
- app: app,
133
- html: templateHtml,
134
- subTitle: subTitle,
135
- subject: subject,
136
- text: templateText,
137
- title: title,
138
- user: user
139
- };
140
- return sendEmail(params).then(function () {
141
- return true;
142
- }).catch(function () {
143
- return false;
144
- });
145
- } catch (error) {
146
- return Promise.reject(error);
147
- }
148
- }; // AWS::SES
149
-
150
- export var sesSend = function sesSend(params) {
151
- return new Promise(function (resolve, reject) {
152
- aws.config.update(Config.get('aws'));
153
- var ses = new SES();
154
- ses.sendEmail(params, function (error, response) {
155
- if (error) {
156
- return reject(error);
157
- }
158
-
159
- return resolve(response);
160
- });
161
- });
162
- };
163
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2VtYWlsLnRzIl0sIm5hbWVzIjpbImF3cyIsIlNFUyIsImZzIiwiaXNFbXB0eSIsIkNvbmZpZyIsInMzR2V0IiwiYXBwVGVtcGxhdGUiLCJhcHAiLCJtZXNzYWdlIiwidmFycyIsInVwZGF0ZWRNZXNzYWdlIiwicmVwbGFjZSIsIm5hbWUiLCJ1cmwiLCJlbWFpbCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiUmVnRXhwIiwic2VuZEVtYWlsIiwicGFyYW1zIiwiaHRtbCIsInN1YmplY3QiLCJzdWJUaXRsZSIsInRleHQiLCJ0aXRsZSIsInVzZXIiLCJ0byIsInByb21pc2UiLCJmb3JtYXRTdWJqZWN0IiwiZm9ybWF0U3ViVGl0bGUiLCJmb3JtYXRUaXRsZSIsImZvcm1hdFRleHQiLCJmb3JtYXRIdG1sIiwiaGFzQ3VzdG9tRW1haWwiLCJfa2V5IiwidXJsRmFjZWJvb2siLCJ1cmxUd2l0dGVyIiwicGFyc2VUZW1wbGF0ZSIsImJvZHkiLCJ0ZW1wbGF0ZUJvZHkiLCJsaW5rcyIsInNwYWNlciIsImxlbmd0aCIsInMzUGFyYW1zIiwiQnVja2V0IiwiS2V5IiwidGhlbiIsInJlc3VsdHMiLCJCb2R5IiwidG9TdHJpbmciLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlYWRGaWxlIiwiZXJyIiwiZGF0YSIsInBhcnNlZEh0bWwiLCJlbWFpbFBhcmFtcyIsIkRlc3RpbmF0aW9uIiwiVG9BZGRyZXNzZXMiLCJNZXNzYWdlIiwiSHRtbCIsIkRhdGEiLCJUZXh0IiwiU3ViamVjdCIsIlNvdXJjZSIsInN1cHBvcnROYW1lIiwiZ2V0Iiwic2VzU2VuZCIsInNlbmRUZW1wbGF0ZSIsInRlbXBsYXRlTmFtZSIsInJlYWRGaWxlU3luYyIsInRlbXBsYXRlSHRtbCIsInRlbXBsYXRlVGV4dCIsImNhdGNoIiwiZXJyb3IiLCJjb25maWciLCJ1cGRhdGUiLCJzZXMiLCJyZXNwb25zZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7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QUFHRCxHQW5CRCxDQW1CRSxPQUFNQyxLQUFOLEVBQWE7QUFDYixXQUFPekIsT0FBTyxDQUFDRSxNQUFSLENBQWV1QixLQUFmLENBQVA7QUFDRDtBQUNGLENBekJNLEMsQ0EyQlA7O0FBQ0EsT0FBTyxJQUFNUCxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDakQsTUFBRCxFQUEwRDtBQUMvRSxTQUFPLElBQUkrQixPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ3RDdEQsSUFBQUEsR0FBRyxDQUFDOEUsTUFBSixDQUFXQyxNQUFYLENBQWtCM0UsTUFBTSxDQUFDaUUsR0FBUCxDQUFXLEtBQVgsQ0FBbEI7QUFDQSxRQUFNVyxHQUFRLEdBQUcsSUFBSS9FLEdBQUosRUFBakI7QUFFQStFLElBQUFBLEdBQUcsQ0FBQzVELFNBQUosQ0FBY0MsTUFBZCxFQUFzQixVQUFDd0QsS0FBRCxFQUFlSSxRQUFmLEVBQStDO0FBQ25FLFVBQUdKLEtBQUgsRUFBVTtBQUNSLGVBQU92QixNQUFNLENBQUN1QixLQUFELENBQWI7QUFDRDs7QUFFRCxhQUFPeEIsT0FBTyxDQUFDNEIsUUFBRCxDQUFkO0FBQ0QsS0FORDtBQU9ELEdBWE0sQ0FBUDtBQVlELENBYk0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IGF3cywge1NFU30gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQge0dldE9iamVjdFJlcXVlc3R9IGZyb20gJ2F3cy1zZGsvY2xpZW50cy9zMyc7XG5pbXBvcnQge1NlbmRFbWFpbFJlcXVlc3QsIFNlbmRFbWFpbFJlc3BvbnNlfSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvc2VzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHtBcHBUeXBlfSBmcm9tICcuLi90eXBlcy9hcHBzJztcbmltcG9ydCB7RW1haWxUeXBlfSBmcm9tICcuLi90eXBlcy9lbWFpbCc7XG5pbXBvcnQge3MzR2V0fSBmcm9tICcuL3MzJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2VtYWlsJztcblxuZXhwb3J0IGNvbnN0IGFwcFRlbXBsYXRlID0gKGFwcDogQXBwVHlwZSwgbWVzc2FnZTogc3RyaW5nID0gJycsIHZhcnMgPSB7fSk6IHN0cmluZyA9PiB7XG4gIGxldCB1cGRhdGVkTWVzc2FnZTogc3RyaW5nID0gJyc7XG5cbiAgaWYoIWlzRW1wdHkoYXBwKSkge1xuICAgIHVwZGF0ZWRNZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXFthcHBOYW1lXFxdL2csIGFwcC5uYW1lKVxuICAgICAgLnJlcGxhY2UoL1xcW2FwcFVybFxcXS9nLCBhcHAudXJsKVxuICAgICAgLnJlcGxhY2UoL1xcW2FwcEVtYWlsXFxdL2csIGFwcC5lbWFpbCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyh2YXJzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgIGlmKHZhcnNba2V5XSkge1xuICAgICAgdXBkYXRlZE1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXFske2tleX1cXFxcXWAsICdnJyksIHZhcnNba2V5XSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdXBkYXRlZE1lc3NhZ2U7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VuZEVtYWlsID0gKHBhcmFtczogRW1haWxUeXBlKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBhcHAgPSB7fSxcbiAgICBodG1sLFxuICAgIHN1YmplY3QsXG4gICAgc3ViVGl0bGUgPSAnJyxcbiAgICB0ZXh0LFxuICAgIHRpdGxlID0gJycsXG4gICAgdXNlciA9IHt9XG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgdG8gPSBbdXNlci5lbWFpbF07XG4gIGxldCBwcm9taXNlO1xuXG4gIGNvbnN0IGZvcm1hdFN1YmplY3Q6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgc3ViamVjdCk7XG4gIGNvbnN0IGZvcm1hdFN1YlRpdGxlOiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIHN1YlRpdGxlKTtcbiAgY29uc3QgZm9ybWF0VGl0bGU6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgdGl0bGUpO1xuICBjb25zdCBmb3JtYXRUZXh0OiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIHRleHQpO1xuICBjb25zdCBmb3JtYXRIdG1sOiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIGh0bWwpO1xuICBjb25zdCB7X2tleTogaGFzQ3VzdG9tRW1haWwsIHVybEZhY2Vib29rLCB1cmxUd2l0dGVyfSA9IGFwcDtcblxuICBjb25zdCBwYXJzZVRlbXBsYXRlID0gKGJvZHk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlQm9keTogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCBib2R5IHx8ICcnKTtcblxuICAgIC8vIExpbmtzXG4gICAgbGV0IGxpbmtzOiBzdHJpbmcgPSAnJztcbiAgICBjb25zdCBzcGFjZXIgPSAnPHRkIHdpZHRoPVwiNVwiPjxpbWcgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiIGJvcmRlcj1cIjBcIiB0aXRsZT1cIlwiIGFsdD1cIlwiICcgK1xuICAgICAgJ3NyYz1cImh0dHBzOi8vYm94LnJlYWt0b3IuaW8vaW1hZ2VzL2VtYWlsL3NwYWNlci5naWZcIi8+PC90ZD4nO1xuXG4gICAgaWYodXJsRmFjZWJvb2spIHtcbiAgICAgIGxpbmtzID0gYDx0ZCB3aWR0aD1cIjMwXCI+PGEgaHJlZj1cIiR7dXJsRmFjZWJvb2t9XCI+PGltZyB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzBcIiBib3JkZXI9XCIwXCIgYCArXG4gICAgICAgICd0aXRsZT1cIkZhY2Vib29rXCIgYWx0PVwiRmFjZWJvb2tcIiBzcmM9XCJodHRwczovL2JveC5yZWFrdG9yLmlvL2ltYWdlcy9lbWFpbC9pY29uLWZhY2Vib29rLnBuZ1wiLz48L2E+PC90ZD4nO1xuICAgIH1cblxuICAgIGlmKHVybFR3aXR0ZXIpIHtcbiAgICAgIGlmKHVybEZhY2Vib29rKSB7XG4gICAgICAgIGxpbmtzICs9IHNwYWNlcjtcbiAgICAgIH1cblxuICAgICAgbGlua3MgKz0gYDx0ZCB3aWR0aD1cIjMwXCI+PGEgaHJlZj1cIiR7dXJsVHdpdHRlcn1cIj48aW1nIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIGJvcmRlcj1cIjBcIiBgICtcbiAgICAgICAgJ3RpdGxlPVwiVHdpdHRlclwiIGFsdD1cIlR3aXR0ZXJcIiBzcmM9XCJodHRwczovL2JveC5yZWFrdG9yLmlvL2ltYWdlcy9lbWFpbC9pY29uLXR3aXR0ZXIucG5nXCIvPjwvYT48L3RkPic7XG4gICAgfVxuXG4gICAgaWYoIWxpbmtzLmxlbmd0aCkge1xuICAgICAgbGlua3MgKz0gc3BhY2VyO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW1wbGF0ZUJvZHkucmVwbGFjZSgvXFxbdGl0bGVcXF0vZywgZm9ybWF0VGl0bGUpXG4gICAgICAucmVwbGFjZSgvXFxbc3ViVGl0bGVcXF0vZywgZm9ybWF0U3ViVGl0bGUpXG4gICAgICAucmVwbGFjZSgvXFxbc3ViamVjdFxcXS9nLCBmb3JtYXRTdWJqZWN0KVxuICAgICAgLnJlcGxhY2UoL1xcW21lc3NhZ2VcXF0vZywgZm9ybWF0SHRtbClcbiAgICAgIC5yZXBsYWNlKC9cXFtsaW5rc1xcXS9nLCBsaW5rcyk7XG4gIH07XG5cbiAgaWYoaGFzQ3VzdG9tRW1haWwpIHtcbiAgICBjb25zdCBzM1BhcmFtczogR2V0T2JqZWN0UmVxdWVzdCA9IHtCdWNrZXQ6IG51bGwsIEtleTogYGFwcHMvdGVtcGxhdGVzL2VtYWlsLmh0bWxgfTtcbiAgICBwcm9taXNlID0gczNHZXQoczNQYXJhbXMpLnRoZW4oKHJlc3VsdHMpID0+IHBhcnNlVGVtcGxhdGUocmVzdWx0cy5Cb2R5LnRvU3RyaW5nKCkpKTtcbiAgfSBlbHNlIHtcbiAgICBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgZnMucmVhZEZpbGUoJy4vdGVtcGxhdGVzL2VtYWlsL2xheW91dC5odG1sJywgJ3V0ZjgnLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICAgIGlmKGVycikge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNvbHZlKHBhcnNlVGVtcGxhdGUoZGF0YSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZS50aGVuKChwYXJzZWRIdG1sOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBlbWFpbFBhcmFtczogU2VuZEVtYWlsUmVxdWVzdCA9IHtcbiAgICAgIERlc3RpbmF0aW9uOiB7VG9BZGRyZXNzZXM6IHRvfSxcbiAgICAgIE1lc3NhZ2U6IHtcbiAgICAgICAgQm9keToge1xuICAgICAgICAgIEh0bWw6IHtEYXRhOiBwYXJzZWRIdG1sfSxcbiAgICAgICAgICBUZXh0OiB7RGF0YTogZm9ybWF0VGV4dH1cbiAgICAgICAgfSxcbiAgICAgICAgU3ViamVjdDoge0RhdGE6IGZvcm1hdFN1YmplY3R9XG4gICAgICB9LFxuICAgICAgU291cmNlOiBgXCIke2FwcC5zdXBwb3J0TmFtZX1cIiA8bm9yZXBseUAke0NvbmZpZy5nZXQoJ2FwcC51cmwnKX0+YFxuICAgIH07XG5cbiAgICByZXR1cm4gc2VzU2VuZChlbWFpbFBhcmFtcyk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlbmRUZW1wbGF0ZSA9ICh0ZW1wbGF0ZU5hbWU6IHN0cmluZywgZW1haWxQYXJhbXM6IEVtYWlsVHlwZSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCB7YXBwLCB1c2VyLCBzdWJqZWN0LCBzdWJUaXRsZSwgdGl0bGUsIHZhcnN9OiBFbWFpbFR5cGUgPSBlbWFpbFBhcmFtcztcblxuICB0cnkge1xuICAgIGNvbnN0IGh0bWw6IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhgLi90ZW1wbGF0ZXMvZW1haWwvJHt0ZW1wbGF0ZU5hbWV9Lmh0bWxgLCAndXRmOCcpO1xuICAgIGNvbnN0IHRlbXBsYXRlSHRtbDogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCBodG1sLCB2YXJzKTtcbiAgICBjb25zdCB0ZXh0OiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYC4vdGVtcGxhdGVzL3Ntcy8ke3RlbXBsYXRlTmFtZX0udHh0YCwgJ3V0ZjgnKTtcbiAgICBjb25zdCB0ZW1wbGF0ZVRleHQ6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgdGV4dCwgdmFycyk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhcHAsXG4gICAgICBodG1sOiB0ZW1wbGF0ZUh0bWwsXG4gICAgICBzdWJUaXRsZSxcbiAgICAgIHN1YmplY3QsXG4gICAgICB0ZXh0OiB0ZW1wbGF0ZVRleHQsXG4gICAgICB0aXRsZSxcbiAgICAgIHVzZXJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHNlbmRFbWFpbChwYXJhbXMpXG4gICAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgICAgLmNhdGNoKCgpID0+IGZhbHNlKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gIH1cbn07XG5cbi8vIEFXUzo6U0VTXG5leHBvcnQgY29uc3Qgc2VzU2VuZCA9IChwYXJhbXM6IFNlbmRFbWFpbFJlcXVlc3QpOiBQcm9taXNlPFNlbmRFbWFpbFJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHNlczogU0VTID0gbmV3IFNFUygpO1xuXG4gICAgc2VzLnNlbmRFbWFpbChwYXJhbXMsIChlcnJvcjogRXJyb3IsIHJlc3BvbnNlOiBTZW5kRW1haWxSZXNwb25zZSkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuIl19
@@ -1,16 +0,0 @@
1
- /// <reference types="node" />
2
- import { Database } from 'arangojs';
3
- import { ApiContext } from 'types/auth';
4
- import { FileType } from '../types/files';
5
- export declare const addFile: (context: ApiContext, item?: FileType) => Promise<FileType>;
6
- export declare const getGiphyTrends: (context: ApiContext, limit?: number) => Promise<any[]>;
7
- export declare const getGiphySearch: (context: ApiContext, query: string, limit?: number) => Promise<any[]>;
8
- export declare const getYouTubeTrends: (context: ApiContext, limit?: number) => Promise<any[]>;
9
- export declare const getYouTubeSearch: (context: ApiContext, query: string, limit?: number) => Promise<any[]>;
10
- export declare const getPathUserFiles: (userId: string, filename: string) => string;
11
- export declare const getUrlUserFiles: (userId: string, filename: string, dir?: string, type?: string) => string;
12
- export declare const linkFiles: (db: Database, files: FileType[], postId: string) => Promise<any>;
13
- export declare const updateFiles: (db: Database, postId: string, files: FileType[]) => Promise<any>;
14
- export declare const createFile: (db: Database, file: FileType) => Promise<FileType>;
15
- export declare const encodeBase64: (buffer: Buffer) => string;
16
- export declare const decodeBase64: (dataString: string) => object;