@nlabs/reaktor 0.10.1 → 0.10.5

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 (494) hide show
  1. package/coverage/actions/index.html +21 -36
  2. package/coverage/actions/notifications.ts.html +223 -0
  3. package/coverage/actions/posts.ts.html +2356 -0
  4. package/coverage/adapters/arangoAdapter.ts.html +170 -20
  5. package/coverage/adapters/fileAdapter.ts.html +445 -0
  6. package/coverage/adapters/index.html +72 -42
  7. package/coverage/adapters/postAdapter.ts.html +436 -0
  8. package/coverage/adapters/reaktorAdapter.ts.html +201 -18
  9. package/coverage/adapters/tagAdapter.ts.html +274 -25
  10. package/coverage/adapters/userAdapter.ts.html +829 -0
  11. package/coverage/analyticsUtils.ts.html +286 -0
  12. package/coverage/block-navigation.js +1 -1
  13. package/coverage/config.ts.html +766 -0
  14. package/coverage/index.html +83 -53
  15. package/coverage/mocks/group.ts.html +5 -5
  16. package/coverage/mocks/image.ts.html +18 -12
  17. package/coverage/mocks/index.html +37 -7
  18. package/coverage/mocks/post.ts.html +8 -8
  19. package/coverage/mocks/tag.ts.html +2 -2
  20. package/coverage/mocks/user.ts.html +18 -15
  21. package/coverage/sorter.js +21 -7
  22. package/coverage/testUtils.ts.html +1309 -0
  23. package/coverage/translationQueue.ts.html +592 -0
  24. package/coverage/types/error.types.ts.html +148 -0
  25. package/coverage/types/index.html +2 -2
  26. package/coverage/utils/adapterUtils.ts.html +39 -27
  27. package/coverage/utils/analyticsUtils.ts.html +35 -41
  28. package/coverage/utils/authUtils.ts.html +328 -0
  29. package/coverage/utils/dbI18n.ts.html +280 -0
  30. package/coverage/utils/googleTranslate.ts.html +385 -0
  31. package/coverage/utils/index.html +29 -44
  32. package/coverage/utils/localeUtils.ts.html +193 -0
  33. package/coverage/utils/sessionUtils.ts.html +211 -0
  34. package/coverage/utils/testUtils.ts.html +1309 -0
  35. package/lex.config.mjs +34 -0
  36. package/lib/actions/apps.d.ts +25 -0
  37. package/lib/actions/connections.d.ts +5 -0
  38. package/lib/actions/content.d.ts +13 -0
  39. package/lib/actions/conversations.d.ts +16 -0
  40. package/lib/actions/dynamodb.d.ts +12 -0
  41. package/lib/actions/email.d.ts +8 -0
  42. package/lib/actions/files.d.ts +19 -0
  43. package/lib/actions/groups.d.ts +13 -0
  44. package/lib/actions/images.d.ts +33 -0
  45. package/lib/actions/index.d.ts +28 -0
  46. package/lib/actions/ios.d.ts +7 -0
  47. package/lib/actions/locations.d.ts +6 -0
  48. package/lib/actions/messages.d.ts +13 -0
  49. package/lib/actions/notifications.d.ts +9 -0
  50. package/lib/actions/payments.d.ts +12 -0
  51. package/lib/actions/posts.d.ts +25 -0
  52. package/lib/actions/profiles.d.ts +4 -0
  53. package/lib/actions/reactions.d.ts +32 -0
  54. package/lib/actions/s3.d.ts +11 -0
  55. package/lib/actions/search.d.ts +3 -0
  56. package/lib/actions/sms.d.ts +2 -0
  57. package/lib/actions/statistics.d.ts +4 -0
  58. package/lib/actions/subscriptions.d.ts +7 -0
  59. package/lib/actions/tags.d.ts +34 -0
  60. package/lib/actions/users.d.ts +73 -0
  61. package/lib/actions/videos.d.ts +25 -0
  62. package/lib/actions/websockets.d.ts +20 -0
  63. package/lib/adapters/arangoAdapter.d.ts +8 -0
  64. package/lib/adapters/contentAdapter.d.ts +8 -0
  65. package/lib/adapters/fileAdapter.d.ts +9 -0
  66. package/lib/adapters/imageAdapter.d.ts +8 -0
  67. package/lib/adapters/index.d.ts +9 -0
  68. package/lib/adapters/messageAdapter.d.ts +8 -0
  69. package/lib/adapters/postAdapter.d.ts +8 -0
  70. package/lib/adapters/reaktorAdapter.d.ts +16 -0
  71. package/lib/adapters/tagAdapter.d.ts +9 -0
  72. package/lib/adapters/userAdapter.d.ts +13 -0
  73. package/lib/config.d.ts +57 -0
  74. package/lib/handlers/graphqlHandler.d.ts +4 -0
  75. package/lib/index.d.ts +19 -0
  76. package/lib/lambdas/actions/websockets.d.ts +7 -0
  77. package/lib/lambdas/authorizer.d.ts +20 -0
  78. package/lib/lambdas/connection.d.ts +12 -0
  79. package/lib/lambdas/utils/message.d.ts +1 -0
  80. package/lib/lambdas/utils/websocket.d.ts +7 -0
  81. package/lib/mocks/conversation.d.ts +8 -0
  82. package/lib/mocks/file.d.ts +11 -0
  83. package/lib/mocks/group.d.ts +17 -0
  84. package/lib/mocks/image.d.ts +3 -0
  85. package/lib/mocks/post.d.ts +38 -0
  86. package/lib/mocks/tag.d.ts +2 -0
  87. package/lib/mocks/user.d.ts +4 -0
  88. package/lib/mocks/video.d.ts +3 -0
  89. package/lib/mutations/content.d.ts +2 -0
  90. package/lib/mutations/index.d.ts +11 -0
  91. package/lib/mutations/locations.d.ts +2 -0
  92. package/lib/mutations/messages.d.ts +2 -0
  93. package/lib/mutations/posts.d.ts +2 -0
  94. package/lib/mutations/profiles.d.ts +2 -0
  95. package/lib/mutations/reactions.d.ts +2 -0
  96. package/lib/mutations/statistics.d.ts +2 -0
  97. package/lib/mutations/subscriptions.d.ts +2 -0
  98. package/lib/mutations/tags.d.ts +2 -0
  99. package/lib/mutations/users.d.ts +1 -0
  100. package/lib/objectTypes/app.d.ts +3 -0
  101. package/lib/objectTypes/bankAccount.d.ts +1 -0
  102. package/lib/objectTypes/connection.d.ts +1 -0
  103. package/lib/objectTypes/content.d.ts +2 -0
  104. package/lib/objectTypes/conversation.d.ts +2 -0
  105. package/lib/objectTypes/creditCard.d.ts +1 -0
  106. package/lib/objectTypes/document.d.ts +1 -0
  107. package/lib/objectTypes/error.d.ts +1 -0
  108. package/lib/objectTypes/external.d.ts +1 -0
  109. package/lib/objectTypes/file.d.ts +2 -0
  110. package/lib/objectTypes/filter.d.ts +1 -0
  111. package/lib/objectTypes/group.d.ts +3 -0
  112. package/lib/objectTypes/iapSubscription.d.ts +1 -0
  113. package/lib/objectTypes/image.d.ts +6 -0
  114. package/lib/objectTypes/index.d.ts +26 -0
  115. package/lib/objectTypes/location.d.ts +2 -0
  116. package/lib/objectTypes/message.d.ts +2 -0
  117. package/lib/objectTypes/passcode.d.ts +1 -0
  118. package/lib/objectTypes/plan.d.ts +2 -0
  119. package/lib/objectTypes/post.d.ts +2 -0
  120. package/lib/objectTypes/profile.d.ts +3 -0
  121. package/lib/objectTypes/reaction.d.ts +2 -0
  122. package/lib/objectTypes/relation.d.ts +1 -0
  123. package/lib/objectTypes/search.d.ts +1 -0
  124. package/lib/objectTypes/statistics.d.ts +1 -0
  125. package/lib/objectTypes/subscription.d.ts +2 -0
  126. package/lib/objectTypes/tag.d.ts +2 -0
  127. package/lib/objectTypes/user.d.ts +4 -0
  128. package/lib/queries/content.d.ts +2 -0
  129. package/lib/queries/index.d.ts +10 -0
  130. package/lib/queries/locations.d.ts +2 -0
  131. package/lib/queries/messages.d.ts +2 -0
  132. package/lib/queries/posts.d.ts +2 -0
  133. package/lib/queries/reactions.d.ts +2 -0
  134. package/lib/queries/statistics.d.ts +2 -0
  135. package/lib/queries/subscriptions.d.ts +2 -0
  136. package/lib/queries/tags.d.ts +2 -0
  137. package/lib/queries/users.d.ts +1 -0
  138. package/lib/templates/email/layout.d.ts +2 -0
  139. package/lib/templates/email/passwordForgot.d.ts +2 -0
  140. package/lib/templates/email/passwordRecovery.d.ts +2 -0
  141. package/lib/templates/email/verifyEmail.d.ts +2 -0
  142. package/lib/templates/email/welcome.d.ts +2 -0
  143. package/lib/templates/sms/passwordForgot.d.ts +2 -0
  144. package/lib/templates/sms/passwordRecovery.d.ts +2 -0
  145. package/lib/templates/sms/verifyEmail.d.ts +2 -0
  146. package/lib/templates/sms/verifyPhone.d.ts +2 -0
  147. package/lib/templates/sms/welcome.d.ts +2 -0
  148. package/lib/types/apps.types.d.ts +50 -0
  149. package/lib/types/arangodb.types.d.ts +38 -0
  150. package/lib/types/auth.types.d.ts +15 -0
  151. package/lib/types/connections.types.d.ts +9 -0
  152. package/lib/types/content.types.d.ts +31 -0
  153. package/lib/types/conversations.types.d.ts +31 -0
  154. package/lib/types/email.types.d.ts +17 -0
  155. package/lib/types/error.types.d.ts +21 -0
  156. package/lib/types/files.types.d.ts +27 -0
  157. package/lib/types/google.types.d.ts +33 -0
  158. package/lib/types/groups.types.d.ts +22 -0
  159. package/lib/types/images.types.d.ts +56 -0
  160. package/lib/types/index.d.ts +27 -0
  161. package/lib/types/locations.types.d.ts +22 -0
  162. package/lib/types/messages.types.d.ts +20 -0
  163. package/lib/types/notifications.types.d.ts +23 -0
  164. package/lib/types/payments.types.d.ts +113 -0
  165. package/lib/types/posts.types.d.ts +32 -0
  166. package/lib/types/profiles.types.d.ts +20 -0
  167. package/lib/types/statistics.types.d.ts +3 -0
  168. package/lib/types/tags.types.d.ts +19 -0
  169. package/lib/types/users.types.d.ts +110 -0
  170. package/lib/types/videos.types.d.ts +46 -0
  171. package/lib/types/websockets.types.d.ts +22 -0
  172. package/lib/utils/adapterUtils.d.ts +5 -0
  173. package/lib/utils/analyticsUtils.d.ts +25 -0
  174. package/lib/utils/arangodbUtils.d.ts +70 -0
  175. package/lib/utils/authUtils.d.ts +23 -0
  176. package/lib/utils/contextUtils.d.ts +3 -0
  177. package/lib/utils/dbI18n.d.ts +10 -0
  178. package/lib/utils/dbI18n.example.d.ts +20 -0
  179. package/lib/utils/googleTranslate.d.ts +6 -0
  180. package/lib/utils/graphqlUtils.d.ts +10 -0
  181. package/lib/utils/index.d.ts +18 -0
  182. package/lib/utils/languageDetection.d.ts +8 -0
  183. package/lib/utils/localeUtils.d.ts +11 -0
  184. package/lib/utils/localeUtils.example.d.ts +5 -0
  185. package/lib/utils/middlewareUtils.d.ts +2 -0
  186. package/lib/utils/sessionUtils.d.ts +18 -0
  187. package/lib/utils/stripeUtils.d.ts +7 -0
  188. package/lib/utils/templateUtils.d.ts +3 -0
  189. package/lib/utils/testUtils.d.ts +95 -0
  190. package/lib/utils/translationQueue.d.ts +29 -0
  191. package/lib/utils/translationQueue.example.d.ts +33 -0
  192. package/package.json +28 -28
  193. package/tsconfig.build.json +21 -0
  194. package/tsconfig.lint.json +33 -0
  195. package/tsconfig.test.json +31 -0
  196. package/dist/actions/apps.js +0 -242
  197. package/dist/actions/connections.js +0 -90
  198. package/dist/actions/conversations.js +0 -350
  199. package/dist/actions/dynamodb.js +0 -150
  200. package/dist/actions/email.js +0 -152
  201. package/dist/actions/files.js +0 -283
  202. package/dist/actions/groups.js +0 -292
  203. package/dist/actions/images.js +0 -735
  204. package/dist/actions/index.js +0 -66
  205. package/dist/actions/ios.js +0 -164
  206. package/dist/actions/locations.js +0 -122
  207. package/dist/actions/messages.js +0 -208
  208. package/dist/actions/notifications.js +0 -59
  209. package/dist/actions/payments.js +0 -497
  210. package/dist/actions/personas.js +0 -110
  211. package/dist/actions/posts.js +0 -595
  212. package/dist/actions/reactions.js +0 -322
  213. package/dist/actions/s3.js +0 -133
  214. package/dist/actions/search.js +0 -90
  215. package/dist/actions/sms.js +0 -108
  216. package/dist/actions/statistics.js +0 -62
  217. package/dist/actions/subscription.js +0 -220
  218. package/dist/actions/tags.js +0 -292
  219. package/dist/actions/users.js +0 -784
  220. package/dist/actions/websockets.js +0 -174
  221. package/dist/adapters/arangoAdapter.js +0 -46
  222. package/dist/adapters/fileAdapter.js +0 -76
  223. package/dist/adapters/imageAdapter.js +0 -40
  224. package/dist/adapters/messageAdapter.js +0 -49
  225. package/dist/adapters/postAdapter.js +0 -70
  226. package/dist/adapters/reaktorAdapter.js +0 -44
  227. package/dist/adapters/tagAdapter.js +0 -50
  228. package/dist/adapters/userAdapter.js +0 -115
  229. package/dist/config.js +0 -125
  230. package/dist/index.js +0 -66
  231. package/dist/lambdas/actions/websockets.js +0 -132
  232. package/dist/lambdas/authorizer.js +0 -67
  233. package/dist/lambdas/connection.js +0 -91
  234. package/dist/lambdas/utils/message.js +0 -42
  235. package/dist/lambdas/utils/websocket.js +0 -105
  236. package/dist/mocks/conversation.js +0 -35
  237. package/dist/mocks/file.js +0 -38
  238. package/dist/mocks/group.js +0 -47
  239. package/dist/mocks/image.js +0 -44
  240. package/dist/mocks/nlabs.png +0 -0
  241. package/dist/mocks/post.js +0 -55
  242. package/dist/mocks/tag.js +0 -37
  243. package/dist/mocks/user.js +0 -88
  244. package/dist/mutations/index.js +0 -26
  245. package/dist/mutations/locations.js +0 -44
  246. package/dist/mutations/messages.js +0 -86
  247. package/dist/mutations/personas.js +0 -100
  248. package/dist/mutations/posts.js +0 -53
  249. package/dist/mutations/reactions.js +0 -51
  250. package/dist/mutations/statistics.js +0 -39
  251. package/dist/mutations/subscriptions.js +0 -56
  252. package/dist/mutations/tags.js +0 -120
  253. package/dist/mutations/users.js +0 -116
  254. package/dist/objectTypes/app.js +0 -173
  255. package/dist/objectTypes/bankAccount.js +0 -76
  256. package/dist/objectTypes/connection.js +0 -48
  257. package/dist/objectTypes/conversation.js +0 -77
  258. package/dist/objectTypes/creditCard.js +0 -86
  259. package/dist/objectTypes/document.js +0 -46
  260. package/dist/objectTypes/error.js +0 -46
  261. package/dist/objectTypes/external.js +0 -74
  262. package/dist/objectTypes/file.js +0 -100
  263. package/dist/objectTypes/filter.js +0 -43
  264. package/dist/objectTypes/group.js +0 -123
  265. package/dist/objectTypes/iapSubscription.js +0 -40
  266. package/dist/objectTypes/image.js +0 -129
  267. package/dist/objectTypes/index.js +0 -68
  268. package/dist/objectTypes/location.js +0 -109
  269. package/dist/objectTypes/message.js +0 -96
  270. package/dist/objectTypes/passcode.js +0 -42
  271. package/dist/objectTypes/persona.js +0 -87
  272. package/dist/objectTypes/plan.js +0 -95
  273. package/dist/objectTypes/post.js +0 -125
  274. package/dist/objectTypes/reaction.js +0 -61
  275. package/dist/objectTypes/relation.js +0 -49
  276. package/dist/objectTypes/search.js +0 -72
  277. package/dist/objectTypes/statistics.js +0 -39
  278. package/dist/objectTypes/subscription.js +0 -117
  279. package/dist/objectTypes/tag.js +0 -65
  280. package/dist/objectTypes/user.js +0 -144
  281. package/dist/queries/index.js +0 -33
  282. package/dist/queries/locations.js +0 -45
  283. package/dist/queries/messages.js +0 -52
  284. package/dist/queries/posts.js +0 -154
  285. package/dist/queries/reactions.js +0 -56
  286. package/dist/queries/statistics.js +0 -39
  287. package/dist/queries/subscriptions.js +0 -44
  288. package/dist/queries/tags.js +0 -75
  289. package/dist/queries/users.js +0 -64
  290. package/dist/templates/email/layout.js +0 -302
  291. package/dist/templates/email/passwordForgot.js +0 -38
  292. package/dist/templates/email/passwordRecovery.js +0 -35
  293. package/dist/templates/email/verifyEmail.js +0 -38
  294. package/dist/templates/email/welcome.js +0 -38
  295. package/dist/templates/sms/passwordForgot.js +0 -24
  296. package/dist/templates/sms/passwordRecovery.js +0 -24
  297. package/dist/templates/sms/verifyEmail.js +0 -24
  298. package/dist/templates/sms/verifyPhone.js +0 -24
  299. package/dist/templates/sms/welcome.js +0 -24
  300. package/dist/types/apps.js +0 -32
  301. package/dist/types/arangodb.js +0 -16
  302. package/dist/types/auth.js +0 -16
  303. package/dist/types/connections.js +0 -16
  304. package/dist/types/conversations.js +0 -16
  305. package/dist/types/email.js +0 -16
  306. package/dist/types/error.js +0 -44
  307. package/dist/types/files.js +0 -16
  308. package/dist/types/google.js +0 -16
  309. package/dist/types/groups.js +0 -16
  310. package/dist/types/images.js +0 -16
  311. package/dist/types/index.js +0 -60
  312. package/dist/types/locations.js +0 -16
  313. package/dist/types/messages.js +0 -16
  314. package/dist/types/notifications.js +0 -16
  315. package/dist/types/payments.js +0 -16
  316. package/dist/types/personas.js +0 -16
  317. package/dist/types/posts.js +0 -16
  318. package/dist/types/statistics.js +0 -16
  319. package/dist/types/tags.js +0 -16
  320. package/dist/types/users.js +0 -16
  321. package/dist/types/websockets.js +0 -16
  322. package/dist/utils/adapterUtils.js +0 -45
  323. package/dist/utils/analyticsUtils.js +0 -72
  324. package/dist/utils/arangodbUtils.js +0 -165
  325. package/dist/utils/auth.js +0 -57
  326. package/dist/utils/index.js +0 -30
  327. package/dist/utils/session.js +0 -60
  328. package/jest.config.js +0 -17
  329. package/jest.setup.js +0 -36
  330. package/lex.config.cjs +0 -13
  331. package/lib/actions/apps.js +0 -20
  332. package/lib/actions/connections.js +0 -7
  333. package/lib/actions/content.js +0 -17
  334. package/lib/actions/conversations.js +0 -33
  335. package/lib/actions/dynamodb.js +0 -2
  336. package/lib/actions/email.js +0 -2
  337. package/lib/actions/files.js +0 -5
  338. package/lib/actions/groups.js +0 -52
  339. package/lib/actions/images.js +0 -66
  340. package/lib/actions/index.js +0 -2
  341. package/lib/actions/ios.js +0 -11
  342. package/lib/actions/locations.js +0 -7
  343. package/lib/actions/messages.js +0 -33
  344. package/lib/actions/notifications.js +0 -2
  345. package/lib/actions/payments.js +0 -32
  346. package/lib/actions/posts.js +0 -143
  347. package/lib/actions/profiles.js +0 -8
  348. package/lib/actions/reactions.js +0 -35
  349. package/lib/actions/s3.js +0 -2
  350. package/lib/actions/search.js +0 -5
  351. package/lib/actions/sms.js +0 -2
  352. package/lib/actions/statistics.js +0 -8
  353. package/lib/actions/subscriptions.js +0 -12
  354. package/lib/actions/tags.js +0 -24
  355. package/lib/actions/users.js +0 -84
  356. package/lib/actions/websockets.js +0 -30
  357. package/lib/adapters/arangoAdapter.js +0 -2
  358. package/lib/adapters/contentAdapter.js +0 -2
  359. package/lib/adapters/fileAdapter.js +0 -2
  360. package/lib/adapters/imageAdapter.js +0 -2
  361. package/lib/adapters/messageAdapter.js +0 -2
  362. package/lib/adapters/postAdapter.js +0 -2
  363. package/lib/adapters/reaktorAdapter.js +0 -2
  364. package/lib/adapters/tagAdapter.js +0 -2
  365. package/lib/adapters/userAdapter.js +0 -2
  366. package/lib/config.js +0 -2
  367. package/lib/handlers/graphqlHandler.js +0 -2
  368. package/lib/index.js +0 -2
  369. package/lib/lambdas/actions/websockets.js +0 -30
  370. package/lib/lambdas/authorizer.js +0 -2
  371. package/lib/lambdas/connection.js +0 -2
  372. package/lib/lambdas/utils/message.js +0 -2
  373. package/lib/lambdas/utils/websocket.js +0 -2
  374. package/lib/mocks/conversation.js +0 -2
  375. package/lib/mocks/file.js +0 -2
  376. package/lib/mocks/group.js +0 -2
  377. package/lib/mocks/image.js +0 -2
  378. package/lib/mocks/post.js +0 -2
  379. package/lib/mocks/tag.js +0 -2
  380. package/lib/mocks/user.js +0 -2
  381. package/lib/mutations/index.js +0 -2
  382. package/lib/mutations/locations.integration.js +0 -2
  383. package/lib/mutations/locations.js +0 -2
  384. package/lib/mutations/messages.integration.js +0 -2
  385. package/lib/mutations/messages.js +0 -2
  386. package/lib/mutations/posts.integration.js +0 -2
  387. package/lib/mutations/posts.js +0 -2
  388. package/lib/mutations/profiles.integration.js +0 -2
  389. package/lib/mutations/profiles.js +0 -2
  390. package/lib/mutations/reactions.integration.js +0 -2
  391. package/lib/mutations/reactions.js +0 -2
  392. package/lib/mutations/statistics.integration.js +0 -2
  393. package/lib/mutations/statistics.js +0 -2
  394. package/lib/mutations/subscriptions.integration.js +0 -2
  395. package/lib/mutations/subscriptions.js +0 -2
  396. package/lib/mutations/tags.integration.js +0 -2
  397. package/lib/mutations/tags.js +0 -2
  398. package/lib/mutations/users.integration.js +0 -2
  399. package/lib/mutations/users.js +0 -2
  400. package/lib/objectTypes/app.js +0 -2
  401. package/lib/objectTypes/bankAccount.js +0 -2
  402. package/lib/objectTypes/connection.js +0 -2
  403. package/lib/objectTypes/conversation.js +0 -2
  404. package/lib/objectTypes/creditCard.js +0 -2
  405. package/lib/objectTypes/document.js +0 -2
  406. package/lib/objectTypes/error.js +0 -2
  407. package/lib/objectTypes/external.js +0 -2
  408. package/lib/objectTypes/file.js +0 -2
  409. package/lib/objectTypes/filter.js +0 -2
  410. package/lib/objectTypes/group.js +0 -2
  411. package/lib/objectTypes/iapSubscription.js +0 -2
  412. package/lib/objectTypes/image.js +0 -2
  413. package/lib/objectTypes/index.js +0 -2
  414. package/lib/objectTypes/location.js +0 -2
  415. package/lib/objectTypes/message.js +0 -2
  416. package/lib/objectTypes/passcode.js +0 -2
  417. package/lib/objectTypes/plan.js +0 -2
  418. package/lib/objectTypes/post.js +0 -2
  419. package/lib/objectTypes/profile.js +0 -2
  420. package/lib/objectTypes/reaction.js +0 -2
  421. package/lib/objectTypes/relation.js +0 -2
  422. package/lib/objectTypes/search.js +0 -2
  423. package/lib/objectTypes/statistics.js +0 -2
  424. package/lib/objectTypes/subscription.js +0 -2
  425. package/lib/objectTypes/tag.js +0 -2
  426. package/lib/objectTypes/user.js +0 -2
  427. package/lib/queries/index.js +0 -2
  428. package/lib/queries/locations.integration.js +0 -2
  429. package/lib/queries/locations.js +0 -2
  430. package/lib/queries/messages.integration.js +0 -2
  431. package/lib/queries/messages.js +0 -2
  432. package/lib/queries/posts.integration.js +0 -2
  433. package/lib/queries/posts.js +0 -2
  434. package/lib/queries/reactions.integration.js +0 -2
  435. package/lib/queries/reactions.js +0 -2
  436. package/lib/queries/statistics.js +0 -2
  437. package/lib/queries/subscriptions.js +0 -2
  438. package/lib/queries/tags.integration.js +0 -2
  439. package/lib/queries/tags.js +0 -2
  440. package/lib/queries/users.integration.js +0 -2
  441. package/lib/queries/users.js +0 -2
  442. package/lib/templates/email/layout.js +0 -280
  443. package/lib/templates/email/passwordForgot.js +0 -16
  444. package/lib/templates/email/passwordRecovery.js +0 -13
  445. package/lib/templates/email/verifyEmail.js +0 -16
  446. package/lib/templates/email/welcome.js +0 -16
  447. package/lib/templates/sms/passwordForgot.js +0 -2
  448. package/lib/templates/sms/passwordRecovery.js +0 -2
  449. package/lib/templates/sms/verifyEmail.js +0 -2
  450. package/lib/templates/sms/verifyPhone.js +0 -2
  451. package/lib/templates/sms/welcome.js +0 -2
  452. package/lib/types/apps.types.js +0 -2
  453. package/lib/types/arangodb.types.js +0 -1
  454. package/lib/types/auth.types.js +0 -1
  455. package/lib/types/connections.types.js +0 -1
  456. package/lib/types/content.types.js +0 -1
  457. package/lib/types/conversations.types.js +0 -1
  458. package/lib/types/email.types.js +0 -1
  459. package/lib/types/error.types.js +0 -2
  460. package/lib/types/files.types.js +0 -1
  461. package/lib/types/google.types.js +0 -1
  462. package/lib/types/groups.types.js +0 -1
  463. package/lib/types/images.types.js +0 -1
  464. package/lib/types/index.js +0 -2
  465. package/lib/types/locations.types.js +0 -1
  466. package/lib/types/messages.types.js +0 -1
  467. package/lib/types/notifications.types.js +0 -1
  468. package/lib/types/payments.types.js +0 -1
  469. package/lib/types/posts.types.js +0 -1
  470. package/lib/types/profiles.types.js +0 -1
  471. package/lib/types/statistics.types.js +0 -1
  472. package/lib/types/tags.types.js +0 -1
  473. package/lib/types/users.types.js +0 -1
  474. package/lib/types/websockets.types.js +0 -1
  475. package/lib/utils/adapterUtils.js +0 -2
  476. package/lib/utils/analyticsUtils.js +0 -2
  477. package/lib/utils/arangodbUtils.js +0 -7
  478. package/lib/utils/authUtils.js +0 -2
  479. package/lib/utils/contextUtils.js +0 -2
  480. package/lib/utils/dbI18n.example.js +0 -6
  481. package/lib/utils/dbI18n.js +0 -2
  482. package/lib/utils/googleTranslate.js +0 -2
  483. package/lib/utils/graphqlUtils.js +0 -2
  484. package/lib/utils/index.js +0 -2
  485. package/lib/utils/languageDetection.js +0 -2
  486. package/lib/utils/localeUtils.example.js +0 -2
  487. package/lib/utils/localeUtils.js +0 -2
  488. package/lib/utils/middlewareUtils.js +0 -2
  489. package/lib/utils/sessionUtils.js +0 -2
  490. package/lib/utils/stripeUtils.js +0 -2
  491. package/lib/utils/templateUtils.js +0 -2
  492. package/lib/utils/testUtils.js +0 -2
  493. package/lib/utils/translationQueue.example.js +0 -2
  494. package/lib/utils/translationQueue.js +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/reaktor",
