@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,17 +1,240 @@
1
- import{createHash as $,parseString as u}from"@nlabs/utils/parsers/strings";import{aql as L}from"arangojs";import{parseContentFromDb as h,parseContentInput as q}from"../adapters/contentAdapter.js";import{Config as b}from"../config.js";import{ErrorTypes as A}from"../types/error.types.js";import{logError as T}from"../utils/analyticsUtils.js";import{useDb as R}from"../utils/arangodbUtils.js";import{translateText as x}from"../utils/googleTranslate.js";import{extractLanguage as m,isRegionalLocale as N}from"../utils/localeUtils.js";const v="content",D=(e={})=>{const{category:t,isActive:a=!0,key:o,locale:s}=e;return{category:t?u(t,100):void 0,isActive:a,key:o?u(o,200):void 0,locale:s}},E=async(e,t,a="en")=>{const o="getContent",{databaseName:s}=e,i=u(t,200),r=u(a,5),p=L`
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { createHash, parseString } from '@nlabs/utils/parsers/strings';
5
+ import { aql } from 'arangojs';
6
+ import { parseContentFromDb, parseContentInput } from '../adapters/contentAdapter.js';
7
+ import { Config } from '../config.js';
8
+ import { ErrorTypes } from '../types/error.types.js';
9
+ import { logError } from '../utils/analyticsUtils.js';
10
+ import { useDb } from '../utils/arangodbUtils.js';
11
+ import { translateText } from '../utils/googleTranslate.js';
12
+ import { extractLanguage, isRegionalLocale } from '../utils/localeUtils.js';
13
+ const eventCategory = 'content';
14
+ export const parseContentOptions = (options = {})=>{
15
+ const { category, isActive = true, key, locale } = options;
16
+ return {
17
+ category: category ? parseString(category, 100) : undefined,
18
+ isActive,
19
+ key: key ? parseString(key, 200) : undefined,
20
+ locale
21
+ };
22
+ };
23
+ export const getContent = async (context, key, locale = 'en')=>{
24
+ const action = 'getContent';
25
+ const { databaseName } = context;
26
+ const formatKey = parseString(key, 200);
27
+ const formatLocale = parseString(locale, 5);
28
+ const aqlQry = aql`
2
29
  FOR c IN content
3
- FILTER c.key == ${i} && c.locale == ${r} && c.isActive == true
30
+ FILTER c.key == ${formatKey} && c.locale == ${formatLocale} && c.isActive == true
4
31
  LIMIT 1
5
32
  RETURN c
6
- `;try{const n=await R(s).query(p).then(c=>c.next()).catch(c=>T({action:o,category:v,label:A.DATABASE_ERROR},c,e));return n?h(n):null}catch(n){throw n}},H=async(e,t,a,o="en")=>{const s=b.get("app.locale")||"en";try{let i=await E(e,t,o);if(i?.content)return i.content;if(N(o)){const r=m(o);if(i=await E(e,t,r),i?.content)return C(e,{key:t,content:i.content,locale:o,description:`Extracted from ${r}`}).catch(p=>{}),i.content}if(o===s)return a&&C(e,{key:t,content:a,locale:o,description:"Auto-generated from fallback"}).catch(r=>{}),a||t;try{let r=await E(e,t,s),p;if(r?.content)p=r.content;else{if(N(s)){const c=m(s);r=await E(e,t,c)}if(r?.content)p=r.content;else if(a)p=a,C(e,{key:t,content:a,locale:s,description:"Auto-generated from fallback"}).catch(c=>{});else return t}const n=await x(p,m(o),m(s));return C(e,{key:t,content:n,locale:o,description:`Auto-translated from ${s}`}).catch(c=>{}),n}catch{return a||t}}catch{return a||t}},C=async(e,t)=>{const a="addContent",{databaseName:o,session:s}=e,i=Date.now(),r=q(t),{key:p,locale:n="en",content:c,description:y,category:l,isActive:g=!0}=r,d=$(`content-${p}-${n}`),f={_id:`content/${d}`,_key:d,added:i,key:u(p,200),locale:n,content:u(c,1e4),description:y?u(y,500):void 0,category:l?u(l,100):void 0,isActive:g,modified:i,userId:s?.userId},O=L`INSERT ${f} IN content RETURN NEW`;try{const w=await R(o).query(O).then(I=>I.next()).catch(I=>T({action:a,category:v,label:A.DATABASE_ERROR},I,e));return h(w)}catch(w){throw w}},K=async(e,t)=>{const a="updateContent",{databaseName:o}=e,s=Date.now(),i=q(t),{contentId:r,content:p,description:n,category:c,isActive:y}=i;if(!r)throw new Error("Content ID is required for update");const l={content:u(p,1e4),modified:s};n!==void 0&&(l.description=n?u(n,500):void 0),c!==void 0&&(l.category=c?u(c,100):void 0),y!==void 0&&(l.isActive=y);const g=L`
33
+ `;
34
+ try {
35
+ const content = await useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
36
+ action,
37
+ category: eventCategory,
38
+ label: ErrorTypes.DATABASE_ERROR
39
+ }, error, context));
40
+ return content ? parseContentFromDb(content) : null;
41
+ } catch (error) {
42
+ throw error;
43
+ }
44
+ };
45
+ export const getContentWithFallback = async (context, key, fallbackContent, locale = 'en')=>{
46
+ const appLocale = Config.get('app.locale') || 'en';
47
+ try {
48
+ let content = await getContent(context, key, locale);
49
+ if (content?.content) {
50
+ return content.content;
51
+ }
52
+ if (isRegionalLocale(locale)) {
53
+ const language = extractLanguage(locale);
54
+ content = await getContent(context, key, language);
55
+ if (content?.content) {
56
+ addContent(context, {
57
+ key,
58
+ content: content.content,
59
+ locale,
60
+ description: `Extracted from ${language}`
61
+ }).catch((saveError)=>{
62
+ console.error('Error saving extracted content:', saveError);
63
+ });
64
+ return content.content;
65
+ }
66
+ }
67
+ if (locale === appLocale) {
68
+ if (fallbackContent) {
69
+ addContent(context, {
70
+ key,
71
+ content: fallbackContent,
72
+ locale,
73
+ description: 'Auto-generated from fallback'
74
+ }).catch((saveError)=>{
75
+ console.error('Error saving fallback content:', saveError);
76
+ });
77
+ }
78
+ return fallbackContent || key;
79
+ }
80
+ try {
81
+ let sourceContent = await getContent(context, key, appLocale);
82
+ let sourceText;
83
+ if (sourceContent?.content) {
84
+ sourceText = sourceContent.content;
85
+ } else {
86
+ if (isRegionalLocale(appLocale)) {
87
+ const appLanguage = extractLanguage(appLocale);
88
+ sourceContent = await getContent(context, key, appLanguage);
89
+ }
90
+ if (sourceContent?.content) {
91
+ sourceText = sourceContent.content;
92
+ } else if (fallbackContent) {
93
+ sourceText = fallbackContent;
94
+ addContent(context, {
95
+ key,
96
+ content: fallbackContent,
97
+ locale: appLocale,
98
+ description: 'Auto-generated from fallback'
99
+ }).catch((saveError)=>{
100
+ console.error('Error saving fallback as default content:', saveError);
101
+ });
102
+ } else {
103
+ return key;
104
+ }
105
+ }
106
+ const translatedText = await translateText(sourceText, extractLanguage(locale), extractLanguage(appLocale));
107
+ addContent(context, {
108
+ key,
109
+ content: translatedText,
110
+ locale,
111
+ description: `Auto-translated from ${appLocale}`
112
+ }).catch((saveError)=>{
113
+ console.error('Error saving translated content:', saveError);
114
+ });
115
+ return translatedText;
116
+ } catch (translationError) {
117
+ console.error('Translation error:', translationError);
118
+ return fallbackContent || key;
119
+ }
120
+ } catch (error) {
121
+ console.error('Error fetching content from database:', error);
122
+ return fallbackContent || key;
123
+ }
124
+ };
125
+ export const addContent = async (context, contentInput)=>{
126
+ const action = 'addContent';
127
+ const { databaseName, session } = context;
128
+ const now = Date.now();
129
+ const parsedContent = parseContentInput(contentInput);
130
+ const { key, locale = 'en', content, description, category, isActive = true } = parsedContent;
131
+ const contentId = createHash(`content-${key}-${locale}`);
132
+ const insert = {
133
+ _id: `content/${contentId}`,
134
+ _key: contentId,
135
+ added: now,
136
+ key: parseString(key, 200),
137
+ locale,
138
+ content: parseString(content, 10000),
139
+ description: description ? parseString(description, 500) : undefined,
140
+ category: category ? parseString(category, 100) : undefined,
141
+ isActive,
142
+ modified: now,
143
+ userId: session?.userId
144
+ };
145
+ const aqlQry = aql`INSERT ${insert} IN content RETURN NEW`;
146
+ try {
147
+ const savedContent = await useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
148
+ action,
149
+ category: eventCategory,
150
+ label: ErrorTypes.DATABASE_ERROR
151
+ }, error, context));
152
+ return parseContentFromDb(savedContent);
153
+ } catch (error) {
154
+ throw error;
155
+ }
156
+ };
157
+ export const updateContent = async (context, contentInput)=>{
158
+ const action = 'updateContent';
159
+ const { databaseName } = context;
160
+ const now = Date.now();
161
+ const parsedContent = parseContentInput(contentInput);
162
+ const { contentId, content, description, category, isActive } = parsedContent;
163
+ if (!contentId) {
164
+ throw new Error('Content ID is required for update');
165
+ }
166
+ const update = {
167
+ content: parseString(content, 10000),
168
+ modified: now
169
+ };
170
+ if (description !== undefined) {
171
+ update.description = description ? parseString(description, 500) : undefined;
172
+ }
173
+ if (category !== undefined) {
174
+ update.category = category ? parseString(category, 100) : undefined;
175
+ }
176
+ if (isActive !== undefined) {
177
+ update.isActive = isActive;
178
+ }
179
+ const aqlQry = aql`
7
180
  FOR c IN content
8
- FILTER c._key == ${r}
9
- UPDATE c WITH ${l} IN content
181
+ FILTER c._key == ${contentId}
182
+ UPDATE c WITH ${update} IN content
10
183
  RETURN NEW
11
- `;try{const d=await R(o).query(g).then(f=>f.next()).catch(f=>T({action:a,category:v,label:A.DATABASE_ERROR},f,e));if(!d)throw new Error("Content not found or access denied");return h(d)}catch(d){throw d}},M=async(e,t={})=>{const a="searchContent",{databaseName:o}=e,{category:s,isActive:i,key:r,locale:p}=D(t),n=[],c={};r&&(n.push("c.key == @key"),c.key=r),p&&(n.push("c.locale == @locale"),c.locale=p),s&&(n.push("c.category == @category"),c.category=s),i!==void 0&&(n.push("c.isActive == @isActive"),c.isActive=i);const l=`
184
+ `;
185
+ try {
186
+ const updatedContent = await useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
187
+ action,
188
+ category: eventCategory,
189
+ label: ErrorTypes.DATABASE_ERROR
190
+ }, error, context));
191
+ if (!updatedContent) {
192
+ throw new Error('Content not found or access denied');
193
+ }
194
+ return parseContentFromDb(updatedContent);
195
+ } catch (error) {
196
+ throw error;
197
+ }
198
+ };
199
+ export const searchContent = async (context, options = {})=>{
200
+ const action = 'searchContent';
201
+ const { databaseName } = context;
202
+ const { category, isActive, key, locale } = parseContentOptions(options);
203
+ const filterConditions = [];
204
+ const bindVars = {};
205
+ if (key) {
206
+ filterConditions.push('c.key == @key');
207
+ bindVars.key = key;
208
+ }
209
+ if (locale) {
210
+ filterConditions.push('c.locale == @locale');
211
+ bindVars.locale = locale;
212
+ }
213
+ if (category) {
214
+ filterConditions.push('c.category == @category');
215
+ bindVars.category = category;
216
+ }
217
+ if (isActive !== undefined) {
218
+ filterConditions.push('c.isActive == @isActive');
219
+ bindVars.isActive = isActive;
220
+ }
221
+ const filterClause = filterConditions.length > 0 ? `FILTER ${filterConditions.join(' && ')}` : '';
222
+ const aqlQuery = `
12
223
  FOR c IN content
13
- ${n.length>0?`FILTER ${n.join(" && ")}`:""}
224
+ ${filterClause}
14
225
  SORT c.key, c.locale
15
226
  RETURN c
16
- `;try{return(await R(o).query(l,c).then(d=>d.all()).catch(d=>T({action:a,category:v,label:A.DATABASE_ERROR},d,e))).map(d=>h(d))}catch(g){throw g}};export{C as addContent,E as getContent,H as getContentWithFallback,D as parseContentOptions,M as searchContent,K as updateContent};
17
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29udGVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB0eXBlIHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtwYXJzZUNvbnRlbnRGcm9tRGIsIHBhcnNlQ29udGVudElucHV0fSBmcm9tICcuLi9hZGFwdGVycy9jb250ZW50QWRhcHRlci5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge3RyYW5zbGF0ZVRleHR9IGZyb20gJy4uL3V0aWxzL2dvb2dsZVRyYW5zbGF0ZS5qcyc7XG5pbXBvcnQge2V4dHJhY3RMYW5ndWFnZSwgaXNSZWdpb25hbExvY2FsZX0gZnJvbSAnLi4vdXRpbHMvbG9jYWxlVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudElucHV0VHlwZSwgQ29udGVudE9wdGlvbnMsIENvbnRlbnRUeXBlLCBMb2NhbGV9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQudHlwZXMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnY29udGVudCc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnRlbnRPcHRpb25zID0gKG9wdGlvbnM6IENvbnRlbnRPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGNhdGVnb3J5LFxuICAgIGlzQWN0aXZlID0gdHJ1ZSxcbiAgICBrZXksXG4gICAgbG9jYWxlXG4gIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiB7XG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWQsXG4gICAgaXNBY3RpdmUsXG4gICAga2V5OiBrZXkgPyBwYXJzZVN0cmluZyhrZXksIDIwMCkgOiB1bmRlZmluZWQsXG4gICAgbG9jYWxlXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAga2V5OiBzdHJpbmcsXG4gIGxvY2FsZTogc3RyaW5nID0gJ2VuJ1xuKTogUHJvbWlzZTxDb250ZW50VHlwZSB8IG51bGw+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29udGVudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0S2V5OiBzdHJpbmcgPSBwYXJzZVN0cmluZyhrZXksIDIwMCk7XG4gIGNvbnN0IGZvcm1hdExvY2FsZTogc3RyaW5nID0gcGFyc2VTdHJpbmcobG9jYWxlLCA1KTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBjIElOIGNvbnRlbnRcbiAgICBGSUxURVIgYy5rZXkgPT0gJHtmb3JtYXRLZXl9ICYmIGMubG9jYWxlID09ICR7Zm9ybWF0TG9jYWxlfSAmJiBjLmlzQWN0aXZlID09IHRydWVcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIGNcbiAgYDtcblxuICB0cnkge1xuICAgIGNvbnN0IGNvbnRlbnQ6IENvbnRlbnRUeXBlIHwgbnVsbCA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSlcbiAgICAgIC5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICByZXR1cm4gY29udGVudCA/IHBhcnNlQ29udGVudEZyb21EYihjb250ZW50KSA6IG51bGw7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRlbnRXaXRoRmFsbGJhY2sgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGtleTogc3RyaW5nLFxuICBmYWxsYmFja0NvbnRlbnQ6IHN0cmluZyxcbiAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBhcHBMb2NhbGUgPSAoQ29uZmlnLmdldCgnYXBwLmxvY2FsZScpIHx8ICdlbicpIGFzIExvY2FsZTtcblxuICB0cnkge1xuICAgIGxldCBjb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGxvY2FsZSk7XG5cbiAgICBpZihjb250ZW50Py5jb250ZW50KSB7XG4gICAgICByZXR1cm4gY29udGVudC5jb250ZW50O1xuICAgIH1cblxuICAgIGlmKGlzUmVnaW9uYWxMb2NhbGUobG9jYWxlKSkge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKTtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgbGFuZ3VhZ2UgYXMgTG9jYWxlKTtcblxuICAgICAgaWYoY29udGVudD8uY29udGVudCkge1xuICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY29udGVudDogY29udGVudC5jb250ZW50LFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEV4dHJhY3RlZCBmcm9tICR7bGFuZ3VhZ2V9YFxuICAgICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGV4dHJhY3RlZCBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50LmNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYobG9jYWxlID09PSBhcHBMb2NhbGUpIHtcbiAgICAgIGlmKGZhbGxiYWNrQ29udGVudCkge1xuICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY29udGVudDogZmFsbGJhY2tDb250ZW50LFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0F1dG8tZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2snXG4gICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZmFsbGJhY2sgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbGxiYWNrQ29udGVudCB8fCBrZXk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgc291cmNlQ29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBhcHBMb2NhbGUpO1xuICAgICAgbGV0IHNvdXJjZVRleHQ6IHN0cmluZztcblxuICAgICAgaWYoc291cmNlQ29udGVudD8uY29udGVudCkge1xuICAgICAgICBzb3VyY2VUZXh0ID0gc291cmNlQ29udGVudC5jb250ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoaXNSZWdpb25hbExvY2FsZShhcHBMb2NhbGUpKSB7XG4gICAgICAgICAgY29uc3QgYXBwTGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UoYXBwTG9jYWxlKTtcbiAgICAgICAgICBzb3VyY2VDb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGFwcExhbmd1YWdlIGFzIExvY2FsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZihzb3VyY2VDb250ZW50Py5jb250ZW50KSB7XG4gICAgICAgICAgc291cmNlVGV4dCA9IHNvdXJjZUNvbnRlbnQuY29udGVudDtcbiAgICAgICAgfSBlbHNlIGlmKGZhbGxiYWNrQ29udGVudCkge1xuICAgICAgICAgIHNvdXJjZVRleHQgPSBmYWxsYmFja0NvbnRlbnQ7XG5cbiAgICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhbGxiYWNrQ29udGVudCxcbiAgICAgICAgICAgIGxvY2FsZTogYXBwTG9jYWxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdBdXRvLWdlbmVyYXRlZCBmcm9tIGZhbGxiYWNrJ1xuICAgICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBmYWxsYmFjayBhcyBkZWZhdWx0IGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRUZXh0ID0gYXdhaXQgdHJhbnNsYXRlVGV4dChzb3VyY2VUZXh0LCBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKSwgZXh0cmFjdExhbmd1YWdlKGFwcExvY2FsZSkpO1xuXG4gICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAga2V5LFxuICAgICAgICBjb250ZW50OiB0cmFuc2xhdGVkVGV4dCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEF1dG8tdHJhbnNsYXRlZCBmcm9tICR7YXBwTG9jYWxlfWBcbiAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIHRyYW5zbGF0ZWQgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cmFuc2xhdGVkVGV4dDtcbiAgICB9IGNhdGNoKHRyYW5zbGF0aW9uRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RyYW5zbGF0aW9uIGVycm9yOicsIHRyYW5zbGF0aW9uRXJyb3IpO1xuXG4gICAgICByZXR1cm4gZmFsbGJhY2tDb250ZW50IHx8IGtleTtcbiAgICB9XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjb250ZW50IGZyb20gZGF0YWJhc2U6JywgZXJyb3IpO1xuICAgIHJldHVybiBmYWxsYmFja0NvbnRlbnQgfHwga2V5O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udGVudElucHV0OiBDb250ZW50SW5wdXRUeXBlXG4pOiBQcm9taXNlPENvbnRlbnRUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZENvbnRlbnQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHBhcnNlZENvbnRlbnQgPSBwYXJzZUNvbnRlbnRJbnB1dChjb250ZW50SW5wdXQpO1xuICBjb25zdCB7a2V5LCBsb2NhbGUgPSAnZW4nLCBjb250ZW50LCBkZXNjcmlwdGlvbiwgY2F0ZWdvcnksIGlzQWN0aXZlID0gdHJ1ZX0gPSBwYXJzZWRDb250ZW50O1xuICBjb25zdCBjb250ZW50SWQgPSBjcmVhdGVIYXNoKGBjb250ZW50LSR7a2V5fS0ke2xvY2FsZX1gKTtcbiAgY29uc3QgaW5zZXJ0OiBDb250ZW50VHlwZSA9IHtcbiAgICBfaWQ6IGBjb250ZW50LyR7Y29udGVudElkfWAsXG4gICAgX2tleTogY29udGVudElkLFxuICAgIGFkZGVkOiBub3csXG4gICAga2V5OiBwYXJzZVN0cmluZyhrZXksIDIwMCksXG4gICAgbG9jYWxlLFxuICAgIGNvbnRlbnQ6IHBhcnNlU3RyaW5nKGNvbnRlbnQsIDEwMDAwKSxcbiAgICBkZXNjcmlwdGlvbjogKGRlc2NyaXB0aW9uID8gcGFyc2VTdHJpbmcoZGVzY3JpcHRpb24sIDUwMCkgOiB1bmRlZmluZWQpIGFzIHN0cmluZyxcbiAgICBjYXRlZ29yeTogKGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWQpIGFzIHN0cmluZyxcbiAgICBpc0FjdGl2ZSxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIHVzZXJJZDogc2Vzc2lvbj8udXNlcklkIGFzIHN0cmluZ1xuICB9O1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBjb250ZW50IFJFVFVSTiBORVdgO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2F2ZWRDb250ZW50OiBDb250ZW50VHlwZSA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSlcbiAgICAgIC5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICByZXR1cm4gcGFyc2VDb250ZW50RnJvbURiKHNhdmVkQ29udGVudCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUNvbnRlbnQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbnRlbnRJbnB1dDogQ29udGVudElucHV0VHlwZVxuKTogUHJvbWlzZTxDb250ZW50VHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVDb250ZW50JztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBwYXJzZWRDb250ZW50ID0gcGFyc2VDb250ZW50SW5wdXQoY29udGVudElucHV0KTtcbiAgY29uc3Qge2NvbnRlbnRJZCwgY29udGVudCwgZGVzY3JpcHRpb24sIGNhdGVnb3J5LCBpc0FjdGl2ZX0gPSBwYXJzZWRDb250ZW50O1xuXG4gIGlmKCFjb250ZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHVwZGF0ZScpO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlOiBhbnkgPSB7XG4gICAgY29udGVudDogcGFyc2VTdHJpbmcoY29udGVudCwgMTAwMDApLFxuICAgIG1vZGlmaWVkOiBub3dcbiAgfTtcblxuICBpZihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gPyBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZihjYXRlZ29yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmNhdGVnb3J5ID0gY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZihpc0FjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmlzQWN0aXZlID0gaXNBY3RpdmU7XG4gIH1cblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBjIElOIGNvbnRlbnRcbiAgICBGSUxURVIgYy5fa2V5ID09ICR7Y29udGVudElkfVxuICAgIFVQREFURSBjIFdJVEggJHt1cGRhdGV9IElOIGNvbnRlbnRcbiAgICBSRVRVUk4gTkVXXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB1cGRhdGVkQ29udGVudDogQ29udGVudFR5cGUgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpXG4gICAgICAucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuXG4gICAgaWYoIXVwZGF0ZWRDb250ZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgbm90IGZvdW5kIG9yIGFjY2VzcyBkZW5pZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDb250ZW50RnJvbURiKHVwZGF0ZWRDb250ZW50KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgb3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxDb250ZW50VHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3NlYXJjaENvbnRlbnQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtjYXRlZ29yeSwgaXNBY3RpdmUsIGtleSwgbG9jYWxlfSA9IHBhcnNlQ29udGVudE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgY29uc3QgZmlsdGVyQ29uZGl0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgYmluZFZhcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBpZihrZXkpIHtcbiAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goJ2Mua2V5ID09IEBrZXknKTtcbiAgICBiaW5kVmFycy5rZXkgPSBrZXk7XG4gIH1cblxuICBpZihsb2NhbGUpIHtcbiAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goJ2MubG9jYWxlID09IEBsb2NhbGUnKTtcbiAgICBiaW5kVmFycy5sb2NhbGUgPSBsb2NhbGU7XG4gIH1cblxuICBpZihjYXRlZ29yeSkge1xuICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaCgnYy5jYXRlZ29yeSA9PSBAY2F0ZWdvcnknKTtcbiAgICBiaW5kVmFycy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICB9XG5cbiAgaWYoaXNBY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaCgnYy5pc0FjdGl2ZSA9PSBAaXNBY3RpdmUnKTtcbiAgICBiaW5kVmFycy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICB9XG5cbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gZmlsdGVyQ29uZGl0aW9ucy5sZW5ndGggPiAwID8gYEZJTFRFUiAke2ZpbHRlckNvbmRpdGlvbnMuam9pbignICYmICcpfWAgOiAnJztcblxuICBjb25zdCBhcWxRdWVyeSA9IGBcbiAgICBGT1IgYyBJTiBjb250ZW50XG4gICAgJHtmaWx0ZXJDbGF1c2V9XG4gICAgU09SVCBjLmtleSwgYy5sb2NhbGVcbiAgICBSRVRVUk4gY1xuICBgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudExpc3QgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpXG4gICAgICAucXVlcnkoYXFsUXVlcnksIGJpbmRWYXJzKVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICByZXR1cm4gKGNvbnRlbnRMaXN0IGFzIENvbnRlbnRUeXBlW10pLm1hcCgoY29udGVudCkgPT4gcGFyc2VDb250ZW50RnJvbURiKGNvbnRlbnQpKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsY0FBQUEsRUFBWSxlQUFBQyxNQUFrQiwrQkFDdEMsT0FBUSxPQUFBQyxNQUFVLFdBR2xCLE9BQVEsc0JBQUFDLEVBQW9CLHFCQUFBQyxNQUF3QixnQ0FDcEQsT0FBUSxVQUFBQyxNQUFhLGVBQ3JCLE9BQVEsY0FBQUMsTUFBaUIsMEJBQ3pCLE9BQVEsWUFBQUMsTUFBZSw2QkFDdkIsT0FBUSxTQUFBQyxNQUFZLDRCQUNwQixPQUFRLGlCQUFBQyxNQUFvQiw4QkFDNUIsT0FBUSxtQkFBQUMsRUFBaUIsb0JBQUFDLE1BQXVCLDBCQUtoRCxNQUFNQyxFQUF3QixVQUVqQkMsRUFBc0IsQ0FBQ0MsRUFBMEIsQ0FBQyxJQUFNLENBQ25FLEtBQU0sQ0FDSixTQUFBQyxFQUNBLFNBQUFDLEVBQVcsR0FDWCxJQUFBQyxFQUNBLE9BQUFDLENBQ0Ys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QixDQUFDLFNBQUFMLEVBQVUsU0FBQUMsRUFBVSxJQUFBQyxFQUFLLE9BQUFDLENBQU0sRUFBSUwsRUFBb0JDLENBQU8sRUFFL0RxQyxFQUE2QixDQUFDLEVBQzlCQyxFQUFnQyxDQUFDLEVBRXBDbkMsSUFDRGtDLEVBQWlCLEtBQUssZUFBZSxFQUNyQ0MsRUFBUyxJQUFNbkMsR0FHZEMsSUFDRGlDLEVBQWlCLEtBQUsscUJBQXFCLEVBQzNDQyxFQUFTLE9BQVNsQyxHQUdqQkgsSUFDRG9DLEVBQWlCLEtBQUsseUJBQXlCLEVBQy9DQyxFQUFTLFNBQVdyQyxHQUduQkMsSUFBYSxTQUNkbUMsRUFBaUIsS0FBSyx5QkFBeUIsRUFDL0NDLEVBQVMsU0FBV3BDLEdBS3RCLE1BQU1xQyxFQUFXO0FBQUE7QUFBQSxNQUZJRixFQUFpQixPQUFTLEVBQUksVUFBVUEsRUFBaUIsS0FBSyxNQUFNLENBQUMsR0FBSyxFQUkvRTtBQUFBO0FBQUE7QUFBQSxJQUtoQixHQUFJLENBVUYsT0FUb0IsTUFBTTNDLEVBQU1jLENBQVksRUFDekMsTUFBTStCLEVBQVVELENBQVEsRUFDeEIsS0FBTXpCLEdBQVdBLEVBQU8sSUFBSSxDQUFDLEVBQzdCLE1BQU9DLEdBQWlCckIsRUFBUyxDQUNoQyxPQUFBYyxFQUNBLFNBQVVULEVBQ1YsTUFBT04sRUFBVyxjQUNwQixFQUFHc0IsRUFBT1IsQ0FBTyxDQUFDLEdBRWtCLElBQUtNLEdBQVl2QixFQUFtQnVCLENBQU8sQ0FBQyxDQUNwRixPQUFRRSxFQUFPLENBQ2IsTUFBTUEsQ0FDUixDQUNGIiwKICAibmFtZXMiOiBbImNyZWF0ZUhhc2giLCAicGFyc2VTdHJpbmciLCAiYXFsIiwgInBhcnNlQ29udGVudEZyb21EYiIsICJwYXJzZUNvbnRlbnRJbnB1dCIsICJDb25maWciLCAiRXJyb3JUeXBlcyIsICJsb2dFcnJvciIsICJ1c2VEYiIsICJ0cmFuc2xhdGVUZXh0IiwgImV4dHJhY3RMYW5ndWFnZSIsICJpc1JlZ2lvbmFsTG9jYWxlIiwgImV2ZW50Q2F0ZWdvcnkiLCAicGFyc2VDb250ZW50T3B0aW9ucyIsICJvcHRpb25zIiwgImNhdGVnb3J5IiwgImlzQWN0aXZlIiwgImtleSIsICJsb2NhbGUiLCAiZ2V0Q29udGVudCIsICJjb250ZXh0IiwgImFjdGlvbiIsICJkYXRhYmFzZU5hbWUiLCAiZm9ybWF0S2V5IiwgImZvcm1hdExvY2FsZSIsICJhcWxRcnkiLCAiY29udGVudCIsICJjdXJzb3IiLCAiZXJyb3IiLCAiZ2V0Q29udGVudFdpdGhGYWxsYmFjayIsICJmYWxsYmFja0NvbnRlbnQiLCAiYXBwTG9jYWxlIiwgImxhbmd1YWdlIiwgImFkZENvbnRlbnQiLCAic2F2ZUVycm9yIiwgInNvdXJjZUNvbnRlbnQiLCAic291cmNlVGV4dCIsICJhcHBMYW5ndWFnZSIsICJ0cmFuc2xhdGVkVGV4dCIsICJjb250ZW50SW5wdXQiLCAic2Vzc2lvbiIsICJub3ciLCAicGFyc2VkQ29udGVudCIsICJkZXNjcmlwdGlvbiIsICJjb250ZW50SWQiLCAiaW5zZXJ0IiwgInNhdmVkQ29udGVudCIsICJ1cGRhdGVDb250ZW50IiwgInVwZGF0ZSIsICJ1cGRhdGVkQ29udGVudCIsICJzZWFyY2hDb250ZW50IiwgImZpbHRlckNvbmRpdGlvbnMiLCAiYmluZFZhcnMiLCAiYXFsUXVlcnkiXQp9Cg==
227
+ `;
228
+ try {
229
+ const contentList = await useDb(databaseName).query(aqlQuery, bindVars).then((cursor)=>cursor.all()).catch((error)=>logError({
230
+ action,
231
+ category: eventCategory,
232
+ label: ErrorTypes.DATABASE_ERROR
233
+ }, error, context));
234
+ return contentList.map((content)=>parseContentFromDb(content));
235
+ } catch (error) {
236
+ throw error;
237
+ }
238
+ };
239
+
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvY29udGVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHR5cGUge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge3BhcnNlQ29udGVudEZyb21EYiwgcGFyc2VDb250ZW50SW5wdXR9IGZyb20gJy4uL2FkYXB0ZXJzL2NvbnRlbnRBZGFwdGVyLmpzJztcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7dHJhbnNsYXRlVGV4dH0gZnJvbSAnLi4vdXRpbHMvZ29vZ2xlVHJhbnNsYXRlLmpzJztcbmltcG9ydCB7ZXh0cmFjdExhbmd1YWdlLCBpc1JlZ2lvbmFsTG9jYWxlfSBmcm9tICcuLi91dGlscy9sb2NhbGVVdGlscy5qcyc7XG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtDb250ZW50SW5wdXRUeXBlLCBDb250ZW50T3B0aW9ucywgQ29udGVudFR5cGUsIExvY2FsZX0gZnJvbSAnLi4vdHlwZXMvY29udGVudC50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdjb250ZW50JztcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udGVudE9wdGlvbnMgPSAob3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgY2F0ZWdvcnksXG4gICAgaXNBY3RpdmUgPSB0cnVlLFxuICAgIGtleSxcbiAgICBsb2NhbGVcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBjYXRlZ29yeTogY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZCxcbiAgICBpc0FjdGl2ZSxcbiAgICBrZXk6IGtleSA/IHBhcnNlU3RyaW5nKGtleSwgMjAwKSA6IHVuZGVmaW5lZCxcbiAgICBsb2NhbGVcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBrZXk6IHN0cmluZyxcbiAgbG9jYWxlOiBzdHJpbmcgPSAnZW4nXG4pOiBQcm9taXNlPENvbnRlbnRUeXBlIHwgbnVsbD4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRDb250ZW50JztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRLZXk6IHN0cmluZyA9IHBhcnNlU3RyaW5nKGtleSwgMjAwKTtcbiAgY29uc3QgZm9ybWF0TG9jYWxlOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhsb2NhbGUsIDUpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGMgSU4gY29udGVudFxuICAgIEZJTFRFUiBjLmtleSA9PSAke2Zvcm1hdEtleX0gJiYgYy5sb2NhbGUgPT0gJHtmb3JtYXRMb2NhbGV9ICYmIGMuaXNBY3RpdmUgPT0gdHJ1ZVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gY1xuICBgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudDogQ29udGVudFR5cGUgfCBudWxsID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKVxuICAgICAgLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcblxuICAgIHJldHVybiBjb250ZW50ID8gcGFyc2VDb250ZW50RnJvbURiKGNvbnRlbnQpIDogbnVsbDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudFdpdGhGYWxsYmFjayA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAga2V5OiBzdHJpbmcsXG4gIGZhbGxiYWNrQ29udGVudDogc3RyaW5nLFxuICBsb2NhbGU6IExvY2FsZSA9ICdlbidcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGFwcExvY2FsZSA9IChDb25maWcuZ2V0KCdhcHAubG9jYWxlJykgfHwgJ2VuJykgYXMgTG9jYWxlO1xuXG4gIHRyeSB7XG4gICAgbGV0IGNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgbG9jYWxlKTtcblxuICAgIGlmKGNvbnRlbnQ/LmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBjb250ZW50LmNvbnRlbnQ7XG4gICAgfVxuXG4gICAgaWYoaXNSZWdpb25hbExvY2FsZShsb2NhbGUpKSB7XG4gICAgICBjb25zdCBsYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZShsb2NhbGUpO1xuICAgICAgY29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBsYW5ndWFnZSBhcyBMb2NhbGUpO1xuXG4gICAgICBpZihjb250ZW50Py5jb250ZW50KSB7XG4gICAgICAgIGFkZENvbnRlbnQoY29udGV4dCwge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjb250ZW50OiBjb250ZW50LmNvbnRlbnQsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRXh0cmFjdGVkIGZyb20gJHtsYW5ndWFnZX1gXG4gICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZXh0cmFjdGVkIGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQuY29udGVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZihsb2NhbGUgPT09IGFwcExvY2FsZSkge1xuICAgICAgaWYoZmFsbGJhY2tDb250ZW50KSB7XG4gICAgICAgIGFkZENvbnRlbnQoY29udGV4dCwge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjb250ZW50OiBmYWxsYmFja0NvbnRlbnQsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQXV0by1nZW5lcmF0ZWQgZnJvbSBmYWxsYmFjaydcbiAgICAgICAgfSkuY2F0Y2goKHNhdmVFcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBmYWxsYmFjayBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsbGJhY2tDb250ZW50IHx8IGtleTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxldCBzb3VyY2VDb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGFwcExvY2FsZSk7XG4gICAgICBsZXQgc291cmNlVGV4dDogc3RyaW5nO1xuXG4gICAgICBpZihzb3VyY2VDb250ZW50Py5jb250ZW50KSB7XG4gICAgICAgIHNvdXJjZVRleHQgPSBzb3VyY2VDb250ZW50LmNvbnRlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihpc1JlZ2lvbmFsTG9jYWxlKGFwcExvY2FsZSkpIHtcbiAgICAgICAgICBjb25zdCBhcHBMYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZShhcHBMb2NhbGUpO1xuICAgICAgICAgIHNvdXJjZUNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgYXBwTGFuZ3VhZ2UgYXMgTG9jYWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHNvdXJjZUNvbnRlbnQ/LmNvbnRlbnQpIHtcbiAgICAgICAgICBzb3VyY2VUZXh0ID0gc291cmNlQ29udGVudC5jb250ZW50O1xuICAgICAgICB9IGVsc2UgaWYoZmFsbGJhY2tDb250ZW50KSB7XG4gICAgICAgICAgc291cmNlVGV4dCA9IGZhbGxiYWNrQ29udGVudDtcblxuICAgICAgICAgIGFkZENvbnRlbnQoY29udGV4dCwge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgY29udGVudDogZmFsbGJhY2tDb250ZW50LFxuICAgICAgICAgICAgbG9jYWxlOiBhcHBMb2NhbGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0F1dG8tZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2snXG4gICAgICAgICAgfSkuY2F0Y2goKHNhdmVFcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGZhbGxiYWNrIGFzIGRlZmF1bHQgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdHJhbnNsYXRlZFRleHQgPSBhd2FpdCB0cmFuc2xhdGVUZXh0KHNvdXJjZVRleHQsIGV4dHJhY3RMYW5ndWFnZShsb2NhbGUpLCBleHRyYWN0TGFuZ3VhZ2UoYXBwTG9jYWxlKSk7XG5cbiAgICAgIGFkZENvbnRlbnQoY29udGV4dCwge1xuICAgICAgICBrZXksXG4gICAgICAgIGNvbnRlbnQ6IHRyYW5zbGF0ZWRUZXh0LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQXV0by10cmFuc2xhdGVkIGZyb20gJHthcHBMb2NhbGV9YFxuICAgICAgfSkuY2F0Y2goKHNhdmVFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgdHJhbnNsYXRlZCBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRUZXh0O1xuICAgIH0gY2F0Y2godHJhbnNsYXRpb25FcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignVHJhbnNsYXRpb24gZXJyb3I6JywgdHJhbnNsYXRpb25FcnJvcik7XG5cbiAgICAgIHJldHVybiBmYWxsYmFja0NvbnRlbnQgfHwga2V5O1xuICAgIH1cbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNvbnRlbnQgZnJvbSBkYXRhYmFzZTonLCBlcnJvcik7XG4gICAgcmV0dXJuIGZhbGxiYWNrQ29udGVudCB8fCBrZXk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb250ZW50SW5wdXQ6IENvbnRlbnRJbnB1dFR5cGVcbik6IFByb21pc2U8Q29udGVudFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkQ29udGVudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgcGFyc2VkQ29udGVudCA9IHBhcnNlQ29udGVudElucHV0KGNvbnRlbnRJbnB1dCk7XG4gIGNvbnN0IHtrZXksIGxvY2FsZSA9ICdlbicsIGNvbnRlbnQsIGRlc2NyaXB0aW9uLCBjYXRlZ29yeSwgaXNBY3RpdmUgPSB0cnVlfSA9IHBhcnNlZENvbnRlbnQ7XG4gIGNvbnN0IGNvbnRlbnRJZCA9IGNyZWF0ZUhhc2goYGNvbnRlbnQtJHtrZXl9LSR7bG9jYWxlfWApO1xuICBjb25zdCBpbnNlcnQ6IENvbnRlbnRUeXBlID0ge1xuICAgIF9pZDogYGNvbnRlbnQvJHtjb250ZW50SWR9YCxcbiAgICBfa2V5OiBjb250ZW50SWQsXG4gICAgYWRkZWQ6IG5vdyxcbiAgICBrZXk6IHBhcnNlU3RyaW5nKGtleSwgMjAwKSxcbiAgICBsb2NhbGUsXG4gICAgY29udGVudDogcGFyc2VTdHJpbmcoY29udGVudCwgMTAwMDApLFxuICAgIGRlc2NyaXB0aW9uOiAoZGVzY3JpcHRpb24gPyBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKSA6IHVuZGVmaW5lZCkgYXMgc3RyaW5nLFxuICAgIGNhdGVnb3J5OiAoY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZCkgYXMgc3RyaW5nLFxuICAgIGlzQWN0aXZlLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgdXNlcklkOiBzZXNzaW9uPy51c2VySWQgYXMgc3RyaW5nXG4gIH07XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGNvbnRlbnQgUkVUVVJOIE5FV2A7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBzYXZlZENvbnRlbnQ6IENvbnRlbnRUeXBlID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKVxuICAgICAgLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcblxuICAgIHJldHVybiBwYXJzZUNvbnRlbnRGcm9tRGIoc2F2ZWRDb250ZW50KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udGVudElucHV0OiBDb250ZW50SW5wdXRUeXBlXG4pOiBQcm9taXNlPENvbnRlbnRUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZUNvbnRlbnQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHBhcnNlZENvbnRlbnQgPSBwYXJzZUNvbnRlbnRJbnB1dChjb250ZW50SW5wdXQpO1xuICBjb25zdCB7Y29udGVudElkLCBjb250ZW50LCBkZXNjcmlwdGlvbiwgY2F0ZWdvcnksIGlzQWN0aXZlfSA9IHBhcnNlZENvbnRlbnQ7XG5cbiAgaWYoIWNvbnRlbnRJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29udGVudCBJRCBpcyByZXF1aXJlZCBmb3IgdXBkYXRlJyk7XG4gIH1cblxuICBjb25zdCB1cGRhdGU6IGFueSA9IHtcbiAgICBjb250ZW50OiBwYXJzZVN0cmluZyhjb250ZW50LCAxMDAwMCksXG4gICAgbW9kaWZpZWQ6IG5vd1xuICB9O1xuXG4gIGlmKGRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICB1cGRhdGUuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiA/IHBhcnNlU3RyaW5nKGRlc2NyaXB0aW9uLCA1MDApIDogdW5kZWZpbmVkO1xuICB9XG4gIGlmKGNhdGVnb3J5ICE9PSB1bmRlZmluZWQpIHtcbiAgICB1cGRhdGUuY2F0ZWdvcnkgPSBjYXRlZ29yeSA/IHBhcnNlU3RyaW5nKGNhdGVnb3J5LCAxMDApIDogdW5kZWZpbmVkO1xuICB9XG4gIGlmKGlzQWN0aXZlICE9PSB1bmRlZmluZWQpIHtcbiAgICB1cGRhdGUuaXNBY3RpdmUgPSBpc0FjdGl2ZTtcbiAgfVxuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgRk9SIGMgSU4gY29udGVudFxuICAgIEZJTFRFUiBjLl9rZXkgPT0gJHtjb250ZW50SWR9XG4gICAgVVBEQVRFIGMgV0lUSCAke3VwZGF0ZX0gSU4gY29udGVudFxuICAgIFJFVFVSTiBORVdcbiAgYDtcblxuICB0cnkge1xuICAgIGNvbnN0IHVwZGF0ZWRDb250ZW50OiBDb250ZW50VHlwZSA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSlcbiAgICAgIC5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICBpZighdXBkYXRlZENvbnRlbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29udGVudCBub3QgZm91bmQgb3IgYWNjZXNzIGRlbmllZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZUNvbnRlbnRGcm9tRGIodXBkYXRlZENvbnRlbnQpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZWFyY2hDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBvcHRpb25zOiBDb250ZW50T3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPENvbnRlbnRUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnc2VhcmNoQ29udGVudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qge2NhdGVnb3J5LCBpc0FjdGl2ZSwga2V5LCBsb2NhbGV9ID0gcGFyc2VDb250ZW50T3B0aW9ucyhvcHRpb25zKTtcblxuICBjb25zdCBmaWx0ZXJDb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBiaW5kVmFyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gIGlmKGtleSkge1xuICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaCgnYy5rZXkgPT0gQGtleScpO1xuICAgIGJpbmRWYXJzLmtleSA9IGtleTtcbiAgfVxuXG4gIGlmKGxvY2FsZSkge1xuICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaCgnYy5sb2NhbGUgPT0gQGxvY2FsZScpO1xuICAgIGJpbmRWYXJzLmxvY2FsZSA9IGxvY2FsZTtcbiAgfVxuXG4gIGlmKGNhdGVnb3J5KSB7XG4gICAgZmlsdGVyQ29uZGl0aW9ucy5wdXNoKCdjLmNhdGVnb3J5ID09IEBjYXRlZ29yeScpO1xuICAgIGJpbmRWYXJzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gIH1cblxuICBpZihpc0FjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZmlsdGVyQ29uZGl0aW9ucy5wdXNoKCdjLmlzQWN0aXZlID09IEBpc0FjdGl2ZScpO1xuICAgIGJpbmRWYXJzLmlzQWN0aXZlID0gaXNBY3RpdmU7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBmaWx0ZXJDb25kaXRpb25zLmxlbmd0aCA+IDAgPyBgRklMVEVSICR7ZmlsdGVyQ29uZGl0aW9ucy5qb2luKCcgJiYgJyl9YCA6ICcnO1xuXG4gIGNvbnN0IGFxbFF1ZXJ5ID0gYFxuICAgIEZPUiBjIElOIGNvbnRlbnRcbiAgICAke2ZpbHRlckNsYXVzZX1cbiAgICBTT1JUIGMua2V5LCBjLmxvY2FsZVxuICAgIFJFVFVSTiBjXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50TGlzdCA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSlcbiAgICAgIC5xdWVyeShhcWxRdWVyeSwgYmluZFZhcnMpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcblxuICAgIHJldHVybiAoY29udGVudExpc3QgYXMgQ29udGVudFR5cGVbXSkubWFwKChjb250ZW50KSA9PiBwYXJzZUNvbnRlbnRGcm9tRGIoY29udGVudCkpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07Il0sIm5hbWVzIjpbImNyZWF0ZUhhc2giLCJwYXJzZVN0cmluZyIsImFxbCIsInBhcnNlQ29udGVudEZyb21EYiIsInBhcnNlQ29udGVudElucHV0IiwiQ29uZmlnIiwiRXJyb3JUeXBlcyIsImxvZ0Vycm9yIiwidXNlRGIiLCJ0cmFuc2xhdGVUZXh0IiwiZXh0cmFjdExhbmd1YWdlIiwiaXNSZWdpb25hbExvY2FsZSIsImV2ZW50Q2F0ZWdvcnkiLCJwYXJzZUNvbnRlbnRPcHRpb25zIiwib3B0aW9ucyIsImNhdGVnb3J5IiwiaXNBY3RpdmUiLCJrZXkiLCJsb2NhbGUiLCJ1bmRlZmluZWQiLCJnZXRDb250ZW50IiwiY29udGV4dCIsImFjdGlvbiIsImRhdGFiYXNlTmFtZSIsImZvcm1hdEtleSIsImZvcm1hdExvY2FsZSIsImFxbFFyeSIsImNvbnRlbnQiLCJxdWVyeSIsInRoZW4iLCJjdXJzb3IiLCJuZXh0IiwiY2F0Y2giLCJlcnJvciIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJnZXRDb250ZW50V2l0aEZhbGxiYWNrIiwiZmFsbGJhY2tDb250ZW50IiwiYXBwTG9jYWxlIiwiZ2V0IiwibGFuZ3VhZ2UiLCJhZGRDb250ZW50IiwiZGVzY3JpcHRpb24iLCJzYXZlRXJyb3IiLCJjb25zb2xlIiwic291cmNlQ29udGVudCIsInNvdXJjZVRleHQiLCJhcHBMYW5ndWFnZSIsInRyYW5zbGF0ZWRUZXh0IiwidHJhbnNsYXRpb25FcnJvciIsImNvbnRlbnRJbnB1dCIsInNlc3Npb24iLCJub3ciLCJEYXRlIiwicGFyc2VkQ29udGVudCIsImNvbnRlbnRJZCIsImluc2VydCIsIl9pZCIsIl9rZXkiLCJhZGRlZCIsIm1vZGlmaWVkIiwidXNlcklkIiwic2F2ZWRDb250ZW50IiwidXBkYXRlQ29udGVudCIsIkVycm9yIiwidXBkYXRlIiwidXBkYXRlZENvbnRlbnQiLCJzZWFyY2hDb250ZW50IiwiZmlsdGVyQ29uZGl0aW9ucyIsImJpbmRWYXJzIiwicHVzaCIsImZpbHRlckNsYXVzZSIsImxlbmd0aCIsImpvaW4iLCJhcWxRdWVyeSIsImNvbnRlbnRMaXN0IiwiYWxsIiwibWFwIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxVQUFVLEVBQUVDLFdBQVcsUUFBTywrQkFBK0I7QUFDckUsU0FBUUMsR0FBRyxRQUFPLFdBQVc7QUFHN0IsU0FBUUMsa0JBQWtCLEVBQUVDLGlCQUFpQixRQUFPLGdDQUFnQztBQUNwRixTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUNwQyxTQUFRQyxVQUFVLFFBQU8sMEJBQTBCO0FBQ25ELFNBQVFDLFFBQVEsUUFBTyw2QkFBNkI7QUFDcEQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxhQUFhLFFBQU8sOEJBQThCO0FBQzFELFNBQVFDLGVBQWUsRUFBRUMsZ0JBQWdCLFFBQU8sMEJBQTBCO0FBSzFF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
@@ -14,3 +14,4 @@ export declare const getConversation: (context: ApiContext, conversationId: stri
14
14
  export declare const updateConversation: (context: ApiContext, conversation: ConversationType) => Promise<ConversationType>;
15
15
  export declare const addUserToConversation: (context: ApiContext, { conversationId, userId }: UpdateConversationUserParams) => Promise<ConversationType>;
16
16
  export declare const deleteUserFromConversation: (context: ApiContext, { conversationId, userId }: UpdateConversationUserParams) => Promise<ConversationType>;
17
+ //# sourceMappingURL=conversations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/actions/conversations.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAC,aAAa,EAAW,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AAMzC,eAAO,MAAM,wBAAwB,GAAI,UAAS,mBAAwB;WAOzC,aAAa;CAE7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,UAAU,EAAE,QAAQ,MAAM,EAAE,aAAQ,KAAG,OAAO,CAAC,gBAAgB,EAAE,CAwB1G,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,UAAU,EACnB,0BAIG,wBAAwB,KAC1B,OAAO,CAAC,gBAAgB,CAgC1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,UAAU,EACnB,0BAIG,wBAAwB,KAC1B,OAAO,CAAC,gBAAgB,CA2C1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,UAAU,EACnB,0CAIG,uBAAuB,KACzB,OAAO,CAAC,cAAc,EAAE,CA4B1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,UAAU,EACnB,0CAIG,uBAAuB,KACzB,OAAO,CAAC,gBAAgB,EAAE,CA2B5B,CAAC;AAoCF,eAAO,MAAM,eAAe,GAAI,SAAS,UAAU,EAAE,gBAAgB,MAAM,KAAG,OAAO,CAAC,gBAAgB,CA8CrG,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,UAAU,EACnB,cAAc,gBAAgB,KAC7B,OAAO,CAAC,gBAAgB,CAmC1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,SAAS,UAAU,EACnB,4BAGG,4BAA4B,KAC9B,OAAO,CAAC,gBAAgB,CAuC1B,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,SAAS,UAAU,EACnB,4BAGG,4BAA4B,KAC9B,OAAO,CAAC,gBAAgB,CAqB1B,CAAC"}