@nlabs/reaktor 0.10.5 → 0.10.6

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 (469) hide show
  1. package/lib/actions/apps.d.ts +1 -0
  2. package/lib/actions/apps.d.ts.map +1 -0
  3. package/lib/actions/apps.js +221 -0
  4. package/lib/actions/connections.d.ts +1 -0
  5. package/lib/actions/connections.d.ts.map +1 -0
  6. package/lib/actions/connections.js +62 -0
  7. package/lib/actions/content.d.ts +1 -0
  8. package/lib/actions/content.d.ts.map +1 -0
  9. package/lib/actions/content.js +240 -0
  10. package/lib/actions/conversations.d.ts +1 -0
  11. package/lib/actions/conversations.d.ts.map +1 -0
  12. package/lib/actions/conversations.js +335 -0
  13. package/lib/actions/dynamodb.d.ts +1 -0
  14. package/lib/actions/dynamodb.d.ts.map +1 -0
  15. package/lib/actions/dynamodb.js +119 -0
  16. package/lib/actions/email.d.ts +1 -0
  17. package/lib/actions/email.d.ts.map +1 -0
  18. package/lib/actions/email.js +56 -0
  19. package/lib/actions/files.d.ts +1 -0
  20. package/lib/actions/files.d.ts.map +1 -0
  21. package/lib/actions/files.js +226 -0
  22. package/lib/actions/groups.d.ts +1 -0
  23. package/lib/actions/groups.d.ts.map +1 -0
  24. package/lib/actions/groups.js +267 -0
  25. package/lib/actions/images.d.ts +1 -0
  26. package/lib/actions/images.d.ts.map +1 -0
  27. package/lib/actions/images.js +723 -0
  28. package/lib/actions/index.d.ts +1 -0
  29. package/lib/actions/index.d.ts.map +1 -0
  30. package/lib/actions/index.js +29 -0
  31. package/lib/actions/ios.d.ts +1 -0
  32. package/lib/actions/ios.d.ts.map +1 -0
  33. package/lib/actions/ios.js +230 -0
  34. package/lib/actions/locations.d.ts +1 -0
  35. package/lib/actions/locations.d.ts.map +1 -0
  36. package/lib/actions/locations.js +111 -0
  37. package/lib/actions/messages.d.ts +1 -0
  38. package/lib/actions/messages.d.ts.map +1 -0
  39. package/lib/actions/messages.js +167 -0
  40. package/lib/actions/notifications.d.ts +3 -2
  41. package/lib/actions/notifications.d.ts.map +1 -0
  42. package/lib/actions/notifications.js +37 -0
  43. package/lib/actions/payments.d.ts +1 -0
  44. package/lib/actions/payments.d.ts.map +1 -0
  45. package/lib/actions/payments.js +449 -0
  46. package/lib/actions/posts.d.ts +1 -0
  47. package/lib/actions/posts.d.ts.map +1 -0
  48. package/lib/actions/posts.js +608 -0
  49. package/lib/actions/profiles.d.ts +1 -0
  50. package/lib/actions/profiles.d.ts.map +1 -0
  51. package/lib/actions/profiles.js +58 -0
  52. package/lib/actions/reactions.d.ts +1 -0
  53. package/lib/actions/reactions.d.ts.map +1 -0
  54. package/lib/actions/reactions.js +286 -0
  55. package/lib/actions/s3.d.ts +1 -0
  56. package/lib/actions/s3.d.ts.map +1 -0
  57. package/lib/actions/s3.js +102 -0
  58. package/lib/actions/search.d.ts +1 -0
  59. package/lib/actions/search.d.ts.map +1 -0
  60. package/lib/actions/search.js +81 -0
  61. package/lib/actions/sms.d.ts +1 -0
  62. package/lib/actions/sms.d.ts.map +1 -0
  63. package/lib/actions/sms.js +52 -0
  64. package/lib/actions/statistics.d.ts +1 -0
  65. package/lib/actions/statistics.d.ts.map +1 -0
  66. package/lib/actions/statistics.js +43 -0
  67. package/lib/actions/subscriptions.d.ts +1 -0
  68. package/lib/actions/subscriptions.d.ts.map +1 -0
  69. package/lib/actions/subscriptions.js +202 -0
  70. package/lib/actions/tags.d.ts +1 -0
  71. package/lib/actions/tags.d.ts.map +1 -0
  72. package/lib/actions/tags.js +263 -0
  73. package/lib/actions/users.d.ts +1 -0
  74. package/lib/actions/users.d.ts.map +1 -0
  75. package/lib/actions/users.js +802 -0
  76. package/lib/actions/videos.d.ts +1 -0
  77. package/lib/actions/videos.d.ts.map +1 -0
  78. package/lib/actions/videos.js +423 -0
  79. package/lib/actions/websockets.d.ts +1 -0
  80. package/lib/actions/websockets.d.ts.map +1 -0
  81. package/lib/actions/websockets.js +164 -0
  82. package/lib/adapters/arangoAdapter.d.ts +1 -0
  83. package/lib/adapters/arangoAdapter.d.ts.map +1 -0
  84. package/lib/adapters/arangoAdapter.js +70 -0
  85. package/lib/adapters/contentAdapter.d.ts +1 -0
  86. package/lib/adapters/contentAdapter.d.ts.map +1 -0
  87. package/lib/adapters/contentAdapter.js +108 -0
  88. package/lib/adapters/fileAdapter.d.ts +1 -0
  89. package/lib/adapters/fileAdapter.d.ts.map +1 -0
  90. package/lib/adapters/fileAdapter.js +119 -0
  91. package/lib/adapters/imageAdapter.d.ts +1 -0
  92. package/lib/adapters/imageAdapter.d.ts.map +1 -0
  93. package/lib/adapters/imageAdapter.js +112 -0
  94. package/lib/adapters/index.d.ts +1 -0
  95. package/lib/adapters/index.d.ts.map +1 -0
  96. package/lib/adapters/index.js +11 -0
  97. package/lib/adapters/messageAdapter.d.ts +1 -0
  98. package/lib/adapters/messageAdapter.d.ts.map +1 -0
  99. package/lib/adapters/messageAdapter.js +82 -0
  100. package/lib/adapters/postAdapter.d.ts +1 -0
  101. package/lib/adapters/postAdapter.d.ts.map +1 -0
  102. package/lib/adapters/postAdapter.js +117 -0
  103. package/lib/adapters/reaktorAdapter.d.ts +1 -0
  104. package/lib/adapters/reaktorAdapter.d.ts.map +1 -0
  105. package/lib/adapters/reaktorAdapter.js +59 -0
  106. package/lib/adapters/tagAdapter.d.ts +1 -0
  107. package/lib/adapters/tagAdapter.d.ts.map +1 -0
  108. package/lib/adapters/tagAdapter.js +99 -0
  109. package/lib/adapters/userAdapter.d.ts +1 -0
  110. package/lib/adapters/userAdapter.d.ts.map +1 -0
  111. package/lib/adapters/userAdapter.js +264 -0
  112. package/lib/config.d.ts +1 -0
  113. package/lib/config.d.ts.map +1 -0
  114. package/lib/config.js +161 -0
  115. package/lib/handlers/graphqlHandler.d.ts +1 -0
  116. package/lib/handlers/graphqlHandler.d.ts.map +1 -0
  117. package/lib/handlers/graphqlHandler.js +118 -0
  118. package/lib/index.d.ts +1 -0
  119. package/lib/index.d.ts.map +1 -0
  120. package/lib/index.js +18 -0
  121. package/lib/lambdas/actions/websockets.d.ts +1 -0
  122. package/lib/lambdas/actions/websockets.d.ts.map +1 -0
  123. package/lib/lambdas/actions/websockets.js +105 -0
  124. package/lib/lambdas/authorizer.d.ts +1 -0
  125. package/lib/lambdas/authorizer.d.ts.map +1 -0
  126. package/lib/lambdas/authorizer.js +41 -0
  127. package/lib/lambdas/connection.d.ts +1 -0
  128. package/lib/lambdas/connection.d.ts.map +1 -0
  129. package/lib/lambdas/connection.js +85 -0
  130. package/lib/lambdas/utils/message.d.ts +1 -0
  131. package/lib/lambdas/utils/message.d.ts.map +1 -0
  132. package/lib/lambdas/utils/message.js +20 -0
  133. package/lib/lambdas/utils/websocket.d.ts +1 -0
  134. package/lib/lambdas/utils/websocket.d.ts.map +1 -0
  135. package/lib/lambdas/utils/websocket.js +78 -0
  136. package/lib/mocks/conversation.d.ts +1 -0
  137. package/lib/mocks/conversation.d.ts.map +1 -0
  138. package/lib/mocks/conversation.js +10 -0
  139. package/lib/mocks/file.d.ts +1 -0
  140. package/lib/mocks/file.d.ts.map +1 -0
  141. package/lib/mocks/file.js +13 -0
  142. package/lib/mocks/group.d.ts +1 -0
  143. package/lib/mocks/group.d.ts.map +1 -0
  144. package/lib/mocks/group.js +20 -0
  145. package/lib/mocks/image.d.ts +1 -0
  146. package/lib/mocks/image.d.ts.map +1 -0
  147. package/lib/mocks/image.js +17 -0
  148. package/lib/mocks/post.d.ts +1 -0
  149. package/lib/mocks/post.d.ts.map +1 -0
  150. package/lib/mocks/post.js +28 -0
  151. package/lib/mocks/tag.d.ts +1 -0
  152. package/lib/mocks/tag.d.ts.map +1 -0
  153. package/lib/mocks/tag.js +12 -0
  154. package/lib/mocks/user.d.ts +1 -0
  155. package/lib/mocks/user.d.ts.map +1 -0
  156. package/lib/mocks/user.js +61 -0
  157. package/lib/mocks/video.d.ts +1 -0
  158. package/lib/mocks/video.d.ts.map +1 -0
  159. package/lib/mocks/video.js +17 -0
  160. package/lib/mutations/content.d.ts +1 -0
  161. package/lib/mutations/content.d.ts.map +1 -0
  162. package/lib/mutations/content.js +27 -0
  163. package/lib/mutations/index.d.ts +1 -0
  164. package/lib/mutations/index.d.ts.map +1 -0
  165. package/lib/mutations/index.js +29 -0
  166. package/lib/mutations/locations.d.ts +1 -0
  167. package/lib/mutations/locations.d.ts.map +1 -0
  168. package/lib/mutations/locations.js +22 -0
  169. package/lib/mutations/messages.d.ts +1 -0
  170. package/lib/mutations/messages.d.ts.map +1 -0
  171. package/lib/mutations/messages.js +75 -0
  172. package/lib/mutations/posts.d.ts +1 -0
  173. package/lib/mutations/posts.d.ts.map +1 -0
  174. package/lib/mutations/posts.js +31 -0
  175. package/lib/mutations/profiles.d.ts +1 -0
  176. package/lib/mutations/profiles.d.ts.map +1 -0
  177. package/lib/mutations/profiles.js +78 -0
  178. package/lib/mutations/reactions.d.ts +1 -0
  179. package/lib/mutations/reactions.d.ts.map +1 -0
  180. package/lib/mutations/reactions.js +29 -0
  181. package/lib/mutations/statistics.d.ts +1 -0
  182. package/lib/mutations/statistics.d.ts.map +1 -0
  183. package/lib/mutations/statistics.js +17 -0
  184. package/lib/mutations/subscriptions.d.ts +1 -0
  185. package/lib/mutations/subscriptions.d.ts.map +1 -0
  186. package/lib/mutations/subscriptions.js +38 -0
  187. package/lib/mutations/tags.d.ts +1 -0
  188. package/lib/mutations/tags.d.ts.map +1 -0
  189. package/lib/mutations/tags.js +109 -0
  190. package/lib/mutations/users.d.ts +1 -0
  191. package/lib/mutations/users.d.ts.map +1 -0
  192. package/lib/mutations/users.js +129 -0
  193. package/lib/objectTypes/app.d.ts +1 -0
  194. package/lib/objectTypes/app.d.ts.map +1 -0
  195. package/lib/objectTypes/app.js +147 -0
  196. package/lib/objectTypes/bankAccount.d.ts +1 -0
  197. package/lib/objectTypes/bankAccount.d.ts.map +1 -0
  198. package/lib/objectTypes/bankAccount.js +54 -0
  199. package/lib/objectTypes/connection.d.ts +1 -0
  200. package/lib/objectTypes/connection.d.ts.map +1 -0
  201. package/lib/objectTypes/connection.js +26 -0
  202. package/lib/objectTypes/content.d.ts +1 -0
  203. package/lib/objectTypes/content.d.ts.map +1 -0
  204. package/lib/objectTypes/content.js +79 -0
  205. package/lib/objectTypes/conversation.d.ts +1 -0
  206. package/lib/objectTypes/conversation.d.ts.map +1 -0
  207. package/lib/objectTypes/conversation.js +53 -0
  208. package/lib/objectTypes/creditCard.d.ts +1 -0
  209. package/lib/objectTypes/creditCard.d.ts.map +1 -0
  210. package/lib/objectTypes/creditCard.js +64 -0
  211. package/lib/objectTypes/document.d.ts +1 -0
  212. package/lib/objectTypes/document.d.ts.map +1 -0
  213. package/lib/objectTypes/document.js +21 -0
  214. package/lib/objectTypes/error.d.ts +1 -0
  215. package/lib/objectTypes/error.d.ts.map +1 -0
  216. package/lib/objectTypes/error.js +24 -0
  217. package/lib/objectTypes/external.d.ts +1 -0
  218. package/lib/objectTypes/external.d.ts.map +1 -0
  219. package/lib/objectTypes/external.js +52 -0
  220. package/lib/objectTypes/file.d.ts +1 -0
  221. package/lib/objectTypes/file.d.ts.map +1 -0
  222. package/lib/objectTypes/file.js +76 -0
  223. package/lib/objectTypes/filter.d.ts +1 -0
  224. package/lib/objectTypes/filter.d.ts.map +1 -0
  225. package/lib/objectTypes/filter.js +21 -0
  226. package/lib/objectTypes/group.d.ts +1 -0
  227. package/lib/objectTypes/group.d.ts.map +1 -0
  228. package/lib/objectTypes/group.js +97 -0
  229. package/lib/objectTypes/iapSubscription.d.ts +1 -0
  230. package/lib/objectTypes/iapSubscription.d.ts.map +1 -0
  231. package/lib/objectTypes/iapSubscription.js +18 -0
  232. package/lib/objectTypes/image.d.ts +1 -0
  233. package/lib/objectTypes/image.d.ts.map +1 -0
  234. package/lib/objectTypes/image.js +105 -0
  235. package/lib/objectTypes/index.d.ts +1 -0
  236. package/lib/objectTypes/index.d.ts.map +1 -0
  237. package/lib/objectTypes/index.js +28 -0
  238. package/lib/objectTypes/location.d.ts +1 -0
  239. package/lib/objectTypes/location.d.ts.map +1 -0
  240. package/lib/objectTypes/location.js +85 -0
  241. package/lib/objectTypes/message.d.ts +1 -0
  242. package/lib/objectTypes/message.d.ts.map +1 -0
  243. package/lib/objectTypes/message.js +72 -0
  244. package/lib/objectTypes/passcode.d.ts +1 -0
  245. package/lib/objectTypes/passcode.d.ts.map +1 -0
  246. package/lib/objectTypes/passcode.js +20 -0
  247. package/lib/objectTypes/plan.d.ts +1 -0
  248. package/lib/objectTypes/plan.d.ts.map +1 -0
  249. package/lib/objectTypes/plan.js +71 -0
  250. package/lib/objectTypes/post.d.ts +1 -0
  251. package/lib/objectTypes/post.d.ts.map +1 -0
  252. package/lib/objectTypes/post.js +101 -0
  253. package/lib/objectTypes/profile.d.ts +1 -0
  254. package/lib/objectTypes/profile.d.ts.map +1 -0
  255. package/lib/objectTypes/profile.js +68 -0
  256. package/lib/objectTypes/reaction.d.ts +1 -0
  257. package/lib/objectTypes/reaction.d.ts.map +1 -0
  258. package/lib/objectTypes/reaction.js +37 -0
  259. package/lib/objectTypes/relation.d.ts +1 -0
  260. package/lib/objectTypes/relation.d.ts.map +1 -0
  261. package/lib/objectTypes/relation.js +27 -0
  262. package/lib/objectTypes/search.d.ts +1 -0
  263. package/lib/objectTypes/search.d.ts.map +1 -0
  264. package/lib/objectTypes/search.js +50 -0
  265. package/lib/objectTypes/statistics.d.ts +1 -0
  266. package/lib/objectTypes/statistics.d.ts.map +1 -0
  267. package/lib/objectTypes/statistics.js +17 -0
  268. package/lib/objectTypes/subscription.d.ts +1 -0
  269. package/lib/objectTypes/subscription.d.ts.map +1 -0
  270. package/lib/objectTypes/subscription.js +102 -0
  271. package/lib/objectTypes/tag.d.ts +1 -0
  272. package/lib/objectTypes/tag.d.ts.map +1 -0
  273. package/lib/objectTypes/tag.js +41 -0
  274. package/lib/objectTypes/user.d.ts +1 -0
  275. package/lib/objectTypes/user.d.ts.map +1 -0
  276. package/lib/objectTypes/user.js +111 -0
  277. package/lib/queries/content.d.ts +1 -0
  278. package/lib/queries/content.d.ts.map +1 -0
  279. package/lib/queries/content.js +50 -0
  280. package/lib/queries/index.d.ts +1 -0
  281. package/lib/queries/index.d.ts.map +1 -0
  282. package/lib/queries/index.js +27 -0
  283. package/lib/queries/locations.d.ts +1 -0
  284. package/lib/queries/locations.d.ts.map +1 -0
  285. package/lib/queries/locations.js +23 -0
  286. package/lib/queries/messages.d.ts +1 -0
  287. package/lib/queries/messages.d.ts.map +1 -0
  288. package/lib/queries/messages.js +35 -0
  289. package/lib/queries/posts.d.ts +1 -0
  290. package/lib/queries/posts.d.ts.map +1 -0
  291. package/lib/queries/posts.js +154 -0
  292. package/lib/queries/reactions.d.ts +1 -0
  293. package/lib/queries/reactions.d.ts.map +1 -0
  294. package/lib/queries/reactions.js +34 -0
  295. package/lib/queries/statistics.d.ts +1 -0
  296. package/lib/queries/statistics.d.ts.map +1 -0
  297. package/lib/queries/statistics.js +17 -0
  298. package/lib/queries/subscriptions.d.ts +1 -0
  299. package/lib/queries/subscriptions.d.ts.map +1 -0
  300. package/lib/queries/subscriptions.js +21 -0
  301. package/lib/queries/tags.d.ts +1 -0
  302. package/lib/queries/tags.d.ts.map +1 -0
  303. package/lib/queries/tags.js +56 -0
  304. package/lib/queries/users.d.ts +1 -0
  305. package/lib/queries/users.d.ts.map +1 -0
  306. package/lib/queries/users.js +39 -0
  307. package/lib/templates/email/layout.d.ts +1 -0
  308. package/lib/templates/email/layout.d.ts.map +1 -0
  309. package/lib/templates/email/layout.js +281 -0
  310. package/lib/templates/email/passwordForgot.d.ts +1 -0
  311. package/lib/templates/email/passwordForgot.d.ts.map +1 -0
  312. package/lib/templates/email/passwordForgot.js +17 -0
  313. package/lib/templates/email/passwordRecovery.d.ts +1 -0
  314. package/lib/templates/email/passwordRecovery.d.ts.map +1 -0
  315. package/lib/templates/email/passwordRecovery.js +14 -0
  316. package/lib/templates/email/verifyEmail.d.ts +1 -0
  317. package/lib/templates/email/verifyEmail.d.ts.map +1 -0
  318. package/lib/templates/email/verifyEmail.js +17 -0
  319. package/lib/templates/email/welcome.d.ts +1 -0
  320. package/lib/templates/email/welcome.d.ts.map +1 -0
  321. package/lib/templates/email/welcome.js +17 -0
  322. package/lib/templates/sms/passwordForgot.d.ts +1 -0
  323. package/lib/templates/sms/passwordForgot.d.ts.map +1 -0
  324. package/lib/templates/sms/passwordForgot.js +3 -0
  325. package/lib/templates/sms/passwordRecovery.d.ts +1 -0
  326. package/lib/templates/sms/passwordRecovery.d.ts.map +1 -0
  327. package/lib/templates/sms/passwordRecovery.js +3 -0
  328. package/lib/templates/sms/verifyEmail.d.ts +1 -0
  329. package/lib/templates/sms/verifyEmail.d.ts.map +1 -0
  330. package/lib/templates/sms/verifyEmail.js +3 -0
  331. package/lib/templates/sms/verifyPhone.d.ts +1 -0
  332. package/lib/templates/sms/verifyPhone.d.ts.map +1 -0
  333. package/lib/templates/sms/verifyPhone.js +3 -0
  334. package/lib/templates/sms/welcome.d.ts +1 -0
  335. package/lib/templates/sms/welcome.d.ts.map +1 -0
  336. package/lib/templates/sms/welcome.js +3 -0
  337. package/lib/types/apps.types.d.ts +1 -0
  338. package/lib/types/apps.types.d.ts.map +1 -0
  339. package/lib/types/apps.types.js +10 -0
  340. package/lib/types/arangodb.types.d.ts +1 -0
  341. package/lib/types/arangodb.types.d.ts.map +1 -0
  342. package/lib/types/arangodb.types.js +6 -0
  343. package/lib/types/auth.types.d.ts +1 -0
  344. package/lib/types/auth.types.d.ts.map +1 -0
  345. package/lib/types/auth.types.js +6 -0
  346. package/lib/types/connections.types.d.ts +1 -0
  347. package/lib/types/connections.types.d.ts.map +1 -0
  348. package/lib/types/connections.types.js +6 -0
  349. package/lib/types/content.types.d.ts +1 -0
  350. package/lib/types/content.types.d.ts.map +1 -0
  351. package/lib/types/content.types.js +6 -0
  352. package/lib/types/conversations.types.d.ts +1 -0
  353. package/lib/types/conversations.types.d.ts.map +1 -0
  354. package/lib/types/conversations.types.js +6 -0
  355. package/lib/types/email.types.d.ts +1 -0
  356. package/lib/types/email.types.d.ts.map +1 -0
  357. package/lib/types/email.types.js +6 -0
  358. package/lib/types/error.types.d.ts +1 -0
  359. package/lib/types/error.types.d.ts.map +1 -0
  360. package/lib/types/error.types.js +20 -0
  361. package/lib/types/files.types.d.ts +1 -0
  362. package/lib/types/files.types.d.ts.map +1 -0
  363. package/lib/types/files.types.js +6 -0
  364. package/lib/types/google.types.d.ts +1 -0
  365. package/lib/types/google.types.d.ts.map +1 -0
  366. package/lib/types/google.types.js +6 -0
  367. package/lib/types/groups.types.d.ts +1 -0
  368. package/lib/types/groups.types.d.ts.map +1 -0
  369. package/lib/types/groups.types.js +6 -0
  370. package/lib/types/images.types.d.ts +1 -0
  371. package/lib/types/images.types.d.ts.map +1 -0
  372. package/lib/types/images.types.js +6 -0
  373. package/lib/types/index.d.ts +1 -0
  374. package/lib/types/index.d.ts.map +1 -0
  375. package/lib/types/index.js +28 -0
  376. package/lib/types/locations.types.d.ts +1 -0
  377. package/lib/types/locations.types.d.ts.map +1 -0
  378. package/lib/types/locations.types.js +6 -0
  379. package/lib/types/messages.types.d.ts +1 -0
  380. package/lib/types/messages.types.d.ts.map +1 -0
  381. package/lib/types/messages.types.js +6 -0
  382. package/lib/types/notifications.types.d.ts +1 -0
  383. package/lib/types/notifications.types.d.ts.map +1 -0
  384. package/lib/types/notifications.types.js +6 -0
  385. package/lib/types/payments.types.d.ts +1 -0
  386. package/lib/types/payments.types.d.ts.map +1 -0
  387. package/lib/types/payments.types.js +6 -0
  388. package/lib/types/posts.types.d.ts +1 -0
  389. package/lib/types/posts.types.d.ts.map +1 -0
  390. package/lib/types/posts.types.js +6 -0
  391. package/lib/types/profiles.types.d.ts +1 -0
  392. package/lib/types/profiles.types.d.ts.map +1 -0
  393. package/lib/types/profiles.types.js +3 -0
  394. package/lib/types/statistics.types.d.ts +1 -0
  395. package/lib/types/statistics.types.d.ts.map +1 -0
  396. package/lib/types/statistics.types.js +3 -0
  397. package/lib/types/tags.types.d.ts +1 -0
  398. package/lib/types/tags.types.d.ts.map +1 -0
  399. package/lib/types/tags.types.js +6 -0
  400. package/lib/types/users.types.d.ts +1 -0
  401. package/lib/types/users.types.d.ts.map +1 -0
  402. package/lib/types/users.types.js +6 -0
  403. package/lib/types/videos.types.d.ts +1 -0
  404. package/lib/types/videos.types.d.ts.map +1 -0
  405. package/lib/types/videos.types.js +6 -0
  406. package/lib/types/websockets.types.d.ts +1 -0
  407. package/lib/types/websockets.types.d.ts.map +1 -0
  408. package/lib/types/websockets.types.js +6 -0
  409. package/lib/utils/adapterUtils.d.ts +1 -0
  410. package/lib/utils/adapterUtils.d.ts.map +1 -0
  411. package/lib/utils/adapterUtils.js +23 -0
  412. package/lib/utils/analyticsUtils.d.ts +1 -0
  413. package/lib/utils/analyticsUtils.d.ts.map +1 -0
  414. package/lib/utils/analyticsUtils.js +45 -0
  415. package/lib/utils/arangodbUtils.d.ts +1 -0
  416. package/lib/utils/arangodbUtils.d.ts.map +1 -0
  417. package/lib/utils/arangodbUtils.js +130 -0
  418. package/lib/utils/authUtils.d.ts +1 -0
  419. package/lib/utils/authUtils.d.ts.map +1 -0
  420. package/lib/utils/authUtils.js +54 -0
  421. package/lib/utils/contextUtils.d.ts +1 -0
  422. package/lib/utils/contextUtils.d.ts.map +1 -0
  423. package/lib/utils/contextUtils.js +10 -0
  424. package/lib/utils/dbI18n.d.ts +1 -0
  425. package/lib/utils/dbI18n.d.ts.map +1 -0
  426. package/lib/utils/dbI18n.example.d.ts +1 -0
  427. package/lib/utils/dbI18n.example.d.ts.map +1 -0
  428. package/lib/utils/dbI18n.example.js +93 -0
  429. package/lib/utils/dbI18n.js +28 -0
  430. package/lib/utils/googleTranslate.d.ts +1 -0
  431. package/lib/utils/googleTranslate.d.ts.map +1 -0
  432. package/lib/utils/googleTranslate.js +70 -0
  433. package/lib/utils/graphqlUtils.d.ts +1 -0
  434. package/lib/utils/graphqlUtils.d.ts.map +1 -0
  435. package/lib/utils/graphqlUtils.js +11 -0
  436. package/lib/utils/index.d.ts +1 -0
  437. package/lib/utils/index.d.ts.map +1 -0
  438. package/lib/utils/index.js +19 -0
  439. package/lib/utils/languageDetection.d.ts +1 -0
  440. package/lib/utils/languageDetection.d.ts.map +1 -0
  441. package/lib/utils/languageDetection.js +120 -0
  442. package/lib/utils/localeUtils.d.ts +1 -0
  443. package/lib/utils/localeUtils.d.ts.map +1 -0
  444. package/lib/utils/localeUtils.example.d.ts +1 -0
  445. package/lib/utils/localeUtils.example.d.ts.map +1 -0
  446. package/lib/utils/localeUtils.example.js +124 -0
  447. package/lib/utils/localeUtils.js +71 -0
  448. package/lib/utils/middlewareUtils.d.ts +1 -0
  449. package/lib/utils/middlewareUtils.d.ts.map +1 -0
  450. package/lib/utils/middlewareUtils.js +10 -0
  451. package/lib/utils/sessionUtils.d.ts +1 -0
  452. package/lib/utils/sessionUtils.d.ts.map +1 -0
  453. package/lib/utils/sessionUtils.js +26 -0
  454. package/lib/utils/stripeUtils.d.ts +2 -1
  455. package/lib/utils/stripeUtils.d.ts.map +1 -0
  456. package/lib/utils/stripeUtils.js +12 -0
  457. package/lib/utils/templateUtils.d.ts +1 -0
  458. package/lib/utils/templateUtils.d.ts.map +1 -0
  459. package/lib/utils/templateUtils.js +11 -0
  460. package/lib/utils/testUtils.d.ts +1 -0
  461. package/lib/utils/testUtils.d.ts.map +1 -0
  462. package/lib/utils/testUtils.js +292 -0
  463. package/lib/utils/translationQueue.d.ts +1 -0
  464. package/lib/utils/translationQueue.d.ts.map +1 -0
  465. package/lib/utils/translationQueue.example.d.ts +1 -0
  466. package/lib/utils/translationQueue.example.d.ts.map +1 -0
  467. package/lib/utils/translationQueue.example.js +340 -0
  468. package/lib/utils/translationQueue.js +113 -0
  469. package/package.json +43 -24
