@nlabs/reaktor 0.9.0 → 0.10.0

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 (357) hide show
  1. package/README.md +9 -0
  2. package/coverage/index.html +92 -47
  3. package/dist/actions/apps.js +242 -0
  4. package/dist/actions/connections.js +90 -0
  5. package/dist/actions/conversations.js +350 -0
  6. package/dist/actions/dynamodb.js +150 -0
  7. package/dist/actions/email.js +152 -0
  8. package/dist/actions/files.js +283 -0
  9. package/dist/actions/groups.js +292 -0
  10. package/dist/actions/images.js +735 -0
  11. package/dist/actions/index.js +66 -0
  12. package/dist/actions/ios.js +164 -0
  13. package/dist/actions/locations.js +122 -0
  14. package/dist/actions/messages.js +208 -0
  15. package/dist/actions/notifications.js +59 -0
  16. package/dist/actions/payments.js +497 -0
  17. package/dist/actions/personas.js +110 -0
  18. package/dist/actions/posts.js +595 -0
  19. package/dist/actions/reactions.js +322 -0
  20. package/dist/actions/s3.js +133 -0
  21. package/dist/actions/search.js +90 -0
  22. package/dist/actions/sms.js +108 -0
  23. package/dist/actions/statistics.js +62 -0
  24. package/dist/actions/subscription.js +220 -0
  25. package/dist/actions/tags.js +292 -0
  26. package/dist/actions/users.js +784 -0
  27. package/dist/actions/websockets.js +174 -0
  28. package/dist/adapters/arangoAdapter.js +46 -0
  29. package/dist/adapters/fileAdapter.js +76 -0
  30. package/dist/adapters/imageAdapter.js +40 -0
  31. package/dist/adapters/messageAdapter.js +49 -0
  32. package/dist/adapters/postAdapter.js +70 -0
  33. package/dist/adapters/reaktorAdapter.js +44 -0
  34. package/dist/adapters/tagAdapter.js +50 -0
  35. package/dist/adapters/userAdapter.js +115 -0
  36. package/dist/config.js +125 -0
  37. package/dist/index.js +66 -0
  38. package/dist/lambdas/actions/websockets.js +132 -0
  39. package/dist/lambdas/authorizer.js +67 -0
  40. package/dist/lambdas/connection.js +91 -0
  41. package/dist/lambdas/utils/message.js +42 -0
  42. package/dist/lambdas/utils/websocket.js +105 -0
  43. package/dist/mocks/conversation.js +35 -0
  44. package/dist/mocks/file.js +38 -0
  45. package/dist/mocks/group.js +47 -0
  46. package/dist/mocks/image.js +44 -0
  47. package/dist/mocks/nlabs.png +0 -0
  48. package/dist/mocks/post.js +55 -0
  49. package/dist/mocks/tag.js +37 -0
  50. package/dist/mocks/user.js +88 -0
  51. package/dist/mutations/index.js +26 -0
  52. package/dist/mutations/locations.js +44 -0
  53. package/dist/mutations/messages.js +86 -0
  54. package/dist/mutations/personas.js +100 -0
  55. package/dist/mutations/posts.js +53 -0
  56. package/dist/mutations/reactions.js +51 -0
  57. package/dist/mutations/statistics.js +39 -0
  58. package/dist/mutations/subscriptions.js +56 -0
  59. package/dist/mutations/tags.js +120 -0
  60. package/dist/mutations/users.js +116 -0
  61. package/dist/objectTypes/app.js +173 -0
  62. package/dist/objectTypes/bankAccount.js +76 -0
  63. package/dist/objectTypes/connection.js +48 -0
  64. package/dist/objectTypes/conversation.js +77 -0
  65. package/dist/objectTypes/creditCard.js +86 -0
  66. package/dist/objectTypes/document.js +46 -0
  67. package/dist/objectTypes/error.js +46 -0
  68. package/dist/objectTypes/external.js +74 -0
  69. package/dist/objectTypes/file.js +100 -0
  70. package/dist/objectTypes/filter.js +43 -0
  71. package/dist/objectTypes/group.js +123 -0
  72. package/dist/objectTypes/iapSubscription.js +40 -0
  73. package/dist/objectTypes/image.js +129 -0
  74. package/dist/objectTypes/index.js +68 -0
  75. package/dist/objectTypes/location.js +109 -0
  76. package/dist/objectTypes/message.js +96 -0
  77. package/dist/objectTypes/passcode.js +42 -0
  78. package/dist/objectTypes/persona.js +87 -0
  79. package/dist/objectTypes/plan.js +95 -0
  80. package/dist/objectTypes/post.js +125 -0
  81. package/dist/objectTypes/reaction.js +61 -0
  82. package/dist/objectTypes/relation.js +49 -0
  83. package/dist/objectTypes/search.js +72 -0
  84. package/dist/objectTypes/statistics.js +39 -0
  85. package/dist/objectTypes/subscription.js +117 -0
  86. package/dist/objectTypes/tag.js +65 -0
  87. package/dist/objectTypes/user.js +144 -0
  88. package/dist/queries/index.js +33 -0
  89. package/dist/queries/locations.js +45 -0
  90. package/dist/queries/messages.js +52 -0
  91. package/dist/queries/posts.js +154 -0
  92. package/dist/queries/reactions.js +56 -0
  93. package/dist/queries/statistics.js +39 -0
  94. package/dist/queries/subscriptions.js +44 -0
  95. package/dist/queries/tags.js +75 -0
  96. package/dist/queries/users.js +64 -0
  97. package/dist/templates/email/layout.js +302 -0
  98. package/dist/templates/email/passwordForgot.js +38 -0
  99. package/dist/templates/email/passwordRecovery.js +35 -0
  100. package/dist/templates/email/verifyEmail.js +38 -0
  101. package/dist/templates/email/welcome.js +38 -0
  102. package/dist/templates/sms/passwordForgot.js +24 -0
  103. package/dist/templates/sms/passwordRecovery.js +24 -0
  104. package/dist/templates/sms/verifyEmail.js +24 -0
  105. package/dist/templates/sms/verifyPhone.js +24 -0
  106. package/dist/templates/sms/welcome.js +24 -0
  107. package/dist/types/apps.js +32 -0
  108. package/{lib → dist}/types/arangodb.js +1 -1
  109. package/{lib → dist}/types/auth.js +1 -1
  110. package/{lib → dist}/types/connections.js +1 -1
  111. package/dist/types/conversations.js +16 -0
  112. package/{lib → dist}/types/email.js +1 -1
  113. package/dist/types/files.js +16 -0
  114. package/dist/types/google.js +16 -0
  115. package/{lib → dist}/types/groups.js +1 -1
  116. package/dist/types/images.js +16 -0
  117. package/dist/types/index.js +60 -0
  118. package/{lib → dist}/types/locations.js +1 -1
  119. package/{lib → dist}/types/messages.js +1 -1
  120. package/{lib → dist}/types/notifications.js +1 -1
  121. package/dist/types/payments.js +16 -0
  122. package/dist/types/personas.js +16 -0
  123. package/dist/types/posts.js +16 -0
  124. package/{lib → dist}/types/tags.js +1 -1
  125. package/dist/types/users.js +16 -0
  126. package/dist/types/websockets.js +16 -0
  127. package/dist/utils/adapterUtils.js +45 -0
  128. package/dist/utils/analyticsUtils.js +72 -0
  129. package/dist/utils/arangodbUtils.js +165 -0
  130. package/dist/utils/auth.js +57 -0
  131. package/dist/utils/index.js +30 -0
  132. package/dist/utils/session.js +60 -0
  133. package/lex.config.cjs +13 -0
  134. package/lib/actions/apps.d.ts +3 -3
  135. package/lib/actions/apps.js +38 -48
  136. package/lib/actions/connections.d.ts +4 -0
  137. package/lib/actions/connections.js +90 -0
  138. package/lib/actions/conversations.d.ts +1 -1
  139. package/lib/actions/conversations.js +32 -21
  140. package/lib/actions/email.d.ts +1 -1
  141. package/lib/actions/email.js +11 -11
  142. package/lib/actions/files.d.ts +2 -2
  143. package/lib/actions/files.js +4 -8
  144. package/lib/actions/groups.d.ts +2 -2
  145. package/lib/actions/groups.js +12 -12
  146. package/lib/actions/images.d.ts +5 -5
  147. package/lib/actions/images.js +120 -66
  148. package/lib/actions/index.d.ts +2 -0
  149. package/lib/actions/index.js +5 -1
  150. package/lib/actions/ios.js +2 -2
  151. package/lib/actions/locations.d.ts +4 -3
  152. package/lib/actions/locations.js +16 -4
  153. package/lib/actions/messages.d.ts +4 -3
  154. package/lib/actions/messages.js +26 -23
  155. package/lib/actions/notifications.d.ts +1 -1
  156. package/lib/actions/notifications.js +1 -1
  157. package/lib/actions/payments.js +63 -60
  158. package/lib/actions/personas.d.ts +3 -0
  159. package/lib/actions/personas.js +110 -0
  160. package/lib/actions/posts.d.ts +5 -2
  161. package/lib/actions/posts.js +55 -41
  162. package/lib/actions/reactions.js +2 -2
  163. package/lib/actions/search.d.ts +2 -2
  164. package/lib/actions/search.js +5 -5
  165. package/lib/actions/sms.d.ts +9 -3
  166. package/lib/actions/sms.js +9 -7
  167. package/lib/actions/statistics.d.ts +1 -1
  168. package/lib/actions/statistics.js +2 -2
  169. package/lib/actions/subscription.d.ts +2 -2
  170. package/lib/actions/subscription.js +12 -22
  171. package/lib/actions/tags.d.ts +8 -3
  172. package/lib/actions/tags.js +46 -21
  173. package/lib/actions/users.d.ts +38 -13
  174. package/lib/actions/users.js +291 -61
  175. package/lib/actions/websockets.d.ts +6 -5
  176. package/lib/actions/websockets.js +37 -35
  177. package/lib/adapters/arangoAdapter.d.ts +1 -1
  178. package/lib/adapters/arangoAdapter.js +1 -1
  179. package/lib/adapters/imageAdapter.d.ts +2 -0
  180. package/lib/adapters/imageAdapter.js +40 -0
  181. package/lib/adapters/messageAdapter.d.ts +2 -0
  182. package/lib/adapters/messageAdapter.js +49 -0
  183. package/lib/adapters/postAdapter.js +4 -4
  184. package/lib/adapters/tagAdapter.js +2 -2
  185. package/lib/adapters/userAdapter.js +10 -5
  186. package/lib/config.js +2 -2
  187. package/lib/index.d.ts +7 -0
  188. package/lib/index.js +44 -8
  189. package/lib/lambdas/actions/websockets.d.ts +7 -6
  190. package/lib/lambdas/actions/websockets.js +9 -5
  191. package/lib/lambdas/authorizer.js +4 -4
  192. package/lib/lambdas/connection.js +16 -17
  193. package/lib/lambdas/utils/message.js +1 -1
  194. package/lib/lambdas/utils/websocket.js +1 -1
  195. package/lib/mocks/image.js +3 -2
  196. package/lib/mocks/user.js +3 -3
  197. package/lib/mutations/index.d.ts +3 -0
  198. package/lib/mutations/index.js +26 -0
  199. package/lib/mutations/locations.d.ts +2 -0
  200. package/lib/mutations/locations.js +44 -0
  201. package/lib/mutations/messages.d.ts +2 -0
  202. package/lib/mutations/messages.js +86 -0
  203. package/lib/mutations/personas.d.ts +2 -0
  204. package/lib/mutations/personas.js +100 -0
  205. package/lib/mutations/posts.d.ts +2 -0
  206. package/lib/mutations/posts.js +53 -0
  207. package/lib/mutations/reactions.d.ts +2 -0
  208. package/lib/mutations/reactions.js +51 -0
  209. package/lib/mutations/statistics.d.ts +2 -0
  210. package/lib/mutations/statistics.js +39 -0
  211. package/lib/mutations/subscriptions.d.ts +2 -0
  212. package/lib/mutations/subscriptions.js +56 -0
  213. package/lib/mutations/tags.d.ts +2 -0
  214. package/lib/mutations/tags.js +120 -0
  215. package/lib/mutations/users.d.ts +1 -0
  216. package/lib/mutations/users.js +116 -0
  217. package/lib/objectTypes/app.d.ts +3 -0
  218. package/lib/objectTypes/app.js +173 -0
  219. package/lib/objectTypes/bankAccount.d.ts +1 -0
  220. package/lib/objectTypes/bankAccount.js +76 -0
  221. package/lib/objectTypes/connection.d.ts +1 -0
  222. package/lib/objectTypes/connection.js +48 -0
  223. package/lib/objectTypes/conversation.d.ts +2 -0
  224. package/lib/objectTypes/conversation.js +77 -0
  225. package/lib/objectTypes/creditCard.d.ts +1 -0
  226. package/lib/objectTypes/creditCard.js +86 -0
  227. package/lib/objectTypes/document.d.ts +1 -0
  228. package/lib/objectTypes/document.js +46 -0
  229. package/lib/objectTypes/error.d.ts +1 -0
  230. package/lib/objectTypes/error.js +46 -0
  231. package/lib/objectTypes/external.d.ts +1 -0
  232. package/lib/objectTypes/external.js +74 -0
  233. package/lib/objectTypes/file.d.ts +2 -0
  234. package/lib/objectTypes/file.js +100 -0
  235. package/lib/objectTypes/filter.d.ts +1 -0
  236. package/lib/objectTypes/filter.js +43 -0
  237. package/lib/objectTypes/group.d.ts +3 -0
  238. package/lib/objectTypes/group.js +123 -0
  239. package/lib/objectTypes/iapSubscription.d.ts +1 -0
  240. package/lib/objectTypes/iapSubscription.js +40 -0
  241. package/lib/objectTypes/image.d.ts +2 -0
  242. package/lib/objectTypes/image.js +129 -0
  243. package/lib/objectTypes/index.d.ts +24 -0
  244. package/lib/objectTypes/index.js +68 -0
  245. package/lib/objectTypes/location.d.ts +2 -0
  246. package/lib/objectTypes/location.js +109 -0
  247. package/lib/objectTypes/message.d.ts +2 -0
  248. package/lib/objectTypes/message.js +96 -0
  249. package/lib/objectTypes/passcode.d.ts +1 -0
  250. package/lib/objectTypes/passcode.js +42 -0
  251. package/lib/objectTypes/persona.d.ts +3 -0
  252. package/lib/objectTypes/persona.js +87 -0
  253. package/lib/objectTypes/plan.d.ts +2 -0
  254. package/lib/objectTypes/plan.js +95 -0
  255. package/lib/objectTypes/post.d.ts +2 -0
  256. package/lib/objectTypes/post.js +125 -0
  257. package/lib/objectTypes/reaction.d.ts +2 -0
  258. package/lib/objectTypes/reaction.js +61 -0
  259. package/lib/objectTypes/relation.d.ts +1 -0
  260. package/lib/objectTypes/relation.js +49 -0
  261. package/lib/objectTypes/search.d.ts +1 -0
  262. package/lib/objectTypes/search.js +72 -0
  263. package/lib/objectTypes/statistics.d.ts +1 -0
  264. package/lib/objectTypes/statistics.js +39 -0
  265. package/lib/objectTypes/subscription.d.ts +2 -0
  266. package/lib/objectTypes/subscription.js +117 -0
  267. package/lib/objectTypes/tag.d.ts +2 -0
  268. package/lib/objectTypes/tag.js +65 -0
  269. package/lib/objectTypes/user.d.ts +4 -0
  270. package/lib/objectTypes/user.js +144 -0
  271. package/lib/queries/index.d.ts +3 -0
  272. package/lib/queries/index.js +33 -0
  273. package/lib/queries/locations.d.ts +2 -0
  274. package/lib/queries/locations.js +45 -0
  275. package/lib/queries/messages.d.ts +2 -0
  276. package/lib/queries/messages.js +52 -0
  277. package/lib/queries/posts.d.ts +2 -0
  278. package/lib/queries/posts.js +154 -0
  279. package/lib/queries/reactions.d.ts +2 -0
  280. package/lib/queries/reactions.js +56 -0
  281. package/lib/queries/statistics.d.ts +2 -0
  282. package/lib/queries/statistics.js +39 -0
  283. package/lib/queries/subscriptions.d.ts +2 -0
  284. package/lib/queries/subscriptions.js +44 -0
  285. package/lib/queries/tags.d.ts +2 -0
  286. package/lib/queries/tags.js +75 -0
  287. package/lib/queries/users.d.ts +1 -0
  288. package/lib/queries/users.js +64 -0
  289. package/lib/types/{apps.d.ts → apps.types.d.ts} +2 -2
  290. package/lib/types/apps.types.js +32 -0
  291. package/lib/types/{arangodb.d.ts → arangodb.types.d.ts} +4 -0
  292. package/lib/types/arangodb.types.js +16 -0
  293. package/lib/types/auth.types.d.ts +9 -0
  294. package/lib/types/auth.types.js +16 -0
  295. package/lib/types/{connections.d.ts → connections.types.d.ts} +1 -3
  296. package/lib/types/connections.types.js +16 -0
  297. package/lib/types/{conversations.d.ts → conversations.types.d.ts} +2 -4
  298. package/lib/types/conversations.types.js +16 -0
  299. package/lib/types/{email.d.ts → email.types.d.ts} +3 -3
  300. package/lib/types/email.types.js +16 -0
  301. package/lib/types/error.types.js +44 -0
  302. package/lib/types/{files.d.ts → files.types.d.ts} +1 -4
  303. package/lib/types/files.types.js +16 -0
  304. package/lib/types/google.types.js +16 -0
  305. package/lib/types/{groups.d.ts → groups.types.d.ts} +1 -4
  306. package/lib/types/groups.types.js +16 -0
  307. package/lib/types/{images.d.ts → images.types.d.ts} +9 -8
  308. package/lib/types/images.types.js +16 -0
  309. package/lib/types/index.d.ts +20 -18
  310. package/lib/types/index.js +41 -37
  311. package/lib/types/{locations.d.ts → locations.types.d.ts} +1 -3
  312. package/lib/types/locations.types.js +16 -0
  313. package/lib/types/{messages.d.ts → messages.types.d.ts} +5 -5
  314. package/lib/types/messages.types.js +16 -0
  315. package/lib/types/{notifications.d.ts → notifications.types.d.ts} +4 -2
  316. package/lib/types/notifications.types.js +16 -0
  317. package/lib/types/{payments.d.ts → payments.types.d.ts} +1 -4
  318. package/lib/types/payments.types.js +16 -0
  319. package/lib/types/personas.types.d.ts +32 -0
  320. package/lib/types/personas.types.js +16 -0
  321. package/lib/types/{posts.d.ts → posts.types.d.ts} +4 -7
  322. package/lib/types/posts.types.js +16 -0
  323. package/lib/types/statistics.types.js +16 -0
  324. package/lib/types/{tags.d.ts → tags.types.d.ts} +6 -1
  325. package/lib/types/tags.types.js +16 -0
  326. package/lib/types/{users.d.ts → users.types.d.ts} +12 -9
  327. package/lib/types/users.types.js +16 -0
  328. package/lib/types/{websocket.d.ts → websockets.types.d.ts} +6 -1
  329. package/lib/types/websockets.types.js +16 -0
  330. package/lib/utils/analyticsUtils.d.ts +3 -3
  331. package/lib/utils/analyticsUtils.js +3 -3
  332. package/lib/utils/arangodbUtils.d.ts +2 -1
  333. package/lib/utils/arangodbUtils.js +22 -1
  334. package/lib/utils/auth.d.ts +2 -1
  335. package/lib/utils/auth.js +8 -1
  336. package/lib/utils/index.js +1 -1
  337. package/lib/utils/session.d.ts +3 -1
  338. package/lib/utils/session.js +10 -7
  339. package/lib/utils/stripeUtils.d.ts +3 -0
  340. package/lib/utils/stripeUtils.js +43 -0
  341. package/package.json +35 -34
  342. package/.eslintrc +0 -10
  343. package/lib/types/apps.js +0 -32
  344. package/lib/types/auth.d.ts +0 -7
  345. package/lib/types/conversations.js +0 -16
  346. package/lib/types/files.js +0 -16
  347. package/lib/types/google.js +0 -16
  348. package/lib/types/images.js +0 -16
  349. package/lib/types/payments.js +0 -16
  350. package/lib/types/posts.js +0 -16
  351. package/lib/types/users.js +0 -16
  352. package/lib/types/websocket.js +0 -16
  353. /package/{lib → dist}/types/error.js +0 -0
  354. /package/{lib → dist}/types/statistics.js +0 -0
  355. /package/lib/types/{error.d.ts → error.types.d.ts} +0 -0
  356. /package/lib/types/{google.d.ts → google.types.d.ts} +0 -0
  357. /package/lib/types/{statistics.d.ts → statistics.types.d.ts} +0 -0