3
- "version": "0.10.1",
3
+ "version": "0.10.5",
4
4
  "description": "Reaktor",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -28,68 +28,68 @@
28
28
  },
29
29
  "scripts": {
30
30
  "build": "lex compile --remove",
31
+ "build:dev": "APP_ENV=dev NODE_ENV=development lex compile --remove",
32
+ "build:prod": "APP_ENV=prod NODE_ENV=production lex compile --remove",
31
33
  "clean": "lex clean",
32
34
  "lint": "lex lint --fix",
33
- "prepublishOnly": "npm run build",
35
+ "prepublishOnly": "npm run build:prod",
34
36
  "publish:major": "npm version major && npm run publish:tags && npm publish",
35
37
  "publish:minor": "npm version minor && npm run publish:tags && npm publish",
36
38
  "publish:patch": "npm version patch && npm run publish:tags && npm publish",
37
39
  "publish:tags": "git push --tags && git push origin HEAD",
38
40
  "test:unit": "stage=test lex test",
39
41
  "test": "npm run test:unit",
40
- "update": "lex update --interactive",
42
+ "update": "lex update --interactive --package-manager npm",
41
43
  "watch": "lex compile --remove --watch"
42
44
  },
43
45
  "dependencies": {
44
- "@aws-sdk/client-apigatewaymanagementapi": "^3.848.0",
45
- "@aws-sdk/client-dynamodb": "^3.848.0",
46
- "@aws-sdk/client-s3": "^3.850.0",
47
- "@aws-sdk/client-ses": "^3.848.0",
48
- "@aws-sdk/client-sns": "^3.848.0",
49
- "@aws-sdk/s3-request-presigner": "^3.850.0",
50
- "@nlabs/arkhamjs": "^3.31.6",
51
- "@nlabs/rip-hunter": "^3.0.0",
52
- "@nlabs/utils": "^2.7.6",
53
- "@types/aws-lambda": "^8.10.152",
54
- "apn": "^2.2.0",
46
+ "@aws-sdk/client-apigatewaymanagementapi": "^3.901.0",
47
+ "@aws-sdk/client-dynamodb": "^3.902.0",
48
+ "@aws-sdk/client-s3": "^3.901.0",
49
+ "@aws-sdk/client-ses": "^3.901.0",
50
+ "@aws-sdk/client-sns": "^3.901.0",
51
+ "@aws-sdk/s3-request-presigner": "^3.901.0",
52
+ "@nlabs/arkhamjs": "^3.31.7",
53
+ "@nlabs/rip-hunter": "^3.0.2",
54
+ "@nlabs/utils": "^2.8.4",
55
+ "@types/aws-lambda": "^8.10.155",
56
+ "apn": "^2.0.0",
55
57
  "arangojs": "^10.1.2",
56
58
  "aws-sdk": "^2.1692.0",
57
59
  "child_process": "^1.0.2",
58
- "core-js": "^3.44.0",
60
+ "core-js": "^3.45.1",
59
61
  "file-type": "^21.0.0",
60
62
  "gm": "^1.25.1",
61
- "google-libphonenumber": "^3.2.42",
62
- "googleapis": "153.0.0",
63
+ "google-libphonenumber": "^3.2.43",
64
+ "googleapis": "161.0.0",
63
65
  "graphql": "^16.11.0",
64
66
  "graphql-compose": "^9.1.0",
65
67
  "graphql-fields": "^2.0.3",
66
- "i18next": "^25.3.2",
68
+ "i18next": "^25.5.3",
67
69
  "jsonwebtoken": "^9.0.2",
68
- "lodash": "^4.17.21",
69
- "luxon": "^3.7.1",
70
+ "luxon": "^3.7.2",
70
71
  "mime-types": "^3.0.1",
71
72
  "net": "^1.0.2",
72
- "node-yelp": "^0.0.3",
73
73
  "numeral": "^2.0.6",
74
74
  "sanitize-html": "^2.17.0",
75
75
  "spawn-sync": "^2.0.0",
76
- "stripe": "^18.3.0",
76
+ "stripe": "^19.1.0",
77
77
  "tls": "0.0.1",
78
78
  "to": "^0.2.9",
79
79
  "typed-promisify": "^0.4.0",
80
80
  "universal-analytics": "^0.5.3",
81
- "zod": "^4.0.5"
81
+ "zod": "^4.1.11"
82
82
  },
