@nlabs/reaktor 0.10.2 → 0.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/coverage/block-navigation.js +1 -1
  2. package/coverage/index.html +23 -23
  3. package/coverage/sorter.js +21 -7
  4. package/lib/actions/apps.d.ts +1 -0
  5. package/lib/actions/apps.d.ts.map +1 -0
  6. package/lib/actions/apps.js +218 -17
  7. package/lib/actions/connections.d.ts +1 -0
  8. package/lib/actions/connections.d.ts.map +1 -0
  9. package/lib/actions/connections.js +61 -6
  10. package/lib/actions/content.d.ts +1 -0
  11. package/lib/actions/content.d.ts.map +1 -0
  12. package/lib/actions/content.js +232 -9
  13. package/lib/actions/conversations.d.ts +1 -0
  14. package/lib/actions/conversations.d.ts.map +1 -0
  15. package/lib/actions/conversations.js +321 -19
  16. package/lib/actions/dynamodb.d.ts +1 -0
  17. package/lib/actions/dynamodb.d.ts.map +1 -0
  18. package/lib/actions/dynamodb.js +119 -2
  19. package/lib/actions/email.d.ts +1 -0
  20. package/lib/actions/email.d.ts.map +1 -0
  21. package/lib/actions/email.js +56 -2
  22. package/lib/actions/files.d.ts +1 -0
  23. package/lib/actions/files.d.ts.map +1 -0
  24. package/lib/actions/files.js +226 -5
  25. package/lib/actions/groups.d.ts +1 -0
  26. package/lib/actions/groups.d.ts.map +1 -0
  27. package/lib/actions/groups.js +234 -19
  28. package/lib/actions/images.d.ts +1 -0
  29. package/lib/actions/images.d.ts.map +1 -0
  30. package/lib/actions/images.js +688 -31
  31. package/lib/actions/index.d.ts +2 -0
  32. package/lib/actions/index.d.ts.map +1 -0
  33. package/lib/actions/index.js +29 -2
  34. package/lib/actions/ios.d.ts +1 -0
  35. package/lib/actions/ios.d.ts.map +1 -0
  36. package/lib/actions/ios.js +228 -9
  37. package/lib/actions/locations.d.ts +1 -0
  38. package/lib/actions/locations.d.ts.map +1 -0
  39. package/lib/actions/locations.js +111 -7
  40. package/lib/actions/messages.d.ts +1 -0
  41. package/lib/actions/messages.d.ts.map +1 -0
  42. package/lib/actions/messages.js +155 -21
  43. package/lib/actions/notifications.d.ts +1 -0
  44. package/lib/actions/notifications.d.ts.map +1 -0
  45. package/lib/actions/notifications.js +37 -2
  46. package/lib/actions/payments.d.ts +1 -0
  47. package/lib/actions/payments.d.ts.map +1 -0
  48. package/lib/actions/payments.js +428 -11
  49. package/lib/actions/posts.d.ts +1 -0
  50. package/lib/actions/posts.d.ts.map +1 -0
  51. package/lib/actions/posts.js +540 -75
  52. package/lib/actions/profiles.d.ts +1 -0
  53. package/lib/actions/profiles.d.ts.map +1 -0
  54. package/lib/actions/profiles.js +58 -8
  55. package/lib/actions/reactions.d.ts +1 -0
  56. package/lib/actions/reactions.d.ts.map +1 -0
  57. package/lib/actions/reactions.js +276 -25
  58. package/lib/actions/s3.d.ts +1 -0
  59. package/lib/actions/s3.d.ts.map +1 -0
  60. package/lib/actions/s3.js +102 -2
  61. package/lib/actions/search.d.ts +1 -0
  62. package/lib/actions/search.d.ts.map +1 -0
  63. package/lib/actions/search.js +81 -5
  64. package/lib/actions/sms.d.ts +1 -0
  65. package/lib/actions/sms.d.ts.map +1 -0
  66. package/lib/actions/sms.js +52 -2
  67. package/lib/actions/statistics.d.ts +1 -0
  68. package/lib/actions/statistics.d.ts.map +1 -0
  69. package/lib/actions/statistics.js +41 -6
  70. package/lib/actions/subscriptions.d.ts +1 -0
  71. package/lib/actions/subscriptions.d.ts.map +1 -0
  72. package/lib/actions/subscriptions.js +196 -6
  73. package/lib/actions/tags.d.ts +1 -0
  74. package/lib/actions/tags.d.ts.map +1 -0
  75. package/lib/actions/tags.js +258 -19
  76. package/lib/actions/users.d.ts +1 -0
  77. package/lib/actions/users.d.ts.map +1 -0
  78. package/lib/actions/users.js +781 -66
  79. package/lib/actions/videos.d.ts +26 -0
  80. package/lib/actions/videos.d.ts.map +1 -0
  81. package/lib/actions/videos.js +423 -0
  82. package/lib/actions/websockets.d.ts +1 -0
  83. package/lib/actions/websockets.d.ts.map +1 -0
  84. package/lib/actions/websockets.js +148 -14
  85. package/lib/adapters/arangoAdapter.d.ts +1 -0
  86. package/lib/adapters/arangoAdapter.d.ts.map +1 -0
  87. package/lib/adapters/arangoAdapter.js +70 -2
  88. package/lib/adapters/contentAdapter.d.ts +1 -0
  89. package/lib/adapters/contentAdapter.d.ts.map +1 -0
  90. package/lib/adapters/contentAdapter.js +108 -2
  91. package/lib/adapters/fileAdapter.d.ts +1 -0
  92. package/lib/adapters/fileAdapter.d.ts.map +1 -0
  93. package/lib/adapters/fileAdapter.js +119 -2
  94. package/lib/adapters/imageAdapter.d.ts +1 -0
  95. package/lib/adapters/imageAdapter.d.ts.map +1 -0
  96. package/lib/adapters/imageAdapter.js +112 -2
  97. package/lib/adapters/index.d.ts +1 -0
  98. package/lib/adapters/index.d.ts.map +1 -0
  99. package/lib/adapters/index.js +11 -2
  100. package/lib/adapters/messageAdapter.d.ts +1 -0
  101. package/lib/adapters/messageAdapter.d.ts.map +1 -0
  102. package/lib/adapters/messageAdapter.js +82 -2
  103. package/lib/adapters/postAdapter.d.ts +1 -0
  104. package/lib/adapters/postAdapter.d.ts.map +1 -0
  105. package/lib/adapters/postAdapter.js +117 -2
  106. package/lib/adapters/reaktorAdapter.d.ts +1 -0
  107. package/lib/adapters/reaktorAdapter.d.ts.map +1 -0
  108. package/lib/adapters/reaktorAdapter.js +59 -2
  109. package/lib/adapters/tagAdapter.d.ts +1 -0
  110. package/lib/adapters/tagAdapter.d.ts.map +1 -0
  111. package/lib/adapters/tagAdapter.js +99 -2
  112. package/lib/adapters/userAdapter.d.ts +1 -0
  113. package/lib/adapters/userAdapter.d.ts.map +1 -0
  114. package/lib/adapters/userAdapter.js +264 -2
  115. package/lib/config.d.ts +1 -0
  116. package/lib/config.d.ts.map +1 -0
  117. package/lib/config.js +161 -2
  118. package/lib/handlers/graphqlHandler.d.ts +1 -0
  119. package/lib/handlers/graphqlHandler.d.ts.map +1 -0
  120. package/lib/handlers/graphqlHandler.js +118 -2
  121. package/lib/index.d.ts +1 -0
  122. package/lib/index.d.ts.map +1 -0
  123. package/lib/index.js +18 -2
  124. package/lib/lambdas/actions/websockets.d.ts +1 -0
  125. package/lib/lambdas/actions/websockets.d.ts.map +1 -0
  126. package/lib/lambdas/actions/websockets.js +89 -14
  127. package/lib/lambdas/authorizer.d.ts +1 -0
  128. package/lib/lambdas/authorizer.d.ts.map +1 -0
  129. package/lib/lambdas/authorizer.js +41 -2
  130. package/lib/lambdas/connection.d.ts +1 -0
  131. package/lib/lambdas/connection.d.ts.map +1 -0
  132. package/lib/lambdas/connection.js +85 -2
  133. package/lib/lambdas/utils/message.d.ts +1 -0
  134. package/lib/lambdas/utils/message.d.ts.map +1 -0
  135. package/lib/lambdas/utils/message.js +20 -2
  136. package/lib/lambdas/utils/websocket.d.ts +1 -0
  137. package/lib/lambdas/utils/websocket.d.ts.map +1 -0
  138. package/lib/lambdas/utils/websocket.js +78 -2
  139. package/lib/mocks/conversation.d.ts +1 -0
  140. package/lib/mocks/conversation.d.ts.map +1 -0
  141. package/lib/mocks/conversation.js +10 -2
  142. package/lib/mocks/file.d.ts +1 -0
  143. package/lib/mocks/file.d.ts.map +1 -0
  144. package/lib/mocks/file.js +13 -2
  145. package/lib/mocks/group.d.ts +1 -0
  146. package/lib/mocks/group.d.ts.map +1 -0
  147. package/lib/mocks/group.js +20 -2
  148. package/lib/mocks/image.d.ts +1 -0
  149. package/lib/mocks/image.d.ts.map +1 -0
  150. package/lib/mocks/image.js +17 -2
  151. package/lib/mocks/post.d.ts +1 -0
  152. package/lib/mocks/post.d.ts.map +1 -0
  153. package/lib/mocks/post.js +28 -2
  154. package/lib/mocks/tag.d.ts +1 -0
  155. package/lib/mocks/tag.d.ts.map +1 -0
  156. package/lib/mocks/tag.js +12 -2
  157. package/lib/mocks/user.d.ts +1 -0
  158. package/lib/mocks/user.d.ts.map +1 -0
  159. package/lib/mocks/user.js +61 -2
  160. package/lib/mocks/video.d.ts +4 -0
  161. package/lib/mocks/video.d.ts.map +1 -0
  162. package/lib/mocks/video.js +17 -0
  163. package/lib/mutations/content.d.ts +1 -0
  164. package/lib/mutations/content.d.ts.map +1 -0
  165. package/lib/mutations/content.js +27 -2
  166. package/lib/mutations/index.d.ts +1 -0
  167. package/lib/mutations/index.d.ts.map +1 -0
  168. package/lib/mutations/index.js +29 -2
  169. package/lib/mutations/locations.d.ts +1 -0
  170. package/lib/mutations/locations.d.ts.map +1 -0
  171. package/lib/mutations/locations.js +22 -2
  172. package/lib/mutations/messages.d.ts +1 -0
  173. package/lib/mutations/messages.d.ts.map +1 -0
  174. package/lib/mutations/messages.js +75 -2
  175. package/lib/mutations/posts.d.ts +1 -0
  176. package/lib/mutations/posts.d.ts.map +1 -0
  177. package/lib/mutations/posts.js +31 -2
  178. package/lib/mutations/profiles.d.ts +1 -0
  179. package/lib/mutations/profiles.d.ts.map +1 -0
  180. package/lib/mutations/profiles.js +78 -2
  181. package/lib/mutations/reactions.d.ts +1 -0
  182. package/lib/mutations/reactions.d.ts.map +1 -0
  183. package/lib/mutations/reactions.js +29 -2
  184. package/lib/mutations/statistics.d.ts +1 -0
  185. package/lib/mutations/statistics.d.ts.map +1 -0
  186. package/lib/mutations/statistics.js +17 -2
  187. package/lib/mutations/subscriptions.d.ts +1 -0
  188. package/lib/mutations/subscriptions.d.ts.map +1 -0
  189. package/lib/mutations/subscriptions.js +38 -2
  190. package/lib/mutations/tags.d.ts +1 -0
  191. package/lib/mutations/tags.d.ts.map +1 -0
  192. package/lib/mutations/tags.js +109 -2
  193. package/lib/mutations/users.d.ts +1 -0
  194. package/lib/mutations/users.d.ts.map +1 -0
  195. package/lib/mutations/users.js +129 -2
  196. package/lib/objectTypes/app.d.ts +1 -0
  197. package/lib/objectTypes/app.d.ts.map +1 -0
  198. package/lib/objectTypes/app.js +147 -2
  199. package/lib/objectTypes/bankAccount.d.ts +1 -0
  200. package/lib/objectTypes/bankAccount.d.ts.map +1 -0
  201. package/lib/objectTypes/bankAccount.js +54 -2
  202. package/lib/objectTypes/connection.d.ts +1 -0
  203. package/lib/objectTypes/connection.d.ts.map +1 -0
  204. package/lib/objectTypes/connection.js +26 -2
  205. package/lib/objectTypes/content.d.ts +1 -0
  206. package/lib/objectTypes/content.d.ts.map +1 -0
  207. package/lib/objectTypes/content.js +79 -2
  208. package/lib/objectTypes/conversation.d.ts +1 -0
  209. package/lib/objectTypes/conversation.d.ts.map +1 -0
  210. package/lib/objectTypes/conversation.js +53 -2
  211. package/lib/objectTypes/creditCard.d.ts +1 -0
  212. package/lib/objectTypes/creditCard.d.ts.map +1 -0
  213. package/lib/objectTypes/creditCard.js +64 -2
  214. package/lib/objectTypes/document.d.ts +1 -0
  215. package/lib/objectTypes/document.d.ts.map +1 -0
  216. package/lib/objectTypes/document.js +21 -2
  217. package/lib/objectTypes/error.d.ts +1 -0
  218. package/lib/objectTypes/error.d.ts.map +1 -0
  219. package/lib/objectTypes/error.js +24 -2
  220. package/lib/objectTypes/external.d.ts +1 -0
  221. package/lib/objectTypes/external.d.ts.map +1 -0
  222. package/lib/objectTypes/external.js +52 -2
  223. package/lib/objectTypes/file.d.ts +1 -0
  224. package/lib/objectTypes/file.d.ts.map +1 -0
  225. package/lib/objectTypes/file.js +76 -2
  226. package/lib/objectTypes/filter.d.ts +1 -0
  227. package/lib/objectTypes/filter.d.ts.map +1 -0
  228. package/lib/objectTypes/filter.js +21 -2
  229. package/lib/objectTypes/group.d.ts +1 -0
  230. package/lib/objectTypes/group.d.ts.map +1 -0
  231. package/lib/objectTypes/group.js +97 -2
  232. package/lib/objectTypes/iapSubscription.d.ts +1 -0
  233. package/lib/objectTypes/iapSubscription.d.ts.map +1 -0
  234. package/lib/objectTypes/iapSubscription.js +18 -2
  235. package/lib/objectTypes/image.d.ts +1 -0
  236. package/lib/objectTypes/image.d.ts.map +1 -0
  237. package/lib/objectTypes/image.js +105 -2
  238. package/lib/objectTypes/index.d.ts +1 -0
  239. package/lib/objectTypes/index.d.ts.map +1 -0
  240. package/lib/objectTypes/index.js +28 -2
  241. package/lib/objectTypes/location.d.ts +1 -0
  242. package/lib/objectTypes/location.d.ts.map +1 -0
  243. package/lib/objectTypes/location.js +85 -2
  244. package/lib/objectTypes/message.d.ts +1 -0
  245. package/lib/objectTypes/message.d.ts.map +1 -0
  246. package/lib/objectTypes/message.js +72 -2
  247. package/lib/objectTypes/passcode.d.ts +1 -0
  248. package/lib/objectTypes/passcode.d.ts.map +1 -0
  249. package/lib/objectTypes/passcode.js +20 -2
  250. package/lib/objectTypes/plan.d.ts +1 -0
  251. package/lib/objectTypes/plan.d.ts.map +1 -0
  252. package/lib/objectTypes/plan.js +71 -2
  253. package/lib/objectTypes/post.d.ts +1 -0
  254. package/lib/objectTypes/post.d.ts.map +1 -0
  255. package/lib/objectTypes/post.js +101 -2
  256. package/lib/objectTypes/profile.d.ts +1 -0
  257. package/lib/objectTypes/profile.d.ts.map +1 -0
  258. package/lib/objectTypes/profile.js +68 -2
  259. package/lib/objectTypes/reaction.d.ts +1 -0
  260. package/lib/objectTypes/reaction.d.ts.map +1 -0
  261. package/lib/objectTypes/reaction.js +37 -2
  262. package/lib/objectTypes/relation.d.ts +1 -0
  263. package/lib/objectTypes/relation.d.ts.map +1 -0
  264. package/lib/objectTypes/relation.js +27 -2
  265. package/lib/objectTypes/search.d.ts +1 -0
  266. package/lib/objectTypes/search.d.ts.map +1 -0
  267. package/lib/objectTypes/search.js +50 -2
  268. package/lib/objectTypes/statistics.d.ts +1 -0
  269. package/lib/objectTypes/statistics.d.ts.map +1 -0
  270. package/lib/objectTypes/statistics.js +17 -2
  271. package/lib/objectTypes/subscription.d.ts +1 -0
  272. package/lib/objectTypes/subscription.d.ts.map +1 -0
  273. package/lib/objectTypes/subscription.js +102 -2
  274. package/lib/objectTypes/tag.d.ts +1 -0
  275. package/lib/objectTypes/tag.d.ts.map +1 -0
  276. package/lib/objectTypes/tag.js +41 -2
  277. package/lib/objectTypes/user.d.ts +1 -0
  278. package/lib/objectTypes/user.d.ts.map +1 -0
  279. package/lib/objectTypes/user.js +111 -2
  280. package/lib/queries/content.d.ts +1 -0
  281. package/lib/queries/content.d.ts.map +1 -0
  282. package/lib/queries/content.js +50 -2
  283. package/lib/queries/index.d.ts +1 -0
  284. package/lib/queries/index.d.ts.map +1 -0
  285. package/lib/queries/index.js +27 -2
  286. package/lib/queries/locations.d.ts +1 -0
  287. package/lib/queries/locations.d.ts.map +1 -0
  288. package/lib/queries/locations.js +23 -2
  289. package/lib/queries/messages.d.ts +1 -0
  290. package/lib/queries/messages.d.ts.map +1 -0
  291. package/lib/queries/messages.js +35 -2
  292. package/lib/queries/posts.d.ts +1 -0
  293. package/lib/queries/posts.d.ts.map +1 -0
  294. package/lib/queries/posts.js +154 -2
  295. package/lib/queries/reactions.d.ts +1 -0
  296. package/lib/queries/reactions.d.ts.map +1 -0
  297. package/lib/queries/reactions.js +34 -2
  298. package/lib/queries/statistics.d.ts +1 -0
  299. package/lib/queries/statistics.d.ts.map +1 -0
  300. package/lib/queries/statistics.js +17 -2
  301. package/lib/queries/subscriptions.d.ts +1 -0
  302. package/lib/queries/subscriptions.d.ts.map +1 -0
  303. package/lib/queries/subscriptions.js +21 -2
  304. package/lib/queries/tags.d.ts +1 -0
  305. package/lib/queries/tags.d.ts.map +1 -0
  306. package/lib/queries/tags.js +56 -2
  307. package/lib/queries/users.d.ts +1 -0
  308. package/lib/queries/users.d.ts.map +1 -0
  309. package/lib/queries/users.js +39 -2
  310. package/lib/templates/email/layout.d.ts +1 -0
  311. package/lib/templates/email/layout.d.ts.map +1 -0
  312. package/lib/templates/email/layout.js +4 -3
  313. package/lib/templates/email/passwordForgot.d.ts +1 -0
  314. package/lib/templates/email/passwordForgot.d.ts.map +1 -0
  315. package/lib/templates/email/passwordForgot.js +4 -3
  316. package/lib/templates/email/passwordRecovery.d.ts +1 -0
  317. package/lib/templates/email/passwordRecovery.d.ts.map +1 -0
  318. package/lib/templates/email/passwordRecovery.js +4 -3
  319. package/lib/templates/email/verifyEmail.d.ts +1 -0
  320. package/lib/templates/email/verifyEmail.d.ts.map +1 -0
  321. package/lib/templates/email/verifyEmail.js +4 -3
  322. package/lib/templates/email/welcome.d.ts +1 -0
  323. package/lib/templates/email/welcome.d.ts.map +1 -0
  324. package/lib/templates/email/welcome.js +4 -3
  325. package/lib/templates/sms/passwordForgot.d.ts +1 -0
  326. package/lib/templates/sms/passwordForgot.d.ts.map +1 -0
  327. package/lib/templates/sms/passwordForgot.js +3 -2
  328. package/lib/templates/sms/passwordRecovery.d.ts +1 -0
  329. package/lib/templates/sms/passwordRecovery.d.ts.map +1 -0
  330. package/lib/templates/sms/passwordRecovery.js +3 -2
  331. package/lib/templates/sms/verifyEmail.d.ts +1 -0
  332. package/lib/templates/sms/verifyEmail.d.ts.map +1 -0
  333. package/lib/templates/sms/verifyEmail.js +3 -2
  334. package/lib/templates/sms/verifyPhone.d.ts +1 -0
  335. package/lib/templates/sms/verifyPhone.d.ts.map +1 -0
  336. package/lib/templates/sms/verifyPhone.js +3 -2
  337. package/lib/templates/sms/welcome.d.ts +1 -0
  338. package/lib/templates/sms/welcome.d.ts.map +1 -0
  339. package/lib/templates/sms/welcome.js +3 -2
  340. package/lib/types/apps.types.d.ts +1 -0
  341. package/lib/types/apps.types.d.ts.map +1 -0
  342. package/lib/types/apps.types.js +10 -2
  343. package/lib/types/arangodb.types.d.ts +2 -1
  344. package/lib/types/arangodb.types.d.ts.map +1 -0
  345. package/lib/types/arangodb.types.js +6 -1
  346. package/lib/types/auth.types.d.ts +1 -0
  347. package/lib/types/auth.types.d.ts.map +1 -0
  348. package/lib/types/auth.types.js +6 -1
  349. package/lib/types/connections.types.d.ts +1 -0
  350. package/lib/types/connections.types.d.ts.map +1 -0
  351. package/lib/types/connections.types.js +6 -1
  352. package/lib/types/content.types.d.ts +1 -0
  353. package/lib/types/content.types.d.ts.map +1 -0
  354. package/lib/types/content.types.js +6 -1
  355. package/lib/types/conversations.types.d.ts +1 -0
  356. package/lib/types/conversations.types.d.ts.map +1 -0
  357. package/lib/types/conversations.types.js +6 -1
  358. package/lib/types/email.types.d.ts +1 -0
  359. package/lib/types/email.types.d.ts.map +1 -0
  360. package/lib/types/email.types.js +6 -1
  361. package/lib/types/error.types.d.ts +1 -0
  362. package/lib/types/error.types.d.ts.map +1 -0
  363. package/lib/types/error.types.js +20 -2
  364. package/lib/types/files.types.d.ts +1 -0
  365. package/lib/types/files.types.d.ts.map +1 -0
  366. package/lib/types/files.types.js +6 -1
  367. package/lib/types/google.types.d.ts +1 -0
  368. package/lib/types/google.types.d.ts.map +1 -0
  369. package/lib/types/google.types.js +6 -1
  370. package/lib/types/groups.types.d.ts +1 -0
  371. package/lib/types/groups.types.d.ts.map +1 -0
  372. package/lib/types/groups.types.js +6 -1
  373. package/lib/types/images.types.d.ts +1 -0
  374. package/lib/types/images.types.d.ts.map +1 -0
  375. package/lib/types/images.types.js +6 -1
  376. package/lib/types/index.d.ts +2 -0
  377. package/lib/types/index.d.ts.map +1 -0
  378. package/lib/types/index.js +28 -2
  379. package/lib/types/locations.types.d.ts +1 -0
  380. package/lib/types/locations.types.d.ts.map +1 -0
  381. package/lib/types/locations.types.js +6 -1
  382. package/lib/types/messages.types.d.ts +1 -0
  383. package/lib/types/messages.types.d.ts.map +1 -0
  384. package/lib/types/messages.types.js +6 -1
  385. package/lib/types/notifications.types.d.ts +1 -0
  386. package/lib/types/notifications.types.d.ts.map +1 -0
  387. package/lib/types/notifications.types.js +6 -1
  388. package/lib/types/payments.types.d.ts +1 -0
  389. package/lib/types/payments.types.d.ts.map +1 -0
  390. package/lib/types/payments.types.js +6 -1
  391. package/lib/types/posts.types.d.ts +1 -0
  392. package/lib/types/posts.types.d.ts.map +1 -0
  393. package/lib/types/posts.types.js +6 -1
  394. package/lib/types/profiles.types.d.ts +1 -0
  395. package/lib/types/profiles.types.d.ts.map +1 -0
  396. package/lib/types/profiles.types.js +3 -1
  397. package/lib/types/statistics.types.d.ts +1 -0
  398. package/lib/types/statistics.types.d.ts.map +1 -0
  399. package/lib/types/statistics.types.js +3 -1
  400. package/lib/types/tags.types.d.ts +1 -0
  401. package/lib/types/tags.types.d.ts.map +1 -0
  402. package/lib/types/tags.types.js +6 -1
  403. package/lib/types/users.types.d.ts +1 -0
  404. package/lib/types/users.types.d.ts.map +1 -0
  405. package/lib/types/users.types.js +6 -1
  406. package/lib/types/videos.types.d.ts +47 -0
  407. package/lib/types/videos.types.d.ts.map +1 -0
  408. package/lib/types/videos.types.js +6 -0
  409. package/lib/types/websockets.types.d.ts +1 -0
  410. package/lib/types/websockets.types.d.ts.map +1 -0
  411. package/lib/types/websockets.types.js +6 -1
  412. package/lib/utils/adapterUtils.d.ts +1 -0
  413. package/lib/utils/adapterUtils.d.ts.map +1 -0
  414. package/lib/utils/adapterUtils.js +23 -2
  415. package/lib/utils/analyticsUtils.d.ts +1 -0
  416. package/lib/utils/analyticsUtils.d.ts.map +1 -0
  417. package/lib/utils/analyticsUtils.js +45 -2
  418. package/lib/utils/arangodbUtils.d.ts +1 -0
  419. package/lib/utils/arangodbUtils.d.ts.map +1 -0
  420. package/lib/utils/arangodbUtils.js +128 -5
  421. package/lib/utils/authUtils.d.ts +1 -0
  422. package/lib/utils/authUtils.d.ts.map +1 -0
  423. package/lib/utils/authUtils.js +54 -2
  424. package/lib/utils/contextUtils.d.ts +1 -0
  425. package/lib/utils/contextUtils.d.ts.map +1 -0
  426. package/lib/utils/contextUtils.js +10 -2
  427. package/lib/utils/dbI18n.d.ts +1 -0
  428. package/lib/utils/dbI18n.d.ts.map +1 -0
  429. package/lib/utils/dbI18n.example.d.ts +1 -0
  430. package/lib/utils/dbI18n.example.d.ts.map +1 -0
  431. package/lib/utils/dbI18n.example.js +92 -5
  432. package/lib/utils/dbI18n.js +28 -2
  433. package/lib/utils/googleTranslate.d.ts +1 -0
  434. package/lib/utils/googleTranslate.d.ts.map +1 -0
  435. package/lib/utils/googleTranslate.js +70 -2
  436. package/lib/utils/graphqlUtils.d.ts +1 -0
  437. package/lib/utils/graphqlUtils.d.ts.map +1 -0
  438. package/lib/utils/graphqlUtils.js +11 -2
  439. package/lib/utils/index.d.ts +1 -0
  440. package/lib/utils/index.d.ts.map +1 -0
  441. package/lib/utils/index.js +19 -2
  442. package/lib/utils/languageDetection.d.ts +1 -0
  443. package/lib/utils/languageDetection.d.ts.map +1 -0
  444. package/lib/utils/languageDetection.js +120 -2
  445. package/lib/utils/localeUtils.d.ts +1 -0
  446. package/lib/utils/localeUtils.d.ts.map +1 -0
  447. package/lib/utils/localeUtils.example.d.ts +1 -0
  448. package/lib/utils/localeUtils.example.d.ts.map +1 -0
  449. package/lib/utils/localeUtils.example.js +124 -2
  450. package/lib/utils/localeUtils.js +71 -2
  451. package/lib/utils/middlewareUtils.d.ts +1 -0
  452. package/lib/utils/middlewareUtils.d.ts.map +1 -0
  453. package/lib/utils/middlewareUtils.js +10 -2
  454. package/lib/utils/sessionUtils.d.ts +1 -0
  455. package/lib/utils/sessionUtils.d.ts.map +1 -0
  456. package/lib/utils/sessionUtils.js +26 -2
  457. package/lib/utils/stripeUtils.d.ts +2 -1
  458. package/lib/utils/stripeUtils.d.ts.map +1 -0
  459. package/lib/utils/stripeUtils.js +12 -2
  460. package/lib/utils/templateUtils.d.ts +1 -0
  461. package/lib/utils/templateUtils.d.ts.map +1 -0
  462. package/lib/utils/templateUtils.js +11 -2
  463. package/lib/utils/testUtils.d.ts +1 -0
  464. package/lib/utils/testUtils.d.ts.map +1 -0
  465. package/lib/utils/testUtils.js +292 -2
  466. package/lib/utils/translationQueue.d.ts +1 -0
  467. package/lib/utils/translationQueue.d.ts.map +1 -0
  468. package/lib/utils/translationQueue.example.d.ts +1 -0
  469. package/lib/utils/translationQueue.example.d.ts.map +1 -0
  470. package/lib/utils/translationQueue.example.js +340 -2
  471. package/lib/utils/translationQueue.js +113 -2
  472. package/package.json +47 -29