@@ -0,0 +1,165 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var arangodbUtils_exports = {};
29
+ __export(arangodbUtils_exports, {
30
+ collectionDetails: () => collectionDetails,
31
+ getDocId: () => getDocId,
32
+ getGqlFields: () => getGqlFields,
33
+ getLimit: () => getLimit,
34
+ selectReactionCountByType: () => selectReactionCountByType,
35
+ sortIds: () => sortIds,
36
+ useDb: () => useDb
37
+ });
38
+ module.exports = __toCommonJS(arangodbUtils_exports);
39
+ var import_utils = require("@nlabs/utils");
40
+ var import_arangojs = require("arangojs");
41
+ var import_graphql_fields = __toESM(require("graphql-fields"), 1);
42
+ const useDb = (databaseName) => new import_arangojs.Database({
43
+ auth: {
44
+ password: process.env.ARANGODB_PASSWORD,
45
+ username: process.env.ARANGODB_USERNAME
46
+ },
47
+ databaseName,
48
+ url: `${process.env.ARANGODB_URL}:${process.env.ARANGODB_PORT}`
49
+ });
50
+ const collectionDetails = {
51
+ apps: {
52
+ collection: "apps",
53
+ key: "appId"
54
+ },
55
+ conversations: {
56
+ collection: "conversations",
57
+ key: "conversationId"
58
+ },
59
+ files: {
60
+ collection: "files",
61
+ key: "fileId"
62
+ },
63
+ groups: {
64
+ collection: "groups",
65
+ key: "groupId"
66
+ },
67
+ images: {
68
+ collection: "images",
69
+ key: "imageId"
70
+ },
71
+ locations: {
72
+ collection: "locations",
73
+ key: "locationId"
74
+ },
75
+ messages: {
76
+ collection: "messages",
77
+ key: "messageId"
78
+ },
79
+ notifications: {
80
+ collection: "notifications",
81
+ key: "notificationId"
82
+ },
83
+ payments: {
84
+ collection: "payments",
85
+ key: "paymentId"
86
+ },
87
+ posts: {
88
+ collection: "posts",
89
+ key: "postId"
90
+ },
91
+ reactions: {
92
+ collection: "reactions",
93
+ key: "reactionId"
94
+ },
95
+ subscriptions: {
96
+ collection: "subscriptions",
97
+ key: "subscriptionId"
98
+ },
99
+ tags: {
100
+ collection: "tags",
101
+ key: "tagId"
102
+ },
103
+ users: {
104
+ collection: "users",
105
+ key: "userId"
106
+ }
107
+ };
108
+ const getDocId = (collection, item) => {
109
+ const { _id, _key, id } = item;
110
+ const itemId = (0, import_utils.parseArangoId)(_id || id);
111
+ if (itemId) {
112
+ const idParts = itemId.split("/");
113
+ if (collectionDetails[idParts[0]]) {
114
+ return itemId;
115
+ }
116
+ }
117
+ let itemKey = (0, import_utils.parseId)(_key);
118
+ if (!itemKey) {
119
+ itemKey = item[collectionDetails[collection].key];
120
+ }
121
+ return itemKey ? `${collection}/${itemKey}` : "";
122
+ };
123
+ const getLimit = (start = 0, to = 30) => {
124
+ let num = (0, import_utils.parseNum)(to) - (0, import_utils.parseNum)(start);
125
+ if (num > 50) {
126
+ num = 50;
127
+ }
128
+ return { aql: to >= 0 ? `LIMIT ${start}, ${num}` : "", num, start };
129
+ };
130
+ const selectReactionCountByType = (objectType, objectKey, field, selects) => {
131
+ const reactionType = field.substring(0, field.indexOf("Count"));
132
+ selects.queries.push(`LET ${field} = FIRST(
133
+ FOR obj, r IN INBOUND ${objectKey}._id hasReaction
134
+ FILTER r.name == "${reactionType}" && r.type == "${objectType}"
135
+ COLLECT WITH COUNT INTO count
136
+ RETURN count
137
+ )`);
138
+ selects.objects.push(`${field}:${field}`);
139
+ return selects;
140
+ };
141
+ const sortIds = (ids, sort = "ASC") => ids.sort((a, b) => {
142
+ if (sort.toUpperCase() === "ASC") {
143
+ return a.localeCompare(b);
144
+ }
145
+ return b.localeCompare(a);
146
+ });
147
+ const getGqlFields = (info) => {
148
+ const fields = (0, import_graphql_fields.default)(info) || {};
149
+ const methodName = Object.keys(fields)[0];
150
+ if (methodName) {
151
+ return Object.keys(fields[methodName]);
152
+ }
153
+ return [];
154
+ };
155
+ // Annotate the CommonJS export names for ESM import in node:
156
+ 0 && (module.exports = {
157
+ collectionDetails,
158
+ getDocId,
159
+ getGqlFields,
160
+ getLimit,
161
+ selectReactionCountByType,
162
+ sortIds,
163
+ useDb
164
+ });
165
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2FyYW5nb2RiVXRpbHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlSWQsIHBhcnNlTnVtfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHtEYXRhYmFzZX0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IGdyYXBocWxGaWVsZHMgZnJvbSAnZ3JhcGhxbC1maWVsZHMnO1xuXG5pbXBvcnQgdHlwZSB7QXJhbmdvRGJDb2xsZWN0aW9uLCBBcmFuZ29EYkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5cbmV4cG9ydCBjb25zdCB1c2VEYiA9IChkYXRhYmFzZU5hbWU6IHN0cmluZyk6IERhdGFiYXNlID0+IG5ldyBEYXRhYmFzZSh7XG4gIGF1dGg6IHtcbiAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQsXG4gICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FXG4gIH0sXG4gIGRhdGFiYXNlTmFtZSxcbiAgdXJsOiBgJHtwcm9jZXNzLmVudi5BUkFOR09EQl9VUkx9OiR7cHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVH1gXG59KTtcblxuZXhwb3J0IGNvbnN0IGNvbGxlY3Rpb25EZXRhaWxzID0ge1xuICBhcHBzOiB7XG4gICAgY29sbGVjdGlvbjogJ2FwcHMnLFxuICAgIGtleTogJ2FwcElkJ1xuICB9LFxuICBjb252ZXJzYXRpb25zOiB7XG4gICAgY29sbGVjdGlvbjogJ2NvbnZlcnNhdGlvbnMnLFxuICAgIGtleTogJ2NvbnZlcnNhdGlvbklkJ1xuICB9LFxuICBmaWxlczoge1xuICAgIGNvbGxlY3Rpb246ICdmaWxlcycsXG4gICAga2V5OiAnZmlsZUlkJ1xuICB9LFxuICBncm91cHM6IHtcbiAgICBjb2xsZWN0aW9uOiAnZ3JvdXBzJyxcbiAgICBrZXk6ICdncm91cElkJ1xuICB9LFxuICBpbWFnZXM6IHtcbiAgICBjb2xsZWN0aW9uOiAnaW1hZ2VzJyxcbiAgICBrZXk6ICdpbWFnZUlkJ1xuICB9LFxuICBsb2NhdGlvbnM6IHtcbiAgICBjb2xsZWN0aW9uOiAnbG9jYXRpb25zJyxcbiAgICBrZXk6ICdsb2NhdGlvbklkJ1xuICB9LFxuICBtZXNzYWdlczoge1xuICAgIGNvbGxlY3Rpb246ICdtZXNzYWdlcycsXG4gICAga2V5OiAnbWVzc2FnZUlkJ1xuICB9LFxuICBub3RpZmljYXRpb25zOiB7XG4gICAgY29sbGVjdGlvbjogJ25vdGlmaWNhdGlvbnMnLFxuICAgIGtleTogJ25vdGlmaWNhdGlvbklkJ1xuICB9LFxuICBwYXltZW50czoge1xuICAgIGNvbGxlY3Rpb246ICdwYXltZW50cycsXG4gICAga2V5OiAncGF5bWVudElkJ1xuICB9LFxuICBwb3N0czoge1xuICAgIGNvbGxlY3Rpb246ICdwb3N0cycsXG4gICAga2V5OiAncG9zdElkJ1xuICB9LFxuICByZWFjdGlvbnM6IHtcbiAgICBjb2xsZWN0aW9uOiAncmVhY3Rpb25zJyxcbiAgICBrZXk6ICdyZWFjdGlvbklkJ1xuICB9LFxuICBzdWJzY3JpcHRpb25zOiB7XG4gICAgY29sbGVjdGlvbjogJ3N1YnNjcmlwdGlvbnMnLFxuICAgIGtleTogJ3N1YnNjcmlwdGlvbklkJ1xuICB9LFxuICB0YWdzOiB7XG4gICAgY29sbGVjdGlvbjogJ3RhZ3MnLFxuICAgIGtleTogJ3RhZ0lkJ1xuICB9LFxuICB1c2Vyczoge1xuICAgIGNvbGxlY3Rpb246ICd1c2VycycsXG4gICAga2V5OiAndXNlcklkJ1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RG9jSWQgPSAoY29sbGVjdGlvbjogQXJhbmdvRGJDb2xsZWN0aW9uLCBpdGVtKTogc3RyaW5nID0+IHtcbiAgY29uc3Qge19pZCwgX2tleSwgaWR9ID0gaXRlbTtcbiAgY29uc3QgaXRlbUlkID0gcGFyc2VBcmFuZ29JZChfaWQgfHwgaWQpO1xuXG4gIGlmKGl0ZW1JZCkge1xuICAgIGNvbnN0IGlkUGFydHMgPSBpdGVtSWQuc3BsaXQoJy8nKTtcblxuICAgIGlmKGNvbGxlY3Rpb25EZXRhaWxzW2lkUGFydHNbMF1dKSB7XG4gICAgICByZXR1cm4gaXRlbUlkO1xuICAgIH1cbiAgfVxuXG4gIGxldCBpdGVtS2V5ID0gcGFyc2VJZChfa2V5KTtcblxuICBpZighaXRlbUtleSkge1xuICAgIGl0ZW1LZXkgPSBpdGVtW2NvbGxlY3Rpb25EZXRhaWxzW2NvbGxlY3Rpb25dLmtleV07XG4gIH1cblxuICByZXR1cm4gaXRlbUtleSA/IGAke2NvbGxlY3Rpb259LyR7aXRlbUtleX1gIDogJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGltaXQgPSAoc3RhcnQ6IG51bWJlciA9IDAsIHRvOiBudW1iZXIgPSAzMCk6IEFyYW5nb0RiTGltaXQgPT4ge1xuICBsZXQgbnVtID0gcGFyc2VOdW0odG8pIC0gcGFyc2VOdW0oc3RhcnQpO1xuXG4gIGlmKG51bSA+IDUwKSB7XG4gICAgbnVtID0gNTA7XG4gIH1cblxuICByZXR1cm4ge2FxbDogdG8gPj0gMCA/IGBMSU1JVCAke3N0YXJ0fSwgJHtudW19YCA6ICcnLCBudW0sIHN0YXJ0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlID0gKG9iamVjdFR5cGU6IHN0cmluZywgb2JqZWN0S2V5OiBzdHJpbmcsIGZpZWxkOiBzdHJpbmcsIHNlbGVjdHMpID0+IHtcbiAgY29uc3QgcmVhY3Rpb25UeXBlOiBzdHJpbmcgPSBmaWVsZC5zdWJzdHJpbmcoMCwgZmllbGQuaW5kZXhPZignQ291bnQnKSk7XG4gIHNlbGVjdHMucXVlcmllcy5wdXNoKGBMRVQgJHtmaWVsZH0gPSBGSVJTVChcbiAgICAgIEZPUiBvYmosIHIgSU4gSU5CT1VORCAke29iamVjdEtleX0uX2lkIGhhc1JlYWN0aW9uXG4gICAgICBGSUxURVIgci5uYW1lID09IFwiJHtyZWFjdGlvblR5cGV9XCIgJiYgci50eXBlID09IFwiJHtvYmplY3RUeXBlfVwiXG4gICAgICBDT0xMRUNUIFdJVEggQ09VTlQgSU5UTyBjb3VudFxuICAgICAgUkVUVVJOIGNvdW50XG4gICAgKWApO1xuICBzZWxlY3RzLm9iamVjdHMucHVzaChgJHtmaWVsZH06JHtmaWVsZH1gKTtcbiAgcmV0dXJuIHNlbGVjdHM7XG59O1xuXG5leHBvcnQgY29uc3Qgc29ydElkcyA9IChpZHM6IHN0cmluZ1tdLCBzb3J0OiBzdHJpbmcgPSAnQVNDJyk6IHN0cmluZ1tdID0+IGlkcy5zb3J0KChhLCBiKSA9PiB7XG4gIGlmKHNvcnQudG9VcHBlckNhc2UoKSA9PT0gJ0FTQycpIHtcbiAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xuICB9XG5cbiAgcmV0dXJuIGIubG9jYWxlQ29tcGFyZShhKTtcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0R3FsRmllbGRzID0gKGluZm8pID0+IHtcbiAgY29uc3QgZmllbGRzID0gZ3JhcGhxbEZpZWxkcyhpbmZvKSB8fCB7fTtcbiAgY29uc3QgbWV0aG9kTmFtZTogc3RyaW5nID0gT2JqZWN0LmtleXMoZmllbGRzKVswXTtcblxuICBpZihtZXRob2ROYW1lKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGZpZWxkc1ttZXRob2ROYW1lXSk7XG4gIH1cblxuICByZXR1cm4gW107XG59OyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSxtQkFBK0M7QUFDL0Msc0JBQXVCO0FBQ3ZCLDRCQUEwQjtBQUluQixNQUFNLFFBQVEsQ0FBQyxpQkFBbUMsSUFBSSx5QkFBUztBQUFBLEVBQ3BFLE1BQU07QUFBQSxJQUNKLFVBQVUsUUFBUSxJQUFJO0FBQUEsSUFDdEIsVUFBVSxRQUFRLElBQUk7QUFBQSxFQUN4QjtBQUFBLEVBQ0E7QUFBQSxFQUNBLEtBQUssR0FBRyxRQUFRLElBQUksWUFBWSxJQUFJLFFBQVEsSUFBSSxhQUFhO0FBQy9ELENBQUM7QUFFTSxNQUFNLG9CQUFvQjtBQUFBLEVBQy9CLE1BQU07QUFBQSxJQUNKLFlBQVk7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxlQUFlO0FBQUEsSUFDYixZQUFZO0FBQUEsSUFDWixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsT0FBTztBQUFBLElBQ0wsWUFBWTtBQUFBLElBQ1osS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLFlBQVk7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixZQUFZO0FBQUEsSUFDWixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsV0FBVztBQUFBLElBQ1QsWUFBWTtBQUFBLElBQ1osS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLFlBQVk7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxlQUFlO0FBQUEsSUFDYixZQUFZO0FBQUEsSUFDWixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsWUFBWTtBQUFBLElBQ1osS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxXQUFXO0FBQUEsSUFDVCxZQUFZO0FBQUEsSUFDWixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsZUFBZTtBQUFBLElBQ2IsWUFBWTtBQUFBLElBQ1osS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLFlBQVk7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxZQUFZO0FBQUEsSUFDWixLQUFLO0FBQUEsRUFDUDtBQUNGO0FBRU8sTUFBTSxXQUFXLENBQUMsWUFBZ0MsU0FBaUI7QUFDeEUsUUFBTSxFQUFDLEtBQUssTUFBTSxHQUFFLElBQUk7QUFDeEIsUUFBTSxhQUFTLDRCQUFjLE9BQU8sRUFBRTtBQUV0QyxNQUFHLFFBQVE7QUFDVCxVQUFNLFVBQVUsT0FBTyxNQUFNLEdBQUc7QUFFaEMsUUFBRyxrQkFBa0IsUUFBUSxDQUFDLENBQUMsR0FBRztBQUNoQyxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxNQUFJLGNBQVUsc0JBQVEsSUFBSTtBQUUxQixNQUFHLENBQUMsU0FBUztBQUNYLGNBQVUsS0FBSyxrQkFBa0IsVUFBVSxFQUFFLEdBQUc7QUFBQSxFQUNsRDtBQUVBLFNBQU8sVUFBVSxHQUFHLFVBQVUsSUFBSSxPQUFPLEtBQUs7QUFDaEQ7QUFFTyxNQUFNLFdBQVcsQ0FBQyxRQUFnQixHQUFHLEtBQWEsT0FBc0I7QUFDN0UsTUFBSSxVQUFNLHVCQUFTLEVBQUUsUUFBSSx1QkFBUyxLQUFLO0FBRXZDLE1BQUcsTUFBTSxJQUFJO0FBQ1gsVUFBTTtBQUFBLEVBQ1I7QUFFQSxTQUFPLEVBQUMsS0FBSyxNQUFNLElBQUksU0FBUyxLQUFLLEtBQUssR0FBRyxLQUFLLElBQUksS0FBSyxNQUFLO0FBQ2xFO0FBRU8sTUFBTSw0QkFBNEIsQ0FBQyxZQUFvQixXQUFtQixPQUFlLFlBQVk7QUFDMUcsUUFBTSxlQUF1QixNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsT0FBTyxDQUFDO0FBQ3RFLFVBQVEsUUFBUSxLQUFLLE9BQU8sS0FBSztBQUFBLDhCQUNMLFNBQVM7QUFBQSwwQkFDYixZQUFZLG1CQUFtQixVQUFVO0FBQUE7QUFBQTtBQUFBLE1BRzdEO0FBQ0osVUFBUSxRQUFRLEtBQUssR0FBRyxLQUFLLElBQUksS0FBSyxFQUFFO0FBQ3hDLFNBQU87QUFDVDtBQUVPLE1BQU0sVUFBVSxDQUFDLEtBQWUsT0FBZSxVQUFvQixJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU07QUFDM0YsTUFBRyxLQUFLLFlBQVksTUFBTSxPQUFPO0FBQy9CLFdBQU8sRUFBRSxjQUFjLENBQUM7QUFBQSxFQUMxQjtBQUVBLFNBQU8sRUFBRSxjQUFjLENBQUM7QUFDMUIsQ0FBQztBQUVNLE1BQU0sZUFBZSxDQUFDLFNBQVM7QUFDcEMsUUFBTSxhQUFTLHNCQUFBQSxTQUFjLElBQUksS0FBSyxDQUFDO0FBQ3ZDLFFBQU0sYUFBcUIsT0FBTyxLQUFLLE1BQU0sRUFBRSxDQUFDO0FBRWhELE1BQUcsWUFBWTtBQUNiLFdBQU8sT0FBTyxLQUFLLE9BQU8sVUFBVSxDQUFDO0FBQUEsRUFDdkM7QUFFQSxTQUFPLENBQUM7QUFDVjsiLAogICJuYW1lcyI6IFsiZ3JhcGhxbEZpZWxkcyJdCn0K
@@ -0,0 +1,57 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var auth_exports = {};
19
+ __export(auth_exports, {
20
+ getLambdaData: () => getLambdaData,
21
+ isAuthenticated: () => isAuthenticated,
22
+ parseJsonData: () => parseJsonData
23
+ });
24
+ module.exports = __toCommonJS(auth_exports);
25
+ const getLambdaData = (data) => {
26
+ if (typeof data === "string") {
27
+ return {
28
+ body: parseJsonData(data),
29
+ context: {}
30
+ };
31
+ }
32
+ const { body, "body-json": bodyJson, requestContext } = data;
33
+ const queryData = body || bodyJson;
34
+ return {
35
+ body: parseJsonData(queryData),
36
+ context: requestContext ? { ...requestContext } : {}
37
+ };
38
+ };
39
+ const parseJsonData = (data) => {
40
+ try {
41
+ return JSON.parse(data);
42
+ } catch (error) {
43
+ return data;
44
+ }
45
+ };
46
+ const isAuthenticated = (context, userId) => {
47
+ const { session } = context;
48
+ const { userAccess, userId: sessionUserId } = session;
49
+ return userAccess > 3 || sessionUserId === userId;
50
+ };
51
+ // Annotate the CommonJS export names for ESM import in node:
52
+ 0 && (module.exports = {
53
+ getLambdaData,
54
+ isAuthenticated,
55
+ parseJsonData
56
+ });
57
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2F1dGgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge0FwcFN0YWdlLCB0eXBlIEFwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7U2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uJztcblxuZXhwb3J0IHR5cGUgTGFtYmRhRGF0YUNvbnRleHQgPSB7YWNjb3VudElkOiAnYWNjb3VudElkJyxcbiAgcmVhZG9ubHkgcmVxdWVzdElkOiBzdHJpbmcsXG4gIHJlYWRvbmx5IHJlcXVlc3RUaW1lRXBvY2g6IG51bWJlcixcbiAgcmVhZG9ubHkgcmVzb3VyY2VJZDogc3RyaW5nLFxuICByZWFkb25seSByZXNvdXJjZVBhdGg6IHN0cmluZyxcbiAgcmVhZG9ubHkgc3RhZ2U6IEFwcFN0YWdlXG59O1xuXG5leHBvcnQgdHlwZSBMYW1iZGFEYXRhID0ge1xuICByZWFkb25seSBib2R5Pzogc3RyaW5nIHwgb2JqZWN0O1xuICByZWFkb25seSAnYm9keS1qc29uJz86IHN0cmluZztcbiAgcmVhZG9ubHkgY29udGV4dD86IExhbWJkYURhdGFDb250ZXh0O1xuICByZWFkb25seSByZXF1ZXN0Q29udGV4dD86IG9iamVjdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYW1iZGFEYXRhID0gKGRhdGE6IExhbWJkYURhdGEgfCBzdHJpbmcpID0+IHtcbiAgaWYodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IHBhcnNlSnNvbkRhdGEoZGF0YSksXG4gICAgICBjb250ZXh0OiB7fVxuICAgIH07XG4gIH1cblxuICBjb25zdCB7Ym9keSwgJ2JvZHktanNvbic6IGJvZHlKc29uLCByZXF1ZXN0Q29udGV4dH0gPSBkYXRhIGFzIExhbWJkYURhdGE7XG4gIGNvbnN0IHF1ZXJ5RGF0YSA9IGJvZHkgfHwgYm9keUpzb247XG5cbiAgcmV0dXJuIHtcbiAgICBib2R5OiBwYXJzZUpzb25EYXRhKHF1ZXJ5RGF0YSksXG4gICAgY29udGV4dDogcmVxdWVzdENvbnRleHQgPyB7Li4ucmVxdWVzdENvbnRleHR9IDoge31cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUpzb25EYXRhID0gKGRhdGEpOiBhbnkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcklkOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qge3Nlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3Qge3VzZXJBY2Nlc3MsIHVzZXJJZDogc2Vzc2lvblVzZXJJZH0gPSBzZXNzaW9uO1xuXG4gIHJldHVybiB1c2VyQWNjZXNzID4gMyB8fCBzZXNzaW9uVXNlcklkID09PSB1c2VySWQ7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNCTyxNQUFNLGdCQUFnQixDQUFDLFNBQThCO0FBQzFELE1BQUcsT0FBTyxTQUFTLFVBQVU7QUFDM0IsV0FBTztBQUFBLE1BQ0wsTUFBTSxjQUFjLElBQUk7QUFBQSxNQUN4QixTQUFTLENBQUM7QUFBQSxJQUNaO0FBQUEsRUFDRjtBQUVBLFFBQU0sRUFBQyxNQUFNLGFBQWEsVUFBVSxlQUFjLElBQUk7QUFDdEQsUUFBTSxZQUFZLFFBQVE7QUFFMUIsU0FBTztBQUFBLElBQ0wsTUFBTSxjQUFjLFNBQVM7QUFBQSxJQUM3QixTQUFTLGlCQUFpQixFQUFDLEdBQUcsZUFBYyxJQUFJLENBQUM7QUFBQSxFQUNuRDtBQUNGO0FBRU8sTUFBTSxnQkFBZ0IsQ0FBQyxTQUFjO0FBQzFDLE1BQUk7QUFDRixXQUFPLEtBQUssTUFBTSxJQUFJO0FBQUEsRUFDeEIsU0FBUSxPQUFPO0FBQ2IsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVPLE1BQU0sa0JBQWtCLENBQUMsU0FBcUIsV0FBbUI7QUFDdEUsUUFBTSxFQUFDLFFBQU8sSUFBSTtBQUNsQixRQUFNLEVBQUMsWUFBWSxRQUFRLGNBQWEsSUFBSTtBQUU1QyxTQUFPLGFBQWEsS0FBSyxrQkFBa0I7QUFDN0M7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,30 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var utils_exports = {};
16
+ module.exports = __toCommonJS(utils_exports);
17
+ __reExport(utils_exports, require("./adapterUtils"), module.exports);
18
+ __reExport(utils_exports, require("./analyticsUtils"), module.exports);
19
+ __reExport(utils_exports, require("./arangodbUtils"), module.exports);
20
+ __reExport(utils_exports, require("./auth"), module.exports);
21
+ __reExport(utils_exports, require("./session"), module.exports);
22
+ // Annotate the CommonJS export names for ESM import in node:
23
+ 0 && (module.exports = {
24
+ ...require("./adapterUtils"),
25
+ ...require("./analyticsUtils"),
26
+ ...require("./arangodbUtils"),
27
+ ...require("./auth"),
28
+ ...require("./session")
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJcbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5leHBvcnQgKiBmcm9tICcuL2FkYXB0ZXJVdGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2FuYWx5dGljc1V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vYXJhbmdvZGJVdGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uJzsiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFLQSwwQkFBYywyQkFMZDtBQU1BLDBCQUFjLDZCQU5kO0FBT0EsMEJBQWMsNEJBUGQ7QUFRQSwwQkFBYyxtQkFSZDtBQVNBLDBCQUFjLHNCQVRkOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,60 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var session_exports = {};
29
+ __export(session_exports, {
30
+ getSession: () => getSession,
31
+ isAdminUser: () => isAdminUser,
32
+ setSession: () => setSession
33
+ });
34
+ module.exports = __toCommonJS(session_exports);
35
+ var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
36
+ const setSession = (session) => import_jsonwebtoken.default.sign(session, process.env.SESSION_SECRET);
37
+ const getSession = (token) => {
38
+ try {
39
+ return import_jsonwebtoken.default.verify(token, process.env.SESSION_SECRET);
40
+ } catch (error) {
41
+ switch (error.message) {
42
+ case "jwt expired": {
43
+ const err = new Error("expired_session");
44
+ throw err;
45
+ }
46
+ default: {
47
+ const err = new Error("invalid_session");
48
+ throw err;
49
+ }
50
+ }
51
+ }
52
+ };
53
+ const isAdminUser = (session) => session.userAccess > 2;
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ getSession,
57
+ isAdminUser,
58
+ setSession
59
+ });
60
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3Nlc3Npb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgand0IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5cbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3InO1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uID0ge1xuICByZWFkb25seSBlcnJvcnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZXhwPzogbnVtYmVyO1xuICByZWFkb25seSBpYXQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VyQWNjZXNzPzogbnVtYmVyO1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNlc3Npb25Ub2tlbiA9IHtcbiAgcmVhZG9ubHkgZXhwaXJlczogbnVtYmVyO1xuICByZWFkb25seSBpc3N1ZWQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgdG9rZW46IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0U2Vzc2lvbiA9IChzZXNzaW9uOiBTZXNzaW9uKTogc3RyaW5nID0+IGp3dC5zaWduKHNlc3Npb24sIHByb2Nlc3MuZW52LlNFU1NJT05fU0VDUkVUKTtcblxuZXhwb3J0IGNvbnN0IGdldFNlc3Npb24gPSAodG9rZW46IHN0cmluZyk6IFNlc3Npb24gPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBqd3QudmVyaWZ5KHRva2VuLCBwcm9jZXNzLmVudi5TRVNTSU9OX1NFQ1JFVCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBzd2l0Y2goZXJyb3IubWVzc2FnZSkge1xuICAgICAgY2FzZSAnand0IGV4cGlyZWQnOiB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignZXhwaXJlZF9zZXNzaW9uJyk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdpbnZhbGlkX3Nlc3Npb24nKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzQWRtaW5Vc2VyID0gKHNlc3Npb246IFNlc3Npb24pID0+IHNlc3Npb24udXNlckFjY2VzcyA+IDI7Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSwwQkFBZ0I7QUFxQlQsTUFBTSxhQUFhLENBQUMsWUFBNkIsb0JBQUFBLFFBQUksS0FBSyxTQUFTLFFBQVEsSUFBSSxjQUFjO0FBRTdGLE1BQU0sYUFBYSxDQUFDLFVBQTJCO0FBQ3BELE1BQUk7QUFDRixXQUFPLG9CQUFBQSxRQUFJLE9BQU8sT0FBTyxRQUFRLElBQUksY0FBYztBQUFBLEVBQ3JELFNBQVEsT0FBTztBQUNiLFlBQU8sTUFBTSxTQUFTO0FBQUEsTUFDcEIsS0FBSyxlQUFlO0FBQ2xCLGNBQU0sTUFBTSxJQUFJLE1BQU0saUJBQWlCO0FBQ3ZDLGNBQU07QUFBQSxNQUNSO0FBQUEsTUFDQSxTQUFTO0FBQ1AsY0FBTSxNQUFNLElBQUksTUFBTSxpQkFBaUI7QUFDdkMsY0FBTTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBRU8sTUFBTSxjQUFjLENBQUMsWUFBcUIsUUFBUSxhQUFhOyIsCiAgIm5hbWVzIjogWyJqd3QiXQp9Cg==
package/lex.config.cjs ADDED
@@ -0,0 +1,13 @@
1
+ module.exports = {
2
+ ai: {
3
+ provider: 'cursor',
4
+ model: 'cursor-code',
5
+ maxTokens: 4000,
6
+ temperature: 0.1
7
+ },
8
+ outputPath: 'lib',
9
+ preset: 'node22',
10
+ targetEnvironment: 'node',
11
+ useTypescript: true
12
+ };
13
+
@@ -1,6 +1,6 @@
1
- import { AppType } from '../types/apps';
2
- import type { ApiContext } from '../types/auth';
3
- import type { UserType } from '../types/users';
1
+ import { AppType } from '../types/apps.types';
2
+ import type { ApiContext } from '../types/auth.types';
3
+ import type { UserType } from '../types/users.types';
4
4
  export interface AppOptions {
5
5
  readonly id?: string;
6
6
  readonly key?: string;
@@ -27,9 +27,9 @@ __export(apps_exports, {
27
27
  updateApp: () => updateApp
28
28
  });
29
29
  module.exports = __toCommonJS(apps_exports);
30
- var import_arangojs = require("arangojs");
31
30
  var import_utils = require("@nlabs/utils");
32
- var import_error = require("../types/error");
31
+ var import_arangojs = require("arangojs");
32
+ var import_error = require("../types/error.types");
33
33
  var import_analyticsUtils = require("../utils/analyticsUtils");
34
34
  var import_arangodbUtils = require("../utils/arangodbUtils");
35
35
  var import_session = require("../utils/session");
@@ -79,8 +79,8 @@ const addApp = async (context, app) => {
79
79
  return (0, import_analyticsUtils.logException)({
80
80
  action,
81
81
  category: eventCategory,
82
- value: import_error.ErrorTypes.EXISTING_ITEM,
83
- params: { name }
82
+ params: { name },
83
+ value: import_error.ErrorTypes.EXISTING_ITEM
84
84
  }, context);
85
85
  }
86
86
  } catch (error) {
@@ -97,8 +97,8 @@ const addApp = async (context, app) => {
97
97
  added: Date.now(),
98
98
  email: formatEmail,
99
99
  modified: Date.now(),
100
- phone: formatPhone,
101
- name: formatName
100
+ name: formatName,
101
+ phone: formatPhone
102
102
  };
103
103
  const insertQuery = import_arangojs.aql`INSERT ${insert} IN apps RETURN NEW`;
104
104
  return await database.query(insertQuery).then((cursor) => cursor.next() || {}).catch((error) => (0, import_analyticsUtils.logError)({
@@ -131,13 +131,7 @@ const deleteApp = async (context, app) => {
131
131
  const isAdmin = (0, import_session.isAdminUser)(session);
132
132
  const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
133
133
  if (!isAdmin) {
134
- return (0, import_analyticsUtils.logException)({
135
- action,
136
- category: eventCategory,
137
- label: "unauthorized",
138
- params: app,
139
- value: import_error.ErrorTypes.INVALID_SESSION
140
- }, context);
134
+ return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
141
135
  }
142
136
  const aqlQuery = import_arangojs.aql`FOR a IN apps
143
137
  FILTER a._id == \"${appDocId}\"
@@ -157,20 +151,20 @@ const deactivateApp = (context, app) => {
157
151
  const isAdmin = (0, import_session.isAdminUser)(session);
158
152
  const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
159
153
  if (!isAdmin) {
160
- return (0, import_analyticsUtils.logException)({
161
- action,
162
- category: eventCategory,
163
- label: "unauthorized",
164
- value: import_error.ErrorTypes.INVALID_SESSION
165
- }, context);
154
+ return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
166
155
  }
167
156
  const updated = {
168
157
  active: false
169
158
  };
170
159
  const aqlQuery = import_arangojs.aql`UPDATE ${appDocId} WITH ${updated} IN apps LIMIT 1 RETURN NEW`;
171
- return database.query(aqlQuery).then((cursor) => cursor.next()).catch((error) => {
172
- throw error;
173
- });
160
+ return database.query(aqlQuery).then((cursor) => cursor.next()).catch(
161
+ (error) => (0, import_analyticsUtils.logError)({
162
+ action,
163
+ category: eventCategory,
164
+ label: import_error.ErrorTypes.DATABASE_ERROR,
165
+ params: app
166
+ }, error, context)
167
+ );
174
168
  };
175
169
  const getApp = (context, options) => {
176
170
  const action = "getApp";
@@ -180,12 +174,7 @@ const getApp = (context, options) => {
180
174
  const filterBy = ["a.active == true"];
181
175
  const isAdmin = (0, import_session.isAdminUser)(session);
182
176
  if (!isAdmin) {
183
- return (0, import_analyticsUtils.logException)({
184
- action,
185
- category: eventCategory,
186
- label: "unauthorized",
187
- value: import_error.ErrorTypes.INVALID_SESSION
188
- }, context);
177
+ return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
189
178
  }
190
179
  if (id) {
191
180
  filterBy.push(`a._id == "${(0, import_utils.parseArangoId)(id)}"`);
@@ -200,14 +189,17 @@ const getApp = (context, options) => {
200
189
  FILTER ${filterBy.join(" && ")}
201
190
  ${selectQueries.join("\n")}
202
191
  RETURN MERGE(a, {${selectObjects.join(", ")}})`;
203
- return database.query(aqlQuery).then((cursor) => cursor.next()).catch((error) => (0, import_analyticsUtils.logError)({
204
- action,
205
- category: eventCategory,
206
- label: import_error.ErrorTypes.DATABASE_ERROR,
207
- params: options
208
- }, error, context));
192
+ return database.query(aqlQuery).then((cursor) => cursor.next()).catch((error) => {
193
+ (0, import_analyticsUtils.logError)({
194
+ action,
195
+ category: eventCategory,
196
+ label: import_error.ErrorTypes.DATABASE_ERROR,
197
+ params: options
198
+ }, error, context);
199
+ return null;
200
+ });
209
201
  };
210
- const getApps = (context, options) => {
202
+ const getApps = async (context, options) => {
211
203
  const action = "getApps";
212
204
  const { database, fields, session } = context;
213
205
  const { limit, name } = parseAppOptions(options);
@@ -215,12 +207,7 @@ const getApps = (context, options) => {
215
207
  const filterBy = ["a.active == true"];
216
208
  const isAdmin = (0, import_session.isAdminUser)(session);
217
209
  if (!isAdmin) {
218
- return (0, import_analyticsUtils.logException)({
219
- action,
220
- category: eventCategory,
221
- label: "unauthorized",
222
- value: import_error.ErrorTypes.INVALID_SESSION
223
- }, context);
210
+ return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
224
211
  }
225
212
  if (name) {
226
213
  filterBy.push(`CONTAINS(a.name, "${(0, import_utils.parseString)(name)}")`);
@@ -231,12 +218,15 @@ const getApps = (context, options) => {
231
218
  ${limit.aql}
232
219
  SORT a.name
233
220
  RETURN MERGE(a, {${selectObjects.join(", ")}})`;
234
- return database.query(aqlQuery).then((cursor) => cursor.all()).catch((error) => (0, import_analyticsUtils.logError)({
235
- action,
236
- category: eventCategory,
237
- label: import_error.ErrorTypes.DATABASE_ERROR,
238
- params: options
239
- }, error, context));
221
+ return database.query(aqlQuery).then((cursor) => cursor.all()).catch((error) => {
222
+ (0, import_analyticsUtils.logError)({
223
+ action,
224
+ category: eventCategory,
225
+ label: import_error.ErrorTypes.DATABASE_ERROR,
226
+ params: options
227
+ }, error, context);
228
+ return [];
229
+ });
240
230
  };
241
231
  // Annotate the CommonJS export names for ESM import in node:
242
232
  0 && (module.exports = {
@@ -249,4 +239,4 @@ const getApps = (context, options) => {
249
239
  parseAppOptions,
250
240
  updateApp
251
241
  });
252
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvYXBwcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvY3Vyc29yJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VQaG9uZSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7QXBwVHlwZX0gZnJvbSAnLi4vdHlwZXMvYXBwcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yJztcbmltcG9ydCB7bG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMnO1xuaW1wb3J0IHtnZXREb2NJZCwgZ2V0TGltaXQsIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGV9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMnO1xuaW1wb3J0IHtpc0FkbWluVXNlcn0gZnJvbSAnLi4vdXRpbHMvc2Vzc2lvbic7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQgdHlwZSB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2FwcHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE9wdGlvbnMge1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFwcE9wdGlvbmFsID0gKGZpZWxkczogc3RyaW5nW10gPSBbXSkgPT5cbiAgZmllbGRzLnJlZHVjZSgoc2VsZWN0czogYW55LCBmaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgaWYoZmllbGQuaW5jbHVkZXMoJ0NvdW50JykpIHtcbiAgICAgIHJldHVybiBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlKCdhcHBzJywgJ2EnLCBmaWVsZCwgc2VsZWN0cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdHM7XG4gIH0sIHtvYmplY3RzOiBbXSwgcXVlcmllczogW119KTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQXBwT3B0aW9ucyA9IChvcHRpb25zOiBBcHBPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuXG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBsaW1pdFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEFwcCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRVc2VyJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtlbWFpbCwgbmFtZSwgcGhvbmV9ID0gYXBwO1xuICBjb25zdCBmb3JtYXROYW1lID0gcGFyc2VTdHJpbmcobmFtZSk7XG4gIGNvbnN0IGZvcm1hdEVtYWlsID0gcGFyc2VFbWFpbChlbWFpbCk7XG4gIGNvbnN0IGZvcm1hdFBob25lID0gcGFyc2VQaG9uZShwaG9uZSk7XG5cbiAgaWYoIWZvcm1hdE5hbWUpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7bmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX0FSR1VNRU5UU1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgZmlsdGVyczogc3RyaW5nW10gPSBbYGEubmFtZSA9PSBcIiR7Zm9ybWF0TmFtZX1cImBdO1xuXG4gIGlmKGZvcm1hdEVtYWlsKSB7XG4gICAgZmlsdGVycy5wdXNoKGBhLmVtYWlsID09IFwiJHtmb3JtYXRFbWFpbH1cImApO1xuICB9XG5cbiAgY29uc3QgY2hlY2tRdWVyeTogc3RyaW5nID0gYEZPUiB1IElOIHVzZXJzXG4gICAgRklMVEVSICR7ZmlsdGVycy5qb2luKCcgfHwgJyl9XG4gICAgUkVUVVJOIHVgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZXhpc3RpbmdBcHBzID0gYXdhaXQgZGF0YWJhc2UucXVlcnkoY2hlY2tRdWVyeSkudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcblxuICAgIGlmKGV4aXN0aW5nQXBwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5FWElTVElOR19JVEVNLFxuICAgICAgICBwYXJhbXM6IHtuYW1lfVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGluc2VydDogQXBwVHlwZSA9IHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKG5hbWUsIG51bGwpLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICBlbWFpbDogZm9ybWF0RW1haWwsXG4gICAgbW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgcGhvbmU6IGZvcm1hdFBob25lLFxuICAgIG5hbWU6IGZvcm1hdE5hbWVcbiAgfTtcblxuICBjb25zdCBpbnNlcnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBhcHBzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCBkYXRhYmFzZS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSB8fCB7fSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgcGFyYW1zOiB7bmFtZX1cbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUFwcCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPEFwcFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlQXBwJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtfa2V5LCBfaWQsIGlkLCBhcHBJZCwgLi4udXBkYXRlZH0gPSBhcHA7XG4gIGNvbnN0IGFwcERvY0lkID0gZ2V0RG9jSWQoJ2FwcHMnLCBhcHApO1xuICBjb25zdCBhcHBRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIGEgPSBET0NVTUVOVCgke2FwcERvY0lkfSlcbiAgICBVUERBVEUgYSBXSVRIICR7dXBkYXRlZH0gSU4gYXBwc1xuICAgIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCBkYXRhYmFzZS5xdWVyeShhcHBRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3IpID0+XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgICBwYXJhbXM6IHthcHB9XG4gICAgICB9LCBlcnJvciwgY29udGV4dClcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUFwcCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPEFwcFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlQXBwJztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uKTtcbiAgY29uc3QgYXBwRG9jSWQgPSBnZXREb2NJZCgnYXBwcycsIGFwcCk7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgcGFyYW1zOiBhcHAsXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT05cbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgYSBJTiBhcHBzXG4gICAgRklMVEVSIGEuX2lkID09IFxcXCIke2FwcERvY0lkfVxcXCJcbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIGEgSU4gYXBwc1xuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHBcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVhY3RpdmF0ZUFwcCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlYWN0aXZhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT05cbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWQ6IEFwcFR5cGUgPSB7XG4gICAgYWN0aXZlOiBmYWxzZVxuICB9O1xuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFICR7YXBwRG9jSWR9IFdJVEggJHt1cGRhdGVkfSBJTiBhcHBzIExJTUlUIDEgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHAgPSAoY29udGV4dDogQXBpQ29udGV4dCwgb3B0aW9ucz86IEFwcE9wdGlvbnMpOiBQcm9taXNlPEFwcFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0QXBwJztcbiAgY29uc3Qge2RhdGFiYXNlLCBmaWVsZHMsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3Qge2lkLCBrZXksIG5hbWV9ID0gcGFyc2VBcHBPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRBcHBPcHRpb25hbChmaWVsZHMpO1xuICBjb25zdCBmaWx0ZXJCeTogc3RyaW5nW10gPSBbJ2EuYWN0aXZlID09IHRydWUnXTtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTlxuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgaWYoaWQpIHtcbiAgICBmaWx0ZXJCeS5wdXNoKGBhLl9pZCA9PSBcIiR7cGFyc2VBcmFuZ29JZChpZCl9XCJgKTtcbiAgfVxuXG4gIGlmKGtleSkge1xuICAgIGZpbHRlckJ5LnB1c2goYGEuX2tleSA9PSBcImFwcHMvJHtwYXJzZUlkKGtleSl9XCJgKTtcbiAgfVxuXG4gIGlmKG5hbWUpIHtcbiAgICBmaWx0ZXJCeS5wdXNoKGBDT05UQUlOUyhhLm5hbWUsIFwiJHtwYXJzZVN0cmluZyhuYW1lKX1cIilgKTtcbiAgfVxuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgYSBJTiBhcHBzXG4gICAgRklMVEVSICR7ZmlsdGVyQnkuam9pbignICYmICcpfVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICBSRVRVUk4gTUVSR0UoYSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IG9wdGlvbnNcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFwcHMgPSAoY29udGV4dDogQXBpQ29udGV4dCwgb3B0aW9ucz86IEFwcE9wdGlvbnMpOiBQcm9taXNlPEFwcFR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRBcHBzJztcbiAgY29uc3Qge2RhdGFiYXNlLCBmaWVsZHMsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3Qge2xpbWl0LCBuYW1lfSA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWydhLmFjdGl2ZSA9PSB0cnVlJ107XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT05cbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGlmKG5hbWUpIHtcbiAgICBmaWx0ZXJCeS5wdXNoKGBDT05UQUlOUyhhLm5hbWUsIFwiJHtwYXJzZVN0cmluZyhuYW1lKX1cIilgKTtcbiAgfVxuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgYSBJTiBhcHBzXG4gICAgRklMVEVSICR7ZmlsdGVyQnkuam9pbignICYmICcpfVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICAke2xpbWl0LmFxbH1cbiAgICBTT1JUIGEubmFtZVxuICAgIFJFVFVSTiBNRVJHRShhLCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgcGFyYW1zOiBvcHRp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
242
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvYXBwcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VQaG9uZSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtBcHBUeXBlfSBmcm9tICcuLi90eXBlcy9hcHBzLnR5cGVzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMnO1xuaW1wb3J0IHtsb2dFcnJvciwgbG9nRXhjZXB0aW9uLCBVc2VyRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzJztcbmltcG9ydCB7Z2V0RG9jSWQsIGdldExpbWl0LCBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlfSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzJztcbmltcG9ydCB7aXNBZG1pblVzZXJ9IGZyb20gJy4uL3V0aWxzL3Nlc3Npb24nO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzLnR5cGVzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2FwcHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE9wdGlvbnMge1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFwcE9wdGlvbmFsID0gKGZpZWxkczogc3RyaW5nW10gPSBbXSkgPT5cbiAgZmllbGRzLnJlZHVjZSgoc2VsZWN0cywgZmllbGQ6IHN0cmluZykgPT4ge1xuICAgIGlmKGZpZWxkLmluY2x1ZGVzKCdDb3VudCcpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSgnYXBwcycsICdhJywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RzO1xuICB9LCB7b2JqZWN0czogW10sIHF1ZXJpZXM6IFtdfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFwcE9wdGlvbnMgPSAob3B0aW9uczogQXBwT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmcm9tID0gMCxcbiAgICB0byA9IDMwXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbGltaXRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxVc2VyVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkVXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCB7ZW1haWwsIG5hbWUsIHBob25lfSA9IGFwcDtcbiAgY29uc3QgZm9ybWF0TmFtZSA9IHBhcnNlU3RyaW5nKG5hbWUpO1xuICBjb25zdCBmb3JtYXRFbWFpbCA9IHBhcnNlRW1haWwoZW1haWwpO1xuICBjb25zdCBmb3JtYXRQaG9uZSA9IHBhcnNlUGhvbmUocGhvbmUpO1xuXG4gIGlmKCFmb3JtYXROYW1lKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge25hbWV9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFNcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcnM6IHN0cmluZ1tdID0gW2BhLm5hbWUgPT0gXCIke2Zvcm1hdE5hbWV9XCJgXTtcblxuICBpZihmb3JtYXRFbWFpbCkge1xuICAgIGZpbHRlcnMucHVzaChgYS5lbWFpbCA9PSBcIiR7Zm9ybWF0RW1haWx9XCJgKTtcbiAgfVxuXG4gIGNvbnN0IGNoZWNrUXVlcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiAke2ZpbHRlcnMuam9pbignIHx8ICcpfVxuICAgIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIGNvbnN0IGV4aXN0aW5nQXBwcyA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGNoZWNrUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcblxuICAgIGlmKGV4aXN0aW5nQXBwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfSVRFTVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGluc2VydDogQXBwVHlwZSA9IHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKG5hbWUsIG51bGwpLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICBlbWFpbDogZm9ybWF0RW1haWwsXG4gICAgbW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICBwaG9uZTogZm9ybWF0UGhvbmVcbiAgfTtcblxuICBjb25zdCBpbnNlcnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBhcHBzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCBkYXRhYmFzZS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIHx8IHt9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge19rZXksIF9pZCwgaWQsIGFwcElkLCAuLi51cGRhdGVkfSA9IGFwcDtcbiAgY29uc3QgYXBwRG9jSWQgPSBnZXREb2NJZCgnYXBwcycsIGFwcCk7XG4gIGNvbnN0IGFwcFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgYSA9IERPQ1VNRU5UKCR7YXBwRG9jSWR9KVxuICAgIFVQREFURSBhIFdJVEggJHt1cGRhdGVkfSBJTiBhcHBzXG4gICAgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFwcFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT5cbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICAgIHBhcmFtczoge2FwcH1cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGEgSU4gYXBwc1xuICAgIEZJTFRFUiBhLl9pZCA9PSBcXFwiJHthcHBEb2NJZH1cXFwiXG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSBhIElOIGFwcHNcbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHAgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVhY3RpdmF0ZUFwcCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlYWN0aXZhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkOiBBcHBUeXBlID0ge1xuICAgIGFjdGl2ZTogZmFsc2VcbiAgfTtcbiAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2FwcERvY0lkfSBXSVRIICR7dXBkYXRlZH0gSU4gYXBwcyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHAgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtpZCwga2V5LCBuYW1lfSA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWydhLmFjdGl2ZSA9PSB0cnVlJ107XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBpZihpZCkge1xuICAgIGZpbHRlckJ5LnB1c2goYGEuX2lkID09IFwiJHtwYXJzZUFyYW5nb0lkKGlkKX1cImApO1xuICB9XG5cbiAgaWYoa2V5KSB7XG4gICAgZmlsdGVyQnkucHVzaChgYS5fa2V5ID09IFwiYXBwcy8ke3BhcnNlSWQoa2V5KX1cImApO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIFJFVFVSTiBNRVJHRShhLCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIHVua25vd24gYXMgQXBwVHlwZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBzID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0QXBwcyc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtsaW1pdCwgbmFtZX0gPSBwYXJzZUFwcE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldEFwcE9wdGlvbmFsKGZpZWxkcyk7XG4gIGNvbnN0IGZpbHRlckJ5OiBzdHJpbmdbXSA9IFsnYS5hY3RpdmUgPT0gdHJ1ZSddO1xuICBjb25zdCBpc0FkbWluID0gaXNBZG1pblVzZXIoc2Vzc2lvbik7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTikpO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgICR7bGltaXQuYXFsfVxuICAgIFNPUlQgYS5uYW1lXG4gICAgUkVUVVJOIE1FUkdFKGEsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIEFwcFR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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
@@ -0,0 +1,4 @@
1
+ import type { ApiContext, ConnectionType } from '../types';
2
+ export declare const addConnection: (context: ApiContext, fromType: string, fromId: string, toType: string, toId: string, value?: string) => Promise<boolean>;
3
+ export declare const getConnection: (context: ApiContext, fromType: string, fromId: string, toType: string, toId: string) => Promise<ConnectionType>;
4
+ export declare const deleteConnection: (context: ApiContext, fromType: string, fromId: string, toType: string, toId: string) => Promise<boolean>;