83
83
  "devDependencies": {
84
- "@nlabs/lex": "^1.48.7",
84
+ "@jest/globals": "^30.2.0",
85
+ "@nlabs/lex": "^1.50.1",
85
86
  "@types/history": "^5.0.0",
86
87
  "@types/jest": "^30.0.0",
87
- "@types/luxon": "^3.6.2",
88
- "@types/node": "^24.0.15",
88
+ "@types/luxon": "^3.7.1",
89
+ "@types/node": "^24.6.2",
89
90
  "@types/stripe": "^8.0.417",
90
91
  "@types/twilio": "^3.19.3",
91
92
  "graphql-tools": "^9.0.20",
92
- "typescript": "^5.8.3",
93
- "typescript-eslint": "^8.38.0"
93
+ "typescript": "^5.9.3"
94
94
  }
95
95
  }
@@ -0,0 +1,21 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": [
4
+ "./src/**/*.ts",
5
+ "./src/**/*.tsx"
6
+ ],
7
+ "exclude": [
8
+ "lib",
9
+ "./node_modules",
10
+ "./src/**/*.test.ts",
11
+ "./src/**/*.test.tsx",
12
+ "./src/**/*.spec.ts",
13
+ "./src/**/*.spec.tsx",
14
+ "./src/**/*.integration.ts",
15
+ "./src/**/*.integration.tsx"
16
+ ],
17
+ "compilerOptions": {
18
+ "skipLibCheck": true,
19
+ "noEmitOnError": false
20
+ }
21
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "noImplicitAny": false,
5
+ "noImplicitThis": false,
6
+ "noUncheckedIndexedAccess": false,
7
+ "noUnusedLocals": false,
8
+ "skipLibCheck": false,
9
+ "strict": false,
10
+ "strictFunctionTypes": false,
11
+ "strictNullChecks": false,
12
+ "isolatedModules": false,
13
+ "noImplicitReturns": false,
14
+ "types": [
15
+ "jest",
16
+ "node"
17
+ ],
18
+ },
19
+ "include": [
20
+ "./src/**/*.ts",
21
+ "./src/**/*.tsx",
22
+ "./src/**/*.test.ts",
23
+ "./src/**/*.test.tsx",
24
+ "./src/**/*.spec.ts",
25
+ "./src/**/*.spec.tsx"
26
+ ],
27
+ "exclude": [
28
+ "lib",
29
+ "./node_modules",
30
+ "./src/**/*.integration.ts",
31
+ "./src/**/*.integration.tsx"
32
+ ]
33
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": [
4
+ "src/**/*.test.ts",
5
+ "src/**/*.test.tsx",
6
+ "src/**/*.spec.ts",
7
+ "src/**/*.spec.tsx",
8
+ "src/**/*.integration.ts"
9
+ ],
10
+ "compilerOptions": {
11
+ "types": [
12
+ "jest"
13
+ ],
14
+ "noImplicitReturns": false,
15
+ "strictNullChecks": false,
16
+ "noImplicitAny": false,
17
+ "strict": false,
18
+ "strictFunctionTypes": false,
19
+ "noUnusedLocals": false,
20
+ "noImplicitThis": false,
21
+ "isolatedModules": false,
22
+ "allowJs": true,
23
+ "esModuleInterop": true,
24
+ "module": "commonjs",
25
+ "moduleResolution": "node",
26
+ "resolveJsonModule": true,
27
+ "skipLibCheck": true,
28
+ "noStrictGenericChecks": true,
29
+ "useUnknownInCatchVariables": false
30
+ }
31
+ }
@@ -1,242 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var apps_exports = {};
19
- __export(apps_exports, {
20
- addApp: () => addApp,
21
- deactivateApp: () => deactivateApp,
22
- deleteApp: () => deleteApp,
23
- getApp: () => getApp,
24
- getAppOptional: () => getAppOptional,
25
- getApps: () => getApps,
26
- parseAppOptions: () => parseAppOptions,
27
- updateApp: () => updateApp
28
- });
29
- module.exports = __toCommonJS(apps_exports);
30
- var import_utils = require("@nlabs/utils");
31
- var import_arangojs = require("arangojs");
32
- var import_error = require("../types/error");
33
- var import_analyticsUtils = require("../utils/analyticsUtils");
34
- var import_arangodbUtils = require("../utils/arangodbUtils");
35
- var import_session = require("../utils/session");
36
- const eventCategory = "apps";
37
- const getAppOptional = (fields = []) => fields.reduce((selects, field) => {
38
- if (field.includes("Count")) {
39
- return (0, import_arangodbUtils.selectReactionCountByType)("apps", "a", field, selects);
40
- }
41
- return selects;
42
- }, { objects: [], queries: [] });
43
- const parseAppOptions = (options = {}) => {
44
- const {
45
- from = 0,
46
- to = 30
47
- } = options;
48
- const limit = (0, import_arangodbUtils.getLimit)(from, to);
49
- return {
50
- ...options,
51
- limit
52
- };
53
- };
54
- const addApp = async (context, app) => {
55
- const action = "addUser";
56
- const { database } = context;
57
- const { email, name, phone } = app;
58
- const formatName = (0, import_utils.parseString)(name);
59
- const formatEmail = (0, import_utils.parseEmail)(email);
60
- const formatPhone = (0, import_utils.parsePhone)(phone);
61
- if (!formatName) {
62
- return (0, import_analyticsUtils.logException)({
63
- action,
64
- category: eventCategory,
65
- params: { name },
66
- value: import_error.ErrorTypes.INVALID_ARGUMENTS
67
- }, context);
68
- }
69
- const filters = [`a.name == "${formatName}"`];
70
- if (formatEmail) {
71
- filters.push(`a.email == "${formatEmail}"`);
72
- }
73
- const checkQuery = `FOR u IN users
74
- FILTER ${filters.join(" || ")}
75
- RETURN u`;
76
- try {
77
- const existingApps = await database.query(checkQuery).then((cursor) => cursor.all());
78
- if (existingApps.length) {
79
- return (0, import_analyticsUtils.logException)({
80
- action,
81
- category: eventCategory,
82
- params: { name },
83
- value: import_error.ErrorTypes.EXISTING_ITEM
84
- }, context);
85
- }
86
- } catch (error) {
87
- return (0, import_analyticsUtils.logError)({
88
- action,
89
- category: eventCategory,
90
- label: import_error.ErrorTypes.DATABASE_ERROR,
91
- params: { name }
92
- }, error, context);
93
- }
94
- const insert = {
95
- _key: (0, import_utils.createHash)(name, null),
96
- active: true,
97
- added: Date.now(),
98
- email: formatEmail,
99
- modified: Date.now(),
100
- name: formatName,
101
- phone: formatPhone
102
- };
103
- const insertQuery = import_arangojs.aql`INSERT ${insert} IN apps RETURN NEW`;
104
- return await database.query(insertQuery).then((cursor) => cursor.next() || {}).catch((error) => (0, import_analyticsUtils.logError)({
105
- action,
106
- category: eventCategory,
107
- label: import_error.ErrorTypes.DATABASE_ERROR,
108
- params: { name }
109
- }, error, context));
110
- };
111
- const updateApp = async (context, app) => {
112
- const action = "updateApp";
113
- const { database } = context;
114
- const { _key, _id, id, appId, ...updated } = app;
115
- const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
116
- const appQuery = import_arangojs.aql`LET a = DOCUMENT(${appDocId})
117
- UPDATE a WITH ${updated} IN apps
118
- RETURN NEW`;
119
- return await database.query(appQuery).then((cursor) => cursor.next()).catch(
120
- (error) => (0, import_analyticsUtils.logError)({
121
- action,
122
- category: eventCategory,
123
- label: import_error.ErrorTypes.DATABASE_ERROR,
124
- params: { app }
125
- }, error, context)
126
- );
127
- };
128
- const deleteApp = async (context, app) => {
129
- const action = "deleteApp";
130
- const { database, session } = context;
131
- const isAdmin = (0, import_session.isAdminUser)(session);
132
- const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
133
- if (!isAdmin) {
134
- return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
135
- }
136
- const aqlQuery = import_arangojs.aql`FOR a IN apps
137
- FILTER a._id == \"${appDocId}\"
138
- LIMIT 1
139
- REMOVE a IN apps
140
- RETURN OLD`;
141
- return database.query(aqlQuery).then((cursor) => cursor.next()).catch((error) => (0, import_analyticsUtils.logError)({
142
- action,
143
- category: eventCategory,
144
- label: import_error.ErrorTypes.DATABASE_ERROR,
145
- params: app
146
- }, error, context));
147
- };
148
- const deactivateApp = (context, app) => {
149
- const action = "deactivateApp";
150
- const { database, session } = context;
151
- const isAdmin = (0, import_session.isAdminUser)(session);
152
- const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
153
- if (!isAdmin) {
154
- return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
155
- }
156
- const updated = {
157
- active: false
158
- };
159
- const aqlQuery = import_arangojs.aql`UPDATE ${appDocId} WITH ${updated} IN apps LIMIT 1 RETURN NEW`;
160
- return database.query(aqlQuery).then((cursor) => cursor.next()).catch(
161
- (error) => (0, import_analyticsUtils.logError)({
162
- action,
163
- category: eventCategory,
164
- label: import_error.ErrorTypes.DATABASE_ERROR,
165
- params: app
166
- }, error, context)
167
- );
168
- };
169
- const getApp = (context, options) => {
170
- const action = "getApp";
171
- const { database, fields, session } = context;
172
- const { id, key, name } = parseAppOptions(options);
173
- const { objects: selectObjects, queries: selectQueries } = getAppOptional(fields);
174
- const filterBy = ["a.active == true"];
175
- const isAdmin = (0, import_session.isAdminUser)(session);
176
- if (!isAdmin) {
177
- return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
178
- }
179
- if (id) {
180
- filterBy.push(`a._id == "${(0, import_utils.parseArangoId)(id)}"`);
181
- }
182
- if (key) {
183
- filterBy.push(`a._key == "apps/${(0, import_utils.parseId)(key)}"`);
184
- }
185
- if (name) {
186
- filterBy.push(`CONTAINS(a.name, "${(0, import_utils.parseString)(name)}")`);
187
- }
188
- const aqlQuery = `FOR a IN apps
189
- FILTER ${filterBy.join(" && ")}
190
- ${selectQueries.join("\n")}
191
- RETURN MERGE(a, {${selectObjects.join(", ")}})`;
192
- return database.query(aqlQuery).then((cursor) => cursor.next()).catch((error) => {
193
- (0, import_analyticsUtils.logError)({
194
- action,
195
- category: eventCategory,
196
- label: import_error.ErrorTypes.DATABASE_ERROR,
197
- params: options
198
- }, error, context);
199
- return null;
200
- });
201
- };
202
- const getApps = async (context, options) => {
203
- const action = "getApps";
204
- const { database, fields, session } = context;
205
- const { limit, name } = parseAppOptions(options);
206
- const { objects: selectObjects, queries: selectQueries } = getAppOptional(fields);
207
- const filterBy = ["a.active == true"];
208
- const isAdmin = (0, import_session.isAdminUser)(session);
209
- if (!isAdmin) {
210
- return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
211
- }
212
- if (name) {
213
- filterBy.push(`CONTAINS(a.name, "${(0, import_utils.parseString)(name)}")`);
214
- }
215
- const aqlQuery = `FOR a IN apps
216
- FILTER ${filterBy.join(" && ")}
217
- ${selectQueries.join("\n")}
218
- ${limit.aql}
219
- SORT a.name
220
- RETURN MERGE(a, {${selectObjects.join(", ")}})`;
221
- return database.query(aqlQuery).then((cursor) => cursor.all()).catch((error) => {
222
- (0, import_analyticsUtils.logError)({
223
- action,
224
- category: eventCategory,
225
- label: import_error.ErrorTypes.DATABASE_ERROR,
226
- params: options
227
- }, error, context);
228
- return [];
229
- });
230
- };
231
- // Annotate the CommonJS export names for ESM import in node:
232
- 0 && (module.exports = {
233
- addApp,
234
- deactivateApp,
235
- deleteApp,
236
- getApp,
237
- getAppOptional,
238
- getApps,
239
- parseAppOptions,
240
- updateApp
241
- });
242
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvYXBwcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VQaG9uZSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtBcHBUeXBlfSBmcm9tICcuLi90eXBlcy9hcHBzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3InO1xuaW1wb3J0IHtsb2dFcnJvciwgbG9nRXhjZXB0aW9uLCBVc2VyRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzJztcbmltcG9ydCB7Z2V0RG9jSWQsIGdldExpbWl0LCBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlfSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzJztcbmltcG9ydCB7aXNBZG1pblVzZXJ9IGZyb20gJy4uL3V0aWxzL3Nlc3Npb24nO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQgdHlwZSB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2FwcHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE9wdGlvbnMge1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFwcE9wdGlvbmFsID0gKGZpZWxkczogc3RyaW5nW10gPSBbXSkgPT5cbiAgZmllbGRzLnJlZHVjZSgoc2VsZWN0cywgZmllbGQ6IHN0cmluZykgPT4ge1xuICAgIGlmKGZpZWxkLmluY2x1ZGVzKCdDb3VudCcpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSgnYXBwcycsICdhJywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RzO1xuICB9LCB7b2JqZWN0czogW10sIHF1ZXJpZXM6IFtdfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFwcE9wdGlvbnMgPSAob3B0aW9uczogQXBwT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmcm9tID0gMCxcbiAgICB0byA9IDMwXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbGltaXRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxVc2VyVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkVXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCB7ZW1haWwsIG5hbWUsIHBob25lfSA9IGFwcDtcbiAgY29uc3QgZm9ybWF0TmFtZSA9IHBhcnNlU3RyaW5nKG5hbWUpO1xuICBjb25zdCBmb3JtYXRFbWFpbCA9IHBhcnNlRW1haWwoZW1haWwpO1xuICBjb25zdCBmb3JtYXRQaG9uZSA9IHBhcnNlUGhvbmUocGhvbmUpO1xuXG4gIGlmKCFmb3JtYXROYW1lKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge25hbWV9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFNcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcnM6IHN0cmluZ1tdID0gW2BhLm5hbWUgPT0gXCIke2Zvcm1hdE5hbWV9XCJgXTtcblxuICBpZihmb3JtYXRFbWFpbCkge1xuICAgIGZpbHRlcnMucHVzaChgYS5lbWFpbCA9PSBcIiR7Zm9ybWF0RW1haWx9XCJgKTtcbiAgfVxuXG4gIGNvbnN0IGNoZWNrUXVlcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiAke2ZpbHRlcnMuam9pbignIHx8ICcpfVxuICAgIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIGNvbnN0IGV4aXN0aW5nQXBwcyA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGNoZWNrUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcblxuICAgIGlmKGV4aXN0aW5nQXBwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfSVRFTVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGluc2VydDogQXBwVHlwZSA9IHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKG5hbWUsIG51bGwpLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICBlbWFpbDogZm9ybWF0RW1haWwsXG4gICAgbW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICBwaG9uZTogZm9ybWF0UGhvbmVcbiAgfTtcblxuICBjb25zdCBpbnNlcnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBhcHBzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCBkYXRhYmFzZS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIHx8IHt9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge19rZXksIF9pZCwgaWQsIGFwcElkLCAuLi51cGRhdGVkfSA9IGFwcDtcbiAgY29uc3QgYXBwRG9jSWQgPSBnZXREb2NJZCgnYXBwcycsIGFwcCk7XG4gIGNvbnN0IGFwcFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgYSA9IERPQ1VNRU5UKCR7YXBwRG9jSWR9KVxuICAgIFVQREFURSBhIFdJVEggJHt1cGRhdGVkfSBJTiBhcHBzXG4gICAgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFwcFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT5cbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICAgIHBhcmFtczoge2FwcH1cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGEgSU4gYXBwc1xuICAgIEZJTFRFUiBhLl9pZCA9PSBcXFwiJHthcHBEb2NJZH1cXFwiXG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSBhIElOIGFwcHNcbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHAgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVhY3RpdmF0ZUFwcCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlYWN0aXZhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkOiBBcHBUeXBlID0ge1xuICAgIGFjdGl2ZTogZmFsc2VcbiAgfTtcbiAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2FwcERvY0lkfSBXSVRIICR7dXBkYXRlZH0gSU4gYXBwcyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHAgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtpZCwga2V5LCBuYW1lfSA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWydhLmFjdGl2ZSA9PSB0cnVlJ107XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBpZihpZCkge1xuICAgIGZpbHRlckJ5LnB1c2goYGEuX2lkID09IFwiJHtwYXJzZUFyYW5nb0lkKGlkKX1cImApO1xuICB9XG5cbiAgaWYoa2V5KSB7XG4gICAgZmlsdGVyQnkucHVzaChgYS5fa2V5ID09IFwiYXBwcy8ke3BhcnNlSWQoa2V5KX1cImApO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIFJFVFVSTiBNRVJHRShhLCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIHVua25vd24gYXMgQXBwVHlwZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBzID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0QXBwcyc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtsaW1pdCwgbmFtZX0gPSBwYXJzZUFwcE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldEFwcE9wdGlvbmFsKGZpZWxkcyk7XG4gIGNvbnN0IGZpbHRlckJ5OiBzdHJpbmdbXSA9IFsnYS5hY3RpdmUgPT0gdHJ1ZSddO1xuICBjb25zdCBpc0FkbWluID0gaXNBZG1pblVzZXIoc2Vzc2lvbik7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTikpO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgICR7bGltaXQuYXFsfVxuICAgIFNPUlQgYS5uYW1lXG4gICAgUkVUVVJOIE1FUkdFKGEsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIEFwcFR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7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QUFLLHlCQUFxQiwwQkFBWSxJQUFJLENBQUMsSUFBSTtBQUFBLEVBQzFEO0FBR0EsUUFBTSxXQUFtQjtBQUFBLGFBQ2QsU0FBUyxLQUFLLE1BQU0sQ0FBQztBQUFBLE1BQzVCLGNBQWMsS0FBSyxJQUFJLENBQUM7QUFBQSx1QkFDUCxjQUFjLEtBQUssSUFBSSxDQUFDO0FBRTdDLFNBQU8sU0FBUyxNQUFNLFFBQVEsRUFDM0IsS0FBSyxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQXVCLEVBQ3BELE1BQU0sQ0FBQyxVQUFpQjtBQUN2Qix3Q0FBUztBQUFBLE1BQ1A7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU8sd0JBQVc7QUFBQSxNQUNsQixRQUFRO0FBQUEsSUFDVixHQUFHLE9BQU8sT0FBTztBQUNqQixXQUFPO0FBQUEsRUFDVCxDQUFDO0FBQ0w7QUFFTyxNQUFNLFVBQVUsT0FBTyxTQUFxQixZQUE2QztBQUM5RixRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxVQUFVLFFBQVEsUUFBTyxJQUFJO0FBQ3BDLFFBQU0sRUFBQyxPQUFPLEtBQUksSUFBSSxnQkFBZ0IsT0FBTztBQUM3QyxRQUFNLEVBQUMsU0FBUyxlQUFlLFNBQVMsY0FBYSxJQUFJLGVBQWUsTUFBTTtBQUM5RSxRQUFNLFdBQXFCLENBQUMsa0JBQWtCO0FBQzlDLFFBQU0sY0FBVSw0QkFBWSxPQUFPO0FBRW5DLE1BQUcsQ0FBQyxTQUFTO0FBQ1gsV0FBTyxRQUFRLE9BQU8sSUFBSSxnQ0FBVSx3QkFBVyxlQUFlLENBQUM7QUFBQSxFQUNqRTtBQUVBLE1BQUcsTUFBTTtBQUNQLGFBQVMsS0FBSyx5QkFBcUIsMEJBQVksSUFBSSxDQUFDLElBQUk7QUFBQSxFQUMxRDtBQUdBLFFBQU0sV0FBbUI7QUFBQSxhQUNkLFNBQVMsS0FBSyxNQUFNLENBQUM7QUFBQSxNQUM1QixjQUFjLEtBQUssSUFBSSxDQUFDO0FBQUEsTUFDeEIsTUFBTSxHQUFHO0FBQUE7QUFBQSx1QkFFUSxjQUFjLEtBQUssSUFBSSxDQUFDO0FBRTdDLFNBQU8sU0FBUyxNQUFNLFFBQVEsRUFDM0IsS0FBSyxDQUFDLFdBQVcsT0FBTyxJQUFJLENBQXlCLEVBQ3JELE1BQU0sQ0FBQyxVQUFpQjtBQUN2Qix3Q0FBUztBQUFBLE1BQ1A7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU8sd0JBQVc7QUFBQSxNQUNsQixRQUFRO0FBQUEsSUFDVixHQUFHLE9BQU8sT0FBTztBQUNqQixXQUFPLENBQUM7QUFBQSxFQUNWLENBQUM7QUFDTDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,90 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var connections_exports = {};
19
- __export(connections_exports, {
20
- addConnection: () => addConnection,
21
- deleteConnection: () => deleteConnection,
22
- getConnection: () => getConnection
23
- });
24
- module.exports = __toCommonJS(connections_exports);
25
- var import_utils = require("@nlabs/utils");
26
- var import_aql = require("arangojs/aql");
27
- var import_error = require("../types/error");
28
- var import_utils2 = require("../utils");
29
- const eventCategory = "connections";
30
- const addConnection = (context, fromType, fromId, toType, toId, value) => {
31
- const action = "addConnection";
32
- const { database } = context;
33
- const formatFromDocId = (0, import_utils.parseArangoId)(`${fromType}/${fromId}`);
34
- const formatToDocId = (0, import_utils.parseArangoId)(`${toType}/${toId}`);
35
- const insert = {
36
- _from: formatFromDocId,
37
- _to: formatToDocId,
38
- isDirect: true,
39
- type: toType,
40
- value: !!value ? (0, import_utils.parseString)(value, 32) : void 0
41
- };
42
- const aqlQry = import_aql.aql`INSERT ${insert} IN hasConnection`;
43
- return database.query(aqlQry).then(() => true).catch((error) => {
44
- (0, import_utils2.logError)({
45
- action,
46
- category: eventCategory,
47
- label: import_error.ErrorTypes.DATABASE_ERROR
48
- }, error, context);
49
- return false;
50
- });
51
- };
52
- const getConnection = (context, fromType, fromId, toType, toId) => {
53
- const action = "getConnection";
54
- const { database } = context;
55
- const formatFromDocId = (0, import_utils.parseArangoId)(`${fromType}/${fromId}`);
56
- const formatToDocId = (0, import_utils.parseArangoId)(`${toType}/${toId}`);
57
- const aqlQry = import_aql.aql`FOR hc in hasConnection
58
- FILTER hc._from == ${formatFromDocId} && hc._to == ${formatToDocId}
59
- LIMIT 1`;
60
- return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_utils2.logError)({
61
- action,
62
- category: eventCategory,
63
- label: import_error.ErrorTypes.DATABASE_ERROR
64
- }, error, context));
65
- };
66
- const deleteConnection = (context, fromType, fromId, toType, toId) => {
67
- const action = "deleteReactionByItem";
68
- const { database } = context;
69
- const formatFromDocId = (0, import_utils.parseArangoId)(`${fromType}/${fromId}`);
70
- const formatToDocId = (0, import_utils.parseArangoId)(`${toType}/${toId}`);
71
- const aqlQry = import_aql.aql`FOR hc in hasConnection
72
- FILTER hc._from == ${formatFromDocId} && hc._to == ${formatToDocId}
73
- LIMIT 1
74
- REMOVE hc IN hasConnection`;
75
- return database.query(aqlQry).then(() => true).catch((error) => {
76
- (0, import_utils2.logError)({
77
- action,
78
- category: eventCategory,
79
- label: import_error.ErrorTypes.DATABASE_ERROR
80
- }, error, context);
81
- return false;
82
- });
83
- };
84
- // Annotate the CommonJS export names for ESM import in node:
85
- 0 && (module.exports = {
86
- addConnection,
87
- deleteConnection,
88
- getConnection
89
- });
90
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29ubmVjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbCwgdHlwZSBBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvcic7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0LCBDb25uZWN0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnY29ubmVjdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgYWRkQ29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmcsXG4gIHZhbHVlPzogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkQ29ubmVjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuXG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG4gIGNvbnN0IGluc2VydCA9IHtcbiAgICBfZnJvbTogZm9ybWF0RnJvbURvY0lkLFxuICAgIF90bzogZm9ybWF0VG9Eb2NJZCxcbiAgICBpc0RpcmVjdDogdHJ1ZSxcbiAgICB0eXBlOiB0b1R5cGUsXG4gICAgdmFsdWU6ICEhdmFsdWUgPyBwYXJzZVN0cmluZyh2YWx1ZSwgMzIpIDogdW5kZWZpbmVkXG4gIH07XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBoYXNDb25uZWN0aW9uYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBmcm9tVHlwZTogc3RyaW5nLFxuICBmcm9tSWQ6IHN0cmluZyxcbiAgdG9UeXBlOiBzdHJpbmcsXG4gIHRvSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxDb25uZWN0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRDb25uZWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGAke2Zyb21UeXBlfS8ke2Zyb21JZH1gKTtcbiAgY29uc3QgZm9ybWF0VG9Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHt0b1R5cGV9LyR7dG9JZH1gKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBoYyBpbiBoYXNDb25uZWN0aW9uXG4gICAgRklMVEVSIGhjLl9mcm9tID09ICR7Zm9ybWF0RnJvbURvY0lkfSAmJiBoYy5fdG8gPT0gJHtmb3JtYXRUb0RvY0lkfVxuICAgIExJTUlUIDFgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQ29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmdcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVSZWFjdGlvbkJ5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuXG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaGMgaW4gaGFzQ29ubmVjdGlvblxuICAgIEZJTFRFUiBoYy5fZnJvbSA9PSAke2Zvcm1hdEZyb21Eb2NJZH0gJiYgaGMuX3RvID09ICR7Zm9ybWF0VG9Eb2NJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIGhjIElOIGhhc0Nvbm5lY3Rpb25gO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBeUM7QUFDekMsaUJBQWlDO0FBRWpDLG1CQUF5QjtBQUN6QixJQUFBQSxnQkFBdUI7QUFJdkIsTUFBTSxnQkFBd0I7QUFFdkIsTUFBTSxnQkFBZ0IsQ0FDM0IsU0FDQSxVQUNBLFFBQ0EsUUFDQSxNQUNBLFVBQ3FCO0FBQ3JCLFFBQU0sU0FBaUI7QUFDdkIsUUFBTSxFQUFDLFNBQVEsSUFBSTtBQUVuQixRQUFNLHNCQUEwQiw0QkFBYyxHQUFHLFFBQVEsSUFBSSxNQUFNLEVBQUU7QUFDckUsUUFBTSxvQkFBd0IsNEJBQWMsR0FBRyxNQUFNLElBQUksSUFBSSxFQUFFO0FBQy9ELFFBQU0sU0FBUztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsS0FBSztBQUFBLElBQ0wsVUFBVTtBQUFBLElBQ1YsTUFBTTtBQUFBLElBQ04sT0FBTyxDQUFDLENBQUMsWUFBUSwwQkFBWSxPQUFPLEVBQUUsSUFBSTtBQUFBLEVBQzVDO0FBQ0EsUUFBTSxTQUFtQix3QkFBYSxNQUFNO0FBRTVDLFNBQU8sU0FBUyxNQUFNLE1BQU0sRUFDekIsS0FBSyxNQUFNLElBQUksRUFDZixNQUFNLENBQUMsVUFBaUI7QUFDdkIsZ0NBQVM7QUFBQSxNQUNQO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixPQUFPLHdCQUFXO0FBQUEsSUFDcEIsR0FBRyxPQUFPLE9BQU87QUFDakIsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNMO0FBRU8sTUFBTSxnQkFBZ0IsQ0FDM0IsU0FDQSxVQUNBLFFBQ0EsUUFDQSxTQUM0QjtBQUM1QixRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxTQUFRLElBQUk7QUFFbkIsUUFBTSxzQkFBMEIsNEJBQWMsR0FBRyxRQUFRLElBQUksTUFBTSxFQUFFO0FBQ3JFLFFBQU0sb0JBQXdCLDRCQUFjLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRTtBQUUvRCxRQUFNLFNBQW1CO0FBQUEseUJBQ0YsZUFBZSxpQkFBaUIsYUFBYTtBQUFBO0FBR3BFLFNBQU8sU0FBUyxNQUFNLE1BQU0sRUFDekIsS0FBSyxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQUMsRUFDOUIsTUFBTSxDQUFDLGNBQWlCLHdCQUFTO0FBQUEsSUFDaEM7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWLE9BQU8sd0JBQVc7QUFBQSxFQUNwQixHQUFHLE9BQU8sT0FBTyxDQUFDO0FBQ3RCO0FBRU8sTUFBTSxtQkFBbUIsQ0FDOUIsU0FDQSxVQUNBLFFBQ0EsUUFDQSxTQUNxQjtBQUNyQixRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxTQUFRLElBQUk7QUFFbkIsUUFBTSxzQkFBMEIsNEJBQWMsR0FBRyxRQUFRLElBQUksTUFBTSxFQUFFO0FBQ3JFLFFBQU0sb0JBQXdCLDRCQUFjLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRTtBQUUvRCxRQUFNLFNBQW1CO0FBQUEseUJBQ0YsZUFBZSxpQkFBaUIsYUFBYTtBQUFBO0FBQUE7QUFJcEUsU0FBTyxTQUFTLE1BQU0sTUFBTSxFQUN6QixLQUFLLE1BQU0sSUFBSSxFQUNmLE1BQU0sQ0FBQyxVQUFpQjtBQUN2QixnQ0FBUztBQUFBLE1BQ1A7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU8sd0JBQVc7QUFBQSxJQUNwQixHQUFHLE9BQU8sT0FBTztBQUNqQixXQUFPO0FBQUEsRUFDVCxDQUFDO0FBQ0w7IiwKICAibmFtZXMiOiBbImltcG9ydF91dGlscyJdCn0K