@nlabs/reaktor 0.8.0 → 0.9.0

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 (198) hide show
  1. package/.eslintrc +10 -0
  2. package/.prettierrc.js +4 -0
  3. package/README.md +1 -1
  4. package/coverage/actions/groups.ts.html +1039 -0
  5. package/coverage/actions/images.ts.html +2500 -0
  6. package/coverage/actions/index.html +131 -0
  7. package/coverage/actions/tags.ts.html +1000 -0
  8. package/coverage/adapters/arangoAdapter.ts.html +151 -0
  9. package/coverage/adapters/index.html +146 -0
  10. package/coverage/adapters/reaktorAdapter.ts.html +127 -0
  11. package/coverage/adapters/tagAdapter.ts.html +160 -0
  12. package/coverage/base.css +224 -0
  13. package/coverage/block-navigation.js +87 -0
  14. package/coverage/clover.xml +6 -0
  15. package/coverage/coverage-final.json +1 -0
  16. package/coverage/favicon.png +0 -0
  17. package/coverage/index.html +176 -0
  18. package/coverage/lcov-report/base.css +224 -0
  19. package/coverage/lcov-report/block-navigation.js +87 -0
  20. package/coverage/lcov-report/favicon.png +0 -0
  21. package/coverage/lcov-report/index.html +101 -0
  22. package/coverage/lcov-report/prettify.css +1 -0
  23. package/coverage/lcov-report/prettify.js +2 -0
  24. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  25. package/coverage/lcov-report/sorter.js +196 -0
  26. package/coverage/lcov.info +0 -0
  27. package/coverage/mocks/file.ts.html +118 -0
  28. package/coverage/mocks/group.ts.html +145 -0
  29. package/coverage/mocks/image.ts.html +136 -0
  30. package/coverage/mocks/index.html +146 -0
  31. package/coverage/mocks/post.ts.html +169 -0
  32. package/coverage/mocks/tag.ts.html +121 -0
  33. package/coverage/mocks/user.ts.html +268 -0
  34. package/coverage/prettify.css +1 -0
  35. package/coverage/prettify.js +2 -0
  36. package/coverage/sort-arrow-sprite.png +0 -0
  37. package/coverage/sorter.js +196 -0
  38. package/coverage/types/error.ts.html +145 -0
  39. package/coverage/types/index.html +116 -0
  40. package/coverage/utils/adapterUtils.ts.html +151 -0
  41. package/coverage/utils/analyticsUtils.ts.html +292 -0
  42. package/coverage/utils/arangodbUtils.ts.html +463 -0
  43. package/coverage/utils/index.html +146 -0
  44. package/jest.setup.js +0 -0
  45. package/jpg:- +0 -0
  46. package/lib/actions/apps.d.ts +25 -0
  47. package/lib/actions/apps.js +252 -0
  48. package/lib/actions/conversations.d.ts +14 -0
  49. package/lib/actions/conversations.js +131 -126
  50. package/lib/actions/dynamodb.d.ts +8 -0
  51. package/lib/actions/dynamodb.js +35 -32
  52. package/lib/actions/email.d.ts +5 -0
  53. package/lib/actions/email.js +23 -53
  54. package/lib/actions/files.d.ts +19 -0
  55. package/lib/actions/files.js +188 -202
  56. package/lib/actions/groups.d.ts +14 -0
  57. package/lib/actions/groups.js +38 -36
  58. package/lib/actions/images.d.ts +26 -0
  59. package/lib/actions/images.js +236 -229
  60. package/lib/actions/index.d.ts +21 -0
  61. package/lib/actions/index.js +3 -1
  62. package/lib/actions/ios.d.ts +7 -0
  63. package/lib/actions/ios.js +11 -10
  64. package/lib/actions/locations.d.ts +5 -0
  65. package/lib/actions/locations.js +29 -37
  66. package/lib/actions/messages.d.ts +13 -0
  67. package/lib/actions/messages.js +10 -10
  68. package/lib/actions/notifications.d.ts +5 -0
  69. package/lib/actions/notifications.js +1 -1
  70. package/lib/actions/payments.d.ts +10 -0
  71. package/lib/actions/payments.js +27 -26
  72. package/lib/actions/posts.d.ts +19 -0
  73. package/lib/actions/posts.js +176 -156
  74. package/lib/actions/reactions.d.ts +30 -0
  75. package/lib/actions/reactions.js +30 -28
  76. package/lib/actions/s3.d.ts +7 -0
  77. package/lib/actions/s3.js +37 -32
  78. package/lib/actions/search.d.ts +3 -0
  79. package/lib/actions/search.js +11 -9
  80. package/lib/actions/sms.d.ts +3 -0
  81. package/lib/actions/sms.js +58 -34
  82. package/lib/actions/statistics.d.ts +3 -0
  83. package/lib/actions/statistics.js +21 -18
  84. package/lib/actions/subscription.d.ts +7 -0
  85. package/lib/actions/subscription.js +24 -21
  86. package/lib/actions/tags.d.ts +29 -0
  87. package/lib/actions/tags.js +129 -198
  88. package/lib/actions/users.d.ts +47 -0
  89. package/lib/actions/users.js +188 -194
  90. package/lib/actions/websockets.d.ts +19 -0
  91. package/lib/actions/websockets.js +60 -34
  92. package/lib/adapters/arangoAdapter.d.ts +2 -0
  93. package/lib/adapters/arangoAdapter.js +46 -0
  94. package/lib/adapters/fileAdapter.d.ts +3 -0
  95. package/lib/adapters/fileAdapter.js +76 -0
  96. package/lib/adapters/postAdapter.d.ts +2 -0
  97. package/lib/adapters/postAdapter.js +70 -0
  98. package/lib/adapters/reaktorAdapter.d.ts +6 -0
  99. package/lib/adapters/reaktorAdapter.js +44 -0
  100. package/lib/adapters/tagAdapter.d.ts +2 -0
  101. package/lib/adapters/tagAdapter.js +50 -0
  102. package/lib/adapters/userAdapter.d.ts +2 -0
  103. package/lib/adapters/userAdapter.js +110 -0
  104. package/lib/config.d.ts +20 -0
  105. package/lib/config.js +14 -15
  106. package/lib/index.d.ts +5 -0
  107. package/lib/lambdas/actions/websockets.d.ts +6 -0
  108. package/lib/lambdas/actions/websockets.js +7 -7
  109. package/lib/lambdas/authorizer.d.ts +20 -0
  110. package/lib/lambdas/authorizer.js +1 -1
  111. package/lib/lambdas/connection.d.ts +12 -0
  112. package/lib/lambdas/connection.js +5 -4
  113. package/lib/lambdas/utils/message.d.ts +1 -0
  114. package/lib/lambdas/utils/websocket.d.ts +7 -0
  115. package/lib/lambdas/utils/websocket.js +8 -6
  116. package/lib/mocks/conversation.d.ts +8 -0
  117. package/lib/mocks/conversation.js +35 -0
  118. package/lib/mocks/file.d.ts +11 -0
  119. package/lib/mocks/file.js +38 -0
  120. package/lib/mocks/group.d.ts +17 -0
  121. package/lib/mocks/group.js +47 -0
  122. package/lib/mocks/image.d.ts +3 -0
  123. package/lib/mocks/image.js +43 -0
  124. package/lib/mocks/nlabs.png +0 -0
  125. package/lib/mocks/post.d.ts +38 -0
  126. package/lib/mocks/post.js +55 -0
  127. package/lib/mocks/tag.d.ts +2 -0
  128. package/lib/mocks/tag.js +37 -0
  129. package/lib/mocks/user.d.ts +4 -0
  130. package/lib/mocks/user.js +88 -0
  131. package/lib/templates/email/layout.d.ts +2 -0
  132. package/lib/templates/email/passwordForgot.d.ts +2 -0
  133. package/lib/templates/email/passwordRecovery.d.ts +2 -0
  134. package/lib/templates/email/verifyEmail.d.ts +2 -0
  135. package/lib/templates/email/welcome.d.ts +2 -0
  136. package/lib/templates/sms/passwordForgot.d.ts +2 -0
  137. package/lib/templates/sms/passwordRecovery.d.ts +2 -0
  138. package/lib/templates/sms/verifyEmail.d.ts +2 -0
  139. package/lib/templates/sms/verifyPhone.d.ts +2 -0
  140. package/lib/templates/sms/welcome.d.ts +2 -0
  141. package/lib/types/apps.d.ts +46 -0
  142. package/lib/types/apps.js +17 -1
  143. package/lib/types/arangodb.d.ts +30 -0
  144. package/lib/types/arangodb.js +1 -1
  145. package/lib/types/auth.d.ts +7 -0
  146. package/lib/types/auth.js +1 -1
  147. package/lib/types/connections.d.ts +7 -0
  148. package/lib/types/connections.js +1 -1
  149. package/lib/types/conversations.d.ts +29 -0
  150. package/lib/types/conversations.js +1 -1
  151. package/lib/types/email.d.ts +13 -0
  152. package/lib/types/email.js +1 -1
  153. package/lib/types/error.d.ts +20 -0
  154. package/lib/types/error.js +44 -0
  155. package/lib/types/files.d.ts +26 -0
  156. package/lib/types/files.js +1 -1
  157. package/lib/types/google.d.ts +29 -0
  158. package/lib/types/google.js +1 -1
  159. package/lib/types/groups.d.ts +21 -0
  160. package/lib/types/groups.js +1 -1
  161. package/lib/types/images.d.ts +51 -0
  162. package/lib/types/images.js +1 -1
  163. package/lib/types/index.d.ts +18 -0
  164. package/lib/types/locations.d.ts +20 -0
  165. package/lib/types/locations.js +1 -1
  166. package/lib/types/messages.d.ts +16 -0
  167. package/lib/types/messages.js +1 -1
  168. package/lib/types/notifications.d.ts +17 -0
  169. package/lib/types/notifications.js +1 -1
  170. package/lib/types/payments.d.ts +112 -0
  171. package/lib/types/payments.js +1 -1
  172. package/lib/types/posts.d.ts +31 -0
  173. package/lib/types/posts.js +1 -1
  174. package/lib/types/statistics.d.ts +3 -0
  175. package/lib/types/statistics.js +1 -1
  176. package/lib/types/tags.d.ts +10 -0
  177. package/lib/types/tags.js +1 -1
  178. package/lib/types/users.d.ts +76 -0
  179. package/lib/types/users.js +1 -1
  180. package/lib/types/websocket.d.ts +13 -0
  181. package/lib/types/websocket.js +1 -1
  182. package/lib/utils/adapterUtils.d.ts +1 -0
  183. package/lib/utils/adapterUtils.js +45 -0
  184. package/lib/utils/analyticsUtils.d.ts +21 -0
  185. package/lib/utils/analyticsUtils.js +72 -0
  186. package/lib/utils/arangodbUtils.d.ts +65 -0
  187. package/lib/utils/arangodbUtils.js +144 -0
  188. package/lib/utils/auth.d.ts +20 -0
  189. package/lib/utils/auth.js +13 -30
  190. package/lib/utils/index.d.ts +5 -0
  191. package/lib/utils/index.js +7 -9
  192. package/lib/utils/session.d.ts +16 -0
  193. package/lib/utils/session.js +11 -2
  194. package/package.json +12 -5
  195. package/lib/utils/analytics.js +0 -88
  196. package/lib/utils/arangodb.js +0 -118
  197. package/lib/utils/graphql.js +0 -46
  198. package/lib/utils/objects.js +0 -59