@@ -14,3 +14,4 @@ export declare const getConversation: (context: ApiContext, conversationId: stri
14
14
  export declare const updateConversation: (context: ApiContext, conversation: ConversationType) => Promise<ConversationType>;
15
15
  export declare const addUserToConversation: (context: ApiContext, { conversationId, userId }: UpdateConversationUserParams) => Promise<ConversationType>;
16
16
  export declare const deleteUserFromConversation: (context: ApiContext, { conversationId, userId }: UpdateConversationUserParams) => Promise<ConversationType>;
17
+ //# sourceMappingURL=conversations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/actions/conversations.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAC,aAAa,EAAW,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AAMzC,eAAO,MAAM,wBAAwB,GAAI,UAAS,mBAAwB;WAOzC,aAAa;CAE7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,UAAU,EAAE,QAAQ,MAAM,EAAE,aAAQ,KAAG,OAAO,CAAC,gBAAgB,EAAE,CAwB1G,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,UAAU,EACnB,0BAIG,wBAAwB,KAC1B,OAAO,CAAC,gBAAgB,CAgC1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,UAAU,EACnB,0BAIG,wBAAwB,KAC1B,OAAO,CAAC,gBAAgB,CA2C1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,UAAU,EACnB,0CAIG,uBAAuB,KACzB,OAAO,CAAC,cAAc,EAAE,CA4B1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,UAAU,EACnB,0CAIG,uBAAuB,KACzB,OAAO,CAAC,gBAAgB,EAAE,CA2B5B,CAAC;AAoCF,eAAO,MAAM,eAAe,GAAI,SAAS,UAAU,EAAE,gBAAgB,MAAM,KAAG,OAAO,CAAC,gBAAgB,CA8CrG,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,UAAU,EACnB,cAAc,gBAAgB,KAC7B,OAAO,CAAC,gBAAgB,CAmC1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,UAAU,EACnB,4BAGG,4BAA4B,KAC9B,OAAO,CAAC,gBAAgB,CAuC1B,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,SAAS,UAAU,EACnB,4BAGG,4BAA4B,KAC9B,OAAO,CAAC,gBAAgB,CAqB1B,CAAC"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { cloneDeep } from '@nlabs/utils/objects/clone';
5
+ import { createHash, parseId } from '@nlabs/utils/parsers/strings';
6
+ import { aql } from 'arangojs';
7
+ import { Config } from '../config.js';
8
+ import { ErrorTypes } from '../types/error.types.js';
9
+ import { logError } from '../utils/analyticsUtils.js';
10
+ import { getLimit, sortIds, useDb } from '../utils/arangodbUtils.js';
11
+ import { getImageUrl } from './images.js';
12
+ import { getDisplayName, getUser } from './users.js';
13
+ const eventCategory = 'conversations';
14
+ export const parseConversationOptions = (options = {})=>{
15
+ const { from = 0, to = 30 } = options;
16
+ return {
17
+ limit: getLimit(from, to)
18
+ };
19
+ };
20
+ export const getConversations = (context, userId, options)=>{
21
+ const action = 'getConversations';
22
+ const { databaseName } = context;
23
+ const { limit } = parseConversationOptions(options);
24
+ const userDocId = `users/${userId}`;
25
+ const aqlQry = `FOR c, e IN 1..1 OUTBOUND "${userDocId}" hasConversation
26
+ ${limit.aql}
27
+ LET users = (
28
+ FOR u, uc IN 1..1 INBOUND c._id hasConversation
29
+ FILTER u._id != "${userDocId}"
30
+ RETURN u
31
+ )
32
+ RETURN MERGE(c, {users: users})`;
33
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
34
+ logError({
35
+ action,
36
+ category: eventCategory,
37
+ label: ErrorTypes.DATABASE_ERROR
38
+ }, error, context);
39
+ return [];
40
+ });
41
+ };
42
+ export const getDirectConversation = async (context, { fromId, toId, toUser })=>{
43
+ const action = 'getDirectConversation';
44
+ const { databaseName } = context;
45
+ try {
46
+ const formatFromId = parseId(fromId);
47
+ const formatToId = parseId(toId);
48
+ const userIds = [
49
+ formatFromId,
50
+ formatToId
51
+ ];
52
+ const sortedUserIds = sortIds(userIds);
53
+ const conversationId = createHash(`conversations-${sortedUserIds.join('-')}`, null);
54
+ const user = toUser || await getUser(context, {
55
+ userId: formatToId
56
+ });
57
+ const aqlQry = aql`LET c = DOCUMENT(${`conversations/${conversationId}`}) RETURN c`;
58
+ const conversation = await useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
59
+ action,
60
+ category: eventCategory,
61
+ label: ErrorTypes.DATABASE_ERROR
62
+ }, error, context));
63
+ if (conversation) {
64
+ return {
65
+ ...conversation,
66
+ users: [
67
+ user
68
+ ]
69
+ };
70
+ }
71
+ return addDirectConversation(context, {
72
+ fromId,
73
+ toId,
74
+ toUser: user
75
+ });
76
+ } catch (databaseError) {
77
+ return logError({
78
+ action,
79
+ category: eventCategory,
80
+ label: ErrorTypes.DATABASE_ERROR
81
+ }, databaseError, context);
82
+ }
83
+ };
84
+ export const addDirectConversation = async (context, { fromId, toId, toUser })=>{
85
+ const action = 'getDirectConversation';
86
+ const { databaseName } = context;
87
+ try {
88
+ const formatFromId = parseId(fromId);
89
+ const formatToId = parseId(toId);
90
+ const userIds = [
91
+ formatFromId,
92
+ formatToId
93
+ ];
94
+ const sortedUserIds = sortIds([
95
+ formatFromId,
96
+ formatToId
97
+ ]);
98
+ const user = toUser || await getUser(context, {
99
+ userId: formatToId
100
+ });
101
+ const conversationId = createHash(`conversations-${sortedUserIds.join('-')}`, null);
102
+ const now = Date.now();
103
+ const insert = {
104
+ _key: conversationId,
105
+ added: now,
106
+ isDirect: true,
107
+ modified: now
108
+ };
109
+ const insertQuery = aql`INSERT ${insert} IN conversations RETURN NEW`;
110
+ const updatedConversation = await useDb(databaseName).query(insertQuery).then((cursor)=>cursor.next());
111
+ await Promise.all(userIds.map((userId)=>{
112
+ const edgeId = createHash(`hasConversation-${userId}-${conversationId}`);
113
+ const edge = {
114
+ _from: `users/${userId}`,
115
+ _key: edgeId,
116
+ _to: `conversations/${conversationId}`,
117
+ added: Date.now()
118
+ };
119
+ const insertEdgeQuery = aql`INSERT ${edge} IN hasConversation RETURN NEW`;
120
+ return useDb(databaseName).query(insertEdgeQuery);
121
+ }));
122
+ return {
123
+ ...updatedConversation,
124
+ users: [
125
+ user
126
+ ]
127
+ };
128
+ } catch (databaseError) {
129
+ logError({
130
+ action,
131
+ category: eventCategory,
132
+ label: ErrorTypes.DATABASE_ERROR
133
+ }, databaseError, context);
134
+ return {};
135
+ }
136
+ };
137
+ export const getConnectionUsers = (context, { conversationId, includeAll = false, isDirect })=>{
138
+ const action = 'getConnectionUsers';
139
+ const { databaseName, session: { userId: sessionUserId } } = context;
140
+ const filters = [
141
+ 'c.userId == u._key'
142
+ ];
143
+ if (!includeAll) {
144
+ filters.push(`u._key != ${sessionUserId}`);
145
+ }
146
+ if (isDirect) {
147
+ filters.push(`p.vertices[0].isDirect == ${isDirect}`);
148
+ }
149
+ const aqlQry = aql`FOR u, e,p IN 1..1 INBOUND ${`conversations/${conversationId}`} hasConversation
150
+ OPTIONS {vertexCollections: "users"}
151
+ FOR c IN connections
152
+ FILTER ${filters.join(' && ')}
153
+ RETURN c`;
154
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
155
+ logError({
156
+ action,
157
+ category: eventCategory,
158
+ label: ErrorTypes.DATABASE_ERROR
159
+ }, error, context);
160
+ return [];
161
+ });
162
+ };
163
+ export const getConversationUsers = (context, { conversationId, includeAll = false, isDirect })=>{
164
+ const action = 'getConversationUsers';
165
+ const { databaseName, session: { userId: sessionUserId } } = context;
166
+ const filters = [
167
+ 'c.userId == u._key'
168
+ ];
169
+ if (!includeAll) {
170
+ filters.push(`u._key != ${sessionUserId}`);
171
+ }
172
+ if (isDirect) {
173
+ filters.push(`p.vertices[0].isDirect == ${isDirect}`);
174
+ }
175
+ const aqlQry = aql`FOR u, e,p IN 1..1 INBOUND ${`conversations/${conversationId}`} hasConversation
176
+ OPTIONS {vertexCollections: "users"}
177
+ FILTER ${filters.join(' && ')}
178
+ RETURN u`;
179
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
180
+ logError({
181
+ action,
182
+ category: eventCategory,
183
+ label: ErrorTypes.DATABASE_ERROR
184
+ }, error, context);
185
+ return [];
186
+ });
187
+ };
188
+ // export const getDirectConversationOld = (context: ApiContext, userId: string): Promise<ConversationType> => {
189
+ // const action: string = 'getDirectConversation';
190
+ // const {database, session: {userId: sessionId}} = context;
191
+ // const sessionDocId: string = `users/${sessionId}`;
192
+ // const formatUserId: string = parseArangoId(userId);
193
+ // const aqlQry: AqlQuery = aql`LET from = (
194
+ // FOR c, e IN 1..1 OUTBOUND ${sessionDocId} hasConversation
195
+ // FILTER c.direct == true
196
+ // RETURN c
197
+ // )
198
+ // LET to = (
199
+ // FOR c, e IN 1..1 OUTBOUND ${formatUserId} hasConversation
200
+ // FILTER c.direct == true
201
+ // RETURN c
202
+ // )
203
+ // LET conversation = FIRST(INTERSECTION(from, to))
204
+ // LET users = !IS_NULL(conversation) && (
205
+ // FOR g IN[${sessionDocId}, ${formatUserId}]
206
+ // FOR u IN users
207
+ // FILTER g == u._id
208
+ // RETURN u
209
+ // )
210
+ // RETURN IS_NULL(conversation) ? null : MERGE(conversation, {users: users})`;
211
+ // return database.query(aqlQry)
212
+ // .then((cursor) => cursor.next())
213
+ // .catch((error: Error) => logError({
214
+ // action,
215
+ // category: eventCategory,
216
+ // label: ErrorTypes.DATABASE_ERROR
217
+ // }, error, context));
218
+ // };
219
+ export const getConversation = (context, conversationId)=>{
220
+ const action = 'getItem';
221
+ const { databaseName, session: { userId: sessionId } } = context;
222
+ const sessionDocId = `users/${sessionId}`;
223
+ const conversationDocId = `conversations/${parseId(conversationId)}`;
224
+ const aqlQry = aql`FOR c, e IN 1..1 OUTBOUND ${sessionDocId} hasConversation
225
+ FILTER c._id == ${conversationDocId}
226
+ LET u = (
227
+ FOR inUser, inEdge IN 1..1 INBOUND ${conversationDocId} hasConversation
228
+ RETURN inUser
229
+ )
230
+ LIMIT 1
231
+ RETURN MERGE(c, {users: u})`;
232
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).then((conversation)=>{
233
+ if (!conversation) {
234
+ return {};
235
+ }
236
+ conversation.users = conversation.users.map((user)=>{
237
+ const { imageId, userId } = user;
238
+ const thumbUrlData = {
239
+ bucket: Config.get('aws.s3.Bucket'),
240
+ imageDir: 'thumbs',
241
+ imageId,
242
+ type: 'users',
243
+ typeId: userId
244
+ };
245
+ return {
246
+ ...user,
247
+ name: getDisplayName(user),
248
+ thumb: getImageUrl(thumbUrlData)
249
+ };
250
+ });
251
+ return conversation;
252
+ }).catch((error)=>logError({
253
+ action,
254
+ category: eventCategory,
255
+ label: ErrorTypes.DATABASE_ERROR
256
+ }, error, context));
257
+ };
258
+ export const updateConversation = (context, conversation)=>{
259
+ const action = 'updateConversation';
260
+ const { databaseName, session: { userId: sessionId } } = context;
261
+ const { conversationId = createHash(`conversation-${sessionId} `), isDirect = false, name } = conversation;
262
+ const formatConversationId = parseId(conversationId);
263
+ const now = Date.now();
264
+ const update = {
265
+ isDirect,
266
+ modified: now,
267
+ name
268
+ };
269
+ const insert = {
270
+ ...cloneDeep(update),
271
+ _key: formatConversationId,
272
+ added: now
273
+ };
274
+ const aqlQry = aql`UPSERT {_key: ${formatConversationId} }
275
+ INSERT ${insert}
276
+ UPDATE ${update}
277
+ IN conversations RETURN NEW`;
278
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).then((conversation)=>conversation).catch((error)=>logError({
279
+ action,
280
+ category: eventCategory,
281
+ label: ErrorTypes.DATABASE_ERROR
282
+ }, error, context));
283
+ };
284
+ export const addUserToConversation = (context, { conversationId, userId })=>{
285
+ const action = 'addUserToConversation';
286
+ const { databaseName } = context;
287
+ const formatConversationId = parseId(conversationId);
288
+ const formatUserId = parseId(userId);
289
+ const conversationDocId = `conversations/${formatConversationId}`;
290
+ const userDocId = `users/${formatUserId}`;
291
+ const aqlQry = aql`FOR hc IN hasConversation
292
+ FILTER hc._from == ${userDocId} && hc._to == ${conversationDocId}
293
+ LIMIT 1
294
+ RETURN hc`;
295
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).then((hasConversationEdge)=>{
296
+ if (!!hasConversationEdge) {
297
+ return hasConversationEdge;
298
+ }
299
+ const edgeCollection = useDb(databaseName).collection('hasConversation');
300
+ const edgeId = createHash(`convo - ${formatConversationId} -${formatUserId} `);
301
+ const edge = {
302
+ _from: userDocId,
303
+ _key: edgeId,
304
+ _to: conversationDocId,
305
+ added: Date.now()
306
+ };
307
+ return edgeCollection.save(edge, {
308
+ returnNew: true
309
+ }).then(()=>edge);
310
+ }).catch((error)=>logError({
311
+ action,
312
+ category: eventCategory,
313
+ label: ErrorTypes.DATABASE_ERROR
314
+ }, error, context));
315
+ };
316
+ export const deleteUserFromConversation = (context, { conversationId, userId })=>{
317
+ const action = 'deleteUserFromConversation';
318
+ const { databaseName } = context;
319
+ const formatConversationId = parseId(conversationId);
320
+ const formatUserId = parseId(userId);
321
+ const conversationDocId = `conversations/${formatConversationId}`;
322
+ const userDocId = `users/${formatUserId}`;
323
+ const aqlQry = aql`FOR hc IN hasConversation
324
+ FILTER hc._from == ${userDocId} && hc._to == ${conversationDocId}
325
+ LIMIT 1
326
+ REMOVE hc IN hasConversation
327
+ RETURN OLD`;
328
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
329
+ action,
330
+ category: eventCategory,
331
+ label: ErrorTypes.DATABASE_ERROR
332
+ }, error, context));
333
+ };
334
+
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvY29udmVyc2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjbG9uZURlZXB9IGZyb20gJ0BubGFicy91dGlscy9vYmplY3RzL2Nsb25lJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7Z2V0TGltaXQsIHNvcnRJZHMsIHVzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7Z2V0SW1hZ2VVcmx9IGZyb20gJy4vaW1hZ2VzLmpzJztcbmltcG9ydCB7Z2V0RGlzcGxheU5hbWUsIGdldFVzZXJ9IGZyb20gJy4vdXNlcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcbmltcG9ydCB0eXBlIHtBcmFuZ29EYkxpbWl0LCBFZGdlVHlwZX0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGIudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0Nvbm5lY3Rpb25UeXBlfSBmcm9tICcuLi90eXBlcy9jb25uZWN0aW9ucy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbnZlcnNhdGlvbk9wdGlvbnMsXG4gIENvbnZlcnNhdGlvblR5cGUsXG4gIENvbnZlcnNhdGlvblVzZXJzUGFyYW1zLFxuICBEaXJlY3RDb252ZXJzYXRpb25QYXJhbXMsXG4gIFVwZGF0ZUNvbnZlcnNhdGlvblVzZXJQYXJhbXNcbn0gZnJvbSAnLi4vdHlwZXMvY29udmVyc2F0aW9ucy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7SW1hZ2VVcmxEYXRhfSBmcm9tICcuLi90eXBlcy9pbWFnZXMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1VzZXJUeXBlfSBmcm9tICcuLi90eXBlcy91c2Vycy50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdjb252ZXJzYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udmVyc2F0aW9uT3B0aW9ucyA9IChvcHRpb25zOiBDb252ZXJzYXRpb25PcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW1pdDogZ2V0TGltaXQoZnJvbSwgdG8pIGFzIEFyYW5nb0RiTGltaXRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb252ZXJzYXRpb25zID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJJZDogc3RyaW5nLCBvcHRpb25zPyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldENvbnZlcnNhdGlvbnMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZUNvbnZlcnNhdGlvbk9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7dXNlcklkfWA7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgXCIke3VzZXJEb2NJZH1cIiBoYXNDb252ZXJzYXRpb25cbiAgICAke2xpbWl0LmFxbH1cbiAgICBMRVQgdXNlcnMgPSAoXG4gICAgICBGT1IgdSwgdWMgSU4gMS4uMSBJTkJPVU5EIGMuX2lkIGhhc0NvbnZlcnNhdGlvblxuICAgICAgRklMVEVSIHUuX2lkICE9IFwiJHt1c2VyRG9jSWR9XCJcbiAgICAgIFJFVFVSTiB1XG4gICAgKVxuICAgIFJFVFVSTiBNRVJHRShjLCB7dXNlcnM6IHVzZXJzfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBDb252ZXJzYXRpb25UeXBlW10pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXJlY3RDb252ZXJzYXRpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBmcm9tSWQsXG4gICAgdG9JZCxcbiAgICB0b1VzZXJcbiAgfTogRGlyZWN0Q29udmVyc2F0aW9uUGFyYW1zXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0RGlyZWN0Q29udmVyc2F0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZm9ybWF0RnJvbUlkID0gcGFyc2VJZChmcm9tSWQpO1xuICAgIGNvbnN0IGZvcm1hdFRvSWQgPSBwYXJzZUlkKHRvSWQpO1xuICAgIGNvbnN0IHVzZXJJZHMgPSBbZm9ybWF0RnJvbUlkLCBmb3JtYXRUb0lkXTtcbiAgICBjb25zdCBzb3J0ZWRVc2VySWRzID0gc29ydElkcyh1c2VySWRzKTtcbiAgICBjb25zdCBjb252ZXJzYXRpb25JZCA9IGNyZWF0ZUhhc2goYGNvbnZlcnNhdGlvbnMtJHtzb3J0ZWRVc2VySWRzLmpvaW4oJy0nKX1gLCBudWxsKTtcbiAgICBjb25zdCB1c2VyOiBVc2VyVHlwZSA9IHRvVXNlciB8fCBhd2FpdCBnZXRVc2VyKGNvbnRleHQsIHt1c2VySWQ6IGZvcm1hdFRvSWR9KTtcbiAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCBjID0gRE9DVU1FTlQoJHtgY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfWB9KSBSRVRVUk4gY2A7XG4gICAgY29uc3QgY29udmVyc2F0aW9uID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICBpZihjb252ZXJzYXRpb24pIHtcbiAgICAgIHJldHVybiB7Li4uY29udmVyc2F0aW9uLCB1c2VyczogW3VzZXJdfTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkRGlyZWN0Q29udmVyc2F0aW9uKGNvbnRleHQsIHtmcm9tSWQsIHRvSWQsIHRvVXNlcjogdXNlcn0pO1xuICB9IGNhdGNoKGRhdGFiYXNlRXJyb3IpIHtcbiAgICByZXR1cm4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGRhdGFiYXNlRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkRGlyZWN0Q29udmVyc2F0aW9uID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB7XG4gICAgZnJvbUlkLFxuICAgIHRvSWQsXG4gICAgdG9Vc2VyXG4gIH06IERpcmVjdENvbnZlcnNhdGlvblBhcmFtc1xuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldERpcmVjdENvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICB0cnkge1xuICAgIGNvbnN0IGZvcm1hdEZyb21JZCA9IHBhcnNlSWQoZnJvbUlkKTtcbiAgICBjb25zdCBmb3JtYXRUb0lkID0gcGFyc2VJZCh0b0lkKTtcbiAgICBjb25zdCB1c2VySWRzID0gW2Zvcm1hdEZyb21JZCwgZm9ybWF0VG9JZF07XG4gICAgY29uc3Qgc29ydGVkVXNlcklkcyA9IHNvcnRJZHMoW2Zvcm1hdEZyb21JZCwgZm9ybWF0VG9JZF0pO1xuICAgIGNvbnN0IHVzZXI6IFVzZXJUeXBlID0gdG9Vc2VyIHx8IGF3YWl0IGdldFVzZXIoY29udGV4dCwge3VzZXJJZDogZm9ybWF0VG9JZH0pO1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvbklkID0gY3JlYXRlSGFzaChgY29udmVyc2F0aW9ucy0ke3NvcnRlZFVzZXJJZHMuam9pbignLScpfWAsIG51bGwpO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgaW5zZXJ0ID0ge1xuICAgICAgX2tleTogY29udmVyc2F0aW9uSWQsXG4gICAgICBhZGRlZDogbm93LFxuICAgICAgaXNEaXJlY3Q6IHRydWUsXG4gICAgICBtb2RpZmllZDogbm93XG4gICAgfTtcbiAgICBjb25zdCBpbnNlcnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiBORVdgO1xuICAgIGNvbnN0IHVwZGF0ZWRDb252ZXJzYXRpb24gPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGluc2VydFF1ZXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh1c2VySWRzLm1hcCgodXNlcklkKSA9PiB7XG4gICAgICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYGhhc0NvbnZlcnNhdGlvbi0ke3VzZXJJZH0tJHtjb252ZXJzYXRpb25JZH1gKTtcbiAgICAgIGNvbnN0IGVkZ2U6IEVkZ2VUeXBlID0ge1xuICAgICAgICBfZnJvbTogYHVzZXJzLyR7dXNlcklkfWAsXG4gICAgICAgIF9rZXk6IGVkZ2VJZCxcbiAgICAgICAgX3RvOiBgY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfWAsXG4gICAgICAgIGFkZGVkOiBEYXRlLm5vdygpXG4gICAgICB9O1xuICAgICAgY29uc3QgaW5zZXJ0RWRnZVF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtlZGdlfSBJTiBoYXNDb252ZXJzYXRpb24gUkVUVVJOIE5FV2A7XG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShpbnNlcnRFZGdlUXVlcnkpO1xuICAgIH0pKTtcblxuICAgIHJldHVybiB7Li4udXBkYXRlZENvbnZlcnNhdGlvbiwgdXNlcnM6IFt1c2VyXX07XG4gIH0gY2F0Y2goZGF0YWJhc2VFcnJvcikge1xuICAgIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBkYXRhYmFzZUVycm9yLCBjb250ZXh0KTtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uVXNlcnMgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICBpbmNsdWRlQWxsID0gZmFsc2UsXG4gICAgaXNEaXJlY3RcbiAgfTogQ29udmVyc2F0aW9uVXNlcnNQYXJhbXNcbik6IFByb21pc2U8Q29ubmVjdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRDb25uZWN0aW9uVXNlcnMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uVXNlcklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFsnYy51c2VySWQgPT0gdS5fa2V5J107XG5cbiAgaWYoIWluY2x1ZGVBbGwpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHUuX2tleSAhPSAke3Nlc3Npb25Vc2VySWR9YCk7XG4gIH1cbiAgaWYoaXNEaXJlY3QpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHAudmVydGljZXNbMF0uaXNEaXJlY3QgPT0gJHtpc0RpcmVjdH1gKTtcbiAgfVxuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHUsIGUscCBJTiAxLi4xIElOQk9VTkQgJHtgY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfWB9IGhhc0NvbnZlcnNhdGlvblxuICAgIE9QVElPTlMge3ZlcnRleENvbGxlY3Rpb25zOiBcInVzZXJzXCJ9XG4gICAgRk9SIGMgSU4gY29ubmVjdGlvbnNcbiAgICBGSUxURVIgJHtmaWx0ZXJzLmpvaW4oJyAmJiAnKX1cbiAgICBSRVRVUk4gY2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIENvbm5lY3Rpb25UeXBlW10pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb252ZXJzYXRpb25Vc2VycyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge1xuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIGluY2x1ZGVBbGwgPSBmYWxzZSxcbiAgICBpc0RpcmVjdFxuICB9OiBDb252ZXJzYXRpb25Vc2Vyc1BhcmFtc1xuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29udmVyc2F0aW9uVXNlcnMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uVXNlcklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFsnYy51c2VySWQgPT0gdS5fa2V5J107XG5cbiAgaWYoIWluY2x1ZGVBbGwpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHUuX2tleSAhPSAke3Nlc3Npb25Vc2VySWR9YCk7XG4gIH1cbiAgaWYoaXNEaXJlY3QpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHAudmVydGljZXNbMF0uaXNEaXJlY3QgPT0gJHtpc0RpcmVjdH1gKTtcbiAgfVxuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHUsIGUscCBJTiAxLi4xIElOQk9VTkQgJHtgY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfWB9IGhhc0NvbnZlcnNhdGlvblxuICAgIE9QVElPTlMge3ZlcnRleENvbGxlY3Rpb25zOiBcInVzZXJzXCJ9XG4gICAgRklMVEVSICR7ZmlsdGVycy5qb2luKCcgJiYgJyl9XG4gICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBDb252ZXJzYXRpb25UeXBlW10pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcbn07XG5cbi8vIGV4cG9ydCBjb25zdCBnZXREaXJlY3RDb252ZXJzYXRpb25PbGQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbi8vICAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0RGlyZWN0Q29udmVyc2F0aW9uJztcbi8vICAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4vLyAgIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4vLyAgIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZCh1c2VySWQpO1xuXG4vLyAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgTEVUIGZyb20gPSAoXG4vLyAgICAgICBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7c2Vzc2lvbkRvY0lkfSBoYXNDb252ZXJzYXRpb25cbi8vICAgICAgIEZJTFRFUiBjLmRpcmVjdCA9PSB0cnVlXG4vLyAgICAgICBSRVRVUk4gY1xuLy8gICAgIClcbi8vICAgICBMRVQgdG8gPSAoXG4vLyAgICAgICBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7Zm9ybWF0VXNlcklkfSBoYXNDb252ZXJzYXRpb25cbi8vICAgICAgIEZJTFRFUiBjLmRpcmVjdCA9PSB0cnVlXG4vLyAgICAgICBSRVRVUk4gY1xuLy8gICAgIClcbi8vICAgICBMRVQgY29udmVyc2F0aW9uID0gRklSU1QoSU5URVJTRUNUSU9OKGZyb20sIHRvKSlcbi8vICAgICBMRVQgdXNlcnMgPSAhSVNfTlVMTChjb252ZXJzYXRpb24pICYmIChcbi8vICAgICAgIEZPUiBnIElOWyR7c2Vzc2lvbkRvY0lkfSwgJHtmb3JtYXRVc2VySWR9XVxuLy8gICAgICAgRk9SIHUgSU4gdXNlcnNcbi8vICAgICAgIEZJTFRFUiBnID09IHUuX2lkXG4vLyAgICAgICBSRVRVUk4gdVxuLy8gICAgIClcbi8vICAgICBSRVRVUk4gSVNfTlVMTChjb252ZXJzYXRpb24pID8gbnVsbCA6IE1FUkdFKGNvbnZlcnNhdGlvbiwge3VzZXJzOiB1c2Vyc30pYDtcblxuLy8gICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuLy8gICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4vLyAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbi8vICAgICAgIGFjdGlvbixcbi8vICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuLy8gICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1Jcbi8vICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnZlcnNhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBjb252ZXJzYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbkRvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke3BhcnNlSWQoY29udmVyc2F0aW9uSWQpfWA7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7c2Vzc2lvbkRvY0lkfSBoYXNDb252ZXJzYXRpb25cbiAgICBGSUxURVIgYy5faWQgPT0gJHtjb252ZXJzYXRpb25Eb2NJZH1cbiAgICBMRVQgdSA9IChcbiAgICAgIEZPUiBpblVzZXIsIGluRWRnZSBJTiAxLi4xIElOQk9VTkQgJHtjb252ZXJzYXRpb25Eb2NJZH0gaGFzQ29udmVyc2F0aW9uXG4gICAgICBSRVRVUk4gaW5Vc2VyXG4gICAgKVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXJzOiB1fSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGlmKCFjb252ZXJzYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuXG4gICAgICBjb252ZXJzYXRpb24udXNlcnMgPSBjb252ZXJzYXRpb24udXNlcnMubWFwKCh1c2VyOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7aW1hZ2VJZCwgdXNlcklkfSA9IHVzZXI7XG4gICAgICAgIGNvbnN0IHRodW1iVXJsRGF0YTogSW1hZ2VVcmxEYXRhID0ge1xuICAgICAgICAgIGJ1Y2tldDogQ29uZmlnLmdldCgnYXdzLnMzLkJ1Y2tldCcpLFxuICAgICAgICAgIGltYWdlRGlyOiAndGh1bWJzJyxcbiAgICAgICAgICBpbWFnZUlkLFxuICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgdHlwZUlkOiB1c2VySWRcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgbmFtZTogZ2V0RGlzcGxheU5hbWUodXNlciksXG4gICAgICAgICAgdGh1bWI6IGdldEltYWdlVXJsKHRodW1iVXJsRGF0YSlcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gY29udmVyc2F0aW9uO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUNvbnZlcnNhdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlQ29udmVyc2F0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgY29udmVyc2F0aW9uSWQgPSBjcmVhdGVIYXNoKGBjb252ZXJzYXRpb24tJHtzZXNzaW9uSWR9IGApLFxuICAgIGlzRGlyZWN0ID0gZmFsc2UsXG4gICAgbmFtZVxuICB9ID0gY29udmVyc2F0aW9uO1xuICBjb25zdCBmb3JtYXRDb252ZXJzYXRpb25JZDogc3RyaW5nID0gcGFyc2VJZChjb252ZXJzYXRpb25JZCk7XG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgdXBkYXRlID0ge1xuICAgIGlzRGlyZWN0LFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgbmFtZVxuICB9O1xuXG4gIGNvbnN0IGluc2VydCA9IHtcbiAgICAuLi5jbG9uZURlZXAodXBkYXRlKSxcbiAgICBfa2V5OiBmb3JtYXRDb252ZXJzYXRpb25JZCxcbiAgICBhZGRlZDogbm93XG4gIH07XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge19rZXk6ICR7Zm9ybWF0Q29udmVyc2F0aW9uSWR9IH1cbiAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgVVBEQVRFICR7dXBkYXRlfVxuICAgIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4gY29udmVyc2F0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRVc2VyVG9Db252ZXJzYXRpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICB1c2VySWRcbiAgfTogVXBkYXRlQ29udmVyc2F0aW9uVXNlclBhcmFtc1xuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFVzZXJUb0NvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0Q29udmVyc2F0aW9uSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udmVyc2F0aW9uSWQpO1xuICBjb25zdCBmb3JtYXRVc2VySWQ6IHN0cmluZyA9IHBhcnNlSWQodXNlcklkKTtcbiAgY29uc3QgY29udmVyc2F0aW9uRG9jSWQ6IHN0cmluZyA9IGBjb252ZXJzYXRpb25zLyR7Zm9ybWF0Q29udmVyc2F0aW9uSWR9YDtcbiAgY29uc3QgdXNlckRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtmb3JtYXRVc2VySWR9YDtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBoYyBJTiBoYXNDb252ZXJzYXRpb25cbiAgICBGSUxURVIgaGMuX2Zyb20gPT0gJHt1c2VyRG9jSWR9ICYmIGhjLl90byA9PSAke2NvbnZlcnNhdGlvbkRvY0lkfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gaGNgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChoYXNDb252ZXJzYXRpb25FZGdlKSA9PiB7XG4gICAgICBpZighIWhhc0NvbnZlcnNhdGlvbkVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGhhc0NvbnZlcnNhdGlvbkVkZ2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaGFzQ29udmVyc2F0aW9uJyk7XG4gICAgICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYGNvbnZvIC0gJHtmb3JtYXRDb252ZXJzYXRpb25JZH0gLSR7Zm9ybWF0VXNlcklkfSBgKTtcblxuICAgICAgY29uc3QgZWRnZTogQ29udmVyc2F0aW9uVHlwZSA9IHtcbiAgICAgICAgX2Zyb206IHVzZXJEb2NJZCxcbiAgICAgICAgX2tleTogZWRnZUlkLFxuICAgICAgICBfdG86IGNvbnZlcnNhdGlvbkRvY0lkLFxuICAgICAgICBhZGRlZDogRGF0ZS5ub3coKVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uXG4gICAgICAgIC5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KVxuICAgICAgICAudGhlbigoKSA9PiBlZGdlKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVc2VyRnJvbUNvbnZlcnNhdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge1xuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIHVzZXJJZFxuICB9OiBVcGRhdGVDb252ZXJzYXRpb25Vc2VyUGFyYW1zXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlVXNlckZyb21Db252ZXJzYXRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdENvbnZlcnNhdGlvbklkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZlcnNhdGlvbklkKTtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbkRvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke2Zvcm1hdENvbnZlcnNhdGlvbklkfWA7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7Zm9ybWF0VXNlcklkfWA7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaGMgSU4gaGFzQ29udmVyc2F0aW9uXG4gICAgRklMVEVSIGhjLl9mcm9tID09ICR7dXNlckRvY0lkfSAmJiBoYy5fdG8gPT0gJHtjb252ZXJzYXRpb25Eb2NJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIGhjIElOIGhhc0NvbnZlcnNhdGlvblxuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG4iXSwibmFtZXMiOlsiY2xvbmVEZWVwIiwiY3JlYXRlSGFzaCIsInBhcnNlSWQiLCJhcWwiLCJDb25maWciLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJnZXRMaW1pdCIsInNvcnRJZHMiLCJ1c2VEYiIsImdldEltYWdlVXJsIiwiZ2V0RGlzcGxheU5hbWUiLCJnZXRVc2VyIiwiZXZlbnRDYXRlZ29yeSIsInBhcnNlQ29udmVyc2F0aW9uT3B0aW9ucyIsIm9wdGlvbnMiLCJmcm9tIiwidG8iLCJsaW1pdCIsImdldENvbnZlcnNhdGlvbnMiLCJjb250ZXh0IiwidXNlcklkIiwiYWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwidXNlckRvY0lkIiwiYXFsUXJ5IiwicXVlcnkiLCJ0aGVuIiwiY3Vyc29yIiwiYWxsIiwiY2F0Y2giLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJEQVRBQkFTRV9FUlJPUiIsImdldERpcmVjdENvbnZlcnNhdGlvbiIsImZyb21JZCIsInRvSWQiLCJ0b1VzZXIiLCJmb3JtYXRGcm9tSWQiLCJmb3JtYXRUb0lkIiwidXNlcklkcyIsInNvcnRlZFVzZXJJZHMiLCJjb252ZXJzYXRpb25JZCIsImpvaW4iLCJ1c2VyIiwiY29udmVyc2F0aW9uIiwibmV4dCIsInVzZXJzIiwiYWRkRGlyZWN0Q29udmVyc2F0aW9uIiwiZGF0YWJhc2VFcnJvciIsIm5vdyIsIkRhdGUiLCJpbnNlcnQiLCJfa2V5IiwiYWRkZWQiLCJpc0RpcmVjdCIsIm1vZGlmaWVkIiwiaW5zZXJ0UXVlcnkiLCJ1cGRhdGVkQ29udmVyc2F0aW9uIiwiUHJvbWlzZSIsIm1hcCIsImVkZ2VJZCIsImVkZ2UiLCJfZnJvbSIsIl90byIsImluc2VydEVkZ2VRdWVyeSIsImdldENvbm5lY3Rpb25Vc2VycyIsImluY2x1ZGVBbGwiLCJzZXNzaW9uIiwic2Vzc2lvblVzZXJJZCIsImZpbHRlcnMiLCJwdXNoIiwiZ2V0Q29udmVyc2F0aW9uVXNlcnMiLCJnZXRDb252ZXJzYXRpb24iLCJzZXNzaW9uSWQiLCJzZXNzaW9uRG9jSWQiLCJjb252ZXJzYXRpb25Eb2NJZCIsImltYWdlSWQiLCJ0aHVtYlVybERhdGEiLCJidWNrZXQiLCJnZXQiLCJpbWFnZURpciIsInR5cGUiLCJ0eXBlSWQiLCJuYW1lIiwidGh1bWIiLCJ1cGRhdGVDb252ZXJzYXRpb24iLCJmb3JtYXRDb252ZXJzYXRpb25JZCIsInVwZGF0ZSIsImFkZFVzZXJUb0NvbnZlcnNhdGlvbiIsImZvcm1hdFVzZXJJZCIsImhhc0NvbnZlcnNhdGlvbkVkZ2UiLCJlZGdlQ29sbGVjdGlvbiIsImNvbGxlY3Rpb24iLCJzYXZlIiwicmV0dXJuTmV3IiwiZGVsZXRlVXNlckZyb21Db252ZXJzYXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFNBQVMsUUFBTyw2QkFBNkI7QUFDckQsU0FBUUMsVUFBVSxFQUFFQyxPQUFPLFFBQU8sK0JBQStCO0FBQ2pFLFNBQVFD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
@@ -10,3 +10,4 @@ export declare const dynamoPut: (params: PutItemCommandInput) => Promise<PutItem
10
10
  export declare const dynamoUpdate: (params: UpdateItemCommandInput) => Promise<UpdateItemCommandOutput>;
