@nlabs/reaktor 0.1.0 → 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 (112) hide show
  1. package/package.json +13 -13
  2. package/src/config.ts +8 -2
  3. package/src/data/conversations.ts +2 -4
  4. package/src/data/email.ts +3 -4
  5. package/src/data/files.ts +2 -2
  6. package/src/data/images.ts +5 -5
  7. package/src/data/posts.ts +239 -167
  8. package/src/data/users.ts +0 -2
  9. package/src/types/apps.ts +0 -1
  10. package/src/types/auth.ts +1 -0
  11. package/src/types/files.ts +0 -2
  12. package/src/types/groups.ts +0 -1
  13. package/src/types/images.ts +0 -1
  14. package/src/types/locations.ts +0 -1
  15. package/src/types/payments.ts +0 -5
  16. package/src/types/posts.ts +13 -4
  17. package/src/types/tags.ts +0 -1
  18. package/src/utils/auth.ts +35 -2
  19. package/src/utils/graphql.ts +7 -0
  20. package/src/utils/index.ts +1 -0
  21. package/lib/config.d.ts +0 -21
  22. package/lib/config.js +0 -127
  23. package/lib/data/conversations.d.ts +0 -6
  24. package/lib/data/conversations.js +0 -201
  25. package/lib/data/dynamodb.d.ts +0 -8
  26. package/lib/data/dynamodb.js +0 -139
  27. package/lib/data/email.d.ts +0 -7
  28. package/lib/data/email.js +0 -164
  29. package/lib/data/files.d.ts +0 -16
  30. package/lib/data/files.js +0 -407
  31. package/lib/data/groups.d.ts +0 -13
  32. package/lib/data/groups.js +0 -354
  33. package/lib/data/images.d.ts +0 -12
  34. package/lib/data/images.js +0 -668
  35. package/lib/data/index.d.ts +0 -19
  36. package/lib/data/index.js +0 -24
  37. package/lib/data/ios.d.ts +0 -6
  38. package/lib/data/ios.js +0 -302
  39. package/lib/data/locations.d.ts +0 -3
  40. package/lib/data/locations.js +0 -132
  41. package/lib/data/messages.d.ts +0 -9
  42. package/lib/data/messages.js +0 -248
  43. package/lib/data/notifications.d.ts +0 -5
  44. package/lib/data/notifications.js +0 -42
  45. package/lib/data/payments.d.ts +0 -11
  46. package/lib/data/payments.js +0 -748
  47. package/lib/data/posts.d.ts +0 -14
  48. package/lib/data/posts.js +0 -458
  49. package/lib/data/reactions.d.ts +0 -6
  50. package/lib/data/reactions.js +0 -218
  51. package/lib/data/s3.d.ts +0 -6
  52. package/lib/data/s3.js +0 -103
  53. package/lib/data/search.d.ts +0 -3
  54. package/lib/data/search.js +0 -98
  55. package/lib/data/sms.d.ts +0 -3
  56. package/lib/data/sms.js +0 -59
  57. package/lib/data/subscription.d.ts +0 -7
  58. package/lib/data/subscription.js +0 -284
  59. package/lib/data/tags.d.ts +0 -14
  60. package/lib/data/tags.js +0 -304
  61. package/lib/data/users.d.ts +0 -12
  62. package/lib/data/users.js +0 -312
  63. package/lib/index.d.ts +0 -3
  64. package/lib/index.js +0 -8
  65. package/lib/types/apps.d.ts +0 -44
  66. package/lib/types/apps.js +0 -2
  67. package/lib/types/arangodb.d.ts +0 -17
  68. package/lib/types/arangodb.js +0 -2
  69. package/lib/types/auth.d.ts +0 -9
  70. package/lib/types/auth.js +0 -2
  71. package/lib/types/conversations.d.ts +0 -6
  72. package/lib/types/conversations.js +0 -2
  73. package/lib/types/email.d.ts +0 -12
  74. package/lib/types/email.js +0 -2
  75. package/lib/types/files.d.ts +0 -28
  76. package/lib/types/files.js +0 -2
  77. package/lib/types/google.d.ts +0 -27
  78. package/lib/types/google.js +0 -2
  79. package/lib/types/groups.d.ts +0 -22
  80. package/lib/types/groups.js +0 -2
  81. package/lib/types/images.d.ts +0 -25
  82. package/lib/types/images.js +0 -2
  83. package/lib/types/index.d.ts +0 -17
  84. package/lib/types/index.js +0 -22
  85. package/lib/types/locations.d.ts +0 -21
  86. package/lib/types/locations.js +0 -2
  87. package/lib/types/messages.d.ts +0 -12
  88. package/lib/types/messages.js +0 -2
  89. package/lib/types/notifications.d.ts +0 -19
  90. package/lib/types/notifications.js +0 -2
  91. package/lib/types/payments.d.ts +0 -119
  92. package/lib/types/payments.js +0 -2
  93. package/lib/types/posts.d.ts +0 -20
  94. package/lib/types/posts.js +0 -2
  95. package/lib/types/reactions.d.ts +0 -4
  96. package/lib/types/reactions.js +0 -2
  97. package/lib/types/tags.d.ts +0 -10
  98. package/lib/types/tags.js +0 -2
  99. package/lib/types/users.d.ts +0 -78
  100. package/lib/types/users.js +0 -2
  101. package/lib/utils/analytics.d.ts +0 -3
  102. package/lib/utils/analytics.js +0 -47
  103. package/lib/utils/arangodb.d.ts +0 -9
  104. package/lib/utils/arangodb.js +0 -98
  105. package/lib/utils/auth.d.ts +0 -2
  106. package/lib/utils/auth.js +0 -43
  107. package/lib/utils/index.d.ts +0 -5
  108. package/lib/utils/index.js +0 -10
  109. package/lib/utils/objects.d.ts +0 -3
  110. package/lib/utils/objects.js +0 -34
  111. package/lib/utils/redis.d.ts +0 -1
  112. package/lib/utils/redis.js +0 -15
