@nlabs/reaktor 0.10.5 → 0.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/lib/actions/apps.d.ts +1 -0
  2. package/lib/actions/apps.d.ts.map +1 -0
  3. package/lib/actions/apps.js +221 -0
  4. package/lib/actions/connections.d.ts +1 -0
  5. package/lib/actions/connections.d.ts.map +1 -0
  6. package/lib/actions/connections.js +62 -0
  7. package/lib/actions/content.d.ts +1 -0
  8. package/lib/actions/content.d.ts.map +1 -0
  9. package/lib/actions/content.js +240 -0
  10. package/lib/actions/conversations.d.ts +1 -0
  11. package/lib/actions/conversations.d.ts.map +1 -0
  12. package/lib/actions/conversations.js +335 -0
  13. package/lib/actions/dynamodb.d.ts +1 -0
  14. package/lib/actions/dynamodb.d.ts.map +1 -0
  15. package/lib/actions/dynamodb.js +119 -0
  16. package/lib/actions/email.d.ts +1 -0
  17. package/lib/actions/email.d.ts.map +1 -0
  18. package/lib/actions/email.js +56 -0
  19. package/lib/actions/files.d.ts +1 -0
  20. package/lib/actions/files.d.ts.map +1 -0
  21. package/lib/actions/files.js +226 -0
  22. package/lib/actions/groups.d.ts +1 -0
  23. package/lib/actions/groups.d.ts.map +1 -0
  24. package/lib/actions/groups.js +267 -0
  25. package/lib/actions/images.d.ts +1 -0
  26. package/lib/actions/images.d.ts.map +1 -0
  27. package/lib/actions/images.js +723 -0
  28. package/lib/actions/index.d.ts +1 -0
  29. package/lib/actions/index.d.ts.map +1 -0
  30. package/lib/actions/index.js +29 -0
  31. package/lib/actions/ios.d.ts +1 -0
  32. package/lib/actions/ios.d.ts.map +1 -0
  33. package/lib/actions/ios.js +230 -0
  34. package/lib/actions/locations.d.ts +1 -0
  35. package/lib/actions/locations.d.ts.map +1 -0
  36. package/lib/actions/locations.js +111 -0
  37. package/lib/actions/messages.d.ts +1 -0
  38. package/lib/actions/messages.d.ts.map +1 -0
  39. package/lib/actions/messages.js +167 -0
  40. package/lib/actions/notifications.d.ts +3 -2
  41. package/lib/actions/notifications.d.ts.map +1 -0
  42. package/lib/actions/notifications.js +37 -0
  43. package/lib/actions/payments.d.ts +1 -0
  44. package/lib/actions/payments.d.ts.map +1 -0
  45. package/lib/actions/payments.js +449 -0
  46. package/lib/actions/posts.d.ts +1 -0
  47. package/lib/actions/posts.d.ts.map +1 -0
  48. package/lib/actions/posts.js +608 -0
  49. package/lib/actions/profiles.d.ts +1 -0
  50. package/lib/actions/profiles.d.ts.map +1 -0
  51. package/lib/actions/profiles.js +58 -0
  52. package/lib/actions/reactions.d.ts +1 -0
  53. package/lib/actions/reactions.d.ts.map +1 -0
  54. package/lib/actions/reactions.js +286 -0
  55. package/lib/actions/s3.d.ts +1 -0
  56. package/lib/actions/s3.d.ts.map +1 -0
  57. package/lib/actions/s3.js +102 -0
  58. package/lib/actions/search.d.ts +1 -0
  59. package/lib/actions/search.d.ts.map +1 -0
  60. package/lib/actions/search.js +81 -0
  61. package/lib/actions/sms.d.ts +1 -0
  62. package/lib/actions/sms.d.ts.map +1 -0
  63. package/lib/actions/sms.js +52 -0
  64. package/lib/actions/statistics.d.ts +1 -0
  65. package/lib/actions/statistics.d.ts.map +1 -0
  66. package/lib/actions/statistics.js +43 -0
  67. package/lib/actions/subscriptions.d.ts +1 -0
  68. package/lib/actions/subscriptions.d.ts.map +1 -0
  69. package/lib/actions/subscriptions.js +202 -0
  70. package/lib/actions/tags.d.ts +1 -0
  71. package/lib/actions/tags.d.ts.map +1 -0
  72. package/lib/actions/tags.js +263 -0
  73. package/lib/actions/users.d.ts +1 -0
  74. package/lib/actions/users.d.ts.map +1 -0
  75. package/lib/actions/users.js +802 -0
  76. package/lib/actions/videos.d.ts +1 -0
  77. package/lib/actions/videos.d.ts.map +1 -0
  78. package/lib/actions/videos.js +423 -0
  79. package/lib/actions/websockets.d.ts +1 -0
  80. package/lib/actions/websockets.d.ts.map +1 -0
  81. package/lib/actions/websockets.js +164 -0
  82. package/lib/adapters/arangoAdapter.d.ts +1 -0
  83. package/lib/adapters/arangoAdapter.d.ts.map +1 -0
  84. package/lib/adapters/arangoAdapter.js +70 -0
  85. package/lib/adapters/contentAdapter.d.ts +1 -0
  86. package/lib/adapters/contentAdapter.d.ts.map +1 -0
  87. package/lib/adapters/contentAdapter.js +108 -0
  88. package/lib/adapters/fileAdapter.d.ts +1 -0
  89. package/lib/adapters/fileAdapter.d.ts.map +1 -0
  90. package/lib/adapters/fileAdapter.js +119 -0
  91. package/lib/adapters/imageAdapter.d.ts +1 -0
  92. package/lib/adapters/imageAdapter.d.ts.map +1 -0
  93. package/lib/adapters/imageAdapter.js +112 -0
  94. package/lib/adapters/index.d.ts +1 -0
  95. package/lib/adapters/index.d.ts.map +1 -0
  96. package/lib/adapters/index.js +11 -0
  97. package/lib/adapters/messageAdapter.d.ts +1 -0
  98. package/lib/adapters/messageAdapter.d.ts.map +1 -0
  99. package/lib/adapters/messageAdapter.js +82 -0
  100. package/lib/adapters/postAdapter.d.ts +1 -0
  101. package/lib/adapters/postAdapter.d.ts.map +1 -0
  102. package/lib/adapters/postAdapter.js +117 -0
  103. package/lib/adapters/reaktorAdapter.d.ts +1 -0
  104. package/lib/adapters/reaktorAdapter.d.ts.map +1 -0
  105. package/lib/adapters/reaktorAdapter.js +59 -0
  106. package/lib/adapters/tagAdapter.d.ts +1 -0
  107. package/lib/adapters/tagAdapter.d.ts.map +1 -0
  108. package/lib/adapters/tagAdapter.js +99 -0
  109. package/lib/adapters/userAdapter.d.ts +1 -0
  110. package/lib/adapters/userAdapter.d.ts.map +1 -0
  111. package/lib/adapters/userAdapter.js +264 -0
  112. package/lib/config.d.ts +1 -0
  113. package/lib/config.d.ts.map +1 -0
  114. package/lib/config.js +161 -0
  115. package/lib/handlers/graphqlHandler.d.ts +1 -0
  116. package/lib/handlers/graphqlHandler.d.ts.map +1 -0
  117. package/lib/handlers/graphqlHandler.js +118 -0
  118. package/lib/index.d.ts +1 -0
  119. package/lib/index.d.ts.map +1 -0
  120. package/lib/index.js +18 -0
  121. package/lib/lambdas/actions/websockets.d.ts +1 -0
  122. package/lib/lambdas/actions/websockets.d.ts.map +1 -0
  123. package/lib/lambdas/actions/websockets.js +105 -0
  124. package/lib/lambdas/authorizer.d.ts +1 -0
  125. package/lib/lambdas/authorizer.d.ts.map +1 -0
  126. package/lib/lambdas/authorizer.js +41 -0
  127. package/lib/lambdas/connection.d.ts +1 -0
  128. package/lib/lambdas/connection.d.ts.map +1 -0
  129. package/lib/lambdas/connection.js +85 -0
  130. package/lib/lambdas/utils/message.d.ts +1 -0
  131. package/lib/lambdas/utils/message.d.ts.map +1 -0
  132. package/lib/lambdas/utils/message.js +20 -0
  133. package/lib/lambdas/utils/websocket.d.ts +1 -0
  134. package/lib/lambdas/utils/websocket.d.ts.map +1 -0
  135. package/lib/lambdas/utils/websocket.js +78 -0
  136. package/lib/mocks/conversation.d.ts +1 -0
  137. package/lib/mocks/conversation.d.ts.map +1 -0
  138. package/lib/mocks/conversation.js +10 -0
  139. package/lib/mocks/file.d.ts +1 -0
  140. package/lib/mocks/file.d.ts.map +1 -0
  141. package/lib/mocks/file.js +13 -0
  142. package/lib/mocks/group.d.ts +1 -0
  143. package/lib/mocks/group.d.ts.map +1 -0
  144. package/lib/mocks/group.js +20 -0
  145. package/lib/mocks/image.d.ts +1 -0
  146. package/lib/mocks/image.d.ts.map +1 -0
  147. package/lib/mocks/image.js +17 -0
  148. package/lib/mocks/post.d.ts +1 -0
  149. package/lib/mocks/post.d.ts.map +1 -0
  150. package/lib/mocks/post.js +28 -0
  151. package/lib/mocks/tag.d.ts +1 -0
  152. package/lib/mocks/tag.d.ts.map +1 -0
  153. package/lib/mocks/tag.js +12 -0
  154. package/lib/mocks/user.d.ts +1 -0
  155. package/lib/mocks/user.d.ts.map +1 -0
  156. package/lib/mocks/user.js +61 -0
  157. package/lib/mocks/video.d.ts +1 -0
  158. package/lib/mocks/video.d.ts.map +1 -0
  159. package/lib/mocks/video.js +17 -0
  160. package/lib/mutations/content.d.ts +1 -0
  161. package/lib/mutations/content.d.ts.map +1 -0
  162. package/lib/mutations/content.js +27 -0
  163. package/lib/mutations/index.d.ts +1 -0
  164. package/lib/mutations/index.d.ts.map +1 -0
  165. package/lib/mutations/index.js +29 -0
  166. package/lib/mutations/locations.d.ts +1 -0
  167. package/lib/mutations/locations.d.ts.map +1 -0
  168. package/lib/mutations/locations.js +22 -0
  169. package/lib/mutations/messages.d.ts +1 -0
  170. package/lib/mutations/messages.d.ts.map +1 -0
  171. package/lib/mutations/messages.js +75 -0
  172. package/lib/mutations/posts.d.ts +1 -0
  173. package/lib/mutations/posts.d.ts.map +1 -0
  174. package/lib/mutations/posts.js +31 -0
  175. package/lib/mutations/profiles.d.ts +1 -0
  176. package/lib/mutations/profiles.d.ts.map +1 -0
  177. package/lib/mutations/profiles.js +78 -0
  178. package/lib/mutations/reactions.d.ts +1 -0
  179. package/lib/mutations/reactions.d.ts.map +1 -0
  180. package/lib/mutations/reactions.js +29 -0
  181. package/lib/mutations/statistics.d.ts +1 -0
  182. package/lib/mutations/statistics.d.ts.map +1 -0
  183. package/lib/mutations/statistics.js +17 -0
  184. package/lib/mutations/subscriptions.d.ts +1 -0
  185. package/lib/mutations/subscriptions.d.ts.map +1 -0
  186. package/lib/mutations/subscriptions.js +38 -0
  187. package/lib/mutations/tags.d.ts +1 -0
  188. package/lib/mutations/tags.d.ts.map +1 -0
  189. package/lib/mutations/tags.js +109 -0
  190. package/lib/mutations/users.d.ts +1 -0
  191. package/lib/mutations/users.d.ts.map +1 -0
  192. package/lib/mutations/users.js +129 -0
  193. package/lib/objectTypes/app.d.ts +1 -0
  194. package/lib/objectTypes/app.d.ts.map +1 -0
  195. package/lib/objectTypes/app.js +147 -0
  196. package/lib/objectTypes/bankAccount.d.ts +1 -0
  197. package/lib/objectTypes/bankAccount.d.ts.map +1 -0
  198. package/lib/objectTypes/bankAccount.js +54 -0
  199. package/lib/objectTypes/connection.d.ts +1 -0
  200. package/lib/objectTypes/connection.d.ts.map +1 -0
  201. package/lib/objectTypes/connection.js +26 -0
  202. package/lib/objectTypes/content.d.ts +1 -0
  203. package/lib/objectTypes/content.d.ts.map +1 -0
  204. package/lib/objectTypes/content.js +79 -0
  205. package/lib/objectTypes/conversation.d.ts +1 -0
  206. package/lib/objectTypes/conversation.d.ts.map +1 -0
  207. package/lib/objectTypes/conversation.js +53 -0
  208. package/lib/objectTypes/creditCard.d.ts +1 -0
  209. package/lib/objectTypes/creditCard.d.ts.map +1 -0
  210. package/lib/objectTypes/creditCard.js +64 -0
  211. package/lib/objectTypes/document.d.ts +1 -0
  212. package/lib/objectTypes/document.d.ts.map +1 -0
  213. package/lib/objectTypes/document.js +21 -0
  214. package/lib/objectTypes/error.d.ts +1 -0
  215. package/lib/objectTypes/error.d.ts.map +1 -0
  216. package/lib/objectTypes/error.js +24 -0
  217. package/lib/objectTypes/external.d.ts +1 -0
  218. package/lib/objectTypes/external.d.ts.map +1 -0
  219. package/lib/objectTypes/external.js +52 -0
  220. package/lib/objectTypes/file.d.ts +1 -0
  221. package/lib/objectTypes/file.d.ts.map +1 -0
  222. package/lib/objectTypes/file.js +76 -0
  223. package/lib/objectTypes/filter.d.ts +1 -0
  224. package/lib/objectTypes/filter.d.ts.map +1 -0
  225. package/lib/objectTypes/filter.js +21 -0
  226. package/lib/objectTypes/group.d.ts +1 -0
  227. package/lib/objectTypes/group.d.ts.map +1 -0
  228. package/lib/objectTypes/group.js +97 -0
  229. package/lib/objectTypes/iapSubscription.d.ts +1 -0
  230. package/lib/objectTypes/iapSubscription.d.ts.map +1 -0
  231. package/lib/objectTypes/iapSubscription.js +18 -0
  232. package/lib/objectTypes/image.d.ts +1 -0
  233. package/lib/objectTypes/image.d.ts.map +1 -0
  234. package/lib/objectTypes/image.js +105 -0
  235. package/lib/objectTypes/index.d.ts +1 -0
  236. package/lib/objectTypes/index.d.ts.map +1 -0
  237. package/lib/objectTypes/index.js +28 -0
  238. package/lib/objectTypes/location.d.ts +1 -0
  239. package/lib/objectTypes/location.d.ts.map +1 -0
  240. package/lib/objectTypes/location.js +85 -0
  241. package/lib/objectTypes/message.d.ts +1 -0
  242. package/lib/objectTypes/message.d.ts.map +1 -0
  243. package/lib/objectTypes/message.js +72 -0
  244. package/lib/objectTypes/passcode.d.ts +1 -0
  245. package/lib/objectTypes/passcode.d.ts.map +1 -0
  246. package/lib/objectTypes/passcode.js +20 -0
  247. package/lib/objectTypes/plan.d.ts +1 -0
  248. package/lib/objectTypes/plan.d.ts.map +1 -0
  249. package/lib/objectTypes/plan.js +71 -0
  250. package/lib/objectTypes/post.d.ts +1 -0
  251. package/lib/objectTypes/post.d.ts.map +1 -0
  252. package/lib/objectTypes/post.js +101 -0
  253. package/lib/objectTypes/profile.d.ts +1 -0
  254. package/lib/objectTypes/profile.d.ts.map +1 -0
  255. package/lib/objectTypes/profile.js +68 -0
  256. package/lib/objectTypes/reaction.d.ts +1 -0
  257. package/lib/objectTypes/reaction.d.ts.map +1 -0
  258. package/lib/objectTypes/reaction.js +37 -0
  259. package/lib/objectTypes/relation.d.ts +1 -0
  260. package/lib/objectTypes/relation.d.ts.map +1 -0
  261. package/lib/objectTypes/relation.js +27 -0
  262. package/lib/objectTypes/search.d.ts +1 -0
  263. package/lib/objectTypes/search.d.ts.map +1 -0
  264. package/lib/objectTypes/search.js +50 -0
  265. package/lib/objectTypes/statistics.d.ts +1 -0
  266. package/lib/objectTypes/statistics.d.ts.map +1 -0
  267. package/lib/objectTypes/statistics.js +17 -0
  268. package/lib/objectTypes/subscription.d.ts +1 -0
  269. package/lib/objectTypes/subscription.d.ts.map +1 -0
  270. package/lib/objectTypes/subscription.js +102 -0
  271. package/lib/objectTypes/tag.d.ts +1 -0
  272. package/lib/objectTypes/tag.d.ts.map +1 -0
  273. package/lib/objectTypes/tag.js +41 -0
  274. package/lib/objectTypes/user.d.ts +1 -0
  275. package/lib/objectTypes/user.d.ts.map +1 -0
  276. package/lib/objectTypes/user.js +111 -0
  277. package/lib/queries/content.d.ts +1 -0
  278. package/lib/queries/content.d.ts.map +1 -0
  279. package/lib/queries/content.js +50 -0
  280. package/lib/queries/index.d.ts +1 -0
  281. package/lib/queries/index.d.ts.map +1 -0
  282. package/lib/queries/index.js +27 -0
  283. package/lib/queries/locations.d.ts +1 -0
  284. package/lib/queries/locations.d.ts.map +1 -0
  285. package/lib/queries/locations.js +23 -0
  286. package/lib/queries/messages.d.ts +1 -0
  287. package/lib/queries/messages.d.ts.map +1 -0
  288. package/lib/queries/messages.js +35 -0
  289. package/lib/queries/posts.d.ts +1 -0
  290. package/lib/queries/posts.d.ts.map +1 -0
  291. package/lib/queries/posts.js +154 -0
  292. package/lib/queries/reactions.d.ts +1 -0
  293. package/lib/queries/reactions.d.ts.map +1 -0
  294. package/lib/queries/reactions.js +34 -0
  295. package/lib/queries/statistics.d.ts +1 -0
  296. package/lib/queries/statistics.d.ts.map +1 -0
  297. package/lib/queries/statistics.js +17 -0
  298. package/lib/queries/subscriptions.d.ts +1 -0
  299. package/lib/queries/subscriptions.d.ts.map +1 -0
  300. package/lib/queries/subscriptions.js +21 -0
  301. package/lib/queries/tags.d.ts +1 -0
  302. package/lib/queries/tags.d.ts.map +1 -0
  303. package/lib/queries/tags.js +56 -0
  304. package/lib/queries/users.d.ts +1 -0
  305. package/lib/queries/users.d.ts.map +1 -0
  306. package/lib/queries/users.js +39 -0
  307. package/lib/templates/email/layout.d.ts +1 -0
  308. package/lib/templates/email/layout.d.ts.map +1 -0
  309. package/lib/templates/email/layout.js +281 -0
  310. package/lib/templates/email/passwordForgot.d.ts +1 -0
  311. package/lib/templates/email/passwordForgot.d.ts.map +1 -0
  312. package/lib/templates/email/passwordForgot.js +17 -0
  313. package/lib/templates/email/passwordRecovery.d.ts +1 -0
  314. package/lib/templates/email/passwordRecovery.d.ts.map +1 -0
  315. package/lib/templates/email/passwordRecovery.js +14 -0
  316. package/lib/templates/email/verifyEmail.d.ts +1 -0
  317. package/lib/templates/email/verifyEmail.d.ts.map +1 -0
  318. package/lib/templates/email/verifyEmail.js +17 -0
  319. package/lib/templates/email/welcome.d.ts +1 -0
  320. package/lib/templates/email/welcome.d.ts.map +1 -0
  321. package/lib/templates/email/welcome.js +17 -0
  322. package/lib/templates/sms/passwordForgot.d.ts +1 -0
  323. package/lib/templates/sms/passwordForgot.d.ts.map +1 -0
  324. package/lib/templates/sms/passwordForgot.js +3 -0
  325. package/lib/templates/sms/passwordRecovery.d.ts +1 -0
  326. package/lib/templates/sms/passwordRecovery.d.ts.map +1 -0
  327. package/lib/templates/sms/passwordRecovery.js +3 -0
  328. package/lib/templates/sms/verifyEmail.d.ts +1 -0
  329. package/lib/templates/sms/verifyEmail.d.ts.map +1 -0
  330. package/lib/templates/sms/verifyEmail.js +3 -0
  331. package/lib/templates/sms/verifyPhone.d.ts +1 -0
  332. package/lib/templates/sms/verifyPhone.d.ts.map +1 -0
  333. package/lib/templates/sms/verifyPhone.js +3 -0
  334. package/lib/templates/sms/welcome.d.ts +1 -0
  335. package/lib/templates/sms/welcome.d.ts.map +1 -0
  336. package/lib/templates/sms/welcome.js +3 -0
  337. package/lib/types/apps.types.d.ts +1 -0
  338. package/lib/types/apps.types.d.ts.map +1 -0
  339. package/lib/types/apps.types.js +10 -0
  340. package/lib/types/arangodb.types.d.ts +1 -0
  341. package/lib/types/arangodb.types.d.ts.map +1 -0
  342. package/lib/types/arangodb.types.js +6 -0
  343. package/lib/types/auth.types.d.ts +1 -0
  344. package/lib/types/auth.types.d.ts.map +1 -0
  345. package/lib/types/auth.types.js +6 -0
  346. package/lib/types/connections.types.d.ts +1 -0
  347. package/lib/types/connections.types.d.ts.map +1 -0
  348. package/lib/types/connections.types.js +6 -0
  349. package/lib/types/content.types.d.ts +1 -0
  350. package/lib/types/content.types.d.ts.map +1 -0
  351. package/lib/types/content.types.js +6 -0
  352. package/lib/types/conversations.types.d.ts +1 -0
  353. package/lib/types/conversations.types.d.ts.map +1 -0
  354. package/lib/types/conversations.types.js +6 -0
  355. package/lib/types/email.types.d.ts +1 -0
  356. package/lib/types/email.types.d.ts.map +1 -0
  357. package/lib/types/email.types.js +6 -0
  358. package/lib/types/error.types.d.ts +1 -0
  359. package/lib/types/error.types.d.ts.map +1 -0
  360. package/lib/types/error.types.js +20 -0
  361. package/lib/types/files.types.d.ts +1 -0
  362. package/lib/types/files.types.d.ts.map +1 -0
  363. package/lib/types/files.types.js +6 -0
  364. package/lib/types/google.types.d.ts +1 -0
  365. package/lib/types/google.types.d.ts.map +1 -0
  366. package/lib/types/google.types.js +6 -0
  367. package/lib/types/groups.types.d.ts +1 -0
  368. package/lib/types/groups.types.d.ts.map +1 -0
  369. package/lib/types/groups.types.js +6 -0
  370. package/lib/types/images.types.d.ts +1 -0
  371. package/lib/types/images.types.d.ts.map +1 -0
  372. package/lib/types/images.types.js +6 -0
  373. package/lib/types/index.d.ts +1 -0
  374. package/lib/types/index.d.ts.map +1 -0
  375. package/lib/types/index.js +28 -0
  376. package/lib/types/locations.types.d.ts +1 -0
  377. package/lib/types/locations.types.d.ts.map +1 -0
  378. package/lib/types/locations.types.js +6 -0
  379. package/lib/types/messages.types.d.ts +1 -0
  380. package/lib/types/messages.types.d.ts.map +1 -0
  381. package/lib/types/messages.types.js +6 -0
  382. package/lib/types/notifications.types.d.ts +1 -0
  383. package/lib/types/notifications.types.d.ts.map +1 -0
  384. package/lib/types/notifications.types.js +6 -0
  385. package/lib/types/payments.types.d.ts +1 -0
  386. package/lib/types/payments.types.d.ts.map +1 -0
  387. package/lib/types/payments.types.js +6 -0
  388. package/lib/types/posts.types.d.ts +1 -0
  389. package/lib/types/posts.types.d.ts.map +1 -0
  390. package/lib/types/posts.types.js +6 -0
  391. package/lib/types/profiles.types.d.ts +1 -0
  392. package/lib/types/profiles.types.d.ts.map +1 -0
  393. package/lib/types/profiles.types.js +3 -0
  394. package/lib/types/statistics.types.d.ts +1 -0
  395. package/lib/types/statistics.types.d.ts.map +1 -0
  396. package/lib/types/statistics.types.js +3 -0
  397. package/lib/types/tags.types.d.ts +1 -0
  398. package/lib/types/tags.types.d.ts.map +1 -0
  399. package/lib/types/tags.types.js +6 -0
  400. package/lib/types/users.types.d.ts +1 -0
  401. package/lib/types/users.types.d.ts.map +1 -0
  402. package/lib/types/users.types.js +6 -0
  403. package/lib/types/videos.types.d.ts +1 -0
  404. package/lib/types/videos.types.d.ts.map +1 -0
  405. package/lib/types/videos.types.js +6 -0
  406. package/lib/types/websockets.types.d.ts +1 -0
  407. package/lib/types/websockets.types.d.ts.map +1 -0
  408. package/lib/types/websockets.types.js +6 -0
  409. package/lib/utils/adapterUtils.d.ts +1 -0
  410. package/lib/utils/adapterUtils.d.ts.map +1 -0
  411. package/lib/utils/adapterUtils.js +23 -0
  412. package/lib/utils/analyticsUtils.d.ts +1 -0
  413. package/lib/utils/analyticsUtils.d.ts.map +1 -0
  414. package/lib/utils/analyticsUtils.js +45 -0
  415. package/lib/utils/arangodbUtils.d.ts +1 -0
  416. package/lib/utils/arangodbUtils.d.ts.map +1 -0
  417. package/lib/utils/arangodbUtils.js +130 -0
  418. package/lib/utils/authUtils.d.ts +1 -0
  419. package/lib/utils/authUtils.d.ts.map +1 -0
  420. package/lib/utils/authUtils.js +54 -0
  421. package/lib/utils/contextUtils.d.ts +1 -0
  422. package/lib/utils/contextUtils.d.ts.map +1 -0
  423. package/lib/utils/contextUtils.js +10 -0
  424. package/lib/utils/dbI18n.d.ts +1 -0
  425. package/lib/utils/dbI18n.d.ts.map +1 -0
  426. package/lib/utils/dbI18n.example.d.ts +1 -0
  427. package/lib/utils/dbI18n.example.d.ts.map +1 -0
  428. package/lib/utils/dbI18n.example.js +93 -0
  429. package/lib/utils/dbI18n.js +28 -0
  430. package/lib/utils/googleTranslate.d.ts +1 -0
  431. package/lib/utils/googleTranslate.d.ts.map +1 -0
  432. package/lib/utils/googleTranslate.js +70 -0
  433. package/lib/utils/graphqlUtils.d.ts +1 -0
  434. package/lib/utils/graphqlUtils.d.ts.map +1 -0
  435. package/lib/utils/graphqlUtils.js +11 -0
  436. package/lib/utils/index.d.ts +1 -0
  437. package/lib/utils/index.d.ts.map +1 -0
  438. package/lib/utils/index.js +19 -0
  439. package/lib/utils/languageDetection.d.ts +1 -0
  440. package/lib/utils/languageDetection.d.ts.map +1 -0
  441. package/lib/utils/languageDetection.js +120 -0
  442. package/lib/utils/localeUtils.d.ts +1 -0
  443. package/lib/utils/localeUtils.d.ts.map +1 -0
  444. package/lib/utils/localeUtils.example.d.ts +1 -0
  445. package/lib/utils/localeUtils.example.d.ts.map +1 -0
  446. package/lib/utils/localeUtils.example.js +124 -0
  447. package/lib/utils/localeUtils.js +71 -0
  448. package/lib/utils/middlewareUtils.d.ts +1 -0
  449. package/lib/utils/middlewareUtils.d.ts.map +1 -0
  450. package/lib/utils/middlewareUtils.js +10 -0
  451. package/lib/utils/sessionUtils.d.ts +1 -0
  452. package/lib/utils/sessionUtils.d.ts.map +1 -0
  453. package/lib/utils/sessionUtils.js +26 -0
  454. package/lib/utils/stripeUtils.d.ts +2 -1
  455. package/lib/utils/stripeUtils.d.ts.map +1 -0
  456. package/lib/utils/stripeUtils.js +12 -0
  457. package/lib/utils/templateUtils.d.ts +1 -0
  458. package/lib/utils/templateUtils.d.ts.map +1 -0
  459. package/lib/utils/templateUtils.js +11 -0
  460. package/lib/utils/testUtils.d.ts +1 -0
  461. package/lib/utils/testUtils.d.ts.map +1 -0
  462. package/lib/utils/testUtils.js +292 -0
  463. package/lib/utils/translationQueue.d.ts +1 -0
  464. package/lib/utils/translationQueue.d.ts.map +1 -0
  465. package/lib/utils/translationQueue.example.d.ts +1 -0
  466. package/lib/utils/translationQueue.example.d.ts.map +1 -0
  467. package/lib/utils/translationQueue.example.js +340 -0
  468. package/lib/utils/translationQueue.js +113 -0
  469. package/package.json +43 -24
