@nlabs/reaktor 0.10.2 → 0.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/coverage/block-navigation.js +1 -1
  2. package/coverage/index.html +23 -23
  3. package/coverage/sorter.js +21 -7
  4. package/lib/actions/apps.d.ts +1 -0
  5. package/lib/actions/apps.d.ts.map +1 -0
  6. package/lib/actions/apps.js +218 -17
  7. package/lib/actions/connections.d.ts +1 -0
  8. package/lib/actions/connections.d.ts.map +1 -0
  9. package/lib/actions/connections.js +61 -6
  10. package/lib/actions/content.d.ts +1 -0
  11. package/lib/actions/content.d.ts.map +1 -0
  12. package/lib/actions/content.js +232 -9
  13. package/lib/actions/conversations.d.ts +1 -0
  14. package/lib/actions/conversations.d.ts.map +1 -0
  15. package/lib/actions/conversations.js +321 -19
  16. package/lib/actions/dynamodb.d.ts +1 -0
  17. package/lib/actions/dynamodb.d.ts.map +1 -0
  18. package/lib/actions/dynamodb.js +119 -2
  19. package/lib/actions/email.d.ts +1 -0
  20. package/lib/actions/email.d.ts.map +1 -0
  21. package/lib/actions/email.js +56 -2
  22. package/lib/actions/files.d.ts +1 -0
  23. package/lib/actions/files.d.ts.map +1 -0
  24. package/lib/actions/files.js +226 -5
  25. package/lib/actions/groups.d.ts +1 -0
  26. package/lib/actions/groups.d.ts.map +1 -0
  27. package/lib/actions/groups.js +234 -19
  28. package/lib/actions/images.d.ts +1 -0
  29. package/lib/actions/images.d.ts.map +1 -0
  30. package/lib/actions/images.js +688 -31
  31. package/lib/actions/index.d.ts +2 -0
  32. package/lib/actions/index.d.ts.map +1 -0
  33. package/lib/actions/index.js +29 -2
  34. package/lib/actions/ios.d.ts +1 -0
  35. package/lib/actions/ios.d.ts.map +1 -0
  36. package/lib/actions/ios.js +228 -9
  37. package/lib/actions/locations.d.ts +1 -0
  38. package/lib/actions/locations.d.ts.map +1 -0
  39. package/lib/actions/locations.js +111 -7
  40. package/lib/actions/messages.d.ts +1 -0
  41. package/lib/actions/messages.d.ts.map +1 -0
  42. package/lib/actions/messages.js +155 -21
  43. package/lib/actions/notifications.d.ts +1 -0
  44. package/lib/actions/notifications.d.ts.map +1 -0
  45. package/lib/actions/notifications.js +37 -2
  46. package/lib/actions/payments.d.ts +1 -0
  47. package/lib/actions/payments.d.ts.map +1 -0
  48. package/lib/actions/payments.js +428 -11
  49. package/lib/actions/posts.d.ts +1 -0
  50. package/lib/actions/posts.d.ts.map +1 -0
  51. package/lib/actions/posts.js +540 -75
  52. package/lib/actions/profiles.d.ts +1 -0
  53. package/lib/actions/profiles.d.ts.map +1 -0
  54. package/lib/actions/profiles.js +58 -8
  55. package/lib/actions/reactions.d.ts +1 -0
  56. package/lib/actions/reactions.d.ts.map +1 -0
  57. package/lib/actions/reactions.js +276 -25
  58. package/lib/actions/s3.d.ts +1 -0
  59. package/lib/actions/s3.d.ts.map +1 -0
  60. package/lib/actions/s3.js +102 -2
  61. package/lib/actions/search.d.ts +1 -0
  62. package/lib/actions/search.d.ts.map +1 -0
  63. package/lib/actions/search.js +81 -5
  64. package/lib/actions/sms.d.ts +1 -0
  65. package/lib/actions/sms.d.ts.map +1 -0
  66. package/lib/actions/sms.js +52 -2
  67. package/lib/actions/statistics.d.ts +1 -0
  68. package/lib/actions/statistics.d.ts.map +1 -0
  69. package/lib/actions/statistics.js +41 -6
  70. package/lib/actions/subscriptions.d.ts +1 -0
  71. package/lib/actions/subscriptions.d.ts.map +1 -0
  72. package/lib/actions/subscriptions.js +196 -6
  73. package/lib/actions/tags.d.ts +1 -0
  74. package/lib/actions/tags.d.ts.map +1 -0
  75. package/lib/actions/tags.js +258 -19
  76. package/lib/actions/users.d.ts +1 -0
  77. package/lib/actions/users.d.ts.map +1 -0
  78. package/lib/actions/users.js +781 -66
  79. package/lib/actions/videos.d.ts +26 -0
  80. package/lib/actions/videos.d.ts.map +1 -0
  81. package/lib/actions/videos.js +423 -0
  82. package/lib/actions/websockets.d.ts +1 -0
  83. package/lib/actions/websockets.d.ts.map +1 -0
  84. package/lib/actions/websockets.js +148 -14
  85. package/lib/adapters/arangoAdapter.d.ts +1 -0
  86. package/lib/adapters/arangoAdapter.d.ts.map +1 -0
  87. package/lib/adapters/arangoAdapter.js +70 -2
  88. package/lib/adapters/contentAdapter.d.ts +1 -0
  89. package/lib/adapters/contentAdapter.d.ts.map +1 -0
  90. package/lib/adapters/contentAdapter.js +108 -2
  91. package/lib/adapters/fileAdapter.d.ts +1 -0
  92. package/lib/adapters/fileAdapter.d.ts.map +1 -0
  93. package/lib/adapters/fileAdapter.js +119 -2
  94. package/lib/adapters/imageAdapter.d.ts +1 -0
  95. package/lib/adapters/imageAdapter.d.ts.map +1 -0
  96. package/lib/adapters/imageAdapter.js +112 -2
  97. package/lib/adapters/index.d.ts +1 -0
  98. package/lib/adapters/index.d.ts.map +1 -0
  99. package/lib/adapters/index.js +11 -2
  100. package/lib/adapters/messageAdapter.d.ts +1 -0
  101. package/lib/adapters/messageAdapter.d.ts.map +1 -0
  102. package/lib/adapters/messageAdapter.js +82 -2
  103. package/lib/adapters/postAdapter.d.ts +1 -0
  104. package/lib/adapters/postAdapter.d.ts.map +1 -0
  105. package/lib/adapters/postAdapter.js +117 -2
  106. package/lib/adapters/reaktorAdapter.d.ts +1 -0
  107. package/lib/adapters/reaktorAdapter.d.ts.map +1 -0
  108. package/lib/adapters/reaktorAdapter.js +59 -2
  109. package/lib/adapters/tagAdapter.d.ts +1 -0
  110. package/lib/adapters/tagAdapter.d.ts.map +1 -0
  111. package/lib/adapters/tagAdapter.js +99 -2
  112. package/lib/adapters/userAdapter.d.ts +1 -0
  113. package/lib/adapters/userAdapter.d.ts.map +1 -0
  114. package/lib/adapters/userAdapter.js +264 -2
  115. package/lib/config.d.ts +1 -0
  116. package/lib/config.d.ts.map +1 -0
  117. package/lib/config.js +161 -2
  118. package/lib/handlers/graphqlHandler.d.ts +1 -0
  119. package/lib/handlers/graphqlHandler.d.ts.map +1 -0
  120. package/lib/handlers/graphqlHandler.js +118 -2
  121. package/lib/index.d.ts +1 -0
  122. package/lib/index.d.ts.map +1 -0
  123. package/lib/index.js +18 -2
  124. package/lib/lambdas/actions/websockets.d.ts +1 -0
  125. package/lib/lambdas/actions/websockets.d.ts.map +1 -0
  126. package/lib/lambdas/actions/websockets.js +89 -14
  127. package/lib/lambdas/authorizer.d.ts +1 -0
  128. package/lib/lambdas/authorizer.d.ts.map +1 -0
  129. package/lib/lambdas/authorizer.js +41 -2
  130. package/lib/lambdas/connection.d.ts +1 -0
  131. package/lib/lambdas/connection.d.ts.map +1 -0
  132. package/lib/lambdas/connection.js +85 -2
  133. package/lib/lambdas/utils/message.d.ts +1 -0
  134. package/lib/lambdas/utils/message.d.ts.map +1 -0
  135. package/lib/lambdas/utils/message.js +20 -2
  136. package/lib/lambdas/utils/websocket.d.ts +1 -0
  137. package/lib/lambdas/utils/websocket.d.ts.map +1 -0
  138. package/lib/lambdas/utils/websocket.js +78 -2
  139. package/lib/mocks/conversation.d.ts +1 -0
  140. package/lib/mocks/conversation.d.ts.map +1 -0
  141. package/lib/mocks/conversation.js +10 -2
  142. package/lib/mocks/file.d.ts +1 -0
  143. package/lib/mocks/file.d.ts.map +1 -0
  144. package/lib/mocks/file.js +13 -2
  145. package/lib/mocks/group.d.ts +1 -0
  146. package/lib/mocks/group.d.ts.map +1 -0
  147. package/lib/mocks/group.js +20 -2
  148. package/lib/mocks/image.d.ts +1 -0
  149. package/lib/mocks/image.d.ts.map +1 -0
  150. package/lib/mocks/image.js +17 -2
  151. package/lib/mocks/post.d.ts +1 -0
  152. package/lib/mocks/post.d.ts.map +1 -0
  153. package/lib/mocks/post.js +28 -2
  154. package/lib/mocks/tag.d.ts +1 -0
  155. package/lib/mocks/tag.d.ts.map +1 -0
  156. package/lib/mocks/tag.js +12 -2
  157. package/lib/mocks/user.d.ts +1 -0
  158. package/lib/mocks/user.d.ts.map +1 -0
  159. package/lib/mocks/user.js +61 -2
  160. package/lib/mocks/video.d.ts +4 -0
  161. package/lib/mocks/video.d.ts.map +1 -0
  162. package/lib/mocks/video.js +17 -0
  163. package/lib/mutations/content.d.ts +1 -0
  164. package/lib/mutations/content.d.ts.map +1 -0
  165. package/lib/mutations/content.js +27 -2
  166. package/lib/mutations/index.d.ts +1 -0
  167. package/lib/mutations/index.d.ts.map +1 -0
  168. package/lib/mutations/index.js +29 -2
  169. package/lib/mutations/locations.d.ts +1 -0
  170. package/lib/mutations/locations.d.ts.map +1 -0
  171. package/lib/mutations/locations.js +22 -2
  172. package/lib/mutations/messages.d.ts +1 -0
  173. package/lib/mutations/messages.d.ts.map +1 -0
  174. package/lib/mutations/messages.js +75 -2
  175. package/lib/mutations/posts.d.ts +1 -0
  176. package/lib/mutations/posts.d.ts.map +1 -0
  177. package/lib/mutations/posts.js +31 -2
  178. package/lib/mutations/profiles.d.ts +1 -0
  179. package/lib/mutations/profiles.d.ts.map +1 -0
  180. package/lib/mutations/profiles.js +78 -2
  181. package/lib/mutations/reactions.d.ts +1 -0
  182. package/lib/mutations/reactions.d.ts.map +1 -0
  183. package/lib/mutations/reactions.js +29 -2
  184. package/lib/mutations/statistics.d.ts +1 -0
  185. package/lib/mutations/statistics.d.ts.map +1 -0
  186. package/lib/mutations/statistics.js +17 -2
  187. package/lib/mutations/subscriptions.d.ts +1 -0
  188. package/lib/mutations/subscriptions.d.ts.map +1 -0
  189. package/lib/mutations/subscriptions.js +38 -2
  190. package/lib/mutations/tags.d.ts +1 -0
  191. package/lib/mutations/tags.d.ts.map +1 -0
  192. package/lib/mutations/tags.js +109 -2
  193. package/lib/mutations/users.d.ts +1 -0
  194. package/lib/mutations/users.d.ts.map +1 -0
  195. package/lib/mutations/users.js +129 -2
  196. package/lib/objectTypes/app.d.ts +1 -0
  197. package/lib/objectTypes/app.d.ts.map +1 -0
  198. package/lib/objectTypes/app.js +147 -2
  199. package/lib/objectTypes/bankAccount.d.ts +1 -0
  200. package/lib/objectTypes/bankAccount.d.ts.map +1 -0
  201. package/lib/objectTypes/bankAccount.js +54 -2
  202. package/lib/objectTypes/connection.d.ts +1 -0
  203. package/lib/objectTypes/connection.d.ts.map +1 -0
  204. package/lib/objectTypes/connection.js +26 -2
  205. package/lib/objectTypes/content.d.ts +1 -0
  206. package/lib/objectTypes/content.d.ts.map +1 -0
  207. package/lib/objectTypes/content.js +79 -2
  208. package/lib/objectTypes/conversation.d.ts +1 -0
  209. package/lib/objectTypes/conversation.d.ts.map +1 -0
  210. package/lib/objectTypes/conversation.js +53 -2
  211. package/lib/objectTypes/creditCard.d.ts +1 -0
  212. package/lib/objectTypes/creditCard.d.ts.map +1 -0
  213. package/lib/objectTypes/creditCard.js +64 -2
  214. package/lib/objectTypes/document.d.ts +1 -0
  215. package/lib/objectTypes/document.d.ts.map +1 -0
  216. package/lib/objectTypes/document.js +21 -2
  217. package/lib/objectTypes/error.d.ts +1 -0
  218. package/lib/objectTypes/error.d.ts.map +1 -0
  219. package/lib/objectTypes/error.js +24 -2
  220. package/lib/objectTypes/external.d.ts +1 -0
  221. package/lib/objectTypes/external.d.ts.map +1 -0
  222. package/lib/objectTypes/external.js +52 -2
  223. package/lib/objectTypes/file.d.ts +1 -0
  224. package/lib/objectTypes/file.d.ts.map +1 -0
  225. package/lib/objectTypes/file.js +76 -2
  226. package/lib/objectTypes/filter.d.ts +1 -0
  227. package/lib/objectTypes/filter.d.ts.map +1 -0
  228. package/lib/objectTypes/filter.js +21 -2
  229. package/lib/objectTypes/group.d.ts +1 -0
  230. package/lib/objectTypes/group.d.ts.map +1 -0
  231. package/lib/objectTypes/group.js +97 -2
  232. package/lib/objectTypes/iapSubscription.d.ts +1 -0
  233. package/lib/objectTypes/iapSubscription.d.ts.map +1 -0
  234. package/lib/objectTypes/iapSubscription.js +18 -2
  235. package/lib/objectTypes/image.d.ts +1 -0
  236. package/lib/objectTypes/image.d.ts.map +1 -0
  237. package/lib/objectTypes/image.js +105 -2
  238. package/lib/objectTypes/index.d.ts +1 -0
  239. package/lib/objectTypes/index.d.ts.map +1 -0
  240. package/lib/objectTypes/index.js +28 -2
  241. package/lib/objectTypes/location.d.ts +1 -0
  242. package/lib/objectTypes/location.d.ts.map +1 -0
  243. package/lib/objectTypes/location.js +85 -2
  244. package/lib/objectTypes/message.d.ts +1 -0
  245. package/lib/objectTypes/message.d.ts.map +1 -0
  246. package/lib/objectTypes/message.js +72 -2
  247. package/lib/objectTypes/passcode.d.ts +1 -0
  248. package/lib/objectTypes/passcode.d.ts.map +1 -0
  249. package/lib/objectTypes/passcode.js +20 -2
  250. package/lib/objectTypes/plan.d.ts +1 -0
  251. package/lib/objectTypes/plan.d.ts.map +1 -0
  252. package/lib/objectTypes/plan.js +71 -2
  253. package/lib/objectTypes/post.d.ts +1 -0
  254. package/lib/objectTypes/post.d.ts.map +1 -0
  255. package/lib/objectTypes/post.js +101 -2
  256. package/lib/objectTypes/profile.d.ts +1 -0
  257. package/lib/objectTypes/profile.d.ts.map +1 -0
  258. package/lib/objectTypes/profile.js +68 -2
  259. package/lib/objectTypes/reaction.d.ts +1 -0
  260. package/lib/objectTypes/reaction.d.ts.map +1 -0
  261. package/lib/objectTypes/reaction.js +37 -2
  262. package/lib/objectTypes/relation.d.ts +1 -0
  263. package/lib/objectTypes/relation.d.ts.map +1 -0
  264. package/lib/objectTypes/relation.js +27 -2
  265. package/lib/objectTypes/search.d.ts +1 -0
  266. package/lib/objectTypes/search.d.ts.map +1 -0
  267. package/lib/objectTypes/search.js +50 -2
  268. package/lib/objectTypes/statistics.d.ts +1 -0
  269. package/lib/objectTypes/statistics.d.ts.map +1 -0
  270. package/lib/objectTypes/statistics.js +17 -2
  271. package/lib/objectTypes/subscription.d.ts +1 -0
  272. package/lib/objectTypes/subscription.d.ts.map +1 -0
  273. package/lib/objectTypes/subscription.js +102 -2
  274. package/lib/objectTypes/tag.d.ts +1 -0
  275. package/lib/objectTypes/tag.d.ts.map +1 -0
  276. package/lib/objectTypes/tag.js +41 -2
  277. package/lib/objectTypes/user.d.ts +1 -0
  278. package/lib/objectTypes/user.d.ts.map +1 -0
  279. package/lib/objectTypes/user.js +111 -2
  280. package/lib/queries/content.d.ts +1 -0
  281. package/lib/queries/content.d.ts.map +1 -0
  282. package/lib/queries/content.js +50 -2
  283. package/lib/queries/index.d.ts +1 -0
  284. package/lib/queries/index.d.ts.map +1 -0
  285. package/lib/queries/index.js +27 -2
  286. package/lib/queries/locations.d.ts +1 -0
  287. package/lib/queries/locations.d.ts.map +1 -0
  288. package/lib/queries/locations.js +23 -2
  289. package/lib/queries/messages.d.ts +1 -0
  290. package/lib/queries/messages.d.ts.map +1 -0
  291. package/lib/queries/messages.js +35 -2
  292. package/lib/queries/posts.d.ts +1 -0
  293. package/lib/queries/posts.d.ts.map +1 -0
  294. package/lib/queries/posts.js +154 -2
  295. package/lib/queries/reactions.d.ts +1 -0
  296. package/lib/queries/reactions.d.ts.map +1 -0
  297. package/lib/queries/reactions.js +34 -2
  298. package/lib/queries/statistics.d.ts +1 -0
  299. package/lib/queries/statistics.d.ts.map +1 -0
  300. package/lib/queries/statistics.js +17 -2
  301. package/lib/queries/subscriptions.d.ts +1 -0
  302. package/lib/queries/subscriptions.d.ts.map +1 -0
  303. package/lib/queries/subscriptions.js +21 -2
  304. package/lib/queries/tags.d.ts +1 -0
  305. package/lib/queries/tags.d.ts.map +1 -0
  306. package/lib/queries/tags.js +56 -2
  307. package/lib/queries/users.d.ts +1 -0
  308. package/lib/queries/users.d.ts.map +1 -0
  309. package/lib/queries/users.js +39 -2
  310. package/lib/templates/email/layout.d.ts +1 -0
  311. package/lib/templates/email/layout.d.ts.map +1 -0
  312. package/lib/templates/email/layout.js +4 -3
  313. package/lib/templates/email/passwordForgot.d.ts +1 -0
  314. package/lib/templates/email/passwordForgot.d.ts.map +1 -0
  315. package/lib/templates/email/passwordForgot.js +4 -3
  316. package/lib/templates/email/passwordRecovery.d.ts +1 -0
  317. package/lib/templates/email/passwordRecovery.d.ts.map +1 -0
  318. package/lib/templates/email/passwordRecovery.js +4 -3
  319. package/lib/templates/email/verifyEmail.d.ts +1 -0
  320. package/lib/templates/email/verifyEmail.d.ts.map +1 -0
  321. package/lib/templates/email/verifyEmail.js +4 -3
  322. package/lib/templates/email/welcome.d.ts +1 -0
  323. package/lib/templates/email/welcome.d.ts.map +1 -0
  324. package/lib/templates/email/welcome.js +4 -3
  325. package/lib/templates/sms/passwordForgot.d.ts +1 -0
  326. package/lib/templates/sms/passwordForgot.d.ts.map +1 -0
  327. package/lib/templates/sms/passwordForgot.js +3 -2
  328. package/lib/templates/sms/passwordRecovery.d.ts +1 -0
  329. package/lib/templates/sms/passwordRecovery.d.ts.map +1 -0
  330. package/lib/templates/sms/passwordRecovery.js +3 -2
  331. package/lib/templates/sms/verifyEmail.d.ts +1 -0
  332. package/lib/templates/sms/verifyEmail.d.ts.map +1 -0
  333. package/lib/templates/sms/verifyEmail.js +3 -2
  334. package/lib/templates/sms/verifyPhone.d.ts +1 -0
  335. package/lib/templates/sms/verifyPhone.d.ts.map +1 -0
  336. package/lib/templates/sms/verifyPhone.js +3 -2
  337. package/lib/templates/sms/welcome.d.ts +1 -0
  338. package/lib/templates/sms/welcome.d.ts.map +1 -0
  339. package/lib/templates/sms/welcome.js +3 -2
  340. package/lib/types/apps.types.d.ts +1 -0
  341. package/lib/types/apps.types.d.ts.map +1 -0
  342. package/lib/types/apps.types.js +10 -2
  343. package/lib/types/arangodb.types.d.ts +2 -1
  344. package/lib/types/arangodb.types.d.ts.map +1 -0
  345. package/lib/types/arangodb.types.js +6 -1
  346. package/lib/types/auth.types.d.ts +1 -0
  347. package/lib/types/auth.types.d.ts.map +1 -0
  348. package/lib/types/auth.types.js +6 -1
  349. package/lib/types/connections.types.d.ts +1 -0
  350. package/lib/types/connections.types.d.ts.map +1 -0
  351. package/lib/types/connections.types.js +6 -1
  352. package/lib/types/content.types.d.ts +1 -0
  353. package/lib/types/content.types.d.ts.map +1 -0
  354. package/lib/types/content.types.js +6 -1
  355. package/lib/types/conversations.types.d.ts +1 -0
  356. package/lib/types/conversations.types.d.ts.map +1 -0
  357. package/lib/types/conversations.types.js +6 -1
  358. package/lib/types/email.types.d.ts +1 -0
  359. package/lib/types/email.types.d.ts.map +1 -0
  360. package/lib/types/email.types.js +6 -1
  361. package/lib/types/error.types.d.ts +1 -0
  362. package/lib/types/error.types.d.ts.map +1 -0
  363. package/lib/types/error.types.js +20 -2
  364. package/lib/types/files.types.d.ts +1 -0
  365. package/lib/types/files.types.d.ts.map +1 -0
  366. package/lib/types/files.types.js +6 -1
  367. package/lib/types/google.types.d.ts +1 -0
  368. package/lib/types/google.types.d.ts.map +1 -0
  369. package/lib/types/google.types.js +6 -1
  370. package/lib/types/groups.types.d.ts +1 -0
  371. package/lib/types/groups.types.d.ts.map +1 -0
  372. package/lib/types/groups.types.js +6 -1
  373. package/lib/types/images.types.d.ts +1 -0
  374. package/lib/types/images.types.d.ts.map +1 -0
  375. package/lib/types/images.types.js +6 -1
  376. package/lib/types/index.d.ts +2 -0
  377. package/lib/types/index.d.ts.map +1 -0
  378. package/lib/types/index.js +28 -2
  379. package/lib/types/locations.types.d.ts +1 -0
  380. package/lib/types/locations.types.d.ts.map +1 -0
  381. package/lib/types/locations.types.js +6 -1
  382. package/lib/types/messages.types.d.ts +1 -0
  383. package/lib/types/messages.types.d.ts.map +1 -0
  384. package/lib/types/messages.types.js +6 -1
  385. package/lib/types/notifications.types.d.ts +1 -0
  386. package/lib/types/notifications.types.d.ts.map +1 -0
  387. package/lib/types/notifications.types.js +6 -1
  388. package/lib/types/payments.types.d.ts +1 -0
  389. package/lib/types/payments.types.d.ts.map +1 -0
  390. package/lib/types/payments.types.js +6 -1
  391. package/lib/types/posts.types.d.ts +1 -0
  392. package/lib/types/posts.types.d.ts.map +1 -0
  393. package/lib/types/posts.types.js +6 -1
  394. package/lib/types/profiles.types.d.ts +1 -0
  395. package/lib/types/profiles.types.d.ts.map +1 -0
  396. package/lib/types/profiles.types.js +3 -1
  397. package/lib/types/statistics.types.d.ts +1 -0
  398. package/lib/types/statistics.types.d.ts.map +1 -0
  399. package/lib/types/statistics.types.js +3 -1
  400. package/lib/types/tags.types.d.ts +1 -0
  401. package/lib/types/tags.types.d.ts.map +1 -0
  402. package/lib/types/tags.types.js +6 -1
  403. package/lib/types/users.types.d.ts +1 -0
  404. package/lib/types/users.types.d.ts.map +1 -0
  405. package/lib/types/users.types.js +6 -1
  406. package/lib/types/videos.types.d.ts +47 -0
  407. package/lib/types/videos.types.d.ts.map +1 -0
  408. package/lib/types/videos.types.js +6 -0
  409. package/lib/types/websockets.types.d.ts +1 -0
  410. package/lib/types/websockets.types.d.ts.map +1 -0
  411. package/lib/types/websockets.types.js +6 -1
  412. package/lib/utils/adapterUtils.d.ts +1 -0
  413. package/lib/utils/adapterUtils.d.ts.map +1 -0
  414. package/lib/utils/adapterUtils.js +23 -2
  415. package/lib/utils/analyticsUtils.d.ts +1 -0
  416. package/lib/utils/analyticsUtils.d.ts.map +1 -0
  417. package/lib/utils/analyticsUtils.js +45 -2
  418. package/lib/utils/arangodbUtils.d.ts +1 -0
  419. package/lib/utils/arangodbUtils.d.ts.map +1 -0
  420. package/lib/utils/arangodbUtils.js +128 -5
  421. package/lib/utils/authUtils.d.ts +1 -0
  422. package/lib/utils/authUtils.d.ts.map +1 -0
  423. package/lib/utils/authUtils.js +54 -2
  424. package/lib/utils/contextUtils.d.ts +1 -0
  425. package/lib/utils/contextUtils.d.ts.map +1 -0
  426. package/lib/utils/contextUtils.js +10 -2
  427. package/lib/utils/dbI18n.d.ts +1 -0
  428. package/lib/utils/dbI18n.d.ts.map +1 -0
  429. package/lib/utils/dbI18n.example.d.ts +1 -0
  430. package/lib/utils/dbI18n.example.d.ts.map +1 -0
  431. package/lib/utils/dbI18n.example.js +92 -5
  432. package/lib/utils/dbI18n.js +28 -2
  433. package/lib/utils/googleTranslate.d.ts +1 -0
  434. package/lib/utils/googleTranslate.d.ts.map +1 -0
  435. package/lib/utils/googleTranslate.js +70 -2
  436. package/lib/utils/graphqlUtils.d.ts +1 -0
  437. package/lib/utils/graphqlUtils.d.ts.map +1 -0
  438. package/lib/utils/graphqlUtils.js +11 -2
  439. package/lib/utils/index.d.ts +1 -0
  440. package/lib/utils/index.d.ts.map +1 -0
  441. package/lib/utils/index.js +19 -2
  442. package/lib/utils/languageDetection.d.ts +1 -0
  443. package/lib/utils/languageDetection.d.ts.map +1 -0
  444. package/lib/utils/languageDetection.js +120 -2
  445. package/lib/utils/localeUtils.d.ts +1 -0
  446. package/lib/utils/localeUtils.d.ts.map +1 -0
  447. package/lib/utils/localeUtils.example.d.ts +1 -0
  448. package/lib/utils/localeUtils.example.d.ts.map +1 -0
  449. package/lib/utils/localeUtils.example.js +124 -2
  450. package/lib/utils/localeUtils.js +71 -2
  451. package/lib/utils/middlewareUtils.d.ts +1 -0
  452. package/lib/utils/middlewareUtils.d.ts.map +1 -0
  453. package/lib/utils/middlewareUtils.js +10 -2
  454. package/lib/utils/sessionUtils.d.ts +1 -0
  455. package/lib/utils/sessionUtils.d.ts.map +1 -0
  456. package/lib/utils/sessionUtils.js +26 -2
  457. package/lib/utils/stripeUtils.d.ts +2 -1
  458. package/lib/utils/stripeUtils.d.ts.map +1 -0
  459. package/lib/utils/stripeUtils.js +12 -2
  460. package/lib/utils/templateUtils.d.ts +1 -0
  461. package/lib/utils/templateUtils.d.ts.map +1 -0
  462. package/lib/utils/templateUtils.js +11 -2
  463. package/lib/utils/testUtils.d.ts +1 -0
  464. package/lib/utils/testUtils.d.ts.map +1 -0
  465. package/lib/utils/testUtils.js +292 -2
  466. package/lib/utils/translationQueue.d.ts +1 -0
  467. package/lib/utils/translationQueue.d.ts.map +1 -0
  468. package/lib/utils/translationQueue.example.d.ts +1 -0
  469. package/lib/utils/translationQueue.example.d.ts.map +1 -0
  470. package/lib/utils/translationQueue.example.js +340 -2
  471. package/lib/utils/translationQueue.js +113 -2
  472. package/package.json +47 -29