@@ -1,33 +1,335 @@
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
- ${u.aql}
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { cloneDeep } from '@nlabs/utils/objects/clone';
5
+ import { createHash, parseId } from '@nlabs/utils/parsers/strings';
6
+ import { aql } from 'arangojs';
7
+ import { Config } from '../config.js';
8
+ import { ErrorTypes } from '../types/error.types.js';
9
+ import { logError } from '../utils/analyticsUtils.js';
10
+ import { getLimit, sortIds, useDb } from '../utils/arangodbUtils.js';
11
+ import { getImageUrl } from './images.js';
12
+ import { getDisplayName, getUser } from './users.js';
13
+ const eventCategory = 'conversations';
14
+ export const parseConversationOptions = (options = {})=>{
15
+ const { from = 0, to = 30 } = options;
16
+ return {
17
+ limit: getLimit(from, to)
18
+ };
19
+ };
20
+ export const getConversations = (context, userId, options)=>{
21
+ const action = 'getConversations';
22
+ const { databaseName } = context;
23
+ const { limit } = parseConversationOptions(options);
24
+ const userDocId = `users/${userId}`;
25
+ const aqlQry = `FOR c, e IN 1..1 OUTBOUND "${userDocId}" hasConversation
26
+ ${limit.aql}
3
27
  LET users = (
4
28
  FOR u, uc IN 1..1 INBOUND c._id hasConversation
5
- FILTER u._id != "${t}"
29
+ FILTER u._id != "${userDocId}"
6
30
  RETURN u
7
31
  )
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
32
+ RETURN MERGE(c, {users: users})`;
33
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
34
+ logError({
35
+ action,
36
+ category: eventCategory,
37
+ label: ErrorTypes.DATABASE_ERROR
38
+ }, error, context);
39
+ return [];
40
+ });
41
+ };
42
+ export const getDirectConversation = async (context, { fromId, toId, toUser })=>{
43
+ const action = 'getDirectConversation';
44
+ const { databaseName } = context;
45
+ try {
46
+ const formatFromId = parseId(fromId);
47
+ const formatToId = parseId(toId);
48
+ const userIds = [
49
+ formatFromId,
50
+ formatToId
51
+ ];
52
+ const sortedUserIds = sortIds(userIds);
53
+ const conversationId = createHash(`conversations-${sortedUserIds.join('-')}`, null);
54
+ const user = toUser || await getUser(context, {
55
+ userId: formatToId
56
+ });
57
+ const aqlQry = aql`LET c = DOCUMENT(${`conversations/${conversationId}`}) RETURN c`;
58
+ const conversation = await useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
59
+ action,
60
+ category: eventCategory,
61
+ label: ErrorTypes.DATABASE_ERROR
62
+ }, error, context));
63
+ if (conversation) {
64
+ return {
65
+ ...conversation,
66
+ users: [
67
+ user
68
+ ]
69
+ };
70
+ }
71
+ return addDirectConversation(context, {
72
+ fromId,
73
+ toId,
74
+ toUser: user
75
+ });
76
+ } catch (databaseError) {
77
+ return logError({
78
+ action,
79
+ category: eventCategory,
80
+ label: ErrorTypes.DATABASE_ERROR
81
+ }, databaseError, context);
82
+ }
83
+ };
84
+ export const addDirectConversation = async (context, { fromId, toId, toUser })=>{
85
+ const action = 'getDirectConversation';
86
+ const { databaseName } = context;
87
+ try {
88
+ const formatFromId = parseId(fromId);
89
+ const formatToId = parseId(toId);
90
+ const userIds = [
91
+ formatFromId,
92
+ formatToId
93
+ ];
94
+ const sortedUserIds = sortIds([
95
+ formatFromId,
96
+ formatToId
97
+ ]);
98
+ const user = toUser || await getUser(context, {
99
+ userId: formatToId
100
+ });
101
+ const conversationId = createHash(`conversations-${sortedUserIds.join('-')}`, null);
102
+ const now = Date.now();
103
+ const insert = {
104
+ _key: conversationId,
105
+ added: now,
106
+ isDirect: true,
107
+ modified: now
108
+ };
109
+ const insertQuery = aql`INSERT ${insert} IN conversations RETURN NEW`;
110
+ const updatedConversation = await useDb(databaseName).query(insertQuery).then((cursor)=>cursor.next());
111
+ await Promise.all(userIds.map((userId)=>{
112
+ const edgeId = createHash(`hasConversation-${userId}-${conversationId}`);
113
+ const edge = {
114
+ _from: `users/${userId}`,
115
+ _key: edgeId,
116
+ _to: `conversations/${conversationId}`,
117
+ added: Date.now()
118
+ };
119
+ const insertEdgeQuery = aql`INSERT ${edge} IN hasConversation RETURN NEW`;
120
+ return useDb(databaseName).query(insertEdgeQuery);
121
+ }));
122
+ return {
123
+ ...updatedConversation,
124
+ users: [
125
+ user
126
+ ]
127
+ };
128
+ } catch (databaseError) {
129
+ logError({
130
+ action,
131
+ category: eventCategory,
132
+ label: ErrorTypes.DATABASE_ERROR
133
+ }, databaseError, context);
134
+ return {};
135
+ }
136
+ };
137
+ export const getConnectionUsers = (context, { conversationId, includeAll = false, isDirect })=>{
138
+ const action = 'getConnectionUsers';
139
+ const { databaseName, session: { userId: sessionUserId } } = context;
140
+ const filters = [
141
+ 'c.userId == u._key'
142
+ ];
143
+ if (!includeAll) {
144
+ filters.push(`u._key != ${sessionUserId}`);
145
+ }
146
+ if (isDirect) {
147
+ filters.push(`p.vertices[0].isDirect == ${isDirect}`);
148
+ }
149
+ const aqlQry = aql`FOR u, e,p IN 1..1 INBOUND ${`conversations/${conversationId}`} hasConversation
9
150
  OPTIONS {vertexCollections: "users"}
10
151
  FOR c IN connections
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
152
+ FILTER ${filters.join(' && ')}
153
+ RETURN c`;
154
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
155
+ logError({
156
+ action,
157
+ category: eventCategory,
158
+ label: ErrorTypes.DATABASE_ERROR
159
+ }, error, context);
160
+ return [];
161
+ });
162
+ };
163
+ export const getConversationUsers = (context, { conversationId, includeAll = false, isDirect })=>{
164
+ const action = 'getConversationUsers';
165
+ const { databaseName, session: { userId: sessionUserId } } = context;
166
+ const filters = [
167
+ 'c.userId == u._key'
168
+ ];
169
+ if (!includeAll) {
170
+ filters.push(`u._key != ${sessionUserId}`);
171
+ }
172
+ if (isDirect) {
173
+ filters.push(`p.vertices[0].isDirect == ${isDirect}`);
174
+ }
175
+ const aqlQry = aql`FOR u, e,p IN 1..1 INBOUND ${`conversations/${conversationId}`} hasConversation
13
176
  OPTIONS {vertexCollections: "users"}
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}
177
+ FILTER ${filters.join(' && ')}
178
+ RETURN u`;
179
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
180
+ logError({
181
+ action,
182
+ category: eventCategory,
183
+ label: ErrorTypes.DATABASE_ERROR
184
+ }, error, context);
185
+ return [];
186
+ });
187
+ };
188
+ // export const getDirectConversationOld = (context: ApiContext, userId: string): Promise<ConversationType> => {
189
+ // const action: string = 'getDirectConversation';
190
+ // const {database, session: {userId: sessionId}} = context;
191
+ // const sessionDocId: string = `users/${sessionId}`;
192
+ // const formatUserId: string = parseArangoId(userId);
193
+ // const aqlQry: AqlQuery = aql`LET from = (
194
+ // FOR c, e IN 1..1 OUTBOUND ${sessionDocId} hasConversation
195
+ // FILTER c.direct == true
196
+ // RETURN c
197
+ // )
198
+ // LET to = (
199
+ // FOR c, e IN 1..1 OUTBOUND ${formatUserId} hasConversation
200
+ // FILTER c.direct == true
201
+ // RETURN c
202
+ // )
203
+ // LET conversation = FIRST(INTERSECTION(from, to))
204
+ // LET users = !IS_NULL(conversation) && (
205
+ // FOR g IN[${sessionDocId}, ${formatUserId}]
206
+ // FOR u IN users
207
+ // FILTER g == u._id
208
+ // RETURN u
209
+ // )
210
+ // RETURN IS_NULL(conversation) ? null : MERGE(conversation, {users: users})`;
211
+ // return database.query(aqlQry)
212
+ // .then((cursor) => cursor.next())
213
+ // .catch((error: Error) => logError({
214
+ // action,
215
+ // category: eventCategory,
216
+ // label: ErrorTypes.DATABASE_ERROR
217
+ // }, error, context));
218
+ // };
219
+ export const getConversation = (context, conversationId)=>{
220
+ const action = 'getItem';
221
+ const { databaseName, session: { userId: sessionId } } = context;
222
+ const sessionDocId = `users/${sessionId}`;
223
+ const conversationDocId = `conversations/${parseId(conversationId)}`;
224
+ const aqlQry = aql`FOR c, e IN 1..1 OUTBOUND ${sessionDocId} hasConversation
225
+ FILTER c._id == ${conversationDocId}
17
226
  LET u = (
18
- FOR inUser, inEdge IN 1..1 INBOUND ${t} hasConversation
227
+ FOR inUser, inEdge IN 1..1 INBOUND ${conversationDocId} hasConversation
19
228
  RETURN inUser
20
229
  )
21
230
  LIMIT 1
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
- INSERT ${m}
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}
231
+ RETURN MERGE(c, {users: u})`;
232
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).then((conversation)=>{
233
+ if (!conversation) {
234
+ return {};
235
+ }
236
+ conversation.users = conversation.users.map((user)=>{
237
+ const { imageId, userId } = user;
238
+ const thumbUrlData = {
239
+ bucket: Config.get('aws.s3.Bucket'),
240
+ imageDir: 'thumbs',
241
+ imageId,
242
+ type: 'users',
243
+ typeId: userId
244
+ };
245
+ return {
246
+ ...user,
247
+ name: getDisplayName(user),
248
+ thumb: getImageUrl(thumbUrlData)
249
+ };
250
+ });
251
+ return conversation;
252
+ }).catch((error)=>logError({
253
+ action,
254
+ category: eventCategory,
255
+ label: ErrorTypes.DATABASE_ERROR
256
+ }, error, context));
257
+ };
258
+ export const updateConversation = (context, conversation)=>{
259
+ const action = 'updateConversation';
260
+ const { databaseName, session: { userId: sessionId } } = context;
261
+ const { conversationId = createHash(`conversation-${sessionId} `), isDirect = false, name } = conversation;
262
+ const formatConversationId = parseId(conversationId);
263
+ const now = Date.now();
264
+ const update = {
265
+ isDirect,
266
+ modified: now,
267
+ name
268
+ };
269
+ const insert = {
270
+ ...cloneDeep(update),
271
+ _key: formatConversationId,
272
+ added: now
273
+ };
274
+ const aqlQry = aql`UPSERT {_key: ${formatConversationId} }
275
+ INSERT ${insert}
276
+ UPDATE ${update}
277
+ IN conversations RETURN NEW`;
278
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).then((conversation)=>conversation).catch((error)=>logError({
279
+ action,
280
+ category: eventCategory,
281
+ label: ErrorTypes.DATABASE_ERROR
282
+ }, error, context));
283
+ };
284
+ export const addUserToConversation = (context, { conversationId, userId })=>{
285
+ const action = 'addUserToConversation';
286
+ const { databaseName } = context;
287
+ const formatConversationId = parseId(conversationId);
288
+ const formatUserId = parseId(userId);
289
+ const conversationDocId = `conversations/${formatConversationId}`;
290
+ const userDocId = `users/${formatUserId}`;
291
+ const aqlQry = aql`FOR hc IN hasConversation
292
+ FILTER hc._from == ${userDocId} && hc._to == ${conversationDocId}
27
293
  LIMIT 1
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}
294
+ RETURN hc`;
295
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).then((hasConversationEdge)=>{
296
+ if (!!hasConversationEdge) {
297
+ return hasConversationEdge;
298
+ }
299
+ const edgeCollection = useDb(databaseName).collection('hasConversation');
300
+ const edgeId = createHash(`convo - ${formatConversationId} -${formatUserId} `);
301
+ const edge = {
302
+ _from: userDocId,
303
+ _key: edgeId,
304
+ _to: conversationDocId,
305
+ added: Date.now()
306
+ };
307
+ return edgeCollection.save(edge, {
308
+ returnNew: true
309
+ }).then(()=>edge);
310
+ }).catch((error)=>logError({
311
+ action,
312
+ category: eventCategory,
313
+ label: ErrorTypes.DATABASE_ERROR
314
+ }, error, context));
315
+ };
316
+ export const deleteUserFromConversation = (context, { conversationId, userId })=>{
317
+ const action = 'deleteUserFromConversation';
318
+ const { databaseName } = context;
319
+ const formatConversationId = parseId(conversationId);
320
+ const formatUserId = parseId(userId);
321
+ const conversationDocId = `conversations/${formatConversationId}`;
322
+ const userDocId = `users/${formatUserId}`;
323
+ const aqlQry = aql`FOR hc IN hasConversation
324
+ FILTER hc._from == ${userDocId} && hc._to == ${conversationDocId}
30
325
  LIMIT 1
31
326
  REMOVE hc IN hasConversation
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==
327
+ RETURN OLD`;
328
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
329
+ action,
330
+ category: eventCategory,
331
+ label: ErrorTypes.DATABASE_ERROR
332
+ }, error, context));
333
+ };
334
+
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvY29udmVyc2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjbG9uZURlZXB9IGZyb20gJ0BubGFicy91dGlscy9vYmplY3RzL2Nsb25lJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7Z2V0TGltaXQsIHNvcnRJZHMsIHVzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7Z2V0SW1hZ2VVcmx9IGZyb20gJy4vaW1hZ2VzLmpzJztcbmltcG9ydCB7Z2V0RGlzcGxheU5hbWUsIGdldFVzZXJ9IGZyb20gJy4vdXNlcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcbmltcG9ydCB0eXBlIHtBcmFuZ29EYkxpbWl0LCBFZGdlVHlwZX0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGIudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0Nvbm5lY3Rpb25UeXBlfSBmcm9tICcuLi90eXBlcy9jb25uZWN0aW9ucy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbnZlcnNhdGlvbk9wdGlvbnMsXG4gIENvbnZlcnNhdGlvblR5cGUsXG4gIENvbnZlcnNhdGlvblVzZXJzUGFyYW1zLFxuICBEaXJlY3RDb252ZXJzYXRpb25QYXJhbXMsXG4gIFVwZGF0ZUNvbnZlcnNhdGlvblVzZXJQYXJhbXNcbn0gZnJvbSAnLi4vdHlwZXMvY29udmVyc2F0aW9ucy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7SW1hZ2VVcmxEYXRhfSBmcm9tICcuLi90eXBlcy9pbWFnZXMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1VzZXJUeXBlfSBmcm9tICcuLi90eXBlcy91c2Vycy50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdjb252ZXJzYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udmVyc2F0aW9uT3B0aW9ucyA9IChvcHRpb25zOiBDb252ZXJzYXRpb25PcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW1pdDogZ2V0TGltaXQoZnJvbSwgdG8pIGFzIEFyYW5nb0RiTGltaXRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb252ZXJzYXRpb25zID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJJZDogc3RyaW5nLCBvcHRpb25zPyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldENvbnZlcnNhdGlvbnMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZUNvbnZlcnNhdGlvbk9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7dXNlcklkfWA7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgXCIke3VzZXJEb2NJZH1cIiBoYXNDb252ZXJzYXRpb25cbiAgICAke2xpbWl0LmFxbH1cbiAgICBMRVQgdXNlcnMgPSAoXG4gICAgICBGT1IgdSwgdWMgSU4gMS4uMSBJTkJPVU5EIGMuX2lkIGhhc0NvbnZlcnNhdGlvblxuICAgICAgRklMVEVSIHUuX2lkICE9IFwiJHt1c2VyRG9jSWR9XCJcbiAgICAgIFJFVFVSTiB1XG4gICAgKVxuICAgIFJFVFVSTiBNRVJHRShjLCB7dXNlcnM6IHVzZXJzfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBDb252ZXJzYXRpb25UeXBlW10pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXJlY3RDb252ZXJzYXRpb24gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBmcm9tSWQsXG4gICAgdG9JZCxcbiAgICB0b1VzZXJcbiAgfTogRGlyZWN0Q29udmVyc2F0aW9uUGFyYW1zXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0RGlyZWN0Q29udmVyc2F0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZm9ybWF0RnJvbUlkID0gcGFyc2VJZChmcm9tSWQpO1xuICAgIGNvbnN0IGZvcm1hdFRvSWQgPSBwYXJzZUlkKHRvSWQpO1xuICAgIGNvbnN0IHVzZXJJZHMgPSBbZm9ybWF0RnJvbUlkLCBmb3JtYXRUb0lkXTtcbiAgICBjb25zdCBzb3J0ZWRVc2VySWRzID0gc29ydElkcyh1c2VySWRzKTtcbiAgICBjb25zdCBjb252ZXJzYXRpb25JZCA9IGNyZWF0ZUhhc2goYGNvbnZlcnNhdGlvbnMtJHtzb3J0ZWRVc2VySWRzLmpvaW4oJy0nKX1gLCBudWxsKTtcbiAgICBjb25zdCB1c2VyOiBVc2VyVHlwZSA9IHRvVXNlciB8fCBhd2FpdCBnZXRVc2VyKGNvbnRleHQsIHt1c2VySWQ6IGZvcm1hdFRvSWR9KTtcbiAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCBjID0gRE9DVU1FTlQoJHtgY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfWB9KSBSRVRVUk4gY2A7XG4gICAgY29uc3QgY29udmVyc2F0aW9uID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICBpZihjb252ZXJzYXRpb24pIHtcbiAgICAgIHJldHVybiB7Li4uY29udmVyc2F0aW9uLCB1c2VyczogW3VzZXJdfTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkRGlyZWN0Q29udmVyc2F0aW9uKGNvbnRleHQsIHtmcm9tSWQsIHRvSWQsIHRvVXNlcjogdXNlcn0pO1xuICB9IGNhdGNoKGRhdGFiYXNlRXJyb3IpIHtcbiAgICByZXR1cm4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGRhdGFiYXNlRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkRGlyZWN0Q29udmVyc2F0aW9uID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB7XG4gICAgZnJvbUlkLFxuICAgIHRvSWQsXG4gICAgdG9Vc2VyXG4gIH06IERpcmVjdENvbnZlcnNhdGlvblBhcmFtc1xuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldERpcmVjdENvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICB0cnkge1xuICAgIGNvbnN0IGZvcm1hdEZyb21JZCA9IHBhcnNlSWQoZnJvbUlkKTtcbiAgICBjb25zdCBmb3JtYXRUb0lkID0gcGFyc2VJZCh0b0lkKTtcbiAgICBjb25zdCB1c2VySWRzID0gW2Zvcm1hdEZyb21JZCwgZm9ybWF0VG9JZF07XG4gICAgY29uc3Qgc29ydGVkVXNlcklkcyA9IHNvcnRJZHMoW2Zvcm1hdEZyb21JZCwgZm9ybWF0VG9JZF0pO1xuICAgIGNvbnN0IHVzZXI6IFVzZXJUeXBlID0gdG9Vc2VyIHx8IGF3YWl0IGdldFVzZXIoY29udGV4dCwge3VzZXJJZDogZm9ybWF0VG9JZH0pO1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvbklkID0gY3JlYXRlSGFzaChgY29udmVyc2F0aW9ucy0ke3NvcnRlZFVzZXJJZHMuam9pbignLScpfWAsIG51bGwpO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgaW5zZXJ0ID0ge1xuICAgICAgX2tleTogY29udmVyc2F0aW9uSWQsXG4gICAgICBhZGRlZDogbm93LFxuICAgICAgaXNEaXJlY3Q6IHRydWUsXG4gICAgICBtb2RpZmllZDogbm93XG4gICAgfTtcbiAgICBjb25zdCBpbnNlcnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiBORVdgO1xuICAgIGNvbnN0IHVwZGF0ZWRDb252ZXJzYXRpb24gPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGluc2VydFF1ZXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh1c2VySWRzLm1hcCgodXNlcklkKSA9PiB7XG4gICAgICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYGhhc0NvbnZlcnNhdGlvbi0ke3VzZXJJZH0tJHtjb252ZXJzYXRpb25JZH1gKTtcbiAgICAgIGNvbnN0IGVkZ2U6IEVkZ2VUeXBlID0ge1xuICAgICAgICBfZnJvbTogYHVzZXJzLyR7dXNlcklkfWAsXG4gICAgICAgIF9rZXk6IGVkZ2VJZCxcbiAgICAgICAgX3RvOiBgY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfWAsXG4gICAgICAgIGFkZGVkOiBEYXRlLm5vdygpXG4gICAgICB9O1xuICAgICAgY29uc3QgaW5zZXJ0RWRnZVF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtlZGdlfSBJTiBoYXNDb252ZXJzYXRpb24gUkVUVVJOIE5FV2A7XG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShpbnNlcnRFZGdlUXVlcnkpO1xuICAgIH0pKTtcblxuICAgIHJldHVybiB7Li4udXBkYXRlZENvbnZlcnNhdGlvbiwgdXNlcnM6IFt1c2VyXX07XG4gIH0gY2F0Y2goZGF0YWJhc2VFcnJvcikge1xuICAgIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBkYXRhYmFzZUVycm9yLCBjb250ZXh0KTtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uVXNlcnMgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICBpbmNsdWRlQWxsID0gZmFsc2UsXG4gICAgaXNEaXJlY3RcbiAgfTogQ29udmVyc2F0aW9uVXNlcnNQYXJhbXNcbik6IFByb21pc2U8Q29ubmVjdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRDb25uZWN0aW9uVXNlcnMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uVXNlcklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFsnYy51c2VySWQgPT0gdS5fa2V5J107XG5cbiAgaWYoIWluY2x1ZGVBbGwpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHUuX2tleSAhPSAke3Nlc3Npb25Vc2VySWR9YCk7XG4gIH1cbiAgaWYoaXNEaXJlY3QpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHAudmVydGljZXNbMF0uaXNEaXJlY3QgPT0gJHtpc0RpcmVjdH1gKTtcbiAgfVxuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHUsIGUscCBJTiAxLi4xIElOQk9VTkQgJHtgY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfWB9IGhhc0NvbnZlcnNhdGlvblxuICAgIE9QVElPTlMge3ZlcnRleENvbGxlY3Rpb25zOiBcInVzZXJzXCJ9XG4gICAgRk9SIGMgSU4gY29ubmVjdGlvbnNcbiAgICBGSUxURVIgJHtmaWx0ZXJzLmpvaW4oJyAmJiAnKX1cbiAgICBSRVRVUk4gY2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIENvbm5lY3Rpb25UeXBlW10pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb252ZXJzYXRpb25Vc2VycyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge1xuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIGluY2x1ZGVBbGwgPSBmYWxzZSxcbiAgICBpc0RpcmVjdFxuICB9OiBDb252ZXJzYXRpb25Vc2Vyc1BhcmFtc1xuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29udmVyc2F0aW9uVXNlcnMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uVXNlcklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFsnYy51c2VySWQgPT0gdS5fa2V5J107XG5cbiAgaWYoIWluY2x1ZGVBbGwpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHUuX2tleSAhPSAke3Nlc3Npb25Vc2VySWR9YCk7XG4gIH1cbiAgaWYoaXNEaXJlY3QpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHAudmVydGljZXNbMF0uaXNEaXJlY3QgPT0gJHtpc0RpcmVjdH1gKTtcbiAgfVxuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHUsIGUscCBJTiAxLi4xIElOQk9VTkQgJHtgY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbklkfWB9IGhhc0NvbnZlcnNhdGlvblxuICAgIE9QVElPTlMge3ZlcnRleENvbGxlY3Rpb25zOiBcInVzZXJzXCJ9XG4gICAgRklMVEVSICR7ZmlsdGVycy5qb2luKCcgJiYgJyl9XG4gICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBDb252ZXJzYXRpb25UeXBlW10pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcbn07XG5cbi8vIGV4cG9ydCBjb25zdCBnZXREaXJlY3RDb252ZXJzYXRpb25PbGQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbi8vICAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0RGlyZWN0Q29udmVyc2F0aW9uJztcbi8vICAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4vLyAgIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4vLyAgIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZCh1c2VySWQpO1xuXG4vLyAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgTEVUIGZyb20gPSAoXG4vLyAgICAgICBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7c2Vzc2lvbkRvY0lkfSBoYXNDb252ZXJzYXRpb25cbi8vICAgICAgIEZJTFRFUiBjLmRpcmVjdCA9PSB0cnVlXG4vLyAgICAgICBSRVRVUk4gY1xuLy8gICAgIClcbi8vICAgICBMRVQgdG8gPSAoXG4vLyAgICAgICBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7Zm9ybWF0VXNlcklkfSBoYXNDb252ZXJzYXRpb25cbi8vICAgICAgIEZJTFRFUiBjLmRpcmVjdCA9PSB0cnVlXG4vLyAgICAgICBSRVRVUk4gY1xuLy8gICAgIClcbi8vICAgICBMRVQgY29udmVyc2F0aW9uID0gRklSU1QoSU5URVJTRUNUSU9OKGZyb20sIHRvKSlcbi8vICAgICBMRVQgdXNlcnMgPSAhSVNfTlVMTChjb252ZXJzYXRpb24pICYmIChcbi8vICAgICAgIEZPUiBnIElOWyR7c2Vzc2lvbkRvY0lkfSwgJHtmb3JtYXRVc2VySWR9XVxuLy8gICAgICAgRk9SIHUgSU4gdXNlcnNcbi8vICAgICAgIEZJTFRFUiBnID09IHUuX2lkXG4vLyAgICAgICBSRVRVUk4gdVxuLy8gICAgIClcbi8vICAgICBSRVRVUk4gSVNfTlVMTChjb252ZXJzYXRpb24pID8gbnVsbCA6IE1FUkdFKGNvbnZlcnNhdGlvbiwge3VzZXJzOiB1c2Vyc30pYDtcblxuLy8gICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuLy8gICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4vLyAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbi8vICAgICAgIGFjdGlvbixcbi8vICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuLy8gICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1Jcbi8vICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnZlcnNhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBjb252ZXJzYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbkRvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke3BhcnNlSWQoY29udmVyc2F0aW9uSWQpfWA7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7c2Vzc2lvbkRvY0lkfSBoYXNDb252ZXJzYXRpb25cbiAgICBGSUxURVIgYy5faWQgPT0gJHtjb252ZXJzYXRpb25Eb2NJZH1cbiAgICBMRVQgdSA9IChcbiAgICAgIEZPUiBpblVzZXIsIGluRWRnZSBJTiAxLi4xIElOQk9VTkQgJHtjb252ZXJzYXRpb25Eb2NJZH0gaGFzQ29udmVyc2F0aW9uXG4gICAgICBSRVRVUk4gaW5Vc2VyXG4gICAgKVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXJzOiB1fSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGlmKCFjb252ZXJzYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuXG4gICAgICBjb252ZXJzYXRpb24udXNlcnMgPSBjb252ZXJzYXRpb24udXNlcnMubWFwKCh1c2VyOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7aW1hZ2VJZCwgdXNlcklkfSA9IHVzZXI7XG4gICAgICAgIGNvbnN0IHRodW1iVXJsRGF0YTogSW1hZ2VVcmxEYXRhID0ge1xuICAgICAgICAgIGJ1Y2tldDogQ29uZmlnLmdldCgnYXdzLnMzLkJ1Y2tldCcpLFxuICAgICAgICAgIGltYWdlRGlyOiAndGh1bWJzJyxcbiAgICAgICAgICBpbWFnZUlkLFxuICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgdHlwZUlkOiB1c2VySWRcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgbmFtZTogZ2V0RGlzcGxheU5hbWUodXNlciksXG4gICAgICAgICAgdGh1bWI6IGdldEltYWdlVXJsKHRodW1iVXJsRGF0YSlcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gY29udmVyc2F0aW9uO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUNvbnZlcnNhdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlQ29udmVyc2F0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgY29udmVyc2F0aW9uSWQgPSBjcmVhdGVIYXNoKGBjb252ZXJzYXRpb24tJHtzZXNzaW9uSWR9IGApLFxuICAgIGlzRGlyZWN0ID0gZmFsc2UsXG4gICAgbmFtZVxuICB9ID0gY29udmVyc2F0aW9uO1xuICBjb25zdCBmb3JtYXRDb252ZXJzYXRpb25JZDogc3RyaW5nID0gcGFyc2VJZChjb252ZXJzYXRpb25JZCk7XG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgdXBkYXRlID0ge1xuICAgIGlzRGlyZWN0LFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgbmFtZVxuICB9O1xuXG4gIGNvbnN0IGluc2VydCA9IHtcbiAgICAuLi5jbG9uZURlZXAodXBkYXRlKSxcbiAgICBfa2V5OiBmb3JtYXRDb252ZXJzYXRpb25JZCxcbiAgICBhZGRlZDogbm93XG4gIH07XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge19rZXk6ICR7Zm9ybWF0Q29udmVyc2F0aW9uSWR9IH1cbiAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgVVBEQVRFICR7dXBkYXRlfVxuICAgIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4gY29udmVyc2F0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRVc2VyVG9Db252ZXJzYXRpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICB1c2VySWRcbiAgfTogVXBkYXRlQ29udmVyc2F0aW9uVXNlclBhcmFtc1xuKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFVzZXJUb0NvbnZlcnNhdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0Q29udmVyc2F0aW9uSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udmVyc2F0aW9uSWQpO1xuICBjb25zdCBmb3JtYXRVc2VySWQ6IHN0cmluZyA9IHBhcnNlSWQodXNlcklkKTtcbiAgY29uc3QgY29udmVyc2F0aW9uRG9jSWQ6IHN0cmluZyA9IGBjb252ZXJzYXRpb25zLyR7Zm9ybWF0Q29udmVyc2F0aW9uSWR9YDtcbiAgY29uc3QgdXNlckRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtmb3JtYXRVc2VySWR9YDtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBoYyBJTiBoYXNDb252ZXJzYXRpb25cbiAgICBGSUxURVIgaGMuX2Zyb20gPT0gJHt1c2VyRG9jSWR9ICYmIGhjLl90byA9PSAke2NvbnZlcnNhdGlvbkRvY0lkfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gaGNgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChoYXNDb252ZXJzYXRpb25FZGdlKSA9PiB7XG4gICAgICBpZighIWhhc0NvbnZlcnNhdGlvbkVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGhhc0NvbnZlcnNhdGlvbkVkZ2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaGFzQ29udmVyc2F0aW9uJyk7XG4gICAgICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYGNvbnZvIC0gJHtmb3JtYXRDb252ZXJzYXRpb25JZH0gLSR7Zm9ybWF0VXNlcklkfSBgKTtcblxuICAgICAgY29uc3QgZWRnZTogQ29udmVyc2F0aW9uVHlwZSA9IHtcbiAgICAgICAgX2Zyb206IHVzZXJEb2NJZCxcbiAgICAgICAgX2tleTogZWRnZUlkLFxuICAgICAgICBfdG86IGNvbnZlcnNhdGlvbkRvY0lkLFxuICAgICAgICBhZGRlZDogRGF0ZS5ub3coKVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uXG4gICAgICAgIC5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KVxuICAgICAgICAudGhlbigoKSA9PiBlZGdlKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVc2VyRnJvbUNvbnZlcnNhdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge1xuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIHVzZXJJZFxuICB9OiBVcGRhdGVDb252ZXJzYXRpb25Vc2VyUGFyYW1zXG4pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlVXNlckZyb21Db252ZXJzYXRpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdENvbnZlcnNhdGlvbklkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZlcnNhdGlvbklkKTtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbkRvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke2Zvcm1hdENvbnZlcnNhdGlvbklkfWA7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7Zm9ybWF0VXNlcklkfWA7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaGMgSU4gaGFzQ29udmVyc2F0aW9uXG4gICAgRklMVEVSIGhjLl9mcm9tID09ICR7dXNlckRvY0lkfSAmJiBoYy5fdG8gPT0gJHtjb252ZXJzYXRpb25Eb2NJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIGhjIElOIGhhc0NvbnZlcnNhdGlvblxuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG4iXSwibmFtZXMiOlsiY2xvbmVEZWVwIiwiY3JlYXRlSGFzaCIsInBhcnNlSWQiLCJhcWwiLCJDb25maWciLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJnZXRMaW1pdCIsInNvcnRJZHMiLCJ1c2VEYiIsImdldEltYWdlVXJsIiwiZ2V0RGlzcGxheU5hbWUiLCJnZXRVc2VyIiwiZXZlbnRDYXRlZ29yeSIsInBhcnNlQ29udmVyc2F0aW9uT3B0aW9ucyIsIm9wdGlvbnMiLCJmcm9tIiwidG8iLCJsaW1pdCIsImdldENvbnZlcnNhdGlvbnMiLCJjb250ZXh0IiwidXNlcklkIiwiYWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwidXNlckRvY0lkIiwiYXFsUXJ5IiwicXVlcnkiLCJ0aGVuIiwiY3Vyc29yIiwiYWxsIiwiY2F0Y2giLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJEQVRBQkFTRV9FUlJPUiIsImdldERpcmVjdENvbnZlcnNhdGlvbiIsImZyb21JZCIsInRvSWQiLCJ0b1VzZXIiLCJmb3JtYXRGcm9tSWQiLCJmb3JtYXRUb0lkIiwidXNlcklkcyIsInNvcnRlZFVzZXJJZHMiLCJjb252ZXJzYXRpb25JZCIsImpvaW4iLCJ1c2VyIiwiY29udmVyc2F0aW9uIiwibmV4dCIsInVzZXJzIiwiYWRkRGlyZWN0Q29udmVyc2F0aW9uIiwiZGF0YWJhc2VFcnJvciIsIm5vdyIsIkRhdGUiLCJpbnNlcnQiLCJfa2V5IiwiYWRkZWQiLCJpc0RpcmVjdCIsIm1vZGlmaWVkIiwiaW5zZXJ0UXVlcnkiLCJ1cGRhdGVkQ29udmVyc2F0aW9uIiwiUHJvbWlzZSIsIm1hcCIsImVkZ2VJZCIsImVkZ2UiLCJfZnJvbSIsIl90byIsImluc2VydEVkZ2VRdWVyeSIsImdldENvbm5lY3Rpb25Vc2VycyIsImluY2x1ZGVBbGwiLCJzZXNzaW9uIiwic2Vzc2lvblVzZXJJZCIsImZpbHRlcnMiLCJwdXNoIiwiZ2V0Q29udmVyc2F0aW9uVXNlcnMiLCJnZXRDb252ZXJzYXRpb24iLCJzZXNzaW9uSWQiLCJzZXNzaW9uRG9jSWQiLCJjb252ZXJzYXRpb25Eb2NJZCIsImltYWdlSWQiLCJ0aHVtYlVybERhdGEiLCJidWNrZXQiLCJnZXQiLCJpbWFnZURpciIsInR5cGUiLCJ0eXBlSWQiLCJuYW1lIiwidGh1bWIiLCJ1cGRhdGVDb252ZXJzYXRpb24iLCJmb3JtYXRDb252ZXJzYXRpb25JZCIsInVwZGF0ZSIsImFkZFVzZXJUb0NvbnZlcnNhdGlvbiIsImZvcm1hdFVzZXJJZCIsImhhc0NvbnZlcnNhdGlvbkVkZ2UiLCJlZGdlQ29sbGVjdGlvbiIsImNvbGxlY3Rpb24iLCJzYXZlIiwicmV0dXJuTmV3IiwiZGVsZXRlVXNlckZyb21Db252ZXJzYXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFNBQVMsUUFBTyw2QkFBNkI7QUFDckQsU0FBUUMsVUFBVSxFQUFFQyxPQUFPLFFBQU8sK0JBQStCO0FBQ2pFLFNBQVFD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
@@ -10,3 +10,4 @@ export declare const dynamoPut: (params: PutItemCommandInput) => Promise<PutItem
10
10
  export declare const dynamoUpdate: (params: UpdateItemCommandInput) => Promise<UpdateItemCommandOutput>;
