@nlabs/reaktor 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/coverage/actions/index.html +21 -36
  2. package/coverage/actions/notifications.ts.html +223 -0
  3. package/coverage/actions/posts.ts.html +2356 -0
  4. package/coverage/adapters/arangoAdapter.ts.html +170 -20
  5. package/coverage/adapters/fileAdapter.ts.html +445 -0
  6. package/coverage/adapters/index.html +72 -42
  7. package/coverage/adapters/postAdapter.ts.html +436 -0
  8. package/coverage/adapters/reaktorAdapter.ts.html +201 -18
  9. package/coverage/adapters/tagAdapter.ts.html +274 -25
  10. package/coverage/adapters/userAdapter.ts.html +829 -0
  11. package/coverage/analyticsUtils.ts.html +286 -0
  12. package/coverage/config.ts.html +766 -0
  13. package/coverage/index.html +81 -51
  14. package/coverage/mocks/group.ts.html +5 -5
  15. package/coverage/mocks/image.ts.html +18 -12
  16. package/coverage/mocks/index.html +37 -7
  17. package/coverage/mocks/post.ts.html +8 -8
  18. package/coverage/mocks/tag.ts.html +2 -2
  19. package/coverage/mocks/user.ts.html +18 -15
  20. package/coverage/testUtils.ts.html +1309 -0
  21. package/coverage/translationQueue.ts.html +592 -0
  22. package/coverage/types/error.types.ts.html +148 -0
  23. package/coverage/types/index.html +2 -2
  24. package/coverage/utils/adapterUtils.ts.html +39 -27
  25. package/coverage/utils/analyticsUtils.ts.html +35 -41
  26. package/coverage/utils/authUtils.ts.html +328 -0
  27. package/coverage/utils/dbI18n.ts.html +280 -0
  28. package/coverage/utils/googleTranslate.ts.html +385 -0
  29. package/coverage/utils/index.html +29 -44
  30. package/coverage/utils/localeUtils.ts.html +193 -0
  31. package/coverage/utils/sessionUtils.ts.html +211 -0
  32. package/coverage/utils/testUtils.ts.html +1309 -0
  33. package/lex.config.mjs +34 -0
  34. package/lib/actions/apps.d.ts +25 -0
  35. package/lib/actions/apps.js +11 -11
  36. package/lib/actions/connections.d.ts +5 -0
  37. package/lib/actions/connections.js +6 -6
  38. package/lib/actions/content.d.ts +13 -0
  39. package/lib/actions/content.js +9 -9
  40. package/lib/actions/conversations.d.ts +16 -0
  41. package/lib/actions/conversations.js +17 -17
  42. package/lib/actions/dynamodb.d.ts +12 -0
  43. package/lib/actions/dynamodb.js +2 -2
  44. package/lib/actions/email.d.ts +8 -0
  45. package/lib/actions/email.js +2 -2
  46. package/lib/actions/files.d.ts +19 -0
  47. package/lib/actions/files.js +3 -3
  48. package/lib/actions/groups.d.ts +13 -0
  49. package/lib/actions/groups.js +15 -15
  50. package/lib/actions/images.d.ts +33 -0
  51. package/lib/actions/images.js +22 -22
  52. package/lib/actions/index.d.ts +27 -0
  53. package/lib/actions/index.js +2 -2
  54. package/lib/actions/ios.d.ts +7 -0
  55. package/lib/actions/ios.js +4 -4
  56. package/lib/actions/locations.d.ts +6 -0
  57. package/lib/actions/locations.js +3 -3
  58. package/lib/actions/messages.d.ts +13 -0
  59. package/lib/actions/messages.js +3 -3
  60. package/lib/actions/notifications.d.ts +9 -0
  61. package/lib/actions/notifications.js +2 -2
  62. package/lib/actions/payments.d.ts +12 -0
  63. package/lib/actions/payments.js +6 -6
  64. package/lib/actions/posts.d.ts +25 -0
  65. package/lib/actions/posts.js +30 -30
  66. package/lib/actions/profiles.d.ts +4 -0
  67. package/lib/actions/profiles.js +4 -4
  68. package/lib/actions/reactions.d.ts +32 -0
  69. package/lib/actions/reactions.js +16 -16
  70. package/lib/actions/s3.d.ts +11 -0
  71. package/lib/actions/s3.js +2 -2
  72. package/lib/actions/search.d.ts +3 -0
  73. package/lib/actions/search.js +3 -3
  74. package/lib/actions/sms.d.ts +2 -0
  75. package/lib/actions/sms.js +2 -2
  76. package/lib/actions/statistics.d.ts +4 -0
  77. package/lib/actions/statistics.js +4 -4
  78. package/lib/actions/subscriptions.d.ts +7 -0
  79. package/lib/actions/subscriptions.js +6 -6
  80. package/lib/actions/tags.d.ts +34 -0
  81. package/lib/actions/tags.js +6 -6
  82. package/lib/actions/users.d.ts +73 -0
  83. package/lib/actions/users.js +45 -42
  84. package/lib/actions/websockets.d.ts +20 -0
  85. package/lib/actions/websockets.js +8 -8
  86. package/lib/adapters/arangoAdapter.d.ts +8 -0
  87. package/lib/adapters/arangoAdapter.js +2 -2
  88. package/lib/adapters/contentAdapter.d.ts +8 -0
  89. package/lib/adapters/contentAdapter.js +2 -2
  90. package/lib/adapters/fileAdapter.d.ts +9 -0
  91. package/lib/adapters/fileAdapter.js +2 -2
  92. package/lib/adapters/imageAdapter.d.ts +8 -0
  93. package/lib/adapters/imageAdapter.js +2 -2
  94. package/lib/adapters/index.d.ts +9 -0
  95. package/lib/adapters/index.js +2 -0
  96. package/lib/adapters/messageAdapter.d.ts +8 -0
  97. package/lib/adapters/messageAdapter.js +2 -2
  98. package/lib/adapters/postAdapter.d.ts +8 -0
  99. package/lib/adapters/postAdapter.js +2 -2
  100. package/lib/adapters/reaktorAdapter.d.ts +16 -0
  101. package/lib/adapters/reaktorAdapter.js +2 -2
  102. package/lib/adapters/tagAdapter.d.ts +9 -0
  103. package/lib/adapters/tagAdapter.js +2 -2
  104. package/lib/adapters/userAdapter.d.ts +13 -0
  105. package/lib/adapters/userAdapter.js +2 -2
  106. package/lib/config.d.ts +57 -0
  107. package/lib/config.js +2 -2
  108. package/lib/handlers/graphqlHandler.d.ts +4 -0
  109. package/lib/handlers/graphqlHandler.js +2 -2
  110. package/lib/index.d.ts +19 -0
  111. package/lib/index.js +2 -2
  112. package/lib/lambdas/actions/websockets.d.ts +7 -0
  113. package/lib/lambdas/actions/websockets.js +6 -6
  114. package/lib/lambdas/authorizer.d.ts +20 -0
  115. package/lib/lambdas/authorizer.js +2 -2
  116. package/lib/lambdas/connection.d.ts +12 -0
  117. package/lib/lambdas/connection.js +2 -2
  118. package/lib/lambdas/utils/message.d.ts +1 -0
  119. package/lib/lambdas/utils/websocket.d.ts +7 -0
  120. package/lib/lambdas/utils/websocket.js +2 -2
  121. package/lib/mocks/conversation.d.ts +8 -0
  122. package/lib/mocks/file.d.ts +11 -0
  123. package/lib/mocks/group.d.ts +17 -0
  124. package/lib/mocks/group.js +2 -2
  125. package/lib/mocks/image.d.ts +3 -0
  126. package/lib/mocks/image.js +2 -2
  127. package/lib/mocks/post.d.ts +38 -0
  128. package/lib/mocks/post.js +2 -2
  129. package/lib/mocks/tag.d.ts +2 -0
  130. package/lib/mocks/tag.js +1 -1
  131. package/lib/mocks/user.d.ts +4 -0
  132. package/lib/mocks/user.js +2 -2
  133. package/lib/mutations/content.d.ts +2 -0
  134. package/lib/mutations/content.js +2 -0
  135. package/lib/mutations/index.d.ts +11 -0
  136. package/lib/mutations/index.js +2 -2
  137. package/lib/mutations/locations.d.ts +2 -0
  138. package/lib/mutations/locations.js +2 -2
  139. package/lib/mutations/messages.d.ts +2 -0
  140. package/lib/mutations/messages.js +2 -2
  141. package/lib/mutations/posts.d.ts +2 -0
  142. package/lib/mutations/posts.js +2 -2
  143. package/lib/mutations/profiles.d.ts +2 -0
  144. package/lib/mutations/profiles.js +2 -2
  145. package/lib/mutations/reactions.d.ts +2 -0
  146. package/lib/mutations/reactions.js +2 -2
  147. package/lib/mutations/statistics.d.ts +2 -0
  148. package/lib/mutations/statistics.js +2 -2
  149. package/lib/mutations/subscriptions.d.ts +2 -0
  150. package/lib/mutations/subscriptions.js +2 -2
  151. package/lib/mutations/tags.d.ts +2 -0
  152. package/lib/mutations/tags.js +2 -2
  153. package/lib/mutations/users.d.ts +1 -0
  154. package/lib/mutations/users.js +2 -2
  155. package/lib/objectTypes/app.d.ts +3 -0
  156. package/lib/objectTypes/app.js +2 -2
  157. package/lib/objectTypes/bankAccount.d.ts +1 -0
  158. package/lib/objectTypes/connection.d.ts +1 -0
  159. package/lib/objectTypes/connection.js +2 -2
  160. package/lib/objectTypes/content.d.ts +2 -0
  161. package/lib/objectTypes/content.js +2 -0
  162. package/lib/objectTypes/conversation.d.ts +2 -0
  163. package/lib/objectTypes/conversation.js +2 -2
  164. package/lib/objectTypes/creditCard.d.ts +1 -0
  165. package/lib/objectTypes/document.d.ts +1 -0
  166. package/lib/objectTypes/error.d.ts +1 -0
  167. package/lib/objectTypes/external.d.ts +1 -0
  168. package/lib/objectTypes/external.js +2 -2
  169. package/lib/objectTypes/file.d.ts +2 -0
  170. package/lib/objectTypes/file.js +2 -2
  171. package/lib/objectTypes/filter.d.ts +1 -0
  172. package/lib/objectTypes/group.d.ts +3 -0
  173. package/lib/objectTypes/group.js +2 -2
  174. package/lib/objectTypes/iapSubscription.d.ts +1 -0
  175. package/lib/objectTypes/image.d.ts +6 -0
  176. package/lib/objectTypes/image.js +2 -2
  177. package/lib/objectTypes/index.d.ts +26 -0
  178. package/lib/objectTypes/index.js +2 -2
  179. package/lib/objectTypes/location.d.ts +2 -0
  180. package/lib/objectTypes/location.js +2 -2
  181. package/lib/objectTypes/message.d.ts +2 -0
  182. package/lib/objectTypes/message.js +2 -2
  183. package/lib/objectTypes/passcode.d.ts +1 -0
  184. package/lib/objectTypes/passcode.js +2 -2
  185. package/lib/objectTypes/plan.d.ts +2 -0
  186. package/lib/objectTypes/plan.js +2 -2
  187. package/lib/objectTypes/post.d.ts +2 -0
  188. package/lib/objectTypes/post.js +2 -2
  189. package/lib/objectTypes/profile.d.ts +3 -0
  190. package/lib/objectTypes/profile.js +2 -2
  191. package/lib/objectTypes/reaction.d.ts +2 -0
  192. package/lib/objectTypes/reaction.js +2 -2
  193. package/lib/objectTypes/relation.d.ts +1 -0
  194. package/lib/objectTypes/relation.js +2 -2
  195. package/lib/objectTypes/search.d.ts +1 -0
  196. package/lib/objectTypes/search.js +2 -2
  197. package/lib/objectTypes/statistics.d.ts +1 -0
  198. package/lib/objectTypes/statistics.js +2 -2
  199. package/lib/objectTypes/subscription.d.ts +2 -0
  200. package/lib/objectTypes/subscription.js +2 -2
  201. package/lib/objectTypes/tag.d.ts +2 -0
  202. package/lib/objectTypes/tag.js +2 -2
  203. package/lib/objectTypes/user.d.ts +4 -0
  204. package/lib/objectTypes/user.js +2 -2
  205. package/lib/queries/content.d.ts +2 -0
  206. package/lib/queries/content.js +2 -0
  207. package/lib/queries/index.d.ts +10 -0
  208. package/lib/queries/index.js +2 -2
  209. package/lib/queries/locations.d.ts +2 -0
  210. package/lib/queries/locations.js +2 -2
  211. package/lib/queries/messages.d.ts +2 -0
  212. package/lib/queries/messages.js +2 -2
  213. package/lib/queries/posts.d.ts +2 -0
  214. package/lib/queries/posts.js +2 -2
  215. package/lib/queries/reactions.d.ts +2 -0
  216. package/lib/queries/reactions.js +2 -2
  217. package/lib/queries/statistics.d.ts +2 -0
  218. package/lib/queries/statistics.js +2 -2
  219. package/lib/queries/subscriptions.d.ts +2 -0
  220. package/lib/queries/subscriptions.js +2 -2
  221. package/lib/queries/tags.d.ts +2 -0
  222. package/lib/queries/tags.js +2 -2
  223. package/lib/queries/users.d.ts +1 -0
  224. package/lib/queries/users.js +2 -2
  225. package/lib/templates/email/layout.d.ts +2 -0
  226. package/lib/templates/email/passwordForgot.d.ts +2 -0
  227. package/lib/templates/email/passwordRecovery.d.ts +2 -0
  228. package/lib/templates/email/verifyEmail.d.ts +2 -0
  229. package/lib/templates/email/welcome.d.ts +2 -0
  230. package/lib/templates/sms/passwordForgot.d.ts +2 -0
  231. package/lib/templates/sms/passwordRecovery.d.ts +2 -0
  232. package/lib/templates/sms/verifyEmail.d.ts +2 -0
  233. package/lib/templates/sms/verifyPhone.d.ts +2 -0
  234. package/lib/templates/sms/welcome.d.ts +2 -0
  235. package/lib/types/apps.types.d.ts +50 -0
  236. package/lib/types/apps.types.js +1 -1
  237. package/lib/types/arangodb.types.d.ts +38 -0
  238. package/lib/types/auth.types.d.ts +15 -0
  239. package/lib/types/connections.types.d.ts +9 -0
  240. package/lib/types/content.types.d.ts +31 -0
  241. package/lib/types/conversations.types.d.ts +31 -0
  242. package/lib/types/email.types.d.ts +17 -0
  243. package/lib/types/error.types.d.ts +21 -0
  244. package/lib/types/files.types.d.ts +27 -0
  245. package/lib/types/google.types.d.ts +33 -0
  246. package/lib/types/groups.types.d.ts +22 -0
  247. package/lib/types/images.types.d.ts +56 -0
  248. package/lib/types/index.d.ts +26 -0
  249. package/lib/types/index.js +2 -2
  250. package/lib/types/locations.types.d.ts +22 -0
  251. package/lib/types/messages.types.d.ts +20 -0
  252. package/lib/types/notifications.types.d.ts +23 -0
  253. package/lib/types/payments.types.d.ts +113 -0
  254. package/lib/types/posts.types.d.ts +32 -0
  255. package/lib/types/profiles.types.d.ts +20 -0
  256. package/lib/types/statistics.types.d.ts +3 -0
  257. package/lib/types/tags.types.d.ts +19 -0
  258. package/lib/types/users.types.d.ts +110 -0
  259. package/lib/types/websockets.types.d.ts +22 -0
  260. package/lib/utils/adapterUtils.d.ts +5 -0
  261. package/lib/utils/analyticsUtils.d.ts +25 -0
  262. package/lib/utils/analyticsUtils.js +2 -2
  263. package/lib/utils/arangodbUtils.d.ts +70 -0
  264. package/lib/utils/arangodbUtils.js +3 -3
  265. package/lib/utils/authUtils.d.ts +23 -0
  266. package/lib/utils/authUtils.js +2 -2
  267. package/lib/utils/contextUtils.d.ts +3 -0
  268. package/lib/utils/contextUtils.js +1 -1
  269. package/lib/utils/dbI18n.d.ts +10 -0
  270. package/lib/utils/dbI18n.example.d.ts +20 -0
  271. package/lib/utils/dbI18n.example.js +3 -3
  272. package/lib/utils/dbI18n.js +2 -2
  273. package/lib/utils/googleTranslate.d.ts +6 -0
  274. package/lib/utils/googleTranslate.js +2 -2
  275. package/lib/utils/graphqlUtils.d.ts +10 -0
  276. package/lib/utils/graphqlUtils.js +2 -2
  277. package/lib/utils/index.d.ts +18 -0
  278. package/lib/utils/index.js +2 -2
  279. package/lib/utils/languageDetection.d.ts +8 -0
  280. package/lib/utils/languageDetection.js +1 -1
  281. package/lib/utils/localeUtils.d.ts +11 -0
  282. package/lib/utils/localeUtils.example.d.ts +5 -0
  283. package/lib/utils/localeUtils.example.js +2 -2
  284. package/lib/utils/localeUtils.js +1 -1
  285. package/lib/utils/middlewareUtils.d.ts +2 -0
  286. package/lib/utils/middlewareUtils.js +2 -2
  287. package/lib/utils/sessionUtils.d.ts +18 -0
  288. package/lib/utils/sessionUtils.js +2 -2
  289. package/lib/utils/stripeUtils.d.ts +7 -0
  290. package/lib/utils/stripeUtils.js +2 -2
  291. package/lib/utils/templateUtils.d.ts +3 -0
  292. package/lib/utils/testUtils.d.ts +95 -0
  293. package/lib/utils/testUtils.js +2 -2
  294. package/lib/utils/translationQueue.d.ts +29 -0
  295. package/lib/utils/translationQueue.example.d.ts +33 -0
  296. package/lib/utils/translationQueue.example.js +2 -2
  297. package/lib/utils/translationQueue.js +2 -2
  298. package/package.json +22 -21
  299. package/tsconfig.build.json +21 -0
  300. package/tsconfig.lint.json +33 -0
  301. package/tsconfig.test.json +31 -0
  302. package/dist/actions/apps.js +0 -242
  303. package/dist/actions/connections.js +0 -90
  304. package/dist/actions/conversations.js +0 -350
  305. package/dist/actions/dynamodb.js +0 -150
  306. package/dist/actions/email.js +0 -152
  307. package/dist/actions/files.js +0 -283
  308. package/dist/actions/groups.js +0 -292
  309. package/dist/actions/images.js +0 -735
  310. package/dist/actions/index.js +0 -66
  311. package/dist/actions/ios.js +0 -164
  312. package/dist/actions/locations.js +0 -122
  313. package/dist/actions/messages.js +0 -208
  314. package/dist/actions/notifications.js +0 -59
  315. package/dist/actions/payments.js +0 -497
  316. package/dist/actions/personas.js +0 -110
  317. package/dist/actions/posts.js +0 -595
  318. package/dist/actions/reactions.js +0 -322
  319. package/dist/actions/s3.js +0 -133
  320. package/dist/actions/search.js +0 -90
  321. package/dist/actions/sms.js +0 -108
  322. package/dist/actions/statistics.js +0 -62
  323. package/dist/actions/subscription.js +0 -220
  324. package/dist/actions/tags.js +0 -292
  325. package/dist/actions/users.js +0 -784
  326. package/dist/actions/websockets.js +0 -174
  327. package/dist/adapters/arangoAdapter.js +0 -46
  328. package/dist/adapters/fileAdapter.js +0 -76
  329. package/dist/adapters/imageAdapter.js +0 -40
  330. package/dist/adapters/messageAdapter.js +0 -49
  331. package/dist/adapters/postAdapter.js +0 -70
  332. package/dist/adapters/reaktorAdapter.js +0 -44
  333. package/dist/adapters/tagAdapter.js +0 -50
  334. package/dist/adapters/userAdapter.js +0 -115
  335. package/dist/config.js +0 -125
  336. package/dist/index.js +0 -66
  337. package/dist/lambdas/actions/websockets.js +0 -132
  338. package/dist/lambdas/authorizer.js +0 -67
  339. package/dist/lambdas/connection.js +0 -91
  340. package/dist/lambdas/utils/message.js +0 -42
  341. package/dist/lambdas/utils/websocket.js +0 -105
  342. package/dist/mocks/conversation.js +0 -35
  343. package/dist/mocks/file.js +0 -38
  344. package/dist/mocks/group.js +0 -47
  345. package/dist/mocks/image.js +0 -44
  346. package/dist/mocks/nlabs.png +0 -0
  347. package/dist/mocks/post.js +0 -55
  348. package/dist/mocks/tag.js +0 -37
  349. package/dist/mocks/user.js +0 -88
  350. package/dist/mutations/index.js +0 -26
  351. package/dist/mutations/locations.js +0 -44
  352. package/dist/mutations/messages.js +0 -86
  353. package/dist/mutations/personas.js +0 -100
  354. package/dist/mutations/posts.js +0 -53
  355. package/dist/mutations/reactions.js +0 -51
  356. package/dist/mutations/statistics.js +0 -39
  357. package/dist/mutations/subscriptions.js +0 -56
  358. package/dist/mutations/tags.js +0 -120
  359. package/dist/mutations/users.js +0 -116
  360. package/dist/objectTypes/app.js +0 -173
  361. package/dist/objectTypes/bankAccount.js +0 -76
  362. package/dist/objectTypes/connection.js +0 -48
  363. package/dist/objectTypes/conversation.js +0 -77
  364. package/dist/objectTypes/creditCard.js +0 -86
  365. package/dist/objectTypes/document.js +0 -46
  366. package/dist/objectTypes/error.js +0 -46
  367. package/dist/objectTypes/external.js +0 -74
  368. package/dist/objectTypes/file.js +0 -100
  369. package/dist/objectTypes/filter.js +0 -43
  370. package/dist/objectTypes/group.js +0 -123
  371. package/dist/objectTypes/iapSubscription.js +0 -40
  372. package/dist/objectTypes/image.js +0 -129
  373. package/dist/objectTypes/index.js +0 -68
  374. package/dist/objectTypes/location.js +0 -109
  375. package/dist/objectTypes/message.js +0 -96
  376. package/dist/objectTypes/passcode.js +0 -42
  377. package/dist/objectTypes/persona.js +0 -87
  378. package/dist/objectTypes/plan.js +0 -95
  379. package/dist/objectTypes/post.js +0 -125
  380. package/dist/objectTypes/reaction.js +0 -61
  381. package/dist/objectTypes/relation.js +0 -49
  382. package/dist/objectTypes/search.js +0 -72
  383. package/dist/objectTypes/statistics.js +0 -39
  384. package/dist/objectTypes/subscription.js +0 -117
  385. package/dist/objectTypes/tag.js +0 -65
  386. package/dist/objectTypes/user.js +0 -144
  387. package/dist/queries/index.js +0 -33
  388. package/dist/queries/locations.js +0 -45
  389. package/dist/queries/messages.js +0 -52
  390. package/dist/queries/posts.js +0 -154
  391. package/dist/queries/reactions.js +0 -56
  392. package/dist/queries/statistics.js +0 -39
  393. package/dist/queries/subscriptions.js +0 -44
  394. package/dist/queries/tags.js +0 -75
  395. package/dist/queries/users.js +0 -64
  396. package/dist/templates/email/layout.js +0 -302
  397. package/dist/templates/email/passwordForgot.js +0 -38
  398. package/dist/templates/email/passwordRecovery.js +0 -35
  399. package/dist/templates/email/verifyEmail.js +0 -38
  400. package/dist/templates/email/welcome.js +0 -38
  401. package/dist/templates/sms/passwordForgot.js +0 -24
  402. package/dist/templates/sms/passwordRecovery.js +0 -24
  403. package/dist/templates/sms/verifyEmail.js +0 -24
  404. package/dist/templates/sms/verifyPhone.js +0 -24
  405. package/dist/templates/sms/welcome.js +0 -24
  406. package/dist/types/apps.js +0 -32
  407. package/dist/types/arangodb.js +0 -16
  408. package/dist/types/auth.js +0 -16
  409. package/dist/types/connections.js +0 -16
  410. package/dist/types/conversations.js +0 -16
  411. package/dist/types/email.js +0 -16
  412. package/dist/types/error.js +0 -44
  413. package/dist/types/files.js +0 -16
  414. package/dist/types/google.js +0 -16
  415. package/dist/types/groups.js +0 -16
  416. package/dist/types/images.js +0 -16
  417. package/dist/types/index.js +0 -60
  418. package/dist/types/locations.js +0 -16
  419. package/dist/types/messages.js +0 -16
  420. package/dist/types/notifications.js +0 -16
  421. package/dist/types/payments.js +0 -16
  422. package/dist/types/personas.js +0 -16
  423. package/dist/types/posts.js +0 -16
  424. package/dist/types/statistics.js +0 -16
  425. package/dist/types/tags.js +0 -16
  426. package/dist/types/users.js +0 -16
  427. package/dist/types/websockets.js +0 -16
  428. package/dist/utils/adapterUtils.js +0 -45
  429. package/dist/utils/analyticsUtils.js +0 -72
  430. package/dist/utils/arangodbUtils.js +0 -165
  431. package/dist/utils/auth.js +0 -57
  432. package/dist/utils/index.js +0 -30
  433. package/dist/utils/session.js +0 -60
  434. package/jest.config.js +0 -17
  435. package/jest.setup.js +0 -36
  436. package/lex.config.cjs +0 -13
  437. package/lib/mutations/locations.integration.js +0 -2
  438. package/lib/mutations/messages.integration.js +0 -2
  439. package/lib/mutations/posts.integration.js +0 -2
  440. package/lib/mutations/profiles.integration.js +0 -2
  441. package/lib/mutations/reactions.integration.js +0 -2
  442. package/lib/mutations/statistics.integration.js +0 -2
  443. package/lib/mutations/subscriptions.integration.js +0 -2
  444. package/lib/mutations/tags.integration.js +0 -2
  445. package/lib/mutations/users.integration.js +0 -2
  446. package/lib/queries/locations.integration.js +0 -2
  447. package/lib/queries/messages.integration.js +0 -2
  448. package/lib/queries/posts.integration.js +0 -2
  449. package/lib/queries/reactions.integration.js +0 -2
  450. package/lib/queries/tags.integration.js +0 -2
  451. package/lib/queries/users.integration.js +0 -2