@@ -1,8 +1,6 @@
1
- var __create = Object.create;
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
5
  var __export = (target, all) => {
8
6
  for (var name in all)
@@ -16,14 +14,6 @@ var __copyProps = (to, from, except, desc) => {
16
14
  }
17
15
  return to;
18
16
  };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
18
  var dynamodb_exports = {};
29
19
  __export(dynamodb_exports, {
@@ -33,14 +23,16 @@ __export(dynamodb_exports, {
33
23
  dynamoPut: () => dynamoPut,
34
24
  dynamoPutList: () => dynamoPutList,
35
25
  dynamoUpdate: () => dynamoUpdate,
36
- parseDynamo: () => parseDynamo
26
+ parseDynamoList: () => parseDynamoList
37
27
  });
38
28
  module.exports = __toCommonJS(dynamodb_exports);
39
- var import_aws_sdk = __toESM(require("aws-sdk"));
29
+ var import_client_dynamodb = require("@aws-sdk/client-dynamodb");
40
30
  var import_config = require("../config");
41
31
  const dynamoGet = (params) => new Promise((resolve, reject) => {
42
- import_aws_sdk.default.config.update(import_config.Config.get("aws"));
43
- const dynamodb = new import_aws_sdk.DynamoDB();
32
+ const dynamodb = new import_client_dynamodb.DynamoDB({
33
+ credentials: import_config.Config.get("aws.credentials"),
34
+ region: import_config.Config.get("aws.region")
35
+ });
44
36
  params.ConsistentRead = false;
45
37
  dynamodb.getItem(params, (error, results) => {
46
38
  if (error) {
@@ -49,8 +41,8 @@ const dynamoGet = (params) => new Promise((resolve, reject) => {
49
41
  return resolve(results);
50
42
  });
51
43
  });
52
- const parseDynamo = (results) => {
53
- const { Items: items } = results;
44
+ const parseDynamoList = (results) => {
45
+ const { Items: items = [] } = results;
54
46
  const data = [];
55
47
  for (let idx = 0, len = items.length; idx < len; idx++) {
56
48
  const tmp = items[idx];
@@ -71,22 +63,25 @@ const parseDynamo = (results) => {
71
63
  }
72
64
  return data;
73
65
  };
74
- const dynamoGetList = (params, index) => new Promise((resolve, reject) => {
75
- import_aws_sdk.default.config.update(import_config.Config.get("aws"));
76
- const dynamodb = new import_aws_sdk.DynamoDB();
66
+ const dynamoGetList = (params, startItem) => new Promise((resolve, reject) => {
67
+ const dynamodb = new import_client_dynamodb.DynamoDB({
68
+ credentials: import_config.Config.get("aws.credentials"),
69
+ region: import_config.Config.get("aws.region")
70
+ });
77
71
  const { ConsistentRead: consistentRead } = params;
78
72
  const updatedParams = { ...params };
79
- if (index) {
80
- updatedParams.ExclusiveStartKey = index;
73
+ if (startItem) {
74
+ updatedParams.ExclusiveStartKey = startItem;
81
75
  }
82
76
  if (!consistentRead) {
83
77
  updatedParams.ConsistentRead = false;
84
78
  }
79
+ const list = [];
85
80
  dynamodb.query(updatedParams, (error, output) => {
86
81
  if (error) {
87
82
  return reject(error);
88
83
  }
89
- const list = parseDynamo(output);
84
+ list.push(...parseDynamoList(output) || []);
90
85
  const { LastEvaluatedKey: lastKey } = output;
91
86
  if (lastKey !== void 0) {
92
87
  return dynamoGetList(params, lastKey);
@@ -95,8 +90,10 @@ const dynamoGetList = (params, index) => new Promise((resolve, reject) => {
95
90
  });
96
91
  });
97
92
  const dynamoPut = (params) => new Promise((resolve, reject) => {
98
- import_aws_sdk.default.config.update(import_config.Config.get("aws"));
99
- const dynamodb = new import_aws_sdk.DynamoDB();
93
+ const dynamodb = new import_client_dynamodb.DynamoDB({
94
+ credentials: import_config.Config.get("aws.credentials"),
95
+ region: import_config.Config.get("aws.region")
96
+ });
100
97
  dynamodb.putItem(params, (error, output) => {
101
98
  if (error) {
102
99
  return reject(error);
@@ -105,8 +102,10 @@ const dynamoPut = (params) => new Promise((resolve, reject) => {
105
102
  });
106
103
  });
107
104
  const dynamoUpdate = (params) => new Promise((resolve, reject) => {
108
- import_aws_sdk.default.config.update(import_config.Config.get("aws"));
109
- const dynamodb = new import_aws_sdk.DynamoDB();
105
+ const dynamodb = new import_client_dynamodb.DynamoDB({
106
+ credentials: import_config.Config.get("aws.credentials"),
107
+ region: import_config.Config.get("aws.region")
108
+ });
110
109
  dynamodb.updateItem(params, (error, output) => {
111
110
  if (error) {
112
111
  return reject(error);
@@ -115,8 +114,10 @@ const dynamoUpdate = (params) => new Promise((resolve, reject) => {
115
114
  });
116
115
  });
117
116
  const dynamoPutList = (params) => new Promise((resolve, reject) => {
118
- import_aws_sdk.default.config.update(import_config.Config.get("aws"));
119
- const dynamodb = new import_aws_sdk.DynamoDB();
117
+ const dynamodb = new import_client_dynamodb.DynamoDB({
118
+ credentials: import_config.Config.get("aws.credentials"),
119
+ region: import_config.Config.get("aws.region")
120
+ });
120
121
  dynamodb.batchWriteItem(params, (error, output) => {
121
122
  if (error) {
122
123
  return reject(error);
@@ -125,8 +126,10 @@ const dynamoPutList = (params) => new Promise((resolve, reject) => {
125
126
  });
126
127
  });
127
128
  const dynamoDel = (params) => new Promise((resolve, reject) => {
128
- import_aws_sdk.default.config.update(import_config.Config.get("aws"));
129
- const dynamodb = new import_aws_sdk.DynamoDB();
129
+ const dynamodb = new import_client_dynamodb.DynamoDB({
130
+ credentials: import_config.Config.get("aws.credentials"),
131
+ region: import_config.Config.get("aws.region")
132
+ });
130
133
  dynamodb.deleteItem(params, (error, output) => {
131
134
  if (error) {
132
135
  return reject(error);
@@ -142,6 +145,6 @@ const dynamoDel = (params) => new Promise((resolve, reject) => {
142
145
  dynamoPut,
143
146
  dynamoPutList,
144
147
  dynamoUpdate,
145
- parseDynamo
148
+ parseDynamoList
146
149
  });
147
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZHluYW1vZGIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYXdzLCB7RHluYW1vREJ9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHtcbiAgQmF0Y2hXcml0ZUl0ZW1JbnB1dCxcbiAgQmF0Y2hXcml0ZUl0ZW1PdXRwdXQsXG4gIERlbGV0ZUl0ZW1JbnB1dCxcbiAgRGVsZXRlSXRlbU91dHB1dCxcbiAgR2V0SXRlbUlucHV0LFxuICBHZXRJdGVtT3V0cHV0LFxuICBQdXRJdGVtSW5wdXQsXG4gIFB1dEl0ZW1PdXRwdXQsXG4gIFF1ZXJ5SW5wdXQsXG4gIFF1ZXJ5T3V0cHV0LFxuICBVcGRhdGVJdGVtSW5wdXQsXG4gIFVwZGF0ZUl0ZW1PdXRwdXRcbn0gZnJvbSAnYXdzLXNkay9jbGllbnRzL2R5bmFtb2RiJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdkeW5hbW9kYic7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9HZXQgPSAocGFyYW1zOiBHZXRJdGVtSW5wdXQpOiBQcm9taXNlPEdldEl0ZW1PdXRwdXQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcbiAgcGFyYW1zLkNvbnNpc3RlbnRSZWFkID0gZmFsc2U7XG5cbiAgZHluYW1vZGIuZ2V0SXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIHJlc3VsdHM6IEdldEl0ZW1PdXRwdXQpID0+IHtcbiAgICBpZihlcnJvcikge1xuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmUocmVzdWx0cyk7XG4gIH0pO1xufSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUR5bmFtbyA9IChyZXN1bHRzOiBRdWVyeU91dHB1dCk6IGFueVtdID0+IHtcbiAgY29uc3Qge0l0ZW1zOiBpdGVtc30gPSByZXN1bHRzO1xuICBjb25zdCBkYXRhOiBhbnlbXSA9IFtdO1xuXG4gIGZvcihsZXQgaWR4OiBudW1iZXIgPSAwLCBsZW4gPSBpdGVtcy5sZW5ndGg7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjb25zdCB0bXAgPSBpdGVtc1tpZHhdO1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgIGxldCBrZXk7XG5cbiAgICBmb3Ioa2V5IGluIHRtcCkge1xuICAgICAgaWYodG1wLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgaWYodG1wW2tleV0uUykge1xuICAgICAgICAgIG9ialtrZXldID0gdG1wW2tleV0uUy50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYodG1wW2tleV0uTikge1xuICAgICAgICAgIG9ialtrZXldID0gcGFyc2VGbG9hdCh0bXBba2V5XS5OKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHRtcFtrZXldLkI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkYXRhLnB1c2gob2JqKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0dldExpc3QgPSAocGFyYW1zOiBRdWVyeUlucHV0LCBpbmRleCk6IFByb21pc2U8R2V0SXRlbU91dHB1dFtdPiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgY29uc3QgZHluYW1vZGI6IER5bmFtb0RCID0gbmV3IER5bmFtb0RCKCk7XG4gIGNvbnN0IHtDb25zaXN0ZW50UmVhZDogY29uc2lzdGVudFJlYWR9ID0gcGFyYW1zO1xuICBjb25zdCB1cGRhdGVkUGFyYW1zID0gey4uLnBhcmFtc307XG5cbiAgaWYoaW5kZXgpIHtcbiAgICB1cGRhdGVkUGFyYW1zLkV4Y2x1c2l2ZVN0YXJ0S2V5ID0gaW5kZXg7XG4gIH1cblxuICBpZighY29uc2lzdGVudFJlYWQpIHtcbiAgICB1cGRhdGVkUGFyYW1zLkNvbnNpc3RlbnRSZWFkID0gZmFsc2U7XG4gIH1cblxuICBkeW5hbW9kYi5xdWVyeSh1cGRhdGVkUGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFF1ZXJ5T3V0cHV0KSA9PiB7XG4gICAgaWYoZXJyb3IpIHtcbiAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgICAvLyBTYXZlIGxpc3Qgb2YgaXRlbXNcbiAgICBjb25zdCBsaXN0OiBhbnlbXSA9IHBhcnNlRHluYW1vKG91dHB1dCk7XG4gICAgY29uc3Qge0xhc3RFdmFsdWF0ZWRLZXk6IGxhc3RLZXl9ID0gb3V0cHV0O1xuXG4gICAgaWYobGFzdEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBTYXZlIGxhc3QgaW5kZXggYmVmb3JlIGxvb3BpbmdcbiAgICAgIHJldHVybiBkeW5hbW9HZXRMaXN0KHBhcmFtcywgbGFzdEtleSk7XG4gICAgfVxuXG4gICAgLy8gUXVlcnkgY29tcGxldGUsIHJldHVybiBmaW5hbCBsaXN0XG4gICAgcmV0dXJuIHJlc29sdmUobGlzdCk7XG4gIH0pO1xufSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9QdXQgPSAocGFyYW1zOiBQdXRJdGVtSW5wdXQpOiBQcm9taXNlPFB1dEl0ZW1PdXRwdXQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcblxuICBkeW5hbW9kYi5wdXRJdGVtKHBhcmFtcywgKGVycm9yLCBvdXRwdXQ6IFB1dEl0ZW1PdXRwdXQpID0+IHtcbiAgICBpZihlcnJvcikge1xuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gIH0pO1xufSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9VcGRhdGUgPSAocGFyYW1zOiBVcGRhdGVJdGVtSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUl0ZW1PdXRwdXQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcblxuICBkeW5hbW9kYi51cGRhdGVJdGVtKHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0OiBVcGRhdGVJdGVtT3V0cHV0KSA9PiB7XG4gICAgaWYoZXJyb3IpIHtcbiAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICB9KTtcbn0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0TGlzdCA9IChwYXJhbXM6IEJhdGNoV3JpdGVJdGVtSW5wdXQpOiBQcm9taXNlPEJhdGNoV3JpdGVJdGVtT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gICAgZHluYW1vZGIuYmF0Y2hXcml0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEJhdGNoV3JpdGVJdGVtT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vRGVsID0gKHBhcmFtczogRGVsZXRlSXRlbUlucHV0KTogUHJvbWlzZTxEZWxldGVJdGVtT3V0cHV0PiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgY29uc3QgZHluYW1vZGI6IER5bmFtb0RCID0gbmV3IER5bmFtb0RCKCk7XG5cbiAgZHluYW1vZGIuZGVsZXRlSXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBEZWxldGVJdGVtT3V0cHV0KSA9PiB7XG4gICAgaWYoZXJyb3IpIHtcbiAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICB9KTtcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLHFCQUE0QjtBQWdCNUIsb0JBQXFCO0FBSWQsTUFBTSxZQUFZLENBQUMsV0FBaUQsSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQzFHLGlCQUFBQSxRQUFJLE9BQU8sT0FBTyxxQkFBTyxJQUFJLEtBQUssQ0FBQztBQUNuQyxRQUFNLFdBQXFCLElBQUksd0JBQVM7QUFDeEMsU0FBTyxpQkFBaUI7QUFFeEIsV0FBUyxRQUFRLFFBQVEsQ0FBQyxPQUFjLFlBQTJCO0FBQ2pFLFFBQUcsT0FBTztBQUNSLGFBQU8sT0FBTyxLQUFLO0FBQUEsSUFDckI7QUFFQSxXQUFPLFFBQVEsT0FBTztBQUFBLEVBQ3hCLENBQUM7QUFDSCxDQUFDO0FBRU0s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
150
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZHluYW1vZGIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1xuICBCYXRjaFdyaXRlSXRlbUNvbW1hbmRJbnB1dCxcbiAgQmF0Y2hXcml0ZUl0ZW1Db21tYW5kT3V0cHV0LFxuICBEZWxldGVJdGVtQ29tbWFuZElucHV0LFxuICBEZWxldGVJdGVtQ29tbWFuZE91dHB1dCxcbiAgRHluYW1vREIsXG4gIEdldEl0ZW1Db21tYW5kSW5wdXQsXG4gIEdldEl0ZW1Db21tYW5kT3V0cHV0LFxuICBQdXRJdGVtQ29tbWFuZElucHV0LFxuICBQdXRJdGVtQ29tbWFuZE91dHB1dCxcbiAgUXVlcnlDb21tYW5kSW5wdXQsXG4gIFF1ZXJ5Q29tbWFuZE91dHB1dCxcbiAgVXBkYXRlSXRlbUNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlSXRlbUNvbW1hbmRPdXRwdXRcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdkeW5hbW9kYic7XG5leHBvcnQgY29uc3QgZHluYW1vR2V0ID0gKHBhcmFtczogR2V0SXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0SXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuICAgIHBhcmFtcy5Db25zaXN0ZW50UmVhZCA9IGZhbHNlO1xuXG4gICAgZHluYW1vZGIuZ2V0SXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIHJlc3VsdHM6IEdldEl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUocmVzdWx0cyk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEeW5hbW9MaXN0ID0gKHJlc3VsdHM6IFF1ZXJ5Q29tbWFuZE91dHB1dCk6IGFueVtdID0+IHtcbiAgY29uc3Qge0l0ZW1zOiBpdGVtcyA9IFtdfSA9IHJlc3VsdHM7XG4gIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGZvcihsZXQgaWR4OiBudW1iZXIgPSAwLCBsZW4gPSBpdGVtcy5sZW5ndGg7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjb25zdCB0bXAgPSBpdGVtc1tpZHhdO1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgIGxldCBrZXk7XG5cbiAgICBmb3Ioa2V5IGluIHRtcCkge1xuICAgICAgaWYodG1wLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgaWYodG1wW2tleV0uUykge1xuICAgICAgICAgIG9ialtrZXldID0gdG1wW2tleV0uUy50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYodG1wW2tleV0uTikge1xuICAgICAgICAgIG9ialtrZXldID0gcGFyc2VGbG9hdCh0bXBba2V5XS5OKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHRtcFtrZXldLkI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkYXRhLnB1c2gob2JqKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0dldExpc3QgPSAocGFyYW1zOiBRdWVyeUNvbW1hbmRJbnB1dCwgc3RhcnRJdGVtPyk6IFByb21pc2U8R2V0SXRlbUNvbW1hbmRPdXRwdXRbXT4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG4gICAgY29uc3Qge0NvbnNpc3RlbnRSZWFkOiBjb25zaXN0ZW50UmVhZH0gPSBwYXJhbXM7XG4gICAgY29uc3QgdXBkYXRlZFBhcmFtcyA9IHsuLi5wYXJhbXN9O1xuXG4gICAgaWYoc3RhcnRJdGVtKSB7XG4gICAgICB1cGRhdGVkUGFyYW1zLkV4Y2x1c2l2ZVN0YXJ0S2V5ID0gc3RhcnRJdGVtO1xuICAgIH1cblxuICAgIGlmKCFjb25zaXN0ZW50UmVhZCkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5Db25zaXN0ZW50UmVhZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSBbXTtcblxuICAgIGR5bmFtb2RiLnF1ZXJ5KHVwZGF0ZWRQYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogUXVlcnlDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKC4uLihwYXJzZUR5bmFtb0xpc3Qob3V0cHV0KSB8fCBbXSkpO1xuXG4gICAgICBjb25zdCB7TGFzdEV2YWx1YXRlZEtleTogbGFzdEtleX0gPSBvdXRwdXQ7XG5cbiAgICAgIGlmKGxhc3RLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZHluYW1vR2V0TGlzdChwYXJhbXMsIGxhc3RLZXkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShsaXN0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9QdXQgPSAocGFyYW1zOiBQdXRJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRJdGVtQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBkeW5hbW9kYi5wdXRJdGVtKHBhcmFtcywgKGVycm9yLCBvdXRwdXQ6IFB1dEl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vVXBkYXRlID0gKHBhcmFtczogVXBkYXRlSXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlSXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIudXBkYXRlSXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogVXBkYXRlSXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9QdXRMaXN0ID0gKHBhcmFtczogQmF0Y2hXcml0ZUl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPEJhdGNoV3JpdGVJdGVtQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBkeW5hbW9kYi5iYXRjaFdyaXRlSXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogQmF0Y2hXcml0ZUl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vRGVsID0gKHBhcmFtczogRGVsZXRlSXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlSXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIuZGVsZXRlSXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBEZWxldGVJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLDZCQWNPO0FBRVAsb0JBQXFCO0FBR2QsTUFBTSxZQUFZLENBQUMsV0FDeEIsSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQy9CLFFBQU0sV0FBVyxJQUFJLGdDQUFTO0FBQUEsSUFDNUIsYUFBYSxxQkFBTyxJQUFJLGlCQUFpQjtBQUFBLElBQ3pDLFFBQVEscUJBQU8sSUFBSSxZQUFZO0FBQUEsRUFDakMsQ0FBQztBQUNELFNBQU8saUJBQWlCO0FBRXhCLFdBQVMsUUFBUSxRQUFRLENBQUMsT0FBYyxZQUFrQztBQUN4RSxRQUFHLE9BQU87QUFDUixhQUFPLE9BQU8sS0FBSztBQUFBLElBQ3JCO0FBRUEsV0FBTyxRQUFRLE9BQU87QUFBQSxFQUN4QixDQUFDO0FBQ0gsQ0FBQztBQUVJLE1BQU0sa0JBQWtCLENBQUMsWUFBdUM7QUFDckUsUUFBTSxFQUFDLE9BQU8sUUFBUSxDQUFDLEVBQUMsSUFBSTtBQUM1QixRQUFNLE9BQWMsQ0FBQztBQUdyQixXQUFRLE1BQWMsR0FBRyxNQUFNLE1BQU0sUUFBUSxNQUFNLEtBQUssT0FBTztBQUM3RCxVQUFNLE1BQU0sTUFBTSxHQUFHO0FBQ3JCLFVBQU0sTUFBTSxDQUFDO0FBQ2IsUUFBSTtBQUVKLFNBQUksT0FBTyxLQUFLO0FBQ2QsVUFBRyxJQUFJLGVBQWUsR0FBRyxHQUFHO0FBQzFCLFlBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUNiLGNBQUksR0FBRyxJQUFJLElBQUksR0FBRyxFQUFF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
@@ -0,0 +1,5 @@
1
+ import { SendEmailCommandInput, SendEmailCommandOutput } from '@aws-sdk/client-ses';
2
+ import { EmailType } from '../types/email';
3
+ export declare const sesSend: (params: SendEmailCommandInput) => Promise<SendEmailCommandOutput>;
4
+ export declare const sendEmail: (params: EmailType) => Promise<boolean>;
5
+ export declare const sendTemplate: (templateName: string, emailParams: EmailType) => Promise<boolean>;
@@ -27,13 +27,14 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
28
  var email_exports = {};
29
29
  __export(email_exports, {
30
- appTemplate: () => appTemplate,
31
30
  sendEmail: () => sendEmail,
32
31
  sendTemplate: () => sendTemplate,
33
32
  sesSend: () => sesSend
34
33
  });
35
34
  module.exports = __toCommonJS(email_exports);
36
- var import_aws_sdk = __toESM(require("aws-sdk"));
35
+ var import_client_ses = require("@aws-sdk/client-ses");
36
+ var import_utils = require("@nlabs/utils");
37
+ var import_s3 = require("./s3");
37
38
  var import_config = require("../config");
38
39
  var import_layout = __toESM(require("../templates/email/layout"));
39
40
  var import_passwordForgot = __toESM(require("../templates/email/passwordForgot"));
@@ -44,22 +45,11 @@ var import_passwordForgot2 = __toESM(require("../templates/sms/passwordForgot"))
44
45
  var import_passwordRecovery2 = __toESM(require("../templates/sms/passwordRecovery"));
45
46
  var import_verifyEmail2 = __toESM(require("../templates/sms/verifyEmail"));
46
47
  var import_welcome2 = __toESM(require("../templates/sms/welcome"));
47
- var import_s32 = require("./s3");
48
- const appTemplate = (app, message = "", vars = {}) => {
49
- let updatedMessage = "";
50
- if (app) {
51
- updatedMessage = message.replace(/\[appName\]/g, app.name).replace(/\[appUrl\]/g, app.url).replace(/\[appEmail\]/g, app.email);
52
- }
53
- Object.keys(vars).forEach((key) => {
54
- if (vars[key]) {
55
- updatedMessage = message.replace(new RegExp(`\\[${key}\\]`, "g"), vars[key]);
56
- }
57
- });
58
- return updatedMessage;
59
- };
60
48
  const sesSend = (params) => new Promise((resolve, reject) => {
61
- import_aws_sdk.default.config.update(import_config.Config.get("aws"));
62
- const ses = new import_aws_sdk.SES();
49
+ const ses = new import_client_ses.SES({
50
+ credentials: import_config.Config.get("aws.credentials"),
51
+ region: import_config.Config.get("aws.region")
52
+ });
63
53
  ses.sendEmail(params, (error, response) => {
64
54
  if (error) {
65
55
  return reject(error);
@@ -69,45 +59,25 @@ const sesSend = (params) => new Promise((resolve, reject) => {
69
59
  });
70
60
  const sendEmail = (params) => {
71
61
  const {
72
- app = {},
73
- html,
62
+ app,
63
+ // html,
74
64
  subject,
75
- subTitle = "",
65
+ // subTitle = '',
76
66
  text,
77
- title = "",
78
- user = {}
67
+ // title = '',
68
+ user
79
69
  } = params;
80
70
  const to = [user.email];
81
71
  let promise;
82
- const formatSubject = appTemplate(app, subject);
83
- const formatSubTitle = appTemplate(app, subTitle);
84
- const formatTitle = appTemplate(app, title);
85
- const formatText = appTemplate(app, text);
86
- const formatHtml = appTemplate(app, html);
87
- const { _key: hasCustomEmail, urlFacebook, urlTwitter } = app;
88
- const parseTemplate = (body) => {
89
- const templateBody = appTemplate(app, body || "");
90
- let links = "";
91
- const spacer = '<td width="5"><img width="1" height="1" border="0" title="" alt="" src="https://box.reaktor.io/images/email/spacer.gif"/></td>';
92
- if (urlFacebook) {
93
- links = `<td width="30"><a href="${urlFacebook}"><img width="30" height="30" border="0" title="Facebook" alt="Facebook" src="https://box.reaktor.io/images/email/icon-facebook.png"/></a></td>`;
94
- }
95
- if (urlTwitter) {
96
- if (urlFacebook) {
97
- links += spacer;
98
- }
99
- links += `<td width="30"><a href="${urlTwitter}"><img width="30" height="30" border="0" title="Twitter" alt="Twitter" src="https://box.reaktor.io/images/email/icon-twitter.png"/></a></td>`;
100
- }
101
- if (!links.length) {
102
- links += spacer;
103
- }
104
- return templateBody.replace(/\[title\]/g, formatTitle).replace(/\[subTitle\]/g, formatSubTitle).replace(/\[subject\]/g, formatSubject).replace(/\[message\]/g, formatHtml).replace(/\[links\]/g, links);
105
- };
72
+ const { _key: hasCustomEmail } = app;
73
+ const variables = { ...app, ...user };
74
+ const formatSubject = (0, import_utils.parseTemplate)(subject, variables);
75
+ const formatText = (0, import_utils.parseTemplate)(text, variables);
106
76
  if (hasCustomEmail) {
107
77
  const s3Params = { Bucket: null, Key: "apps/templates/email.html" };
108
- promise = (0, import_s32.s3Get)(s3Params).then((results) => parseTemplate(results.Body.toString()));
78
+ promise = (0, import_s3.s3Get)(s3Params).then((results) => (0, import_utils.parseTemplate)(results.Body.toString(), variables));
109
79
  } else {
110
- promise = Promise.resolve(parseTemplate(import_layout.default));
80
+ promise = Promise.resolve((0, import_utils.parseTemplate)(import_layout.default, variables));
111
81
  }
112
82
  return promise.then((parsedHtml) => {
113
83
  const emailParams = {
@@ -125,7 +95,7 @@ const sendEmail = (params) => {
125
95
  });
126
96
  };
127
97
  const sendTemplate = (templateName, emailParams) => {
128
- const { app, user, subject, subTitle, title, vars } = emailParams;
98
+ const { app, user, subject, subTitle, title } = emailParams;
129
99
  let html;
130
100
  let text;
131
101
  try {
@@ -156,8 +126,9 @@ const sendTemplate = (templateName, emailParams) => {
156
126
  break;
157
127
  }
158
128
  }
159
- const templateHtml = appTemplate(app, html, vars);
160
- const templateText = appTemplate(app, text, vars);
129
+ const variables = { ...app, ...user };
130
+ const templateHtml = (0, import_utils.parseTemplate)(html, variables);
131
+ const templateText = (0, import_utils.parseTemplate)(text, variables);
161
132
  const params = {
162
133
  app,
163
134
  html: templateHtml,
@@ -174,9 +145,8 @@ const sendTemplate = (templateName, emailParams) => {
174
145
  };
175
146
  // Annotate the CommonJS export names for ESM import in node:
176
147
  0 && (module.exports = {
177
- appTemplate,
178
148
  sendEmail,
179
149
  sendTemplate,
180
150
  sesSend
181
151
  });
182
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZW1haWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYXdzLCB7U0VTfSBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7R2V0T2JqZWN0UmVxdWVzdH0gZnJvbSAnYXdzLXNkay9jbGllbnRzL3MzJztcbmltcG9ydCB7U2VuZEVtYWlsUmVxdWVzdCwgU2VuZEVtYWlsUmVzcG9uc2V9IGZyb20gJ2F3cy1zZGsvY2xpZW50cy9zZXMnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCBsYXlvdXRUZW1wbGF0ZSBmcm9tICcuLi90ZW1wbGF0ZXMvZW1haWwvbGF5b3V0JztcbmltcG9ydCBmb3Jnb3RFbWFpbFRlbXBsYXRlIGZyb20gJy4uL3RlbXBsYXRlcy9lbWFpbC9wYXNzd29yZEZvcmdvdCc7XG5pbXBvcnQgcmVjb3ZlcnlFbWFpbFRlbXBsYXRlIGZyb20gJy4uL3RlbXBsYXRlcy9lbWFpbC9wYXNzd29yZFJlY292ZXJ5JztcbmltcG9ydCB2ZXJpZnlFbWFpbFRlbXBsYXRlIGZyb20gJy4uL3RlbXBsYXRlcy9lbWFpbC92ZXJpZnlFbWFpbCc7XG5pbXBvcnQgd2VsY29tZUVtYWlsVGVtcGxhdGUgZnJvbSAnLi4vdGVtcGxhdGVzL2VtYWlsL3dlbGNvbWUnO1xuaW1wb3J0IGZvcmdvdFNtc1RlbXBsYXRlIGZyb20gJy4uL3RlbXBsYXRlcy9zbXMvcGFzc3dvcmRGb3Jnb3QnO1xuaW1wb3J0IHJlY292ZXJ5U21zVGVtcGxhdGUgZnJvbSAnLi4vdGVtcGxhdGVzL3Ntcy9wYXNzd29yZFJlY292ZXJ5JztcbmltcG9ydCB2ZXJpZnlTbXNUZW1wbGF0ZSBmcm9tICcuLi90ZW1wbGF0ZXMvc21zL3ZlcmlmeUVtYWlsJztcbmltcG9ydCB3ZWxjb21lU21zVGVtcGxhdGUgZnJvbSAnLi4vdGVtcGxhdGVzL3Ntcy93ZWxjb21lJztcbmltcG9ydCB7QXBwVHlwZX0gZnJvbSAnLi4vdHlwZXMvYXBwcyc7XG5pbXBvcnQge0VtYWlsVHlwZX0gZnJvbSAnLi4vdHlwZXMvZW1haWwnO1xuaW1wb3J0IHtzM0dldH0gZnJvbSAnLi9zMyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdlbWFpbCc7XG5cbmV4cG9ydCBjb25zdCBhcHBUZW1wbGF0ZSA9IChhcHA6IEFwcFR5cGUsIG1lc3NhZ2U6IHN0cmluZyA9ICcnLCB2YXJzID0ge30pOiBzdHJpbmcgPT4ge1xuICBsZXQgdXBkYXRlZE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gIGlmKGFwcCkge1xuICAgIHVwZGF0ZWRNZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXFthcHBOYW1lXFxdL2csIGFwcC5uYW1lKVxuICAgICAgLnJlcGxhY2UoL1xcW2FwcFVybFxcXS9nLCBhcHAudXJsKVxuICAgICAgLnJlcGxhY2UoL1xcW2FwcEVtYWlsXFxdL2csIGFwcC5lbWFpbCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyh2YXJzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgIGlmKHZhcnNba2V5XSkge1xuICAgICAgdXBkYXRlZE1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXFske2tleX1cXFxcXWAsICdnJyksIHZhcnNba2V5XSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdXBkYXRlZE1lc3NhZ2U7XG59O1xuXG4vLyBBV1M6OlNFU1xuZXhwb3J0IGNvbnN0IHNlc1NlbmQgPSAocGFyYW1zOiBTZW5kRW1haWxSZXF1ZXN0KTogUHJvbWlzZTxTZW5kRW1haWxSZXNwb25zZT4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gIGNvbnN0IHNlczogU0VTID0gbmV3IFNFUygpO1xuXG4gIHNlcy5zZW5kRW1haWwocGFyYW1zLCAoZXJyb3I6IEVycm9yLCByZXNwb25zZTogU2VuZEVtYWlsUmVzcG9uc2UpID0+IHtcbiAgICBpZihlcnJvcikge1xuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICB9KTtcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2VuZEVtYWlsID0gKHBhcmFtczogRW1haWxUeXBlKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBhcHAgPSB7fSxcbiAgICBodG1sLFxuICAgIHN1YmplY3QsXG4gICAgc3ViVGl0bGUgPSAnJyxcbiAgICB0ZXh0LFxuICAgIHRpdGxlID0gJycsXG4gICAgdXNlciA9IHt9XG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgdG8gPSBbdXNlci5lbWFpbF07XG4gIGxldCBwcm9taXNlO1xuXG4gIGNvbnN0IGZvcm1hdFN1YmplY3Q6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgc3ViamVjdCk7XG4gIGNvbnN0IGZvcm1hdFN1YlRpdGxlOiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIHN1YlRpdGxlKTtcbiAgY29uc3QgZm9ybWF0VGl0bGU6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgdGl0bGUpO1xuICBjb25zdCBmb3JtYXRUZXh0OiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIHRleHQpO1xuICBjb25zdCBmb3JtYXRIdG1sOiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIGh0bWwpO1xuICBjb25zdCB7X2tleTogaGFzQ3VzdG9tRW1haWwsIHVybEZhY2Vib29rLCB1cmxUd2l0dGVyfSA9IGFwcDtcblxuICBjb25zdCBwYXJzZVRlbXBsYXRlID0gKGJvZHk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlQm9keTogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCBib2R5IHx8ICcnKTtcblxuICAgIC8vIExpbmtzXG4gICAgbGV0IGxpbmtzOiBzdHJpbmcgPSAnJztcbiAgICBjb25zdCBzcGFjZXIgPSAnPHRkIHdpZHRoPVwiNVwiPjxpbWcgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiIGJvcmRlcj1cIjBcIiB0aXRsZT1cIlwiIGFsdD1cIlwiICcgK1xuICAgICAgJ3NyYz1cImh0dHBzOi8vYm94LnJlYWt0b3IuaW8vaW1hZ2VzL2VtYWlsL3NwYWNlci5naWZcIi8+PC90ZD4nO1xuXG4gICAgaWYodXJsRmFjZWJvb2spIHtcbiAgICAgIGxpbmtzID0gYDx0ZCB3aWR0aD1cIjMwXCI+PGEgaHJlZj1cIiR7dXJsRmFjZWJvb2t9XCI+PGltZyB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzBcIiBib3JkZXI9XCIwXCIgYCArXG4gICAgICAgICd0aXRsZT1cIkZhY2Vib29rXCIgYWx0PVwiRmFjZWJvb2tcIiBzcmM9XCJodHRwczovL2JveC5yZWFrdG9yLmlvL2ltYWdlcy9lbWFpbC9pY29uLWZhY2Vib29rLnBuZ1wiLz48L2E+PC90ZD4nO1xuICAgIH1cblxuICAgIGlmKHVybFR3aXR0ZXIpIHtcbiAgICAgIGlmKHVybEZhY2Vib29rKSB7XG4gICAgICAgIGxpbmtzICs9IHNwYWNlcjtcbiAgICAgIH1cblxuICAgICAgbGlua3MgKz0gYDx0ZCB3aWR0aD1cIjMwXCI+PGEgaHJlZj1cIiR7dXJsVHdpdHRlcn1cIj48aW1nIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIGJvcmRlcj1cIjBcIiBgICtcbiAgICAgICAgJ3RpdGxlPVwiVHdpdHRlclwiIGFsdD1cIlR3aXR0ZXJcIiBzcmM9XCJodHRwczovL2JveC5yZWFrdG9yLmlvL2ltYWdlcy9lbWFpbC9pY29uLXR3aXR0ZXIucG5nXCIvPjwvYT48L3RkPic7XG4gICAgfVxuXG4gICAgaWYoIWxpbmtzLmxlbmd0aCkge1xuICAgICAgbGlua3MgKz0gc3BhY2VyO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW1wbGF0ZUJvZHkucmVwbGFjZSgvXFxbdGl0bGVcXF0vZywgZm9ybWF0VGl0bGUpXG4gICAgICAucmVwbGFjZSgvXFxbc3ViVGl0bGVcXF0vZywgZm9ybWF0U3ViVGl0bGUpXG4gICAgICAucmVwbGFjZSgvXFxbc3ViamVjdFxcXS9nLCBmb3JtYXRTdWJqZWN0KVxuICAgICAgLnJlcGxhY2UoL1xcW21lc3NhZ2VcXF0vZywgZm9ybWF0SHRtbClcbiAgICAgIC5yZXBsYWNlKC9cXFtsaW5rc1xcXS9nLCBsaW5rcyk7XG4gIH07XG5cbiAgaWYoaGFzQ3VzdG9tRW1haWwpIHtcbiAgICBjb25zdCBzM1BhcmFtczogR2V0T2JqZWN0UmVxdWVzdCA9IHtCdWNrZXQ6IG51bGwsIEtleTogJ2FwcHMvdGVtcGxhdGVzL2VtYWlsLmh0bWwnfTtcbiAgICBwcm9taXNlID0gczNHZXQoczNQYXJhbXMpLnRoZW4oKHJlc3VsdHMpID0+IHBhcnNlVGVtcGxhdGUocmVzdWx0cy5Cb2R5LnRvU3RyaW5nKCkpKTtcbiAgfSBlbHNlIHtcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHBhcnNlVGVtcGxhdGUobGF5b3V0VGVtcGxhdGUpKTtcbiAgfVxuXG4gIHJldHVybiBwcm9taXNlLnRoZW4oKHBhcnNlZEh0bWw6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGVtYWlsUGFyYW1zOiBTZW5kRW1haWxSZXF1ZXN0ID0ge1xuICAgICAgRGVzdGluYXRpb246IHtUb0FkZHJlc3NlczogdG99LFxuICAgICAgTWVzc2FnZToge1xuICAgICAgICBCb2R5OiB7XG4gICAgICAgICAgSHRtbDoge0RhdGE6IHBhcnNlZEh0bWx9LFxuICAgICAgICAgIFRleHQ6IHtEYXRhOiBmb3JtYXRUZXh0fVxuICAgICAgICB9LFxuICAgICAgICBTdWJqZWN0OiB7RGF0YTogZm9ybWF0U3ViamVjdH1cbiAgICAgIH0sXG4gICAgICBTb3VyY2U6IGBcIiR7YXBwLnN1cHBvcnROYW1lfVwiIDxub3JlcGx5QCR7Q29uZmlnLmdldCgnYXBwLnVybCcpfT5gXG4gICAgfTtcblxuICAgIHJldHVybiBzZXNTZW5kKGVtYWlsUGFyYW1zKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VuZFRlbXBsYXRlID0gKHRlbXBsYXRlTmFtZTogc3RyaW5nLCBlbWFpbFBhcmFtczogRW1haWxUeXBlKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHthcHAsIHVzZXIsIHN1YmplY3QsIHN1YlRpdGxlLCB0aXRsZSwgdmFyc306IEVtYWlsVHlwZSA9IGVtYWlsUGFyYW1zO1xuICBsZXQgaHRtbDogc3RyaW5nO1xuICBsZXQgdGV4dDogc3RyaW5nO1xuXG4gIHRyeSB7XG4gICAgc3dpdGNoKHRlbXBsYXRlTmFtZSkge1xuICAgICAgY2FzZSAncGFzc3dvcmRGb3Jnb3QnOiB7XG4gICAgICAgIGh0bWwgPSBmb3Jnb3RFbWFpbFRlbXBsYXRlO1xuICAgICAgICB0ZXh0ID0gZm9yZ290U21zVGVtcGxhdGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAncGFzc3dvcmRSZWNvdmVyeSc6IHtcbiAgICAgICAgaHRtbCA9IHJlY292ZXJ5RW1haWxUZW1wbGF0ZTtcbiAgICAgICAgdGV4dCA9IHJlY292ZXJ5U21zVGVtcGxhdGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndmVyaWZ5UmVjb3ZlcnknOiB7XG4gICAgICAgIGh0bWwgPSB2ZXJpZnlFbWFpbFRlbXBsYXRlO1xuICAgICAgICB0ZXh0ID0gdmVyaWZ5U21zVGVtcGxhdGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndmVyaWZ5RW1haWwnOiB7XG4gICAgICAgIGh0bWwgPSB2ZXJpZnlFbWFpbFRlbXBsYXRlO1xuICAgICAgICB0ZXh0ID0gdmVyaWZ5U21zVGVtcGxhdGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2VsY29tZSc6IHtcbiAgICAgICAgaHRtbCA9IHdlbGNvbWVFbWFpbFRlbXBsYXRlO1xuICAgICAgICB0ZXh0ID0gd2VsY29tZVNtc1RlbXBsYXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZUh0bWw6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgaHRtbCwgdmFycyk7XG4gICAgY29uc3QgdGVtcGxhdGVUZXh0OiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIHRleHQsIHZhcnMpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXBwLFxuICAgICAgaHRtbDogdGVtcGxhdGVIdG1sLFxuICAgICAgc3ViVGl0bGUsXG4gICAgICBzdWJqZWN0LFxuICAgICAgdGV4dDogdGVtcGxhdGVUZXh0LFxuICAgICAgdGl0bGUsXG4gICAgICB1c2VyXG4gICAgfTtcblxuICAgIHJldHVybiBzZW5kRW1haWwocGFyYW1zKVxuICAgICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICB9XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLHFCQUF1QjtBQUl2QixvQkFBcUI7QUFDckIsb0JBQTJCO0FBQzNCLDRCQUFnQztBQUNoQyw4QkFBa0M7QUFDbEMseUJBQWdDO0FBQ2hDLHFCQUFpQztBQUNqQyxJQUFBQSx5QkFBOEI7QUFDOUIsSUFBQUMsMkJBQWdDO0FBQ2hDLElBQUFDLHNCQUE4QjtBQUM5QixJQUFBQyxrQkFBK0I7QUFHL0IsSUFBQUMsYUFBb0I7QUFJYixNQUFNLGNBQWMsQ0FBQyxLQUFjLFVBQWtCLElBQUksT0FBTyxDQUFDLE1BQWM7QUFDcEYsTUFBSSxp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Q0EsUUFBUSxJQUFJLElBQUksV0FBVyxjQUFjLHFCQUFPLElBQUksU0FBUyxDQUFDO0FBQUEsSUFDaEU7QUFFQSxXQUFPLFFBQVEsV0FBVztBQUFBLEVBQzVCLENBQUM7QUFDSDtBQUVPLE1BQU0sZUFBZSxDQUFDLGNBQXNCLGdCQUE2QztBQUM5RixRQUFNLEVBQUMsS0FBSyxNQUFNLFNBQVMsVUFBVSxPQUFPLEtBQUksSUFBZTtBQUMvRCxNQUFJO0FBQ0osTUFBSTtBQUVKLE1BQUk7QUFDRixZQUFPLGNBQWM7QUFBQSxNQUNuQixLQUFLLGtCQUFrQjtBQUNyQixlQUFPLHNCQUFBQztBQUNQLGVBQU8sdUJBQUFDO0FBQ1A7QUFBQSxNQUNGO0FBQUEsTUFDQSxLQUFLLG9CQUFvQjtBQUN2QixlQUFPLHdCQUFBQztBQUNQLGVBQU8seUJBQUFDO0FBQ1A7QUFBQSxNQUNGO0FBQUEsTUFDQSxLQUFLLGtCQUFrQjtBQUNyQixlQUFPLG1CQUFBQztBQUNQLGVBQU8sb0JBQUFDO0FBQ1A7QUFBQSxNQUNGO0FBQUEsTUFDQSxLQUFLLGVBQWU7QUFDbEIsZUFBTyxtQkFBQUQ7QUFDUCxlQUFPLG9CQUFBQztBQUNQO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSyxXQUFXO0FBQ2QsZUFBTyxlQUFBQztBQUNQLGVBQU8sZ0JBQUFDO0FBQ1A7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLFVBQU0sZUFBdUIsWUFBWSxLQUFLLE1BQU0sSUFBSTtBQUN4RCxVQUFNLGVBQXVCLFlBQVksS0FBSyxNQUFNLElBQUk7QUFFeEQsVUFBTSxTQUFTO0FBQUEsTUFDYjtBQUFBLE1BQ0EsTUFBTTtBQUFBLE1BQ047QUFBQSxNQUNBO0FBQUEsTUFDQSxNQUFNO0FBQUEsTUFDTjtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBRUEsV0FBTyxVQUFVLE1BQU0sRUFDcEIsS0FBSyxNQUFNLElBQUksRUFDZixNQUFNLE1BQU0sS0FBSztBQUFBLEVBQ3RCLFNBQVEsT0FBTztBQUNiLFdBQU8sUUFBUSxPQUFPLEtBQUs7QUFBQSxFQUM3QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfcGFzc3dvcmRGb3Jnb3QiLCAiaW1wb3J0X3Bhc3N3b3JkUmVjb3ZlcnkiLCAiaW1wb3J0X3ZlcmlmeUVtYWlsIiwgImltcG9ydF93ZWxjb21lIiwgImltcG9ydF9zMyIsICJhd3MiLCAibGF5b3V0VGVtcGxhdGUiLCAiZm9yZ290RW1haWxUZW1wbGF0ZSIsICJmb3Jnb3RTbXNUZW1wbGF0ZSIsICJyZWNvdmVyeUVtYWlsVGVtcGxhdGUiLCAicmVjb3ZlcnlTbXNUZW1wbGF0ZSIsICJ2ZXJpZnlFbWFpbFRlbXBsYXRlIiwgInZlcmlmeVNtc1RlbXBsYXRlIiwgIndlbGNvbWVFbWFpbFRlbXBsYXRlIiwgIndlbGNvbWVTbXNUZW1wbGF0ZSJdCn0K
152
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZW1haWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge0dldE9iamVjdENvbW1hbmRJbnB1dH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7U2VuZEVtYWlsQ29tbWFuZElucHV0LCBTZW5kRW1haWxDb21tYW5kT3V0cHV0LCBTRVN9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZXMnO1xuaW1wb3J0IHtwYXJzZVRlbXBsYXRlfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuXG5pbXBvcnQge3MzR2V0fSBmcm9tICcuL3MzJztcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IGxheW91dFRlbXBsYXRlIGZyb20gJy4uL3RlbXBsYXRlcy9lbWFpbC9sYXlvdXQnO1xuaW1wb3J0IGZvcmdvdEVtYWlsVGVtcGxhdGUgZnJvbSAnLi4vdGVtcGxhdGVzL2VtYWlsL3Bhc3N3b3JkRm9yZ290JztcbmltcG9ydCByZWNvdmVyeUVtYWlsVGVtcGxhdGUgZnJvbSAnLi4vdGVtcGxhdGVzL2VtYWlsL3Bhc3N3b3JkUmVjb3ZlcnknO1xuaW1wb3J0IHZlcmlmeUVtYWlsVGVtcGxhdGUgZnJvbSAnLi4vdGVtcGxhdGVzL2VtYWlsL3ZlcmlmeUVtYWlsJztcbmltcG9ydCB3ZWxjb21lRW1haWxUZW1wbGF0ZSBmcm9tICcuLi90ZW1wbGF0ZXMvZW1haWwvd2VsY29tZSc7XG5pbXBvcnQgZm9yZ290U21zVGVtcGxhdGUgZnJvbSAnLi4vdGVtcGxhdGVzL3Ntcy9wYXNzd29yZEZvcmdvdCc7XG5pbXBvcnQgcmVjb3ZlcnlTbXNUZW1wbGF0ZSBmcm9tICcuLi90ZW1wbGF0ZXMvc21zL3Bhc3N3b3JkUmVjb3ZlcnknO1xuaW1wb3J0IHZlcmlmeVNtc1RlbXBsYXRlIGZyb20gJy4uL3RlbXBsYXRlcy9zbXMvdmVyaWZ5RW1haWwnO1xuaW1wb3J0IHdlbGNvbWVTbXNUZW1wbGF0ZSBmcm9tICcuLi90ZW1wbGF0ZXMvc21zL3dlbGNvbWUnO1xuaW1wb3J0IHtFbWFpbFR5cGV9IGZyb20gJy4uL3R5cGVzL2VtYWlsJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2VtYWlsJztcblxuLy8gQVdTOjpTRVNcbmV4cG9ydCBjb25zdCBzZXNTZW5kID0gKHBhcmFtczogU2VuZEVtYWlsQ29tbWFuZElucHV0KTogUHJvbWlzZTxTZW5kRW1haWxDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2VzID0gbmV3IFNFUyh7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgc2VzLnNlbmRFbWFpbChwYXJhbXMsIChlcnJvcjogRXJyb3IsIHJlc3BvbnNlOiBTZW5kRW1haWxDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHNlbmRFbWFpbCA9IChwYXJhbXM6IEVtYWlsVHlwZSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIC8vIGh0bWwsXG4gICAgc3ViamVjdCxcbiAgICAvLyBzdWJUaXRsZSA9ICcnLFxuICAgIHRleHQsXG4gICAgLy8gdGl0bGUgPSAnJyxcbiAgICB1c2VyXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgdG8gPSBbdXNlci5lbWFpbF07XG4gIGxldCBwcm9taXNlO1xuICAvLyBjb25zdCB7X2tleTogaGFzQ3VzdG9tRW1haWwsIHVybEZhY2Vib29rLCB1cmxUd2l0dGVyfSA9IGFwcDtcbiAgY29uc3Qge19rZXk6IGhhc0N1c3RvbUVtYWlsfSA9IGFwcDtcbiAgY29uc3QgdmFyaWFibGVzID0gey4uLmFwcCwgLi4udXNlcn07XG5cbiAgY29uc3QgZm9ybWF0U3ViamVjdDogc3RyaW5nID0gcGFyc2VUZW1wbGF0ZShzdWJqZWN0LCB2YXJpYWJsZXMpO1xuICAvLyBjb25zdCBmb3JtYXRTdWJUaXRsZTogc3RyaW5nID0gcGFyc2VUZW1wbGF0ZShzdWJUaXRsZSwgdmFyaWFibGVzKTtcbiAgLy8gY29uc3QgZm9ybWF0VGl0bGU6IHN0cmluZyA9IHBhcnNlVGVtcGxhdGUodGl0bGUsIHZhcmlhYmxlcyk7XG4gIGNvbnN0IGZvcm1hdFRleHQ6IHN0cmluZyA9IHBhcnNlVGVtcGxhdGUodGV4dCwgdmFyaWFibGVzKTtcbiAgLy8gY29uc3QgZm9ybWF0SHRtbDogc3RyaW5nID0gcGFyc2VUZW1wbGF0ZShodG1sLCB2YXJpYWJsZXMpO1xuXG4gIC8vIGNvbnN0IHBhcnNlVGVtcGxhdGUyID0gKGJvZHk6IHN0cmluZykgPT4ge1xuICAvLyAgIGNvbnN0IHRlbXBsYXRlQm9keTogc3RyaW5nID0gcGFyc2VUZW1wbGF0ZShib2R5IHx8ICcnLCB2YXJpYWJsZXMpO1xuXG4gIC8vICAgLy8gTGlua3NcbiAgLy8gICBsZXQgbGlua3M6IHN0cmluZyA9ICcnO1xuICAvLyAgIGNvbnN0IHNwYWNlciA9ICc8dGQgd2lkdGg9XCI1XCI+PGltZyB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCIgYm9yZGVyPVwiMFwiIHRpdGxlPVwiXCIgYWx0PVwiXCIgJyArXG4gIC8vICAgICAnc3JjPVwiaHR0cHM6Ly9ib3gucmVha3Rvci5pby9pbWFnZXMvZW1haWwvc3BhY2VyLmdpZlwiLz48L3RkPic7XG5cbiAgLy8gICBpZih1cmxGYWNlYm9vaykge1xuICAvLyAgICAgbGlua3MgPSBgPHRkIHdpZHRoPVwiMzBcIj48YSBocmVmPVwiJHt1cmxGYWNlYm9va31cIj48aW1nIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIGJvcmRlcj1cIjBcIiBgICtcbiAgLy8gICAgICAgJ3RpdGxlPVwiRmFjZWJvb2tcIiBhbHQ9XCJGYWNlYm9va1wiIHNyYz1cImh0dHBzOi8vYm94LnJlYWt0b3IuaW8vaW1hZ2VzL2VtYWlsL2ljb24tZmFjZWJvb2sucG5nXCIvPjwvYT48L3RkPic7XG4gIC8vICAgfVxuXG4gIC8vICAgaWYodXJsVHdpdHRlcikge1xuICAvLyAgICAgaWYodXJsRmFjZWJvb2spIHtcbiAgLy8gICAgICAgbGlua3MgKz0gc3BhY2VyO1xuICAvLyAgICAgfVxuXG4gIC8vICAgICBsaW5rcyArPSBgPHRkIHdpZHRoPVwiMzBcIj48YSBocmVmPVwiJHt1cmxUd2l0dGVyfVwiPjxpbWcgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjMwXCIgYm9yZGVyPVwiMFwiIGAgK1xuICAvLyAgICAgICAndGl0bGU9XCJUd2l0dGVyXCIgYWx0PVwiVHdpdHRlclwiIHNyYz1cImh0dHBzOi8vYm94LnJlYWt0b3IuaW8vaW1hZ2VzL2VtYWlsL2ljb24tdHdpdHRlci5wbmdcIi8+PC9hPjwvdGQ+JztcbiAgLy8gICB9XG5cbiAgLy8gICBpZighbGlua3MubGVuZ3RoKSB7XG4gIC8vICAgICBsaW5rcyArPSBzcGFjZXI7XG4gIC8vICAgfVxuXG4gIC8vICAgcmV0dXJuIHRlbXBsYXRlQm9keS5yZXBsYWNlKC9cXFt0aXRsZVxcXS9nLCBmb3JtYXRUaXRsZSlcbiAgLy8gICAgIC5yZXBsYWNlKC9cXFtzdWJUaXRsZVxcXS9nLCBmb3JtYXRTdWJUaXRsZSlcbiAgLy8gICAgIC5yZXBsYWNlKC9cXFtzdWJqZWN0XFxdL2csIGZvcm1hdFN1YmplY3QpXG4gIC8vICAgICAucmVwbGFjZSgvXFxbbWVzc2FnZVxcXS9nLCBmb3JtYXRIdG1sKVxuICAvLyAgICAgLnJlcGxhY2UoL1xcW2xpbmtzXFxdL2csIGxpbmtzKTtcbiAgLy8gfTtcblxuICBpZihoYXNDdXN0b21FbWFpbCkge1xuICAgIGNvbnN0IHMzUGFyYW1zOiBHZXRPYmplY3RDb21tYW5kSW5wdXQgPSB7QnVja2V0OiBudWxsLCBLZXk6ICdhcHBzL3RlbXBsYXRlcy9lbWFpbC5odG1sJ307XG4gICAgcHJvbWlzZSA9IHMzR2V0KHMzUGFyYW1zKS50aGVuKChyZXN1bHRzKSA9PiBwYXJzZVRlbXBsYXRlKHJlc3VsdHMuQm9keS50b1N0cmluZygpLCB2YXJpYWJsZXMpKTtcbiAgfSBlbHNlIHtcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHBhcnNlVGVtcGxhdGUobGF5b3V0VGVtcGxhdGUsIHZhcmlhYmxlcykpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2UudGhlbigocGFyc2VkSHRtbDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZW1haWxQYXJhbXM6IFNlbmRFbWFpbENvbW1hbmRJbnB1dCA9IHtcbiAgICAgIERlc3RpbmF0aW9uOiB7VG9BZGRyZXNzZXM6IHRvfSxcbiAgICAgIE1lc3NhZ2U6IHtcbiAgICAgICAgQm9keToge1xuICAgICAgICAgIEh0bWw6IHtEYXRhOiBwYXJzZWRIdG1sfSxcbiAgICAgICAgICBUZXh0OiB7RGF0YTogZm9ybWF0VGV4dH1cbiAgICAgICAgfSxcbiAgICAgICAgU3ViamVjdDoge0RhdGE6IGZvcm1hdFN1YmplY3R9XG4gICAgICB9LFxuICAgICAgU291cmNlOiBgXCIke2FwcC5zdXBwb3J0TmFtZX1cIiA8bm9yZXBseUAke0NvbmZpZy5nZXQoJ2FwcC51cmwnKX0+YFxuICAgIH07XG5cbiAgICByZXR1cm4gc2VzU2VuZChlbWFpbFBhcmFtcyk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlbmRUZW1wbGF0ZSA9ICh0ZW1wbGF0ZU5hbWU6IHN0cmluZywgZW1haWxQYXJhbXM6IEVtYWlsVHlwZSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCB7YXBwLCB1c2VyLCBzdWJqZWN0LCBzdWJUaXRsZSwgdGl0bGV9OiBFbWFpbFR5cGUgPSBlbWFpbFBhcmFtcztcbiAgbGV0IGh0bWw6IHN0cmluZztcbiAgbGV0IHRleHQ6IHN0cmluZztcblxuICB0cnkge1xuICAgIHN3aXRjaCh0ZW1wbGF0ZU5hbWUpIHtcbiAgICAgIGNhc2UgJ3Bhc3N3b3JkRm9yZ290Jzoge1xuICAgICAgICBodG1sID0gZm9yZ290RW1haWxUZW1wbGF0ZTtcbiAgICAgICAgdGV4dCA9IGZvcmdvdFNtc1RlbXBsYXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3Bhc3N3b3JkUmVjb3ZlcnknOiB7XG4gICAgICAgIGh0bWwgPSByZWNvdmVyeUVtYWlsVGVtcGxhdGU7XG4gICAgICAgIHRleHQgPSByZWNvdmVyeVNtc1RlbXBsYXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ZlcmlmeVJlY292ZXJ5Jzoge1xuICAgICAgICBodG1sID0gdmVyaWZ5RW1haWxUZW1wbGF0ZTtcbiAgICAgICAgdGV4dCA9IHZlcmlmeVNtc1RlbXBsYXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ZlcmlmeUVtYWlsJzoge1xuICAgICAgICBodG1sID0gdmVyaWZ5RW1haWxUZW1wbGF0ZTtcbiAgICAgICAgdGV4dCA9IHZlcmlmeVNtc1RlbXBsYXRlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3dlbGNvbWUnOiB7XG4gICAgICAgIGh0bWwgPSB3ZWxjb21lRW1haWxUZW1wbGF0ZTtcbiAgICAgICAgdGV4dCA9IHdlbGNvbWVTbXNUZW1wbGF0ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdmFyaWFibGVzID0gey4uLmFwcCwgLi4udXNlcn07XG4gICAgY29uc3QgdGVtcGxhdGVIdG1sOiBzdHJpbmcgPSBwYXJzZVRlbXBsYXRlKGh0bWwsIHZhcmlhYmxlcyk7XG4gICAgY29uc3QgdGVtcGxhdGVUZXh0OiBzdHJpbmcgPSBwYXJzZVRlbXBsYXRlKHRleHQsIHZhcmlhYmxlcyk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhcHAsXG4gICAgICBodG1sOiB0ZW1wbGF0ZUh0bWwsXG4gICAgICBzdWJUaXRsZSxcbiAgICAgIHN1YmplY3QsXG4gICAgICB0ZXh0OiB0ZW1wbGF0ZVRleHQsXG4gICAgICB0aXRsZSxcbiAgICAgIHVzZXJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHNlbmRFbWFpbChwYXJhbXMgYXMgRW1haWxUeXBlKVxuICAgICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICB9XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQSx3QkFBaUU7QUFDakUsbUJBQTRCO0FBRTVCLGdCQUFvQjtBQUNwQixvQkFBcUI7QUFDckIsb0JBQTJCO0FBQzNCLDRCQUFnQztBQUNoQyw4QkFBa0M7QUFDbEMseUJBQWdDO0FBQ2hDLHFCQUFpQztBQUNqQyxJQUFBQSx5QkFBOEI7QUFDOUIsSUFBQUMsMkJBQWdDO0FBQ2hDLElBQUFDLHNCQUE4QjtBQUM5QixJQUFBQyxrQkFBK0I7QUFNeEIsTUFBTSxVQUFVLENBQUMsV0FDdEIsSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQy9CLFFBQU0sTUFBTSxJQUFJLHNCQUFJO0FBQUEsSUFDbEIsYUFBYSxxQkFBTyxJQUFJLGlCQUFpQjtBQUFBLElBQ3pDLFFBQVEscUJBQU8sSUFBSSxZQUFZO0FBQUEsRUFDakMsQ0FBQztBQUVELE1BQUksVUFBVSxRQUFRLENBQUMsT0FBYyxhQUFxQztBQUN4RSxRQUFHLE9BQU87QUFDUixhQUFPLE9BQU8sS0FBSztBQUFBLElBQ3JCO0FBRUEsV0FBTyxRQUFRLFFBQVE7QUFBQSxFQUN6QixDQUFDO0FBQ0gsQ0FBQztBQUVJLE1BQU0sWUFBWSxDQUFDLFdBQXdDO0FBQ2hFLFFBQU07QUFBQSxJQUNKO0FBQUE7QUFBQSxJQUVBO0FBQUE7QUFBQSxJQUVBO0FBQUE7QUFBQSxJQUVBO0FBQUEsRUFDRixJQUFJO0FBRUosUUFBTSxLQUFLLENBQUMsS0FBSyxLQUFLO0FBQ3RCLE1BQUk7QUFFSixRQUFNLEVBQUMsTUFBTSxlQUFjLElBQUk7QUFDL0IsUUFBTSxZQUFZLEVBQUMsR0FBRyxLQUFLLEdBQUcsS0FBSTtBQUVsQyxRQUFNLG9CQUF3Qiw0QkFBYyxTQUFTLFNBQVM7QUFHOUQsUUFBTSxpQkFBcUIsNEJBQWMsTUFBTSxTQUFTO0FBb0N4RCxNQUFHLGdCQUFnQjtBQUNqQixVQUFNLFdBQWtDLEVBQUMsUUFBUSxNQUFNLEtBQUssNEJBQTJCO0FBQ3ZGLGtCQUFVLGlCQUFNLFFBQVEsRUFBRSxLQUFLLENBQUMsZ0JBQVksNEJBQWMsUUFBUSxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFBQSxFQUMvRixPQUFPO0FBQ0wsY0FBVSxRQUFRLFlBQVEsNEJBQWMsY0FBQUMsU0FBZ0IsU0FBUyxDQUFDO0FBQUEsRUFDcEU7QUFFQSxTQUFPLFFBQVEsS0FBSyxDQUFDLGVBQXVCO0FBQzFDLFVBQU0sY0FBcUM7QUFBQSxNQUN6QyxhQUFhLEVBQUMsYUFBYSxHQUFFO0FBQUEsTUFDN0IsU0FBUztBQUFBLFFBQ1AsTUFBTTtBQUFBLFVBQ0osTUFBTSxFQUFDLE1BQU0sV0FBVTtBQUFBLFVBQ3ZCLE1BQU0sRUFBQyxNQUFNLFdBQVU7QUFBQSxRQUN6QjtBQUFBLFFBQ0EsU0FBUyxFQUFDLE1BQU0sY0FBYTtBQUFBLE1BQy9CO0FBQUEsTUFDQSxRQUFRLElBQUksSUFBSSxXQUFXLGNBQWMscUJBQU8sSUFBSSxTQUFTLENBQUM7QUFBQSxJQUNoRTtBQUVBLFdBQU8sUUFBUSxXQUFXO0FBQUEsRUFDNUIsQ0FBQztBQUNIO0FBRU8sTUFBTSxlQUFlLENBQUMsY0FBc0IsZ0JBQTZDO0FBQzlGLFFBQU0sRUFBQyxLQUFLLE1BQU0sU0FBUyxVQUFVLE1BQUssSUFBZTtBQUN6RCxNQUFJO0FBQ0osTUFBSTtBQUVKLE1BQUk7QUFDRixZQUFPLGNBQWM7QUFBQSxNQUNuQixLQUFLLGtCQUFrQjtBQUNyQixlQUFPLHNCQUFBQztBQUNQLGVBQU8sdUJBQUFDO0FBQ1A7QUFBQSxNQUNGO0FBQUEsTUFDQSxLQUFLLG9CQUFvQjtBQUN2QixlQUFPLHdCQUFBQztBQUNQLGVBQU8seUJBQUFDO0FBQ1A7QUFBQSxNQUNGO0FBQUEsTUFDQSxLQUFLLGtCQUFrQjtBQUNyQixlQUFPLG1CQUFBQztBQUNQLGVBQU8sb0JBQUFDO0FBQ1A7QUFBQSxNQUNGO0FBQUEsTUFDQSxLQUFLLGVBQWU7QUFDbEIsZUFBTyxtQkFBQUQ7QUFDUCxlQUFPLG9CQUFBQztBQUNQO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSyxXQUFXO0FBQ2QsZUFBTyxlQUFBQztBQUNQLGVBQU8sZ0JBQUFDO0FBQ1A7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLFVBQU0sWUFBWSxFQUFDLEdBQUcsS0FBSyxHQUFHLEtBQUk7QUFDbEMsVUFBTSxtQkFBdUIsNEJBQWMsTUFBTSxTQUFTO0FBQzFELFVBQU0sbUJBQXVCLDRCQUFjLE1BQU0sU0FBUztBQUUxRCxVQUFNLFNBQVM7QUFBQSxNQUNiO0FBQUEsTUFDQSxNQUFNO0FBQUEsTUFDTjtBQUFBLE1BQ0E7QUFBQSxNQUNBLE1BQU07QUFBQSxNQUNOO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFFQSxXQUFPLFVBQVUsTUFBbUIsRUFDakMsS0FBSyxNQUFNLElBQUksRUFDZixNQUFNLE1BQU0sS0FBSztBQUFBLEVBQ3RCLFNBQVEsT0FBTztBQUNiLFdBQU8sUUFBUSxPQUFPLEtBQUs7QUFBQSxFQUM3QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfcGFzc3dvcmRGb3Jnb3QiLCAiaW1wb3J0X3Bhc3N3b3JkUmVjb3ZlcnkiLCAiaW1wb3J0X3ZlcmlmeUVtYWlsIiwgImltcG9ydF93ZWxjb21lIiwgImxheW91dFRlbXBsYXRlIiwgImZvcmdvdEVtYWlsVGVtcGxhdGUiLCAiZm9yZ290U21zVGVtcGxhdGUiLCAicmVjb3ZlcnlFbWFpbFRlbXBsYXRlIiwgInJlY292ZXJ5U21zVGVtcGxhdGUiLCAidmVyaWZ5RW1haWxUZW1wbGF0ZSIsICJ2ZXJpZnlTbXNUZW1wbGF0ZSIsICJ3ZWxjb21lRW1haWxUZW1wbGF0ZSIsICJ3ZWxjb21lU21zVGVtcGxhdGUiXQp9Cg==
@@ -0,0 +1,19 @@
1
+ import { ApiContext } from '../types/auth';
2
+ import { FileType } from '../types/files';
3
+ import { ImageType } from '../types';
4
+ export declare const GIPHY_URL: string;
5
+ export declare const getYouTube: () => import("googleapis").youtube_v3.Youtube;
6
+ export declare const insertFile: (context: ApiContext, file: FileType) => Promise<any>;
7
+ export declare const upsertFile: (context: ApiContext, file: FileType) => Promise<FileType>;
8
+ export declare const uploadFile: (context: any, file: FileType, buffer: Buffer) => Promise<any>;
9
+ export declare const addFile: (context: ApiContext, file: FileType) => Promise<FileType>;
10
+ export declare const parseGiphyItem: (gifImage: any) => ImageType;
11
+ export declare const getGiphyTrends: (limit?: number) => Promise<ImageType[]>;
12
+ export declare const getGiphySearch: (query: string, limit?: number) => Promise<ImageType[]>;
13
+ export declare const getYouTubeTrends: (limit?: number) => Promise<any[]>;
14
+ export declare const getYouTubeSearch: (query: string, limit?: number) => Promise<any[]>;
15
+ export declare const getPathUserFiles: (userId: string, filename: string) => string;
16
+ export declare const linkFiles: (context: ApiContext, postDocId: string, files: FileType[]) => Promise<any>;
17
+ export declare const updateFiles: (context: ApiContext, postDocId: string, files: FileType[]) => Promise<any>;
18
+ export declare const encodeBase64: (buffer: Buffer) => string;
19
+ export declare const decodeBase64: (dataString: string) => any;