11
11
  export declare const dynamoPutList: (params: BatchWriteItemCommandInput) => Promise<BatchWriteItemCommandOutput>;
12
12
  export declare const dynamoDel: (params: DeleteItemCommandInput) => Promise<DeleteItemCommandOutput>;
13
+ //# sourceMappingURL=dynamodb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.d.ts","sourceRoot":"","sources":["../../src/actions/dynamodb.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EAEvB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAKlC,eAAO,MAAM,SAAS,GAAI,QAAQ,mBAAmB,KAAG,OAAO,CAAC,oBAAoB,CAehF,CAAC;AAEL,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,KAAG,GAAG,EA0BhE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,iBAAiB,EAAE,eAAU,KAAG,OAAO,CAAC,oBAAoB,EAAE,CAkChG,CAAC;AAEL,eAAO,MAAM,SAAS,GAAI,QAAQ,mBAAmB,KAAG,OAAO,CAAC,oBAAoB,CAahF,CAAC;AAEL,eAAO,MAAM,YAAY,GAAI,QAAQ,sBAAsB,KAAG,OAAO,CAAC,uBAAuB,CAazF,CAAC;AAEL,eAAO,MAAM,aAAa,GAAI,QAAQ,0BAA0B,KAAG,OAAO,CAAC,2BAA2B,CAalG,CAAC;AAEL,eAAO,MAAM,SAAS,GAAI,QAAQ,sBAAsB,KAAG,OAAO,CAAC,uBAAuB,CAatF,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { DynamoDB } from '@aws-sdk/client-dynamodb';
5
+ import { Config } from '../config.js';
6
+ // const eventCategory: string = 'dynamodb';
7
+ export const dynamoGet = (params)=>new Promise((resolve, reject)=>{
8
+ const dynamodb = new DynamoDB({
9
+ credentials: Config.get('aws.credentials'),
10
+ region: Config.get('aws.region')
11
+ });
12
+ params.ConsistentRead = false;
13
+ dynamodb.getItem(params, (error, results)=>{
14
+ if (error) {
15
+ return reject(error);
16
+ }
17
+ return resolve(results);
18
+ });
19
+ });
20
+ export const parseDynamoList = (results)=>{
21
+ const { Items: items = [] } = results;
22
+ const data = [];
23
+ for(let idx = 0, len = items.length; idx < len; idx++){
24
+ const tmp = items[idx];
25
+ const obj = {};
26
+ let key;
27
+ for(key in tmp){
28
+ if (tmp.hasOwnProperty(key)) {
29
+ if (tmp[key].S) {
30
+ obj[key] = tmp[key].S.toString();
31
+ } else if (tmp[key].N) {
32
+ obj[key] = parseFloat(tmp[key].N);
33
+ } else {
34
+ obj[key] = tmp[key].B;
35
+ }
36
+ }
37
+ }
38
+ data.push(obj);
39
+ }
40
+ return data;
41
+ };
42
+ export const dynamoGetList = (params, startItem)=>new Promise((resolve, reject)=>{
43
+ const dynamodb = new DynamoDB({
44
+ credentials: Config.get('aws.credentials'),
45
+ region: Config.get('aws.region')
46
+ });
47
+ const { ConsistentRead: consistentRead } = params;
48
+ const updatedParams = {
49
+ ...params
50
+ };
51
+ if (startItem) {
52
+ updatedParams.ExclusiveStartKey = startItem;
53
+ }
54
+ if (!consistentRead) {
55
+ updatedParams.ConsistentRead = false;
56
+ }
57
+ const list = [];
58
+ dynamodb.query(updatedParams, (error, output)=>{
59
+ if (error) {
60
+ return reject(error);
61
+ }
62
+ list.push(...parseDynamoList(output) || []);
63
+ const { LastEvaluatedKey: lastKey } = output;
64
+ if (lastKey !== undefined) {
65
+ return dynamoGetList(params, lastKey);
66
+ }
67
+ return resolve(list);
68
+ });
69
+ });
70
+ export const dynamoPut = (params)=>new Promise((resolve, reject)=>{
71
+ const dynamodb = new DynamoDB({
72
+ credentials: Config.get('aws.credentials'),
73
+ region: Config.get('aws.region')
74
+ });
75
+ dynamodb.putItem(params, (error, output)=>{
76
+ if (error) {
77
+ return reject(error);
78
+ }
79
+ return resolve(output);
80
+ });
81
+ });
82
+ export const dynamoUpdate = (params)=>new Promise((resolve, reject)=>{
83
+ const dynamodb = new DynamoDB({
84
+ credentials: Config.get('aws.credentials'),
85
+ region: Config.get('aws.region')
86
+ });
87
+ dynamodb.updateItem(params, (error, output)=>{
88
+ if (error) {
89
+ return reject(error);
90
+ }
91
+ return resolve(output);
92
+ });
93
+ });
94
+ export const dynamoPutList = (params)=>new Promise((resolve, reject)=>{
95
+ const dynamodb = new DynamoDB({
96
+ credentials: Config.get('aws.credentials'),
97
+ region: Config.get('aws.region')
98
+ });
99
+ dynamodb.batchWriteItem(params, (error, output)=>{
100
+ if (error) {
101
+ return reject(error);
102
+ }
103
+ return resolve(output);
104
+ });
105
+ });
106
+ export const dynamoDel = (params)=>new Promise((resolve, reject)=>{
107
+ const dynamodb = new DynamoDB({
108
+ credentials: Config.get('aws.credentials'),
109
+ region: Config.get('aws.region')
110
+ });
111
+ dynamodb.deleteItem(params, (error, output)=>{
112
+ if (error) {
113
+ return reject(error);
114
+ }
115
+ return resolve(output);
116
+ });
117
+ });
118
+
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvZHluYW1vZGIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7XG4gIEJhdGNoV3JpdGVJdGVtQ29tbWFuZElucHV0LFxuICBCYXRjaFdyaXRlSXRlbUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUl0ZW1Db21tYW5kSW5wdXQsXG4gIERlbGV0ZUl0ZW1Db21tYW5kT3V0cHV0LFxuICBEeW5hbW9EQixcbiAgR2V0SXRlbUNvbW1hbmRJbnB1dCxcbiAgR2V0SXRlbUNvbW1hbmRPdXRwdXQsXG4gIFB1dEl0ZW1Db21tYW5kSW5wdXQsXG4gIFB1dEl0ZW1Db21tYW5kT3V0cHV0LFxuICBRdWVyeUNvbW1hbmRJbnB1dCxcbiAgUXVlcnlDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVJdGVtQ29tbWFuZElucHV0LFxuICBVcGRhdGVJdGVtQ29tbWFuZE91dHB1dFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2R5bmFtb2RiJztcbmV4cG9ydCBjb25zdCBkeW5hbW9HZXQgPSAocGFyYW1zOiBHZXRJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRJdGVtQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG4gICAgcGFyYW1zLkNvbnNpc3RlbnRSZWFkID0gZmFsc2U7XG5cbiAgICBkeW5hbW9kYi5nZXRJdGVtKHBhcmFtcywgKGVycm9yOiBFcnJvciwgcmVzdWx0czogR2V0SXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHRzKTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUR5bmFtb0xpc3QgPSAocmVzdWx0czogUXVlcnlDb21tYW5kT3V0cHV0KTogYW55W10gPT4ge1xuICBjb25zdCB7SXRlbXM6IGl0ZW1zID0gW119ID0gcmVzdWx0cztcbiAgY29uc3QgZGF0YTogYW55W10gPSBbXTtcblxuXG4gIGZvcihsZXQgaWR4OiBudW1iZXIgPSAwLCBsZW4gPSBpdGVtcy5sZW5ndGg7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjb25zdCB0bXAgPSBpdGVtc1tpZHhdO1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgIGxldCBrZXk7XG5cbiAgICBmb3Ioa2V5IGluIHRtcCkge1xuICAgICAgaWYodG1wLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgaWYodG1wW2tleV0uUykge1xuICAgICAgICAgIG9ialtrZXldID0gdG1wW2tleV0uUy50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYodG1wW2tleV0uTikge1xuICAgICAgICAgIG9ialtrZXldID0gcGFyc2VGbG9hdCh0bXBba2V5XS5OKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHRtcFtrZXldLkI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkYXRhLnB1c2gob2JqKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0dldExpc3QgPSAocGFyYW1zOiBRdWVyeUNvbW1hbmRJbnB1dCwgc3RhcnRJdGVtPyk6IFByb21pc2U8R2V0SXRlbUNvbW1hbmRPdXRwdXRbXT4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG4gICAgY29uc3Qge0NvbnNpc3RlbnRSZWFkOiBjb25zaXN0ZW50UmVhZH0gPSBwYXJhbXM7XG4gICAgY29uc3QgdXBkYXRlZFBhcmFtcyA9IHsuLi5wYXJhbXN9O1xuXG4gICAgaWYoc3RhcnRJdGVtKSB7XG4gICAgICB1cGRhdGVkUGFyYW1zLkV4Y2x1c2l2ZVN0YXJ0S2V5ID0gc3RhcnRJdGVtO1xuICAgIH1cblxuICAgIGlmKCFjb25zaXN0ZW50UmVhZCkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5Db25zaXN0ZW50UmVhZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QgPSBbXTtcblxuICAgIGR5bmFtb2RiLnF1ZXJ5KHVwZGF0ZWRQYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogUXVlcnlDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKC4uLihwYXJzZUR5bmFtb0xpc3Qob3V0cHV0KSB8fCBbXSkpO1xuXG4gICAgICBjb25zdCB7TGFzdEV2YWx1YXRlZEtleTogbGFzdEtleX0gPSBvdXRwdXQ7XG5cbiAgICAgIGlmKGxhc3RLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZHluYW1vR2V0TGlzdChwYXJhbXMsIGxhc3RLZXkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShsaXN0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9QdXQgPSAocGFyYW1zOiBQdXRJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRJdGVtQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBkeW5hbW9kYi5wdXRJdGVtKHBhcmFtcywgKGVycm9yLCBvdXRwdXQ6IFB1dEl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vVXBkYXRlID0gKHBhcmFtczogVXBkYXRlSXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8VXBkYXRlSXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIudXBkYXRlSXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogVXBkYXRlSXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9QdXRMaXN0ID0gKHBhcmFtczogQmF0Y2hXcml0ZUl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPEJhdGNoV3JpdGVJdGVtQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBkeW5hbW9kYi5iYXRjaFdyaXRlSXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogQmF0Y2hXcml0ZUl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vRGVsID0gKHBhcmFtczogRGVsZXRlSXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlSXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIuZGVsZXRlSXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBEZWxldGVJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcbiJdLCJuYW1lcyI6WyJEeW5hbW9EQiIsIkNvbmZpZyIsImR5bmFtb0dldCIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZHluYW1vZGIiLCJjcmVkZW50aWFscyIsImdldCIsInJlZ2lvbiIsIkNvbnNpc3RlbnRSZWFkIiwiZ2V0SXRlbSIsImVycm9yIiwicmVzdWx0cyIsInBhcnNlRHluYW1vTGlzdCIsIkl0ZW1zIiwiaXRlbXMiLCJkYXRhIiwiaWR4IiwibGVuIiwibGVuZ3RoIiwidG1wIiwib2JqIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJTIiwidG9TdHJpbmciLCJOIiwicGFyc2VGbG9hdCIsIkIiLCJwdXNoIiwiZHluYW1vR2V0TGlzdCIsInN0YXJ0SXRlbSIsImNvbnNpc3RlbnRSZWFkIiwidXBkYXRlZFBhcmFtcyIsIkV4Y2x1c2l2ZVN0YXJ0S2V5IiwibGlzdCIsInF1ZXJ5Iiwib3V0cHV0IiwiTGFzdEV2YWx1YXRlZEtleSIsImxhc3RLZXkiLCJ1bmRlZmluZWQiLCJkeW5hbW9QdXQiLCJwdXRJdGVtIiwiZHluYW1vVXBkYXRlIiwidXBkYXRlSXRlbSIsImR5bmFtb1B1dExpc3QiLCJiYXRjaFdyaXRlSXRlbSIsImR5bmFtb0RlbCIsImRlbGV0ZUl0ZW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBS0VBLFFBQVEsUUFTSCwyQkFBMkI7QUFFbEMsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFFcEMsNENBQTRDO0FBQzVDLE9BQU8sTUFBTUMsWUFBWSxDQUFDQyxTQUN4QixJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1FBQ3BCLE1BQU1DLFdBQVcsSUFBSVAsU0FBUztZQUM1QlEsYUFBYVAsT0FBT1EsR0FBRyxDQUFDO1lBQ3hCQyxRQUFRVCxPQUFPUSxHQUFHLENBQUM7UUFDckI7UUFDQU4sT0FBT1EsY0FBYyxHQUFHO1FBRXhCSixTQUFTSyxPQUFPLENBQUNULFFBQVEsQ0FBQ1UsT0FBY0M7WUFDdEMsSUFBR0QsT0FBTztnQkFDUixPQUFPUCxPQUFPTztZQUNoQjtZQUVBLE9BQU9SLFFBQVFTO1FBQ2pCO0lBQ0YsR0FBRztBQUVMLE9BQU8sTUFBTUMsa0JBQWtCLENBQUNEO0lBQzlCLE1BQU0sRUFBQ0UsT0FBT0MsUUFBUSxFQUFFLEVBQUMsR0FBR0g7SUFDNUIsTUFBTUksT0FBYyxFQUFFO0lBR3RCLElBQUksSUFBSUMsTUFBYyxHQUFHQyxNQUFNSCxNQUFNSSxNQUFNLEVBQUVGLE1BQU1DLEtBQUtELE1BQU87UUFDN0QsTUFBTUcsTUFBTUwsS0FBSyxDQUFDRSxJQUFJO1FBQ3RCLE1BQU1JLE1BQU0sQ0FBQztRQUNiLElBQUlDO1FBRUosSUFBSUEsT0FBT0YsSUFBSztZQUNkLElBQUdBLElBQUlHLGNBQWMsQ0FBQ0QsTUFBTTtnQkFDMUIsSUFBR0YsR0FBRyxDQUFDRSxJQUFJLENBQUNFLENBQUMsRUFBRTtvQkFDYkgsR0FBRyxDQUFDQyxJQUFJLEdBQUdGLEdBQUcsQ0FBQ0UsSUFBSSxDQUFDRSxDQUFDLENBQUNDLFFBQVE7Z0JBQ2hDLE9BQU8sSUFBR0wsR0FBRyxDQUFDRSxJQUFJLENBQUNJLENBQUMsRUFBRTtvQkFDcEJMLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHSyxXQUFXUCxHQUFHLENBQUNFLElBQUksQ0FBQ0ksQ0FBQztnQkFDbEMsT0FBTztvQkFDTEwsR0FBRyxDQUFDQyxJQUFJLEdBQUdGLEdBQUcsQ0FBQ0UsSUFBSSxDQUFDTSxDQUFDO2dCQUN2QjtZQUNGO1FBQ0Y7UUFFQVosS0FBS2EsSUFBSSxDQUFDUjtJQUNaO0lBRUEsT0FBT0w7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNYyxnQkFBZ0IsQ0FBQzdCLFFBQTJCOEIsWUFDdkQsSUFBSTdCLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDcEIsTUFBTUMsV0FBVyxJQUFJUCxTQUFTO1lBQzVCUSxhQUFhUCxPQUFPUSxHQUFHLENBQUM7WUFDeEJDLFFBQVFULE9BQU9RLEdBQUcsQ0FBQztRQUNyQjtRQUNBLE1BQU0sRUFBQ0UsZ0JBQWdCdUIsY0FBYyxFQUFDLEdBQUcvQjtRQUN6QyxNQUFNZ0MsZ0JBQWdCO1lBQUMsR0FBR2hDLE1BQU07UUFBQTtRQUVoQyxJQUFHOEIsV0FBVztZQUNaRSxjQUFjQyxpQkFBaUIsR0FBR0g7UUFDcEM7UUFFQSxJQUFHLENBQUNDLGdCQUFnQjtZQUNsQkMsY0FBY3hCLGNBQWMsR0FBRztRQUNqQztRQUVBLE1BQU0wQixPQUFPLEVBQUU7UUFFZjlCLFNBQVMrQixLQUFLLENBQUNILGVBQWUsQ0FBQ3RCLE9BQWMwQjtZQUMzQyxJQUFHMUIsT0FBTztnQkFDUixPQUFPUCxPQUFPTztZQUNoQjtZQUVBd0IsS0FBS04sSUFBSSxJQUFLaEIsZ0JBQWdCd0IsV0FBVyxFQUFFO1lBRTNDLE1BQU0sRUFBQ0Msa0JBQWtCQyxPQUFPLEVBQUMsR0FBR0Y7WUFFcEMsSUFBR0UsWUFBWUMsV0FBVztnQkFDeEIsT0FBT1YsY0FBYzdCLFFBQVFzQztZQUMvQjtZQUVBLE9BQU9wQyxRQUFRZ0M7UUFDakI7SUFDRixHQUFHO0FBRUwsT0FBTyxNQUFNTSxZQUFZLENBQUN4QyxTQUN4QixJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1FBQ3BCLE1BQU1DLFdBQVcsSUFBSVAsU0FBUztZQUM1QlEsYUFBYVAsT0FBT1EsR0FBRyxDQUFDO1lBQ3hCQyxRQUFRVCxPQUFPUSxHQUFHLENBQUM7UUFDckI7UUFFQUYsU0FBU3FDLE9BQU8sQ0FBQ3pDLFFBQVEsQ0FBQ1UsT0FBTzBCO1lBQy9CLElBQUcxQixPQUFPO2dCQUNSLE9BQU9QLE9BQU9PO1lBQ2hCO1lBQ0EsT0FBT1IsUUFBUWtDO1FBQ2pCO0lBQ0YsR0FBRztBQUVMLE9BQU8sTUFBTU0sZUFBZSxDQUFDMUMsU0FDM0IsSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUNwQixNQUFNQyxXQUFXLElBQUlQLFNBQVM7WUFDNUJRLGFBQWFQLE9BQU9RLEdBQUcsQ0FBQztZQUN4QkMsUUFBUVQsT0FBT1EsR0FBRyxDQUFDO1FBQ3JCO1FBRUFGLFNBQVN1QyxVQUFVLENBQUMzQyxRQUFRLENBQUNVLE9BQWMwQjtZQUN6QyxJQUFHMUIsT0FBTztnQkFDUixPQUFPUCxPQUFPTztZQUNoQjtZQUNBLE9BQU9SLFFBQVFrQztRQUNqQjtJQUNGLEdBQUc7QUFFTCxPQUFPLE1BQU1RLGdCQUFnQixDQUFDNUMsU0FDNUIsSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUNwQixNQUFNQyxXQUFXLElBQUlQLFNBQVM7WUFDNUJRLGFBQWFQLE9BQU9RLEdBQUcsQ0FBQztZQUN4QkMsUUFBUVQsT0FBT1EsR0FBRyxDQUFDO1FBQ3JCO1FBRUFGLFNBQVN5QyxjQUFjLENBQUM3QyxRQUFRLENBQUNVLE9BQWMwQjtZQUM3QyxJQUFHMUIsT0FBTztnQkFDUixPQUFPUCxPQUFPTztZQUNoQjtZQUNBLE9BQU9SLFFBQVFrQztRQUNqQjtJQUNGLEdBQUc7QUFFTCxPQUFPLE1BQU1VLFlBQVksQ0FBQzlDLFNBQ3hCLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDcEIsTUFBTUMsV0FBVyxJQUFJUCxTQUFTO1lBQzVCUSxhQUFhUCxPQUFPUSxHQUFHLENBQUM7WUFDeEJDLFFBQVFULE9BQU9RLEdBQUcsQ0FBQztRQUNyQjtRQUVBRixTQUFTMkMsVUFBVSxDQUFDL0MsUUFBUSxDQUFDVSxPQUFPMEI7WUFDbEMsSUFBRzFCLE9BQU87Z0JBQ1IsT0FBT1AsT0FBT087WUFDaEI7WUFDQSxPQUFPUixRQUFRa0M7UUFDakI7SUFDRixHQUFHIn0=
@@ -6,3 +6,4 @@ import { SendEmailCommandInput, SendEmailCommandOutput } from '@aws-sdk/client-s
6
6
  import { EmailType } from '../types/email.types.js';