@@ -1,33 +1,33 @@
1
- import{createHash as T,parseId as v}from"@nlabs/utils";import{aql as R}from"arangojs";import O from"lodash/cloneDeep";import{getImageUrl as q}from"./images";import{getDisplayName as _,getUser as N}from"./users";import{Config as b}from"../config";import{ErrorTypes as C}from"../types/error.types";import{logError as I}from"../utils/analyticsUtils";import{getLimit as P,sortIds as A,useDb as y}from"../utils/arangodbUtils";const g="conversations",Q=(e={})=>{const{from:n=0,to:a=30}=e;return{limit:P(n,a)}},G=(e,n,a)=>{const i="getConversations",{databaseName:c}=e,{limit:u}=Q(a),o=`users/${n}`,t=`FOR c, e IN 1..1 OUTBOUND "${o}" hasConversation
1
+ import{cloneDeep as O}from"@nlabs/utils/objects/clone";import{createHash as T,parseId as v}from"@nlabs/utils/parsers/strings";import{aql as R}from"arangojs";import{Config as q}from"../config.js";import{ErrorTypes as C}from"../types/error.types.js";import{logError as g}from"../utils/analyticsUtils.js";import{getLimit as b,sortIds as N,useDb as d}from"../utils/arangodbUtils.js";import{getImageUrl as _}from"./images.js";import{getDisplayName as P,getUser as A}from"./users.js";const I="conversations",Q=(e={})=>{const{from:n=0,to:a=30}=e;return{limit:b(n,a)}},G=(e,n,a)=>{const i="getConversations",{databaseName:c}=e,{limit:u}=Q(a),t=`users/${n}`,o=`FOR c, e IN 1..1 OUTBOUND "${t}" hasConversation
2
2
  ${u.aql}
3
3
  LET users = (
4
4
  FOR u, uc IN 1..1 INBOUND c._id hasConversation
5
- FILTER u._id != "${o}"
5
+ FILTER u._id != "${t}"
6
6
  RETURN u
7
7
  )
8
- RETURN MERGE(c, {users: users})`;return y(c).query(t).then(s=>s.all()).catch(s=>(I({action:i,category:g,label:C.DATABASE_ERROR},s,e),[]))},H=async(e,{fromId:n,toId:a,toUser:i})=>{const c="getDirectConversation",{databaseName:u}=e;try{const o=v(n),t=v(a),r=A([o,t]),d=T(`conversations-${r.join("-")}`,null),m=i||await N(e,{userId:t}),l=R`LET c = DOCUMENT(${`conversations/${d}`}) RETURN c`,p=await y(u).query(l).then(E=>E.next()).catch(E=>I({action:c,category:g,label:C.DATABASE_ERROR},E,e));return p?{...p,users:[m]}:F(e,{fromId:n,toId:a,toUser:m})}catch(o){return I({action:c,category:g,label:C.DATABASE_ERROR},o,e)}},F=async(e,{fromId:n,toId:a,toUser:i})=>{const c="getDirectConversation",{databaseName:u}=e;try{const o=v(n),t=v(a),s=[o,t],r=A([o,t]),d=i||await N(e,{userId:t}),m=T(`conversations-${r.join("-")}`,null),l=Date.now(),E=R`INSERT ${{_key:m,added:l,isDirect:!0,modified:l}} IN conversations RETURN NEW`,h=await y(u).query(E).then(U=>U.next());return await Promise.all(s.map(U=>{const D=T(`hasConversation-${U}-${m}`),$={_from:`users/${U}`,_key:D,_to:`conversations/${m}`,added:Date.now()},f=R`INSERT ${$} IN hasConversation RETURN NEW`;return y(u).query(f)})),{...h,users:[d]}}catch(o){return I({action:c,category:g,label:C.DATABASE_ERROR},o,e),{}}},V=(e,{conversationId:n,includeAll:a=!1,isDirect:i})=>{const c="getConnectionUsers",{databaseName:u,session:{userId:o}}=e,t=["c.userId == u._key"];a||t.push(`u._key != ${o}`),i&&t.push(`p.vertices[0].isDirect == ${i}`);const s=R`FOR u, e,p IN 1..1 INBOUND ${`conversations/${n}`} hasConversation
8
+ RETURN MERGE(c, {users: users})`;return d(c).query(o).then(s=>s.all()).catch(s=>(g({action:i,category:I,label:C.DATABASE_ERROR},s,e),[]))},H=async(e,{fromId:n,toId:a,toUser:i})=>{const c="getDirectConversation",{databaseName:u}=e;try{const t=v(n),o=v(a),r=N([t,o]),p=T(`conversations-${r.join("-")}`,null),m=i||await A(e,{userId:o}),l=R`LET c = DOCUMENT(${`conversations/${p}`}) RETURN c`,y=await d(u).query(l).then(E=>E.next()).catch(E=>g({action:c,category:I,label:C.DATABASE_ERROR},E,e));return y?{...y,users:[m]}:F(e,{fromId:n,toId:a,toUser:m})}catch(t){return g({action:c,category:I,label:C.DATABASE_ERROR},t,e)}},F=async(e,{fromId:n,toId:a,toUser:i})=>{const c="getDirectConversation",{databaseName:u}=e;try{const t=v(n),o=v(a),s=[t,o],r=N([t,o]),p=i||await A(e,{userId:o}),m=T(`conversations-${r.join("-")}`,null),l=Date.now(),E=R`INSERT ${{_key:m,added:l,isDirect:!0,modified:l}} IN conversations RETURN NEW`,h=await d(u).query(E).then(U=>U.next());return await Promise.all(s.map(U=>{const D=T(`hasConversation-${U}-${m}`),f={_from:`users/${U}`,_key:D,_to:`conversations/${m}`,added:Date.now()},$=R`INSERT ${f} IN hasConversation RETURN NEW`;return d(u).query($)})),{...h,users:[p]}}catch(t){return g({action:c,category:I,label:C.DATABASE_ERROR},t,e),{}}},V=(e,{conversationId:n,includeAll:a=!1,isDirect:i})=>{const c="getConnectionUsers",{databaseName:u,session:{userId:t}}=e,o=["c.userId == u._key"];a||o.push(`u._key != ${t}`),i&&o.push(`p.vertices[0].isDirect == ${i}`);const s=R`FOR u, e,p IN 1..1 INBOUND ${`conversations/${n}`} hasConversation
9
9
  OPTIONS {vertexCollections: "users"}
10
10
  FOR c IN connections
11
- FILTER ${t.join(" && ")}
12
- RETURN c`;return y(u).query(s).then(r=>r.all()).catch(r=>(I({action:c,category:g,label:C.DATABASE_ERROR},r,e),[]))},z=(e,{conversationId:n,includeAll:a=!1,isDirect:i})=>{const c="getConversationUsers",{databaseName:u,session:{userId:o}}=e,t=["c.userId == u._key"];a||t.push(`u._key != ${o}`),i&&t.push(`p.vertices[0].isDirect == ${i}`);const s=R`FOR u, e,p IN 1..1 INBOUND ${`conversations/${n}`} hasConversation
11
+ FILTER ${o.join(" && ")}
12
+ RETURN c`;return d(u).query(s).then(r=>r.all()).catch(r=>(g({action:c,category:I,label:C.DATABASE_ERROR},r,e),[]))},z=(e,{conversationId:n,includeAll:a=!1,isDirect:i})=>{const c="getConversationUsers",{databaseName:u,session:{userId:t}}=e,o=["c.userId == u._key"];a||o.push(`u._key != ${t}`),i&&o.push(`p.vertices[0].isDirect == ${i}`);const s=R`FOR u, e,p IN 1..1 INBOUND ${`conversations/${n}`} hasConversation
13
13
  OPTIONS {vertexCollections: "users"}
14
- FILTER ${t.join(" && ")}
15
- RETURN u`;return y(u).query(s).then(r=>r.all()).catch(r=>(I({action:c,category:g,label:C.DATABASE_ERROR},r,e),[]))},J=(e,n)=>{const a="getItem",{databaseName:i,session:{userId:c}}=e,u=`users/${c}`,o=`conversations/${v(n)}`,t=R`FOR c, e IN 1..1 OUTBOUND ${u} hasConversation
16
- FILTER c._id == ${o}
14
+ FILTER ${o.join(" && ")}
15
+ RETURN u`;return d(u).query(s).then(r=>r.all()).catch(r=>(g({action:c,category:I,label:C.DATABASE_ERROR},r,e),[]))},J=(e,n)=>{const a="getItem",{databaseName:i,session:{userId:c}}=e,u=`users/${c}`,t=`conversations/${v(n)}`,o=R`FOR c, e IN 1..1 OUTBOUND ${u} hasConversation
16
+ FILTER c._id == ${t}
17
17
  LET u = (
18
- FOR inUser, inEdge IN 1..1 INBOUND ${o} hasConversation
18
+ FOR inUser, inEdge IN 1..1 INBOUND ${t} hasConversation
19
19
  RETURN inUser
20
20
  )
21
21
  LIMIT 1
22
- RETURN MERGE(c, {users: u})`;return y(i).query(t).then(s=>s.next()).then(s=>s?(s.users=s.users.map(r=>{const{imageId:d,userId:m}=r,l={bucket:b.get("aws.s3.Bucket"),imageDir:"thumbs",imageId:d,type:"users",typeId:m};return{...r,name:_(r),thumb:q(l)}}),s):{}).catch(s=>I({action:a,category:g,label:C.DATABASE_ERROR},s,e))},K=(e,n)=>{const a="updateConversation",{databaseName:i,session:{userId:c}}=e,{conversationId:u=T(`conversation-${c} `),isDirect:o=!1,name:t}=n,s=v(u),r=Date.now(),d={isDirect:o,modified:r,name:t},m={...O(d),_key:s,added:r},l=R`UPSERT {_key: ${s} }
22
+ RETURN MERGE(c, {users: u})`;return d(i).query(o).then(s=>s.next()).then(s=>s?(s.users=s.users.map(r=>{const{imageId:p,userId:m}=r,l={bucket:q.get("aws.s3.Bucket"),imageDir:"thumbs",imageId:p,type:"users",typeId:m};return{...r,name:P(r),thumb:_(l)}}),s):{}).catch(s=>g({action:a,category:I,label:C.DATABASE_ERROR},s,e))},K=(e,n)=>{const a="updateConversation",{databaseName:i,session:{userId:c}}=e,{conversationId:u=T(`conversation-${c} `),isDirect:t=!1,name:o}=n,s=v(u),r=Date.now(),p={isDirect:t,modified:r,name:o},m={...O(p),_key:s,added:r},l=R`UPSERT {_key: ${s} }
23
23
  INSERT ${m}
24
- UPDATE ${d}
25
- IN conversations RETURN NEW`;return y(i).query(l).then(p=>p.next()).then(p=>p).catch(p=>I({action:a,category:g,label:C.DATABASE_ERROR},p,e))},X=(e,{conversationId:n,userId:a})=>{const i="addUserToConversation",{databaseName:c}=e,u=v(n),o=v(a),t=`conversations/${u}`,s=`users/${o}`,r=R`FOR hc IN hasConversation
26
- FILTER hc._from == ${s} && hc._to == ${t}
24
+ UPDATE ${p}
25
+ IN conversations RETURN NEW`;return d(i).query(l).then(y=>y.next()).then(y=>y).catch(y=>g({action:a,category:I,label:C.DATABASE_ERROR},y,e))},X=(e,{conversationId:n,userId:a})=>{const i="addUserToConversation",{databaseName:c}=e,u=v(n),t=v(a),o=`conversations/${u}`,s=`users/${t}`,r=R`FOR hc IN hasConversation
26
+ FILTER hc._from == ${s} && hc._to == ${o}
27
27
  LIMIT 1
28
- RETURN hc`;return y(c).query(r).then(d=>d.next()).then(d=>{if(d)return d;const m=y(c).collection("hasConversation"),l=T(`convo - ${u} -${o} `),p={_from:s,_key:l,_to:t,added:Date.now()};return m.save(p,{returnNew:!0}).then(()=>p)}).catch(d=>I({action:i,category:g,label:C.DATABASE_ERROR},d,e))},Y=(e,{conversationId:n,userId:a})=>{const i="deleteUserFromConversation",{databaseName:c}=e,u=v(n),o=v(a),t=`conversations/${u}`,s=`users/${o}`,r=R`FOR hc IN hasConversation
29
- FILTER hc._from == ${s} && hc._to == ${t}
28
+ RETURN hc`;return d(c).query(r).then(p=>p.next()).then(p=>{if(p)return p;const m=d(c).collection("hasConversation"),l=T(`convo - ${u} -${t} `),y={_from:s,_key:l,_to:o,added:Date.now()};return m.save(y,{returnNew:!0}).then(()=>y)}).catch(p=>g({action:i,category:I,label:C.DATABASE_ERROR},p,e))},Y=(e,{conversationId:n,userId:a})=>{const i="deleteUserFromConversation",{databaseName:c}=e,u=v(n),t=v(a),o=`conversations/${u}`,s=`users/${t}`,r=R`FOR hc IN hasConversation
29
+ FILTER hc._from == ${s} && hc._to == ${o}
30
30
  LIMIT 1
31
31
  REMOVE hc IN hasConversation
32
- RETURN OLD`;return y(c).query(r).then(d=>d.next()).catch(d=>I({action:i,category:g,label:C.DATABASE_ERROR},d,e))};export{F as addDirectConversation,X as addUserToConversation,Y as deleteUserFromConversation,V as getConnectionUsers,J as getConversation,z as getConversationUsers,G as getConversations,H as getDirectConversation,Q as parseConversationOptions,K as updateConversation};
33
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29udmVyc2F0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcblxuaW1wb3J0IHtnZXRJbWFnZVVybH0gZnJvbSAnLi9pbWFnZXMnO1xuaW1wb3J0IHtnZXREaXNwbGF5TmFtZSwgZ2V0VXNlcn0gZnJvbSAnLi91c2Vycyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMnO1xuaW1wb3J0IHtnZXRMaW1pdCwgc29ydElkcywgdXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFyYW5nb0RiTGltaXQsXG4gIENvbm5lY3Rpb25UeXBlLFxuICBDb252ZXJzYXRpb25PcHRpb25zLFxuICBDb252ZXJzYXRpb25UeXBlLFxuICBDb252ZXJzYXRpb25Vc2Vyc1BhcmFtcyxcbiAgRGlyZWN0Q29udmVyc2F0aW9uUGFyYW1zLFxuICBFZGdlVHlwZSxcbiAgSW1hZ2VVcmxEYXRhLFxuICBVcGRhdGVDb252ZXJzYXRpb25Vc2VyUGFyYW1zLFxuICBVc2VyVHlwZVxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2NvbnZlcnNhdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgcGFyc2VDb252ZXJzYXRpb25PcHRpb25zID0gKG9wdGlvbnM6IENvbnZlcnNhdGlvbk9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgZnJvbSA9IDAsXG4gICAgdG8gPSAzMFxuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIGxpbWl0OiBnZXRMaW1pdChmcm9tLCB0bykgYXMgQXJhbmdvRGJMaW1pdFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnZlcnNhdGlvbnMgPSAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcklkOiBzdHJpbmcsIG9wdGlvbnM/KTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29udmVyc2F0aW9ucyc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlQ29udmVyc2F0aW9uT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgdXNlckRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHt1c2VySWR9YDtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGMsIGUgSU4gMS4uMSBPVVRCT1VORCBcIiR7dXNlckRvY0lkfVwiIGhhc0NvbnZlcnNhdGlvblxuICAgICR7bGltaXQuYXFsfVxuICAgIExFVCB1c2VycyA9IChcbiAgICAgIEZPUiB1LCB1YyBJTiAxLi4xIElOQk9VTkQgYy5faWQgaGFzQ29udmVyc2F0aW9uXG4gICAgICBGSUxURVIgdS5faWQgIT0gXCIke3VzZXJEb2NJZH1cIlxuICAgICAgUkVUVVJOIHVcbiAgICApXG4gICAgUkVUVVJOIE1FUkdFKGMsIHt1c2VyczogdXNlcnN9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIENvbnZlcnNhdGlvblR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERpcmVjdENvbnZlcnNhdGlvbiA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge1xuICAgIGZyb21JZCxcbiAgICB0b0lkLFxuICAgIHRvVXNlclxuICB9OiBEaXJlY3RDb252ZXJzYXRpb25QYXJhbXNcbik6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXREaXJlY3RDb252ZXJzYXRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmb3JtYXRGcm9tSWQgPSBwYXJzZUlkKGZyb21JZCk7XG4gICAgY29uc3QgZm9ybWF0VG9JZCA9IHBhcnNlSWQodG9JZCk7XG4gICAgY29uc3QgdXNlcklkcyA9IFtmb3JtYXRGcm9tSWQsIGZvcm1hdFRvSWRdO1xuICAgIGNvbnN0IHNvcnRlZFVzZXJJZHMgPSBzb3J0SWRzKHVzZXJJZHMpO1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvbklkID0gY3JlYXRlSGFzaChgY29udmVyc2F0aW9ucy0ke3NvcnRlZFVzZXJJZHMuam9pbignLScpfWAsIG51bGwpO1xuICAgIGNvbnN0IHVzZXI6IFVzZXJUeXBlID0gdG9Vc2VyIHx8IGF3YWl0IGdldFVzZXIoY29udGV4dCwge3VzZXJJZDogZm9ybWF0VG9JZH0pO1xuICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgTEVUIGMgPSBET0NVTUVOVCgke2Bjb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uSWR9YH0pIFJFVFVSTiBjYDtcbiAgICBjb25zdCBjb252ZXJzYXRpb24gPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcblxuICAgIGlmKGNvbnZlcnNhdGlvbikge1xuICAgICAgcmV0dXJuIHsuLi5jb252ZXJzYXRpb24sIHVzZXJzOiBbdXNlcl19O1xuICAgIH1cblxuICAgIHJldHVybiBhZGREaXJlY3RDb252ZXJzYXRpb24oY29udGV4dCwge2Zyb21JZCwgdG9JZCwgdG9Vc2VyOiB1c2VyfSk7XG4gIH0gY2F0Y2goZGF0YWJhc2VFcnJvcikge1xuICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZGF0YWJhc2VFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGREaXJlY3RDb252ZXJzYXRpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBmcm9tSWQsXG4gICAgdG9JZCxcbiAgICB0b1VzZXJcbiAgfTogRGlyZWN0Q29udmVyc2F0aW9uUGFyYW1zXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0RGlyZWN0Q29udmVyc2F0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZm9ybWF0RnJvbUlkID0gcGFyc2VJZChmcm9tSWQpO1xuICAgIGNvbnN0IGZvcm1hdFRvSWQgPSBwYXJzZUlkKHRvSWQpO1xuICAgIGNvbnN0IHVzZXJJZHMgPSBbZm9ybWF0RnJvbUlkLCBmb3JtYXRUb0lkXTtcbiAgICBjb25zdCBzb3J0ZWRVc2VySWRzID0gc29ydElkcyhbZm9ybWF0RnJvbUlkLCBmb3JtYXRUb0lkXSk7XG4gICAgY29uc3QgdXNlcjogVXNlclR5cGUgPSB0b1VzZXIgfHwgYXdhaXQgZ2V0VXNlcihjb250ZXh0LCB7dXNlcklkOiBmb3JtYXRUb0lkfSk7XG4gICAgY29uc3QgY29udmVyc2F0aW9uSWQgPSBjcmVhdGVIYXNoKGBjb252ZXJzYXRpb25zLSR7c29ydGVkVXNlcklkcy5qb2luKCctJyl9YCwgbnVsbCk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBpbnNlcnQgPSB7XG4gICAgICBfa2V5OiBjb252ZXJzYXRpb25JZCxcbiAgICAgIGFkZGVkOiBub3csXG4gICAgICBpc0RpcmVjdDogdHJ1ZSxcbiAgICAgIG1vZGlmaWVkOiBub3dcbiAgICB9O1xuICAgIGNvbnN0IGluc2VydFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIE5FV2A7XG4gICAgY29uc3QgdXBkYXRlZENvbnZlcnNhdGlvbiA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoaW5zZXJ0UXVlcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKHVzZXJJZHMubWFwKCh1c2VySWQpID0+IHtcbiAgICAgIGNvbnN0IGVkZ2VJZDogc3RyaW5nID0gY3JlYXRlSGFzaChgaGFzQ29udmVyc2F0aW9uLSR7dXNlcklkfS0ke2NvbnZlcnNhdGlvbklkfWApO1xuICAgICAgY29uc3QgZWRnZTogRWRnZVR5cGUgPSB7XG4gICAgICAgIF9mcm9tOiBgdXNlcnMvJHt1c2VySWR9YCxcbiAgICAgICAgX2tleTogZWRnZUlkLFxuICAgICAgICBfdG86IGBjb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uSWR9YCxcbiAgICAgICAgYWRkZWQ6IERhdGUubm93KClcbiAgICAgIH07XG4gICAgICBjb25zdCBpbnNlcnRFZGdlUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2VkZ2V9IElOIGhhc0NvbnZlcnNhdGlvbiBSRVRVUk4gTkVXYDtcbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGluc2VydEVkZ2VRdWVyeSk7XG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHsuLi51cGRhdGVkQ29udmVyc2F0aW9uLCB1c2VyczogW3VzZXJdfTtcbiAgfSBjYXRjaChkYXRhYmFzZUVycm9yKSB7XG4gICAgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGRhdGFiYXNlRXJyb3IsIGNvbnRleHQpO1xuICAgIHJldHVybiB7fTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbm5lY3Rpb25Vc2VycyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge1xuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIGluY2x1ZGVBbGwgPSBmYWxzZSxcbiAgICBpc0RpcmVjdFxuICB9OiBDb252ZXJzYXRpb25Vc2Vyc1BhcmFtc1xuKTogUHJvbWlzZTxDb25uZWN0aW9uVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldENvbm5lY3Rpb25Vc2Vycyc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25Vc2VySWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZpbHRlcnM6IHN0cmluZ1tdID0gWydjLnVzZXJJZCA9PSB1Ll9rZXknXTtcblxuICBpZighaW5jbHVkZUFsbCkge1xuICAgIGZpbHRlcnMucHVzaChgdS5fa2V5ICE9ICR7c2Vzc2lvblVzZXJJZH1gKTtcbiAgfVxuICBpZihpc0RpcmVjdCkge1xuICAgIGZpbHRlcnMucHVzaChgcC52ZXJ0aWNlc1swXS5pc0RpcmVjdCA9PSAke2lzRGlyZWN0fWApO1xuICB9XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSwgZSxwIElOIDEuLjEgSU5CT1VORCAke2Bjb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uSWR9YH0gaGFzQ29udmVyc2F0aW9uXG4gICAgT1BUSU9OUyB7dmVydGV4Q29sbGVjdGlvbnM6IFwidXNlcnNcIn1cbiAgICBGT1IgYyBJTiBjb25uZWN0aW9uc1xuICAgIEZJTFRFUiAke2ZpbHRlcnMuam9pbignICYmICcpfVxuICAgIFJFVFVSTiBjYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgQ29ubmVjdGlvblR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnZlcnNhdGlvblVzZXJzID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB7XG4gICAgY29udmVyc2F0aW9uSWQsXG4gICAgaW5jbHVkZUFsbCA9IGZhbHNlLFxuICAgIGlzRGlyZWN0XG4gIH06IENvbnZlcnNhdGlvblVzZXJzUGFyYW1zXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRDb252ZXJzYXRpb25Vc2Vycyc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25Vc2VySWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZpbHRlcnM6IHN0cmluZ1tdID0gWydjLnVzZXJJZCA9PSB1Ll9rZXknXTtcblxuICBpZighaW5jbHVkZUFsbCkge1xuICAgIGZpbHRlcnMucHVzaChgdS5fa2V5ICE9ICR7c2Vzc2lvblVzZXJJZH1gKTtcbiAgfVxuICBpZihpc0RpcmVjdCkge1xuICAgIGZpbHRlcnMucHVzaChgcC52ZXJ0aWNlc1swXS5pc0RpcmVjdCA9PSAke2lzRGlyZWN0fWApO1xuICB9XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSwgZSxwIElOIDEuLjEgSU5CT1VORCAke2Bjb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uSWR9YH0gaGFzQ29udmVyc2F0aW9uXG4gICAgT1BUSU9OUyB7dmVydGV4Q29sbGVjdGlvbnM6IFwidXNlcnNcIn1cbiAgICBGSUxURVIgJHtmaWx0ZXJzLmpvaW4oJyAmJiAnKX1cbiAgICBSRVRVUk4gdWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIENvbnZlcnNhdGlvblR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pO1xufTtcblxuLy8gZXhwb3J0IGNvbnN0IGdldERpcmVjdENvbnZlcnNhdGlvbk9sZCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCB1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuLy8gICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXREaXJlY3RDb252ZXJzYXRpb24nO1xuLy8gICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbi8vICAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbi8vICAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKHVzZXJJZCk7XG5cbi8vICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgZnJvbSA9IChcbi8vICAgICAgIEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgJHtzZXNzaW9uRG9jSWR9IGhhc0NvbnZlcnNhdGlvblxuLy8gICAgICAgRklMVEVSIGMuZGlyZWN0ID09IHRydWVcbi8vICAgICAgIFJFVFVSTiBjXG4vLyAgICAgKVxuLy8gICAgIExFVCB0byA9IChcbi8vICAgICAgIEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgJHtmb3JtYXRVc2VySWR9IGhhc0NvbnZlcnNhdGlvblxuLy8gICAgICAgRklMVEVSIGMuZGlyZWN0ID09IHRydWVcbi8vICAgICAgIFJFVFVSTiBjXG4vLyAgICAgKVxuLy8gICAgIExFVCBjb252ZXJzYXRpb24gPSBGSVJTVChJTlRFUlNFQ1RJT04oZnJvbSwgdG8pKVxuLy8gICAgIExFVCB1c2VycyA9ICFJU19OVUxMKGNvbnZlcnNhdGlvbikgJiYgKFxuLy8gICAgICAgRk9SIGcgSU5bJHtzZXNzaW9uRG9jSWR9LCAke2Zvcm1hdFVzZXJJZH1dXG4vLyAgICAgICBGT1IgdSBJTiB1c2Vyc1xuLy8gICAgICAgRklMVEVSIGcgPT0gdS5faWRcbi8vICAgICAgIFJFVFVSTiB1XG4vLyAgICAgKVxuLy8gICAgIFJFVFVSTiBJU19OVUxMKGNvbnZlcnNhdGlvbikgPyBudWxsIDogTUVSR0UoY29udmVyc2F0aW9uLCB7dXNlcnM6IHVzZXJzfSlgO1xuXG4vLyAgIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4vLyAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbi8vICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuLy8gICAgICAgYWN0aW9uLFxuLy8gICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4vLyAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuLy8gICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG4vLyB9O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgY29udmVyc2F0aW9uRG9jSWQ6IHN0cmluZyA9IGBjb252ZXJzYXRpb25zLyR7cGFyc2VJZChjb252ZXJzYXRpb25JZCl9YDtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgJHtzZXNzaW9uRG9jSWR9IGhhc0NvbnZlcnNhdGlvblxuICAgIEZJTFRFUiBjLl9pZCA9PSAke2NvbnZlcnNhdGlvbkRvY0lkfVxuICAgIExFVCB1ID0gKFxuICAgICAgRk9SIGluVXNlciwgaW5FZGdlIElOIDEuLjEgSU5CT1VORCAke2NvbnZlcnNhdGlvbkRvY0lkfSBoYXNDb252ZXJzYXRpb25cbiAgICAgIFJFVFVSTiBpblVzZXJcbiAgICApXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBNRVJHRShjLCB7dXNlcnM6IHV9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgaWYoIWNvbnZlcnNhdGlvbikge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG5cbiAgICAgIGNvbnZlcnNhdGlvbi51c2VycyA9IGNvbnZlcnNhdGlvbi51c2Vycy5tYXAoKHVzZXI6IFVzZXJUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtpbWFnZUlkLCB1c2VySWR9ID0gdXNlcjtcbiAgICAgICAgY29uc3QgdGh1bWJVcmxEYXRhOiBJbWFnZVVybERhdGEgPSB7XG4gICAgICAgICAgYnVja2V0OiBDb25maWcuZ2V0KCdhd3MuczMuQnVja2V0JyksXG4gICAgICAgICAgaW1hZ2VEaXI6ICd0aHVtYnMnLFxuICAgICAgICAgIGltYWdlSWQsXG4gICAgICAgICAgdHlwZTogJ3VzZXJzJyxcbiAgICAgICAgICB0eXBlSWQ6IHVzZXJJZFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICBuYW1lOiBnZXREaXNwbGF5TmFtZSh1c2VyKSxcbiAgICAgICAgICB0aHVtYjogZ2V0SW1hZ2VVcmwodGh1bWJVcmxEYXRhKVxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjb252ZXJzYXRpb247XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29udmVyc2F0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGVcbik6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVDb252ZXJzYXRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBjb252ZXJzYXRpb25JZCA9IGNyZWF0ZUhhc2goYGNvbnZlcnNhdGlvbi0ke3Nlc3Npb25JZH0gYCksXG4gICAgaXNEaXJlY3QgPSBmYWxzZSxcbiAgICBuYW1lXG4gIH0gPSBjb252ZXJzYXRpb247XG4gIGNvbnN0IGZvcm1hdENvbnZlcnNhdGlvbklkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZlcnNhdGlvbklkKTtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCB1cGRhdGUgPSB7XG4gICAgaXNEaXJlY3QsXG4gICAgbW9kaWZpZWQ6IG5vdyxcbiAgICBuYW1lXG4gIH07XG5cbiAgY29uc3QgaW5zZXJ0ID0ge1xuICAgIC4uLmNsb25lRGVlcCh1cGRhdGUpLFxuICAgIF9rZXk6IGZvcm1hdENvbnZlcnNhdGlvbklkLFxuICAgIGFkZGVkOiBub3dcbiAgfTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtmb3JtYXRDb252ZXJzYXRpb25JZH0gfVxuICAgIElOU0VSVCAke2luc2VydH1cbiAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgSU4gY29udmVyc2F0aW9ucyBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiBjb252ZXJzYXRpb24pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFVzZXJUb0NvbnZlcnNhdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge1xuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIHVzZXJJZFxuICB9OiBVcGRhdGVDb252ZXJzYXRpb25Vc2VyUGFyYW1zXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkVXNlclRvQ29udmVyc2F0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252ZXJzYXRpb25JZDogc3RyaW5nID0gcGFyc2VJZChjb252ZXJzYXRpb25JZCk7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBjb252ZXJzYXRpb25Eb2NJZDogc3RyaW5nID0gYGNvbnZlcnNhdGlvbnMvJHtmb3JtYXRDb252ZXJzYXRpb25JZH1gO1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke2Zvcm1hdFVzZXJJZH1gO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGhjIElOIGhhc0NvbnZlcnNhdGlvblxuICAgIEZJTFRFUiBoYy5fZnJvbSA9PSAke3VzZXJEb2NJZH0gJiYgaGMuX3RvID09ICR7Y29udmVyc2F0aW9uRG9jSWR9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBoY2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGhhc0NvbnZlcnNhdGlvbkVkZ2UpID0+IHtcbiAgICAgIGlmKCEhaGFzQ29udmVyc2F0aW9uRWRnZSkge1xuICAgICAgICByZXR1cm4gaGFzQ29udmVyc2F0aW9uRWRnZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gdXNlRGIoZGF0YWJhc2VOYW1lKS5jb2xsZWN0aW9uKCdoYXNDb252ZXJzYXRpb24nKTtcbiAgICAgIGNvbnN0IGVkZ2VJZDogc3RyaW5nID0gY3JlYXRlSGFzaChgY29udm8gLSAke2Zvcm1hdENvbnZlcnNhdGlvbklkfSAtJHtmb3JtYXRVc2VySWR9IGApO1xuXG4gICAgICBjb25zdCBlZGdlOiBDb252ZXJzYXRpb25UeXBlID0ge1xuICAgICAgICBfZnJvbTogdXNlckRvY0lkLFxuICAgICAgICBfa2V5OiBlZGdlSWQsXG4gICAgICAgIF90bzogY29udmVyc2F0aW9uRG9jSWQsXG4gICAgICAgIGFkZGVkOiBEYXRlLm5vdygpXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRnZUNvbGxlY3Rpb25cbiAgICAgICAgLnNhdmUoZWRnZSwge3JldHVybk5ldzogdHJ1ZX0pXG4gICAgICAgIC50aGVuKCgpID0+IGVkZ2UpO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZVVzZXJGcm9tQ29udmVyc2F0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB7XG4gICAgY29udmVyc2F0aW9uSWQsXG4gICAgdXNlcklkXG4gIH06IFVwZGF0ZUNvbnZlcnNhdGlvblVzZXJQYXJhbXNcbik6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVVc2VyRnJvbUNvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0Q29udmVyc2F0aW9uSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udmVyc2F0aW9uSWQpO1xuICBjb25zdCBmb3JtYXRVc2VySWQ6IHN0cmluZyA9IHBhcnNlSWQodXNlcklkKTtcbiAgY29uc3QgY29udmVyc2F0aW9uRG9jSWQ6IHN0cmluZyA9IGBjb252ZXJzYXRpb25zLyR7Zm9ybWF0Q29udmVyc2F0aW9uSWR9YDtcbiAgY29uc3QgdXNlckRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtmb3JtYXRVc2VySWR9YDtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBoYyBJTiBoYXNDb252ZXJzYXRpb25cbiAgICBGSUxURVIgaGMuX2Zyb20gPT0gJHt1c2VyRG9jSWR9ICYmIGhjLl90byA9PSAke2NvbnZlcnNhdGlvbkRvY0lkfVxuICAgIExJTUlUIDFcbiAgICBSRU1PVkUgaGMgSU4gaGFzQ29udmVyc2F0aW9uXG4gICAgUkVUVVJOIE9MRGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsY0FBQUEsRUFBWSxXQUFBQyxNQUFjLGVBQ2xDLE9BQVEsT0FBQUMsTUFBVSxXQUVsQixPQUFPQyxNQUFlLG1CQUV0QixPQUFRLGVBQUFDLE1BQWtCLFdBQzFCLE9BQVEsa0JBQUFDLEVBQWdCLFdBQUFDLE1BQWMsVUFDdEMsT0FBUSxVQUFBQyxNQUFhLFlBQ3JCLE9BQVEsY0FBQUMsTUFBaUIsdUJBQ3pCLE9BQVEsWUFBQUMsTUFBZSwwQkFDdkIsT0FBUSxZQUFBQyxFQUFVLFdBQUFDLEVBQVMsU0FBQUMsTUFBWSx5QkFpQnZDLE1BQU1DLEVBQXdCLGdCQUVqQkMsRUFBMkIsQ0FBQ0MsRUFBK0IsQ0FBQyxJQUFNLENBQzdFLEtBQU0sQ0FDSixLQUFBQyxFQUFPLEVBQ1AsR0FBQUMsRUFBSyxFQUNQLEVBQUlGLEVBRUosTUFBTyxDQUNMLE1BQU9MLEVBQVNNLEVBQU1DLENBQUUsQ0FDMUIsQ0FDRixFQUVhQyxFQUFtQixDQUFDQyxFQUFxQkMsRUFBZ0JMLElBQTBDLENBQzlHLE1BQU1NLEVBQWlCLG1CQUNqQixDQUFDLGFBQUFDLENBQVksRUFBSUgsRUFDakIsQ0FBQyxNQUFBSSxDQUFLLEVBQUlULEVBQXlCQyxDQUFPLEVBQzFDUyxFQUFvQixTQUFTSixDQUFNLEdBQ25DSyxFQUFpQiw4QkFBOEJELENBQVM7QUFBQSxNQUMxREQsRUFBTSxHQUFHO0FBQUE7QUFBQTtBQUFBLHlCQUdVQyxDQUFTO0FBQUE7QUFBQTtBQUFBLHFDQUtoQyxPQUFPWixFQUFNVSxDQUFZLEVBQUUsTUFBTUcsQ0FBTSxFQUNwQyxLQUFNQyxHQUFXQSxFQUFPLElBQUksQ0FBa0MsRUFDOUQsTUFBT0MsSUFDTmxCLEVBQVMsQ0FDUCxPQUFBWSxFQUNBLFNBQVVSLEVBQ1YsTUFBT0wsRUFBVyxjQUNwQixFQUFHbUIsRUFBT1IsQ0FBTyxFQUNWLENBQUMsRUFDVCxDQUNMLEVBRWFTLEVBQXdCLE1BQ25DVCxFQUNBLENBQ0UsT0FBQVUsRUFDQSxLQUFBQyxFQUNBLE9BQUFDLENBQ0YsSUFDOEIsQ0FDOUIsTUFBTVYsRUFBaUIsd0JBQ2pCLENBQUMsYUFBQUMsQ0FBWSxFQUFJSCxFQUV2QixHQUFJLENBQ0YsTUFBTWEsRUFBZS9CLEVBQVE0QixDQUFNLEVBQzdCSSxFQUFhaEMsRUFBUTZCLENBQUksRUFFekJJLEVBQWdCdkIsRUFETixDQUFDcUIsRUFBY0MsQ0FBVSxDQUNKLEVBQy9CRSxFQUFpQm5DLEVBQVcsaUJBQWlCa0MsRUFBYyxLQUFLLEdBQUcsQ0FBQyxHQUFJLElBQUksRUFDNUVFLEVBQWlCTCxHQUFVLE1BQU16QixFQUFRYSxFQUFTLENBQUMsT0FBUWMsQ0FBVSxDQUFDLEVBQ3RFUixFQUFtQnZCLHFCQUF1QixpQkFBaUJpQyxDQUFjLEVBQUUsYUFDM0VFLEVBQWUsTUFBTXpCLEVBQU1VLENBQVksRUFBRSxNQUFNRyxDQUFNLEVBQ3hELEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLE1BQU9DLEdBQWlCbEIsRUFBUyxDQUNoQyxPQUFBWSxFQUNBLFNBQVVSLEVBQ1YsTUFBT0wsRUFBVyxjQUNwQixFQUFHbUIsRUFBT1IsQ0FBTyxDQUFDLEVBRXBCLE9BQUdrQixFQUNNLENBQUMsR0FBR0EsRUFBYyxNQUFPLENBQUNELENBQUksQ0FBQyxFQUdqQ0UsRUFBc0JuQixFQUFTLENBQUMsT0FBQVUsRUFBUSxLQUFBQyxFQUFNLE9BQVFNLENBQUksQ0FBQyxDQUNwRSxPQUFRRyxFQUFlLENBQ3JCLE9BQU85QixFQUFTLENBQ2QsT0FBQVksRUFDQSxTQUFVUixFQUNWLE1BQU9MLEVBQVcsY0FDcEIsRUFBRytCLEVBQWVwQixDQUFPLENBQzNCLENBQ0YsRUFFYW1CLEVBQXdCLE1BQ25DbkIsRUFDQSxDQUNFLE9BQUFVLEVBQ0EsS0FBQUMsRUFDQSxPQUFBQyxDQUNGLElBQzhCLENBQzlCLE1BQU1WLEVBQWlCLHdCQUNqQixDQUFDLGFBQUFDLENBQVksRUFBSUgsRUFFdkIsR0FBSSxDQUNGLE1BQU1hLEVBQWUvQixFQUFRNEIsQ0FBTSxFQUM3QkksRUFBYWhDLEVBQVE2QixDQUFJLEVBQ3pCVSxFQUFVLENBQUNSLEVBQWNDLENBQVUsRUFDbkNDLEVBQWdCdkIsRUFBUSxDQUFDcUIsRUFBY0MsQ0FBVSxDQUFDLEVBQ2xERyxFQUFpQkwsR0FBVSxNQUFNekIsRUFBUWEsRUFBUyxDQUFDLE9BQVFjLENBQVUsQ0FBQyxFQUN0RUUsRUFBaUJuQyxFQUFXLGlCQUFpQmtDLEVBQWMsS0FBSyxHQUFHLENBQUMsR0FBSSxJQUFJLEVBQzVFTyxFQUFNLEtBQUssSUFBSSxFQU9mQyxFQUF3QnhDLFdBTmYsQ0FDYixLQUFNaUMsRUFDTixNQUFPTSxFQUNQLFNBQVUsR0FDVixTQUFVQSxDQUNaLENBQ2lELCtCQUMzQ0UsRUFBc0IsTUFBTS9CLEVBQU1VLENBQVksRUFBRSxNQUFNb0IsQ0FBVyxFQUNwRSxLQUFNaEIsR0FBV0EsRUFBTyxLQUFLLENBQUMsRUFFakMsYUFBTSxRQUFRLElBQUljLEVBQVEsSUFBS3BCLEdBQVcsQ0FDeEMsTUFBTXdCLEVBQWlCNUMsRUFBVyxtQkFBbUJvQixDQUFNLElBQUllLENBQWMsRUFBRSxFQUN6RVUsRUFBaUIsQ0FDckIsTUFBTyxTQUFTekIsQ0FBTSxHQUN0QixLQUFNd0IsRUFDTixJQUFLLGlCQUFpQlQsQ0FBYyxHQUNwQyxNQUFPLEtBQUssSUFBSSxDQUNsQixFQUNNVyxFQUE0QjVDLFdBQWEyQyxDQUFJLGlDQUNuRCxPQUFPakMsRUFBTVUsQ0FBWSxFQUFFLE1BQU13QixDQUFlLENBQ2xELENBQUMsQ0FBQyxFQUVLLENBQUMsR0FBR0gsRUFBcUIsTUFBTyxDQUFDUCxDQUFJLENBQUMsQ0FDL0MsT0FBUUcsRUFBZSxDQUNyQixPQUFBOUIsRUFBUyxDQUNQLE9BQUFZLEVBQ0EsU0FBVVIsRUFDVixNQUFPTCxFQUFXLGNBQ3BCLEVBQUcrQixFQUFlcEIsQ0FBTyxFQUNsQixDQUFDLENBQ1YsQ0FDRixFQUVhNEIsRUFBcUIsQ0FDaEM1QixFQUNBLENBQ0UsZUFBQWdCLEVBQ0EsV0FBQWEsRUFBYSxHQUNiLFNBQUFDLENBQ0YsSUFDOEIsQ0FDOUIsTUFBTTVCLEVBQWlCLHFCQUNqQixDQUFDLGFBQUFDLEVBQWMsUUFBUyxDQUFDLE9BQVE0QixDQUFhLENBQUMsRUFBSS9CLEVBQ25EZ0MsRUFBb0IsQ0FBQyxvQkFBb0IsRUFFM0NILEdBQ0ZHLEVBQVEsS0FBSyxhQUFhRCxDQUFhLEVBQUUsRUFFeENELEdBQ0RFLEVBQVEsS0FBSyw2QkFBNkJGLENBQVEsRUFBRSxFQUd0RCxNQUFNeEIsRUFBbUJ2QiwrQkFBaUMsaUJBQWlCaUMsQ0FBYyxFQUFFO0FBQUE7QUFBQTtBQUFBLGFBR2hGZ0IsRUFBUSxLQUFLLE1BQU0sQ0FBQztBQUFBLGNBRy9CLE9BQU92QyxFQUFNVSxDQUFZLEVBQUUsTUFBTUcsQ0FBTSxFQUNwQyxLQUFNQyxHQUFXQSxFQUFPLElBQUksQ0FBZ0MsRUFDNUQsTUFBT0MsSUFDTmxCLEVBQVMsQ0FDUCxPQUFBWSxFQUNBLFNBQVVSLEVBQ1YsTUFBT0wsRUFBVyxjQUNwQixFQUFHbUIsRUFBT1IsQ0FBTyxFQUNWLENBQUMsRUFDVCxDQUNMLEVBRWFpQyxFQUF1QixDQUNsQ2pDLEVBQ0EsQ0FDRSxlQUFBZ0IsRUFDQSxXQUFBYSxFQUFhLEdBQ2IsU0FBQUMsQ0FDRixJQUNnQyxDQUNoQyxNQUFNNUIsRUFBaUIsdUJBQ2pCLENBQUMsYUFBQUMsRUFBYyxRQUFTLENBQUMsT0FBUTRCLENBQWEsQ0FBQyxFQUFJL0IsRUFDbkRnQyxFQUFvQixDQUFDLG9CQUFvQixFQUUzQ0gsR0FDRkcsRUFBUSxLQUFLLGFBQWFELENBQWEsRUFBRSxFQUV4Q0QsR0FDREUsRUFBUSxLQUFLLDZCQUE2QkYsQ0FBUSxFQUFFLEVBR3RELE1BQU14QixFQUFtQnZCLCtCQUFpQyxpQkFBaUJpQyxDQUFjLEVBQUU7QUFBQTtBQUFBLGFBRWhGZ0IsRUFBUSxLQUFLLE1BQU0sQ0FBQztBQUFBLGNBRy9CLE9BQU92QyxFQUFNVSxDQUFZLEVBQUUsTUFBTUcsQ0FBTSxFQUNwQyxLQUFNQyxHQUFXQSxFQUFPLElBQUksQ0FBa0MsRUFDOUQsTUFBT0MsSUFDTmxCLEVBQVMsQ0FDUCxPQUFBWSxFQUNBLFNBQVVSLEVBQ1YsTUFBT0wsRUFBVyxjQUNwQixFQUFHbUIsRUFBT1IsQ0FBTyxFQUNWLENBQUMsRUFDVCxDQUNMLEVBb0Nha0MsRUFBa0IsQ0FBQ2xDLEVBQXFCZ0IsSUFBc0QsQ0FDekcsTUFBTWQsRUFBaUIsVUFDakIsQ0FBQyxhQUFBQyxFQUFjLFFBQVMsQ0FBQyxPQUFRZ0MsQ0FBUyxDQUFDLEVBQUluQyxFQUMvQ29DLEVBQXVCLFNBQVNELENBQVMsR0FDekNFLEVBQTRCLGlCQUFpQnZELEVBQVFrQyxDQUFjLENBQUMsR0FFcEVWLEVBQW1CdkIsOEJBQWdDcUQsQ0FBWTtBQUFBLHNCQUNqREMsQ0FBaUI7QUFBQTtBQUFBLDJDQUVJQSxDQUFpQjtBQUFBO0FBQUE7QUFBQTtBQUFBLGlDQU0xRCxPQUFPNUMsRUFBTVUsQ0FBWSxFQUFFLE1BQU1HLENBQU0sRUFDcEMsS0FBTUMsR0FBV0EsRUFBTyxLQUFLLENBQUMsRUFDOUIsS0FBTVcsR0FDREEsR0FJSkEsRUFBYSxNQUFRQSxFQUFhLE1BQU0sSUFBS0QsR0FBbUIsQ0FDOUQsS0FBTSxDQUFDLFFBQUFxQixFQUFTLE9BQUFyQyxDQUFNLEVBQUlnQixFQUNwQnNCLEVBQTZCLENBQ2pDLE9BQVFuRCxFQUFPLElBQUksZUFBZSxFQUNsQyxTQUFVLFNBQ1YsUUFBQWtELEVBQ0EsS0FBTSxRQUNOLE9BQVFyQyxDQUNWLEVBRUEsTUFBTyxDQUNMLEdBQUdnQixFQUNILEtBQU0vQixFQUFlK0IsQ0FBSSxFQUN6QixNQUFPaEMsRUFBWXNELENBQVksQ0FDakMsQ0FDRixDQUFDLEVBRU1yQixHQXBCRSxDQUFDLENBcUJYLEVBQ0EsTUFBT1YsR0FBaUJsQixFQUFTLENBQ2hDLE9BQUFZLEVBQ0EsU0FBVVIsRUFDVixNQUFPTCxFQUFXLGNBQ3BCLEVBQUdtQixFQUFPUixDQUFPLENBQUMsQ0FDdEIsRUFFYXdDLEVBQXFCLENBQ2hDeEMsRUFDQWtCLElBQzhCLENBQzlCLE1BQU1oQixFQUFpQixxQkFDakIsQ0FBQyxhQUFBQyxFQUFjLFFBQVMsQ0FBQyxPQUFRZ0MsQ0FBUyxDQUFDLEVBQUluQyxFQUMvQyxDQUNKLGVBQUFnQixFQUFpQm5DLEVBQVcsZ0JBQWdCc0QsQ0FBUyxHQUFHLEVBQ3hELFNBQUFMLEVBQVcsR0FDWCxLQUFBVyxDQUNGLEVBQUl2QixFQUNFd0IsRUFBK0I1RCxFQUFRa0MsQ0FBYyxFQUNyRE0sRUFBYyxLQUFLLElBQUksRUFDdkJxQixFQUFTLENBQ2IsU0FBQWIsRUFDQSxTQUFVUixFQUNWLEtBQUFtQixDQUNGLEVBRU1HLEVBQVMsQ0FDYixHQUFHNUQsRUFBVTJELENBQU0sRUFDbkIsS0FBTUQsRUFDTixNQUFPcEIsQ0FDVCxFQUVNaEIsRUFBbUJ2QixrQkFBb0IyRCxDQUFvQjtBQUFBLGFBQ3RERSxDQUFNO0FBQUEsYUFDTkQsQ0FBTTtBQUFBLGlDQUdqQixPQUFPbEQsRUFBTVUsQ0FBWSxFQUFFLE1BQU1HLENBQU0sRUFDcEMsS0FBTUMsR0FBV0EsRUFBTyxLQUFLLENBQUMsRUFDOUIsS0FBTVcsR0FBbUNBLENBQVksRUFDckQsTUFBT1YsR0FBaUJsQixFQUFTLENBQ2hDLE9BQUFZLEVBQ0EsU0FBVVIsRUFDVixNQUFPTCxFQUFXLGNBQ3BCLEVBQUdtQixFQUFPUixDQUFPLENBQUMsQ0FDdEIsRUFFYTZDLEVBQXdCLENBQ25DN0MsRUFDQSxDQUNFLGVBQUFnQixFQUNBLE9BQUFmLENBQ0YsSUFDOEIsQ0FDOUIsTUFBTUMsRUFBaUIsd0JBQ2pCLENBQUMsYUFBQUMsQ0FBWSxFQUFJSCxFQUNqQjBDLEVBQStCNUQsRUFBUWtDLENBQWMsRUFDckQ4QixFQUF1QmhFLEVBQVFtQixDQUFNLEVBQ3JDb0MsRUFBNEIsaUJBQWlCSyxDQUFvQixHQUNqRXJDLEVBQW9CLFNBQVN5QyxDQUFZLEdBRXpDeEMsRUFBbUJ2QjtBQUFBLHlCQUNGc0IsQ0FBUyxpQkFBaUJnQyxDQUFpQjtBQUFBO0FBQUEsZUFJbEUsT0FBTzVDLEVBQU1VLENBQVksRUFBRSxNQUFNRyxDQUFNLEVBQ3BDLEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLEtBQU13QyxHQUF3QixDQUM3QixHQUFLQSxFQUNILE9BQU9BLEVBR1QsTUFBTUMsRUFBaUN2RCxFQUFNVSxDQUFZLEVBQUUsV0FBVyxpQkFBaUIsRUFDakZzQixFQUFpQjVDLEVBQVcsV0FBVzZELENBQW9CLEtBQUtJLENBQVksR0FBRyxFQUUvRXBCLEVBQXlCLENBQzdCLE1BQU9yQixFQUNQLEtBQU1vQixFQUNOLElBQUtZLEVBQ0wsTUFBTyxLQUFLLElBQUksQ0FDbEIsRUFFQSxPQUFPVyxFQUNKLEtBQUt0QixFQUFNLENBQUMsVUFBVyxFQUFJLENBQUMsRUFDNUIsS0FBSyxJQUFNQSxDQUFJLENBQ3BCLENBQUMsRUFDQSxNQUFPbEIsR0FBaUJsQixFQUFTLENBQ2hDLE9BQUFZLEVBQ0EsU0FBVVIsRUFDVixNQUFPTCxFQUFXLGNBQ3BCLEVBQUdtQixFQUFPUixDQUFPLENBQUMsQ0FDdEIsRUFFYWlELEVBQTZCLENBQ3hDakQsRUFDQSxDQUNFLGVBQUFnQixFQUNBLE9BQUFmLENBQ0YsSUFDOEIsQ0FDOUIsTUFBTUMsRUFBaUIsNkJBQ2pCLENBQUMsYUFBQUMsQ0FBWSxFQUFJSCxFQUNqQjBDLEVBQStCNUQsRUFBUWtDLENBQWMsRUFDckQ4QixFQUF1QmhFLEVBQVFtQixDQUFNLEVBQ3JDb0MsRUFBNEIsaUJBQWlCSyxDQUFvQixHQUNqRXJDLEVBQW9CLFNBQVN5QyxDQUFZLEdBRXpDeEMsRUFBbUJ2QjtBQUFBLHlCQUNGc0IsQ0FBUyxpQkFBaUJnQyxDQUFpQjtBQUFBO0FBQUE7QUFBQSxnQkFLbEUsT0FBTzVDLEVBQU1VLENBQVksRUFBRSxNQUFNRyxDQUFNLEVBQ3BDLEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLE1BQU9DLEdBQWlCbEIsRUFBUyxDQUNoQyxPQUFBWSxFQUNBLFNBQVVSLEVBQ1YsTUFBT0wsRUFBVyxjQUNwQixFQUFHbUIsRUFBT1IsQ0FBTyxDQUFDLENBQ3RCIiwKICAibmFtZXMiOiBbImNyZWF0ZUhhc2giLCAicGFyc2VJZCIsICJhcWwiLCAiY2xvbmVEZWVwIiwgImdldEltYWdlVXJsIiwgImdldERpc3BsYXlOYW1lIiwgImdldFVzZXIiLCAiQ29uZmlnIiwgIkVycm9yVHlwZXMiLCAibG9nRXJyb3IiLCAiZ2V0TGltaXQiLCAic29ydElkcyIsICJ1c2VEYiIsICJldmVudENhdGVnb3J5IiwgInBhcnNlQ29udmVyc2F0aW9uT3B0aW9ucyIsICJvcHRpb25zIiwgImZyb20iLCAidG8iLCAiZ2V0Q29udmVyc2F0aW9ucyIsICJjb250ZXh0IiwgInVzZXJJZCIsICJhY3Rpb24iLCAiZGF0YWJhc2VOYW1lIiwgImxpbWl0IiwgInVzZXJEb2NJZCIsICJhcWxRcnkiLCAiY3Vyc29yIiwgImVycm9yIiwgImdldERpcmVjdENvbnZlcnNhdGlvbiIsICJmcm9tSWQiLCAidG9JZCIsICJ0b1VzZXIiLCAiZm9ybWF0RnJvbUlkIiwgImZvcm1hdFRvSWQiLCAic29ydGVkVXNlcklkcyIsICJjb252ZXJzYXRpb25JZCIsICJ1c2VyIiwgImNvbnZlcnNhdGlvbiIsICJhZGREaXJlY3RDb252ZXJzYXRpb24iLCAiZGF0YWJhc2VFcnJvciIsICJ1c2VySWRzIiwgIm5vdyIsICJpbnNlcnRRdWVyeSIsICJ1cGRhdGVkQ29udmVyc2F0aW9uIiwgImVkZ2VJZCIsICJlZGdlIiwgImluc2VydEVkZ2VRdWVyeSIsICJnZXRDb25uZWN0aW9uVXNlcnMiLCAiaW5jbHVkZUFsbCIsICJpc0RpcmVjdCIsICJzZXNzaW9uVXNlcklkIiwgImZpbHRlcnMiLCAiZ2V0Q29udmVyc2F0aW9uVXNlcnMiLCAiZ2V0Q29udmVyc2F0aW9uIiwgInNlc3Npb25JZCIsICJzZXNzaW9uRG9jSWQiLCAiY29udmVyc2F0aW9uRG9jSWQiLCAiaW1hZ2VJZCIsICJ0aHVtYlVybERhdGEiLCAidXBkYXRlQ29udmVyc2F0aW9uIiwgIm5hbWUiLCAiZm9ybWF0Q29udmVyc2F0aW9uSWQiLCAidXBkYXRlIiwgImluc2VydCIsICJhZGRVc2VyVG9Db252ZXJzYXRpb24iLCAiZm9ybWF0VXNlcklkIiwgImhhc0NvbnZlcnNhdGlvbkVkZ2UiLCAiZWRnZUNvbGxlY3Rpb24iLCAiZGVsZXRlVXNlckZyb21Db252ZXJzYXRpb24iXQp9Cg==
32
+ RETURN OLD`;return d(c).query(r).then(p=>p.next()).catch(p=>g({action:i,category:I,label:C.DATABASE_ERROR},p,e))};export{F as addDirectConversation,X as addUserToConversation,Y as deleteUserFromConversation,V as getConnectionUsers,J as getConversation,z as getConversationUsers,G as getConversations,H as getDirectConversation,Q as parseConversationOptions,K as updateConversation};
33
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29udmVyc2F0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y2xvbmVEZWVwfSBmcm9tICdAbmxhYnMvdXRpbHMvb2JqZWN0cy9jbG9uZSc7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlSWR9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge2dldExpbWl0LCBzb3J0SWRzLCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2dldEltYWdlVXJsfSBmcm9tICcuL2ltYWdlcy5qcyc7XG5pbXBvcnQge2dldERpc3BsYXlOYW1lLCBnZXRVc2VyfSBmcm9tICcuL3VzZXJzLmpzJztcblxuaW1wb3J0IHR5cGUge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IHR5cGUge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgdHlwZSB7QXJhbmdvRGJMaW1pdCwgRWRnZVR5cGV9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtDb25uZWN0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvY29ubmVjdGlvbnMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1xuICBDb252ZXJzYXRpb25PcHRpb25zLFxuICBDb252ZXJzYXRpb25UeXBlLFxuICBDb252ZXJzYXRpb25Vc2Vyc1BhcmFtcyxcbiAgRGlyZWN0Q29udmVyc2F0aW9uUGFyYW1zLFxuICBVcGRhdGVDb252ZXJzYXRpb25Vc2VyUGFyYW1zXG59IGZyb20gJy4uL3R5cGVzL2NvbnZlcnNhdGlvbnMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0ltYWdlVXJsRGF0YX0gZnJvbSAnLi4vdHlwZXMvaW1hZ2VzLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMvdXNlcnMudHlwZXMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnY29udmVyc2F0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnZlcnNhdGlvbk9wdGlvbnMgPSAob3B0aW9uczogQ29udmVyc2F0aW9uT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmcm9tID0gMCxcbiAgICB0byA9IDMwXG4gIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiB7XG4gICAgbGltaXQ6IGdldExpbWl0KGZyb20sIHRvKSBhcyBBcmFuZ29EYkxpbWl0XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9ucyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCB1c2VySWQ6IHN0cmluZywgb3B0aW9ucz8pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRDb252ZXJzYXRpb25zJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VDb252ZXJzYXRpb25PcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3VzZXJJZH1gO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EIFwiJHt1c2VyRG9jSWR9XCIgaGFzQ29udmVyc2F0aW9uXG4gICAgJHtsaW1pdC5hcWx9XG4gICAgTEVUIHVzZXJzID0gKFxuICAgICAgRk9SIHUsIHVjIElOIDEuLjEgSU5CT1VORCBjLl9pZCBoYXNDb252ZXJzYXRpb25cbiAgICAgIEZJTFRFUiB1Ll9pZCAhPSBcIiR7dXNlckRvY0lkfVwiXG4gICAgICBSRVRVUk4gdVxuICAgIClcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXJzOiB1c2Vyc30pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgQ29udmVyc2F0aW9uVHlwZVtdKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGlyZWN0Q29udmVyc2F0aW9uID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB7XG4gICAgZnJvbUlkLFxuICAgIHRvSWQsXG4gICAgdG9Vc2VyXG4gIH06IERpcmVjdENvbnZlcnNhdGlvblBhcmFtc1xuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldERpcmVjdENvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICB0cnkge1xuICAgIGNvbnN0IGZvcm1hdEZyb21JZCA9IHBhcnNlSWQoZnJvbUlkKTtcbiAgICBjb25zdCBmb3JtYXRUb0lkID0gcGFyc2VJZCh0b0lkKTtcbiAgICBjb25zdCB1c2VySWRzID0gW2Zvcm1hdEZyb21JZCwgZm9ybWF0VG9JZF07XG4gICAgY29uc3Qgc29ydGVkVXNlcklkcyA9IHNvcnRJZHModXNlcklkcyk7XG4gICAgY29uc3QgY29udmVyc2F0aW9uSWQgPSBjcmVhdGVIYXNoKGBjb252ZXJzYXRpb25zLSR7c29ydGVkVXNlcklkcy5qb2luKCctJyl9YCwgbnVsbCk7XG4gICAgY29uc3QgdXNlcjogVXNlclR5cGUgPSB0b1VzZXIgfHwgYXdhaXQgZ2V0VXNlcihjb250ZXh0LCB7dXNlcklkOiBmb3JtYXRUb0lkfSk7XG4gICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgYyA9IERPQ1VNRU5UKCR7YGNvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb25JZH1gfSkgUkVUVVJOIGNgO1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuXG4gICAgaWYoY29udmVyc2F0aW9uKSB7XG4gICAgICByZXR1cm4gey4uLmNvbnZlcnNhdGlvbiwgdXNlcnM6IFt1c2VyXX07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZERpcmVjdENvbnZlcnNhdGlvbihjb250ZXh0LCB7ZnJvbUlkLCB0b0lkLCB0b1VzZXI6IHVzZXJ9KTtcbiAgfSBjYXRjaChkYXRhYmFzZUVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBkYXRhYmFzZUVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGFkZERpcmVjdENvbnZlcnNhdGlvbiA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge1xuICAgIGZyb21JZCxcbiAgICB0b0lkLFxuICAgIHRvVXNlclxuICB9OiBEaXJlY3RDb252ZXJzYXRpb25QYXJhbXNcbik6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXREaXJlY3RDb252ZXJzYXRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmb3JtYXRGcm9tSWQgPSBwYXJzZUlkKGZyb21JZCk7XG4gICAgY29uc3QgZm9ybWF0VG9JZCA9IHBhcnNlSWQodG9JZCk7XG4gICAgY29uc3QgdXNlcklkcyA9IFtmb3JtYXRGcm9tSWQsIGZvcm1hdFRvSWRdO1xuICAgIGNvbnN0IHNvcnRlZFVzZXJJZHMgPSBzb3J0SWRzKFtmb3JtYXRGcm9tSWQsIGZvcm1hdFRvSWRdKTtcbiAgICBjb25zdCB1c2VyOiBVc2VyVHlwZSA9IHRvVXNlciB8fCBhd2FpdCBnZXRVc2VyKGNvbnRleHQsIHt1c2VySWQ6IGZvcm1hdFRvSWR9KTtcbiAgICBjb25zdCBjb252ZXJzYXRpb25JZCA9IGNyZWF0ZUhhc2goYGNvbnZlcnNhdGlvbnMtJHtzb3J0ZWRVc2VySWRzLmpvaW4oJy0nKX1gLCBudWxsKTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGluc2VydCA9IHtcbiAgICAgIF9rZXk6IGNvbnZlcnNhdGlvbklkLFxuICAgICAgYWRkZWQ6IG5vdyxcbiAgICAgIGlzRGlyZWN0OiB0cnVlLFxuICAgICAgbW9kaWZpZWQ6IG5vd1xuICAgIH07XG4gICAgY29uc3QgaW5zZXJ0UXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gY29udmVyc2F0aW9ucyBSRVRVUk4gTkVXYDtcbiAgICBjb25zdCB1cGRhdGVkQ29udmVyc2F0aW9uID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodXNlcklkcy5tYXAoKHVzZXJJZCkgPT4ge1xuICAgICAgY29uc3QgZWRnZUlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGBoYXNDb252ZXJzYXRpb24tJHt1c2VySWR9LSR7Y29udmVyc2F0aW9uSWR9YCk7XG4gICAgICBjb25zdCBlZGdlOiBFZGdlVHlwZSA9IHtcbiAgICAgICAgX2Zyb206IGB1c2Vycy8ke3VzZXJJZH1gLFxuICAgICAgICBfa2V5OiBlZGdlSWQsXG4gICAgICAgIF90bzogYGNvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb25JZH1gLFxuICAgICAgICBhZGRlZDogRGF0ZS5ub3coKVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGluc2VydEVkZ2VRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7ZWRnZX0gSU4gaGFzQ29udmVyc2F0aW9uIFJFVFVSTiBORVdgO1xuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoaW5zZXJ0RWRnZVF1ZXJ5KTtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gey4uLnVwZGF0ZWRDb252ZXJzYXRpb24sIHVzZXJzOiBbdXNlcl19O1xuICB9IGNhdGNoKGRhdGFiYXNlRXJyb3IpIHtcbiAgICBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZGF0YWJhc2VFcnJvciwgY29udGV4dCk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvblVzZXJzID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB7XG4gICAgY29udmVyc2F0aW9uSWQsXG4gICAgaW5jbHVkZUFsbCA9IGZhbHNlLFxuICAgIGlzRGlyZWN0XG4gIH06IENvbnZlcnNhdGlvblVzZXJzUGFyYW1zXG4pOiBQcm9taXNlPENvbm5lY3Rpb25UeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29ubmVjdGlvblVzZXJzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvblVzZXJJZH19ID0gY29udGV4dDtcbiAgY29uc3QgZmlsdGVyczogc3RyaW5nW10gPSBbJ2MudXNlcklkID09IHUuX2tleSddO1xuXG4gIGlmKCFpbmNsdWRlQWxsKSB7XG4gICAgZmlsdGVycy5wdXNoKGB1Ll9rZXkgIT0gJHtzZXNzaW9uVXNlcklkfWApO1xuICB9XG4gIGlmKGlzRGlyZWN0KSB7XG4gICAgZmlsdGVycy5wdXNoKGBwLnZlcnRpY2VzWzBdLmlzRGlyZWN0ID09ICR7aXNEaXJlY3R9YCk7XG4gIH1cblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiB1LCBlLHAgSU4gMS4uMSBJTkJPVU5EICR7YGNvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb25JZH1gfSBoYXNDb252ZXJzYXRpb25cbiAgICBPUFRJT05TIHt2ZXJ0ZXhDb2xsZWN0aW9uczogXCJ1c2Vyc1wifVxuICAgIEZPUiBjIElOIGNvbm5lY3Rpb25zXG4gICAgRklMVEVSICR7ZmlsdGVycy5qb2luKCcgJiYgJyl9XG4gICAgUkVUVVJOIGNgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBDb25uZWN0aW9uVHlwZVtdKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uVXNlcnMgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICBpbmNsdWRlQWxsID0gZmFsc2UsXG4gICAgaXNEaXJlY3RcbiAgfTogQ29udmVyc2F0aW9uVXNlcnNQYXJhbXNcbik6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldENvbnZlcnNhdGlvblVzZXJzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvblVzZXJJZH19ID0gY29udGV4dDtcbiAgY29uc3QgZmlsdGVyczogc3RyaW5nW10gPSBbJ2MudXNlcklkID09IHUuX2tleSddO1xuXG4gIGlmKCFpbmNsdWRlQWxsKSB7XG4gICAgZmlsdGVycy5wdXNoKGB1Ll9rZXkgIT0gJHtzZXNzaW9uVXNlcklkfWApO1xuICB9XG4gIGlmKGlzRGlyZWN0KSB7XG4gICAgZmlsdGVycy5wdXNoKGBwLnZlcnRpY2VzWzBdLmlzRGlyZWN0ID09ICR7aXNEaXJlY3R9YCk7XG4gIH1cblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiB1LCBlLHAgSU4gMS4uMSBJTkJPVU5EICR7YGNvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb25JZH1gfSBoYXNDb252ZXJzYXRpb25cbiAgICBPUFRJT05TIHt2ZXJ0ZXhDb2xsZWN0aW9uczogXCJ1c2Vyc1wifVxuICAgIEZJTFRFUiAke2ZpbHRlcnMuam9pbignICYmICcpfVxuICAgIFJFVFVSTiB1YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgQ29udmVyc2F0aW9uVHlwZVtdKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuXG4vLyBleHBvcnQgY29uc3QgZ2V0RGlyZWN0Q29udmVyc2F0aW9uT2xkID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4vLyAgIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldERpcmVjdENvbnZlcnNhdGlvbic7XG4vLyAgIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuLy8gICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuLy8gICBjb25zdCBmb3JtYXRVc2VySWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQodXNlcklkKTtcblxuLy8gICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCBmcm9tID0gKFxuLy8gICAgICAgRk9SIGMsIGUgSU4gMS4uMSBPVVRCT1VORCAke3Nlc3Npb25Eb2NJZH0gaGFzQ29udmVyc2F0aW9uXG4vLyAgICAgICBGSUxURVIgYy5kaXJlY3QgPT0gdHJ1ZVxuLy8gICAgICAgUkVUVVJOIGNcbi8vICAgICApXG4vLyAgICAgTEVUIHRvID0gKFxuLy8gICAgICAgRk9SIGMsIGUgSU4gMS4uMSBPVVRCT1VORCAke2Zvcm1hdFVzZXJJZH0gaGFzQ29udmVyc2F0aW9uXG4vLyAgICAgICBGSUxURVIgYy5kaXJlY3QgPT0gdHJ1ZVxuLy8gICAgICAgUkVUVVJOIGNcbi8vICAgICApXG4vLyAgICAgTEVUIGNvbnZlcnNhdGlvbiA9IEZJUlNUKElOVEVSU0VDVElPTihmcm9tLCB0bykpXG4vLyAgICAgTEVUIHVzZXJzID0gIUlTX05VTEwoY29udmVyc2F0aW9uKSAmJiAoXG4vLyAgICAgICBGT1IgZyBJTlske3Nlc3Npb25Eb2NJZH0sICR7Zm9ybWF0VXNlcklkfV1cbi8vICAgICAgIEZPUiB1IElOIHVzZXJzXG4vLyAgICAgICBGSUxURVIgZyA9PSB1Ll9pZFxuLy8gICAgICAgUkVUVVJOIHVcbi8vICAgICApXG4vLyAgICAgUkVUVVJOIElTX05VTEwoY29udmVyc2F0aW9uKSA/IG51bGwgOiBNRVJHRShjb252ZXJzYXRpb24sIHt1c2VyczogdXNlcnN9KWA7XG5cbi8vICAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbi8vICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuLy8gICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4vLyAgICAgICBhY3Rpb24sXG4vLyAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbi8vICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4vLyAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbi8vIH07XG5cbmV4cG9ydCBjb25zdCBnZXRDb252ZXJzYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgY29udmVyc2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBjb252ZXJzYXRpb25Eb2NJZDogc3RyaW5nID0gYGNvbnZlcnNhdGlvbnMvJHtwYXJzZUlkKGNvbnZlcnNhdGlvbklkKX1gO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGMsIGUgSU4gMS4uMSBPVVRCT1VORCAke3Nlc3Npb25Eb2NJZH0gaGFzQ29udmVyc2F0aW9uXG4gICAgRklMVEVSIGMuX2lkID09ICR7Y29udmVyc2F0aW9uRG9jSWR9XG4gICAgTEVUIHUgPSAoXG4gICAgICBGT1IgaW5Vc2VyLCBpbkVkZ2UgSU4gMS4uMSBJTkJPVU5EICR7Y29udmVyc2F0aW9uRG9jSWR9IGhhc0NvbnZlcnNhdGlvblxuICAgICAgUkVUVVJOIGluVXNlclxuICAgIClcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIE1FUkdFKGMsIHt1c2VyczogdX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBpZighY29udmVyc2F0aW9uKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cblxuICAgICAgY29udmVyc2F0aW9uLnVzZXJzID0gY29udmVyc2F0aW9uLnVzZXJzLm1hcCgodXNlcjogVXNlclR5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge2ltYWdlSWQsIHVzZXJJZH0gPSB1c2VyO1xuICAgICAgICBjb25zdCB0aHVtYlVybERhdGE6IEltYWdlVXJsRGF0YSA9IHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ3RodW1icycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICB0eXBlOiAndXNlcnMnLFxuICAgICAgICAgIHR5cGVJZDogdXNlcklkXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgIG5hbWU6IGdldERpc3BsYXlOYW1lKHVzZXIpLFxuICAgICAgICAgIHRodW1iOiBnZXRJbWFnZVVybCh0aHVtYlVybERhdGEpXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbnZlcnNhdGlvbjtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVDb252ZXJzYXRpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZVxuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZUNvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGNvbnZlcnNhdGlvbklkID0gY3JlYXRlSGFzaChgY29udmVyc2F0aW9uLSR7c2Vzc2lvbklkfSBgKSxcbiAgICBpc0RpcmVjdCA9IGZhbHNlLFxuICAgIG5hbWVcbiAgfSA9IGNvbnZlcnNhdGlvbjtcbiAgY29uc3QgZm9ybWF0Q29udmVyc2F0aW9uSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udmVyc2F0aW9uSWQpO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICBpc0RpcmVjdCxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIG5hbWVcbiAgfTtcblxuICBjb25zdCBpbnNlcnQgPSB7XG4gICAgLi4uY2xvbmVEZWVwKHVwZGF0ZSksXG4gICAgX2tleTogZm9ybWF0Q29udmVyc2F0aW9uSWQsXG4gICAgYWRkZWQ6IG5vd1xuICB9O1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtfa2V5OiAke2Zvcm1hdENvbnZlcnNhdGlvbklkfSB9XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IGNvbnZlcnNhdGlvbilcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkVXNlclRvQ29udmVyc2F0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB7XG4gICAgY29udmVyc2F0aW9uSWQsXG4gICAgdXNlcklkXG4gIH06IFVwZGF0ZUNvbnZlcnNhdGlvblVzZXJQYXJhbXNcbik6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRVc2VyVG9Db252ZXJzYXRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdENvbnZlcnNhdGlvbklkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZlcnNhdGlvbklkKTtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbkRvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke2Zvcm1hdENvbnZlcnNhdGlvbklkfWA7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7Zm9ybWF0VXNlcklkfWA7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaGMgSU4gaGFzQ29udmVyc2F0aW9uXG4gICAgRklMVEVSIGhjLl9mcm9tID09ICR7dXNlckRvY0lkfSAmJiBoYy5fdG8gPT0gJHtjb252ZXJzYXRpb25Eb2NJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIGhjYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoaGFzQ29udmVyc2F0aW9uRWRnZSkgPT4ge1xuICAgICAgaWYoISFoYXNDb252ZXJzYXRpb25FZGdlKSB7XG4gICAgICAgIHJldHVybiBoYXNDb252ZXJzYXRpb25FZGdlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlZGdlQ29sbGVjdGlvbjogRWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oJ2hhc0NvbnZlcnNhdGlvbicpO1xuICAgICAgY29uc3QgZWRnZUlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGBjb252byAtICR7Zm9ybWF0Q29udmVyc2F0aW9uSWR9IC0ke2Zvcm1hdFVzZXJJZH0gYCk7XG5cbiAgICAgIGNvbnN0IGVkZ2U6IENvbnZlcnNhdGlvblR5cGUgPSB7XG4gICAgICAgIF9mcm9tOiB1c2VyRG9jSWQsXG4gICAgICAgIF9rZXk6IGVkZ2VJZCxcbiAgICAgICAgX3RvOiBjb252ZXJzYXRpb25Eb2NJZCxcbiAgICAgICAgYWRkZWQ6IERhdGUubm93KClcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBlZGdlQ29sbGVjdGlvblxuICAgICAgICAuc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSlcbiAgICAgICAgLnRoZW4oKCkgPT4gZWRnZSk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlVXNlckZyb21Db252ZXJzYXRpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICB1c2VySWRcbiAgfTogVXBkYXRlQ29udmVyc2F0aW9uVXNlclBhcmFtc1xuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZVVzZXJGcm9tQ29udmVyc2F0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252ZXJzYXRpb25JZDogc3RyaW5nID0gcGFyc2VJZChjb252ZXJzYXRpb25JZCk7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBjb252ZXJzYXRpb25Eb2NJZDogc3RyaW5nID0gYGNvbnZlcnNhdGlvbnMvJHtmb3JtYXRDb252ZXJzYXRpb25JZH1gO1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke2Zvcm1hdFVzZXJJZH1gO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGhjIElOIGhhc0NvbnZlcnNhdGlvblxuICAgIEZJTFRFUiBoYy5fZnJvbSA9PSAke3VzZXJEb2NJZH0gJiYgaGMuX3RvID09ICR7Y29udmVyc2F0aW9uRG9jSWR9XG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSBoYyBJTiBoYXNDb252ZXJzYXRpb25cbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxhQUFBQSxNQUFnQiw2QkFDeEIsT0FBUSxjQUFBQyxFQUFZLFdBQUFDLE1BQWMsK0JBQ2xDLE9BQVEsT0FBQUMsTUFBVSxXQUNsQixPQUFRLFVBQUFDLE1BQWEsZUFDckIsT0FBUSxjQUFBQyxNQUFpQiwwQkFDekIsT0FBUSxZQUFBQyxNQUFlLDZCQUN2QixPQUFRLFlBQUFDLEVBQVUsV0FBQUMsRUFBUyxTQUFBQyxNQUFZLDRCQUN2QyxPQUFRLGVBQUFDLE1BQWtCLGNBQzFCLE9BQVEsa0JBQUFDLEVBQWdCLFdBQUFDLE1BQWMsYUFpQnRDLE1BQU1DLEVBQXdCLGdCQUVqQkMsRUFBMkIsQ0FBQ0MsRUFBK0IsQ0FBQyxJQUFNLENBQzdFLEtBQU0sQ0FDSixLQUFBQyxFQUFPLEVBQ1AsR0FBQUMsRUFBSyxFQUNQLEVBQUlGLEVBRUosTUFBTyxDQUNMLE1BQU9SLEVBQVNTLEVBQU1DLENBQUUs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akQsRUFDQSxDQUNFLGVBQUFnQixFQUNBLE9BQUFmLENBQ0YsSUFDOEIsQ0FDOUIsTUFBTUMsRUFBaUIsNkJBQ2pCLENBQUMsYUFBQUMsQ0FBWSxFQUFJSCxFQUNqQjBDLEVBQStCM0QsRUFBUWlDLENBQWMsRUFDckQ4QixFQUF1Qi9ELEVBQVFrQixDQUFNLEVBQ3JDb0MsRUFBNEIsaUJBQWlCSyxDQUFvQixHQUNqRXJDLEVBQW9CLFNBQVN5QyxDQUFZLEdBRXpDeEMsRUFBbUJ0QjtBQUFBLHlCQUNGcUIsQ0FBUyxpQkFBaUJnQyxDQUFpQjtBQUFBO0FBQUE7QUFBQSxnQkFLbEUsT0FBTy9DLEVBQU1hLENBQVksRUFBRSxNQUFNRyxDQUFNLEVBQ3BDLEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLE1BQU9DLEdBQWlCckIsRUFBUyxDQUNoQyxPQUFBZSxFQUNBLFNBQVVSLEVBQ1YsTUFBT1IsRUFBVyxjQUNwQixFQUFHc0IsRUFBT1IsQ0FBTyxDQUFDLENBQ3RCIiwKICAibmFtZXMiOiBbImNsb25lRGVlcCIsICJjcmVhdGVIYXNoIiwgInBhcnNlSWQiLCAiYXFsIiwgIkNvbmZpZyIsICJFcnJvclR5cGVzIiwgImxvZ0Vycm9yIiwgImdldExpbWl0IiwgInNvcnRJZHMiLCAidXNlRGIiLCAiZ2V0SW1hZ2VVcmwiLCAiZ2V0RGlzcGxheU5hbWUiLCAiZ2V0VXNlciIsICJldmVudENhdGVnb3J5IiwgInBhcnNlQ29udmVyc2F0aW9uT3B0aW9ucyIsICJvcHRpb25zIiwgImZyb20iLCAidG8iLCAiZ2V0Q29udmVyc2F0aW9ucyIsICJjb250ZXh0IiwgInVzZXJJZCIsICJhY3Rpb24iLCAiZGF0YWJhc2VOYW1lIiwgImxpbWl0IiwgInVzZXJEb2NJZCIsICJhcWxRcnkiLCAiY3Vyc29yIiwgImVycm9yIiwgImdldERpcmVjdENvbnZlcnNhdGlvbiIsICJmcm9tSWQiLCAidG9JZCIsICJ0b1VzZXIiLCAiZm9ybWF0RnJvbUlkIiwgImZvcm1hdFRvSWQiLCAic29ydGVkVXNlcklkcyIsICJjb252ZXJzYXRpb25JZCIsICJ1c2VyIiwgImNvbnZlcnNhdGlvbiIsICJhZGREaXJlY3RDb252ZXJzYXRpb24iLCAiZGF0YWJhc2VFcnJvciIsICJ1c2VySWRzIiwgIm5vdyIsICJpbnNlcnRRdWVyeSIsICJ1cGRhdGVkQ29udmVyc2F0aW9uIiwgImVkZ2VJZCIsICJlZGdlIiwgImluc2VydEVkZ2VRdWVyeSIsICJnZXRDb25uZWN0aW9uVXNlcnMiLCAiaW5jbHVkZUFsbCIsICJpc0RpcmVjdCIsICJzZXNzaW9uVXNlcklkIiwgImZpbHRlcnMiLCAiZ2V0Q29udmVyc2F0aW9uVXNlcnMiLCAiZ2V0Q29udmVyc2F0aW9uIiwgInNlc3Npb25JZCIsICJzZXNzaW9uRG9jSWQiLCAiY29udmVyc2F0aW9uRG9jSWQiLCAiaW1hZ2VJZCIsICJ0aHVtYlVybERhdGEiLCAidXBkYXRlQ29udmVyc2F0aW9uIiwgIm5hbWUiLCAiZm9ybWF0Q29udmVyc2F0aW9uSWQiLCAidXBkYXRlIiwgImluc2VydCIsICJhZGRVc2VyVG9Db252ZXJzYXRpb24iLCAiZm9ybWF0VXNlcklkIiwgImhhc0NvbnZlcnNhdGlvbkVkZ2UiLCAiZWRnZUNvbGxlY3Rpb24iLCAiZGVsZXRlVXNlckZyb21Db252ZXJzYXRpb24iXQp9Cg==
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ import { BatchWriteItemCommandInput, BatchWriteItemCommandOutput, DeleteItemCommandInput, DeleteItemCommandOutput, GetItemCommandInput, GetItemCommandOutput, PutItemCommandInput, PutItemCommandOutput, QueryCommandInput, QueryCommandOutput, UpdateItemCommandInput, UpdateItemCommandOutput } from '@aws-sdk/client-dynamodb';
6
+ export declare const dynamoGet: (params: GetItemCommandInput) => Promise<GetItemCommandOutput>;
7
+ export declare const parseDynamoList: (results: QueryCommandOutput) => any[];
8
+ export declare const dynamoGetList: (params: QueryCommandInput, startItem?: any) => Promise<GetItemCommandOutput[]>;
9
+ export declare const dynamoPut: (params: PutItemCommandInput) => Promise<PutItemCommandOutput>;
10
+ export declare const dynamoUpdate: (params: UpdateItemCommandInput) => Promise<UpdateItemCommandOutput>;
11
+ export declare const dynamoPutList: (params: BatchWriteItemCommandInput) => Promise<BatchWriteItemCommandOutput>;
12
+ export declare const dynamoDel: (params: DeleteItemCommandInput) => Promise<DeleteItemCommandOutput>;
@@ -1,2 +1,2 @@
1
- import{DynamoDB as s}from"@aws-sdk/client-dynamodb";import{Config as d}from"../config";const U=n=>new Promise((m,o)=>{const r=new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")});n.ConsistentRead=!1,r.getItem(n,(e,t)=>e?o(e):m(t))}),c=n=>{const{Items:m=[]}=n,o=[];for(let r=0,e=m.length;r<e;r++){const t=m[r],u={};let a;for(a in t)t.hasOwnProperty(a)&&(t[a].S?u[a]=t[a].S.toString():t[a].N?u[a]=parseFloat(t[a].N):u[a]=t[a].B);o.push(u)}return o},C=(n,m)=>new Promise((o,r)=>{const e=new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}),{ConsistentRead:t}=n,u={...n};m&&(u.ExclusiveStartKey=m),t||(u.ConsistentRead=!1);const a=[];e.query(u,(i,p)=>{if(i)return r(i);a.push(...c(p)||[]);const{LastEvaluatedKey:I}=p;return I!==void 0?C(n,I):o(a)})}),W=n=>new Promise((m,o)=>{new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}).putItem(n,(e,t)=>e?o(e):m(t))}),Q=n=>new Promise((m,o)=>{new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}).updateItem(n,(e,t)=>e?o(e):m(t))}),L=n=>new Promise((m,o)=>{new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}).batchWriteItem(n,(e,t)=>e?o(e):m(t))}),R=n=>new Promise((m,o)=>{new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}).deleteItem(n,(e,t)=>e?o(e):m(t))});export{R as dynamoDel,U as dynamoGet,C as dynamoGetList,W as dynamoPut,L as dynamoPutList,Q as dynamoUpdate,c as parseDynamoList};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZHluYW1vZGIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1xuICBCYXRjaFdyaXRlSXRlbUNvbW1hbmRJbnB1dCxcbiAgQmF0Y2hXcml0ZUl0ZW1Db21tYW5kT3V0cHV0LFxuICBEZWxldGVJdGVtQ29tbWFuZElucHV0LFxuICBEZWxldGVJdGVtQ29tbWFuZE91dHB1dCxcbiAgRHluYW1vREIsXG4gIEdldEl0ZW1Db21tYW5kSW5wdXQsXG4gIEdldEl0ZW1Db21tYW5kT3V0cHV0LFxuICBQdXRJdGVtQ29tbWFuZElucHV0LFxuICBQdXRJdGVtQ29tbWFuZE91dHB1dCxcbiAgUXVlcnlDb21tYW5kSW5wdXQsXG4gIFF1ZXJ5Q29tbWFuZE91dHB1dCxcbiAgVXBkYXRlSXRlbUNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlSXRlbUNvbW1hbmRPdXRwdXRcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdkeW5hbW9kYic7XG5leHBvcnQgY29uc3QgZHluYW1vR2V0ID0gKHBhcmFtczogR2V0SXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0SXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuICAgIHBhcmFtcy5Db25zaXN0ZW50UmVhZCA9IGZhbHNlO1xuXG4gICAgZHluYW1vZGIuZ2V0SXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIHJlc3VsdHM6IEdldEl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUocmVzdWx0cyk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEeW5hbW9MaXN0ID0gKHJlc3VsdHM6IFF1ZXJ5Q29tbWFuZE91dHB1dCk6IGFueVtdID0+IHtcbiAgY29uc3Qge0l0ZW1zOiBpdGVtcyA9IFtdfSA9IHJlc3VsdHM7XG4gIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG5cblxuICBmb3IobGV0IGlkeDogbnVtYmVyID0gMCwgbGVuID0gaXRlbXMubGVuZ3RoOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY29uc3QgdG1wID0gaXRlbXNbaWR4XTtcbiAgICBjb25zdCBvYmogPSB7fTtcbiAgICBsZXQga2V5O1xuXG4gICAgZm9yKGtleSBpbiB0bXApIHtcbiAgICAgIGlmKHRtcC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmKHRtcFtrZXldLlMpIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHRtcFtrZXldLlMudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmKHRtcFtrZXldLk4pIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHBhcnNlRmxvYXQodG1wW2tleV0uTik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JqW2tleV0gPSB0bXBba2V5XS5CO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGF0YS5wdXNoKG9iaik7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9HZXRMaXN0ID0gKHBhcmFtczogUXVlcnlDb21tYW5kSW5wdXQsIHN0YXJ0SXRlbT8pOiBQcm9taXNlPEdldEl0ZW1Db21tYW5kT3V0cHV0W10+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuICAgIGNvbnN0IHtDb25zaXN0ZW50UmVhZDogY29uc2lzdGVudFJlYWR9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHVwZGF0ZWRQYXJhbXMgPSB7Li4ucGFyYW1zfTtcblxuICAgIGlmKHN0YXJ0SXRlbSkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5FeGNsdXNpdmVTdGFydEtleSA9IHN0YXJ0SXRlbTtcbiAgICB9XG5cbiAgICBpZighY29uc2lzdGVudFJlYWQpIHtcbiAgICAgIHVwZGF0ZWRQYXJhbXMuQ29uc2lzdGVudFJlYWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gW107XG5cbiAgICBkeW5hbW9kYi5xdWVyeSh1cGRhdGVkUGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFF1ZXJ5Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaCguLi4ocGFyc2VEeW5hbW9MaXN0KG91dHB1dCkgfHwgW10pKTtcblxuICAgICAgY29uc3Qge0xhc3RFdmFsdWF0ZWRLZXk6IGxhc3RLZXl9ID0gb3V0cHV0O1xuXG4gICAgICBpZihsYXN0S2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGR5bmFtb0dldExpc3QocGFyYW1zLCBsYXN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUobGlzdCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0ID0gKHBhcmFtczogUHV0SXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0SXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIucHV0SXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBQdXRJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1VwZGF0ZSA9IChwYXJhbXM6IFVwZGF0ZUl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUl0ZW1Db21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIGR5bmFtb2RiLnVwZGF0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFVwZGF0ZUl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0TGlzdCA9IChwYXJhbXM6IEJhdGNoV3JpdGVJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxCYXRjaFdyaXRlSXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIuYmF0Y2hXcml0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEJhdGNoV3JpdGVJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0RlbCA9IChwYXJhbXM6IERlbGV0ZUl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZUl0ZW1Db21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIGR5bmFtb2RiLmRlbGV0ZUl0ZW0ocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogRGVsZXRlSXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUtFLFlBQUFBLE1BU0ssMkJBRVAsT0FBUSxVQUFBQyxNQUFhLFlBR2QsTUFBTUMsRUFBYUMsR0FDeEIsSUFBSSxRQUFRLENBQUNDLEVBQVNDLElBQVcsQ0FDL0IsTUFBTUMsRUFBVyxJQUFJTixFQUFTLENBQzVCLFlBQWFDLEVBQU8sSUFBSSxpQkFBaUIsRUFDekMsT0FBUUEsRUFBTyxJQUFJLFlBQVksQ0FDakMsQ0FBQyxFQUNERSxFQUFPLGVBQWlCLEdBRXhCRyxFQUFTLFFBQVFILEVBQVEsQ0FBQ0ksRUFBY0MsSUFDbkNELEVBQ01GLEVBQU9FLENBQUssRUFHZEgsRUFBUUksQ0FBTyxDQUN2QixDQUNILENBQUMsRUFFVUMsRUFBbUJELEdBQXVDLENBQ3JFLEtBQU0sQ0FBQyxNQUFPRSxFQUFRLENBQUMsQ0FBQyxFQUFJRixFQUN0QkcsRUFBYyxDQUFDLEVBR3JCLFFBQVFDLEVBQWMsRUFBR0MsRUFBTUgsRUFBTSxPQUFRRSxFQUFNQyxFQUFLRCxJQUFPLENBQzdELE1BQU1FLEVBQU1KLEVBQU1FLENBQUcsRUFDZkcsRUFBTSxDQUFDLEVBQ2IsSUFBSUMsRUFFSixJQUFJQSxLQUFPRixFQUNOQSxFQUFJLGVBQWVFLENBQUcsSUFDcEJGLEVBQUlFLENBQUcsRUFBRSxFQUNWRCxFQUFJQyxDQUFHLEVBQUlGLEVBQUlFLENBQUcsRUFBRSxFQUFFLFNBQVMsRUFDdkJGLEVBQUlFLENBQUcsRUFBRSxFQUNqQkQsRUFBSUMsQ0FBRyxFQUFJLFdBQVdGLEVBQUlFLENBQUcsRUFBRSxDQUFDLEVBRWhDRCxFQUFJQyxDQUFHLEVBQUlGLEVBQUlFLENBQUcsRUFBRSxHQUsxQkwsRUFBSyxLQUFLSSxDQUFHLENBQ2YsQ0FFQSxPQUFPSixDQUNULEVBRWFNLEVBQWdCLENBQUNkLEVBQTJCZSxJQUN2RCxJQUFJLFFBQVEsQ0FBQ2QsRUFBU0MsSUFBVyxDQUMvQixNQUFNQyxFQUFXLElBQUlOLEVBQVMsQ0FDNUIsWUFBYUMsRUFBTyxJQUFJLGlCQUFpQixFQUN6QyxPQUFRQSxFQUFPLElBQUksWUFBWSxDQUNqQyxDQUFDLEVBQ0ssQ0FBQyxlQUFnQmtCLENBQWMsRUFBSWhCLEVBQ25DaUIsRUFBZ0IsQ0FBQyxHQUFHakIsQ0FBTSxFQUU3QmUsSUFDREUsRUFBYyxrQkFBb0JGLEdBR2hDQyxJQUNGQyxFQUFjLGVBQWlCLElBR2pDLE1BQU1DLEVBQU8sQ0FBQyxFQUVkZixFQUFTLE1BQU1jLEVBQWUsQ0FBQ2IsRUFBY2UsSUFBK0IsQ0FDMUUsR0FBR2YsRUFDRCxPQUFPRixFQUFPRSxDQUFLLEVBR3JCYyxFQUFLLEtBQUssR0FBSVosRUFBZ0JhLENBQU0sR0FBSyxDQUFDLENBQUUsRUFFNUMsS0FBTSxDQUFDLGlCQUFrQkMsQ0FBTyxFQUFJRCxFQUVwQyxPQUFHQyxJQUFZLE9BQ05OLEVBQWNkLEVBQVFvQixDQUFPLEVBRy9CbkIsRUFBUWlCLENBQUksQ0FDckIsQ0FBQyxDQUNILENBQUMsRUFFVUcsRUFBYXJCLEdBQ3hCLElBQUksUUFBUSxDQUFDQyxFQUFTQyxJQUFXLENBQ2QsSUFBSUwsRUFBUyxDQUM1QixZQUFhQyxFQUFPLElBQUksaUJBQWlCLEVBQ3pDLE9BQVFBLEVBQU8sSUFBSSxZQUFZLENBQ2pDLENBQUMsRUFFUSxRQUFRRSxFQUFRLENBQUNJLEVBQU9lLElBQzVCZixFQUNNRixFQUFPRSxDQUFLLEVBRWRILEVBQVFrQixDQUFNLENBQ3RCLENBQ0gsQ0FBQyxFQUVVRyxFQUFnQnRCLEdBQzNCLElBQUksUUFBUSxDQUFDQyxFQUFTQyxJQUFXLENBQ2QsSUFBSUwsRUFBUyxDQUM1QixZQUFhQyxFQUFPLElBQUksaUJBQWlCLEVBQ3pDLE9BQVFBLEVBQU8sSUFBSSxZQUFZLENBQ2pDLENBQUMsRUFFUSxXQUFXRSxFQUFRLENBQUNJLEVBQWNlLElBQ3RDZixFQUNNRixFQUFPRSxDQUFLLEVBRWRILEVBQVFrQixDQUFNLENBQ3RCLENBQ0gsQ0FBQyxFQUVVSSxFQUFpQnZCLEdBQzVCLElBQUksUUFBUSxDQUFDQyxFQUFTQyxJQUFXLENBQ2QsSUFBSUwsRUFBUyxDQUM1QixZQUFhQyxFQUFPLElBQUksaUJBQWlCLEVBQ3pDLE9BQVFBLEVBQU8sSUFBSSxZQUFZLENBQ2pDLENBQUMsRUFFUSxlQUFlRSxFQUFRLENBQUNJLEVBQWNlLElBQzFDZixFQUNNRixFQUFPRSxDQUFLLEVBRWRILEVBQVFrQixDQUFNLENBQ3RCLENBQ0gsQ0FBQyxFQUVVSyxFQUFheEIsR0FDeEIsSUFBSSxRQUFRLENBQUNDLEVBQVNDLElBQVcsQ0FDZCxJQUFJTCxFQUFTLENBQzVCLFlBQWFDLEVBQU8sSUFBSSxpQkFBaUIsRUFDekMsT0FBUUEsRUFBTyxJQUFJLFlBQVksQ0FDakMsQ0FBQyxFQUVRLFdBQVdFLEVBQVEsQ0FBQ0ksRUFBT2UsSUFDL0JmLEVBQ01GLEVBQU9FLENBQUssRUFFZEgsRUFBUWtCLENBQU0sQ0FDdEIsQ0FDSCxDQUFDIiwKICAibmFtZXMiOiBbIkR5bmFtb0RCIiwgIkNvbmZpZyIsICJkeW5hbW9HZXQiLCAicGFyYW1zIiwgInJlc29sdmUiLCAicmVqZWN0IiwgImR5bmFtb2RiIiwgImVycm9yIiwgInJlc3VsdHMiLCAicGFyc2VEeW5hbW9MaXN0IiwgIml0ZW1zIiwgImRhdGEiLCAiaWR4IiwgImxlbiIsICJ0bXAiLCAib2JqIiwgImtleSIsICJkeW5hbW9HZXRMaXN0IiwgInN0YXJ0SXRlbSIsICJjb25zaXN0ZW50UmVhZCIsICJ1cGRhdGVkUGFyYW1zIiwgImxpc3QiLCAib3V0cHV0IiwgImxhc3RLZXkiLCAiZHluYW1vUHV0IiwgImR5bmFtb1VwZGF0ZSIsICJkeW5hbW9QdXRMaXN0IiwgImR5bmFtb0RlbCJdCn0K
1
+ import{DynamoDB as s}from"@aws-sdk/client-dynamodb";import{Config as d}from"../config.js";const U=n=>new Promise((m,o)=>{const r=new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")});n.ConsistentRead=!1,r.getItem(n,(e,t)=>e?o(e):m(t))}),c=n=>{const{Items:m=[]}=n,o=[];for(let r=0,e=m.length;r<e;r++){const t=m[r],u={};let a;for(a in t)t.hasOwnProperty(a)&&(t[a].S?u[a]=t[a].S.toString():t[a].N?u[a]=parseFloat(t[a].N):u[a]=t[a].B);o.push(u)}return o},C=(n,m)=>new Promise((o,r)=>{const e=new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}),{ConsistentRead:t}=n,u={...n};m&&(u.ExclusiveStartKey=m),t||(u.ConsistentRead=!1);const a=[];e.query(u,(i,p)=>{if(i)return r(i);a.push(...c(p)||[]);const{LastEvaluatedKey:I}=p;return I!==void 0?C(n,I):o(a)})}),W=n=>new Promise((m,o)=>{new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}).putItem(n,(e,t)=>e?o(e):m(t))}),Q=n=>new Promise((m,o)=>{new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}).updateItem(n,(e,t)=>e?o(e):m(t))}),L=n=>new Promise((m,o)=>{new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}).batchWriteItem(n,(e,t)=>e?o(e):m(t))}),R=n=>new Promise((m,o)=>{new s({credentials:d.get("aws.credentials"),region:d.get("aws.region")}).deleteItem(n,(e,t)=>e?o(e):m(t))});export{R as dynamoDel,U as dynamoGet,C as dynamoGetList,W as dynamoPut,L as dynamoPutList,Q as dynamoUpdate,c as parseDynamoList};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZHluYW1vZGIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1xuICBCYXRjaFdyaXRlSXRlbUNvbW1hbmRJbnB1dCxcbiAgQmF0Y2hXcml0ZUl0ZW1Db21tYW5kT3V0cHV0LFxuICBEZWxldGVJdGVtQ29tbWFuZElucHV0LFxuICBEZWxldGVJdGVtQ29tbWFuZE91dHB1dCxcbiAgRHluYW1vREIsXG4gIEdldEl0ZW1Db21tYW5kSW5wdXQsXG4gIEdldEl0ZW1Db21tYW5kT3V0cHV0LFxuICBQdXRJdGVtQ29tbWFuZElucHV0LFxuICBQdXRJdGVtQ29tbWFuZE91dHB1dCxcbiAgUXVlcnlDb21tYW5kSW5wdXQsXG4gIFF1ZXJ5Q29tbWFuZE91dHB1dCxcbiAgVXBkYXRlSXRlbUNvbW1hbmRJbnB1dCxcbiAgVXBkYXRlSXRlbUNvbW1hbmRPdXRwdXRcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdkeW5hbW9kYic7XG5leHBvcnQgY29uc3QgZHluYW1vR2V0ID0gKHBhcmFtczogR2V0SXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0SXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuICAgIHBhcmFtcy5Db25zaXN0ZW50UmVhZCA9IGZhbHNlO1xuXG4gICAgZHluYW1vZGIuZ2V0SXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIHJlc3VsdHM6IEdldEl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUocmVzdWx0cyk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEeW5hbW9MaXN0ID0gKHJlc3VsdHM6IFF1ZXJ5Q29tbWFuZE91dHB1dCk6IGFueVtdID0+IHtcbiAgY29uc3Qge0l0ZW1zOiBpdGVtcyA9IFtdfSA9IHJlc3VsdHM7XG4gIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG5cblxuICBmb3IobGV0IGlkeDogbnVtYmVyID0gMCwgbGVuID0gaXRlbXMubGVuZ3RoOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY29uc3QgdG1wID0gaXRlbXNbaWR4XTtcbiAgICBjb25zdCBvYmogPSB7fTtcbiAgICBsZXQga2V5O1xuXG4gICAgZm9yKGtleSBpbiB0bXApIHtcbiAgICAgIGlmKHRtcC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmKHRtcFtrZXldLlMpIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHRtcFtrZXldLlMudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmKHRtcFtrZXldLk4pIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHBhcnNlRmxvYXQodG1wW2tleV0uTik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JqW2tleV0gPSB0bXBba2V5XS5CO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGF0YS5wdXNoKG9iaik7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9HZXRMaXN0ID0gKHBhcmFtczogUXVlcnlDb21tYW5kSW5wdXQsIHN0YXJ0SXRlbT8pOiBQcm9taXNlPEdldEl0ZW1Db21tYW5kT3V0cHV0W10+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuICAgIGNvbnN0IHtDb25zaXN0ZW50UmVhZDogY29uc2lzdGVudFJlYWR9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHVwZGF0ZWRQYXJhbXMgPSB7Li4ucGFyYW1zfTtcblxuICAgIGlmKHN0YXJ0SXRlbSkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5FeGNsdXNpdmVTdGFydEtleSA9IHN0YXJ0SXRlbTtcbiAgICB9XG5cbiAgICBpZighY29uc2lzdGVudFJlYWQpIHtcbiAgICAgIHVwZGF0ZWRQYXJhbXMuQ29uc2lzdGVudFJlYWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gW107XG5cbiAgICBkeW5hbW9kYi5xdWVyeSh1cGRhdGVkUGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFF1ZXJ5Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaCguLi4ocGFyc2VEeW5hbW9MaXN0KG91dHB1dCkgfHwgW10pKTtcblxuICAgICAgY29uc3Qge0xhc3RFdmFsdWF0ZWRLZXk6IGxhc3RLZXl9ID0gb3V0cHV0O1xuXG4gICAgICBpZihsYXN0S2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGR5bmFtb0dldExpc3QocGFyYW1zLCBsYXN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUobGlzdCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0ID0gKHBhcmFtczogUHV0SXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0SXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIucHV0SXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBQdXRJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1VwZGF0ZSA9IChwYXJhbXM6IFVwZGF0ZUl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUl0ZW1Db21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIGR5bmFtb2RiLnVwZGF0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFVwZGF0ZUl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0TGlzdCA9IChwYXJhbXM6IEJhdGNoV3JpdGVJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxCYXRjaFdyaXRlSXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIuYmF0Y2hXcml0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEJhdGNoV3JpdGVJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0RlbCA9IChwYXJhbXM6IERlbGV0ZUl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZUl0ZW1Db21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIGR5bmFtb2RiLmRlbGV0ZUl0ZW0ocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogRGVsZXRlSXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUtFLFlBQUFBLE1BU0ssMkJBRVAsT0FBUSxVQUFBQyxNQUFhLGVBR2QsTUFBTUMsRUFBYUMsR0FDeEIsSUFBSSxRQUFRLENBQUNDLEVBQVNDLElBQVcsQ0FDL0IsTUFBTUMsRUFBVyxJQUFJTixFQUFTLENBQzVCLFlBQWFDLEVBQU8sSUFBSSxpQkFBaUIsRUFDekMsT0FBUUEsRUFBTyxJQUFJLFlBQVksQ0FDakMsQ0FBQyxFQUNERSxFQUFPLGVBQWlCLEdBRXhCRyxFQUFTLFFBQVFILEVBQVEsQ0FBQ0ksRUFBY0MsSUFDbkNELEVBQ01GLEVBQU9FLENBQUssRUFHZEgsRUFBUUksQ0FBTyxDQUN2QixDQUNILENBQUMsRUFFVUMsRUFBbUJELEdBQXVDLENBQ3JFLEtBQU0sQ0FBQyxNQUFPRSxFQUFRLENBQUMsQ0FBQyxFQUFJRixFQUN0QkcsRUFBYyxDQUFDLEVBR3JCLFFBQVFDLEVBQWMsRUFBR0MsRUFBTUgsRUFBTSxPQUFRRSxFQUFNQyxFQUFLRCxJQUFPLENBQzdELE1BQU1FLEVBQU1KLEVBQU1FLENBQUcsRUFDZkcsRUFBTSxDQUFDLEVBQ2IsSUFBSUMsRUFFSixJQUFJQSxLQUFPRixFQUNOQSxFQUFJLGVBQWVFLENBQUcsSUFDcEJGLEVBQUlFLENBQUcsRUFBRSxFQUNWRCxFQUFJQyxDQUFHLEVBQUlGLEVBQUlFLENBQUcsRUFBRSxFQUFFLFNBQVMsRUFDdkJGLEVBQUlFLENBQUcsRUFBRSxFQUNqQkQsRUFBSUMsQ0FBRyxFQUFJLFdBQVdGLEVBQUlFLENBQUcsRUFBRSxDQUFDLEVBRWhDRCxFQUFJQyxDQUFHLEVBQUlGLEVBQUlFLENBQUcsRUFBRSxHQUsxQkwsRUFBSyxLQUFLSSxDQUFHLENBQ2YsQ0FFQSxPQUFPSixDQUNULEVBRWFNLEVBQWdCLENBQUNkLEVBQTJCZSxJQUN2RCxJQUFJLFFBQVEsQ0FBQ2QsRUFBU0MsSUFBVyxDQUMvQixNQUFNQyxFQUFXLElBQUlOLEVBQVMsQ0FDNUIsWUFBYUMsRUFBTyxJQUFJLGlCQUFpQixFQUN6QyxPQUFRQSxFQUFPLElBQUksWUFBWSxDQUNqQyxDQUFDLEVBQ0ssQ0FBQyxlQUFnQmtCLENBQWMsRUFBSWhCLEVBQ25DaUIsRUFBZ0IsQ0FBQyxHQUFHakIsQ0FBTSxFQUU3QmUsSUFDREUsRUFBYyxrQkFBb0JGLEdBR2hDQyxJQUNGQyxFQUFjLGVBQWlCLElBR2pDLE1BQU1DLEVBQU8sQ0FBQyxFQUVkZixFQUFTLE1BQU1jLEVBQWUsQ0FBQ2IsRUFBY2UsSUFBK0IsQ0FDMUUsR0FBR2YsRUFDRCxPQUFPRixFQUFPRSxDQUFLLEVBR3JCYyxFQUFLLEtBQUssR0FBSVosRUFBZ0JhLENBQU0sR0FBSyxDQUFDLENBQUUsRUFFNUMsS0FBTSxDQUFDLGlCQUFrQkMsQ0FBTyxFQUFJRCxFQUVwQyxPQUFHQyxJQUFZLE9BQ05OLEVBQWNkLEVBQVFvQixDQUFPLEVBRy9CbkIsRUFBUWlCLENBQUksQ0FDckIsQ0FBQyxDQUNILENBQUMsRUFFVUcsRUFBYXJCLEdBQ3hCLElBQUksUUFBUSxDQUFDQyxFQUFTQyxJQUFXLENBQ2QsSUFBSUwsRUFBUyxDQUM1QixZQUFhQyxFQUFPLElBQUksaUJBQWlCLEVBQ3pDLE9BQVFBLEVBQU8sSUFBSSxZQUFZLENBQ2pDLENBQUMsRUFFUSxRQUFRRSxFQUFRLENBQUNJLEVBQU9lLElBQzVCZixFQUNNRixFQUFPRSxDQUFLLEVBRWRILEVBQVFrQixDQUFNLENBQ3RCLENBQ0gsQ0FBQyxFQUVVRyxFQUFnQnRCLEdBQzNCLElBQUksUUFBUSxDQUFDQyxFQUFTQyxJQUFXLENBQ2QsSUFBSUwsRUFBUyxDQUM1QixZQUFhQyxFQUFPLElBQUksaUJBQWlCLEVBQ3pDLE9BQVFBLEVBQU8sSUFBSSxZQUFZLENBQ2pDLENBQUMsRUFFUSxXQUFXRSxFQUFRLENBQUNJLEVBQWNlLElBQ3RDZixFQUNNRixFQUFPRSxDQUFLLEVBRWRILEVBQVFrQixDQUFNLENBQ3RCLENBQ0gsQ0FBQyxFQUVVSSxFQUFpQnZCLEdBQzVCLElBQUksUUFBUSxDQUFDQyxFQUFTQyxJQUFXLENBQ2QsSUFBSUwsRUFBUyxDQUM1QixZQUFhQyxFQUFPLElBQUksaUJBQWlCLEVBQ3pDLE9BQVFBLEVBQU8sSUFBSSxZQUFZLENBQ2pDLENBQUMsRUFFUSxlQUFlRSxFQUFRLENBQUNJLEVBQWNlLElBQzFDZixFQUNNRixFQUFPRSxDQUFLLEVBRWRILEVBQVFrQixDQUFNLENBQ3RCLENBQ0gsQ0FBQyxFQUVVSyxFQUFheEIsR0FDeEIsSUFBSSxRQUFRLENBQUNDLEVBQVNDLElBQVcsQ0FDZCxJQUFJTCxFQUFTLENBQzVCLFlBQWFDLEVBQU8sSUFBSSxpQkFBaUIsRUFDekMsT0FBUUEsRUFBTyxJQUFJLFlBQVksQ0FDakMsQ0FBQyxFQUVRLFdBQVdFLEVBQVEsQ0FBQ0ksRUFBT2UsSUFDL0JmLEVBQ01GLEVBQU9FLENBQUssRUFFZEgsRUFBUWtCLENBQU0sQ0FDdEIsQ0FDSCxDQUFDIiwKICAibmFtZXMiOiBbIkR5bmFtb0RCIiwgIkNvbmZpZyIsICJkeW5hbW9HZXQiLCAicGFyYW1zIiwgInJlc29sdmUiLCAicmVqZWN0IiwgImR5bmFtb2RiIiwgImVycm9yIiwgInJlc3VsdHMiLCAicGFyc2VEeW5hbW9MaXN0IiwgIml0ZW1zIiwgImRhdGEiLCAiaWR4IiwgImxlbiIsICJ0bXAiLCAib2JqIiwgImtleSIsICJkeW5hbW9HZXRMaXN0IiwgInN0YXJ0SXRlbSIsICJjb25zaXN0ZW50UmVhZCIsICJ1cGRhdGVkUGFyYW1zIiwgImxpc3QiLCAib3V0cHV0IiwgImxhc3RLZXkiLCAiZHluYW1vUHV0IiwgImR5bmFtb1VwZGF0ZSIsICJkeW5hbW9QdXRMaXN0IiwgImR5bmFtb0RlbCJdCn0K
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ import { SendEmailCommandInput, SendEmailCommandOutput } from '@aws-sdk/client-ses';
6
+ import { EmailType } from '../types/email.types.js';
7
+ export declare const sesSend: (params: SendEmailCommandInput) => Promise<SendEmailCommandOutput>;
8
+ export declare const sendEmail: (params: EmailType) => Promise<boolean>;
@@ -1,2 +1,2 @@
1
- import{SES as l}from"@aws-sdk/client-ses";import{Config as r}from"../config";import{logError as d}from"../utils/analyticsUtils";const u="email",c=o=>new Promise((e,n)=>{new l({credentials:r.get("aws.credentials"),region:r.get("aws.region")}).sendEmail(o,(t,a)=>t?n(t):e(a))}),x=o=>{const{context:e,html:n,subject:m,text:t,user:a}=o,s={Destination:{ToAddresses:[a.email]},Message:{Body:{Html:{Data:n},Text:{Data:t}},Subject:{Data:m}},Source:`"${e.config.details.supportName}" <${e.config.details.supportEmail}>`};return c(s).then(()=>!0).catch(i=>(d({action:"sendEmail",category:u},i,e),!1))};export{x as sendEmail,c as sesSend};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZW1haWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1NlbmRFbWFpbENvbW1hbmRJbnB1dCwgU2VuZEVtYWlsQ29tbWFuZE91dHB1dCwgU0VTfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VzJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge0VtYWlsVHlwZX0gZnJvbSAnLi4vdHlwZXMvZW1haWwudHlwZXMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnZW1haWwnO1xuXG5leHBvcnQgY29uc3Qgc2VzU2VuZCA9IChwYXJhbXM6IFNlbmRFbWFpbENvbW1hbmRJbnB1dCk6IFByb21pc2U8U2VuZEVtYWlsQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNlcyA9IG5ldyBTRVMoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIHNlcy5zZW5kRW1haWwocGFyYW1zLCAoZXJyb3I6IEVycm9yLCByZXNwb25zZTogU2VuZEVtYWlsQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzZW5kRW1haWwgPSAocGFyYW1zOiBFbWFpbFR5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbnRleHQsXG4gICAgaHRtbCxcbiAgICBzdWJqZWN0LFxuICAgIHRleHQsXG4gICAgdXNlclxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHRvID0gW3VzZXIuZW1haWxdO1xuICBjb25zdCBlbWFpbFBhcmFtczogU2VuZEVtYWlsQ29tbWFuZElucHV0ID0ge1xuICAgIERlc3RpbmF0aW9uOiB7VG9BZGRyZXNzZXM6IHRvfSxcbiAgICBNZXNzYWdlOiB7XG4gICAgICBCb2R5OiB7XG4gICAgICAgIEh0bWw6IHtEYXRhOiBodG1sfSxcbiAgICAgICAgVGV4dDoge0RhdGE6IHRleHR9XG4gICAgICB9LFxuICAgICAgU3ViamVjdDoge0RhdGE6IHN1YmplY3R9XG4gICAgfSxcbiAgICBTb3VyY2U6IGBcIiR7Y29udGV4dC5jb25maWcuZGV0YWlscy5zdXBwb3J0TmFtZX1cIiA8JHtjb250ZXh0LmNvbmZpZy5kZXRhaWxzLnN1cHBvcnRFbWFpbH0+YFxuICB9O1xuXG4gIHJldHVybiBzZXNTZW5kKGVtYWlsUGFyYW1zKVxuICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uOiAnc2VuZEVtYWlsJyxcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnlcbiAgICAgIH0sXG4gICAgICBlcnJvcixcbiAgICAgIGNvbnRleHRcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUF1RCxPQUFBQSxNQUFVLHNCQUVqRSxPQUFRLFVBQUFDLE1BQWEsWUFFckIsT0FBUSxZQUFBQyxNQUFlLDBCQUV2QixNQUFNQyxFQUF3QixRQUVqQkMsRUFBV0MsR0FDdEIsSUFBSSxRQUFRLENBQUNDLEVBQVNDLElBQVcsQ0FDbkIsSUFBSVAsRUFBSSxDQUNsQixZQUFhQyxFQUFPLElBQUksaUJBQWlCLEVBQ3pDLE9BQVFBLEVBQU8sSUFBSSxZQUFZLENBQ2pDLENBQUMsRUFFRyxVQUFVSSxFQUFRLENBQUNHLEVBQWNDLElBQ2hDRCxFQUNNRCxFQUFPQyxDQUFLLEVBR2RGLEVBQVFHLENBQVEsQ0FDeEIsQ0FDSCxDQUFDLEVBRVVDLEVBQWFMLEdBQXdDLENBQ2hFLEtBQU0sQ0FDSixRQUFBTSxFQUNBLEtBQUFDLEVBQ0EsUUFBQUMsRUFDQSxLQUFBQyxFQUNBLEtBQUFDLENBQ0YsRUFBSVYsRUFHRVcsRUFBcUMsQ0FDekMsWUFBYSxDQUFDLFlBRkwsQ0FBQ0QsRUFBSyxLQUFLLENBRVMsRUFDN0IsUUFBUyxDQUNQLEtBQU0sQ0FDSixLQUFNLENBQUMsS0FBTUgsQ0FBSSxFQUNqQixLQUFNLENBQUMsS0FBTUUsQ0FBSSxDQUNuQixFQUNBLFFBQVMsQ0FBQyxLQUFNRCxDQUFPLENBQ3pCLEVBQ0EsT0FBUSxJQUFJRixFQUFRLE9BQU8sUUFBUSxXQUFXLE1BQU1BLEVBQVEsT0FBTyxRQUFRLFlBQVksR0FDekYsRUFFQSxPQUFPUCxFQUFRWSxDQUFXLEVBQ3ZCLEtBQUssSUFBTSxFQUFJLEVBQ2YsTUFBT1IsSUFDTk4sRUFBUyxDQUNQLE9BQVEsWUFDUixTQUFVQyxDQUNaLEVBQ0FLLEVBQ0FHLENBQ0EsRUFFTyxHQUNSLENBQ0wiLAogICJuYW1lcyI6IFsiU0VTIiwgIkNvbmZpZyIsICJsb2dFcnJvciIsICJldmVudENhdGVnb3J5IiwgInNlc1NlbmQiLCAicGFyYW1zIiwgInJlc29sdmUiLCAicmVqZWN0IiwgImVycm9yIiwgInJlc3BvbnNlIiwgInNlbmRFbWFpbCIsICJjb250ZXh0IiwgImh0bWwiLCAic3ViamVjdCIsICJ0ZXh0IiwgInVzZXIiLCAiZW1haWxQYXJhbXMiXQp9Cg==
1
+ import{SES as c}from"@aws-sdk/client-ses";import{Config as o}from"../config.js";import{logError as d}from"../utils/analyticsUtils.js";const l="email",u=s=>new Promise((e,a)=>{new c({credentials:{accessKeyId:o.get("aws.credentials.accessKeyId"),secretAccessKey:o.get("aws.credentials.secretAccessKey")},region:o.get("aws.region")}).sendEmail(s,(t,n)=>t?a(t):e(n))}),C=s=>{const{context:e,html:a,subject:r,text:t,user:n}=s,m={Destination:{ToAddresses:[n.email]},Message:{Body:{Html:{Data:a},Text:{Data:t}},Subject:{Data:r}},Source:`"${e.config.details.supportName}" <${e.config.details.supportEmail}>`};return u(m).then(()=>!0).catch(i=>(d({action:"sendEmail",category:l},i,e),!1))};export{C as sendEmail,u as sesSend};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZW1haWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1NlbmRFbWFpbENvbW1hbmRJbnB1dCwgU2VuZEVtYWlsQ29tbWFuZE91dHB1dCwgU0VTfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VzJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0VtYWlsVHlwZX0gZnJvbSAnLi4vdHlwZXMvZW1haWwudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnZW1haWwnO1xuXG5leHBvcnQgY29uc3Qgc2VzU2VuZCA9IChwYXJhbXM6IFNlbmRFbWFpbENvbW1hbmRJbnB1dCk6IFByb21pc2U8U2VuZEVtYWlsQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNlcyA9IG5ldyBTRVMoe1xuICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgYWNjZXNzS2V5SWQ6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscy5hY2Nlc3NLZXlJZCcpLFxuICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscy5zZWNyZXRBY2Nlc3NLZXknKVxuICAgICAgfSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBzZXMuc2VuZEVtYWlsKHBhcmFtcywgKGVycm9yOiBFcnJvciwgcmVzcG9uc2U6IFNlbmRFbWFpbENvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3Qgc2VuZEVtYWlsID0gKHBhcmFtczogRW1haWxUeXBlKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb250ZXh0LFxuICAgIGh0bWwsXG4gICAgc3ViamVjdCxcbiAgICB0ZXh0LFxuICAgIHVzZXJcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCB0byA9IFt1c2VyLmVtYWlsXTtcbiAgY29uc3QgZW1haWxQYXJhbXM6IFNlbmRFbWFpbENvbW1hbmRJbnB1dCA9IHtcbiAgICBEZXN0aW5hdGlvbjoge1RvQWRkcmVzc2VzOiB0b30sXG4gICAgTWVzc2FnZToge1xuICAgICAgQm9keToge1xuICAgICAgICBIdG1sOiB7RGF0YTogaHRtbH0sXG4gICAgICAgIFRleHQ6IHtEYXRhOiB0ZXh0fVxuICAgICAgfSxcbiAgICAgIFN1YmplY3Q6IHtEYXRhOiBzdWJqZWN0fVxuICAgIH0sXG4gICAgU291cmNlOiBgXCIke2NvbnRleHQuY29uZmlnLmRldGFpbHMuc3VwcG9ydE5hbWV9XCIgPCR7Y29udGV4dC5jb25maWcuZGV0YWlscy5zdXBwb3J0RW1haWx9PmBcbiAgfTtcblxuICByZXR1cm4gc2VzU2VuZChlbWFpbFBhcmFtcylcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogJ3NlbmRFbWFpbCcsXG4gICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnlcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUF1RCxPQUFBQSxNQUFVLHNCQUVqRSxPQUFRLFVBQUFDLE1BQWEsZUFFckIsT0FBUSxZQUFBQyxNQUFlLDZCQUV2QixNQUFNQyxFQUF3QixRQUVqQkMsRUFBV0MsR0FDdEIsSUFBSSxRQUFRLENBQUNDLEVBQVNDLElBQVcsQ0FDbkIsSUFBSVAsRUFBSSxDQUNsQixZQUFhLENBQ1gsWUFBYUMsRUFBTyxJQUFJLDZCQUE2QixFQUNyRCxnQkFBaUJBLEVBQU8sSUFBSSxpQ0FBaUMsQ0FDL0QsRUFDQSxPQUFRQSxFQUFPLElBQUksWUFBWSxDQUNqQyxDQUFDLEVBRUcsVUFBVUksRUFBUSxDQUFDRyxFQUFjQyxJQUNoQ0QsRUFDTUQsRUFBT0MsQ0FBSyxFQUdkRixFQUFRRyxDQUFRLENBQ3hCLENBQ0gsQ0FBQyxFQUVVQyxFQUFhTCxHQUF3QyxDQUNoRSxLQUFNLENBQ0osUUFBQU0sRUFDQSxLQUFBQyxFQUNBLFFBQUFDLEVBQ0EsS0FBQUMsRUFDQSxLQUFBQyxDQUNGLEVBQUlWLEVBR0VXLEVBQXFDLENBQ3pDLFlBQWEsQ0FBQyxZQUZMLENBQUNELEVBQUssS0FBSyxDQUVTLEVBQzdCLFFBQVMsQ0FDUCxLQUFNLENBQ0osS0FBTSxDQUFDLEtBQU1ILENBQUksRUFDakIsS0FBTSxDQUFDLEtBQU1FLENBQUksQ0FDbkIsRUFDQSxRQUFTLENBQUMsS0FBTUQsQ0FBTyxDQUN6QixFQUNBLE9BQVEsSUFBSUYsRUFBUSxPQUFPLFFBQVEsV0FBVyxNQUFNQSxFQUFRLE9BQU8sUUFBUSxZQUFZLEdBQ3pGLEVBRUEsT0FBT1AsRUFBUVksQ0FBVyxFQUN2QixLQUFLLElBQU0sRUFBSSxFQUNmLE1BQU9SLElBQ05OLEVBQ0UsQ0FDRSxPQUFRLFlBQ1IsU0FBVUMsQ0FDWixFQUNBSyxFQUNBRyxDQUNGLEVBRU8sR0FDUixDQUNMIiwKICAibmFtZXMiOiBbIlNFUyIsICJDb25maWciLCAibG9nRXJyb3IiLCAiZXZlbnRDYXRlZ29yeSIsICJzZXNTZW5kIiwgInBhcmFtcyIsICJyZXNvbHZlIiwgInJlamVjdCIsICJlcnJvciIsICJyZXNwb25zZSIsICJzZW5kRW1haWwiLCAiY29udGV4dCIsICJodG1sIiwgInN1YmplY3QiLCAidGV4dCIsICJ1c2VyIiwgImVtYWlsUGFyYW1zIl0KfQo=
@@ -0,0 +1,19 @@
1
+ import { ApiContext } from '../types/auth.types.js';
2
+ import { FileType } from '../types/files.types.js';
3
+ import { ImageType } from '../types/images.types.js';
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;
@@ -1,5 +1,5 @@
1
- import{get as f}from"@nlabs/rip-hunter";import{createHash as w}from"@nlabs/utils";import{aql as h}from"arangojs";import{google as $}from"googleapis";import{Config as E}from"../config";import{resizeSaveImage as x}from"./images";import{createPostEdge as B}from"./posts";import{parseFile as T}from"../adapters/fileAdapter";import{ErrorTypes as u}from"../types/error.types";import{logError as y}from"../utils/analyticsUtils";import{useDb as c}from"../utils/arangodbUtils";const d="files",P="http://api.giphy.com/v1/gifs",A=()=>$.youtube({auth:E.get("google.key"),version:"v3"}),R=(e,o)=>{const t="insertFile",{databaseName:r}=e,n=T(o),i=h`INSERT ${n} IN files RETURN NEW`;return c(r).query(i).then(s=>s.next()).catch(s=>y({action:t,category:d,label:u.DATABASE_ERROR},s,e))},C=(e,o)=>{const t="upsertFile",{databaseName:r}=e,n=T(o),{fileId:i}=n,s={...n,_key:i,added:Date.now(),modified:Date.now()},l={...n,_key:i,modified:Date.now()},p=h`UPSERT {_key: ${i}}
1
+ import{get as f}from"@nlabs/rip-hunter";import{createHash as w}from"@nlabs/utils/parsers/strings";import{aql as h}from"arangojs";import{google as $}from"googleapis";import{parseFile as E}from"../adapters/fileAdapter.js";import{Config as T}from"../config.js";import{ErrorTypes as p}from"../types/error.types.js";import{logError as y}from"../utils/analyticsUtils.js";import{useDb as c}from"../utils/arangodbUtils.js";import{resizeSaveImage as x}from"./images.js";import{createPostEdge as C}from"./posts.js";const d="files",P="http://api.giphy.com/v1/gifs",A=()=>$.youtube({auth:T.get("google.key"),version:"v3"}),R=(e,t)=>{const r="insertFile",{databaseName:o}=e,n=E(t),i=h`INSERT ${n} IN files RETURN NEW`;return c(o).query(i).then(s=>s.next()).catch(s=>y({action:r,category:d,label:p.DATABASE_ERROR},s,e))},N=(e,t)=>{const r="upsertFile",{databaseName:o}=e,n=E(t),{fileId:i}=n,s={...n,_key:i,added:Date.now(),modified:Date.now()},l={...n,_key:i,modified:Date.now()},m=h`UPSERT {_key: ${i}}
2
2
  INSERT ${s}
3
3
  UPDATE ${l}
4
- IN files RETURN NEW`;return c(r).query(p).then(a=>a.next()).then(a=>a).catch(a=>y({action:t,category:d,label:u.DATABASE_ERROR},a,e))},F=(e,o,t)=>{const{session:{userId:r}}=e,n=T(o),{description:i,fileId:s,fileType:l,name:p,url:a}=n,m=Date.now(),b=s||w(`file-${r}`);let g=p;return!g&&a&&(g=a.substring(a.lastIndexOf("/")+1)),l==="image/jpeg"||l==="image/png"?x(e,b,t,l).then(_=>R(e,{..._,_key:b,added:m,modified:m,name:g,userId:r})):R(e,{...n,added:m,modified:m,userId:r})},L=(e,o)=>{const t="addFile",{base64:r,url:n}=o;if(n)return f(n).then(i=>F(e,o,Buffer.from(i,"binary"))).catch(i=>y({action:t,category:d,label:u.FILE_REQUEST},i,e));if(r){const i=Buffer.from(r);return F(e,o,i)}return Promise.reject(new Error(u.FILE_REQUIRED))},U=e=>{const{id:o,images:{original:{url:t=""}={},fixed_height_small:{url:r=""}={}}={}}=e;return!o||!t?null:{id:o,thumb:r,type:"giphy",url:t}},z=(e=30)=>{const o=`${P}/trending?api_key=${E.get("giphy.key")}&limit=${e}`;return f(o).then(t=>t.json()).then(t=>t?.data?.map(U).filter(r=>!!r))},H=(e,o=30)=>{const t=encodeURI(e),r=`${P}/search?q=${t}&api_key=${E.get("giphy.key")}&limit=${o}`;return f(r).then(n=>n.json()).then(n=>n?.data?.map(U).filter(i=>!!i))},V=(e=30)=>{const o="getYouTubeTrends",t=A();return new Promise((r,n)=>{t.videos.list({chart:"mostPopular",maxResults:e,part:["snippet"],regionCode:"US"},(i,s)=>{if(i)n(new Error(u.YOUTUBE_ERROR));else if(s){const l=s.items.map(p=>({id:p.id,thumb:p.snippet.thumbnails.high.url,type:"youtube",url:`http://www.youtube.com/embed/${p.id}`}));r(l)}})})},W=(e,o=30)=>{const t="getYouTubeSearch",r=A();return new Promise((n,i)=>{r.search.list({maxResults:o,part:["snippet"],q:e,regionCode:"US"},(s,l)=>{if(s)i(new Error(u.YOUTUBE_ERROR));else if(l){const{items:p}=l,a=p.map(m=>({id:m.id,thumb:m.snippet.thumbnails.high.url,type:"youtube",url:`http://www.youtube.com/embed/${m.id}`}));n(a)}})})},K=(e,o)=>`users/${e}/files/${o}`,I=(e,o,t)=>Promise.all(t.map(r=>C(e,r).then(n=>B(e,o,n.id,"isPosted",{type:n.fileType})))),M=(e,o,t)=>{const r="updateFiles",{databaseName:n}=e;return c(n).collection("isPosted").inEdges(o,{}).then(s=>s.length?Promise.all(s.map(l=>{const{_key:p}=l,a=h`REMOVE {_key:${p}} IN isPosted`;return c(n).query(a).catch(m=>{throw m})})).then(()=>t.length?I(e,o,t).then(()=>t):[]):t.length?I(e,o,t).then(()=>t):t).catch(s=>y({action:r,category:d,label:u.DATABASE_ERROR},s,e))},Z=e=>Buffer.from(e).toString("base64"),J=e=>{const o="decodeBase64",t=n=>n.match(/^data:([A-Za-z-+/]+);base64,(.+)$/)||[];let r=t(e);if(r.length!==3&&(r=t(decodeURIComponent(e)),r.length!==3))throw Error(u.INVALID_INPUT);return{data:Buffer.from(r[2],"base64"),type:r[1]}};export{P as GIPHY_URL,L as addFile,J as decodeBase64,Z as encodeBase64,H as getGiphySearch,z as getGiphyTrends,K as getPathUserFiles,A as getYouTube,W as getYouTubeSearch,V as getYouTubeTrends,R as insertFile,I as linkFiles,U as parseGiphyItem,M as updateFiles,F as uploadFile,C as upsertFile};
5
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZmlsZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2dldCBhcyBodHRwR2V0fSBmcm9tICdAbmxhYnMvcmlwLWh1bnRlcic7XG5pbXBvcnQge2NyZWF0ZUhhc2h9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCB7Z29vZ2xlfSBmcm9tICdnb29nbGVhcGlzJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge3Jlc2l6ZVNhdmVJbWFnZX0gZnJvbSAnLi9pbWFnZXMnO1xuaW1wb3J0IHtjcmVhdGVQb3N0RWRnZX0gZnJvbSAnLi9wb3N0cyc7XG5pbXBvcnQge3BhcnNlRmlsZX0gZnJvbSAnLi4vYWRhcHRlcnMvZmlsZUFkYXB0ZXInO1xuaW1wb3J0IHtJbWFnZVR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzJztcbmltcG9ydCB7RmlsZVR5cGV9IGZyb20gJy4uL3R5cGVzL2ZpbGVzLnR5cGVzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2ZpbGVzJztcblxuZXhwb3J0IGNvbnN0IEdJUEhZX1VSTDogc3RyaW5nID0gJ2h0dHA6Ly9hcGkuZ2lwaHkuY29tL3YxL2dpZnMnO1xuXG5leHBvcnQgY29uc3QgZ2V0WW91VHViZSA9ICgpID0+IGdvb2dsZS55b3V0dWJlKHthdXRoOiBDb25maWcuZ2V0KCdnb29nbGUua2V5JyksIHZlcnNpb246ICd2Myd9KTtcblxuZXhwb3J0IGNvbnN0IGluc2VydEZpbGUgPSAoY29udGV4dDogQXBpQ29udGV4dCwgZmlsZTogRmlsZVR5cGUpID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2luc2VydEZpbGUnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdHRlZEZpbGUgPSBwYXJzZUZpbGUoZmlsZSk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7Zm9ybWF0dGVkRmlsZX0gSU4gZmlsZXMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwc2VydEZpbGUgPSAoY29udGV4dDogQXBpQ29udGV4dCwgZmlsZTogRmlsZVR5cGUpOiBQcm9taXNlPEZpbGVUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICd1cHNlcnRGaWxlJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXR0ZWRGaWxlID0gcGFyc2VGaWxlKGZpbGUpO1xuICBjb25zdCB7ZmlsZUlkfSA9IGZvcm1hdHRlZEZpbGU7XG4gIGNvbnN0IGluc2VydDogYW55ID0ge1xuICAgIC4uLmZvcm1hdHRlZEZpbGUsXG4gICAgX2tleTogZmlsZUlkLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgIG1vZGlmaWVkOiBEYXRlLm5vdygpXG4gIH07XG4gIGNvbnN0IHVwZGF0ZTogYW55ID0ge1xuICAgIC4uLmZvcm1hdHRlZEZpbGUsXG4gICAgX2tleTogZmlsZUlkLFxuICAgIG1vZGlmaWVkOiBEYXRlLm5vdygpXG4gIH07XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge19rZXk6ICR7ZmlsZUlkfX1cbiAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgVVBEQVRFICR7dXBkYXRlfVxuICAgIElOIGZpbGVzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKCh1cGRhdGVkRmlsZTogRmlsZVR5cGUpID0+IHVwZGF0ZWRGaWxlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRGaWxlID0gKGNvbnRleHQsIGZpbGU6IEZpbGVUeXBlLCBidWZmZXI6IEJ1ZmZlcikgPT4ge1xuICBjb25zdCB7c2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXR0ZWRGaWxlID0gcGFyc2VGaWxlKGZpbGUpO1xuICBjb25zdCB7XG4gICAgZGVzY3JpcHRpb24sXG4gICAgZmlsZUlkLFxuICAgIGZpbGVUeXBlLFxuICAgIG5hbWUsXG4gICAgdXJsXG4gIH0gPSBmb3JtYXR0ZWRGaWxlO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBmb3JtYXRGaWxlSWQ6IHN0cmluZyA9IGZpbGVJZCB8fCBjcmVhdGVIYXNoKGBmaWxlLSR7c2Vzc2lvbklkfWApO1xuICBsZXQgdXBkYXRlZE5hbWUgPSBuYW1lO1xuXG4gIGlmKCF1cGRhdGVkTmFtZSAmJiAhIXVybCkge1xuICAgIHVwZGF0ZWROYW1lID0gdXJsLnN1YnN0cmluZyh1cmwubGFzdEluZGV4T2YoJy8nKSArIDEpO1xuICB9XG5cbiAgaWYoZmlsZVR5cGUgPT09ICdpbWFnZS9qcGVnJyB8fCBmaWxlVHlwZSA9PT0gJ2ltYWdlL3BuZycpIHtcbiAgICByZXR1cm4gcmVzaXplU2F2ZUltYWdlKGNvbnRleHQsIGZvcm1hdEZpbGVJZCwgYnVmZmVyLCBmaWxlVHlwZSlcbiAgICAgIC50aGVuKChyZXNpemVkSW1hZ2U6IEZpbGVUeXBlKSA9PiBpbnNlcnRGaWxlKGNvbnRleHQsIHtcbiAgICAgICAgLi4ucmVzaXplZEltYWdlLFxuICAgICAgICBfa2V5OiBmb3JtYXRGaWxlSWQsXG4gICAgICAgIGFkZGVkOiBub3csXG4gICAgICAgIG1vZGlmaWVkOiBub3csXG4gICAgICAgIG5hbWU6IHVwZGF0ZWROYW1lLFxuICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuICAgICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIGluc2VydEZpbGUoY29udGV4dCwge1xuICAgIC4uLmZvcm1hdHRlZEZpbGUsXG4gICAgYWRkZWQ6IG5vdyxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEZpbGUgPSAoY29udGV4dDogQXBpQ29udGV4dCwgZmlsZTogRmlsZVR5cGUpOiBQcm9taXNlPEZpbGVUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRGaWxlJztcbiAgY29uc3Qge2Jhc2U2NCwgdXJsfSA9IGZpbGU7XG5cbiAgaWYoISF1cmwpIHtcbiAgICByZXR1cm4gaHR0cEdldCh1cmwpXG4gICAgICAudGhlbigoYm9keSkgPT4gdXBsb2FkRmlsZShjb250ZXh0LCBmaWxlLCBCdWZmZXIuZnJvbShib2R5LCAnYmluYXJ5JykpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuRklMRV9SRVFVRVNUXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICB9IGVsc2UgaWYoISFiYXNlNjQpIHtcbiAgICBjb25zdCBidWZmZXI6IEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NCk7XG4gICAgcmV0dXJuIHVwbG9hZEZpbGUoY29udGV4dCwgZmlsZSwgYnVmZmVyKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoRXJyb3JUeXBlcy5GSUxFX1JFUVVJUkVEKSk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VHaXBoeUl0ZW0gPSAoZ2lmSW1hZ2U6IGFueSk6IEltYWdlVHlwZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBpbWFnZXM6IHtcbiAgICAgIG9yaWdpbmFsOiB7dXJsID0gJyd9ID0ge30sXG4gICAgICBmaXhlZF9oZWlnaHRfc21hbGw6IHt1cmw6IHRodW1iID0gJyd9ID0ge31cbiAgICB9ID0ge31cbiAgfSA9IGdpZkltYWdlO1xuXG4gIGlmKCFpZCB8fCAhdXJsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIHRodW1iLFxuICAgIHR5cGU6ICdnaXBoeScsXG4gICAgdXJsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2lwaHlUcmVuZHMgPSAobGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBnaWZVcmwgPSBgJHtHSVBIWV9VUkx9L3RyZW5kaW5nP2FwaV9rZXk9JHtDb25maWcuZ2V0KCdnaXBoeS5rZXknKX0mbGltaXQ9JHtsaW1pdH1gO1xuXG4gIHJldHVybiBodHRwR2V0KGdpZlVybClcbiAgICAudGhlbigocmVzOiBSZXNwb25zZSkgPT4gcmVzLmpzb24oKSlcbiAgICAudGhlbigoanNvbjogYW55KSA9PiBqc29uPy5kYXRhPy5tYXAocGFyc2VHaXBoeUl0ZW0pLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2lwaHlTZWFyY2ggPSAocXVlcnk6IHN0cmluZywgbGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBmb3JtYXRRdWVyeSA9IGVuY29kZVVSSShxdWVyeSk7XG4gIGNvbnN0IGdpZlVybCA9IGAke0dJUEhZX1VSTH0vc2VhcmNoP3E9JHtmb3JtYXRRdWVyeX0mYXBpX2tleT0ke0NvbmZpZy5nZXQoJ2dpcGh5LmtleScpfSZsaW1pdD0ke2xpbWl0fWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQoZ2lmVXJsKVxuICAgIC50aGVuKChyZXM6IFJlc3BvbnNlKSA9PiByZXMuanNvbigpKVxuICAgIC50aGVuKChqc29uOiBhbnkpID0+IGpzb24/LmRhdGE/Lm1hcChwYXJzZUdpcGh5SXRlbSkuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZb3VUdWJlVHJlbmRzID0gKGxpbWl0OiBudW1iZXIgPSAzMCk6IFByb21pc2U8YW55W10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFlvdVR1YmVUcmVuZHMnO1xuICBjb25zdCB5b3V0dWJlID0gZ2V0WW91VHViZSgpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgeW91dHViZS52aWRlb3MubGlzdCh7XG4gICAgICBjaGFydDogJ21vc3RQb3B1bGFyJyxcbiAgICAgIG1heFJlc3VsdHM6IGxpbWl0LFxuICAgICAgcGFydDogWydzbmlwcGV0J10sXG4gICAgICByZWdpb25Db2RlOiAnVVMnXG4gICAgfSwgKGVycm9yOiBFcnJvciwgZGF0YTogYW55KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihFcnJvclR5cGVzLllPVVRVQkVfRVJST1IpKTtcbiAgICAgIH0gZWxzZSBpZihkYXRhKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBkYXRhLml0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICB0aHVtYjogaXRlbS5zbmlwcGV0LnRodW1ibmFpbHMuaGlnaC51cmwsXG4gICAgICAgICAgdHlwZTogJ3lvdXR1YmUnLFxuICAgICAgICAgIHVybDogYGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHtpdGVtLmlkfWBcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJlc29sdmUobGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFlvdVR1YmVTZWFyY2ggPSAocXVlcnk6IHN0cmluZywgbGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxhbnlbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0WW91VHViZVNlYXJjaCc7XG4gIGNvbnN0IHlvdXR1YmUgPSBnZXRZb3VUdWJlKCk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB5b3V0dWJlLnNlYXJjaC5saXN0KHtcbiAgICAgIG1heFJlc3VsdHM6IGxpbWl0LFxuICAgICAgcGFydDogWydzbmlwcGV0J10sXG4gICAgICBxOiBxdWVyeSxcbiAgICAgIHJlZ2lvbkNvZGU6ICdVUydcbiAgICB9LCAoZXJyb3I6IEVycm9yLCBkYXRhOiBhbnkpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKEVycm9yVHlwZXMuWU9VVFVCRV9FUlJPUikpO1xuICAgICAgfSBlbHNlIGlmKGRhdGEpIHtcbiAgICAgICAgY29uc3Qge2l0ZW1zfSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgdGh1bWI6IGl0ZW0uc25pcHBldC50aHVtYm5haWxzLmhpZ2gudXJsLFxuICAgICAgICAgIHR5cGU6ICd5b3V0dWJlJyxcbiAgICAgICAgICB1cmw6IGBodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7aXRlbS5pZH1gXG4gICAgICAgIH0pKTtcblxuICAgICAgICByZXNvbHZlKGxpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXRoVXNlckZpbGVzID0gKHVzZXJJZDogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nID0+IGB1c2Vycy8ke3VzZXJJZH0vZmlsZXMvJHtmaWxlbmFtZX1gO1xuXG5leHBvcnQgY29uc3QgbGlua0ZpbGVzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBvc3REb2NJZDogc3RyaW5nLCBmaWxlczogRmlsZVR5cGVbXSk6IFByb21pc2U8YW55PiA9PlxuICBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5tYXAoKGZpbGU6IEZpbGVUeXBlKSA9PiB1cHNlcnRGaWxlKGNvbnRleHQsIGZpbGUpXG4gICAgICAudGhlbigoZmlsZTogRmlsZVR5cGUpID0+IGNyZWF0ZVBvc3RFZGdlKGNvbnRleHQsIHBvc3REb2NJZCwgZmlsZS5pZCwgJ2lzUG9zdGVkJywge3R5cGU6IGZpbGUuZmlsZVR5cGV9KSkpXG4gICk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGaWxlcyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBwb3N0RG9jSWQ6IHN0cmluZywgZmlsZXM6IEZpbGVUeXBlW10pOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAndXBkYXRlRmlsZXMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaXNQb3N0ZWQnKTtcblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uaW5FZGdlcyhwb3N0RG9jSWQsIHt9KVxuICAgIC50aGVuKChlZGdlczogYW55KSA9PiB7XG4gICAgICBpZihlZGdlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAgIGVkZ2VzLm1hcCgoZWRnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge19rZXk6IGVkZ2VLZXl9ID0gZWRnZTtcbiAgICAgICAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgUkVNT1ZFIHtfa2V5OiR7ZWRnZUtleX19IElOIGlzUG9zdGVkYDtcblxuICAgICAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZihmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGxpbmtGaWxlcyhjb250ZXh0LCBwb3N0RG9jSWQsIGZpbGVzKS50aGVuKCgpID0+IGZpbGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbGlua0ZpbGVzKGNvbnRleHQsIHBvc3REb2NJZCwgZmlsZXMpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZmlsZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmlsZXM7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZW5jb2RlQmFzZTY0ID0gKGJ1ZmZlcjogQnVmZmVyKTogc3RyaW5nID0+IEJ1ZmZlci5mcm9tKGJ1ZmZlcikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG5leHBvcnQgY29uc3QgZGVjb2RlQmFzZTY0ID0gKGRhdGFTdHJpbmc6IHN0cmluZyk6IGFueSA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWNvZGVCYXNlNjQnO1xuICBjb25zdCBnZXREYXRhID0gKHN0cjogc3RyaW5nKSA9PiBzdHIubWF0Y2goL15kYXRhOihbQS1aYS16LSsvXSspO2Jhc2U2NCwoLispJC8pIHx8IFtdO1xuICBsZXQgbWF0Y2hlcyA9IGdldERhdGEoZGF0YVN0cmluZyk7XG5cbiAgaWYobWF0Y2hlcy5sZW5ndGggIT09IDMpIHtcbiAgICBtYXRjaGVzID0gZ2V0RGF0YShkZWNvZGVVUklDb21wb25lbnQoZGF0YVN0cmluZykpO1xuXG4gICAgaWYobWF0Y2hlcy5sZW5ndGggIT09IDMpIHtcbiAgICAgIHRocm93IEVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9JTlBVVCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBCdWZmZXIuZnJvbShtYXRj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QU8sZ0JBRW5ELE9BQU85RCxFQUFNUSxDQUFZLEVBQUUsTUFBTUUsQ0FBTSxFQUNwQyxNQUFPRSxHQUFpQixDQUN2QixNQUFNQSxDQUNSLENBQUMsQ0FDTCxDQUFDLENBQUMsRUFDRCxLQUFLLElBQ0Q4QyxFQUFNLE9BQ0FGLEVBQVVuRCxFQUFTb0QsRUFBV0MsQ0FBSyxFQUFFLEtBQUssSUFBTUEsQ0FBSyxFQUd2RCxDQUFDLENBQ1QsRUFDS0EsRUFBTSxPQUNQRixFQUFVbkQsRUFBU29ELEVBQVdDLENBQUssRUFDdkMsS0FBSyxJQUFNQSxDQUFLLEVBR2RBLENBQ1IsRUFDQSxNQUFPOUMsR0FBaUJiLEVBQVMsQ0FDaEMsT0FBQVEsRUFDQSxTQUFVTixFQUNWLE1BQU9ILEVBQVcsY0FDcEIsRUFBR2MsRUFBT1AsQ0FBTyxDQUFDLENBQ3RCLEVBRWEwRCxFQUFnQjVDLEdBQTJCLE9BQU8sS0FBS0EsQ0FBTSxFQUFFLFNBQVMsUUFBUSxFQUVoRjZDLEVBQWdCQyxHQUE0QixDQUN2RCxNQUFNMUQsRUFBUyxlQUNUMkQsRUFBV0MsR0FBZ0JBLEVBQUksTUFBTSxtQ0FBbUMsR0FBSyxDQUFDLEVBQ3BGLElBQUlDLEVBQVVGLEVBQVFELENBQVUsRUFFaEMsR0FBR0csRUFBUSxTQUFXLElBQ3BCQSxFQUFVRixFQUFRLG1CQUFtQkQsQ0FBVSxDQUFDLEVBRTdDRyxFQUFRLFNBQVcsR0FDcEIsTUFBTSxNQUFNdEUsRUFBVyxhQUFhLEVBSXhDLE1BQU8sQ0FDTCxLQUFNLE9BQU8sS0FBS3NFLEVBQVEsQ0FBQyxFQUFHLFFBQVEsRUFDdEMsS0FBTUEsRUFBUSxDQUFDLENBQ2pCLENBQ0YiLAogICJuYW1lcyI6IFsiaHR0cEdldCIsICJjcmVhdGVIYXNoIiwgImFxbCIsICJnb29nbGUiLCAiQ29uZmlnIiwgInJlc2l6ZVNhdmVJbWFnZSIsICJjcmVhdGVQb3N0RWRnZSIsICJwYXJzZUZpbGUiLCAiRXJyb3JUeXBlcyIsICJsb2dFcnJvciIsICJ1c2VEYiIsICJldmVudENhdGVnb3J5IiwgIkdJUEhZX1VSTCIsICJnZXRZb3VUdWJlIiwgImluc2VydEZpbGUiLCAiY29udGV4dCIsICJmaWxlIiwgImFjdGlvbiIsICJkYXRhYmFzZU5hbWUiLCAiZm9ybWF0dGVkRmlsZSIsICJhcWxRcnkiLCAiY3Vyc29yIiwgImVycm9yIiwgInVwc2VydEZpbGUiLCAiZmlsZUlkIiwgImluc2VydCIsICJ1cGRhdGUiLCAidXBkYXRlZEZpbGUiLCAidXBsb2FkRmlsZSIsICJidWZmZXIiLCAic2Vzc2lvbklkIiwgImRlc2NyaXB0aW9uIiwgImZpbGVUeXBlIiwgIm5hbWUiLCAidXJsIiwgIm5vdyIsICJmb3JtYXRGaWxlSWQiLCAidXBkYXRlZE5hbWUiLCAicmVzaXplZEltYWdlIiwgImFkZEZpbGUiLCAiYmFzZTY0IiwgImJvZHkiLCAicGFyc2VHaXBoeUl0ZW0iLCAiZ2lmSW1hZ2UiLCAiaWQiLCAidGh1bWIiLCAiZ2V0R2lwaHlUcmVuZHMiLCAibGltaXQiLCAiZ2lmVXJsIiwgInJlcyIsICJqc29uIiwgIml0ZW0iLCAiZ2V0R2lwaHlTZWFyY2giLCAicXVlcnkiLCAiZm9ybWF0UXVlcnkiLCAiZ2V0WW91VHViZVRyZW5kcyIsICJ5b3V0dWJlIiwgInJlc29sdmUiLCAicmVqZWN0IiwgImRhdGEiLCAibGlzdCIsICJnZXRZb3VUdWJlU2VhcmNoIiwgIml0ZW1zIiwgImdldFBhdGhVc2VyRmlsZXMiLCAidXNlcklkIiwgImZpbGVuYW1lIiwgImxpbmtGaWxlcyIsICJwb3N0RG9jSWQiLCAiZmlsZXMiLCAidXBkYXRlRmlsZXMiLCAiZWRnZXMiLCAiZWRnZSIsICJlZGdlS2V5IiwgImVuY29kZUJhc2U2NCIsICJkZWNvZGVCYXNlNjQiLCAiZGF0YVN0cmluZyIsICJnZXREYXRhIiwgInN0ciIsICJtYXRjaGVzIl0KfQo=
4
+ IN files RETURN NEW`;return c(o).query(m).then(a=>a.next()).then(a=>a).catch(a=>y({action:r,category:d,label:p.DATABASE_ERROR},a,e))},F=(e,t,r)=>{const{session:{userId:o}}=e,n=E(t),{description:i,fileId:s,fileType:l,name:m,url:a}=n,u=Date.now(),b=s||w(`file-${o}`);let g=m;return!g&&a&&(g=a.substring(a.lastIndexOf("/")+1)),l==="image/jpeg"||l==="image/png"?x(e,b,r,l).then(_=>R(e,{..._,_key:b,added:u,description:i,modified:u,name:g,userId:o})):R(e,{...n,added:u,modified:u,userId:o})},L=(e,t)=>{const r="addFile",{base64:o,url:n}=t;if(n)return f(n).then(i=>F(e,t,Buffer.from(i,"binary"))).catch(i=>y({action:r,category:d,label:p.FILE_REQUEST},i,e));if(o){const i=Buffer.from(o);return F(e,t,i)}return Promise.reject(new Error(p.FILE_REQUIRED))},U=e=>{const{id:t,images:{original:{url:r=""}={},fixed_height_small:{url:o=""}={}}={}}=e;return!t||!r?null:{id:t,thumb:o,type:"giphy",url:r}},z=(e=30)=>{const t=`${P}/trending?api_key=${T.get("giphy.key")}&limit=${e}`;return f(t).then(r=>r.json()).then(r=>r?.data?.map(U).filter(o=>!!o))},H=(e,t=30)=>{const r=encodeURI(e),o=`${P}/search?q=${r}&api_key=${T.get("giphy.key")}&limit=${t}`;return f(o).then(n=>n.json()).then(n=>n?.data?.map(U).filter(i=>!!i))},V=(e=30)=>{const t=A();return new Promise((r,o)=>{t.videos.list({chart:"mostPopular",maxResults:e,part:["snippet"],regionCode:"US"},(n,i)=>{if(n)o(new Error(p.YOUTUBE_ERROR));else if(i){const s=i.items.map(l=>({id:l.id,thumb:l.snippet.thumbnails.high.url,type:"youtube",url:`http://www.youtube.com/embed/${l.id}`}));r(s)}})})},W=(e,t=30)=>{const r=A();return new Promise((o,n)=>{r.search.list({maxResults:t,part:["snippet"],q:e,regionCode:"US"},(i,s)=>{if(i)n(new Error(p.YOUTUBE_ERROR));else if(s){const{items:l}=s,m=l.map(a=>({id:a.id,thumb:a.snippet.thumbnails.high.url,type:"youtube",url:`http://www.youtube.com/embed/${a.id}`}));o(m)}})})},K=(e,t)=>`users/${e}/files/${t}`,I=(e,t,r)=>Promise.all(r.map(o=>N(e,o).then(n=>C(e,t,n.id,"isPosted",{type:n.fileType})))),M=(e,t,r)=>{const o="updateFiles",{databaseName:n}=e;return c(n).collection("isPosted").inEdges(t,{}).then(s=>s.length?Promise.all(s.map(l=>{const{_key:m}=l,a=h`REMOVE {_key:${m}} IN isPosted`;return c(n).query(a).catch(u=>{throw u})})).then(()=>r.length?I(e,t,r).then(()=>r):[]):r.length?I(e,t,r).then(()=>r):r).catch(s=>y({action:o,category:d,label:p.DATABASE_ERROR},s,e))},Z=e=>Buffer.from(e).toString("base64"),J=e=>{const t=o=>o.match(/^data:([A-Za-z-+/]+);base64,(.+)$/)||[];let r=t(e);if(r.length!==3&&(r=t(decodeURIComponent(e)),r.length!==3))throw Error(p.INVALID_INPUT);return{data:Buffer.from(r[2],"base64"),type:r[1]}};export{P as GIPHY_URL,L as addFile,J as decodeBase64,Z as encodeBase64,H as getGiphySearch,z as getGiphyTrends,K as getPathUserFiles,A as getYouTube,W as getYouTubeSearch,V as getYouTubeTrends,R as insertFile,I as linkFiles,U as parseGiphyItem,M as updateFiles,F as uploadFile,N as upsertFile};
5
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvZmlsZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2dldCBhcyBodHRwR2V0fSBmcm9tICdAbmxhYnMvcmlwLWh1bnRlcic7XG5pbXBvcnQge2NyZWF0ZUhhc2h9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge2dvb2dsZX0gZnJvbSAnZ29vZ2xlYXBpcyc7XG5cbmltcG9ydCB7cGFyc2VGaWxlfSBmcm9tICcuLi9hZGFwdGVycy9maWxlQWRhcHRlci5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7RmlsZVR5cGV9IGZyb20gJy4uL3R5cGVzL2ZpbGVzLnR5cGVzLmpzJztcbmltcG9ydCB7SW1hZ2VUeXBlfSBmcm9tICcuLi90eXBlcy9pbWFnZXMudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge3Jlc2l6ZVNhdmVJbWFnZX0gZnJvbSAnLi9pbWFnZXMuanMnO1xuaW1wb3J0IHtjcmVhdGVQb3N0RWRnZX0gZnJvbSAnLi9wb3N0cy5qcyc7XG5cbmltcG9ydCB0eXBlIHtFZGdlQ29sbGVjdGlvbn0gZnJvbSAnYXJhbmdvanMvY29sbGVjdGlvbnMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnZmlsZXMnO1xuXG5leHBvcnQgY29uc3QgR0lQSFlfVVJMOiBzdHJpbmcgPSAnaHR0cDovL2FwaS5naXBoeS5jb20vdjEvZ2lmcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRZb3VUdWJlID0gKCkgPT4gZ29vZ2xlLnlvdXR1YmUoe2F1dGg6IENvbmZpZy5nZXQoJ2dvb2dsZS5rZXknKSwgdmVyc2lvbjogJ3YzJ30pO1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0RmlsZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmaWxlOiBGaWxlVHlwZSkgPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnaW5zZXJ0RmlsZSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0dGVkRmlsZSA9IHBhcnNlRmlsZShmaWxlKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtmb3JtYXR0ZWRGaWxlfSBJTiBmaWxlcyBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0RmlsZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmaWxlOiBGaWxlVHlwZSk6IFByb21pc2U8RmlsZVR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3Vwc2VydEZpbGUnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdHRlZEZpbGUgPSBwYXJzZUZpbGUoZmlsZSk7XG4gIGNvbnN0IHtmaWxlSWR9ID0gZm9ybWF0dGVkRmlsZTtcbiAgY29uc3QgaW5zZXJ0OiBhbnkgPSB7XG4gICAgLi4uZm9ybWF0dGVkRmlsZSxcbiAgICBfa2V5OiBmaWxlSWQsXG4gICAgYWRkZWQ6IERhdGUubm93KCksXG4gICAgbW9kaWZpZWQ6IERhdGUubm93KClcbiAgfTtcbiAgY29uc3QgdXBkYXRlOiBhbnkgPSB7XG4gICAgLi4uZm9ybWF0dGVkRmlsZSxcbiAgICBfa2V5OiBmaWxlSWQsXG4gICAgbW9kaWZpZWQ6IERhdGUubm93KClcbiAgfTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtmaWxlSWR9fVxuICAgIElOU0VSVCAke2luc2VydH1cbiAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgSU4gZmlsZXMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHVwZGF0ZWRGaWxlOiBGaWxlVHlwZSkgPT4gdXBkYXRlZEZpbGUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEZpbGUgPSAoY29udGV4dCwgZmlsZTogRmlsZVR5cGUsIGJ1ZmZlcjogQnVmZmVyKSA9PiB7XG4gIGNvbnN0IHtzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdHRlZEZpbGUgPSBwYXJzZUZpbGUoZmlsZSk7XG4gIGNvbnN0IHtcbiAgICBkZXNjcmlwdGlvbixcbiAgICBmaWxlSWQsXG4gICAgZmlsZVR5cGUsXG4gICAgbmFtZSxcbiAgICB1cmxcbiAgfSA9IGZvcm1hdHRlZEZpbGU7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IGZvcm1hdEZpbGVJZDogc3RyaW5nID0gZmlsZUlkIHx8IGNyZWF0ZUhhc2goYGZpbGUtJHtzZXNzaW9uSWR9YCk7XG4gIGxldCB1cGRhdGVkTmFtZSA9IG5hbWU7XG5cbiAgaWYoIXVwZGF0ZWROYW1lICYmICEhdXJsKSB7XG4gICAgdXBkYXRlZE5hbWUgPSB1cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5kZXhPZignLycpICsgMSk7XG4gIH1cblxuICBpZihmaWxlVHlwZSA9PT0gJ2ltYWdlL2pwZWcnIHx8IGZpbGVUeXBlID09PSAnaW1hZ2UvcG5nJykge1xuICAgIHJldHVybiByZXNpemVTYXZlSW1hZ2UoY29udGV4dCwgZm9ybWF0RmlsZUlkLCBidWZmZXIsIGZpbGVUeXBlKVxuICAgICAgLnRoZW4oKHJlc2l6ZWRJbWFnZTogRmlsZVR5cGUpID0+IGluc2VydEZpbGUoY29udGV4dCwge1xuICAgICAgICAuLi5yZXNpemVkSW1hZ2UsXG4gICAgICAgIF9rZXk6IGZvcm1hdEZpbGVJZCxcbiAgICAgICAgYWRkZWQ6IG5vdyxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIG1vZGlmaWVkOiBub3csXG4gICAgICAgIG5hbWU6IHVwZGF0ZWROYW1lLFxuICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuICAgICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIGluc2VydEZpbGUoY29udGV4dCwge1xuICAgIC4uLmZvcm1hdHRlZEZpbGUsXG4gICAgYWRkZWQ6IG5vdyxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEZpbGUgPSAoY29udGV4dDogQXBpQ29udGV4dCwgZmlsZTogRmlsZVR5cGUpOiBQcm9taXNlPEZpbGVUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRGaWxlJztcbiAgY29uc3Qge2Jhc2U2NCwgdXJsfSA9IGZpbGU7XG5cbiAgaWYoISF1cmwpIHtcbiAgICByZXR1cm4gaHR0cEdldCh1cmwpXG4gICAgICAudGhlbigoYm9keSkgPT4gdXBsb2FkRmlsZShjb250ZXh0LCBmaWxlLCBCdWZmZXIuZnJvbShib2R5LCAnYmluYXJ5JykpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuRklMRV9SRVFVRVNUXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICB9IGVsc2UgaWYoISFiYXNlNjQpIHtcbiAgICBjb25zdCBidWZmZXI6IEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NCk7XG4gICAgcmV0dXJuIHVwbG9hZEZpbGUoY29udGV4dCwgZmlsZSwgYnVmZmVyKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoRXJyb3JUeXBlcy5GSUxFX1JFUVVJUkVEKSk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VHaXBoeUl0ZW0gPSAoZ2lmSW1hZ2U6IGFueSk6IEltYWdlVHlwZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBpbWFnZXM6IHtcbiAgICAgIG9yaWdpbmFsOiB7dXJsID0gJyd9ID0ge30sXG4gICAgICBmaXhlZF9oZWlnaHRfc21hbGw6IHt1cmw6IHRodW1iID0gJyd9ID0ge31cbiAgICB9ID0ge31cbiAgfSA9IGdpZkltYWdlO1xuXG4gIGlmKCFpZCB8fCAhdXJsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIHRodW1iLFxuICAgIHR5cGU6ICdnaXBoeScsXG4gICAgdXJsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2lwaHlUcmVuZHMgPSAobGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBnaWZVcmwgPSBgJHtHSVBIWV9VUkx9L3RyZW5kaW5nP2FwaV9rZXk9JHtDb25maWcuZ2V0KCdnaXBoeS5rZXknKX0mbGltaXQ9JHtsaW1pdH1gO1xuXG4gIHJldHVybiBodHRwR2V0KGdpZlVybClcbiAgICAudGhlbigocmVzOiBSZXNwb25zZSkgPT4gcmVzLmpzb24oKSlcbiAgICAudGhlbigoanNvbjogYW55KSA9PiBqc29uPy5kYXRhPy5tYXAocGFyc2VHaXBoeUl0ZW0pLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2lwaHlTZWFyY2ggPSAocXVlcnk6IHN0cmluZywgbGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBmb3JtYXRRdWVyeSA9IGVuY29kZVVSSShxdWVyeSk7XG4gIGNvbnN0IGdpZlVybCA9IGAke0dJUEhZX1VSTH0vc2VhcmNoP3E9JHtmb3JtYXRRdWVyeX0mYXBpX2tleT0ke0NvbmZpZy5nZXQoJ2dpcGh5LmtleScpfSZsaW1pdD0ke2xpbWl0fWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQoZ2lmVXJsKVxuICAgIC50aGVuKChyZXM6IFJlc3BvbnNlKSA9PiByZXMuanNvbigpKVxuICAgIC50aGVuKChqc29uOiBhbnkpID0+IGpzb24/LmRhdGE/Lm1hcChwYXJzZUdpcGh5SXRlbSkuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZb3VUdWJlVHJlbmRzID0gKGxpbWl0OiBudW1iZXIgPSAzMCk6IFByb21pc2U8YW55W10+ID0+IHtcbiAgLy8gY29uc3QgYWN0aW9uID0gJ2dldFlvdVR1YmVUcmVuZHMnO1xuICBjb25zdCB5b3V0dWJlID0gZ2V0WW91VHViZSgpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgeW91dHViZS52aWRlb3MubGlzdCh7XG4gICAgICBjaGFydDogJ21vc3RQb3B1bGFyJyxcbiAgICAgIG1heFJlc3VsdHM6IGxpbWl0LFxuICAgICAgcGFydDogWydzbmlwcGV0J10sXG4gICAgICByZWdpb25Db2RlOiAnVVMnXG4gICAgfSwgKGVycm9yOiBFcnJvciwgZGF0YTogYW55KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihFcnJvclR5cGVzLllPVVRVQkVfRVJST1IpKTtcbiAgICAgIH0gZWxzZSBpZihkYXRhKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBkYXRhLml0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICB0aHVtYjogaXRlbS5zbmlwcGV0LnRodW1ibmFpbHMuaGlnaC51cmwsXG4gICAgICAgICAgdHlwZTogJ3lvdXR1YmUnLFxuICAgICAgICAgIHVybDogYGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHtpdGVtLmlkfWBcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJlc29sdmUobGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFlvdVR1YmVTZWFyY2ggPSAocXVlcnk6IHN0cmluZywgbGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxhbnlbXT4gPT4ge1xuICAvLyBjb25zdCBhY3Rpb24gPSAnZ2V0WW91VHViZVNlYXJjaCc7XG4gIGNvbnN0IHlvdXR1YmUgPSBnZXRZb3VUdWJlKCk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB5b3V0dWJlLnNlYXJjaC5saXN0KHtcbiAgICAgIG1heFJlc3VsdHM6IGxpbWl0LFxuICAgICAgcGFydDogWydzbmlwcGV0J10sXG4gICAgICBxOiBxdWVyeSxcbiAgICAgIHJlZ2lvbkNvZGU6ICdVUydcbiAgICB9LCAoZXJyb3I6IEVycm9yLCBkYXRhOiBhbnkpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKEVycm9yVHlwZXMuWU9VVFVCRV9FUlJPUikpO1xuICAgICAgfSBlbHNlIGlmKGRhdGEpIHtcbiAgICAgICAgY29uc3Qge2l0ZW1zfSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgdGh1bWI6IGl0ZW0uc25pcHBldC50aHVtYm5haWxzLmhpZ2gudXJsLFxuICAgICAgICAgIHR5cGU6ICd5b3V0dWJlJyxcbiAgICAgICAgICB1cmw6IGBodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7aXRlbS5pZH1gXG4gICAgICAgIH0pKTtcblxuICAgICAgICByZXNvbHZlKGxpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXRoVXNlckZpbGVzID0gKHVzZXJJZDogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nID0+IGB1c2Vycy8ke3VzZXJJZH0vZmlsZXMvJHtmaWxlbmFtZX1gO1xuXG5leHBvcnQgY29uc3QgbGlua0ZpbGVzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBvc3REb2NJZDogc3RyaW5nLCBmaWxlczogRmlsZVR5cGVbXSk6IFByb21pc2U8YW55PiA9PlxuICBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5tYXAoKGZpbGU6IEZpbGVUeXBlKSA9PiB1cHNlcnRGaWxlKGNvbnRleHQsIGZpbGUpXG4gICAgICAudGhlbigoZmlsZTogRmlsZVR5cGUpID0+IGNyZWF0ZVBvc3RFZGdlKGNvbnRleHQsIHBvc3REb2NJZCwgZmlsZS5pZCwgJ2lzUG9zdGVkJywge3R5cGU6IGZpbGUuZmlsZVR5cGV9KSkpXG4gICk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGaWxlcyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBwb3N0RG9jSWQ6IHN0cmluZywgZmlsZXM6IEZpbGVUeXBlW10pOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAndXBkYXRlRmlsZXMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaXNQb3N0ZWQnKTtcblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uaW5FZGdlcyhwb3N0RG9jSWQsIHt9KVxuICAgIC50aGVuKChlZGdlczogYW55KSA9PiB7XG4gICAgICBpZihlZGdlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAgIGVkZ2VzLm1hcCgoZWRnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge19rZXk6IGVkZ2VLZXl9ID0gZWRnZTtcbiAgICAgICAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgUkVNT1ZFIHtfa2V5OiR7ZWRnZUtleX19IElOIGlzUG9zdGVkYDtcblxuICAgICAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZihmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGxpbmtGaWxlcyhjb250ZXh0LCBwb3N0RG9jSWQsIGZpbGVzKS50aGVuKCgpID0+IGZpbGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbGlua0ZpbGVzKGNvbnRleHQsIHBvc3REb2NJZCwgZmlsZXMpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZmlsZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmlsZXM7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZW5jb2RlQmFzZTY0ID0gKGJ1ZmZlcjogQnVmZmVyKTogc3RyaW5nID0+IEJ1ZmZlci5mcm9tKGJ1ZmZlcikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG5leHBvcnQgY29uc3QgZGVjb2RlQmFzZTY0ID0gKGRhdGFTdHJpbmc6IHN0cmluZyk6IGFueSA9PiB7XG4gIC8vIGNvbnN0IGFjdGlvbiA9ICdkZWNvZGVCYXNlNjQnO1xuICBjb25zdCBnZXREYXRhID0gKHN0cjogc3RyaW5nKSA9PiBzdHIubWF0Y2goL15kYXRhOihbQS1aYS16LSsvXSspO2Jhc2U2NCwoLispJC8pIHx8IFtdO1xuICBsZXQgbWF0Y2hlcyA9IGdldERhdGEoZGF0YVN0cmluZyk7XG5cbiAgaWYobWF0Y2hlcy5sZW5ndGggIT09IDMpIHtcbiAgICBtYXRjaGVzID0gZ2V0RGF0YShkZWNvZGVVUklDb21wb25lbnQoZGF0YVN0cmluZykpO1xuXG4gICAgaWYobWF0Y2hlcy5sZW5ndGggIT09IDMpIHtcbiAgICAgIHRocm93IEVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9JTlBVVCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBCdWZmZXIuZnJvbShtYXRjaGVzWzJdLCAnYmFzZTY0JyksXG4gICAgdHlwZTogbWF0Y2hlc1sxXVxuICB9O1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsT0FBT0EsTUFBYyxvQkFDN0IsT0FBUSxjQUFBQyxNQUFpQiwrQkFDekIsT0FBUSxPQUFBQyxNQUFVLFdBRWxCLE9BQVEsVUFBQUMsTUFBYSxhQUVyQixPQUFRLGFBQUFDLE1BQWdCLDZCQUN4QixPQUFRLFVBQUFDLE1BQWEsZUFFckIsT0FBUSxjQUFBQyxNQUFpQiwwQkFHekIsT0FBUSxZQUFBQyxNQUFlLDZCQUN2QixPQUFRLFNBQUFDLE1BQVksNEJBQ3BCLE9BQVEsbUJBQUFDLE1BQXNCLGNBQzlCLE9BQVEsa0JBQUFDLE1BQXFCLGFBSTdCLE1BQU1DLEVBQXdCLFFBRWpCQyxFQUFvQiwrQkFFcEJDLEVBQWEsSUFBTVYsRUFBTyxRQUFRLENBQUMsS0FBTUUsRUFBTyxJQUFJLFlBQVksRUFBRyxRQUFTLElBQUksQ0FBQyxFQUVqRlMsRUFBYSxDQUFDQyxFQUFxQkMsSUFBbUIsQ0FDakUsTUFBTUMsRUFBUyxhQUNULENBQUMsYUFBQUMsQ0FBWSxFQUFJSCxFQUNqQkksRUFBZ0JmLEVBQVVZLENBQUksRUFDOUJJLEVBQW1CbEIsV0FBYWlCLENBQWEsdUJBRW5ELE9BQU9YLEVBQU1VLENBQVksRUFBRSxNQUFNRSxDQUFNLEVBQ3BDLEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLE1BQU9DLEdBQWlCZixFQUFTLENBQ2hDLE9BQUFVLEVBQ0EsU0FBVU4sRUFDVixNQUFPTCxFQUFXLGNBQ3BCLEVBQUdnQixFQUFPUCxDQUFPLENBQUMsQ0FDdEIsRUFFYVEsRUFBYSxDQUFDUixFQUFxQkMsSUFBc0MsQ0FDcEYsTUFBTUMsRUFBUyxhQUNULENBQUMsYUFBQUMsQ0FBWSxFQUFJSCxFQUNqQkks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LEVBQU0sSUFBS0MsR0FBUyxDQUNsQixLQUFNLENBQUMsS0FBTUMsQ0FBTyxFQUFJRCxFQUNsQm5ELEVBQW1CbEIsaUJBQW1Cc0UsQ0FBTyxnQkFFbkQsT0FBT2hFLEVBQU1VLENBQVksRUFBRSxNQUFNRSxDQUFNLEVBQ3BDLE1BQU9FLEdBQWlCLENBQ3ZCLE1BQU1BLENBQ1IsQ0FBQyxDQUNMLENBQUMsQ0FBQyxFQUNELEtBQUssSUFDRDhDLEVBQU0sT0FDQUYsRUFBVW5ELEVBQVNvRCxFQUFXQyxDQUFLLEVBQUUsS0FBSyxJQUFNQSxDQUFLLEVBR3ZELENBQUMsQ0FDVCxFQUNLQSxFQUFNLE9BQ1BGLEVBQVVuRCxFQUFTb0QsRUFBV0MsQ0FBSyxFQUN2QyxLQUFLLElBQU1BLENBQUssRUFHZEEsQ0FDUixFQUNBLE1BQU85QyxHQUFpQmYsRUFBUyxDQUNoQyxPQUFBVSxFQUNBLFNBQVVOLEVBQ1YsTUFBT0wsRUFBVyxjQUNwQixFQUFHZ0IsRUFBT1AsQ0FBTyxDQUFDLENBQ3RCLEVBRWEwRCxFQUFnQjVDLEdBQTJCLE9BQU8sS0FBS0EsQ0FBTSxFQUFFLFNBQVMsUUFBUSxFQUVoRjZDLEVBQWdCQyxHQUE0QixDQUV2RCxNQUFNQyxFQUFXQyxHQUFnQkEsRUFBSSxNQUFNLG1DQUFtQyxHQUFLLENBQUMsRUFDcEYsSUFBSUMsRUFBVUYsRUFBUUQsQ0FBVSxFQUVoQyxHQUFHRyxFQUFRLFNBQVcsSUFDcEJBLEVBQVVGLEVBQVEsbUJBQW1CRCxDQUFVLENBQUMsRUFFN0NHLEVBQVEsU0FBVyxHQUNwQixNQUFNLE1BQU14RSxFQUFXLGFBQWEsRUFJeEMsTUFBTyxDQUNMLEtBQU0sT0FBTyxLQUFLd0UsRUFBUSxDQUFDLEVBQUcsUUFBUSxFQUN0QyxLQUFNQSxFQUFRLENBQUMsQ0FDakIsQ0FDRiIsCiAgIm5hbWVzIjogWyJodHRwR2V0IiwgImNyZWF0ZUhhc2giLCAiYXFsIiwgImdvb2dsZSIsICJwYXJzZUZpbGUiLCAiQ29uZmlnIiwgIkVycm9yVHlwZXMiLCAibG9nRXJyb3IiLCAidXNlRGIiLCAicmVzaXplU2F2ZUltYWdlIiwgImNyZWF0ZVBvc3RFZGdlIiwgImV2ZW50Q2F0ZWdvcnkiLCAiR0lQSFlfVVJMIiwgImdldFlvdVR1YmUiLCAiaW5zZXJ0RmlsZSIsICJjb250ZXh0IiwgImZpbGUiLCAiYWN0aW9uIiwgImRhdGFiYXNlTmFtZSIsICJmb3JtYXR0ZWRGaWxlIiwgImFxbFFyeSIsICJjdXJzb3IiLCAiZXJyb3IiLCAidXBzZXJ0RmlsZSIsICJmaWxlSWQiLCAiaW5zZXJ0IiwgInVwZGF0ZSIsICJ1cGRhdGVkRmlsZSIsICJ1cGxvYWRGaWxlIiwgImJ1ZmZlciIsICJzZXNzaW9uSWQiLCAiZGVzY3JpcHRpb24iLCAiZmlsZVR5cGUiLCAibmFtZSIsICJ1cmwiLCAibm93IiwgImZvcm1hdEZpbGVJZCIsICJ1cGRhdGVkTmFtZSIsICJyZXNpemVkSW1hZ2UiLCAiYWRkRmlsZSIsICJiYXNlNjQiLCAiYm9keSIsICJwYXJzZUdpcGh5SXRlbSIsICJnaWZJbWFnZSIsICJpZCIsICJ0aHVtYiIsICJnZXRHaXBoeVRyZW5kcyIsICJsaW1pdCIsICJnaWZVcmwiLCAicmVzIiwgImpzb24iLCAiaXRlbSIsICJnZXRHaXBoeVNlYXJjaCIsICJxdWVyeSIsICJmb3JtYXRRdWVyeSIsICJnZXRZb3VUdWJlVHJlbmRzIiwgInlvdXR1YmUiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiZGF0YSIsICJsaXN0IiwgImdldFlvdVR1YmVTZWFyY2giLCAiaXRlbXMiLCAiZ2V0UGF0aFVzZXJGaWxlcyIsICJ1c2VySWQiLCAiZmlsZW5hbWUiLCAibGlua0ZpbGVzIiwgInBvc3REb2NJZCIsICJmaWxlcyIsICJ1cGRhdGVGaWxlcyIsICJlZGdlcyIsICJlZGdlIiwgImVkZ2VLZXkiLCAiZW5jb2RlQmFzZTY0IiwgImRlY29kZUJhc2U2NCIsICJkYXRhU3RyaW5nIiwgImdldERhdGEiLCAic3RyIiwgIm1hdGNoZXMiXQp9Cg==
@@ -0,0 +1,13 @@
1
+ import { ApiContext } from '../types/auth.types.js';
2
+ import { GroupEdgeType, GroupType, GroupUser } from '../types/groups.types.js';
3
+ export declare const getGroupList: (context: ApiContext, from: number, to: number) => Promise<GroupType[]>;
4
+ export declare const getGroupListByUser: (context: ApiContext, from: number, to: number) => Promise<GroupType[]>;
5
+ export declare const getGroupListByTags: (context: ApiContext, tags: string[], from: number, to: number) => Promise<GroupType[]>;
6
+ export declare const getGroup: (context: ApiContext, itemId: string) => Promise<GroupType>;
7
+ export declare const getGroupDetails: (context: ApiContext, groupId: string) => Promise<GroupType>;
8
+ export declare const createGroupEdge: (context: ApiContext, userId: string, groupId: string) => Promise<GroupEdgeType>;
9
+ export declare const addGroup: (context: ApiContext, item: GroupType) => Promise<GroupType>;
10
+ export declare const updateGroup: (context: ApiContext, item: GroupType) => Promise<GroupType>;
11
+ export declare const deleteGroup: (context: ApiContext, itemId: string) => Promise<GroupType>;
12
+ export declare const getGroupsByReaction: (context: ApiContext, reaction: string) => Promise<GroupType[]>;
13
+ export declare const isGrouped: (context: ApiContext, userId: string, groupId: string) => Promise<GroupUser>;