@@ -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,164 +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).replace(/\[appId\]/g, app.id);
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 appId = app._key,
47
- hasCustomEmail = app.hasCustomEmail,
48
- urlFacebook = app.urlFacebook,
49
- urlTwitter = app.urlTwitter;
50
-
51
- var parseTemplate = function parseTemplate(body) {
52
- var templateBody = appTemplate(app, body || ''); // Links
53
-
54
- var links = '';
55
- var spacer = '<td width="5"><img width="1" height="1" border="0" title="" alt="" ' + 'src="https://box.reaktor.io/images/email/spacer.gif"/></td>';
56
-
57
- if (urlFacebook) {
58
- 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>';
59
- }
60
-
61
- if (urlTwitter) {
62
- if (urlFacebook) {
63
- links += spacer;
64
- }
65
-
66
- 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>';
67
- }
68
-
69
- if (!links.length) {
70
- links += spacer;
71
- }
72
-
73
- return templateBody.replace(/\[title\]/g, formatTitle).replace(/\[subTitle\]/g, formatSubTitle).replace(/\[subject\]/g, formatSubject).replace(/\[message\]/g, formatHtml).replace(/\[links\]/g, links);
74
- };
75
-
76
- if (hasCustomEmail) {
77
- var s3Params = {
78
- Bucket: null,
79
- Key: "apps/".concat(appId, "/templates/email.html")
80
- };
81
- promise = s3Get(s3Params).then(function (results) {
82
- return parseTemplate(results.Body.toString());
83
- });
84
- } else {
85
- promise = new Promise(function (resolve, reject) {
86
- fs.readFile('./templates/email/layout.html', 'utf8', function (err, data) {
87
- if (err) {
88
- return reject(err);
89
- }
90
-
91
- return resolve(parseTemplate(data));
92
- });
93
- });
94
- }
95
-
96
- return promise.then(function (parsedHtml) {
97
- var emailParams = {
98
- Destination: {
99
- ToAddresses: to
100
- },
101
- Message: {
102
- Body: {
103
- Html: {
104
- Data: parsedHtml
105
- },
106
- Text: {
107
- Data: formatText
108
- }
109
- },
110
- Subject: {
111
- Data: formatSubject
112
- }
113
- },
114
- Source: "\"".concat(app.supportName, "\" <noreply@").concat(Config.get('app.url'), ">")
115
- };
116
- return sesSend(emailParams);
117
- });
118
- };
119
- export var sendTemplate = function sendTemplate(templateName, emailParams) {
120
- var app = emailParams.app,
121
- user = emailParams.user,
122
- subject = emailParams.subject,
123
- subTitle = emailParams.subTitle,
124
- title = emailParams.title,
125
- vars = emailParams.vars;
126
-
127
- try {
128
- var html = fs.readFileSync("./templates/email/".concat(templateName, ".html"), 'utf8');
129
- var templateHtml = appTemplate(app, html, vars);
130
- var text = fs.readFileSync("./templates/sms/".concat(templateName, ".txt"), 'utf8');
131
- var templateText = appTemplate(app, text, vars);
132
- var params = {
133
- app: app,
134
- html: templateHtml,
135
- subTitle: subTitle,
136
- subject: subject,
137
- text: templateText,
138
- title: title,
139
- user: user
140
- };
141
- return sendEmail(params).then(function () {
142
- return true;
143
- }).catch(function () {
144
- return false;
145
- });
146
- } catch (error) {
147
- return Promise.reject(error);
148
- }
149
- }; // AWS::SES
150
-
151
- export var sesSend = function sesSend(params) {
152
- return new Promise(function (resolve, reject) {
153
- aws.config.update(Config.get('aws'));
154
- var ses = new SES();
155
- ses.sendEmail(params, function (error, response) {
156
- if (error) {
157
- return reject(error);
158
- }
159
-
160
- return resolve(response);
161
- });
162
- });
163
- };
164
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2VtYWlsLnRzIl0sIm5hbWVzIjpbImF3cyIsIlNFUyIsImZzIiwiaXNFbXB0eSIsIkNvbmZpZyIsInMzR2V0IiwiYXBwVGVtcGxhdGUiLCJhcHAiLCJtZXNzYWdlIiwidmFycyIsInVwZGF0ZWRNZXNzYWdlIiwicmVwbGFjZSIsIm5hbWUiLCJ1cmwiLCJlbWFpbCIsImlkIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJSZWdFeHAiLCJzZW5kRW1haWwiLCJwYXJhbXMiLCJodG1sIiwic3ViamVjdCIsInN1YlRpdGxlIiwidGV4dCIsInRpdGxlIiwidXNlciIsInRvIiwicHJvbWlzZSIsImZvcm1hdFN1YmplY3QiLCJmb3JtYXRTdWJUaXRsZSIsImZvcm1hdFRpdGxlIiwiZm9ybWF0VGV4dCIsImZvcm1hdEh0bWwiLCJhcHBJZCIsIl9rZXkiLCJoYXNDdXN0b21FbWFpbCIsInVybEZhY2Vib29rIiwidXJsVHdpdHRlciIsInBhcnNlVGVtcGxhdGUiLCJib2R5IiwidGVtcGxhdGVCb2R5IiwibGlua3MiLCJzcGFjZXIiLCJsZW5ndGgiLCJzM1BhcmFtcyIsIkJ1Y2tldCIsIktleSIsInRoZW4iLCJyZXN1bHRzIiwiQm9keSIsInRvU3RyaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFkRmlsZSIsImVyciIsImRhdGEiLCJwYXJzZWRIdG1sIiwiZW1haWxQYXJhbXMiLCJEZXN0aW5hdGlvbiIsIlRvQWRkcmVzc2VzIiwiTWVzc2FnZSIsIkh0bWwiLCJEYXRhIiwiVGV4dCIsIlN1YmplY3QiLCJTb3VyY2UiLCJzdXBwb3J0TmFtZSIsImdldCIsInNlc1NlbmQiLCJzZW5kVGVtcGxhdGUiLCJ0ZW1wbGF0ZU5hbWUiLCJyZWFkRmlsZVN5bmMiLCJ0ZW1wbGF0ZUh0bWwiLCJ0ZW1wbGF0ZVRleHQiLCJjYXRjaCIsImVycm9yIiwiY29uZmlnIiwidXBkYXRlIiwic2VzIiwicmVzcG9uc2UiXSwibWFwcGlu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QSxXQUFPUCxTQUFTLENBQUNDLE1BQUQsQ0FBVCxDQUNKNEIsSUFESSxDQUNDO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FERCxFQUVKNEIsS0FGSSxDQUVFO0FBQUEsYUFBTSxLQUFOO0FBQUEsS0FGRixDQUFQO0FBR0QsR0FuQkQsQ0FtQkUsT0FBTUMsS0FBTixFQUFhO0FBQ2IsV0FBT3pCLE9BQU8sQ0FBQ0UsTUFBUixDQUFldUIsS0FBZixDQUFQO0FBQ0Q7QUFDRixDQXpCTSxDLENBMkJQOztBQUNBLE9BQU8sSUFBTVAsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ2xELE1BQUQsRUFBMEQ7QUFDL0UsU0FBTyxJQUFJZ0MsT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUN0Q3hELElBQUFBLEdBQUcsQ0FBQ2dGLE1BQUosQ0FBV0MsTUFBWCxDQUFrQjdFLE1BQU0sQ0FBQ21FLEdBQVAsQ0FBVyxLQUFYLENBQWxCO0FBQ0EsUUFBTVcsR0FBUSxHQUFHLElBQUlqRixHQUFKLEVBQWpCO0FBRUFpRixJQUFBQSxHQUFHLENBQUM3RCxTQUFKLENBQWNDLE1BQWQsRUFBc0IsVUFBQ3lELEtBQUQsRUFBZUksUUFBZixFQUErQztBQUNuRSxVQUFHSixLQUFILEVBQVU7QUFDUixlQUFPdkIsTUFBTSxDQUFDdUIsS0FBRCxDQUFiO0FBQ0Q7O0FBRUQsYUFBT3hCLE9BQU8sQ0FBQzRCLFFBQUQsQ0FBZDtBQUNELEtBTkQ7QUFPRCxHQVhNLENBQVA7QUFZRCxDQWJNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBhd3MsIHtTRVN9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHtHZXRPYmplY3RSZXF1ZXN0fSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvczMnO1xuaW1wb3J0IHtTZW5kRW1haWxSZXF1ZXN0LCBTZW5kRW1haWxSZXNwb25zZX0gZnJvbSAnYXdzLXNkay9jbGllbnRzL3Nlcyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7QXBwVHlwZX0gZnJvbSAnLi4vdHlwZXMvYXBwcyc7XG5pbXBvcnQge0VtYWlsVHlwZX0gZnJvbSAnLi4vdHlwZXMvZW1haWwnO1xuaW1wb3J0IHtzM0dldH0gZnJvbSAnLi9zMyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdlbWFpbCc7XG5cbmV4cG9ydCBjb25zdCBhcHBUZW1wbGF0ZSA9IChhcHA6IEFwcFR5cGUsIG1lc3NhZ2U6IHN0cmluZyA9ICcnLCB2YXJzID0ge30pOiBzdHJpbmcgPT4ge1xuICBsZXQgdXBkYXRlZE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gIGlmKCFpc0VtcHR5KGFwcCkpIHtcbiAgICB1cGRhdGVkTWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXFxbYXBwTmFtZVxcXS9nLCBhcHAubmFtZSlcbiAgICAgIC5yZXBsYWNlKC9cXFthcHBVcmxcXF0vZywgYXBwLnVybClcbiAgICAgIC5yZXBsYWNlKC9cXFthcHBFbWFpbFxcXS9nLCBhcHAuZW1haWwpXG4gICAgICAucmVwbGFjZSgvXFxbYXBwSWRcXF0vZywgYXBwLmlkKTtcbiAgfVxuXG4gIE9iamVjdC5rZXlzKHZhcnMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgaWYodmFyc1trZXldKSB7XG4gICAgICB1cGRhdGVkTWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxcWyR7a2V5fVxcXFxdYCwgJ2cnKSwgdmFyc1trZXldKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB1cGRhdGVkTWVzc2FnZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZW5kRW1haWwgPSAocGFyYW1zOiBFbWFpbFR5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge1xuICAgIGFwcCA9IHt9LFxuICAgIGh0bWwsXG4gICAgc3ViamVjdCxcbiAgICBzdWJUaXRsZSA9ICcnLFxuICAgIHRleHQsXG4gICAgdGl0bGUgPSAnJyxcbiAgICB1c2VyID0ge31cbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCB0byA9IFt1c2VyLmVtYWlsXTtcbiAgbGV0IHByb21pc2U7XG5cbiAgY29uc3QgZm9ybWF0U3ViamVjdDogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCBzdWJqZWN0KTtcbiAgY29uc3QgZm9ybWF0U3ViVGl0bGU6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgc3ViVGl0bGUpO1xuICBjb25zdCBmb3JtYXRUaXRsZTogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCB0aXRsZSk7XG4gIGNvbnN0IGZvcm1hdFRleHQ6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgdGV4dCk7XG4gIGNvbnN0IGZvcm1hdEh0bWw6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgaHRtbCk7XG4gIGNvbnN0IHtfa2V5OiBhcHBJZCwgaGFzQ3VzdG9tRW1haWwsIHVybEZhY2Vib29rLCB1cmxUd2l0dGVyfSA9IGFwcDtcblxuICBjb25zdCBwYXJzZVRlbXBsYXRlID0gKGJvZHk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlQm9keTogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCBib2R5IHx8ICcnKTtcblxuICAgIC8vIExpbmtzXG4gICAgbGV0IGxpbmtzOiBzdHJpbmcgPSAnJztcbiAgICBjb25zdCBzcGFjZXIgPSAnPHRkIHdpZHRoPVwiNVwiPjxpbWcgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiIGJvcmRlcj1cIjBcIiB0aXRsZT1cIlwiIGFsdD1cIlwiICcgK1xuICAgICAgJ3NyYz1cImh0dHBzOi8vYm94LnJlYWt0b3IuaW8vaW1hZ2VzL2VtYWlsL3NwYWNlci5naWZcIi8+PC90ZD4nO1xuXG4gICAgaWYodXJsRmFjZWJvb2spIHtcbiAgICAgIGxpbmtzID0gYDx0ZCB3aWR0aD1cIjMwXCI+PGEgaHJlZj1cIiR7dXJsRmFjZWJvb2t9XCI+PGltZyB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzBcIiBib3JkZXI9XCIwXCIgYCArXG4gICAgICAgICd0aXRsZT1cIkZhY2Vib29rXCIgYWx0PVwiRmFjZWJvb2tcIiBzcmM9XCJodHRwczovL2JveC5yZWFrdG9yLmlvL2ltYWdlcy9lbWFpbC9pY29uLWZhY2Vib29rLnBuZ1wiLz48L2E+PC90ZD4nO1xuICAgIH1cblxuICAgIGlmKHVybFR3aXR0ZXIpIHtcbiAgICAgIGlmKHVybEZhY2Vib29rKSB7XG4gICAgICAgIGxpbmtzICs9IHNwYWNlcjtcbiAgICAgIH1cblxuICAgICAgbGlua3MgKz0gYDx0ZCB3aWR0aD1cIjMwXCI+PGEgaHJlZj1cIiR7dXJsVHdpdHRlcn1cIj48aW1nIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIGJvcmRlcj1cIjBcIiBgICtcbiAgICAgICAgJ3RpdGxlPVwiVHdpdHRlclwiIGFsdD1cIlR3aXR0ZXJcIiBzcmM9XCJodHRwczovL2JveC5yZWFrdG9yLmlvL2ltYWdlcy9lbWFpbC9pY29uLXR3aXR0ZXIucG5nXCIvPjwvYT48L3RkPic7XG4gICAgfVxuXG4gICAgaWYoIWxpbmtzLmxlbmd0aCkge1xuICAgICAgbGlua3MgKz0gc3BhY2VyO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW1wbGF0ZUJvZHkucmVwbGFjZSgvXFxbdGl0bGVcXF0vZywgZm9ybWF0VGl0bGUpXG4gICAgICAucmVwbGFjZSgvXFxbc3ViVGl0bGVcXF0vZywgZm9ybWF0U3ViVGl0bGUpXG4gICAgICAucmVwbGFjZSgvXFxbc3ViamVjdFxcXS9nLCBmb3JtYXRTdWJqZWN0KVxuICAgICAgLnJlcGxhY2UoL1xcW21lc3NhZ2VcXF0vZywgZm9ybWF0SHRtbClcbiAgICAgIC5yZXBsYWNlKC9cXFtsaW5rc1xcXS9nLCBsaW5rcyk7XG4gIH07XG5cbiAgaWYoaGFzQ3VzdG9tRW1haWwpIHtcbiAgICBjb25zdCBzM1BhcmFtczogR2V0T2JqZWN0UmVxdWVzdCA9IHtCdWNrZXQ6IG51bGwsIEtleTogYGFwcHMvJHthcHBJZH0vdGVtcGxhdGVzL2VtYWlsLmh0bWxgfTtcbiAgICBwcm9taXNlID0gczNHZXQoczNQYXJhbXMpLnRoZW4oKHJlc3VsdHMpID0+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;