7
7
  export declare const sesSend: (params: SendEmailCommandInput) => Promise<SendEmailCommandOutput>;
8
8
  export declare const sendEmail: (params: EmailType) => Promise<boolean>;
9
+ //# sourceMappingURL=email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/actions/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAM,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAKlD,eAAO,MAAM,OAAO,GAAI,QAAQ,qBAAqB,KAAG,OAAO,CAAC,sBAAsB,CAiBlF,CAAC;AAEL,eAAO,MAAM,SAAS,GAAI,QAAQ,SAAS,KAAG,OAAO,CAAC,OAAO,CAoC5D,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { SES } from '@aws-sdk/client-ses';
5
+ import { Config } from '../config.js';
6
+ import { logError } from '../utils/analyticsUtils.js';
7
+ const eventCategory = 'email';
8
+ export const sesSend = (params)=>new Promise((resolve, reject)=>{
9
+ const ses = new SES({
10
+ credentials: {
11
+ accessKeyId: Config.get('aws.credentials.accessKeyId'),
12
+ secretAccessKey: Config.get('aws.credentials.secretAccessKey')
13
+ },
14
+ region: Config.get('aws.region')
15
+ });
16
+ ses.sendEmail(params, (error, response)=>{
17
+ if (error) {
18
+ return reject(error);
19
+ }
20
+ return resolve(response);
21
+ });
22
+ });
23
+ export const sendEmail = (params)=>{
24
+ const { context, html, subject, text, user } = params;
25
+ const to = [
26
+ user.email
27
+ ];
28
+ const emailParams = {
29
+ Destination: {
30
+ ToAddresses: to
31
+ },
32
+ Message: {
33
+ Body: {
34
+ Html: {
35
+ Data: html
36
+ },
37
+ Text: {
38
+ Data: text
39
+ }
40
+ },
41
+ Subject: {
42
+ Data: subject
43
+ }
44
+ },
45
+ Source: `"${context.config.details.supportName}" <${context.config.details.supportEmail}>`
46
+ };
47
+ return sesSend(emailParams).then(()=>true).catch((error)=>{
48
+ logError({
49
+ action: 'sendEmail',
50
+ category: eventCategory
51
+ }, error, context);
52
+ return false;
53
+ });
54
+ };
55
+
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvZW1haWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7U2VuZEVtYWlsQ29tbWFuZElucHV0LCBTZW5kRW1haWxDb21tYW5kT3V0cHV0LCBTRVN9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZXMnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7RW1haWxUeXBlfSBmcm9tICcuLi90eXBlcy9lbWFpbC50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdlbWFpbCc7XG5cbmV4cG9ydCBjb25zdCBzZXNTZW5kID0gKHBhcmFtczogU2VuZEVtYWlsQ29tbWFuZElucHV0KTogUHJvbWlzZTxTZW5kRW1haWxDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2VzID0gbmV3IFNFUyh7XG4gICAgICBjcmVkZW50aWFsczoge1xuICAgICAgICBhY2Nlc3NLZXlJZDogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzLmFjY2Vzc0tleUlkJyksXG4gICAgICAgIHNlY3JldEFjY2Vzc0tleTogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzLnNlY3JldEFjY2Vzc0tleScpXG4gICAgICB9LFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIHNlcy5zZW5kRW1haWwocGFyYW1zLCAoZXJyb3I6IEVycm9yLCByZXNwb25zZTogU2VuZEVtYWlsQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzZW5kRW1haWwgPSAocGFyYW1zOiBFbWFpbFR5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbnRleHQsXG4gICAgaHRtbCxcbiAgICBzdWJqZWN0LFxuICAgIHRleHQsXG4gICAgdXNlclxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHRvID0gW3VzZXIuZW1haWxdO1xuICBjb25zdCBlbWFpbFBhcmFtczogU2VuZEVtYWlsQ29tbWFuZElucHV0ID0ge1xuICAgIERlc3RpbmF0aW9uOiB7VG9BZGRyZXNzZXM6IHRvfSxcbiAgICBNZXNzYWdlOiB7XG4gICAgICBCb2R5OiB7XG4gICAgICAgIEh0bWw6IHtEYXRhOiBodG1sfSxcbiAgICAgICAgVGV4dDoge0RhdGE6IHRleHR9XG4gICAgICB9LFxuICAgICAgU3ViamVjdDoge0RhdGE6IHN1YmplY3R9XG4gICAgfSxcbiAgICBTb3VyY2U6IGBcIiR7Y29udGV4dC5jb25maWcuZGV0YWlscy5zdXBwb3J0TmFtZX1cIiA8JHtjb250ZXh0LmNvbmZpZy5kZXRhaWxzLnN1cHBvcnRFbWFpbH0+YFxuICB9O1xuXG4gIHJldHVybiBzZXNTZW5kKGVtYWlsUGFyYW1zKVxuICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiAnc2VuZEVtYWlsJyxcbiAgICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcixcbiAgICAgICAgY29udGV4dFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xufTtcbiJdLCJuYW1lcyI6WyJTRVMiLCJDb25maWciLCJsb2dFcnJvciIsImV2ZW50Q2F0ZWdvcnkiLCJzZXNTZW5kIiwicGFyYW1zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXMiLCJjcmVkZW50aWFscyIsImFjY2Vzc0tleUlkIiwiZ2V0Iiwic2VjcmV0QWNjZXNzS2V5IiwicmVnaW9uIiwic2VuZEVtYWlsIiwiZXJyb3IiLCJyZXNwb25zZSIsImNvbnRleHQiLCJodG1sIiwic3ViamVjdCIsInRleHQiLCJ1c2VyIiwidG8iLCJlbWFpbCIsImVtYWlsUGFyYW1zIiwiRGVzdGluYXRpb24iLCJUb0FkZHJlc3NlcyIsIk1lc3NhZ2UiLCJCb2R5IiwiSHRtbCIsIkRhdGEiLCJUZXh0IiwiU3ViamVjdCIsIlNvdXJjZSIsImNvbmZpZyIsImRldGFpbHMiLCJzdXBwb3J0TmFtZSIsInN1cHBvcnRFbWFpbCIsInRoZW4iLCJjYXRjaCIsImFjdGlvbiIsImNhdGVnb3J5Il0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUF1REEsR0FBRyxRQUFPLHNCQUFzQjtBQUV2RixTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUVwQyxTQUFRQyxRQUFRLFFBQU8sNkJBQTZCO0FBRXBELE1BQU1DLGdCQUF3QjtBQUU5QixPQUFPLE1BQU1DLFVBQVUsQ0FBQ0MsU0FDdEIsSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUNwQixNQUFNQyxNQUFNLElBQUlULElBQUk7WUFDbEJVLGFBQWE7Z0JBQ1hDLGFBQWFWLE9BQU9XLEdBQUcsQ0FBQztnQkFDeEJDLGlCQUFpQlosT0FBT1csR0FBRyxDQUFDO1lBQzlCO1lBQ0FFLFFBQVFiLE9BQU9XLEdBQUcsQ0FBQztRQUNyQjtRQUVBSCxJQUFJTSxTQUFTLENBQUNWLFFBQVEsQ0FBQ1csT0FBY0M7WUFDbkMsSUFBR0QsT0FBTztnQkFDUixPQUFPUixPQUFPUTtZQUNoQjtZQUVBLE9BQU9ULFFBQVFVO1FBQ2pCO0lBQ0YsR0FBRztBQUVMLE9BQU8sTUFBTUYsWUFBWSxDQUFDVjtJQUN4QixNQUFNLEVBQ0phLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsSUFBSSxFQUNMLEdBQUdqQjtJQUVKLE1BQU1rQixLQUFLO1FBQUNELEtBQUtFLEtBQUs7S0FBQztJQUN2QixNQUFNQyxjQUFxQztRQUN6Q0MsYUFBYTtZQUFDQyxhQUFhSjtRQUFFO1FBQzdCSyxTQUFTO1lBQ1BDLE1BQU07Z0JBQ0pDLE1BQU07b0JBQUNDLE1BQU1aO2dCQUFJO2dCQUNqQmEsTUFBTTtvQkFBQ0QsTUFBTVY7Z0JBQUk7WUFDbkI7WUFDQVksU0FBUztnQkFBQ0YsTUFBTVg7WUFBTztRQUN6QjtRQUNBYyxRQUFRLENBQUMsQ0FBQyxFQUFFaEIsUUFBUWlCLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDQyxXQUFXLENBQUMsR0FBRyxFQUFFbkIsUUFBUWlCLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzVGO0lBRUEsT0FBT2xDLFFBQVFxQixhQUNaYyxJQUFJLENBQUMsSUFBTSxNQUNYQyxLQUFLLENBQUMsQ0FBQ3hCO1FBQ05kLFNBQ0U7WUFDRXVDLFFBQVE7WUFDUkMsVUFBVXZDO1FBQ1osR0FDQWEsT0FDQUU7UUFHRixPQUFPO0lBQ1Q7QUFDSixFQUFFIn0=
@@ -17,3 +17,4 @@ export declare const linkFiles: (context: ApiContext, postDocId: string, files:
17
17
  export declare const updateFiles: (context: ApiContext, postDocId: string, files: FileType[]) => Promise<any>;
18
18
  export declare const encodeBase64: (buffer: Buffer) => string;
19
19
  export declare const decodeBase64: (dataString: string) => any;
20
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/actions/files.ts"],"names":[],"mappings":"AAYA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAUnD,eAAO,MAAM,SAAS,EAAE,MAAuC,CAAC;AAEhE,eAAO,MAAM,UAAU,+CAAwE,CAAC;AAEhG,eAAO,MAAM,UAAU,GAAI,SAAS,UAAU,EAAE,MAAM,QAAQ,iBAa7D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAS,UAAU,EAAE,MAAM,QAAQ,KAAG,OAAO,CAAC,QAAQ,CA8BhF,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,YAAO,EAAE,MAAM,QAAQ,EAAE,QAAQ,MAAM,iBAqCjE,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,SAAS,UAAU,EAAE,MAAM,QAAQ,KAAG,OAAO,CAAC,QAAQ,CAkB7E,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,GAAG,KAAG,SAmB9C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAO,MAAW,KAAG,OAAO,CAAC,SAAS,EAAE,CAMtE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,QAAO,MAAW,KAAG,OAAO,CAAC,SAAS,EAAE,CAOrF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAO,MAAW,KAAG,OAAO,CAAC,GAAG,EAAE,CA0BlE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,QAAO,MAAW,KAAG,OAAO,CAAC,GAAG,EAAE,CA2BjF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAA6C,CAAC;AAElH,eAAO,MAAM,SAAS,GAAI,SAAS,UAAU,EAAE,WAAW,MAAM,EAAE,OAAO,QAAQ,EAAE,KAAG,OAAO,CAAC,GAAG,CAI9F,CAAC;AAEJ,eAAO,MAAM,WAAW,GAAI,SAAS,UAAU,EAAE,WAAW,MAAM,EAAE,OAAO,QAAQ,EAAE,KAAG,OAAO,CAAC,GAAG,CAqClG,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAAgD,CAAC;AAE/F,eAAO,MAAM,YAAY,GAAI,YAAY,MAAM,KAAG,GAiBjD,CAAC"}