@@ -23,3 +23,4 @@ export declare const addVideo: (context: ApiContext, video: VideoType, s3Options
23
23
  export declare const addVideoEdge: (context: ApiContext, videoEdge: VideoEdgeType) => Promise<object>;
24
24
  export declare const updateVideo: (context: ApiContext, video: VideoType, s3Options?: PutObjectCommandInput) => Promise<VideoType>;
25
25
  export declare const deleteVideo: (context: ApiContext, videoId: string) => Promise<VideoType>;
26
+ //# sourceMappingURL=videos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videos.d.ts","sourceRoot":"","sources":["../../src/actions/videos.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAA4B,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAYpF,OAAO,KAAK,EAAqB,aAAa,EAAC,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAC,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAInG,eAAO,MAAM,iBAAiB,GAAI,UAAS,YAAiB;WAI3B,aAAa;;CAG7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAQ,MAAM,EAAO,QA0BtB,CAAC;AAEjC,eAAO,MAAM,eAAe,GAC1B,SAAS,UAAU,EACnB,QAAQ,MAAM,EACd,OAAM,MAAU,EAChB,KAAI,MAAW,KACd,OAAO,CAAC,SAAS,EAAE,CAsBrB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,SAAS,UAAU,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAcvF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,SAAS,UAAU,EACnB,QAAQ,MAAM,EACd,UAAS,YAAiB,KACzB,OAAO,CAAC,SAAS,EAAE,CAuBrB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,SAAS,UAAU,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,SAAS,CAahF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,EAAE,WAAW,MAAM,EAAE,MAAK,MAAiB,KAAG,MAgB9G,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,uDAO5B,YAAY,KAAG,MAkBjB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,gEAQ/B,GAAG,KAAG,OAAO,CAAC,MAAM,CAuBtB,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,SAAS,UAAU,EACnB,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,WAAU,MAAoB,EAAE,YAAY,qBAAqB,KAChE,OAAO,CAAC,SAAS,CAmBnB,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,SAAS,UAAU,EACnB,OAAO,SAAS,EAChB,YAAY,qBAAqB,KAChC,OAAO,CAAC,SAAS,CAmDnB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,SAAS,UAAU,EAAE,WAAW,aAAa,KAAG,OAAO,CAAC,MAAM,CA+BhG,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,SAAS,UAAU,EACnB,OAAO,SAAS,EAChB,YAAY,qBAAqB,KAChC,OAAO,CAAC,SAAS,CA6HnB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,SAAS,UAAU,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,SAAS,CAmCzF,CAAC"}
@@ -0,0 +1,423 @@
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 { get as httpGet } from '@nlabs/rip-hunter';
5
+ import { createHash, parseArangoId, parseChar, 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 { getDocId, getLimit, selectReactionCountByType, useDb } from '../utils/arangodbUtils.js';
11
+ import { s3DeleteList, s3GetSignedUrl, s3Put } from './s3.js';
12
+ const eventCategory = 'videos';
13
+ export const parseVideoOptions = (options = {})=>{
14
+ const { from = 0, to = 30, type = 'default' } = options;
15
+ return {
16
+ limit: getLimit(from, to),
17
+ type: parseChar(type, 32)
18
+ };
19
+ };
20
+ export const getVideoOptional = (fields = [])=>fields.reduce((selects, field)=>{
21
+ if (field.includes('Count')) {
22
+ return selectReactionCountByType('videos', 'v', field, selects);
23
+ }
24
+ switch(field){
25
+ case 'reactions':
26
+ {
27
+ selects.queries.push(`LET reactions = (FOR video, r IN INBOUND v._id reactions COLLECT reactionName = r.value INTO reactionItems RETURN {name: reactionName, count: LENGTH(reactionItems[*].r.value)})`);
28
+ selects.objects.push('reactions:reactions');
29
+ return selects;
30
+ }
31
+ case 'tags':
32
+ {
33
+ selects.queries.push(`LET tags = (FOR t, pl IN INBOUND v._id isTagged RETURN t)`);
34
+ selects.objects.push('tags:tags');
35
+ return selects;
36
+ }
37
+ case 'users':
38
+ {
39
+ selects.queries.push(`LET users = FIRST(FOR u IN users FILTER v.userId == u._key LIMIT 1 RETURN u)`);
40
+ selects.objects.push('users:users');
41
+ return selects;
42
+ }
43
+ default:
44
+ {
45
+ return selects;
46
+ }
47
+ }
48
+ }, {
49
+ objects: [],
50
+ queries: []
51
+ });
52
+ export const getVideosByUser = (context, userId, from = 0, to = 30)=>{
53
+ const action = 'getVideosByUser';
54
+ const { databaseName } = context;
55
+ const formatUserId = parseId(userId);
56
+ const limit = getLimit(from, to);
57
+ const aqlQry = `FOR v IN videos
58
+ FILTER v.userId == "${formatUserId}"
59
+ LET user = FIRST(FOR u IN users FILTER u._key == v.userId LIMIT 1 RETURN u)
60
+ ${limit.aql}
61
+ SORT v.added
62
+ RETURN MERGE(v, {user:user})`;
63
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
64
+ logError({
65
+ action,
66
+ category: eventCategory,
67
+ value: ErrorTypes.DATABASE_ERROR
68
+ }, error, context);
69
+ return [];
70
+ });
71
+ };
72
+ export const getVideoCountByItem = (context, itemId)=>{
73
+ const action = 'getVideoCountByItem';
74
+ const { databaseName } = context;
75
+ const formatItemId = parseArangoId(itemId);
76
+ const aqlQry = aql`FOR v IN hasVideo FILTER v._to == ${formatItemId} RETURN {count: COUNT(v)}`;
77
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).then(({ count })=>count).catch((error)=>logError({
78
+ action,
79
+ category: eventCategory,
80
+ value: ErrorTypes.DATABASE_ERROR
81
+ }, error, context));
82
+ };
83
+ export const getVideosByItem = async (context, itemId, options = {})=>{
84
+ const action = 'getVideosByItem';
85
+ const { databaseName, fields = [] } = context;
86
+ const formatItemId = parseArangoId(itemId);
87
+ const { limit } = parseVideoOptions(options);
88
+ const { objects: selectObjects, queries: selectQueries } = getVideoOptional(fields);
89
+ const aqlQry = `FOR v, l IN 1..1 OUTBOUND "${formatItemId}" hasVideo
90
+ FILTER NOT IS_NULL(v)
91
+ ${selectQueries.join('\n')}
92
+ SORT v.added
93
+ ${limit.aql}
94
+ RETURN MERGE(v, {${selectObjects.join(', ')}})`;
95
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
96
+ logError({
97
+ action,
98
+ category: eventCategory,
99
+ value: ErrorTypes.DATABASE_ERROR
100
+ }, error, context);
101
+ return [];
102
+ });
103
+ };
104
+ export const getVideo = (context, videoId)=>{
105
+ const action = 'getVideo';
106
+ const { databaseName } = context;
107
+ const formatVideoId = parseId(videoId);
108
+ const aqlQry = aql`FOR v IN videos FILTER v._key==${formatVideoId} LIMIT 1 RETURN v`;
109
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
110
+ action,
111
+ category: eventCategory,
112
+ value: ErrorTypes.DATABASE_ERROR
113
+ }, error, context));
114
+ };
115
+ export const getPathUserVideos = (userId, videoId, videoType, dir = 'videos')=>{
116
+ let filename = videoId;
117
+ switch(videoType){
118
+ case 'video/webm':
119
+ filename = `${videoId}.webm`;
120
+ break;
121
+ case 'video/quicktime':
122
+ filename = `${videoId}.mov`;
123
+ break;
124
+ default:
125
+ filename = `${videoId}.mp4`;
126
+ break;
127
+ }
128
+ return `users/${userId}/${dir}/${filename}`;
129
+ };
130
+ export const getAppVideoUrl = ({ bucket, directory = 'videos', isThumb = false, type, typeId, videoId })=>{
131
+ if (!type) {
132
+ return '';
133
+ }
134
+ if (!videoId) {
135
+ return '';
136
+ }
137
+ const bucketName = bucket || Config.get('image.bucket') || 'dev.reaktor.io';
138
+ const videoName = `${videoId}.mp4`;
139
+ const videoUrl = Config.get('image.url') || `https://s3.amazonaws.com/${bucketName}`;
140
+ if (type === 'apps') {
141
+ return `${videoUrl}/${type}/${directory}/${videoName}`;
142
+ }
143
+ return `${videoUrl}/${type}/${typeId}/${directory}/${videoName}`;
144
+ };
145
+ export const getVideoUrl = async ({ bucket, imageDir = 'videos', videoDir = 'videos', videoId, type, typeId, urlType = 'public' })=>{
146
+ if (!videoId) {
147
+ return '';
148
+ }
149
+ const keyDir = videoDir || imageDir || 'videos';
150
+ const videoKey = `${type}/${typeId}/${keyDir}/${videoId}.mp4`;
151
+ switch(urlType){
152
+ case 'signed':
153
+ {
154
+ const defaultBucket = Config.get('image.bucket') || 'dev.reaktor.io';
155
+ return await s3GetSignedUrl({
156
+ Bucket: bucket || defaultBucket,
157
+ Expires: 900,
158
+ Key: videoKey
159
+ });
160
+ }
161
+ case 'public':
162
+ {
163
+ return `https://box.${Config.get('app.url')}/${videoKey}`;
164
+ }
165
+ case 'dev':
166
+ {
167
+ return `https://s3.amazonaws.com/dev.${Config.get('app.url')}/${videoKey}`;
168
+ }
169
+ default:
170
+ {
171
+ return '';
172
+ }
173
+ }
174
+ };
175
+ export const saveVideo = async (context, videoId, buffer, fileType = 'video/mp4', s3Options)=>{
176
+ const { session: { userId: sessionId } } = context;
177
+ const videoObj = {
178
+ ACL: 'authenticated-read',
179
+ Body: buffer,
180
+ Bucket: null,
181
+ ContentType: fileType,
182
+ ...s3Options || {},
183
+ Key: getPathUserVideos(sessionId, videoId, fileType, 'videos')
184
+ };
185
+ await s3Put(videoObj);
186
+ return {
187
+ fileSize: buffer.length,
188
+ fileType,
189
+ videoId
190
+ };
191
+ };
192
+ export const addVideo = (context, video, s3Options)=>{
193
+ const action = 'addVideo';
194
+ const { databaseName, session: { userId: sessionId } } = context;
195
+ const { videoId, description, buffer, fileType, type = 'video', provider, externalId, externalUrl } = video;
196
+ const now = Date.now();
197
+ if (type === 'external') {
198
+ const insert = {
199
+ _key: videoId,
200
+ added: now,
201
+ description,
202
+ externalId,
203
+ externalUrl,
204
+ provider,
205
+ type,
206
+ userId: sessionId
207
+ };
208
+ const aqlQry = aql`INSERT ${insert} IN videos RETURN NEW`;
209
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
210
+ action,
211
+ category: eventCategory,
212
+ value: ErrorTypes.DATABASE_ERROR
213
+ }, error, context));
214
+ }
215
+ return saveVideo(context, videoId, buffer, fileType, s3Options).then((saved)=>{
216
+ const insert = {
217
+ ...saved,
218
+ _key: videoId,
219
+ added: now,
220
+ description,
221
+ fileType,
222
+ modified: now,
223
+ type,
224
+ userId: sessionId
225
+ };
226
+ const aqlQry = aql`INSERT ${insert} IN videos RETURN NEW`;
227
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
228
+ action,
229
+ category: eventCategory,
230
+ value: ErrorTypes.DATABASE_ERROR
231
+ }, error, context));
232
+ });
233
+ };
234
+ export const addVideoEdge = async (context, videoEdge)=>{
235
+ const action = 'addVideoEdge';
236
+ const { databaseName, session: { userId: sessionId } } = context;
237
+ const { videoId, itemId, itemType } = videoEdge;
238
+ const now = Date.now();
239
+ const edgeId = createHash(`hasVideo-${videoId}-${itemId}-${sessionId}`);
240
+ const formatItemType = parseChar(itemType).toLowerCase();
241
+ const formatItemId = parseId(itemId);
242
+ const itemDocId = getDocId(formatItemType, {
243
+ _key: formatItemId
244
+ });
245
+ const formatVideoId = parseId(videoId);
246
+ const fileDocId = `videos/${formatVideoId}`;
247
+ const edge = {
248
+ _from: itemDocId,
249
+ _key: edgeId,
250
+ _to: fileDocId,
251
+ added: now,
252
+ itemType
253
+ };
254
+ if (itemDocId) {
255
+ return useDb(databaseName).collection('hasVideo').save(edge, {
256
+ returnNew: true
257
+ }).then((fileEdge)=>useDb(databaseName).collection('hasVideo').document(fileEdge)).catch((error)=>logError({
258
+ action,
259
+ category: eventCategory,
260
+ value: ErrorTypes.DATABASE_ERROR
261
+ }, error, context));
262
+ }
263
+ return null;
264
+ };
265
+ export const updateVideo = async (context, video, s3Options)=>{
266
+ const action = 'updateVideo';
267
+ const { databaseName, session: { userId: sessionId } } = context;
268
+ const { base64 = '', buffer: videoBuffer, description = '', externalId, externalUrl, fileType, itemId, itemType, provider, type, url = '', videoId } = video;
269
+ const now = Date.now();
270
+ const formatVideoId = videoId || createHash(`video-${sessionId}`);
271
+ const formatItemId = parseId(itemId);
272
+ const formatItemType = parseChar(itemType, 16).toLowerCase();
273
+ if (type === 'external' && (externalId || externalUrl)) {
274
+ const insert = {
275
+ _key: formatVideoId,
276
+ added: now,
277
+ description,
278
+ externalId,
279
+ externalUrl,
280
+ modified: now,
281
+ provider,
282
+ type,
283
+ userId: sessionId
284
+ };
285
+ const aqlQry = aql`UPSERT {_key: ${formatVideoId}} INSERT ${insert} UPDATE ${insert} IN videos RETURN NEW`;
286
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).then((newVideo)=>{
287
+ if (formatItemId && formatItemType) {
288
+ const videoEdge = {
289
+ videoId: formatVideoId,
290
+ itemId: formatItemId,
291
+ itemType: formatItemType
292
+ };
293
+ return addVideoEdge(context, videoEdge).then(()=>newVideo);
294
+ }
295
+ return newVideo;
296
+ }).catch((error)=>logError({
297
+ action,
298
+ category: eventCategory,
299
+ value: ErrorTypes.DATABASE_ERROR
300
+ }, error, context));
301
+ }
302
+ if (base64 || videoBuffer) {
303
+ let buffer = videoBuffer;
304
+ if (base64) {
305
+ const formatBase64 = base64.substr(base64.indexOf(',') + 1);
306
+ buffer = Buffer.from(formatBase64, 'base64');
307
+ }
308
+ let updatedFileType = fileType;
309
+ if (!fileType) {
310
+ const { fileTypeFromBuffer } = await import('file-type');
311
+ const { mime } = await fileTypeFromBuffer(buffer);
312
+ updatedFileType = mime;
313
+ }
314
+ const vParams = {
315
+ buffer,
316
+ fileType: updatedFileType,
317
+ userId: sessionId,
318
+ videoId: formatVideoId
319
+ };
320
+ return addVideo(context, {
321
+ ...vParams,
322
+ description
323
+ }, s3Options).then((newVideo)=>{
324
+ if (formatItemId && formatItemType) {
325
+ const videoEdge = {
326
+ videoId: formatVideoId,
327
+ itemId: formatItemId,
328
+ itemType: formatItemType
329
+ };
330
+ return addVideoEdge(context, videoEdge).then(()=>newVideo);
331
+ }
332
+ return newVideo;
333
+ }).catch((error)=>logError({
334
+ action,
335
+ category: eventCategory,
336
+ value: ErrorTypes.DATABASE_ERROR
337
+ }, error, context));
338
+ } else if (url !== '') {
339
+ let contentType;
340
+ return httpGet(url).then((res)=>{
341
+ if (res.status !== 200) {
342
+ throw new Error(ErrorTypes.IMAGE_REQUEST);
343
+ }
344
+ contentType = res.headers.get('content-type');
345
+ return res;
346
+ }).then((res)=>res.buffer()).then((buffer)=>{
347
+ const vParams = {
348
+ buffer,
349
+ description,
350
+ fileType: contentType,
351
+ userId: sessionId,
352
+ videoId: formatVideoId
353
+ };
354
+ return addVideo(context, vParams, s3Options).then((newVideo)=>{
355
+ if (formatItemId && formatItemType) {
356
+ const videoEdge = {
357
+ videoId: formatVideoId,
358
+ itemId: formatItemId,
359
+ itemType: formatItemType
360
+ };
361
+ return addVideoEdge(context, videoEdge).then(()=>newVideo);
362
+ }
363
+ return newVideo;
364
+ }).catch((error)=>logError({
365
+ action,
366
+ category: eventCategory,
367
+ value: ErrorTypes.DATABASE_ERROR
368
+ }, error, context));
369
+ }).catch((error)=>logError({
370
+ action,
371
+ category: eventCategory,
372
+ value: ErrorTypes.DATABASE_ERROR
373
+ }, error, context));
374
+ } else if (videoId !== '') {
375
+ const update = {
376
+ description,
377
+ modified: now
378
+ };
379
+ const aqlQry = aql`UPDATE {_key: ${formatVideoId}} WITH ${update} IN videos RETURN NEW`;
380
+ return useDb(databaseName).query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>logError({
381
+ action,
382
+ category: eventCategory,
383
+ value: ErrorTypes.DATABASE_ERROR
384
+ }, error, context));
385
+ }
386
+ return null;
387
+ };
388
+ export const deleteVideo = async (context, videoId)=>{
389
+ const action = 'deleteVideo';
390
+ const { databaseName, session: { userId: sessionId } } = context;
391
+ const formatVideoId = parseId(videoId);
392
+ try {
393
+ const videoDocId = `videos/${formatVideoId}`;
394
+ const removeEdgeQuery = aql`FOR hv IN hasVideo FILTER hv._to == ${videoDocId} REMOVE hv IN hasVideo RETURN OLD`;
395
+ await useDb(databaseName).query(removeEdgeQuery);
396
+ const aqlQuery = aql`FOR v IN videos FILTER v._key == ${formatVideoId} && v.userId == ${sessionId} REMOVE v IN videos RETURN OLD`;
397
+ const video = await useDb(databaseName).query(aqlQuery).then((cursor)=>cursor.next());
398
+ if (video) {
399
+ const { _key: vKey } = video;
400
+ const params = {
401
+ Bucket: null,
402
+ Delete: {
403
+ Objects: [
404
+ {
405
+ Key: `users/${sessionId}/videos/${vKey}.mp4`
406
+ }
407
+ ],
408
+ Quiet: true
409
+ }
410
+ };
411
+ return s3DeleteList(params).then(()=>video);
412
+ }
413
+ return null;
414
+ } catch (error) {
415
+ return logError({
416
+ action,
417
+ category: eventCategory,
418
+ value: ErrorTypes.DATABASE_ERROR
419
+ }, error, context);
420
+ }
421
+ };
422
+
423
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvdmlkZW9zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge0RlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQsIFB1dE9iamVjdENvbW1hbmRJbnB1dH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXR9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VDaGFyLCBwYXJzZUlkfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHtnZXREb2NJZCwgZ2V0TGltaXQsIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUsIHVzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7czNEZWxldGVMaXN0LCBzM0dldFNpZ25lZFVybCwgczNQdXR9IGZyb20gJy4vczMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXJhbmdvRGJDb2xsZWN0aW9uLCBBcmFuZ29EYkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7VmlkZW9FZGdlVHlwZSwgVmlkZW9PcHRpb25zLCBWaWRlb1R5cGUsIFZpZGVvVXJsRGF0YX0gZnJvbSAnLi4vdHlwZXMvdmlkZW9zLnR5cGVzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ3ZpZGVvcyc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZVZpZGVvT3B0aW9ucyA9IChvcHRpb25zOiBWaWRlb09wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7ZnJvbSA9IDAsIHRvID0gMzAsIHR5cGUgPSAnZGVmYXVsdCd9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIGxpbWl0OiBnZXRMaW1pdChmcm9tLCB0bykgYXMgQXJhbmdvRGJMaW1pdCxcbiAgICB0eXBlOiBwYXJzZUNoYXIodHlwZSwgMzIpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmlkZW9PcHRpb25hbCA9IChmaWVsZHM6IHN0cmluZ1tdID0gW10pID0+XG4gIGZpZWxkcy5yZWR1Y2UoKHNlbGVjdHMsIGZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICBpZihmaWVsZC5pbmNsdWRlcygnQ291bnQnKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUoJ3ZpZGVvcycsICd2JywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHN3aXRjaChmaWVsZCkge1xuICAgICAgY2FzZSAncmVhY3Rpb25zJzoge1xuICAgICAgICBzZWxlY3RzLnF1ZXJpZXMucHVzaChgTEVUIHJlYWN0aW9ucyA9IChGT1IgdmlkZW8sIHIgSU4gSU5CT1VORCB2Ll9pZCByZWFjdGlvbnMgQ09MTEVDVCByZWFjdGlvbk5hbWUgPSByLnZhbHVlIElOVE8gcmVhY3Rpb25JdGVtcyBSRVRVUk4ge25hbWU6IHJlYWN0aW9uTmFtZSwgY291bnQ6IExFTkdUSChyZWFjdGlvbkl0ZW1zWypdLnIudmFsdWUpfSlgKTtcbiAgICAgICAgc2VsZWN0cy5vYmplY3RzLnB1c2goJ3JlYWN0aW9uczpyZWFjdGlvbnMnKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdHM7XG4gICAgICB9XG4gICAgICBjYXNlICd0YWdzJzoge1xuICAgICAgICBzZWxlY3RzLnF1ZXJpZXMucHVzaChgTEVUIHRhZ3MgPSAoRk9SIHQsIHBsIElOIElOQk9VTkQgdi5faWQgaXNUYWdnZWQgUkVUVVJOIHQpYCk7XG4gICAgICAgIHNlbGVjdHMub2JqZWN0cy5wdXNoKCd0YWdzOnRhZ3MnKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdHM7XG4gICAgICB9XG4gICAgICBjYXNlICd1c2Vycyc6IHtcbiAgICAgICAgc2VsZWN0cy5xdWVyaWVzLnB1c2goYExFVCB1c2VycyA9IEZJUlNUKEZPUiB1IElOIHVzZXJzIEZJTFRFUiB2LnVzZXJJZCA9PSB1Ll9rZXkgTElNSVQgMSBSRVRVUk4gdSlgKTtcbiAgICAgICAgc2VsZWN0cy5vYmplY3RzLnB1c2goJ3VzZXJzOnVzZXJzJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RzO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gc2VsZWN0cztcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtvYmplY3RzOiBbXSwgcXVlcmllczogW119KTtcblxuZXhwb3J0IGNvbnN0IGdldFZpZGVvc0J5VXNlciA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgdXNlcklkOiBzdHJpbmcsXG4gIGZyb206IG51bWJlciA9IDAsXG4gIHRvOiBudW1iZXIgPSAzMFxuKTogUHJvbWlzZTxWaWRlb1R5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRWaWRlb3NCeVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBsaW1pdDogQXJhbmdvRGJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIHYgSU4gdmlkZW9zXG4gICAgICBGSUxURVIgdi51c2VySWQgPT0gXCIke2Zvcm1hdFVzZXJJZH1cIlxuICAgICAgTEVUIHVzZXIgPSBGSVJTVChGT1IgdSBJTiB1c2VycyBGSUxURVIgdS5fa2V5ID09IHYudXNlcklkIExJTUlUIDEgUkVUVVJOIHUpXG4gICAgICAke2xpbWl0LmFxbH1cbiAgICAgIFNPUlQgdi5hZGRlZFxuICAgICAgUkVUVVJOIE1FUkdFKHYsIHt1c2VyOnVzZXJ9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIFZpZGVvVHlwZVtdKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gW10gYXMgVmlkZW9UeXBlW107XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmlkZW9Db3VudEJ5SXRlbSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtSWQ6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFZpZGVvQ291bnRCeUl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiB2IElOIGhhc1ZpZGVvIEZJTFRFUiB2Ll90byA9PSAke2Zvcm1hdEl0ZW1JZH0gUkVUVVJOIHtjb3VudDogQ09VTlQodil9YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoe2NvdW50fSkgPT4gY291bnQpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZpZGVvc0J5SXRlbSA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFZpZGVvT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFZpZGVvVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFZpZGVvc0J5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIGZpZWxkcyA9IFtdfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VWaWRlb09wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFZpZGVvT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIHYsIGwgSU4gMS4uMSBPVVRCT1VORCBcIiR7Zm9ybWF0SXRlbUlkfVwiIGhhc1ZpZGVvXG4gICAgRklMVEVSIE5PVCBJU19OVUxMKHYpXG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIFNPUlQgdi5hZGRlZFxuICAgICR7bGltaXQuYXFsfVxuICAgIFJFVFVSTiBNRVJHRSh2LCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBWaWRlb1R5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIFtdIGFzIFZpZGVvVHlwZVtdO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZpZGVvID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHZpZGVvSWQ6IHN0cmluZyk6IFByb21pc2U8VmlkZW9UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFZpZGVvJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRWaWRlb0lkOiBzdHJpbmcgPSBwYXJzZUlkKHZpZGVvSWQpO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiB2IElOIHZpZGVvcyBGSUxURVIgdi5fa2V5PT0ke2Zvcm1hdFZpZGVvSWR9IExJTUlUIDEgUkVUVVJOIHZgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXRoVXNlclZpZGVvcyA9ICh1c2VySWQ6IHN0cmluZywgdmlkZW9JZDogc3RyaW5nLCB2aWRlb1R5cGU6IHN0cmluZywgZGlyOiBzdHJpbmcgPSAndmlkZW9zJyk6IHN0cmluZyA9PiB7XG4gIGxldCBmaWxlbmFtZTogc3RyaW5nID0gdmlkZW9JZDtcblxuICBzd2l0Y2godmlkZW9UeXBlKSB7XG4gICAgY2FzZSAndmlkZW8vd2VibSc6XG4gICAgICBmaWxlbmFtZSA9IGAke3ZpZGVvSWR9LndlYm1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndmlkZW8vcXVpY2t0aW1lJzpcbiAgICAgIGZpbGVuYW1lID0gYCR7dmlkZW9JZH0ubW92YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBmaWxlbmFtZSA9IGAke3ZpZGVvSWR9Lm1wNGA7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBgdXNlcnMvJHt1c2VySWR9LyR7ZGlyfS8ke2ZpbGVuYW1lfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwVmlkZW9VcmwgPSAoe1xuICBidWNrZXQsXG4gIGRpcmVjdG9yeSA9ICd2aWRlb3MnLFxuICBpc1RodW1iID0gZmFsc2UsXG4gIHR5cGUsXG4gIHR5cGVJZCxcbiAgdmlkZW9JZFxufTogVmlkZW9VcmxEYXRhKTogc3RyaW5nID0+IHtcbiAgaWYoIXR5cGUpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZighdmlkZW9JZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IGJ1Y2tldE5hbWUgPSBidWNrZXQgfHwgQ29uZmlnLmdldCgnaW1hZ2UuYnVja2V0JykgfHwgJ2Rldi5yZWFrdG9yLmlvJztcbiAgY29uc3QgdmlkZW9OYW1lID0gYCR7dmlkZW9JZH0ubXA0YDtcbiAgY29uc3QgdmlkZW9VcmwgPSBDb25maWcuZ2V0KCdpbWFnZS51cmwnKSB8fCBgaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tLyR7YnVja2V0TmFtZX1gO1xuXG4gIGlmKHR5cGUgPT09ICdhcHBzJykge1xuICAgIHJldHVybiBgJHt2aWRlb1VybH0vJHt0eXBlfS8ke2RpcmVjdG9yeX0vJHt2aWRlb05hbWV9YDtcbiAgfVxuXG4gIHJldHVybiBgJHt2aWRlb1VybH0vJHt0eXBlfS8ke3R5cGVJZH0vJHtkaXJlY3Rvcnl9LyR7dmlkZW9OYW1lfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmlkZW9VcmwgPSBhc3luYyAoe1xuICBidWNrZXQsXG4gIGltYWdlRGlyID0gJ3ZpZGVvcycsXG4gIHZpZGVvRGlyID0gJ3ZpZGVvcycsXG4gIHZpZGVvSWQsXG4gIHR5cGUsXG4gIHR5cGVJZCxcbiAgdXJsVHlwZSA9ICdwdWJsaWMnXG59OiBhbnkpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBpZighdmlkZW9JZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IGtleURpciA9IHZpZGVvRGlyIHx8IGltYWdlRGlyIHx8ICd2aWRlb3MnO1xuICBjb25zdCB2aWRlb0tleTogc3RyaW5nID0gYCR7dHlwZX0vJHt0eXBlSWR9LyR7a2V5RGlyfS8ke3ZpZGVvSWR9Lm1wNGA7XG5cbiAgc3dpdGNoKHVybFR5cGUpIHtcbiAgICBjYXNlICdzaWduZWQnOiB7XG4gICAgICBjb25zdCBkZWZhdWx0QnVja2V0ID0gQ29uZmlnLmdldCgnaW1hZ2UuYnVja2V0JykgfHwgJ2Rldi5yZWFrdG9yLmlvJztcbiAgICAgIHJldHVybiBhd2FpdCBzM0dldFNpZ25lZFVybCh7QnVja2V0OiBidWNrZXQgfHwgZGVmYXVsdEJ1Y2tldCwgRXhwaXJlczogOTAwLCBLZXk6IHZpZGVvS2V5fSk7XG4gICAgfVxuICAgIGNhc2UgJ3B1YmxpYyc6IHtcbiAgICAgIHJldHVybiBgaHR0cHM6Ly9ib3guJHtDb25maWcuZ2V0KCdhcHAudXJsJyl9LyR7dmlkZW9LZXl9YDtcbiAgICB9XG4gICAgY2FzZSAnZGV2Jzoge1xuICAgICAgcmV0dXJuIGBodHRwczovL3MzLmFtYXpvbmF3cy5jb20vZGV2LiR7Q29uZmlnLmdldCgnYXBwLnVybCcpfS8ke3ZpZGVvS2V5fWA7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzYXZlVmlkZW8gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHZpZGVvSWQ6IHN0cmluZyxcbiAgYnVmZmVyOiBCdWZmZXIsXG4gIGZpbGVUeXBlOiBzdHJpbmcgPSAndmlkZW8vbXA0JywgczNPcHRpb25zPzogUHV0T2JqZWN0Q29tbWFuZElucHV0XG4pOiBQcm9taXNlPFZpZGVvVHlwZT4gPT4ge1xuICBjb25zdCB7c2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGNvbnN0IHZpZGVvT2JqOiBQdXRPYmplY3RDb21tYW5kSW5wdXQgPSB7XG4gICAgQUNMOiAnYXV0aGVudGljYXRlZC1yZWFkJyxcbiAgICBCb2R5OiBidWZmZXIsXG4gICAgQnVja2V0OiBudWxsLFxuICAgIENvbnRlbnRUeXBlOiBmaWxlVHlwZSxcbiAgICAuLi4oczNPcHRpb25zIHx8IHt9KSxcbiAgICBLZXk6IGdldFBhdGhVc2VyVmlkZW9zKHNlc3Npb25JZCwgdmlkZW9JZCwgZmlsZVR5cGUsICd2aWRlb3MnKVxuICB9O1xuXG4gIGF3YWl0IHMzUHV0KHZpZGVvT2JqKTtcblxuICByZXR1cm4ge1xuICAgIGZpbGVTaXplOiBidWZmZXIubGVuZ3RoLFxuICAgIGZpbGVUeXBlLFxuICAgIHZpZGVvSWRcbiAgfSBhcyB1bmtub3duIGFzIFZpZGVvVHlwZTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRWaWRlbyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgdmlkZW86IFZpZGVvVHlwZSxcbiAgczNPcHRpb25zPzogUHV0T2JqZWN0Q29tbWFuZElucHV0XG4pOiBQcm9taXNlPFZpZGVvVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRWaWRlbyc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge3ZpZGVvSWQsIGRlc2NyaXB0aW9uLCBidWZmZXIsIGZpbGVUeXBlLCB0eXBlID0gJ3ZpZGVvJywgcHJvdmlkZXIsIGV4dGVybmFsSWQsIGV4dGVybmFsVXJsfSA9IHZpZGVvO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgaWYodHlwZSA9PT0gJ2V4dGVybmFsJykge1xuICAgIGNvbnN0IGluc2VydDogVmlkZW9UeXBlID0ge1xuICAgICAgX2tleTogdmlkZW9JZCxcbiAgICAgIGFkZGVkOiBub3csXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGV4dGVybmFsSWQsXG4gICAgICBleHRlcm5hbFVybCxcbiAgICAgIHByb3ZpZGVyLFxuICAgICAgdHlwZSxcbiAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgfSBhcyBWaWRlb1R5cGU7XG5cbiAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gdmlkZW9zIFJFVFVSTiBORVdgO1xuICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbiAgfVxuXG4gIHJldHVybiBzYXZlVmlkZW8oY29udGV4dCwgdmlkZW9JZCwgYnVmZmVyLCBmaWxlVHlwZSwgczNPcHRpb25zKVxuICAgIC50aGVuKChzYXZlZDogVmlkZW9UeXBlKSA9PiB7XG4gICAgICBjb25zdCBpbnNlcnQ6IFZpZGVvVHlwZSA9IHtcbiAgICAgICAgLi4uc2F2ZWQsXG4gICAgICAgIF9rZXk6IHZpZGVvSWQsXG4gICAgICAgIGFkZGVkOiBub3csXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICBmaWxlVHlwZSxcbiAgICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgICAgIH0gYXMgVmlkZW9UeXBlO1xuXG4gICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gdmlkZW9zIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkVmlkZW9FZGdlID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIHZpZGVvRWRnZTogVmlkZW9FZGdlVHlwZSk6IFByb21pc2U8b2JqZWN0PiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFZpZGVvRWRnZSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge3ZpZGVvSWQsIGl0ZW1JZCwgaXRlbVR5cGV9ID0gdmlkZW9FZGdlO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IGVkZ2VJZDogc3RyaW5nID0gY3JlYXRlSGFzaChgaGFzVmlkZW8tJHt2aWRlb0lkfS0ke2l0ZW1JZH0tJHtzZXNzaW9uSWR9YCk7XG4gIGNvbnN0IGZvcm1hdEl0ZW1UeXBlOiBBcmFuZ29EYkNvbGxlY3Rpb24gPSBwYXJzZUNoYXIoaXRlbVR5cGUpLnRvTG93ZXJDYXNlKCkgYXMgQXJhbmdvRGJDb2xsZWN0aW9uO1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgY29uc3QgaXRlbURvY0lkOiBzdHJpbmcgPSBnZXREb2NJZChmb3JtYXRJdGVtVHlwZSwge19rZXk6IGZvcm1hdEl0ZW1JZH0pO1xuICBjb25zdCBmb3JtYXRWaWRlb0lkOiBzdHJpbmcgPSBwYXJzZUlkKHZpZGVvSWQpO1xuICBjb25zdCBmaWxlRG9jSWQ6IHN0cmluZyA9IGB2aWRlb3MvJHtmb3JtYXRWaWRlb0lkfWA7XG5cbiAgY29uc3QgZWRnZTogVmlkZW9FZGdlVHlwZSA9IHtcbiAgICBfZnJvbTogaXRlbURvY0lkLFxuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBfdG86IGZpbGVEb2NJZCxcbiAgICBhZGRlZDogbm93LFxuICAgIGl0ZW1UeXBlXG4gIH0gYXMgVmlkZW9FZGdlVHlwZTtcblxuICBpZihpdGVtRG9jSWQpIHtcbiAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5jb2xsZWN0aW9uKCdoYXNWaWRlbycpLnNhdmUoZWRnZSwge3JldHVybk5ldzogdHJ1ZX0pXG4gICAgICAudGhlbigoZmlsZUVkZ2UpID0+IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaGFzVmlkZW8nKS5kb2N1bWVudChmaWxlRWRnZSkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVZpZGVvID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB2aWRlbzogVmlkZW9UeXBlLFxuICBzM09wdGlvbnM/OiBQdXRPYmplY3RDb21tYW5kSW5wdXRcbik6IFByb21pc2U8VmlkZW9UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZVZpZGVvJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgYmFzZTY0ID0gJycsXG4gICAgYnVmZmVyOiB2aWRlb0J1ZmZlcixcbiAgICBkZXNjcmlwdGlvbiA9ICcnLFxuICAgIGV4dGVybmFsSWQsXG4gICAgZXh0ZXJuYWxVcmwsXG4gICAgZmlsZVR5cGUsXG4gICAgaXRlbUlkLFxuICAgIGl0ZW1UeXBlLFxuICAgIHByb3ZpZGVyLFxuICAgIHR5cGUsXG4gICAgdXJsID0gJycsXG4gICAgdmlkZW9JZFxuICB9ID0gdmlkZW87XG5cbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCBmb3JtYXRWaWRlb0lkOiBzdHJpbmcgPSB2aWRlb0lkIHx8IGNyZWF0ZUhhc2goYHZpZGVvLSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0SXRlbVR5cGU6IEFyYW5nb0RiQ29sbGVjdGlvbiA9IHBhcnNlQ2hhcihpdGVtVHlwZSwgMTYpLnRvTG93ZXJDYXNlKCkgYXMgQXJhbmdvRGJDb2xsZWN0aW9uO1xuXG4gIGlmKHR5cGUgPT09ICdleHRlcm5hbCcgJiYgKGV4dGVybmFsSWQgfHwgZXh0ZXJuYWxVcmwpKSB7XG4gICAgY29uc3QgaW5zZXJ0OiBWaWRlb1R5cGUgPSB7XG4gICAgICBfa2V5OiBmb3JtYXRWaWRlb0lkLFxuICAgICAgYWRkZWQ6IG5vdyxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZXh0ZXJuYWxJZCxcbiAgICAgIGV4dGVybmFsVXJsLFxuICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgIHByb3ZpZGVyLFxuICAgICAgdHlwZSxcbiAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgfSBhcyBWaWRlb1R5cGU7XG4gICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge19rZXk6ICR7Zm9ybWF0VmlkZW9JZH19IElOU0VSVCAke2luc2VydH0gVVBEQVRFICR7aW5zZXJ0fSBJTiB2aWRlb3MgUkVUVVJOIE5FV2A7XG4gICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC50aGVuKChuZXdWaWRlbzogVmlkZW9UeXBlKSA9PiB7XG4gICAgICAgIGlmKGZvcm1hdEl0ZW1JZCAmJiBmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgIGNvbnN0IHZpZGVvRWRnZTogVmlkZW9FZGdlVHlwZSA9IHt2aWRlb0lkOiBmb3JtYXRWaWRlb0lkLCBpdGVtSWQ6IGZvcm1hdEl0ZW1JZCwgaXRlbVR5cGU6IGZvcm1hdEl0ZW1UeXBlfTtcbiAgICAgICAgICByZXR1cm4gYWRkVmlkZW9FZGdlKGNvbnRleHQsIHZpZGVvRWRnZSkudGhlbigoKSA9PiBuZXdWaWRlbyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1ZpZGVvO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICB9XG5cbiAgaWYoYmFzZTY0IHx8IHZpZGVvQnVmZmVyKSB7XG4gICAgbGV0IGJ1ZmZlcjogQnVmZmVyID0gdmlkZW9CdWZmZXIgYXMgQnVmZmVyO1xuICAgIGlmKGJhc2U2NCkge1xuICAgICAgY29uc3QgZm9ybWF0QmFzZTY0OiBzdHJpbmcgPSBiYXNlNjQuc3Vic3RyKGJhc2U2NC5pbmRleE9mKCcsJykgKyAxKTtcbiAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGZvcm1hdEJhc2U2NCwgJ2Jhc2U2NCcpO1xuICAgIH1cblxuICAgIGxldCB1cGRhdGVkRmlsZVR5cGUgPSBmaWxlVHlwZTtcbiAgICBpZighZmlsZVR5cGUpIHtcbiAgICAgIGNvbnN0IHtmaWxlVHlwZUZyb21CdWZmZXJ9ID0gYXdhaXQgaW1wb3J0KCdmaWxlLXR5cGUnKTtcbiAgICAgIGNvbnN0IHttaW1lfSA9IGF3YWl0IGZpbGVUeXBlRnJvbUJ1ZmZlcihidWZmZXIpO1xuICAgICAgdXBkYXRlZEZpbGVUeXBlID0gbWltZTtcbiAgICB9XG5cbiAgICBjb25zdCB2UGFyYW1zOiBWaWRlb1R5cGUgPSB7YnVmZmVyLCBmaWxlVHlwZTogdXBkYXRlZEZpbGVUeXBlLCB1c2VySWQ6IHNlc3Npb25JZCwgdmlkZW9JZDogZm9ybWF0VmlkZW9JZH0gYXMgVmlkZW9UeXBlO1xuICAgIHJldHVybiBhZGRWaWRlbyhjb250ZXh0LCB7Li4udlBhcmFtcywgZGVzY3JpcHRpb259LCBzM09wdGlvbnMpXG4gICAgICAudGhlbigobmV3VmlkZW86IFZpZGVvVHlwZSkgPT4ge1xuICAgICAgICBpZihmb3JtYXRJdGVtSWQgJiYgZm9ybWF0SXRlbVR5cGUpIHtcbiAgICAgICAgICBjb25zdCB2aWRlb0VkZ2U6IFZpZGVvRWRnZVR5cGUgPSB7dmlkZW9JZDogZm9ybWF0VmlkZW9JZCwgaXRlbUlkOiBmb3JtYXRJdGVtSWQsIGl0ZW1UeXBlOiBmb3JtYXRJdGVtVHlwZX07XG4gICAgICAgICAgcmV0dXJuIGFkZFZpZGVvRWRnZShjb250ZXh0LCB2aWRlb0VkZ2UpLnRoZW4oKCkgPT4gbmV3VmlkZW8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdWaWRlbztcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbiAgfSBlbHNlIGlmKHVybCAhPT0gJycpIHtcbiAgICBsZXQgY29udGVudFR5cGU7XG4gICAgcmV0dXJuIGh0dHBHZXQodXJsKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmKHJlcy5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFcnJvclR5cGVzLklNQUdFX1JFUVVFU1QpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRlbnRUeXBlID0gcmVzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuYnVmZmVyKCkpXG4gICAgICAudGhlbigoYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3QgdlBhcmFtczogVmlkZW9UeXBlID0ge2J1ZmZlciwgZGVzY3JpcHRpb24sIGZpbGVUeXBlOiBjb250ZW50VHlwZSwgdXNlcklkOiBzZXNzaW9uSWQsIHZpZGVvSWQ6IGZvcm1hdFZpZGVvSWR9IGFzIFZpZGVvVHlwZTtcbiAgICAgICAgcmV0dXJuIGFkZFZpZGVvKGNvbnRleHQsIHZQYXJhbXMsIHMzT3B0aW9ucylcbiAgICAgICAgICAudGhlbigobmV3VmlkZW86IFZpZGVvVHlwZSkgPT4ge1xuICAgICAgICAgICAgaWYoZm9ybWF0SXRlbUlkICYmIGZvcm1hdEl0ZW1UeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZpZGVvRWRnZTogVmlkZW9FZGdlVHlwZSA9IHt2aWRlb0lkOiBmb3JtYXRWaWRlb0lkLCBpdGVtSWQ6IGZvcm1hdEl0ZW1JZCwgaXRlbVR5cGU6IGZvcm1hdEl0ZW1UeXBlfTtcbiAgICAgICAgICAgICAgcmV0dXJuIGFkZFZpZGVvRWRnZShjb250ZXh0LCB2aWRlb0VkZ2UpLnRoZW4oKCkgPT4gbmV3VmlkZW8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ld1ZpZGVvO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICB9IGVsc2UgaWYodmlkZW9JZCAhPT0gJycpIHtcbiAgICBjb25zdCB1cGRhdGUgPSB7ZGVzY3JpcHRpb24sIG1vZGlmaWVkOiBub3d9O1xuICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFIHtfa2V5OiAke2Zvcm1hdFZpZGVvSWR9fSBXSVRIICR7dXBkYXRlfSBJTiB2aWRlb3MgUkVUVVJOIE5FV2A7XG4gICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICB9XG5cbiAgcmV0dXJuIG51bGwgYXMgdW5rbm93biBhcyBWaWRlb1R5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlVmlkZW8gPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgdmlkZW9JZDogc3RyaW5nKTogUHJvbWlzZTxWaWRlb1R5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlVmlkZW8nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdFZpZGVvSWQgPSBwYXJzZUlkKHZpZGVvSWQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgdmlkZW9Eb2NJZCA9IGB2aWRlb3MvJHtmb3JtYXRWaWRlb0lkfWA7XG4gICAgY29uc3QgcmVtb3ZlRWRnZVF1ZXJ5ID0gYXFsYEZPUiBodiBJTiBoYXNWaWRlbyBGSUxURVIgaHYuX3RvID09ICR7dmlkZW9Eb2NJZH0gUkVNT1ZFIGh2IElOIGhhc1ZpZGVvIFJFVFVSTiBPTERgO1xuICAgIGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkocmVtb3ZlRWRnZVF1ZXJ5KTtcblxuICAgIGNvbnN0IGFxbFF1ZXJ5ID0gYXFsYEZPUiB2IElOIHZpZGVvcyBGSUxURVIgdi5fa2V5ID09ICR7Zm9ybWF0VmlkZW9JZH0gJiYgdi51c2VySWQgPT0gJHtzZXNzaW9uSWR9IFJFTU9WRSB2IElOIHZpZGVvcyBSRVRVUk4gT0xEYDtcbiAgICBjb25zdCB2aWRlbyA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSk7XG5cbiAgICBpZih2aWRlbykge1xuICAgICAgY29uc3Qge19rZXk6IHZLZXl9ID0gdmlkZW87XG4gICAgICBjb25zdCBwYXJhbXM6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQgPSB7XG4gICAgICAgIEJ1Y2tldDogbnVsbCxcbiAgICAgICAgRGVsZXRlOiB7XG4gICAgICAgICAgT2JqZWN0czogW1xuICAgICAgICAgICAge0tleTogYHVzZXJzLyR7c2Vzc2lvbklkfS92aWRlb3MvJHt2S2V5fS5tcDRgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgUXVpZXQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBzM0RlbGV0ZUxpc3QocGFyYW1zKS50aGVuKCgpID0+IHZpZGVvKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbCBhcyB1bmtub3duIGFzIFZpZGVvVHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5cbiJdLCJuYW1lcyI6WyJnZXQiLCJodHRwR2V0IiwiY3JlYXRlSGFzaCIsInBhcnNlQXJhbmdvSWQiLCJwYXJzZUNoYXIiLCJwYXJzZUlkIiwiYXFsIiwiQ29uZmlnIiwiRXJyb3JUeXBlcyIsImxvZ0Vycm9yIiwiZ2V0RG9jSWQiLCJnZXRMaW1pdCIsInNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUiLCJ1c2VEYiIsInMzRGVsZXRlTGlzdCIsInMzR2V0U2lnbmVkVXJsIiwiczNQdXQiLCJldmVudENhdGVnb3J5IiwicGFyc2VWaWRlb09wdGlvbnMiLCJvcHRpb25zIiwiZnJvbSIsInRvIiwidHlwZSIsImxpbWl0IiwiZ2V0VmlkZW9PcHRpb25hbCIsImZpZWxkcyIsInJlZHVjZSIsInNlbGVjdHMiLCJmaWVsZCIsImluY2x1ZGVzIiwicXVlcmllcyIsInB1c2giLCJvYmplY3RzIiwiZ2V0VmlkZW9zQnlVc2VyIiwiY29udGV4dCIsInVzZXJJZCIsImFjdGlvbiIsImRhdGFiYXNlTmFtZSIsImZvcm1hdFVzZXJJZCIsImFxbFFyeSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsImFsbCIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsInZhbHVlIiwiREFUQUJBU0VfRVJST1IiLCJnZXRWaWRlb0NvdW50QnlJdGVtIiwiaXRlbUlkIiwiZm9ybWF0SXRlbUlkIiwibmV4dCIsImNvdW50IiwiZ2V0VmlkZW9zQnlJdGVtIiwic2VsZWN0T2JqZWN0cyIsInNlbGVjdFF1ZXJpZXMiLCJqb2luIiwiZ2V0VmlkZW8iLCJ2aWRlb0lkIiwiZm9ybWF0VmlkZW9JZCIsImdldFBhdGhVc2VyVmlkZW9zIiwidmlkZW9UeXBlIiwiZGlyIiwiZmlsZW5hbWUiLCJnZXRBcHBWaWRlb1VybCIsImJ1Y2tldCIsImRpcmVjdG9yeSIsImlzVGh1bWIiLCJ0eXBlSWQiLCJidWNrZXROYW1lIiwidmlkZW9OYW1lIiwidmlkZW9VcmwiLCJnZXRWaWRlb1VybCIsImltYWdlRGlyIiwidmlkZW9EaXIiLCJ1cmxUeXBlIiwia2V5RGlyIiwidmlkZW9LZXkiLCJkZWZhdWx0QnVja2V0IiwiQnVja2V0IiwiRXhwaXJlcyIsIktleSIsInNhdmVWaWRlbyIsImJ1ZmZlciIsImZpbGVUeXBlIiwiczNPcHRpb25zIiwic2Vzc2lvbiIsInNlc3Npb25JZCIsInZpZGVvT2JqIiwiQUNMIiwiQm9keSIsIkNvbnRlbnRUeXBlIiwiZmlsZVNpemUiLCJsZW5ndGgiLCJhZGRWaWRlbyIsInZpZGVvIiwiZGVzY3JpcHRpb24iLCJwcm92aWRlciIsImV4dGVybmFsSWQiLCJleHRlcm5hbFVybCIsIm5vdyIsIkRhdGUiLCJpbnNlcnQiLCJfa2V5IiwiYWRkZWQiLCJzYXZlZCIsIm1vZGlmaWVkIiwiYWRkVmlkZW9FZGdlIiwidmlkZW9FZGdlIiwiaXRlbVR5cGUiLCJlZGdlSWQiLCJmb3JtYXRJdGVtVHlwZSIsInRvTG93ZXJDYXNlIiwiaXRlbURvY0lkIiwiZmlsZURvY0lkIiwiZWRnZSIsIl9mcm9tIiwiX3RvIiwiY29sbGVjdGlvbiIsInNhdmUiLCJyZXR1cm5OZXciLCJmaWxlRWRnZSIsImRvY3VtZW50IiwidXBkYXRlVmlkZW8iLCJiYXNlNjQiLCJ2aWRlb0J1ZmZlciIsInVybCIsIm5ld1ZpZGVvIiwiZm9ybWF0QmFzZTY0Iiwic3Vic3RyIiwiaW5kZXhPZiIsIkJ1ZmZlciIsInVwZGF0ZWRGaWxlVHlwZSIsImZpbGVUeXBlRnJvbUJ1ZmZlciIsIm1pbWUiLCJ2UGFyYW1zIiwiY29udGVudFR5cGUiLCJyZXMiLCJzdGF0dXMiLCJFcnJvciIsIklNQUdFX1JFUVVFU1QiLCJoZWFkZXJzIiwidXBkYXRlIiwiZGVsZXRlVmlkZW8iLCJ2aWRlb0RvY0lkIiwicmVtb3ZlRWRnZVF1ZXJ5IiwiYXFsUXVlcnkiLCJ2S2V5IiwicGFyYW1zIiwiRGVsZXRlIiwiT2JqZWN0cyIsIlF1aWV0Il0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCxTQUFRQSxPQUFPQyxPQUFPLFFBQU8sb0JBQW9CO0FBQ2pELFNBQVFDLFVBQVUsRUFBRUMsYUFBYSxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sUUFBTywrQkFBK0I7QUFDM0YsU0FBUUMsR0FBRyxRQUFPLFdBQVc7QUFHN0IsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFDcEMsU0FBUUMsVUFBVSxRQUFPLDBCQUEwQjtBQUNuRCxTQUFRQyxRQUFRLFFBQU8sNkJBQTZCO0FBQ3BELFNBQVFDLFFBQVEsRUFBRUMsUUFBUSxFQUFFQyx5QkFBeUIsRUFBRUMsS0FBSyxRQUFPLDRCQUE0QjtBQUMvRixTQUFRQyxZQUFZLEVBQUVD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
@@ -18,3 +18,4 @@ export declare class WebsocketClient {
18
18
  setupClient({ requestContext }: WebSocketClientContext): Promise<void>;
19
19
  send(connection: any, payload: any): Promise<boolean>;
20
20
  }
21
+ //# sourceMappingURL=websockets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websockets.d.ts","sourceRoot":"","sources":["../../src/actions/websockets.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAKlD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAU,UAAU,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAwC5F,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAc3E,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,GAAG,CAoB3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,SAAS,UAAU,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,GAAG,CAqBtF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,mBAAmB,CAoB1E,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AACD,qBAAa,eAAe;IAC1B,MAAM,MAAC;gBAEK,MAAM,CAAC,KAAA;IAOb,WAAW,CAAC,EAAC,cAAc,EAAC,EAAE,sBAAsB;IAiBpD,IAAI,CAAC,UAAU,KAAA,EAAE,OAAO,KAAA;CA2B/B"}