11
11
  export declare const dynamoPutList: (params: BatchWriteItemCommandInput) => Promise<BatchWriteItemCommandOutput>;
12
12
  export declare const dynamoDel: (params: DeleteItemCommandInput) => Promise<DeleteItemCommandOutput>;
13
+ //# sourceMappingURL=dynamodb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.d.ts","sourceRoot":"","sources":["../../src/actions/dynamodb.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EAEvB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAKlC,eAAO,MAAM,SAAS,GAAI,QAAQ,mBAAmB,KAAG,OAAO,CAAC,oBAAoB,CAehF,CAAC;AAEL,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,KAAG,GAAG,EA0BhE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,iBAAiB,EAAE,eAAU,KAAG,OAAO,CAAC,oBAAoB,EAAE,CAkChG,CAAC;AAEL,eAAO,MAAM,SAAS,GAAI,QAAQ,mBAAmB,KAAG,OAAO,CAAC,oBAAoB,CAahF,CAAC;AAEL,eAAO,MAAM,YAAY,GAAI,QAAQ,sBAAsB,KAAG,OAAO,CAAC,uBAAuB,CAazF,CAAC;AAEL,eAAO,MAAM,aAAa,GAAI,QAAQ,0BAA0B,KAAG,OAAO,CAAC,2BAA2B,CAalG,CAAC;AAEL,eAAO,MAAM,SAAS,GAAI,QAAQ,sBAAsB,KAAG,OAAO,CAAC,uBAAuB,CAatF,CAAC"}