@@ -1,2 +1,264 @@
1
- import{z as e}from"zod";import{parseNum as d}from"@nlabs/utils/parsers/numbers";import{parseArangoId as W,parseChar as X,parseEmail as Y,parseId as ee,parsePassword as re,parsePhone as te,parseString as B,parseVarChar as n}from"@nlabs/utils/parsers/strings";import{removeEmptyKeys as ie}from"../utils/adapterUtils.js";import{parseDocument as ne}from"./arangoAdapter.js";import{parseReaktorDate as H,parseReaktorItemId as oe,parseReaktorName as se,parseReaktorType as ae}from"./reaktorAdapter.js";import{parseTag as de}from"./tagAdapter.js";class a extends Error{constructor(o,s){super(o);this.field=s;this.name="UserValidationError"}}const pe=e.object({_id:e.string().optional(),_key:e.string().optional(),active:e.boolean().optional(),bankId:e.string().max(160).optional(),city:e.string().max(160).optional(),country:e.string().length(2).optional(),currency:e.string().length(3).optional(),deviceToken:e.string().max(160).optional(),dob:e.number().optional(),email:e.string().email().optional(),first:e.string().max(160).optional(),gender:e.string().length(1).optional(),id:e.string().optional(),imageId:e.string().optional(),last:e.string().max(160).optional(),lastActive:e.number().optional(),locale:e.string().max(5).optional(),mailingList:e.boolean().optional(),name:e.string().max(160).optional(),password:e.string().max(160).optional(),phone:e.string().max(20).optional(),salt:e.string().max(160).optional(),state:e.string().length(2).optional(),street1:e.string().max(160).optional(),street2:e.string().max(160).optional(),stripeAccountId:e.string().max(160).optional(),stripeCustomerId:e.string().max(160).optional(),tags:e.array(e.any()).optional(),timezone:e.string().max(160).optional(),type:e.string().max(160).optional(),userAccess:e.number().optional(),userId:e.string().optional(),username:e.string().max(160).optional(),verifiedEmail:e.boolean().optional(),verifiedEmailCode:e.number().optional(),verifiedEmailExpires:e.number().optional(),verifiedPhone:e.boolean().optional(),verifiedPhoneExpires:e.number().optional(),verifiedSmsCode:e.number().optional(),zip:e.string().max(20).optional()}).passthrough(),le=r=>{if(!r)return;const t=r.toUpperCase();if(!/^[A-Z]{2}$/.test(t))throw new a("Country must be a 2-letter ISO code","country");return t},me=r=>{if(!r)return;const t=r.toUpperCase();if(!/^[A-Z]{2}$/.test(t))throw new a("State must be a 2-letter code","state");return t},ce=r=>{if(!r)return;const t=r.toUpperCase();if(!/^[MF]$/.test(t))throw new a("Gender must be M or F","gender");return t},J=new Map,Ee=r=>{try{return pe.parse(r)}catch(t){if(t instanceof e.ZodError){const o=t.issues.map(s=>`${s.path.join(".")}: ${s.message}`).join(", ");throw new a(`User validation failed: ${o}`)}throw t}},be=r=>{const{password:t,salt:o,verifiedEmailCode:s,verifiedSmsCode:m,...p}=r;return p},fe=r=>{try{return ue(r)}catch(t){throw t instanceof a?t:new a(`User parsing failed: ${t instanceof Error?t.message:"Unknown error"}`)}},ue=r=>{const{_id:t,_key:o,active:s,bankId:m,city:p,country:u,currency:g,deviceToken:y,dob:v,email:h,first:x,gender:I,id:U,imageId:E,last:b,lastActive:C,locale:k,mailingList:w,name:T,password:_,phone:A,salt:S,state:z,street1:P,street2:$,stripeAccountId:j,stripeCustomerId:L,tags:R,timezone:M,type:V,userAccess:c,userId:l,username:Z,verifiedEmail:D,verifiedEmailCode:F,verifiedEmailExpires:G,verifiedPhone:N,verifiedPhoneExpires:O,verifiedSmsCode:K,zip:q}=r,Q={...ne(r),...s!==void 0&&{active:!!s},...m&&{bankId:n(m,160)},...p&&{city:n(p,160)},...u&&{country:le(u)},...g&&{currency:X(g,3).toUpperCase()},...y&&{deviceToken:n(y,160)},...v!==void 0&&{dob:H(v)},...h&&{email:Y(h)},...x&&{first:n(x,160)},...I&&{gender:ce(I)},...(U||t||o||l)&&{id:W(U||t||`users/${o||l}`)},...E&&{imageId:oe(E)},...b&&{last:n(b,160)},...C!==void 0&&{lastActive:H(C)},...k&&{locale:B(k,5)},...w!==void 0&&{mailingList:!!w},...T&&{name:se(T)},..._&&{password:re(_)},...A&&{phone:te(A)},...S&&{salt:n(S,160)},...z&&{state:me(z)},...P&&{street1:n(P,160)},...$&&{street2:n($,160)},...j&&{stripeAccountId:n(j,160)},...L&&{stripeCustomerId:n(L,160)},...R?.length&&{tags:R.filter(f=>!!f).map(f=>de(f))},...M&&{timezone:B(M,160)},...V&&{type:ae(V)},...c!==void 0&&{userAccess:c?d(c):0},...(l||o)&&{userId:ee(o||l||"")},...Z&&{username:n(Z,160)},...D!==void 0&&{verifiedEmail:!!D},...F!==void 0&&{verifiedEmailCode:d(F,10)},...G!==void 0&&{verifiedEmailExpires:d(G,10)},...N!==void 0&&{verifiedPhone:!!N},...O!==void 0&&{verifiedPhoneExpires:d(O,10)},...K!==void 0&&{verifiedSmsCode:d(K,10)},...q&&{zip:n(q,20)}},i=ie(Q);return r._id?(i.id=r._id,i._id=r._id):r.id&&!i.id&&(i.id=r.id,i._id=r.id),r._key?(i.userId=r._key,i._key=r._key):r.userId&&!i.userId&&(i.userId=r.userId,i._key=r.userId),r.userId&&!i._key&&(i._key=r.userId),r.id&&!i._id&&(i._id=r.id),i},Ce=()=>{J.clear()},ke=()=>J.size;const we=r=>fe(r);export{a as UserValidationError,Ce as clearUserCache,be as formatUserOutput,ke as getUserCacheSize,fe as parseUser,we as parseUserLegacy,J as userCache,Ee as validateUserInput};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL3VzZXJBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJcbmltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtwYXJzZU51bX0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvbnVtYmVycyc7XG5pbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlQ2hhciwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VQYXNzd29yZCwgcGFyc2VQaG9uZSwgcGFyc2VTdHJpbmcsIHBhcnNlVmFyQ2hhcn0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQgdHlwZSB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzLnR5cGVzLmpzJztcbmltcG9ydCB7cmVtb3ZlRW1wdHlLZXlzfSBmcm9tICcuLi91dGlscy9hZGFwdGVyVXRpbHMuanMnO1xuaW1wb3J0IHtwYXJzZURvY3VtZW50fSBmcm9tICcuL2FyYW5nb0FkYXB0ZXIuanMnO1xuaW1wb3J0IHtwYXJzZVJlYWt0b3JEYXRlLCBwYXJzZVJlYWt0b3JJdGVtSWQsIHBhcnNlUmVha3Rvck5hbWUsIHBhcnNlUmVha3RvclR5cGV9IGZyb20gJy4vcmVha3RvckFkYXB0ZXIuanMnO1xuaW1wb3J0IHtwYXJzZVRhZ30gZnJvbSAnLi90YWdBZGFwdGVyLmpzJztcblxuZXhwb3J0IGNsYXNzIFVzZXJWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1VzZXJWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbmNvbnN0IFVzZXJJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYWN0aXZlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBiYW5rSWQ6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgY2l0eTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBjb3VudHJ5OiB6LnN0cmluZygpLmxlbmd0aCgyKS5vcHRpb25hbCgpLFxuICBjdXJyZW5jeTogei5zdHJpbmcoKS5sZW5ndGgoMykub3B0aW9uYWwoKSxcbiAgZGV2aWNlVG9rZW46IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgZG9iOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGVtYWlsOiB6LnN0cmluZygpLmVtYWlsKCkub3B0aW9uYWwoKSxcbiAgZmlyc3Q6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgZ2VuZGVyOiB6LnN0cmluZygpLmxlbmd0aCgxKS5vcHRpb25hbCgpLFxuICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpbWFnZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxhc3Q6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgbGFzdEFjdGl2ZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBsb2NhbGU6IHouc3RyaW5nKCkubWF4KDUpLm9wdGlvbmFsKCksXG4gIG1haWxpbmdMaXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBuYW1lOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHBhc3N3b3JkOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHBob25lOiB6LnN0cmluZygpLm1heCgyMCkub3B0aW9uYWwoKSxcbiAgc2FsdDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdGF0ZTogei5zdHJpbmcoKS5sZW5ndGgoMikub3B0aW9uYWwoKSxcbiAgc3RyZWV0MTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdHJlZXQyOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHN0cmlwZUFjY291bnRJZDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdHJpcGVDdXN0b21lcklkOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHRhZ3M6IHouYXJyYXkoei5hbnkoKSkub3B0aW9uYWwoKSxcbiAgdGltZXpvbmU6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgdHlwZTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICB1c2VyQWNjZXNzOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHVzZXJJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB1c2VybmFtZTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZEVtYWlsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZEVtYWlsQ29kZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZEVtYWlsRXhwaXJlczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZFBob25lOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZFBob25lRXhwaXJlczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZFNtc0NvZGU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgemlwOiB6LnN0cmluZygpLm1heCgyMCkub3B0aW9uYWwoKVxufSkucGFzc3Rocm91Z2goKTtcblxuY29uc3QgdmFsaWRhdGVDb3VudHJ5ID0gKGNvdW50cnk/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZighY291bnRyeSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgdXBwZXIgPSBjb3VudHJ5LnRvVXBwZXJDYXNlKCk7XG4gIGlmKCEvXltBLVpdezJ9JC8udGVzdCh1cHBlcikpIHtcbiAgICB0aHJvdyBuZXcgVXNlclZhbGlkYXRpb25FcnJvcignQ291bnRyeSBtdXN0IGJlIGEgMi1sZXR0ZXIgSVNPIGNvZGUnLCAnY291bnRyeScpO1xuICB9XG4gIHJldHVybiB1cHBlcjtcbn07XG5cbmNvbnN0IHZhbGlkYXRlU3RhdGUgPSAoc3RhdGU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZighc3RhdGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHVwcGVyID0gc3RhdGUudG9VcHBlckNhc2UoKTtcbiAgaWYoIS9eW0EtWl17Mn0kLy50ZXN0KHVwcGVyKSkge1xuICAgIHRocm93IG5ldyBVc2VyVmFsaWRhdGlvbkVycm9yKCdTdGF0ZSBtdXN0IGJlIGEgMi1sZXR0ZXIgY29kZScsICdzdGF0ZScpO1xuICB9XG4gIHJldHVybiB1cHBlcjtcbn07XG5cbmNvbnN0IHZhbGlkYXRlR2VuZGVyID0gKGdlbmRlcj86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmKCFnZW5kZXIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHVwcGVyID0gZ2VuZGVyLnRvVXBwZXJDYXNlKCk7XG4gIGlmKCEvXltNRl0kLy50ZXN0KHVwcGVyKSkge1xuICAgIHRocm93IG5ldyBVc2VyVmFsaWRhdGlvbkVycm9yKCdHZW5kZXIgbXVzdCBiZSBNIG9yIEYnLCAnZ2VuZGVyJyk7XG4gIH1cbiAgcmV0dXJuIHVwcGVyO1xufTtcblxuY29uc3QgdXNlckNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFVzZXJUeXBlPigpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVVc2VySW5wdXQgPSAodXNlcjogdW5rbm93bik6IFVzZXJUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBVc2VySW5wdXRTY2hlbWEucGFyc2UodXNlcik7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBVc2VyVHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSBlcnJvci5pc3N1ZXMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKTtcbiAgICAgIHRocm93IG5ldyBVc2VyVmFsaWRhdGlvbkVycm9yKGBVc2VyIHZhbGlkYXRpb24gZmFpbGVkOiAke2ZpZWxkRXJyb3JzfWApO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFVzZXJPdXRwdXQgPSAodXNlcjogVXNlclR5cGUpOiBVc2VyVHlwZSA9PiB7XG4gIGNvbnN0IHtwYXNzd29yZCwgc2FsdCwgdmVyaWZpZWRFbWFpbENvZGUsIHZlcmlmaWVkU21zQ29kZSwgLi4uc2FmZVVzZXJ9ID0gdXNlcjtcbiAgcmV0dXJuIHNhZmVVc2VyO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVXNlciA9ICh1c2VyOiBVc2VyVHlwZSk6IFVzZXJUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwZXJmb3JtVXNlclRyYW5zZm9ybWF0aW9uKHVzZXIpO1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIFVzZXJWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVXNlclZhbGlkYXRpb25FcnJvcihgVXNlciBwYXJzaW5nIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgfVxufTtcblxuY29uc3QgcGVyZm9ybVVzZXJUcmFuc2Zvcm1hdGlvbiA9ICh1c2VyOiBVc2VyVHlwZSk6IFVzZXJUeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIF9pZCxcbiAgICBfa2V5LFxuICAgIGFjdGl2ZSxcbiAgICBiYW5rSWQsXG4gICAgY2l0eSxcbiAgICBjb3VudHJ5LFxuICAgIGN1cnJlbmN5LFxuICAgIGRldmljZVRva2VuLFxuICAgIGRvYixcbiAgICBlbWFpbCxcbiAgICBmaXJzdCxcbiAgICBnZW5kZXIsXG4gICAgaWQsXG4gICAgaW1hZ2VJZCxcbiAgICBsYXN0LFxuICAgIGxhc3RBY3RpdmUsXG4gICAgbG9jYWxlLFxuICAgIG1haWxpbmdMaXN0LFxuICAgIG5hbWUsXG4gICAgcGFzc3dvcmQsXG4gICAgcGhvbmUsXG4gICAgc2FsdCxcbiAgICBzdGF0ZSxcbiAgICBzdHJlZXQxLFxuICAgIHN0cmVldDIsXG4gICAgc3RyaXBlQWNjb3VudElkLFxuICAgIHN0cmlwZUN1c3RvbWVySWQsXG4gICAgdGFncyxcbiAgICB0aW1lem9uZSxcbiAgICB0eXBlLFxuICAgIHVzZXJBY2Nlc3MsXG4gICAgdXNlcklkLFxuICAgIHVzZXJuYW1lLFxuICAgIHZlcmlmaWVkRW1haWwsXG4gICAgdmVyaWZpZWRFbWFpbENvZGUsXG4gICAgdmVyaWZpZWRFbWFpbEV4cGlyZXMsXG4gICAgdmVyaWZpZWRQaG9uZSxcbiAgICB2ZXJpZmllZFBob25lRXhwaXJlcyxcbiAgICB2ZXJpZmllZFNtc0NvZGUsXG4gICAgemlwXG4gIH0gPSB1c2VyO1xuICBjb25zdCB0cmFuc2Zvcm1lZCA9IHtcbiAgICAuLi5wYXJzZURvY3VtZW50KHVzZXIpLFxuICAgIC4uLihhY3RpdmUgIT09IHVuZGVmaW5lZCAmJiB7YWN0aXZlOiAhIWFjdGl2ZX0pLFxuICAgIC4uLihiYW5rSWQgJiYge2JhbmtJZDogcGFyc2VWYXJDaGFyKGJhbmtJZCwgMTYwKX0pLFxuICAgIC4uLihjaXR5ICYmIHtjaXR5OiBwYXJzZVZhckNoYXIoY2l0eSwgMTYwKX0pLFxuICAgIC4uLihjb3VudHJ5ICYmIHtjb3VudHJ5OiB2YWxpZGF0ZUNvdW50cnkoY291bnRyeSl9KSxcbiAgICAuLi4oY3VycmVuY3kgJiYge2N1cnJlbmN5OiBwYXJzZUNoYXIoY3VycmVuY3ksIDMpLnRvVXBwZXJDYXNlKCl9KSxcbiAgICAuLi4oZGV2aWNlVG9rZW4gJiYge2RldmljZVRva2VuOiBwYXJzZVZhckNoYXIoZGV2aWNlVG9rZW4sIDE2MCl9KSxcbiAgICAuLi4oZG9iICE9PSB1bmRlZmluZWQgJiYge2RvYjogcGFyc2VSZWFrdG9yRGF0ZShkb2IpfSksXG4gICAgLi4uKGVtYWlsICYmIHtlbWFpbDogcGFyc2VFbWFpbChlbWFpbCl9KSxcbiAgICAuLi4oZmlyc3QgJiYge2ZpcnN0OiBwYXJzZVZhckNoYXIoZmlyc3QsIDE2MCl9KSxcbiAgICAuLi4oZ2VuZGVyICYmIHtnZW5kZXI6IHZhbGlkYXRlR2VuZGVyKGdlbmRlcil9KSxcbiAgICAuLi4oKGlkIHx8IF9pZCB8fCBfa2V5IHx8IHVzZXJJZCkgJiYge2lkOiBwYXJzZUFyYW5nb0lkKGlkIHx8IF9pZCB8fCBgdXNlcnMvJHtfa2V5IHx8IHVzZXJJZH1gKX0pLFxuICAgIC4uLihpbWFnZUlkICYmIHtpbWFnZUlkOiBwYXJzZVJlYWt0b3JJdGVtSWQoaW1hZ2VJZCl9KSxcbiAgICAuLi4obGFzdCAmJiB7bGFzdDogcGFyc2VWYXJDaGFyKGxhc3QsIDE2MCl9KSxcbiAgICAuLi4obGFzdEFjdGl2ZSAhPT0gdW5kZWZpbmVkICYmIHtsYXN0QWN0aXZlOiBwYXJzZVJlYWt0b3JEYXRlKGxhc3RBY3RpdmUpfSksXG4gICAgLi4uKGxvY2FsZSAmJiB7bG9jYWxlOiBwYXJzZVN0cmluZyhsb2NhbGUsIDUpfSksXG4gICAgLi4uKG1haWxpbmdMaXN0ICE9PSB1bmRlZmluZWQgJiYge21haWxpbmdMaXN0OiAhIW1haWxpbmdMaXN0fSksXG4gICAgLi4uKG5hbWUgJiYge25hbWU6IHBhcnNlUmVha3Rvck5hbWUobmFtZSl9KSxcbiAgICAuLi4ocGFzc3dvcmQgJiYge3Bhc3N3b3JkOiBwYXJzZVBhc3N3b3JkKHBhc3N3b3JkKX0pLFxuICAgIC4uLihwaG9uZSAmJiB7cGhvbmU6IHBhcnNlUGhvbmUocGhvbmUpfSksXG4gICAgLi4uKHNhbHQgJiYge3NhbHQ6IHBhcnNlVmFyQ2hhcihzYWx0LCAxNjApfSksXG4gICAgLi4uKHN0YXRlICYmIHtzdGF0ZTogdmFsaWRhdGVTdGF0ZShzdGF0ZSl9KSxcbiAgICAuLi4oc3RyZWV0MSAmJiB7c3RyZWV0MTogcGFyc2VWYXJDaGFyKHN0cmVldDEsIDE2MCl9KSxcbiAgICAuLi4oc3RyZWV0MiAmJiB7c3RyZWV0MjogcGFyc2VWYXJDaGFyKHN0cmVldDIsIDE2MCl9KSxcbiAgICAuLi4oc3RyaXBlQWNjb3VudElkICYmIHtzdHJpcGVBY2NvdW50SWQ6IHBhcnNlVmFyQ2hhcihzdHJpcGVBY2NvdW50SWQsIDE2MCl9KSxcbiAgICAuLi4oc3RyaXBlQ3VzdG9tZXJJZCAmJiB7c3RyaXBlQ3VzdG9tZXJJZDogcGFyc2VWYXJDaGFyKHN0cmlwZUN1c3RvbWVySWQsIDE2MCl9KSxcbiAgICAuLi4odGFncz8ubGVuZ3RoICYmIHt0YWdzOiB0YWdzLmZpbHRlcigodGFnKSA9PiAhIXRhZykubWFwKCh0YWcpID0+IHBhcnNlVGFnKHRhZykpfSksXG4gICAgLi4uKHRpbWV6b25lICYmIHt0aW1lem9uZTogcGFyc2VTdHJpbmcodGltZXpvbmUsIDE2MCl9KSxcbiAgICAuLi4odHlwZSAmJiB7dHlwZTogcGFyc2VSZWFrdG9yVHlwZSh0eXBlKX0pLFxuICAgIC4uLih1c2VyQWNjZXNzICE9PSB1bmRlZmluZWQgJiYge3VzZXJBY2Nlc3M6IHVzZXJBY2Nlc3MgPyBwYXJzZU51bSh1c2VyQWNjZXNzKSA6IDB9KSxcbiAgICAuLi4oKHVzZXJJZCB8fCBfa2V5KSAmJiB7dXNlcklkOiBwYXJzZUlkKF9rZXkgfHwgdXNlcklkIHx8ICcnKX0pLFxuICAgIC4uLih1c2VybmFtZSAmJiB7dXNlcm5hbWU6IHBhcnNlVmFyQ2hhcih1c2VybmFtZSwgMTYwKX0pLFxuICAgIC4uLih2ZXJpZmllZEVtYWlsICE9PSB1bmRlZmluZWQgJiYge3ZlcmlmaWVkRW1haWw6ICEhdmVyaWZpZWRFbWFpbH0pLFxuICAgIC4uLih2ZXJpZmllZEVtYWlsQ29kZSAhPT0gdW5kZWZpbmVkICYmIHt2ZXJpZmllZEVtYWlsQ29kZTogcGFyc2VOdW0odmVyaWZpZWRFbWFpbENvZGUsIDEwKX0pLFxuICAgIC4uLih2ZXJpZmllZEVtYWlsRXhwaXJlcyAhPT0gdW5kZWZpbmVkICYmIHt2ZXJpZmllZEVtYWlsRXhwaXJlczogcGFyc2VOdW0odmVyaWZpZWRFbWFpbEV4cGlyZXMsIDEwKX0pLFxuICAgIC4uLih2ZXJpZmllZFBob25lICE9PSB1bmRlZmluZWQgJiYge3ZlcmlmaWVkUGhvbmU6ICEhdmVyaWZpZWRQaG9uZX0pLFxuICAgIC4uLih2ZXJpZmllZFBob25lRXhwaXJlcyAhPT0gdW5kZWZpbmVkICYmIHt2ZXJpZmllZFBob25lRXhwaXJlczogcGFyc2VOdW0odmVyaWZpZWRQaG9uZUV4cGlyZXMsIDEwKX0pLFxuICAgIC4uLih2ZXJpZmllZFNtc0NvZGUgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRTbXNDb2RlOiBwYXJzZU51bSh2ZXJpZmllZFNtc0NvZGUsIDEwKX0pLFxuICAgIC4uLih6aXAgJiYge3ppcDogcGFyc2VWYXJDaGFyKHppcCwgMjApfSlcbiAgfTtcblxuICBjb25zdCByZXN1bHQgPSByZW1vdmVFbXB0eUtleXModHJhbnNmb3JtZWQpO1xuXG4gIGlmKHVzZXIuX2lkKSB7XG4gICAgcmVzdWx0LmlkID0gdXNlci5faWQ7XG4gICAgcmVzdWx0Ll9pZCA9IHVzZXIuX2lkO1xuICB9IGVsc2UgaWYodXNlci5pZCAmJiAhcmVzdWx0LmlkKSB7XG4gICAgcmVzdWx0LmlkID0gdXNlci5pZDtcbiAgICByZXN1bHQuX2lkID0gdXNlci5pZDtcbiAgfVxuXG4gIGlmKHVzZXIuX2tleSkge1xuICAgIHJlc3VsdC51c2VySWQgPSB1c2VyLl9rZXk7XG4gICAgcmVzdWx0Ll9rZXkgPSB1c2VyLl9rZXk7XG4gIH0gZWxzZSBpZih1c2VyLnVzZXJJZCAmJiAhcmVzdWx0LnVzZXJJZCkge1xuICAgIHJlc3VsdC51c2VySWQgPSB1c2VyLnVzZXJJZDtcbiAgICByZXN1bHQuX2tleSA9IHVzZXIudXNlcklkO1xuICB9XG5cbiAgaWYodXNlci51c2VySWQgJiYgIXJlc3VsdC5fa2V5KSB7XG4gICAgcmVzdWx0Ll9rZXkgPSB1c2VyLnVzZXJJZDtcbiAgfVxuXG4gIGlmKHVzZXIuaWQgJiYgIXJlc3VsdC5faWQpIHtcbiAgICByZXN1bHQuX2lkID0gdXNlci5pZDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJVc2VyQ2FjaGUgPSAoKTogdm9pZCA9PiB7XG4gIHVzZXJDYWNoZS5jbGVhcigpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJDYWNoZVNpemUgPSAoKTogbnVtYmVyID0+IHVzZXJDYWNoZS5zaXplO1xuXG5leHBvcnQge3VzZXJDYWNoZX07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVVzZXJMZWdhY3kgPSAodXNlcjogVXNlclR5cGUpOiBVc2VyVHlwZSA9PiBwYXJzZVVzZXIodXNlcik7Il0sCiAgIm1hcHBpbmdzIjogIkFBQ0EsT0FBUSxLQUFBQSxNQUFRLE1BRWhCLE9BQVEsWUFBQUMsTUFBZSwrQkFDdkIsT0FBUSxpQkFBQUMsRUFBZSxhQUFBQyxFQUFXLGNBQUFDLEVBQVksV0FBQUMsR0FBUyxpQkFBQUMsR0FBZSxjQUFBQyxHQUFZLGVBQUFDLEVBQWEsZ0JBQUFDLE1BQW1CLCtCQUVsSCxPQUFRLG1CQUFBQyxPQUFzQiwyQkFDOUIsT0FBUSxpQkFBQUMsT0FBb0IscUJBQzVCLE9BQVEsb0JBQUFDLEVBQWtCLHNCQUFBQyxHQUFvQixvQkFBQUMsR0FBa0Isb0JBQUFDLE9BQXVCLHNCQUN2RixPQUFRLFlBQUFDLE9BQWUsa0JBRWhCLE1BQU1DLFVBQTRCLEtBQU0sQ0FDN0MsWUFBWUMsRUFBd0JDLEVBQWdCLENBQ2xELE1BQU1ELENBQU8sRUFEcUIsV0FBQUMsRUFFbEMsS0FBSyxLQUFPLHFCQUNkLENBQ0Ys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LEdBQUsvQyxFQUFLLElBQ2pCK0MsRUFBTyxJQUFNL0MsRUFBSyxLQUNWQSxFQUFLLElBQU0sQ0FBQytDLEVBQU8sS0FDM0JBLEVBQU8sR0FBSy9DLEVBQUssR0FDakIrQyxFQUFPLElBQU0vQyxFQUFLLElBR2pCQSxFQUFLLE1BQ04rQyxFQUFPLE9BQVMvQyxFQUFLLEtBQ3JCK0MsRUFBTyxLQUFPL0MsRUFBSyxNQUNYQSxFQUFLLFFBQVUsQ0FBQytDLEVBQU8sU0FDL0JBLEVBQU8sT0FBUy9DLEVBQUssT0FDckIrQyxFQUFPLEtBQU8vQyxFQUFLLFFBR2xCQSxFQUFLLFFBQVUsQ0FBQytDLEVBQU8sT0FDeEJBLEVBQU8sS0FBTy9DLEVBQUssUUFHbEJBLEVBQUssSUFBTSxDQUFDK0MsRUFBTyxNQUNwQkEsRUFBTyxJQUFNL0MsRUFBSyxJQUdiK0MsQ0FDVCxFQUVhQyxHQUFpQixJQUFZLENBQ3hDbEQsRUFBVSxNQUFNLENBQ2xCLEVBRWFtRCxHQUFtQixJQUFjbkQsRUFBVSxLQUlqRCxNQUFNb0QsR0FBbUJDLEdBQTZCQyxHQUFVRCxDQUFJIiwKICAibmFtZXMiOiBbInoiLCAicGFyc2VOdW0iLCAicGFyc2VBcmFuZ29JZCIsICJwYXJzZUNoYXIiLCAicGFyc2VFbWFpbCIsICJwYXJzZUlkIiwgInBhcnNlUGFzc3dvcmQiLCAicGFyc2VQaG9uZSIsICJwYXJzZVN0cmluZyIsICJwYXJzZVZhckNoYXIiLCAicmVtb3ZlRW1wdHlLZXlzIiwgInBhcnNlRG9jdW1lbnQiLCAicGFyc2VSZWFrdG9yRGF0ZSIsICJwYXJzZVJlYWt0b3JJdGVtSWQiLCAicGFyc2VSZWFrdG9yTmFtZSIsICJwYXJzZVJlYWt0b3JUeXBlIiwgInBhcnNlVGFnIiwgIlVzZXJWYWxpZGF0aW9uRXJyb3IiLCAibWVzc2FnZSIsICJmaWVsZCIsICJVc2VySW5wdXRTY2hlbWEiLCAidmFsaWRhdGVDb3VudHJ5IiwgImNvdW50cnkiLCAidXBwZXIiLCAidmFsaWRhdGVTdGF0ZSIsICJzdGF0ZSIsICJ2YWxpZGF0ZUdlbmRlciIsICJnZW5kZXIiLCAidXNlckNhY2hlIiwgInZhbGlkYXRlVXNlcklucHV0IiwgInVzZXIiLCAiZXJyb3IiLCAiZmllbGRFcnJvcnMiLCAiZSIsICJmb3JtYXRVc2VyT3V0cHV0IiwgInBhc3N3b3JkIiwgInNhbHQiLCAidmVyaWZpZWRFbWFpbENvZGUiLCAidmVyaWZpZWRTbXNDb2RlIiwgInNhZmVVc2VyIiwgInBhcnNlVXNlciIsICJwZXJmb3JtVXNlclRyYW5zZm9ybWF0aW9uIiwgIl9pZCIsICJfa2V5IiwgImFjdGl2ZSIsICJiYW5rSWQiLCAiY2l0eSIsICJjdXJyZW5jeSIsICJkZXZpY2VUb2tlbiIsICJkb2IiLCAiZW1haWwiLCAiZmlyc3QiLCAiaWQiLCAiaW1hZ2VJZCIsICJsYXN0IiwgImxhc3RBY3RpdmUiLCAibG9jYWxlIiwgIm1haWxpbmdMaXN0IiwgIm5hbWUiLCAicGhvbmUiLCAic3RyZWV0MSIsICJzdHJlZXQyIiwgInN0cmlwZUFjY291bnRJZCIsICJzdHJpcGVDdXN0b21lcklkIiwgInRhZ3MiLCAidGltZXpvbmUiLCAidHlwZSIsICJ1c2VyQWNjZXNzIiwgInVzZXJJZCIsICJ1c2VybmFtZSIsICJ2ZXJpZmllZEVtYWlsIiwgInZlcmlmaWVkRW1haWxFeHBpcmVzIiwgInZlcmlmaWVkUGhvbmUiLCAidmVyaWZpZWRQaG9uZUV4cGlyZXMiLCAiemlwIiwgInRyYW5zZm9ybWVkIiwgInRhZyIsICJyZXN1bHQiLCAiY2xlYXJVc2VyQ2FjaGUiLCAiZ2V0VXNlckNhY2hlU2l6ZSIsICJwYXJzZVVzZXJMZWdhY3kiLCAidXNlciIsICJwYXJzZVVzZXIiXQp9Cg==
1
+ import { z } from 'zod';
2
+ import { parseNum } from '@nlabs/utils/parsers/numbers';
3
+ import { parseArangoId, parseChar, parseEmail, parseId, parsePassword, parsePhone, parseString, parseVarChar } from '@nlabs/utils/parsers/strings';
4
+ import { removeEmptyKeys } from '../utils/adapterUtils.js';
5
+ import { parseDocument } from './arangoAdapter.js';
6
+ import { parseReaktorDate, parseReaktorItemId, parseReaktorName, parseReaktorType } from './reaktorAdapter.js';
7
+ import { parseTag } from './tagAdapter.js';
8
+ export class UserValidationError extends Error {
9
+ field;
10
+ constructor(message, field){
11
+ super(message), this.field = field;
12
+ this.name = 'UserValidationError';
13
+ }
14
+ }
15
+ const UserInputSchema = z.object({
16
+ _id: z.string().optional(),
17
+ _key: z.string().optional(),
18
+ active: z.boolean().optional(),
19
+ bankId: z.string().max(160).optional(),
20
+ city: z.string().max(160).optional(),
21
+ country: z.string().length(2).optional(),
22
+ currency: z.string().length(3).optional(),
23
+ deviceToken: z.string().max(160).optional(),
24
+ dob: z.number().optional(),
25
+ email: z.string().email().optional(),
26
+ first: z.string().max(160).optional(),
27
+ gender: z.string().length(1).optional(),
28
+ id: z.string().optional(),
29
+ imageId: z.string().optional(),
30
+ last: z.string().max(160).optional(),
31
+ lastActive: z.number().optional(),
32
+ locale: z.string().max(5).optional(),
33
+ mailingList: z.boolean().optional(),
34
+ name: z.string().max(160).optional(),
35
+ password: z.string().max(160).optional(),
36
+ phone: z.string().max(20).optional(),
37
+ salt: z.string().max(160).optional(),
38
+ state: z.string().length(2).optional(),
39
+ street1: z.string().max(160).optional(),
40
+ street2: z.string().max(160).optional(),
41
+ stripeAccountId: z.string().max(160).optional(),
42
+ stripeCustomerId: z.string().max(160).optional(),
43
+ tags: z.array(z.any()).optional(),
44
+ timezone: z.string().max(160).optional(),
45
+ type: z.string().max(160).optional(),
46
+ userAccess: z.number().optional(),
47
+ userId: z.string().optional(),
48
+ username: z.string().max(160).optional(),
49
+ verifiedEmail: z.boolean().optional(),
50
+ verifiedEmailCode: z.number().optional(),
51
+ verifiedEmailExpires: z.number().optional(),
52
+ verifiedPhone: z.boolean().optional(),
53
+ verifiedPhoneExpires: z.number().optional(),
54
+ verifiedSmsCode: z.number().optional(),
55
+ zip: z.string().max(20).optional()
56
+ }).passthrough();
57
+ const validateCountry = (country)=>{
58
+ if (!country) {
59
+ return undefined;
60
+ }
61
+ const upper = country.toUpperCase();
62
+ if (!/^[A-Z]{2}$/.test(upper)) {
63
+ throw new UserValidationError('Country must be a 2-letter ISO code', 'country');
64
+ }
65
+ return upper;
66
+ };
67
+ const validateState = (state)=>{
68
+ if (!state) {
69
+ return undefined;
70
+ }
71
+ const upper = state.toUpperCase();
72
+ if (!/^[A-Z]{2}$/.test(upper)) {
73
+ throw new UserValidationError('State must be a 2-letter code', 'state');
74
+ }
75
+ return upper;
76
+ };
77
+ const validateGender = (gender)=>{
78
+ if (!gender) {
79
+ return undefined;
80
+ }
81
+ const upper = gender.toUpperCase();
82
+ if (!/^[MF]$/.test(upper)) {
83
+ throw new UserValidationError('Gender must be M or F', 'gender');
84
+ }
85
+ return upper;
86
+ };
87
+ const userCache = new Map();
88
+ export const validateUserInput = (user)=>{
89
+ try {
90
+ const validated = UserInputSchema.parse(user);
91
+ return validated;
92
+ } catch (error) {
93
+ if (error instanceof z.ZodError) {
94
+ const fieldErrors = error.issues.map((e)=>`${e.path.join('.')}: ${e.message}`).join(', ');
95
+ throw new UserValidationError(`User validation failed: ${fieldErrors}`);
96
+ }
97
+ throw error;
98
+ }
99
+ };
100
+ export const formatUserOutput = (user)=>{
101
+ const { password, salt, verifiedEmailCode, verifiedSmsCode, ...safeUser } = user;
102
+ return safeUser;
103
+ };
104
+ export const parseUser = (user)=>{
105
+ try {
106
+ const parsed = performUserTransformation(user);
107
+ return parsed;
108
+ } catch (error) {
109
+ if (error instanceof UserValidationError) {
110
+ throw error;
111
+ }
112
+ throw new UserValidationError(`User parsing failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
113
+ }
114
+ };
115
+ const performUserTransformation = (user)=>{
116
+ const { _id, _key, active, bankId, city, country, currency, deviceToken, dob, email, first, gender, id, imageId, last, lastActive, locale, mailingList, name, password, phone, salt, state, street1, street2, stripeAccountId, stripeCustomerId, tags, timezone, type, userAccess, userId, username, verifiedEmail, verifiedEmailCode, verifiedEmailExpires, verifiedPhone, verifiedPhoneExpires, verifiedSmsCode, zip } = user;
117
+ const transformed = {
118
+ ...parseDocument(user),
119
+ ...active !== undefined && {
120
+ active: !!active
121
+ },
122
+ ...bankId && {
123
+ bankId: parseVarChar(bankId, 160)
124
+ },
125
+ ...city && {
126
+ city: parseVarChar(city, 160)
127
+ },
128
+ ...country && {
129
+ country: validateCountry(country)
130
+ },
131
+ ...currency && {
132
+ currency: parseChar(currency, 3).toUpperCase()
133
+ },
134
+ ...deviceToken && {
135
+ deviceToken: parseVarChar(deviceToken, 160)
136
+ },
137
+ ...dob !== undefined && {
138
+ dob: parseReaktorDate(dob)
139
+ },
140
+ ...email && {
141
+ email: parseEmail(email)
142
+ },
143
+ ...first && {
144
+ first: parseVarChar(first, 160)
145
+ },
146
+ ...gender && {
147
+ gender: validateGender(gender)
148
+ },
149
+ ...(id || _id || _key || userId) && {
150
+ id: parseArangoId(id || _id || `users/${_key || userId}`)
151
+ },
152
+ ...imageId && {
153
+ imageId: parseReaktorItemId(imageId)
154
+ },
155
+ ...last && {
156
+ last: parseVarChar(last, 160)
157
+ },
158
+ ...lastActive !== undefined && {
159
+ lastActive: parseReaktorDate(lastActive)
160
+ },
161
+ ...locale && {
162
+ locale: parseString(locale, 5)
163
+ },
164
+ ...mailingList !== undefined && {
165
+ mailingList: !!mailingList
166
+ },
167
+ ...name && {
168
+ name: parseReaktorName(name)
169
+ },
170
+ ...password && {
171
+ password: parsePassword(password)
172
+ },
173
+ ...phone && {
174
+ phone: parsePhone(phone)
175
+ },
176
+ ...salt && {
177
+ salt: parseVarChar(salt, 160)
178
+ },
179
+ ...state && {
180
+ state: validateState(state)
181
+ },
182
+ ...street1 && {
183
+ street1: parseVarChar(street1, 160)
184
+ },
185
+ ...street2 && {
186
+ street2: parseVarChar(street2, 160)
187
+ },
188
+ ...stripeAccountId && {
189
+ stripeAccountId: parseVarChar(stripeAccountId, 160)
190
+ },
191
+ ...stripeCustomerId && {
192
+ stripeCustomerId: parseVarChar(stripeCustomerId, 160)
193
+ },
194
+ ...tags?.length && {
195
+ tags: tags.filter((tag)=>!!tag).map((tag)=>parseTag(tag))
196
+ },
197
+ ...timezone && {
198
+ timezone: parseString(timezone, 160)
199
+ },
200
+ ...type && {
201
+ type: parseReaktorType(type)
202
+ },
203
+ ...userAccess !== undefined && {
204
+ userAccess: userAccess ? parseNum(userAccess) : 0
205
+ },
206
+ ...(userId || _key) && {
207
+ userId: parseId(_key || userId || '')
208
+ },
209
+ ...username && {
210
+ username: parseString(username, 160)
211
+ },
212
+ ...verifiedEmail !== undefined && {
213
+ verifiedEmail: !!verifiedEmail
214
+ },
215
+ ...verifiedEmailCode !== undefined && {
216
+ verifiedEmailCode: parseNum(verifiedEmailCode, 10)
217
+ },
218
+ ...verifiedEmailExpires !== undefined && {
219
+ verifiedEmailExpires: parseNum(verifiedEmailExpires, 10)
220
+ },
221
+ ...verifiedPhone !== undefined && {
222
+ verifiedPhone: !!verifiedPhone
223
+ },
224
+ ...verifiedPhoneExpires !== undefined && {
225
+ verifiedPhoneExpires: parseNum(verifiedPhoneExpires, 10)
226
+ },
227
+ ...verifiedSmsCode !== undefined && {
228
+ verifiedSmsCode: parseNum(verifiedSmsCode, 10)
229
+ },
230
+ ...zip && {
231
+ zip: parseVarChar(zip, 20)
232
+ }
233
+ };
234
+ const result = removeEmptyKeys(transformed);
235
+ if (user._id) {
236
+ result.id = user._id;
237
+ result._id = user._id;
238
+ } else if (user.id && !result.id) {
239
+ result.id = user.id;
240
+ result._id = user.id;
241
+ }
242
+ if (user._key) {
243
+ result.userId = user._key;
244
+ result._key = user._key;
245
+ } else if (user.userId && !result.userId) {
246
+ result.userId = user.userId;
247
+ result._key = user.userId;
248
+ }
249
+ if (user.userId && !result._key) {
250
+ result._key = user.userId;
251
+ }
252
+ if (user.id && !result._id) {
253
+ result._id = user.id;
254
+ }
255
+ return result;
256
+ };
257
+ export const clearUserCache = ()=>{
258
+ userCache.clear();
259
+ };
260
+ export const getUserCacheSize = ()=>userCache.size;
261
+ export { userCache };
262
+ export const parseUserLegacy = (user)=>parseUser(user);
263
+
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FkYXB0ZXJzL3VzZXJBZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge3BhcnNlTnVtfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9udW1iZXJzJztcbmltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VDaGFyLCBwYXJzZUVtYWlsLCBwYXJzZUlkLCBwYXJzZVBhc3N3b3JkLCBwYXJzZVBob25lLCBwYXJzZVN0cmluZywgcGFyc2VWYXJDaGFyfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB0eXBlIHtVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMvdXNlcnMudHlwZXMuanMnO1xuaW1wb3J0IHtyZW1vdmVFbXB0eUtleXN9IGZyb20gJy4uL3V0aWxzL2FkYXB0ZXJVdGlscy5qcyc7XG5pbXBvcnQge3BhcnNlRG9jdW1lbnR9IGZyb20gJy4vYXJhbmdvQWRhcHRlci5qcyc7XG5pbXBvcnQge3BhcnNlUmVha3RvckRhdGUsIHBhcnNlUmVha3Rvckl0ZW1JZCwgcGFyc2VSZWFrdG9yTmFtZSwgcGFyc2VSZWFrdG9yVHlwZX0gZnJvbSAnLi9yZWFrdG9yQWRhcHRlci5qcyc7XG5pbXBvcnQge3BhcnNlVGFnfSBmcm9tICcuL3RhZ0FkYXB0ZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgVXNlclZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVXNlclZhbGlkYXRpb25FcnJvcic7XG4gIH1cbn1cblxuY29uc3QgVXNlcklucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhY3RpdmU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGJhbmtJZDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBjaXR5OiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIGNvdW50cnk6IHouc3RyaW5nKCkubGVuZ3RoKDIpLm9wdGlvbmFsKCksXG4gIGN1cnJlbmN5OiB6LnN0cmluZygpLmxlbmd0aCgzKS5vcHRpb25hbCgpLFxuICBkZXZpY2VUb2tlbjogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBkb2I6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgZW1haWw6IHouc3RyaW5nKCkuZW1haWwoKS5vcHRpb25hbCgpLFxuICBmaXJzdDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBnZW5kZXI6IHouc3RyaW5nKCkubGVuZ3RoKDEpLm9wdGlvbmFsKCksXG4gIGlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGltYWdlSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbGFzdDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBsYXN0QWN0aXZlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGxvY2FsZTogei5zdHJpbmcoKS5tYXgoNSkub3B0aW9uYWwoKSxcbiAgbWFpbGluZ0xpc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIG5hbWU6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgcGFzc3dvcmQ6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgcGhvbmU6IHouc3RyaW5nKCkubWF4KDIwKS5vcHRpb25hbCgpLFxuICBzYWx0OiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHN0YXRlOiB6LnN0cmluZygpLmxlbmd0aCgyKS5vcHRpb25hbCgpLFxuICBzdHJlZXQxOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHN0cmVldDI6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgc3RyaXBlQWNjb3VudElkOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHN0cmlwZUN1c3RvbWVySWQ6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgdGFnczogei5hcnJheSh6LmFueSgpKS5vcHRpb25hbCgpLFxuICB0aW1lem9uZTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICB0eXBlOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHVzZXJBY2Nlc3M6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdXNlcklkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZXJuYW1lOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHZlcmlmaWVkRW1haWw6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHZlcmlmaWVkRW1haWxDb2RlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHZlcmlmaWVkRW1haWxFeHBpcmVzOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHZlcmlmaWVkUGhvbmU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHZlcmlmaWVkUGhvbmVFeHBpcmVzOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHZlcmlmaWVkU21zQ29kZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB6aXA6IHouc3RyaW5nKCkubWF4KDIwKS5vcHRpb25hbCgpXG59KS5wYXNzdGhyb3VnaCgpO1xuXG5jb25zdCB2YWxpZGF0ZUNvdW50cnkgPSAoY291bnRyeT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmKCFjb3VudHJ5KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCB1cHBlciA9IGNvdW50cnkudG9VcHBlckNhc2UoKTtcbiAgaWYoIS9eW0EtWl17Mn0kLy50ZXN0KHVwcGVyKSkge1xuICAgIHRocm93IG5ldyBVc2VyVmFsaWRhdGlvbkVycm9yKCdDb3VudHJ5IG11c3QgYmUgYSAyLWxldHRlciBJU08gY29kZScsICdjb3VudHJ5Jyk7XG4gIH1cbiAgcmV0dXJuIHVwcGVyO1xufTtcblxuY29uc3QgdmFsaWRhdGVTdGF0ZSA9IChzdGF0ZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmKCFzdGF0ZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgdXBwZXIgPSBzdGF0ZS50b1VwcGVyQ2FzZSgpO1xuICBpZighL15bQS1aXXsyfSQvLnRlc3QodXBwZXIpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoJ1N0YXRlIG11c3QgYmUgYSAyLWxldHRlciBjb2RlJywgJ3N0YXRlJyk7XG4gIH1cbiAgcmV0dXJuIHVwcGVyO1xufTtcblxuY29uc3QgdmFsaWRhdGVHZW5kZXIgPSAoZ2VuZGVyPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYoIWdlbmRlcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgdXBwZXIgPSBnZW5kZXIudG9VcHBlckNhc2UoKTtcbiAgaWYoIS9eW01GXSQvLnRlc3QodXBwZXIpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoJ0dlbmRlciBtdXN0IGJlIE0gb3IgRicsICdnZW5kZXInKTtcbiAgfVxuICByZXR1cm4gdXBwZXI7XG59O1xuXG5jb25zdCB1c2VyQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgVXNlclR5cGU+KCk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVVzZXJJbnB1dCA9ICh1c2VyOiB1bmtub3duKTogVXNlclR5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbGlkYXRlZCA9IFVzZXJJbnB1dFNjaGVtYS5wYXJzZSh1c2VyKTtcbiAgICByZXR1cm4gdmFsaWRhdGVkIGFzIFVzZXJUeXBlO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICBjb25zdCBmaWVsZEVycm9ycyA9IGVycm9yLmlzc3Vlcy5tYXAoKGUpID0+IGAke2UucGF0aC5qb2luKCcuJyl9OiAke2UubWVzc2FnZX1gKS5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoYFVzZXIgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZmllbGRFcnJvcnN9YCk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VXNlck91dHB1dCA9ICh1c2VyOiBVc2VyVHlwZSk6IFVzZXJUeXBlID0+IHtcbiAgY29uc3Qge3Bhc3N3b3JkLCBzYWx0LCB2ZXJpZmllZEVtYWlsQ29kZSwgdmVyaWZpZWRTbXNDb2RlLCAuLi5zYWZlVXNlcn0gPSB1c2VyO1xuICByZXR1cm4gc2FmZVVzZXI7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VVc2VyID0gKHVzZXI6IFVzZXJUeXBlKTogVXNlclR5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBlcmZvcm1Vc2VyVHJhbnNmb3JtYXRpb24odXNlcik7XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgVXNlclZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHRocm93IG5ldyBVc2VyVmFsaWRhdGlvbkVycm9yKGBVc2VyIHBhcnNpbmcgZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICB9XG59O1xuXG5jb25zdCBwZXJmb3JtVXNlclRyYW5zZm9ybWF0aW9uID0gKHVzZXI6IFVzZXJUeXBlKTogVXNlclR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgX2lkLFxuICAgIF9rZXksXG4gICAgYWN0aXZlLFxuICAgIGJhbmtJZCxcbiAgICBjaXR5LFxuICAgIGNvdW50cnksXG4gICAgY3VycmVuY3ksXG4gICAgZGV2aWNlVG9rZW4sXG4gICAgZG9iLFxuICAgIGVtYWlsLFxuICAgIGZpcnN0LFxuICAgIGdlbmRlcixcbiAgICBpZCxcbiAgICBpbWFnZUlkLFxuICAgIGxhc3QsXG4gICAgbGFzdEFjdGl2ZSxcbiAgICBsb2NhbGUsXG4gICAgbWFpbGluZ0xpc3QsXG4gICAgbmFtZSxcbiAgICBwYXNzd29yZCxcbiAgICBwaG9uZSxcbiAgICBzYWx0LFxuICAgIHN0YXRlLFxuICAgIHN0cmVldDEsXG4gICAgc3RyZWV0MixcbiAgICBzdHJpcGVBY2NvdW50SWQsXG4gICAgc3RyaXBlQ3VzdG9tZXJJZCxcbiAgICB0YWdzLFxuICAgIHRpbWV6b25lLFxuICAgIHR5cGUsXG4gICAgdXNlckFjY2VzcyxcbiAgICB1c2VySWQsXG4gICAgdXNlcm5hbWUsXG4gICAgdmVyaWZpZWRFbWFpbCxcbiAgICB2ZXJpZmllZEVtYWlsQ29kZSxcbiAgICB2ZXJpZmllZEVtYWlsRXhwaXJlcyxcbiAgICB2ZXJpZmllZFBob25lLFxuICAgIHZlcmlmaWVkUGhvbmVFeHBpcmVzLFxuICAgIHZlcmlmaWVkU21zQ29kZSxcbiAgICB6aXBcbiAgfSA9IHVzZXI7XG4gIGNvbnN0IHRyYW5zZm9ybWVkID0ge1xuICAgIC4uLnBhcnNlRG9jdW1lbnQodXNlciksXG4gICAgLi4uKGFjdGl2ZSAhPT0gdW5kZWZpbmVkICYmIHthY3RpdmU6ICEhYWN0aXZlfSksXG4gICAgLi4uKGJhbmtJZCAmJiB7YmFua0lkOiBwYXJzZVZhckNoYXIoYmFua0lkLCAxNjApfSksXG4gICAgLi4uKGNpdHkgJiYge2NpdHk6IHBhcnNlVmFyQ2hhcihjaXR5LCAxNjApfSksXG4gICAgLi4uKGNvdW50cnkgJiYge2NvdW50cnk6IHZhbGlkYXRlQ291bnRyeShjb3VudHJ5KX0pLFxuICAgIC4uLihjdXJyZW5jeSAmJiB7Y3VycmVuY3k6IHBhcnNlQ2hhcihjdXJyZW5jeSwgMykudG9VcHBlckNhc2UoKX0pLFxuICAgIC4uLihkZXZpY2VUb2tlbiAmJiB7ZGV2aWNlVG9rZW46IHBhcnNlVmFyQ2hhcihkZXZpY2VUb2tlbiwgMTYwKX0pLFxuICAgIC4uLihkb2IgIT09IHVuZGVmaW5lZCAmJiB7ZG9iOiBwYXJzZVJlYWt0b3JEYXRlKGRvYil9KSxcbiAgICAuLi4oZW1haWwgJiYge2VtYWlsOiBwYXJzZUVtYWlsKGVtYWlsKX0pLFxuICAgIC4uLihmaXJzdCAmJiB7Zmlyc3Q6IHBhcnNlVmFyQ2hhcihmaXJzdCwgMTYwKX0pLFxuICAgIC4uLihnZW5kZXIgJiYge2dlbmRlcjogdmFsaWRhdGVHZW5kZXIoZ2VuZGVyKX0pLFxuICAgIC4uLigoaWQgfHwgX2lkIHx8IF9rZXkgfHwgdXNlcklkKSAmJiB7aWQ6IHBhcnNlQXJhbmdvSWQoaWQgfHwgX2lkIHx8IGB1c2Vycy8ke19rZXkgfHwgdXNlcklkfWApfSksXG4gICAgLi4uKGltYWdlSWQgJiYge2ltYWdlSWQ6IHBhcnNlUmVha3Rvckl0ZW1JZChpbWFnZUlkKX0pLFxuICAgIC4uLihsYXN0ICYmIHtsYXN0OiBwYXJzZVZhckNoYXIobGFzdCwgMTYwKX0pLFxuICAgIC4uLihsYXN0QWN0aXZlICE9PSB1bmRlZmluZWQgJiYge2xhc3RBY3RpdmU6IHBhcnNlUmVha3RvckRhdGUobGFzdEFjdGl2ZSl9KSxcbiAgICAuLi4obG9jYWxlICYmIHtsb2NhbGU6IHBhcnNlU3RyaW5nKGxvY2FsZSwgNSl9KSxcbiAgICAuLi4obWFpbGluZ0xpc3QgIT09IHVuZGVmaW5lZCAmJiB7bWFpbGluZ0xpc3Q6ICEhbWFpbGluZ0xpc3R9KSxcbiAgICAuLi4obmFtZSAmJiB7bmFtZTogcGFyc2VSZWFrdG9yTmFtZShuYW1lKX0pLFxuICAgIC4uLihwYXNzd29yZCAmJiB7cGFzc3dvcmQ6IHBhcnNlUGFzc3dvcmQocGFzc3dvcmQpfSksXG4gICAgLi4uKHBob25lICYmIHtwaG9uZTogcGFyc2VQaG9uZShwaG9uZSl9KSxcbiAgICAuLi4oc2FsdCAmJiB7c2FsdDogcGFyc2VWYXJDaGFyKHNhbHQsIDE2MCl9KSxcbiAgICAuLi4oc3RhdGUgJiYge3N0YXRlOiB2YWxpZGF0ZVN0YXRlKHN0YXRlKX0pLFxuICAgIC4uLihzdHJlZXQxICYmIHtzdHJlZXQxOiBwYXJzZVZhckNoYXIoc3RyZWV0MSwgMTYwKX0pLFxuICAgIC4uLihzdHJlZXQyICYmIHtzdHJlZXQyOiBwYXJzZVZhckNoYXIoc3RyZWV0MiwgMTYwKX0pLFxuICAgIC4uLihzdHJpcGVBY2NvdW50SWQgJiYge3N0cmlwZUFjY291bnRJZDogcGFyc2VWYXJDaGFyKHN0cmlwZUFjY291bnRJZCwgMTYwKX0pLFxuICAgIC4uLihzdHJpcGVDdXN0b21lcklkICYmIHtzdHJpcGVDdXN0b21lcklkOiBwYXJzZVZhckNoYXIoc3RyaXBlQ3VzdG9tZXJJZCwgMTYwKX0pLFxuICAgIC4uLih0YWdzPy5sZW5ndGggJiYge3RhZ3M6IHRhZ3MuZmlsdGVyKCh0YWcpID0+ICEhdGFnKS5tYXAoKHRhZykgPT4gcGFyc2VUYWcodGFnKSl9KSxcbiAgICAuLi4odGltZXpvbmUgJiYge3RpbWV6b25lOiBwYXJzZVN0cmluZyh0aW1lem9uZSwgMTYwKX0pLFxuICAgIC4uLih0eXBlICYmIHt0eXBlOiBwYXJzZVJlYWt0b3JUeXBlKHR5cGUpfSksXG4gICAgLi4uKHVzZXJBY2Nlc3MgIT09IHVuZGVmaW5lZCAmJiB7dXNlckFjY2VzczogdXNlckFjY2VzcyA/IHBhcnNlTnVtKHVzZXJBY2Nlc3MpIDogMH0pLFxuICAgIC4uLigodXNlcklkIHx8IF9rZXkpICYmIHt1c2VySWQ6IHBhcnNlSWQoX2tleSB8fCB1c2VySWQgfHwgJycpfSksXG4gICAgLi4uKHVzZXJuYW1lICYmIHt1c2VybmFtZTogcGFyc2VTdHJpbmcodXNlcm5hbWUsIDE2MCl9KSxcbiAgICAuLi4odmVyaWZpZWRFbWFpbCAhPT0gdW5kZWZpbmVkICYmIHt2ZXJpZmllZEVtYWlsOiAhIXZlcmlmaWVkRW1haWx9KSxcbiAgICAuLi4odmVyaWZpZWRFbWFpbENvZGUgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRFbWFpbENvZGU6IHBhcnNlTnVtKHZlcmlmaWVkRW1haWxDb2RlLCAxMCl9KSxcbiAgICAuLi4odmVyaWZpZWRFbWFpbEV4cGlyZXMgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRFbWFpbEV4cGlyZXM6IHBhcnNlTnVtKHZlcmlmaWVkRW1haWxFeHBpcmVzLCAxMCl9KSxcbiAgICAuLi4odmVyaWZpZWRQaG9uZSAhPT0gdW5kZWZpbmVkICYmIHt2ZXJpZmllZFBob25lOiAhIXZlcmlmaWVkUGhvbmV9KSxcbiAgICAuLi4odmVyaWZpZWRQaG9uZUV4cGlyZXMgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRQaG9uZUV4cGlyZXM6IHBhcnNlTnVtKHZlcmlmaWVkUGhvbmVFeHBpcmVzLCAxMCl9KSxcbiAgICAuLi4odmVyaWZpZWRTbXNDb2RlICE9PSB1bmRlZmluZWQgJiYge3ZlcmlmaWVkU21zQ29kZTogcGFyc2VOdW0odmVyaWZpZWRTbXNDb2RlLCAxMCl9KSxcbiAgICAuLi4oemlwICYmIHt6aXA6IHBhcnNlVmFyQ2hhcih6aXAsIDIwKX0pXG4gIH07XG5cbiAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlRW1wdHlLZXlzKHRyYW5zZm9ybWVkKTtcblxuICBpZih1c2VyLl9pZCkge1xuICAgIHJlc3VsdC5pZCA9IHVzZXIuX2lkO1xuICAgIHJlc3VsdC5faWQgPSB1c2VyLl9pZDtcbiAgfSBlbHNlIGlmKHVzZXIuaWQgJiYgIXJlc3VsdC5pZCkge1xuICAgIHJlc3VsdC5pZCA9IHVzZXIuaWQ7XG4gICAgcmVzdWx0Ll9pZCA9IHVzZXIuaWQ7XG4gIH1cblxuICBpZih1c2VyLl9rZXkpIHtcbiAgICByZXN1bHQudXNlcklkID0gdXNlci5fa2V5O1xuICAgIHJlc3VsdC5fa2V5ID0gdXNlci5fa2V5O1xuICB9IGVsc2UgaWYodXNlci51c2VySWQgJiYgIXJlc3VsdC51c2VySWQpIHtcbiAgICByZXN1bHQudXNlcklkID0gdXNlci51c2VySWQ7XG4gICAgcmVzdWx0Ll9rZXkgPSB1c2VyLnVzZXJJZDtcbiAgfVxuXG4gIGlmKHVzZXIudXNlcklkICYmICFyZXN1bHQuX2tleSkge1xuICAgIHJlc3VsdC5fa2V5ID0gdXNlci51c2VySWQ7XG4gIH1cblxuICBpZih1c2VyLmlkICYmICFyZXN1bHQuX2lkKSB7XG4gICAgcmVzdWx0Ll9pZCA9IHVzZXIuaWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFyVXNlckNhY2hlID0gKCk6IHZvaWQgPT4ge1xuICB1c2VyQ2FjaGUuY2xlYXIoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyQ2FjaGVTaXplID0gKCk6IG51bWJlciA9PiB1c2VyQ2FjaGUuc2l6ZTtcblxuZXhwb3J0IHt1c2VyQ2FjaGV9O1xuXG5leHBvcnQgY29uc3QgcGFyc2VVc2VyTGVnYWN5ID0gKHVzZXI6IFVzZXJUeXBlKTogVXNlclR5cGUgPT4gcGFyc2VVc2VyKHVzZXIpOyJdLCJuYW1lcyI6WyJ6IiwicGFyc2VOdW0iLCJwYXJzZUFyYW5nb0lkIiwicGFyc2VDaGFyIiwicGFyc2VFbWFpbCIsInBhcnNlSWQiLCJwYXJzZVBhc3N3b3JkIiwicGFyc2VQaG9uZSIsInBhcnNlU3RyaW5nIiwicGFyc2VWYXJDaGFyIiwicmVtb3ZlRW1wdHlLZXlzIiwicGFyc2VEb2N1bWVudCIsInBhcnNlUmVha3RvckRhdGUiLCJwYXJzZVJlYWt0b3JJdGVtSWQiLCJwYXJzZVJlYWt0b3JOYW1lIiwicGFyc2VSZWFrdG9yVHlwZSIsInBhcnNlVGFnIiwiVXNlclZhbGlkYXRpb25FcnJvciIsIkVycm9yIiwibWVzc2FnZSIsImZpZWxkIiwibmFtZSIsIlVzZXJJbnB1dFNjaGVtYSIsIm9iamVjdCIsIl9pZCIsInN0cmluZyIsIm9wdGlvbmFsIiwiX2tleSIsImFjdGl2ZSIsImJvb2xlYW4iLCJiYW5rSWQiLCJtYXgiLCJjaXR5IiwiY291bnRyeSIsImxlbmd0aCIsImN1cnJlbmN5IiwiZGV2aWNlVG9rZW4iLCJkb2IiLCJudW1iZXIiLCJlbWFpbCIsImZpcnN0IiwiZ2VuZGVyIiwiaWQiLCJpbWFnZUlkIiwibGFzdCIsImxhc3RBY3RpdmUiLCJsb2NhbGUiLCJtYWlsaW5nTGlzdCIsInBhc3N3b3JkIiwicGhvbmUiLCJzYWx0Iiwic3RhdGUiLCJzdHJlZXQxIiwic3RyZWV0MiIsInN0cmlwZUFjY291bnRJZCIsInN0cmlwZUN1c3RvbWVySWQiLCJ0YWdzIiwiYXJyYXkiLCJhbnkiLCJ0aW1lem9uZSIsInR5cGUiLCJ1c2VyQWNjZXNzIiwidXNlcklkIiwidXNlcm5hbWUiLCJ2ZXJpZmllZEVtYWlsIiwidmVyaWZpZWRFbWFpbENvZGUiLCJ2ZXJpZmllZEVtYWlsRXhwaXJlcyIsInZlcmlmaWVkUGhvbmUiLCJ2ZXJpZmllZFBob25lRXhwaXJlcyIsInZlcmlmaWVkU21zQ29kZSIsInppcCIsInBhc3N0aHJvdWdoIiwidmFsaWRhdGVDb3VudHJ5IiwidW5kZWZpbmVkIiwidXBwZXIiLCJ0b1VwcGVyQ2FzZSIsInRlc3QiLCJ2YWxpZGF0ZVN0YXRlIiwidmFsaWRhdGVHZW5kZXIiLCJ1c2VyQ2FjaGUiLCJNYXAiLCJ2YWxpZGF0ZVVzZXJJbnB1dCIsInVzZXIiLCJ2YWxpZGF0ZWQiLCJwYXJzZSIsImVycm9yIiwiWm9kRXJyb3IiLCJmaWVsZEVycm9ycyIsImlzc3VlcyIsIm1hcCIsImUiLCJwYXRoIiwiam9pbiIsImZvcm1hdFVzZXJPdXRwdXQiLCJzYWZlVXNlciIsInBhcnNlVXNlciIsInBhcnNlZCIsInBlcmZvcm1Vc2VyVHJhbnNmb3JtYXRpb24iLCJ0cmFuc2Zvcm1lZCIsImZpbHRlciIsInRhZyIsInJlc3VsdCIsImNsZWFyVXNlckNhY2hlIiwiY2xlYXIiLCJnZXRVc2VyQ2FjaGVTaXplIiwic2l6ZSIsInBhcnNlVXNlckxlZ2FjeSJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUUEsQ0FBQyxRQUFPLE1BQU07QUFFdEIsU0FBUUMsUUFBUSxRQUFPLCtCQUErQjtBQUN0RCxTQUFRQyxhQUFhLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLGFBQWEsRUFBRUMsVUFBVSxFQUFFQyxXQUFXLEVBQUVDLFlBQVksUUFBTywrQkFBK0I7QUFFakosU0FBUUMsZUFBZSxRQUFPLDJCQUEyQjtBQUN6RCxTQUFRQyxhQUFhLFFBQU8scUJBQXFCO0FBQ2pELFNBQVFDLGdCQUFnQixFQUFFQyxrQkFBa0IsRUFBRUMsZ0JBQWdCLEVBQUVDLGdCQUFnQixRQUFPLHNCQUFzQjtBQUM3RyxTQUFRQyxRQUFRLFFBQU8sa0JBQWtCO0FBRXpDLE9BQU8sTUFBTUMsNEJBQTRCQzs7SUFDdkMsWUFBWUMsT0FBZSxFQUFFLEFBQU9DLEtBQWMsQ0FBRTtRQUNsRCxLQUFLLENBQUNELGVBRDRCQyxRQUFBQTtRQUVsQyxJQUFJLENBQUNDLElBQUksR0FBRztJQUNkO0FBQ0Y7QUFFQSxNQUFNQyxrQkFBa0J0QixFQUFFdUIsTUFBTSxDQUFDO0lBQy9CQyxLQUFLeEIsRUFBRXlCLE1BQU0sR0FBR0MsUUFBUTtJQUN4QkMsTUFBTTNCLEVBQUV5QixNQUFNLEdBQUdDLFFBQVE7SUFDekJFLFFBQVE1QixFQUFFNkIsT0FBTyxHQUFHSCxRQUFRO0lBQzVCSSxRQUFROUIsRUFBRXlCLE1BQU0sR0FBR00sR0FBRyxDQUFDLEtBQUtMLFFBQVE7SUFDcENNLE1BQU1oQyxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUNsQ08sU0FBU2pDLEVBQUV5QixNQUFNLEdBQUdTLE1BQU0sQ0FBQyxHQUFHUixRQUFRO0lBQ3RDUyxVQUFVbkMsRUFBRXlCLE1BQU0sR0FBR1MsTUFBTSxDQUFDLEdBQUdSLFFBQVE7SUFDdkNVLGFBQWFwQyxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUN6Q1csS0FBS3JDLEVBQUVzQyxNQUFNLEdBQUdaLFFBQVE7SUFDeEJhLE9BQU92QyxFQUFFeUIsTUFBTSxHQUFHYyxLQUFLLEdBQUdiLFFBQVE7SUFDbENjLE9BQU94QyxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUNuQ2UsUUFBUXpDLEVBQUV5QixNQUFNLEdBQUdTLE1BQU0sQ0FBQyxHQUFHUixRQUFRO0lBQ3JDZ0IsSUFBSTFDLEVBQUV5QixNQUFNLEdBQUdDLFFBQVE7SUFDdkJpQixTQUFTM0MsRUFBRXlCLE1BQU0sR0FBR0MsUUFBUTtJQUM1QmtCLE1BQU01QyxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUNsQ21CLFlBQVk3QyxFQUFFc0MsTUFBTSxHQUFHWixRQUFRO0lBQy9Cb0IsUUFBUTlDLEVBQUV5QixNQUFNLEdBQUdNLEdBQUcsQ0FBQyxHQUFHTCxRQUFRO0lBQ2xDcUIsYUFBYS9DLEVBQUU2QixPQUFPLEdBQUdILFFBQVE7SUFDakNMLE1BQU1yQixFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUNsQ3NCLFVBQVVoRCxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUN0Q3VCLE9BQU9qRCxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsSUFBSUwsUUFBUTtJQUNsQ3dCLE1BQU1sRCxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUNsQ3lCLE9BQU9uRCxFQUFFeUIsTUFBTSxHQUFHUyxNQUFNLENBQUMsR0FBR1IsUUFBUTtJQUNwQzBCLFNBQVNwRCxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUNyQzJCLFNBQVNyRCxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUNyQzRCLGlCQUFpQnRELEVBQUV5QixNQUFNLEdBQUdNLEdBQUcsQ0FBQyxLQUFLTCxRQUFRO0lBQzdDNkIsa0JBQWtCdkQsRUFBRXlCLE1BQU0sR0FBR00sR0FBRyxDQUFDLEtBQUtMLFFBQVE7SUFDOUM4QixNQUFNeEQsRUFBRXlELEtBQUssQ0FBQ3pELEVBQUUwRCxHQUFHLElBQUloQyxRQUFRO0lBQy9CaUMsVUFBVTNELEVBQUV5QixNQUFNLEdBQUdNLEdBQUcsQ0FBQyxLQUFLTCxRQUFRO0lBQ3RDa0MsTUFBTTVELEVBQUV5QixNQUFNLEdBQUdNLEdBQUcsQ0FBQyxLQUFLTCxRQUFRO0lBQ2xDbUMsWUFBWTdELEVBQUVzQyxNQUFNLEdBQUdaLFFBQVE7SUFDL0JvQyxRQUFROUQsRUFBRXlCLE1BQU0sR0FBR0MsUUFBUTtJQUMzQnFDLFVBQVUvRCxFQUFFeUIsTUFBTSxHQUFHTSxHQUFHLENBQUMsS0FBS0wsUUFBUTtJQUN0Q3NDLGVBQWVoRSxFQUFFNkIsT0FBTyxHQUFHSCxRQUFRO0lBQ25DdUMsbUJBQW1CakUsRUFBRXNDLE1BQU0sR0FBR1osUUFBUTtJQUN0Q3dDLHNCQUFzQmxFLEVBQUVzQyxNQUFNLEdBQUdaLFFBQVE7SUFDekN5QyxlQUFlbkUsRUFBRTZCLE9BQU8sR0FBR0gsUUFBUTtJQUNuQzBDLHNCQUFzQnBFLEVBQUVzQyxNQUFNLEdBQUdaLFFBQVE7SUFDekMyQyxpQkFBaUJyRSxFQUFFc0MsTUFBTSxHQUFHWixRQUFRO0lBQ3BDNEMsS0FBS3RFLEVBQUV5QixNQUFNLEdBQUdNLEdBQUcsQ0FBQyxJQUFJTCxRQUFRO0FBQ2xDLEdBQUc2QyxXQUFXO0FBRWQsTUFBTUMsa0JBQWtCLENBQUN2QztJQUN2QixJQUFHLENBQUNBLFNBQVM7UUFDWCxPQUFPd0M7SUFDVDtJQUNBLE1BQU1DLFFBQVF6QyxRQUFRMEMsV0FBVztJQUNqQyxJQUFHLENBQUMsYUFBYUMsSUFBSSxDQUFDRixRQUFRO1FBQzVCLE1BQU0sSUFBSXpELG9CQUFvQix1Q0FBdUM7SUFDdkU7SUFDQSxPQUFPeUQ7QUFDVDtBQUVBLE1BQU1HLGdCQUFnQixDQUFDMUI7SUFDckIsSUFBRyxDQUFDQSxPQUFPO1FBQ1QsT0FBT3NCO0lBQ1Q7SUFDQSxNQUFNQyxRQUFRdkIsTUFBTXdCLFdBQVc7SUFDL0IsSUFBRyxDQUFDLGFBQWFDLElBQUksQ0FBQ0YsUUFBUTtRQUM1QixNQUFNLElBQUl6RCxvQkFBb0IsaUNBQWlDO0lBQ2pFO0lBQ0EsT0FBT3lEO0FBQ1Q7QUFFQSxNQUFNSSxpQkFBaUIsQ0FBQ3JDO0lBQ3RCLElBQUcsQ0FBQ0EsUUFBUTtRQUNWLE9BQU9nQztJQUNUO0lBQ0EsTUFBTUMsUUFBUWpDLE9BQU9rQyxXQUFXO0lBQ2hDLElBQUcsQ0FBQyxTQUFTQyxJQUFJLENBQUNGLFFBQVE7UUFDeEIsTUFBTSxJQUFJekQsb0JBQW9CLHlCQUF5QjtJQUN6RDtJQUNBLE9BQU95RDtBQUNUO0FBRUEsTUFBTUssWUFBWSxJQUFJQztBQUV0QixPQUFPLE1BQU1DLG9CQUFvQixDQUFDQztJQUNoQyxJQUFJO1FBQ0YsTUFBTUMsWUFBWTdELGdCQUFnQjhELEtBQUssQ0FBQ0Y7UUFDeEMsT0FBT0M7SUFDVCxFQUFFLE9BQU1FLE9BQU87UUFDYixJQUFHQSxpQkFBaUJyRixFQUFFc0YsUUFBUSxFQUFFO1lBQzlCLE1BQU1DLGNBQWNGLE1BQU1HLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLElBQU0sR0FBR0EsRUFBRUMsSUFBSSxDQUFDQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUVGLEVBQUV2RSxPQUFPLEVBQUUsRUFBRXlFLElBQUksQ0FBQztZQUN0RixNQUFNLElBQUkzRSxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRXNFLGFBQWE7UUFDeEU7UUFDQSxNQUFNRjtJQUNSO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTVEsbUJBQW1CLENBQUNYO0lBQy9CLE1BQU0sRUFBQ2xDLFFBQVEsRUFBRUUsSUFBSSxFQUFFZSxpQkFBaUIsRUFBRUksZUFBZSxFQUFFLEdBQUd5QixVQUFTLEdBQUdaO0lBQzFFLE9BQU9ZO0FBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTUMsWUFBWSxDQUFDYjtJQUN4QixJQUFJO1FBQ0YsTUFBTWMsU0FBU0MsMEJBQTBCZjtRQUN6QyxPQUFPYztJQUNULEVBQUUsT0FBTVgsT0FBTztRQUNiLElBQUdBLGlCQUFpQnBFLHFCQUFxQjtZQUN2QyxNQUFNb0U7UUFDUjtRQUNBLE1BQU0sSUFBSXBFLG9CQUFvQixDQUFDLHFCQUFxQixFQUFFb0UsaUJBQWlCbkUsUUFBUW1FLE1BQU1sRSxPQUFPLEdBQUcsaUJBQWlCO0lBQ2xIO0FBQ0YsRUFBRTtBQUVGLE1BQU04RSw0QkFBNEIsQ0FBQ2Y7SUFDakMsTUFBTSxFQUNKMUQsR0FBRyxFQUNIRyxJQUFJLEVBQ0pDLE1BQU0sRUFDTkUsTUFBTSxFQUNORSxJQUFJLEVBQ0pDLE9BQU8sRUFDUEUsUUFBUSxFQUNSQyxXQUFXLEVBQ1hDLEdBQUcsRUFDSEUsS0FBSyxFQUNMQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsRUFBRSxFQUNGQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLFdBQVcsRUFDWDFCLElBQUksRUFDSjJCLFFBQVEsRUFDUkMsS0FBSyxFQUNMQyxJQUFJLEVBQ0pDLEtBQUssRUFDTEMsT0FBTyxFQUNQQyxPQUFPLEVBQ1BDLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxJQUFJLEVBQ0pHLFFBQVEsRUFDUkMsSUFBSSxFQUNKQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxhQUFhLEVBQ2JDLGlCQUFpQixFQUNqQkMsb0JBQW9CLEVBQ3BCQyxhQUFhLEVBQ2JDLG9CQUFvQixFQUNwQkMsZUFBZSxFQUNmQyxHQUFHLEVBQ0osR0FBR1k7SUFDSixNQUFNZ0IsY0FBYztRQUNsQixHQUFHdkYsY0FBY3VFLEtBQUs7UUFDdEIsR0FBSXRELFdBQVc2QyxhQUFhO1lBQUM3QyxRQUFRLENBQUMsQ0FBQ0E7UUFBTSxDQUFDO1FBQzlDLEdBQUlFLFVBQVU7WUFBQ0EsUUFBUXJCLGFBQWFxQixRQUFRO1FBQUksQ0FBQztRQUNqRCxHQUFJRSxRQUFRO1lBQUNBLE1BQU12QixhQUFhdUIsTUFBTTtRQUFJLENBQUM7UUFDM0MsR0FBSUMsV0FBVztZQUFDQSxTQUFTdUMsZ0JBQWdCdkM7UUFBUSxDQUFDO1FBQ2xELEdBQUlFLFlBQVk7WUFBQ0EsVUFBVWhDLFVBQVVnQyxVQUFVLEdBQUd3QyxXQUFXO1FBQUUsQ0FBQztRQUNoRSxHQUFJdkMsZUFBZTtZQUFDQSxhQUFhM0IsYUFBYTJCLGFBQWE7UUFBSSxDQUFDO1FBQ2hFLEdBQUlDLFFBQVFvQyxhQUFhO1lBQUNwQyxLQUFLekIsaUJBQWlCeUI7UUFBSSxDQUFDO1FBQ3JELEdBQUlFLFNBQVM7WUFBQ0EsT0FBT25DLFdBQVdtQztRQUFNLENBQUM7UUFDdkMsR0FBSUMsU0FBUztZQUFDQSxPQUFPL0IsYUFBYStCLE9BQU87UUFBSSxDQUFDO1FBQzlDLEdBQUlDLFVBQVU7WUFBQ0EsUUFBUXFDLGVBQWVyQztRQUFPLENBQUM7UUFDOUMsR0FBSSxBQUFDQyxDQUFBQSxNQUFNbEIsT0FBT0csUUFBUW1DLE1BQUssS0FBTTtZQUFDcEIsSUFBSXhDLGNBQWN3QyxNQUFNbEIsT0FBTyxDQUFDLE1BQU0sRUFBRUcsUUFBUW1DLFFBQVE7UUFBQyxDQUFDO1FBQ2hHLEdBQUluQixXQUFXO1lBQUNBLFNBQVM5QixtQkFBbUI4QjtRQUFRLENBQUM7UUFDckQsR0FBSUMsUUFBUTtZQUFDQSxNQUFNbkMsYUFBYW1DLE1BQU07UUFBSSxDQUFDO1FBQzNDLEdBQUlDLGVBQWU0QixhQUFhO1lBQUM1QixZQUFZakMsaUJBQWlCaUM7UUFBVyxDQUFDO1FBQzFFLEdBQUlDLFVBQVU7WUFBQ0EsUUFBUXRDLFlBQVlzQyxRQUFRO1FBQUUsQ0FBQztRQUM5QyxHQUFJQyxnQkFBZ0IwQixhQUFhO1lBQUMxQixhQUFhLENBQUMsQ0FBQ0E7UUFBVyxDQUFDO1FBQzdELEdBQUkxQixRQUFRO1lBQUNBLE1BQU1QLGlCQUFpQk87UUFBSyxDQUFDO1FBQzFDLEdBQUkyQixZQUFZO1lBQUNBLFVBQVUxQyxjQUFjMEM7UUFBUyxDQUFDO1FBQ25ELEdBQUlDLFNBQVM7WUFBQ0EsT0FBTzFDLFdBQVcwQztRQUFNLENBQUM7UUFDdkMsR0FBSUMsUUFBUTtZQUFDQSxNQUFNekMsYUFBYXlDLE1BQU07UUFBSSxDQUFDO1FBQzNDLEdBQUlDLFNBQVM7WUFBQ0EsT0FBTzBCLGNBQWMxQjtRQUFNLENBQUM7UUFDMUMsR0FBSUMsV0FBVztZQUFDQSxTQUFTM0MsYUFBYTJDLFNBQVM7UUFBSSxDQUFDO1FBQ3BELEdBQUlDLFdBQVc7WUFBQ0EsU0FBUzVDLGFBQWE0QyxTQUFTO1FBQUksQ0FBQztRQUNwRCxHQUFJQyxtQkFBbUI7WUFBQ0EsaUJBQWlCN0MsYUFBYTZDLGlCQUFpQjtRQUFJLENBQUM7UUFDNUUsR0FBSUMsb0JBQW9CO1lBQUNBLGtCQUFrQjlDLGFBQWE4QyxrQkFBa0I7UUFBSSxDQUFDO1FBQy9FLEdBQUlDLE1BQU10QixVQUFVO1lBQUNzQixNQUFNQSxLQUFLMkMsTUFBTSxDQUFDLENBQUNDLE1BQVEsQ0FBQyxDQUFDQSxLQUFLWCxHQUFHLENBQUMsQ0FBQ1csTUFBUXBGLFNBQVNvRjtRQUFLLENBQUM7UUFDbkYsR0FBSXpDLFlBQVk7WUFBQ0EsVUFBVW5ELFlBQVltRCxVQUFVO1FBQUksQ0FBQztRQUN0RCxHQUFJQyxRQUFRO1lBQUNBLE1BQU03QyxpQkFBaUI2QztRQUFLLENBQUM7UUFDMUMsR0FBSUMsZUFBZVksYUFBYTtZQUFDWixZQUFZQSxhQUFhNUQsU0FBUzRELGNBQWM7UUFBQyxDQUFDO1FBQ25GLEdBQUksQUFBQ0MsQ0FBQUEsVUFBVW5DLElBQUcsS0FBTTtZQUFDbUMsUUFBUXpELFFBQVFzQixRQUFRbUMsVUFBVTtRQUFHLENBQUM7UUFDL0QsR0FBSUMsWUFBWTtZQUFDQSxVQUFVdkQsWUFBWXVELFVBQVU7UUFBSSxDQUFDO1FBQ3RELEdBQUlDLGtCQUFrQlMsYUFBYTtZQUFDVCxlQUFlLENBQUMsQ0FBQ0E7UUFBYSxDQUFDO1FBQ25FLEdBQUlDLHNCQUFzQlEsYUFBYTtZQUFDUixtQkFBbUJoRSxTQUFTZ0UsbUJBQW1CO1FBQUcsQ0FBQztRQUMzRixHQUFJQyx5QkFBeUJPLGFBQWE7WUFBQ1Asc0JBQXNCakUsU0FBU2lFLHNCQUFzQjtRQUFHLENBQUM7UUFDcEcsR0FBSUMsa0JBQWtCTSxhQUFhO1lBQUNOLGVBQWUsQ0FBQyxDQUFDQTtRQUFhLENBQUM7UUFDbkUsR0FBSUMseUJBQXlCSyxhQUFhO1lBQUNMLHNCQUFzQm5FLFNBQVNtRSxzQkFBc0I7UUFBRyxDQUFDO1FBQ3BHLEdBQUlDLG9CQUFvQkksYUFBYTtZQUFDSixpQkFBaUJwRSxTQUFTb0UsaUJBQWlCO1FBQUcsQ0FBQztRQUNyRixHQUFJQyxPQUFPO1lBQUNBLEtBQUs3RCxhQUFhNkQsS0FBSztRQUFHLENBQUM7SUFDekM7SUFFQSxNQUFNK0IsU0FBUzNGLGdCQUFnQndGO0lBRS9CLElBQUdoQixLQUFLMUQsR0FBRyxFQUFFO1FBQ1g2RSxPQUFPM0QsRUFBRSxHQUFHd0MsS0FBSzFELEdBQUc7UUFDcEI2RSxPQUFPN0UsR0FBRyxHQUFHMEQsS0FBSzFELEdBQUc7SUFDdkIsT0FBTyxJQUFHMEQsS0FBS3hDLEVBQUUsSUFBSSxDQUFDMkQsT0FBTzNELEVBQUUsRUFBRTtRQUMvQjJELE9BQU8zRCxFQUFFLEdBQUd3QyxLQUFLeEMsRUFBRTtRQUNuQjJELE9BQU83RSxHQUFHLEdBQUcwRCxLQUFLeEMsRUFBRTtJQUN0QjtJQUVBLElBQUd3QyxLQUFLdkQsSUFBSSxFQUFFO1FBQ1owRSxPQUFPdkMsTUFBTSxHQUFHb0IsS0FBS3ZELElBQUk7UUFDekIwRSxPQUFPMUUsSUFBSSxHQUFHdUQsS0FBS3ZELElBQUk7SUFDekIsT0FBTyxJQUFHdUQsS0FBS3BCLE1BQU0sSUFBSSxDQUFDdUMsT0FBT3ZDLE1BQU0sRUFBRTtRQUN2Q3VDLE9BQU92QyxNQUFNLEdBQUdvQixLQUFLcEIsTUFBTTtRQUMzQnVDLE9BQU8xRSxJQUFJLEdBQUd1RCxLQUFLcEIsTUFBTTtJQUMzQjtJQUVBLElBQUdvQixLQUFLcEIsTUFBTSxJQUFJLENBQUN1QyxPQUFPMUUsSUFBSSxFQUFFO1FBQzlCMEUsT0FBTzFFLElBQUksR0FBR3VELEtBQUtwQixNQUFNO0lBQzNCO0lBRUEsSUFBR29CLEtBQUt4QyxFQUFFLElBQUksQ0FBQzJELE9BQU83RSxHQUFHLEVBQUU7UUFDekI2RSxPQUFPN0UsR0FBRyxHQUFHMEQsS0FBS3hDLEVBQUU7SUFDdEI7SUFFQSxPQUFPMkQ7QUFDVDtBQUVBLE9BQU8sTUFBTUMsaUJBQWlCO0lBQzVCdkIsVUFBVXdCLEtBQUs7QUFDakIsRUFBRTtBQUVGLE9BQU8sTUFBTUMsbUJBQW1CLElBQWN6QixVQUFVMEIsSUFBSSxDQUFDO0FBRTdELFNBQVExQixTQUFTLEdBQUU7QUFFbkIsT0FBTyxNQUFNMkIsa0JBQWtCLENBQUN4QixPQUE2QmEsVUFBVWIsTUFBTSJ9
package/lib/config.d.ts CHANGED
@@ -55,3 +55,4 @@ export declare class Config {
55
55
  static reset(): void;
56
56
  static get<T = any>(path?: string | string[], defaultValue?: T): T;
57
57
  }
58
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;KACnC,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE;QACZ,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAQ;IAEpC,MAAM,CAAC,MAAM,IAAI,SAAS;IAsH1B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAa1D,MAAM,CAAC,KAAK,IAAI,IAAI;IAKpB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC;CAgBnE"}
package/lib/config.js CHANGED
@@ -1,2 +1,161 @@
1
- import{get as i}from"@nlabs/utils/objects/get";import{merge as t}from"@nlabs/utils/objects/merge";import{readFileSync as l}from"fs";import{dirname as g,join as A}from"path";import{fileURLToPath as u}from"url";const y=u(import.meta.url),m=g(y),f=A(m,"..","package.json"),p=JSON.parse(l(f,"utf8"));class k{static updatedConfig=null;static values(){return{development:{arangodb:{database:process.env.ARANGODB_DATABASE||"reaktor",password:process.env.ARANGODB_PASSWORD||"password",port:process.env.ARANGODB_PORT||"8529",url:process.env.ARANGODB_URL||"http://localhost",username:process.env.ARANGODB_USERNAME||"root"},aws:{s3:{Bucket:"dev.reaktor.io"}}},local:{arangodb:{database:process.env.ARANGODB_DATABASE||"reaktor",password:process.env.ARANGODB_PASSWORD||"password",port:process.env.ARANGODB_PORT||"8529",url:process.env.ARANGODB_URL||"http://localhost",username:process.env.ARANGODB_USERNAME||"root"},aws:{credentials:{accessKeyId:process.env.AWS_ACCESS_KEY_ID,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY},maxRetries:3,region:"us-east-1",s3:{Bucket:"dev.reaktor.io"},signatureVersion:"v4"},details:{id:"reaktor",locale:"en-US",name:"Reaktor",supportEmail:"support@reaktor.io",supportName:"Reaktor Support",url:"reaktor.io",version:p.version},giphy:{key:"dc6zaTOxFJmzC"},google:{analytics:{accountId:"78158717",trackingId:"UA-78158717-1"},geocode:{key:"AIzaSyBwjmpBjWhiJoBCZiYzRurM9m4WnCxslv0",url:"https://maps.googleapis.com/maps/api/geocode/json"},key:"AIzaSyC3_f2Us3y0qjbyMJ-4t5ObtCzfq_FHIgQ"},image:{imgQuality:90,imgSize:1500,thmQuality:80,thmSize:150},stripe:{token:"sk_test_LS956be57YUXTB5a4sLGb5BQ"},twilio:{number:"+15005550006",sid:"AC6bd7f513cbed2e5134c650be06cc732e",token:"520ae739e761bab759b147f1ad28278f"}},production:{arangodb:{database:process.env.ARANGODB_DATABASE||"reaktor",dump:"/usr/bin/arangodump",password:process.env.ARANGODB_PASSWORD||"password",port:process.env.ARANGODB_PORT||"8529",restore:"/usr/bin/arangorestore",url:process.env.ARANGODB_URL||"http://localhost",username:process.env.ARANGODB_USERNAME||"root"},aws:{s3:{Bucket:"box.reaktor.io"}},stripe:{token:"sk_live_bElZl8RLhMCJy33KG4lyLD4o"},twilio:{number:"+18554165227",sid:"AC90b0528a911e652d643329a4d7b4d2c7",token:"a7941d173bd4846d0966a186e9865b72"}},test:{arangodb:{database:process.env.ARANGODB_DATABASE||"reaktor-test",password:process.env.ARANGODB_PASSWORD||"password",port:process.env.ARANGODB_PORT||"8529",url:process.env.ARANGODB_URL||"http://localhost",username:process.env.ARANGODB_USERNAME||"root"},details:{id:"reaktor-test",locale:"en-US",name:"Reaktor Test",supportEmail:"support@reaktor.io",url:"reaktor.io",version:p.version}}}}static set(e,s){const o=this.get(),r=s||process.env.stage||process.env.NODE_ENV||"local";return e[r]?this.updatedConfig=t({},o,e[r]):this.updatedConfig=t({},o,e),{...this.updatedConfig}}static reset(){this.updatedConfig=null}static get(e,s){const o=this.updatedConfig||this.values(),r=process.env.stage||process.env.NODE_ENV||"local";if(this.updatedConfig){const d=this.updatedConfig[r]||{},a=t({},o,d);return e?i(a,e,s):a}const c=o.local,n=t({},c,o[r]||{});return e?i(n,e,s):n}}export{k as Config};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0fSBmcm9tICdAbmxhYnMvdXRpbHMvb2JqZWN0cy9nZXQnO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAnQG5sYWJzL3V0aWxzL29iamVjdHMvbWVyZ2UnO1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7ZGlybmFtZSwgam9pbn0gZnJvbSAncGF0aCc7XG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gJ3VybCc7XG5cbmNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCk7XG5jb25zdCBfX2Rpcm5hbWUgPSBkaXJuYW1lKF9fZmlsZW5hbWUpO1xuY29uc3QgcGFja2FnZUpzb25QYXRoID0gam9pbihfX2Rpcm5hbWUsICcuLicsICdwYWNrYWdlLmpzb24nKTtcbmNvbnN0IGFwcFBhY2thZ2UgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhwYWNrYWdlSnNvblBhdGgsICd1dGY4JykpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFyYW5nb0RCQ29uZmlnIHtcbiAgcmVhZG9ubHkgZGF0YWJhc2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGR1bXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogc3RyaW5nO1xuICByZWFkb25seSBwb3J0Pzogc3RyaW5nO1xuICByZWFkb25seSByZXN0b3JlPzogc3RyaW5nO1xuICByZWFkb25seSB1cmw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZyB7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IGFueTtcbiAgcmVhZG9ubHkgZGV0YWlscz86IEFwcERldGFpbHM7XG4gIHJlYWRvbmx5IGFyYW5nb2RiPzogQXJhbmdvREJDb25maWc7XG4gIHJlYWRvbmx5IGF3cz86IEF3c0NvbmZpZztcbiAgcmVhZG9ubHkgZ2lwaHk/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IGdvb2dsZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgaW1hZ2U/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHN0cmlwZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgdHdpbGlvPzogb2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcERldGFpbHMge1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgbG9jYWxlPzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBzdXBwb3J0RW1haWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN1cHBvcnROYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB1cmw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzQ29uZmlnIHtcbiAgcmVhZG9ubHkgY3JlZGVudGlhbHM/OiB7XG4gICAgcmVhZG9ubHkgYWNjZXNzS2V5SWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc2VjcmV0QWNjZXNzS2V5Pzogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBtYXhSZXRyaWVzPzogbnVtYmVyO1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHMzPzoge1xuICAgIHJlYWRvbmx5IEJ1Y2tldD86IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgc2lnbmF0dXJlVmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZDb25maWcge1xuICByZWFkb25seSBsb2NhbDogQXBwQ29uZmlnO1xuICByZWFkb25seSBkZXZlbG9wbWVudDogQXBwQ29uZmlnO1xuICByZWFkb25seSBwcm9kdWN0aW9uOiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IHRlc3Q6IEFwcENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHb29nbGVDb25maWcge1xuICByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENvbmZpZyB7XG4gIHByaXZhdGUgc3RhdGljIHVwZGF0ZWRDb25maWcgPSBudWxsO1xuXG4gIHN0YXRpYyB2YWx1ZXMoKTogRW52Q29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgYXJhbmdvZGI6IHtcbiAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJ3JlYWt0b3InLFxuICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5BUkFOR09EQl9QQVNTV09SRCB8fCAncGFzc3dvcmQnLFxuICAgICAgICAgIHBvcnQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BPUlQgfHwgJzg1MjknLFxuICAgICAgICAgIHVybDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfVVJMIHx8ICdodHRwOi8vbG9jYWxob3N0JyxcbiAgICAgICAgICB1c2VybmFtZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfVVNFUk5BTUUgfHwgJ3Jvb3QnXG4gICAgICAgIH0sXG4gICAgICAgIGF3czoge1xuICAgICAgICAgIHMzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6ICdkZXYucmVha3Rvci5pbydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsb2NhbDoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3RvcicsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgIGFjY2Vzc0tleUlkOiBwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogcHJvY2Vzcy5lbnYuQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYXhSZXRyaWVzOiAzLFxuICAgICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgICAgczM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogJ2Rldi5yZWFrdG9yLmlvJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2lnbmF0dXJlVmVyc2lvbjogJ3Y0J1xuICAgICAgICB9LFxuICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgaWQ6ICdyZWFrdG9yJyxcbiAgICAgICAgICBsb2NhbGU6ICdlbi1VUycsXG4gICAgICAgICAgbmFtZTogJ1JlYWt0b3InLFxuICAgICAgICAgIHN1cHBvcnRFbWFpbDogJ3N1cHBvcnRAcmVha3Rvci5pbycsXG4gICAgICAgICAgc3VwcG9ydE5hbWU6ICdSZWFrdG9yIFN1cHBvcnQnLFxuICAgICAgICAgIHVybDogJ3JlYWt0b3IuaW8nLFxuICAgICAgICAgIHZlcnNpb246IGFwcFBhY2thZ2UudmVyc2lvblxuICAgICAgICB9LFxuICAgICAgICBnaXBoeToge1xuICAgICAgICAgIGtleTogJ2RjNnphVE94RkptekMnXG4gICAgICAgIH0sXG4gICAgICAgIGdvb2dsZToge1xuICAgICAgICAgIGFuYWx5dGljczoge1xuICAgICAgICAgICAgYWNjb3VudElkOiAnNzgxNTg3MTcnLFxuICAgICAgICAgICAgdHJhY2tpbmdJZDogJ1VBLTc4MTU4NzE3LTEnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZW9jb2RlOiB7XG4gICAgICAgICAgICBrZXk6ICdBSXphU3lCd2ptcEJqV2hpSm9CQ1ppWXpSdXJNOW00V25DeHNsdjAnLFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2dlb2NvZGUvanNvbidcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtleTogJ0FJemFTeUMzX2YyVXMzeTBxamJ5TUotNHQ1T2J0Q3pmcV9GSElnUSdcbiAgICAgICAgfSxcbiAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICBpbWdRdWFsaXR5OiA5MCxcbiAgICAgICAgICBpbWdTaXplOiAxNTAwLFxuICAgICAgICAgIHRobVF1YWxpdHk6IDgwLFxuICAgICAgICAgIHRobVNpemU6IDE1MFxuICAgICAgICB9LFxuICAgICAgICBzdHJpcGU6IHtcbiAgICAgICAgICB0b2tlbjogJ3NrX3Rlc3RfTFM5NTZiZTU3WVVYVEI1YTRzTEdiNUJRJ1xuICAgICAgICB9LFxuICAgICAgICB0d2lsaW86IHtcbiAgICAgICAgICBudW1iZXI6ICcrMTUwMDU1NTAwMDYnLFxuICAgICAgICAgIHNpZDogJ0FDNmJkN2Y1MTNjYmVkMmU1MTM0YzY1MGJlMDZjYzczMmUnLFxuICAgICAgICAgIHRva2VuOiAnNTIwYWU3MzllNzYxYmFiNzU5YjE0N2YxYWQyODI3OGYnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICdyZWFrdG9yJyxcbiAgICAgICAgICBkdW1wOiAnL3Vzci9iaW4vYXJhbmdvZHVtcCcsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgcmVzdG9yZTogJy91c3IvYmluL2FyYW5nb3Jlc3RvcmUnLFxuICAgICAgICAgIHVybDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfVVJMIHx8ICdodHRwOi8vbG9jYWxob3N0JyxcbiAgICAgICAgICB1c2VybmFtZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfVVNFUk5BTUUgfHwgJ3Jvb3QnXG4gICAgICAgIH0sXG4gICAgICAgIGF3czoge1xuICAgICAgICAgIHMzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6ICdib3gucmVha3Rvci5pbydcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHN0cmlwZToge1xuICAgICAgICAgIHRva2VuOiAnc2tfbGl2ZV9iRWxabDhSTGhNQ0p5MzNLRzRseUxENG8nXG4gICAgICAgIH0sXG4gICAgICAgIHR3aWxpbzoge1xuICAgICAgICAgIG51bWJlcjogJysxODU1NDE2NTIyNycsXG4gICAgICAgICAgc2lkOiAnQUM5MGIwNTI4YTkxMWU2NTJkNjQzMzI5YTRkN2I0ZDJjNycsXG4gICAgICAgICAgdG9rZW46ICdhNzk0MWQxNzNiZDQ4NDZkMDk2NmExODZlOTg2NWI3MidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRlc3Q6IHtcbiAgICAgICAgYXJhbmdvZGI6IHtcbiAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJ3JlYWt0b3ItdGVzdCcsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgIGlkOiAncmVha3Rvci10ZXN0JyxcbiAgICAgICAgICBsb2NhbGU6ICdlbi1VUycsXG4gICAgICAgICAgbmFtZTogJ1JlYWt0b3IgVGVzdCcsXG4gICAgICAgICAgc3VwcG9ydEVtYWlsOiAnc3VwcG9ydEByZWFrdG9yLmlvJyxcbiAgICAgICAgICB1cmw6ICdyZWFrdG9yLmlvJyxcbiAgICAgICAgICB2ZXJzaW9uOiBhcHBQYWNrYWdlLnZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgc2V0KG92ZXJyaWRlOiBvYmplY3QsIGVudmlyb25tZW50Pzogc3RyaW5nKTogb2JqZWN0IHtcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gdGhpcy5nZXQoKTtcbiAgICBjb25zdCB0YXJnZXRFbnZpcm9ubWVudCA9IGVudmlyb25tZW50IHx8IHByb2Nlc3MuZW52LnN0YWdlIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdsb2NhbCc7XG5cbiAgICBpZihvdmVycmlkZVt0YXJnZXRFbnZpcm9ubWVudF0pIHtcbiAgICAgIHRoaXMudXBkYXRlZENvbmZpZyA9IG1lcmdlKHt9LCBjdXJyZW50Q29uZmlnLCBvdmVycmlkZVt0YXJnZXRFbnZpcm9ubWVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZWRDb25maWcgPSBtZXJnZSh7fSwgY3VycmVudENvbmZpZywgb3ZlcnJpZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7Li4uKHRoaXMudXBkYXRlZENvbmZpZyBhcyB1bmtub3duIGFzIG9iamVjdCl9O1xuICB9XG5cbiAgc3RhdGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlZENvbmZpZyA9IG51bGw7XG4gIH1cblxuXG4gIHN0YXRpYyBnZXQ8VCA9IGFueT4ocGF0aD86IHN0cmluZyB8IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgY29uc3QgYmFzZUNvbmZpZyA9IHRoaXMudXBkYXRlZENvbmZpZyB8fCB0aGlzLnZhbHVlcygpO1xuICAgIGNvbnN0IGVudmlyb25tZW50OiBzdHJpbmcgPSBwcm9jZXNzLmVudi5zdGFnZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViB8fCAnbG9jYWwnO1xuXG4gICAgaWYodGhpcy51cGRhdGVkQ29uZmlnKSB7XG4gICAgICBjb25zdCBvdmVycmlkZUVudmlyb25tZW50Q29uZmlnID0gdGhpcy51cGRhdGVkQ29uZmlnW2Vudmlyb25tZW50XSB8fCB7fTtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG1lcmdlKHt9LCBiYXNlQ29uZmlnLCBvdmVycmlkZUVudmlyb25tZW50Q29uZmlnKTtcblxuICAgICAgcmV0dXJuIHBhdGggPyBnZXQoY29uZmlnLCBwYXRoLCBkZWZhdWx0VmFsdWUpIDogY29uZmlnO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsQ29uZmlnID0gYmFzZUNvbmZpZy5sb2NhbDtcbiAgICBjb25zdCBjb25maWcgPSBtZXJnZSh7fSwgbG9jYWxDb25maWcsIGJhc2VDb25maWdbZW52aXJvbm1lbnRdIHx8IHt9KTtcblxuICAgIHJldHVybiBwYXRoID8gZ2V0KGNvbmZpZywgcGF0aCwgZGVmYXVsdFZhbHVlKSA6IGNvbmZpZztcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxPQUFBQSxNQUFVLDJCQUNsQixPQUFRLFNBQUFDLE1BQVksNkJBQ3BCLE9BQVEsZ0JBQUFDLE1BQW1CLEtBQzNCLE9BQVEsV0FBQUMsRUFBUyxRQUFBQyxNQUFXLE9BQzVCLE9BQVEsaUJBQUFDLE1BQW9CLE1BRTVCLE1BQU1D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QyxFQUV6RSxLQUFLLGNBQWdCYixFQUFNLENBQUMsRUFBR1ksRUFBZUYsQ0FBUSxFQUdqRCxDQUFDLEdBQUksS0FBSyxhQUFtQyxDQUN0RCxDQUVBLE9BQU8sT0FBYyxDQUNuQixLQUFLLGNBQWdCLElBQ3ZCLENBR0EsT0FBTyxJQUFhSSxFQUEwQkMsRUFBcUIsQ0FDakUsTUFBTUMsRUFBYSxLQUFLLGVBQWlCLEtBQUssT0FBTyxFQUMvQ0wsRUFBc0IsUUFBUSxJQUFJLE9BQVMsUUFBUSxJQUFJLFVBQVksUUFFekUsR0FBRyxLQUFLLGNBQWUsQ0FDckIsTUFBTU0sRUFBNEIsS0FBSyxjQUFjTixDQUFXLEdBQUssQ0FBQyxFQUNoRU8sRUFBU2xCLEVBQU0sQ0FBQyxFQUFHZ0IsRUFBWUMsQ0FBeUIsRUFFOUQsT0FBT0gsRUFBT2YsRUFBSW1CLEVBQVFKLEVBQU1DLENBQVksRUFBSUcsQ0FDbEQsQ0FFQSxNQUFNQyxFQUFjSCxFQUFXLE1BQ3pCRSxFQUFTbEIsRUFBTSxDQUFDLEVBQUdtQixFQUFhSCxFQUFXTCxDQUFXLEdBQUssQ0FBQyxDQUFDLEVBRW5FLE9BQU9HLEVBQU9mLEVBQUltQixFQUFRSixFQUFNQyxDQUFZLEVBQUlHLENBQ2xELENBQ0YiLAogICJuYW1lcyI6IFsiZ2V0IiwgIm1lcmdlIiwgInJlYWRGaWxlU3luYyIsICJkaXJuYW1lIiwgImpvaW4iLCAiZmlsZVVSTFRvUGF0aCIsICJfX2ZpbGVuYW1lIiwgIl9fZGlybmFtZSIsICJwYWNrYWdlSnNvblBhdGgiLCAiYXBwUGFja2FnZSIsICJDb25maWciLCAib3ZlcnJpZGUiLCAiZW52aXJvbm1lbnQiLCAiY3VycmVudENvbmZpZyIsICJ0YXJnZXRFbnZpcm9ubWVudCIsICJwYXRoIiwgImRlZmF1bHRWYWx1ZSIsICJiYXNlQ29uZmlnIiwgIm92ZXJyaWRlRW52aXJvbm1lbnRDb25maWciLCAiY29uZmlnIiwgImxvY2FsQ29uZmlnIl0KfQo=
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 } from '@nlabs/utils/objects/get';
5
+ import { merge } from '@nlabs/utils/objects/merge';
6
+ import { readFileSync } from 'fs';
7
+ import { dirname, join } from 'path';
8
+ import { fileURLToPath } from 'url';
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
11
+ const packageJsonPath = join(__dirname, '..', 'package.json');
12
+ const appPackage = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
13
+ export class Config {
14
+ static updatedConfig = null;
15
+ static values() {
16
+ return {
17
+ development: {
18
+ arangodb: {
19
+ database: process.env.ARANGODB_DATABASE || 'reaktor',
20
+ password: process.env.ARANGODB_PASSWORD || 'password',
21
+ port: process.env.ARANGODB_PORT || '8529',
22
+ url: process.env.ARANGODB_URL || 'http://localhost',
23
+ username: process.env.ARANGODB_USERNAME || 'root'
24
+ },
25
+ aws: {
26
+ s3: {
27
+ Bucket: 'dev.reaktor.io'
28
+ }
29
+ }
30
+ },
31
+ local: {
32
+ arangodb: {
33
+ database: process.env.ARANGODB_DATABASE || 'reaktor',
34
+ password: process.env.ARANGODB_PASSWORD || 'password',
35
+ port: process.env.ARANGODB_PORT || '8529',
36
+ url: process.env.ARANGODB_URL || 'http://localhost',
37
+ username: process.env.ARANGODB_USERNAME || 'root'
38
+ },
39
+ aws: {
40
+ credentials: {
41
+ accessKeyId: process.env.AWS_ACCESS_KEY_ID,
42
+ secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
43
+ },
44
+ maxRetries: 3,
45
+ region: 'us-east-1',
46
+ s3: {
47
+ Bucket: 'dev.reaktor.io'
48
+ },
49
+ signatureVersion: 'v4'
50
+ },
51
+ details: {
52
+ id: 'reaktor',
53
+ locale: 'en-US',
54
+ name: 'Reaktor',
55
+ supportEmail: 'support@reaktor.io',
56
+ supportName: 'Reaktor Support',
57
+ url: 'reaktor.io',
58
+ version: appPackage.version
59
+ },
60
+ giphy: {
61
+ key: 'dc6zaTOxFJmzC'
62
+ },
63
+ google: {
64
+ analytics: {
65
+ accountId: '78158717',
66
+ trackingId: 'UA-78158717-1'
67
+ },
68
+ geocode: {
69
+ key: 'AIzaSyBwjmpBjWhiJoBCZiYzRurM9m4WnCxslv0',
70
+ url: 'https://maps.googleapis.com/maps/api/geocode/json'
71
+ },
72
+ key: 'AIzaSyC3_f2Us3y0qjbyMJ-4t5ObtCzfq_FHIgQ'
73
+ },
74
+ image: {
75
+ imgQuality: 90,
76
+ imgSize: 1500,
77
+ thmQuality: 80,
78
+ thmSize: 150
79
+ },
80
+ stripe: {
81
+ token: 'sk_test_LS956be57YUXTB5a4sLGb5BQ'
82
+ },
83
+ twilio: {
84
+ number: '+15005550006',
85
+ sid: 'AC6bd7f513cbed2e5134c650be06cc732e',
86
+ token: '520ae739e761bab759b147f1ad28278f'
87
+ }
88
+ },
89
+ production: {
90
+ arangodb: {
91
+ database: process.env.ARANGODB_DATABASE || 'reaktor',
92
+ dump: '/usr/bin/arangodump',
93
+ password: process.env.ARANGODB_PASSWORD || 'password',
94
+ port: process.env.ARANGODB_PORT || '8529',
95
+ restore: '/usr/bin/arangorestore',
96
+ url: process.env.ARANGODB_URL || 'http://localhost',
97
+ username: process.env.ARANGODB_USERNAME || 'root'
98
+ },
99
+ aws: {
100
+ s3: {
101
+ Bucket: 'box.reaktor.io'
102
+ }
103
+ },
104
+ stripe: {
105
+ token: 'sk_live_bElZl8RLhMCJy33KG4lyLD4o'
106
+ },
107
+ twilio: {
108
+ number: '+18554165227',
109
+ sid: 'AC90b0528a911e652d643329a4d7b4d2c7',
110
+ token: 'a7941d173bd4846d0966a186e9865b72'
111
+ }
112
+ },
113
+ test: {
114
+ arangodb: {
115
+ database: process.env.ARANGODB_DATABASE || 'reaktor-test',
116
+ password: process.env.ARANGODB_PASSWORD || 'password',
117
+ port: process.env.ARANGODB_PORT || '8529',
118
+ url: process.env.ARANGODB_URL || 'http://localhost',
119
+ username: process.env.ARANGODB_USERNAME || 'root'
120
+ },
121
+ details: {
122
+ id: 'reaktor-test',
123
+ locale: 'en-US',
124
+ name: 'Reaktor Test',
125
+ supportEmail: 'support@reaktor.io',
126
+ url: 'reaktor.io',
127
+ version: appPackage.version
128
+ }
129
+ }
130
+ };
131
+ }
132
+ static set(override, environment) {
133
+ const currentConfig = this.get();
134
+ const targetEnvironment = environment || process.env.stage || process.env.NODE_ENV || 'local';
135
+ if (override[targetEnvironment]) {
136
+ this.updatedConfig = merge({}, currentConfig, override[targetEnvironment]);
137
+ } else {
138
+ this.updatedConfig = merge({}, currentConfig, override);
139
+ }
140
+ return {
141
+ ...this.updatedConfig
142
+ };
143
+ }
144
+ static reset() {
145
+ this.updatedConfig = null;
146
+ }
147
+ static get(path, defaultValue) {
148
+ const baseConfig = this.updatedConfig || this.values();
149
+ const environment = process.env.stage || process.env.NODE_ENV || 'local';
150
+ if (this.updatedConfig) {
151
+ const overrideEnvironmentConfig = this.updatedConfig[environment] || {};
152
+ const config = merge({}, baseConfig, overrideEnvironmentConfig);
153
+ return path ? get(config, path, defaultValue) : config;
154
+ }
155
+ const localConfig = baseConfig.local;
156
+ const config = merge({}, localConfig, baseConfig[environment] || {});
157
+ return path ? get(config, path, defaultValue) : config;
158
+ }
159
+ }
160
+
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2NvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtnZXR9IGZyb20gJ0BubGFicy91dGlscy9vYmplY3RzL2dldCc7XG5pbXBvcnQge21lcmdlfSBmcm9tICdAbmxhYnMvdXRpbHMvb2JqZWN0cy9tZXJnZSc7XG5pbXBvcnQge3JlYWRGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtkaXJuYW1lLCBqb2lufSBmcm9tICdwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAndXJsJztcblxuY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IF9fZGlybmFtZSA9IGRpcm5hbWUoX19maWxlbmFtZSk7XG5jb25zdCBwYWNrYWdlSnNvblBhdGggPSBqb2luKF9fZGlybmFtZSwgJy4uJywgJ3BhY2thZ2UuanNvbicpO1xuY29uc3QgYXBwUGFja2FnZSA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VKc29uUGF0aCwgJ3V0ZjgnKSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJhbmdvREJDb25maWcge1xuICByZWFkb25seSBkYXRhYmFzZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZHVtcD86IHN0cmluZztcbiAgcmVhZG9ubHkgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBvcnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlc3RvcmU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogYW55O1xuICByZWFkb25seSBkZXRhaWxzPzogQXBwRGV0YWlscztcbiAgcmVhZG9ubHkgYXJhbmdvZGI/OiBBcmFuZ29EQkNvbmZpZztcbiAgcmVhZG9ubHkgYXdzPzogQXdzQ29uZmlnO1xuICByZWFkb25seSBnaXBoeT86IG9iamVjdDtcbiAgcmVhZG9ubHkgZ29vZ2xlPzogb2JqZWN0O1xuICByZWFkb25seSBpbWFnZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgc3RyaXBlPzogb2JqZWN0O1xuICByZWFkb25seSB0d2lsaW8/OiBvYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwRGV0YWlscyB7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBsb2NhbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN1cHBvcnRFbWFpbD86IHN0cmluZztcbiAgcmVhZG9ubHkgc3VwcG9ydE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBd3NDb25maWcge1xuICByZWFkb25seSBjcmVkZW50aWFscz86IHtcbiAgICByZWFkb25seSBhY2Nlc3NLZXlJZD86IHN0cmluZztcbiAgICByZWFkb25seSBzZWNyZXRBY2Nlc3NLZXk/OiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IG1heFJldHJpZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgczM/OiB7XG4gICAgcmVhZG9ubHkgQnVja2V0Pzogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBzaWduYXR1cmVWZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudkNvbmZpZyB7XG4gIHJlYWRvbmx5IGxvY2FsOiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IGRldmVsb3BtZW50OiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IHByb2R1Y3Rpb246IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgdGVzdDogQXBwQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdvb2dsZUNvbmZpZyB7XG4gIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlnIHtcbiAgcHJpdmF0ZSBzdGF0aWMgdXBkYXRlZENvbmZpZyA9IG51bGw7XG5cbiAgc3RhdGljIHZhbHVlcygpOiBFbnZDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBkZXZlbG9wbWVudDoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3RvcicsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgczM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogJ2Rldi5yZWFrdG9yLmlvJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxvY2FsOiB7XG4gICAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICdyZWFrdG9yJyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FIHx8ICdyb290J1xuICAgICAgICB9LFxuICAgICAgICBhd3M6IHtcbiAgICAgICAgICBjcmVkZW50aWFsczoge1xuICAgICAgICAgICAgYWNjZXNzS2V5SWQ6IHByb2Nlc3MuZW52LkFXU19BQ0NFU1NfS0VZX0lELFxuICAgICAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiBwcm9jZXNzLmVudi5BV1NfU0VDUkVUX0FDQ0VTU19LRVlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1heFJldHJpZXM6IDMsXG4gICAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgICBzMzoge1xuICAgICAgICAgICAgQnVja2V0OiAnZGV2LnJlYWt0b3IuaW8nXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaWduYXR1cmVWZXJzaW9uOiAndjQnXG4gICAgICAgIH0sXG4gICAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgICBpZDogJ3JlYWt0b3InLFxuICAgICAgICAgIGxvY2FsZTogJ2VuLVVTJyxcbiAgICAgICAgICBuYW1lOiAnUmVha3RvcicsXG4gICAgICAgICAgc3VwcG9ydEVtYWlsOiAnc3VwcG9ydEByZWFrdG9yLmlvJyxcbiAgICAgICAgICBzdXBwb3J0TmFtZTogJ1JlYWt0b3IgU3VwcG9ydCcsXG4gICAgICAgICAgdXJsOiAncmVha3Rvci5pbycsXG4gICAgICAgICAgdmVyc2lvbjogYXBwUGFja2FnZS52ZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIGdpcGh5OiB7XG4gICAgICAgICAga2V5OiAnZGM2emFUT3hGSm16QydcbiAgICAgICAgfSxcbiAgICAgICAgZ29vZ2xlOiB7XG4gICAgICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgICAgICBhY2NvdW50SWQ6ICc3ODE1ODcxNycsXG4gICAgICAgICAgICB0cmFja2luZ0lkOiAnVUEtNzgxNTg3MTctMSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlb2NvZGU6IHtcbiAgICAgICAgICAgIGtleTogJ0FJemFTeUJ3am1wQmpXaGlKb0JDWmlZelJ1ck05bTRXbkN4c2x2MCcsXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvZ2VvY29kZS9qc29uJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5OiAnQUl6YVN5QzNfZjJVczN5MHFqYnlNSi00dDVPYnRDemZxX0ZISWdRJ1xuICAgICAgICB9LFxuICAgICAgICBpbWFnZToge1xuICAgICAgICAgIGltZ1F1YWxpdHk6IDkwLFxuICAgICAgICAgIGltZ1NpemU6IDE1MDAsXG4gICAgICAgICAgdGhtUXVhbGl0eTogODAsXG4gICAgICAgICAgdGhtU2l6ZTogMTUwXG4gICAgICAgIH0sXG4gICAgICAgIHN0cmlwZToge1xuICAgICAgICAgIHRva2VuOiAnc2tfdGVzdF9MUzk1NmJlNTdZVVhUQjVhNHNMR2I1QlEnXG4gICAgICAgIH0sXG4gICAgICAgIHR3aWxpbzoge1xuICAgICAgICAgIG51bWJlcjogJysxNTAwNTU1MDAwNicsXG4gICAgICAgICAgc2lkOiAnQUM2YmQ3ZjUxM2NiZWQyZTUxMzRjNjUwYmUwNmNjNzMyZScsXG4gICAgICAgICAgdG9rZW46ICc1MjBhZTczOWU3NjFiYWI3NTliMTQ3ZjFhZDI4Mjc4ZidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHByb2R1Y3Rpb246IHtcbiAgICAgICAgYXJhbmdvZGI6IHtcbiAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJ3JlYWt0b3InLFxuICAgICAgICAgIGR1bXA6ICcvdXNyL2Jpbi9hcmFuZ29kdW1wJyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICByZXN0b3JlOiAnL3Vzci9iaW4vYXJhbmdvcmVzdG9yZScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgczM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogJ2JveC5yZWFrdG9yLmlvJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc3RyaXBlOiB7XG4gICAgICAgICAgdG9rZW46ICdza19saXZlX2JFbFpsOFJMaE1DSnkzM0tHNGx5TEQ0bydcbiAgICAgICAgfSxcbiAgICAgICAgdHdpbGlvOiB7XG4gICAgICAgICAgbnVtYmVyOiAnKzE4NTU0MTY1MjI3JyxcbiAgICAgICAgICBzaWQ6ICdBQzkwYjA1MjhhOTExZTY1MmQ2NDMzMjlhNGQ3YjRkMmM3JyxcbiAgICAgICAgICB0b2tlbjogJ2E3OTQxZDE3M2JkNDg0NmQwOTY2YTE4NmU5ODY1YjcyJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGVzdDoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3Rvci10ZXN0JyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FIHx8ICdyb290J1xuICAgICAgICB9LFxuICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgaWQ6ICdyZWFrdG9yLXRlc3QnLFxuICAgICAgICAgIGxvY2FsZTogJ2VuLVVTJyxcbiAgICAgICAgICBuYW1lOiAnUmVha3RvciBUZXN0JyxcbiAgICAgICAgICBzdXBwb3J0RW1haWw6ICdzdXBwb3J0QHJlYWt0b3IuaW8nLFxuICAgICAgICAgIHVybDogJ3JlYWt0b3IuaW8nLFxuICAgICAgICAgIHZlcnNpb246IGFwcFBhY2thZ2UudmVyc2lvblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBzZXQob3ZlcnJpZGU6IG9iamVjdCwgZW52aXJvbm1lbnQ/OiBzdHJpbmcpOiBvYmplY3Qge1xuICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSB0aGlzLmdldCgpO1xuICAgIGNvbnN0IHRhcmdldEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgfHwgcHJvY2Vzcy5lbnYuc3RhZ2UgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2xvY2FsJztcblxuICAgIGlmKG92ZXJyaWRlW3RhcmdldEVudmlyb25tZW50XSkge1xuICAgICAgdGhpcy51cGRhdGVkQ29uZmlnID0gbWVyZ2Uoe30sIGN1cnJlbnRDb25maWcsIG92ZXJyaWRlW3RhcmdldEVudmlyb25tZW50XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlZENvbmZpZyA9IG1lcmdlKHt9LCBjdXJyZW50Q29uZmlnLCBvdmVycmlkZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsuLi4odGhpcy51cGRhdGVkQ29uZmlnIGFzIHVua25vd24gYXMgb2JqZWN0KX07XG4gIH1cblxuICBzdGF0aWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVkQ29uZmlnID0gbnVsbDtcbiAgfVxuXG5cbiAgc3RhdGljIGdldDxUID0gYW55PihwYXRoPzogc3RyaW5nIHwgc3RyaW5nW10sIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHtcbiAgICBjb25zdCBiYXNlQ29uZmlnID0gdGhpcy51cGRhdGVkQ29uZmlnIHx8IHRoaXMudmFsdWVzKCk7XG4gICAgY29uc3QgZW52aXJvbm1lbnQ6IHN0cmluZyA9IHByb2Nlc3MuZW52LnN0YWdlIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdsb2NhbCc7XG5cbiAgICBpZih0aGlzLnVwZGF0ZWRDb25maWcpIHtcbiAgICAgIGNvbnN0IG92ZXJyaWRlRW52aXJvbm1lbnRDb25maWcgPSB0aGlzLnVwZGF0ZWRDb25maWdbZW52aXJvbm1lbnRdIHx8IHt9O1xuICAgICAgY29uc3QgY29uZmlnID0gbWVyZ2Uoe30sIGJhc2VDb25maWcsIG92ZXJyaWRlRW52aXJvbm1lbnRDb25maWcpO1xuXG4gICAgICByZXR1cm4gcGF0aCA/IGdldChjb25maWcsIHBhdGgsIGRlZmF1bHRWYWx1ZSkgOiBjb25maWc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxDb25maWcgPSBiYXNlQ29uZmlnLmxvY2FsO1xuICAgIGNvbnN0IGNvbmZpZyA9IG1lcmdlKHt9LCBsb2NhbENvbmZpZywgYmFzZUNvbmZpZ1tlbnZpcm9ubWVudF0gfHwge30pO1xuXG4gICAgcmV0dXJuIHBhdGggPyBnZXQoY29uZmlnLCBwYXRoLCBkZWZhdWx0VmFsdWUpIDogY29uZmlnO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZ2V0IiwibWVyZ2UiLCJyZWFkRmlsZVN5bmMiLCJkaXJuYW1lIiwiam9pbiIsImZpbGVVUkxUb1BhdGgiLCJfX2ZpbGVuYW1lIiwidXJsIiwiX19kaXJuYW1lIiwicGFja2FnZUpzb25QYXRoIiwiYXBwUGFja2FnZSIsIkpTT04iLCJwYXJzZSIsIkNvbmZpZyIsInVwZGF0ZWRDb25maWciLCJ2YWx1ZXMiLCJkZXZlbG9wbWVudCIsImFyYW5nb2RiIiwiZGF0YWJhc2UiLCJwcm9jZXNzIiwiZW52IiwiQVJBTkdPREJfREFUQUJBU0UiLCJwYXNzd29yZCIsIkFSQU5HT0RCX1BBU1NXT1JEIiwicG9ydCIsIkFSQU5HT0RCX1BPUlQiLCJBUkFOR09EQl9VUkwiLCJ1c2VybmFtZSIsIkFSQU5HT0RCX1VTRVJOQU1FIiwiYXdzIiwiczMiLCJCdWNrZXQiLCJsb2NhbCIsImNyZWRlbnRpYWxzIiwiYWNjZXNzS2V5SWQiLCJBV1NfQUNDRVNTX0tFWV9JRCIsInNlY3JldEFjY2Vzc0tleSIsIkFXU19TRUNSRVRfQUNDRVNTX0tFWSIsIm1heFJldHJpZXMiLCJyZWdpb24iLCJzaWduYXR1cmVWZXJzaW9uIiwiZGV0YWlscyIsImlkIiwibG9jYWxlIiwibmFtZSIsInN1cHBvcnRFbWFpbCIsInN1cHBvcnROYW1lIiwidmVyc2lvbiIsImdpcGh5Iiwia2V5IiwiZ29vZ2xlIiwiYW5hbHl0aWNzIiwiYWNjb3VudElkIiwidHJhY2tpbmdJZCIsImdlb2NvZGUiLCJpbWFnZSIsImltZ1F1YWxpdHkiLCJpbWdTaXplIiwidGhtUXVhbGl0eSIsInRobVNpemUiLCJzdHJpcGUiLCJ0b2tlbiIsInR3aWxpbyIsIm51bWJlciIsInNpZCIsInByb2R1Y3Rpb24iLCJkdW1wIiwicmVzdG9yZSIsInRlc3QiLCJzZXQiLCJvdmVycmlkZSIsImVudmlyb25tZW50IiwiY3VycmVudENvbmZpZyIsInRhcmdldEVudmlyb25tZW50Iiwic3RhZ2UiLCJOT0RFX0VOViIsInJlc2V0IiwicGF0aCIsImRlZmF1bHRWYWx1ZSIsImJhc2VDb25maWciLCJvdmVycmlkZUVudmlyb25tZW50Q29uZmlnIiwiY29uZmlnIiwibG9jYWxDb25maWciXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEdBQUcsUUFBTywyQkFBMkI7QUFDN0MsU0FBUUMsS0FB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
@@ -2,3 +2,4 @@ import type { ApiContext } from '../types/auth.types.js';
2
2
  import type { APIGatewayEvent } from 'aws-lambda';
3
3
  import type { ExecutionResult } from 'graphql';
4
4
  export declare const createGraphqlHandler: (context: ApiContext) => (event: APIGatewayEvent) => Promise<ExecutionResult | Record<string, unknown>>;
5
+ //# sourceMappingURL=graphqlHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphqlHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/graphqlHandler.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AAW7C,eAAO,MAAM,oBAAoB,GAAI,SAAS,UAAU,MAC/C,OAAO,eAAe,KAAG,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8GhF,CAAC"}