@nlabs/metropolisjs 0.1.2 → 0.3.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 (329) hide show
  1. package/.github/copilot-instructions.md +167 -0
  2. package/AGENTS.md +13 -0
  3. package/CHANGELOG.md +112 -0
  4. package/GRAPHQL_VALIDATION_RESULTS.md +158 -0
  5. package/PERMISSION_GRAPHQL_INTEGRATION.md +293 -0
  6. package/PERMISSION_IMPLEMENTATION_SUMMARY.md +243 -0
  7. package/README.md +1123 -112
  8. package/SIGNIN_GRAPHQL_VALIDATION.md +125 -0
  9. package/VAULT_GRAPHQL_API_FINDINGS.md +312 -0
  10. package/docs/ACTIONS.md +63 -0
  11. package/docs/COLLECTIONS.md +1038 -0
  12. package/docs/CONNECTIONS.md +1367 -0
  13. package/docs/CRUD_INTEGRATION.md +702 -0
  14. package/examples/connections-usage.tsx +909 -0
  15. package/examples/content-actions-usage.ts +144 -0
  16. package/examples/crud-usage.tsx +847 -0
  17. package/examples/extensibility-usage.tsx +889 -0
  18. package/examples/i18n-import-examples.ts +86 -0
  19. package/examples/i18n-namespace-usage.ts +118 -0
  20. package/examples/i18next-singleton-demo.ts +187 -0
  21. package/examples/permission-system-usage.tsx +415 -0
  22. package/examples/project-details.tsx +397 -0
  23. package/examples/shared-i18n-usage.tsx +203 -0
  24. package/examples/signup-error-handling.ts +100 -0
  25. package/examples/translation-types.ts +86 -0
  26. package/examples/translation-usage.tsx +336 -0
  27. package/index.js +1 -0
  28. package/jest.config.mjs +28 -0
  29. package/lex.config.mjs +11 -2
  30. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts +22 -0
  31. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts.map +1 -0
  32. package/lib/__tests__/e2e/helpers/testGraphQLServer.js +197 -0
  33. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts +3 -0
  34. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts.map +1 -0
  35. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.js +52 -0
  36. package/lib/actions/appActions/appActions.d.ts +29 -0
  37. package/lib/actions/appActions/appActions.d.ts.map +1 -0
  38. package/lib/actions/appActions/appActions.js +159 -0
  39. package/lib/actions/connectionActions/connectionActions.d.ts +19 -0
  40. package/lib/actions/connectionActions/connectionActions.d.ts.map +1 -0
  41. package/lib/actions/connectionActions/connectionActions.js +131 -0
  42. package/lib/actions/contentActions/contentActions.d.ts +34 -0
  43. package/lib/actions/contentActions/contentActions.d.ts.map +1 -0
  44. package/lib/actions/contentActions/contentActions.js +314 -0
  45. package/lib/actions/conversationActions/conversationActions.d.ts +30 -0
  46. package/lib/actions/conversationActions/conversationActions.d.ts.map +1 -0
  47. package/lib/actions/conversationActions/conversationActions.js +225 -0
  48. package/lib/actions/eventActions/eventActions.d.ts +27 -7
  49. package/lib/actions/eventActions/eventActions.d.ts.map +1 -0
  50. package/lib/actions/eventActions/eventActions.js +436 -2
  51. package/lib/actions/groupActions/groupActions.d.ts +30 -0
  52. package/lib/actions/groupActions/groupActions.d.ts.map +1 -0
  53. package/lib/actions/groupActions/groupActions.js +229 -0
  54. package/lib/actions/imageActions/imageActions.d.ts +16 -10
  55. package/lib/actions/imageActions/imageActions.d.ts.map +1 -0
  56. package/lib/actions/imageActions/imageActions.js +593 -2
  57. package/lib/actions/index.d.ts +21 -9
  58. package/lib/actions/index.d.ts.map +1 -0
  59. package/lib/actions/index.js +22 -2
  60. package/lib/actions/locationActions/locationActions.d.ts +11 -9
  61. package/lib/actions/locationActions/locationActions.d.ts.map +1 -0
  62. package/lib/actions/locationActions/locationActions.js +388 -2
  63. package/lib/actions/messageActions/messageActions.d.ts +16 -32
  64. package/lib/actions/messageActions/messageActions.d.ts.map +1 -0
  65. package/lib/actions/messageActions/messageActions.js +235 -2
  66. package/lib/actions/permissionActions/permissionActions.d.ts +34 -0
  67. package/lib/actions/permissionActions/permissionActions.d.ts.map +1 -0
  68. package/lib/actions/permissionActions/permissionActions.js +330 -0
  69. package/lib/actions/personaActions/personaActions.d.ts +65 -0
  70. package/lib/actions/personaActions/personaActions.d.ts.map +1 -0
  71. package/lib/actions/personaActions/personaActions.js +572 -0
  72. package/lib/actions/postActions/postActions.d.ts +12 -32
  73. package/lib/actions/postActions/postActions.d.ts.map +1 -0
  74. package/lib/actions/postActions/postActions.js +447 -2
  75. package/lib/actions/reactionActions/reactionActions.d.ts +13 -27
  76. package/lib/actions/reactionActions/reactionActions.d.ts.map +1 -0
  77. package/lib/actions/reactionActions/reactionActions.js +413 -2
  78. package/lib/actions/sseActions/sseActions.d.ts +1 -0
  79. package/lib/actions/sseActions/sseActions.d.ts.map +1 -0
  80. package/lib/actions/sseActions/sseActions.js +148 -2
  81. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +24 -0
  82. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +1 -0
  83. package/lib/actions/subscriptionActions/subscriptionActions.js +329 -0
  84. package/lib/actions/tagActions/tagActions.d.ts +13 -31
  85. package/lib/actions/tagActions/tagActions.d.ts.map +1 -0
  86. package/lib/actions/tagActions/tagActions.js +347 -2
  87. package/lib/actions/translationActions/translationActions.d.ts +38 -0
  88. package/lib/actions/translationActions/translationActions.d.ts.map +1 -0
  89. package/lib/actions/translationActions/translationActions.js +189 -0
  90. package/lib/actions/userActions/userActions.d.ts +44 -95
  91. package/lib/actions/userActions/userActions.d.ts.map +1 -0
  92. package/lib/actions/userActions/userActions.js +870 -2
  93. package/lib/actions/videoActions/videoActions.d.ts +41 -0
  94. package/lib/actions/videoActions/videoActions.d.ts.map +1 -0
  95. package/lib/actions/videoActions/videoActions.js +532 -0
  96. package/lib/actions/websocketActions/websocketActions.d.ts +20 -21
  97. package/lib/actions/websocketActions/websocketActions.d.ts.map +1 -0
  98. package/lib/actions/websocketActions/websocketActions.js +377 -2
  99. package/lib/adapters/appAdapter/appAdapter.d.ts +8 -0
  100. package/lib/adapters/appAdapter/appAdapter.d.ts.map +1 -0
  101. package/lib/adapters/appAdapter/appAdapter.js +90 -0
  102. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +3 -2
  103. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +1 -0
  104. package/lib/adapters/arangoAdapter/arangoAdapter.js +75 -2
  105. package/lib/adapters/contentAdapter/contentAdapter.d.ts +3 -2
  106. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +1 -0
  107. package/lib/adapters/contentAdapter/contentAdapter.js +107 -2
  108. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +3 -2
  109. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +1 -0
  110. package/lib/adapters/conversationAdapter/conversationAdapter.js +75 -2
  111. package/lib/adapters/eventAdapter/eventAdapter.d.ts +5 -2
  112. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +1 -0
  113. package/lib/adapters/eventAdapter/eventAdapter.js +162 -2
  114. package/lib/adapters/fileAdapter/fileAdapter.d.ts +3 -2
  115. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +1 -0
  116. package/lib/adapters/fileAdapter/fileAdapter.js +118 -2
  117. package/lib/adapters/groupAdapter/groupAdapter.d.ts +28 -0
  118. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +1 -0
  119. package/lib/adapters/groupAdapter/groupAdapter.js +66 -0
  120. package/lib/adapters/imageAdapter/imageAdapter.d.ts +9 -2
  121. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +1 -0
  122. package/lib/adapters/imageAdapter/imageAdapter.js +134 -2
  123. package/lib/adapters/index.d.ts +34 -16
  124. package/lib/adapters/index.d.ts.map +1 -0
  125. package/lib/adapters/index.js +19 -2
  126. package/lib/adapters/locationAdapter/locationAdapter.d.ts +3 -2
  127. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +1 -0
  128. package/lib/adapters/locationAdapter/locationAdapter.js +95 -2
  129. package/lib/adapters/messageAdapter/messageAdapter.d.ts +23 -19
  130. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +1 -0
  131. package/lib/adapters/messageAdapter/messageAdapter.js +82 -2
  132. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +41 -0
  133. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +1 -0
  134. package/lib/adapters/permissionAdapter/permissionAdapter.js +120 -0
  135. package/lib/adapters/personaAdapter/personaAdapter.d.ts +28 -2
  136. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +1 -0
  137. package/lib/adapters/personaAdapter/personaAdapter.js +161 -2
  138. package/lib/adapters/postAdapter/postAdapter.d.ts +3 -2
  139. package/lib/adapters/postAdapter/postAdapter.d.ts.map +1 -0
  140. package/lib/adapters/postAdapter/postAdapter.js +115 -2
  141. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +5 -2
  142. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +1 -0
  143. package/lib/adapters/reactionAdapter/reactionAdapter.js +81 -2
  144. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +3 -2
  145. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +1 -0
  146. package/lib/adapters/reaktorAdapter/reaktorAdapter.js +58 -2
  147. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +3 -2
  148. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +1 -0
  149. package/lib/adapters/sessionAdapter/sessionAdapter.js +80 -2
  150. package/lib/adapters/tagAdapter/tagAdapter.d.ts +3 -2
  151. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +1 -0
  152. package/lib/adapters/tagAdapter/tagAdapter.js +98 -2
  153. package/lib/adapters/translationAdapter/translationAdapter.d.ts +21 -0
  154. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +1 -0
  155. package/lib/adapters/translationAdapter/translationAdapter.js +55 -0
  156. package/lib/adapters/userAdapter/userAdapter.d.ts +18 -6
  157. package/lib/adapters/userAdapter/userAdapter.d.ts.map +1 -0
  158. package/lib/adapters/userAdapter/userAdapter.js +302 -2
  159. package/lib/adapters/videoAdapter/videoAdapter.d.ts +8 -0
  160. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +1 -0
  161. package/lib/adapters/videoAdapter/videoAdapter.js +194 -0
  162. package/lib/config/index.d.ts +19 -6
  163. package/lib/config/index.d.ts.map +1 -0
  164. package/lib/config/index.js +97 -2
  165. package/lib/constants/Collections.d.ts +44 -0
  166. package/lib/constants/Collections.d.ts.map +1 -0
  167. package/lib/constants/Collections.js +40 -0
  168. package/lib/constants/MetropolisConstants.d.ts +1 -0
  169. package/lib/constants/MetropolisConstants.d.ts.map +1 -0
  170. package/lib/constants/MetropolisConstants.js +15 -2
  171. package/lib/graphql/message.d.ts +1 -0
  172. package/lib/graphql/message.d.ts.map +1 -0
  173. package/lib/graphql/message.js +6 -4
  174. package/lib/graphql/notification.d.ts +1 -0
  175. package/lib/graphql/notification.d.ts.map +1 -0
  176. package/lib/graphql/notification.js +6 -4
  177. package/lib/graphql/session.d.ts +1 -0
  178. package/lib/graphql/session.d.ts.map +1 -0
  179. package/lib/graphql/session.js +4 -3
  180. package/lib/index.d.ts +45 -22
  181. package/lib/index.d.ts.map +1 -0
  182. package/lib/index.js +248 -2
  183. package/lib/stores/appStore.d.ts +1 -0
  184. package/lib/stores/appStore.d.ts.map +1 -0
  185. package/lib/stores/appStore.js +23 -2
  186. package/lib/stores/contentStore.d.ts +36 -0
  187. package/lib/stores/contentStore.d.ts.map +1 -0
  188. package/lib/stores/contentStore.js +139 -0
  189. package/lib/stores/conversationStore.d.ts +38 -0
  190. package/lib/stores/conversationStore.d.ts.map +1 -0
  191. package/lib/stores/conversationStore.js +117 -0
  192. package/lib/stores/eventStore.d.ts +4 -1
  193. package/lib/stores/eventStore.d.ts.map +1 -0
  194. package/lib/stores/eventStore.js +47 -2
  195. package/lib/stores/groupStore.d.ts +37 -0
  196. package/lib/stores/groupStore.d.ts.map +1 -0
  197. package/lib/stores/groupStore.js +68 -0
  198. package/lib/stores/imageStore.d.ts +6 -1
  199. package/lib/stores/imageStore.d.ts.map +1 -0
  200. package/lib/stores/imageStore.js +53 -2
  201. package/lib/stores/index.d.ts +20 -11
  202. package/lib/stores/index.d.ts.map +1 -0
  203. package/lib/stores/index.js +24 -2
  204. package/lib/stores/locationStore.d.ts +2 -1
  205. package/lib/stores/locationStore.d.ts.map +1 -0
  206. package/lib/stores/locationStore.js +42 -2
  207. package/lib/stores/messageStore.d.ts +19 -4
  208. package/lib/stores/messageStore.d.ts.map +1 -0
  209. package/lib/stores/messageStore.js +137 -2
  210. package/lib/stores/notificationStore.d.ts +33 -0
  211. package/lib/stores/notificationStore.d.ts.map +1 -0
  212. package/lib/stores/notificationStore.js +55 -0
  213. package/lib/stores/permissionStore.d.ts +37 -0
  214. package/lib/stores/permissionStore.d.ts.map +1 -0
  215. package/lib/stores/permissionStore.js +117 -0
  216. package/lib/stores/personaStore.d.ts +26 -0
  217. package/lib/stores/personaStore.d.ts.map +1 -0
  218. package/lib/stores/personaStore.js +118 -0
  219. package/lib/stores/postStore.d.ts +2 -1
  220. package/lib/stores/postStore.d.ts.map +1 -0
  221. package/lib/stores/postStore.js +53 -2
  222. package/lib/stores/reactionStore.d.ts +1 -0
  223. package/lib/stores/reactionStore.d.ts.map +1 -0
  224. package/lib/stores/reactionStore.js +28 -2
  225. package/lib/stores/subscriptionStore.d.ts +41 -0
  226. package/lib/stores/subscriptionStore.d.ts.map +1 -0
  227. package/lib/stores/subscriptionStore.js +85 -0
  228. package/lib/stores/tagStore.d.ts +8 -5
  229. package/lib/stores/tagStore.d.ts.map +1 -0
  230. package/lib/stores/tagStore.js +87 -2
  231. package/lib/stores/translationStore.d.ts +42 -0
  232. package/lib/stores/translationStore.d.ts.map +1 -0
  233. package/lib/stores/translationStore.js +122 -0
  234. package/lib/stores/userStore.d.ts +5 -4
  235. package/lib/stores/userStore.d.ts.map +1 -0
  236. package/lib/stores/userStore.js +319 -2
  237. package/lib/stores/videoStore.d.ts +39 -0
  238. package/lib/stores/videoStore.d.ts.map +1 -0
  239. package/lib/stores/videoStore.js +132 -0
  240. package/lib/stores/websocketStore.d.ts +1 -0
  241. package/lib/stores/websocketStore.d.ts.map +1 -0
  242. package/lib/stores/websocketStore.js +51 -2
  243. package/lib/types/apps.types.d.ts +17 -0
  244. package/lib/types/apps.types.d.ts.map +1 -0
  245. package/lib/types/apps.types.js +6 -0
  246. package/lib/types/common.types.d.ts +31 -0
  247. package/lib/types/common.types.d.ts.map +1 -0
  248. package/lib/types/common.types.js +6 -0
  249. package/lib/types/conversations.types.d.ts +17 -0
  250. package/lib/types/conversations.types.d.ts.map +1 -0
  251. package/lib/types/conversations.types.js +6 -0
  252. package/lib/types/edges.types.d.ts +38 -0
  253. package/lib/types/edges.types.d.ts.map +1 -0
  254. package/lib/types/edges.types.js +6 -0
  255. package/lib/types/groups.types.d.ts +19 -0
  256. package/lib/types/groups.types.d.ts.map +1 -0
  257. package/lib/types/groups.types.js +6 -0
  258. package/lib/types/index.d.ts +12 -0
  259. package/lib/types/index.d.ts.map +1 -0
  260. package/lib/types/index.js +12 -0
  261. package/lib/types/subscriptions.types.d.ts +32 -0
  262. package/lib/types/subscriptions.types.d.ts.map +1 -0
  263. package/lib/types/subscriptions.types.js +6 -0
  264. package/lib/types/videos.types.d.ts +61 -0
  265. package/lib/types/videos.types.d.ts.map +1 -0
  266. package/lib/types/videos.types.js +6 -0
  267. package/lib/utils/MetropolisProvider.d.ts +39 -15
  268. package/lib/utils/MetropolisProvider.d.ts.map +1 -0
  269. package/lib/utils/MetropolisProvider.js +31 -2
  270. package/lib/utils/actionFactory.d.ts +21 -19
  271. package/lib/utils/actionFactory.d.ts.map +1 -0
  272. package/lib/utils/actionFactory.js +95 -2
  273. package/lib/utils/api.d.ts +5 -4
  274. package/lib/utils/api.d.ts.map +1 -0
  275. package/lib/utils/api.js +252 -6
  276. package/lib/utils/app.d.ts +1 -0
  277. package/lib/utils/app.d.ts.map +1 -0
  278. package/lib/utils/app.js +15 -2
  279. package/lib/utils/baseActionFactory.d.ts +5 -23
  280. package/lib/utils/baseActionFactory.d.ts.map +1 -0
  281. package/lib/utils/baseActionFactory.js +72 -2
  282. package/lib/utils/configUtils.d.ts +11 -0
  283. package/lib/utils/configUtils.d.ts.map +1 -0
  284. package/lib/utils/configUtils.js +20 -0
  285. package/lib/utils/dateUtils.d.ts +1 -0
  286. package/lib/utils/dateUtils.d.ts.map +1 -0
  287. package/lib/utils/dateUtils.js +11 -2
  288. package/lib/utils/file.d.ts +3 -1
  289. package/lib/utils/file.d.ts.map +1 -0
  290. package/lib/utils/file.js +156 -2
  291. package/lib/utils/i18n.d.ts +7 -0
  292. package/lib/utils/i18n.d.ts.map +1 -0
  293. package/lib/utils/i18n.js +96 -0
  294. package/lib/utils/index.d.ts +20 -0
  295. package/lib/utils/index.d.ts.map +1 -0
  296. package/lib/utils/index.js +26 -0
  297. package/lib/utils/location.d.ts +4 -3
  298. package/lib/utils/location.d.ts.map +1 -0
  299. package/lib/utils/location.js +82 -2
  300. package/lib/utils/permissionUtils.d.ts +22 -0
  301. package/lib/utils/permissionUtils.d.ts.map +1 -0
  302. package/lib/utils/permissionUtils.js +72 -0
  303. package/lib/utils/requestCache.d.ts +8 -0
  304. package/lib/utils/requestCache.d.ts.map +1 -0
  305. package/lib/utils/requestCache.js +53 -0
  306. package/lib/utils/session.d.ts +14 -0
  307. package/lib/utils/session.d.ts.map +1 -0
  308. package/lib/utils/session.js +107 -0
  309. package/lib/utils/useConversationTyping.d.ts +26 -0
  310. package/lib/utils/useConversationTyping.d.ts.map +1 -0
  311. package/lib/utils/useConversationTyping.js +117 -0
  312. package/lib/utils/useMetropolis.d.ts +67 -12
  313. package/lib/utils/useMetropolis.d.ts.map +1 -0
  314. package/lib/utils/useMetropolis.js +311 -2
  315. package/lib/utils/useTranslations.d.ts +16 -0
  316. package/lib/utils/useTranslations.d.ts.map +1 -0
  317. package/lib/utils/useTranslations.js +105 -0
  318. package/lib/utils/validatorFactory.d.ts +3 -2
  319. package/lib/utils/validatorFactory.d.ts.map +1 -0
  320. package/lib/utils/validatorFactory.js +95 -2
  321. package/package.json +58 -17
  322. package/temp_signin.ts +73 -0
  323. package/lib/actions/profileActions/profileActions.d.ts +0 -50
  324. package/lib/actions/profileActions/profileActions.js +0 -2
  325. package/lib/adapters/profileAdapter/profileAdapter.d.ts +0 -32
  326. package/lib/adapters/profileAdapter/profileAdapter.js +0 -2
  327. package/lib/stores/profileStore.d.ts +0 -24
  328. package/lib/stores/profileStore.js +0 -2
  329. /package/{FACTORY_PATTERN_GUIDE.md → factoryPatternGuide.md} +0 -0
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Copyright (c) 2024-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { parseId } from '@nlabs/utils';
5
+ import { CONNECTION_TYPES } from '../../constants/Collections.js';
6
+ import { appMutation, appQuery } from '../../utils/api.js';
7
+ import { clearCachedRequest, getCachedRequest, setCachedRequest } from '../../utils/requestCache.js';
8
+ export const createConnectionActions = (flux)=>{
9
+ const addConnection = async (fromType, fromId, toType, toId, connectionType = CONNECTION_TYPES.MEMBER, metadata = {}, requestOptions = {})=>{
10
+ try {
11
+ const queryVariables = {
12
+ connection: {
13
+ type: 'ConnectionInput!',
14
+ value: {
15
+ connectionType,
16
+ fromId: parseId(fromId),
17
+ fromType,
18
+ metadata,
19
+ toId: parseId(toId),
20
+ toType
21
+ }
22
+ }
23
+ };
24
+ return await appMutation(flux, 'addConnection', 'connections', queryVariables, [
25
+ '_from',
26
+ '_to',
27
+ 'connectionType',
28
+ 'fromId',
29
+ 'fromType',
30
+ 'metadata',
31
+ 'toId',
32
+ 'toType'
33
+ ], {});
34
+ } catch (error) {
35
+ console.error('Error adding connection:', error);
36
+ throw error;
37
+ } finally{
38
+ await clearCachedRequest(flux, `connection.getConnections:${fromType}:${fromId}:${toType || ''}`);
39
+ }
40
+ };
41
+ const getConnections = async (fromType, fromId, toType, filters = {}, requestOptions = {})=>{
42
+ try {
43
+ const cachedResult = getCachedRequest(flux, `connection.getConnections:${fromType}:${fromId}:${toType || ''}`, {
44
+ filters,
45
+ fromId,
46
+ fromType,
47
+ toType
48
+ }, requestOptions);
49
+ if (cachedResult) {
50
+ return cachedResult;
51
+ }
52
+ const queryVariables = {
53
+ fromId: {
54
+ type: 'ID!',
55
+ value: parseId(fromId)
56
+ },
57
+ fromType: {
58
+ type: 'String!',
59
+ value: fromType
60
+ }
61
+ };
62
+ if (toType) {
63
+ queryVariables.toType = {
64
+ type: 'String',
65
+ value: toType
66
+ };
67
+ }
68
+ Object.keys(filters).forEach((key)=>{
69
+ queryVariables[key] = {
70
+ type: 'String',
71
+ value: filters[key]
72
+ };
73
+ });
74
+ const result = await appQuery(flux, 'connections', 'connections', queryVariables, [
75
+ '_from',
76
+ '_to',
77
+ 'connectionType',
78
+ 'fromId',
79
+ 'fromType',
80
+ 'metadata',
81
+ 'toId',
82
+ 'toType'
83
+ ], {});
84
+ return await setCachedRequest(flux, `connection.getConnections:${fromType}:${fromId}:${toType || ''}`, {
85
+ filters,
86
+ fromId,
87
+ fromType,
88
+ toType
89
+ }, result, requestOptions);
90
+ } catch (error) {
91
+ console.error('Error getting connections:', error);
92
+ throw error;
93
+ }
94
+ };
95
+ const removeConnection = async (fromType, fromId, toType, toId, requestOptions = {})=>{
96
+ try {
97
+ const queryVariables = {
98
+ fromId: {
99
+ type: 'ID!',
100
+ value: parseId(fromId)
101
+ },
102
+ fromType: {
103
+ type: 'String!',
104
+ value: fromType
105
+ },
106
+ toId: {
107
+ type: 'ID!',
108
+ value: parseId(toId)
109
+ },
110
+ toType: {
111
+ type: 'String!',
112
+ value: toType
113
+ }
114
+ };
115
+ await appMutation(flux, 'removeConnection', 'connections', queryVariables, [], {});
116
+ return true;
117
+ } catch (error) {
118
+ console.error('Error removing connection:', error);
119
+ throw error;
120
+ } finally{
121
+ await clearCachedRequest(flux, `connection.getConnections:${fromType}:${fromId}:${toType || ''}`);
122
+ }
123
+ };
124
+ return {
125
+ addConnection,
126
+ getConnections,
127
+ removeConnection
128
+ };
129
+ };
130
+
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9jb25uZWN0aW9uQWN0aW9ucy9jb25uZWN0aW9uQWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtwYXJzZUlkfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuXG5pbXBvcnQge0NPTk5FQ1RJT05fVFlQRVMsIEVER0VTfSBmcm9tICcuLi8uLi9jb25zdGFudHMvQ29sbGVjdGlvbnMuanMnO1xuaW1wb3J0IHthcHBNdXRhdGlvbiwgYXBwUXVlcnl9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS5qcyc7XG5pbXBvcnQge2NsZWFyQ2FjaGVkUmVxdWVzdCwgZ2V0Q2FjaGVkUmVxdWVzdCwgc2V0Q2FjaGVkUmVxdWVzdH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdENhY2hlLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7Q29sbGVjdGlvblR5cGUsIENvbm5lY3Rpb25UeXBlfSBmcm9tICcuLi8uLi9jb25zdGFudHMvQ29sbGVjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge0FwaVJlc3VsdHNUeXBlfSBmcm9tICcuLi8uLi91dGlscy9hcGkuanMnO1xuaW1wb3J0IHR5cGUge0Nvbm5lY3Rpb25FZGdlfSBmcm9tICcuLi8uLi90eXBlcy9lZGdlcy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uUmVxdWVzdE9wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkFjdGlvbnMge1xuICBhZGRDb25uZWN0aW9uOiAoXG4gICAgZnJvbVR5cGU6IENvbGxlY3Rpb25UeXBlLFxuICAgIGZyb21JZDogc3RyaW5nLFxuICAgIHRvVHlwZTogQ29sbGVjdGlvblR5cGUsXG4gICAgdG9JZDogc3RyaW5nLFxuICAgIGNvbm5lY3Rpb25UeXBlPzogQ29ubmVjdGlvblR5cGUsXG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnNcbiAgKSA9PiBQcm9taXNlPENvbm5lY3Rpb25FZGdlPjtcbiAgZ2V0Q29ubmVjdGlvbnM6IChcbiAgICBmcm9tVHlwZTogQ29sbGVjdGlvblR5cGUsXG4gICAgZnJvbUlkOiBzdHJpbmcsXG4gICAgdG9UeXBlPzogQ29sbGVjdGlvblR5cGUsXG4gICAgZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9uc1xuICApID0+IFByb21pc2U8Q29ubmVjdGlvbkVkZ2VbXT47XG4gIHJlbW92ZUNvbm5lY3Rpb246IChcbiAgICBmcm9tVHlwZTogQ29sbGVjdGlvblR5cGUsXG4gICAgZnJvbUlkOiBzdHJpbmcsXG4gICAgdG9UeXBlOiBDb2xsZWN0aW9uVHlwZSxcbiAgICB0b0lkOiBzdHJpbmcsXG4gICAgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9uc1xuICApID0+IFByb21pc2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkFwaVJlc3VsdHNUeXBlIGV4dGVuZHMgQXBpUmVzdWx0c1R5cGUge1xuICBjb25uZWN0aW9ucz86IHtcbiAgICBhZGQ/OiBDb25uZWN0aW9uRWRnZTtcbiAgICBsaXN0PzogQ29ubmVjdGlvbkVkZ2VbXTtcbiAgICByZW1vdmU/OiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29ubmVjdGlvbkFjdGlvbnMgPSAoZmx1eDogRmx1eEZyYW1ld29yayk6IENvbm5lY3Rpb25BY3Rpb25zID0+IHtcbiAgY29uc3QgYWRkQ29ubmVjdGlvbiA9IGFzeW5jIChcbiAgICBmcm9tVHlwZTogQ29sbGVjdGlvblR5cGUsXG4gICAgZnJvbUlkOiBzdHJpbmcsXG4gICAgdG9UeXBlOiBDb2xsZWN0aW9uVHlwZSxcbiAgICB0b0lkOiBzdHJpbmcsXG4gICAgY29ubmVjdGlvblR5cGU6IENvbm5lY3Rpb25UeXBlID0gQ09OTkVDVElPTl9UWVBFUy5NRU1CRVIsXG4gICAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPENvbm5lY3Rpb25FZGdlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB7dHlwZTogc3RyaW5nOyB2YWx1ZTogdW5rbm93bn0+ID0ge1xuICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgdHlwZTogJ0Nvbm5lY3Rpb25JbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBjb25uZWN0aW9uVHlwZSxcbiAgICAgICAgICAgIGZyb21JZDogcGFyc2VJZChmcm9tSWQpLFxuICAgICAgICAgICAgZnJvbVR5cGUsXG4gICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgIHRvSWQ6IHBhcnNlSWQodG9JZCksXG4gICAgICAgICAgICB0b1R5cGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxDb25uZWN0aW9uRWRnZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdhZGRDb25uZWN0aW9uJyxcbiAgICAgICAgJ2Nvbm5lY3Rpb25zJyxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnX2Zyb20nLFxuICAgICAgICAgICdfdG8nLFxuICAgICAgICAgICdjb25uZWN0aW9uVHlwZScsXG4gICAgICAgICAgJ2Zyb21JZCcsXG4gICAgICAgICAgJ2Zyb21UeXBlJyxcbiAgICAgICAgICAnbWV0YWRhdGEnLFxuICAgICAgICAgICd0b0lkJyxcbiAgICAgICAgICAndG9UeXBlJ1xuICAgICAgICBdLFxuICAgICAgICB7fVxuICAgICAgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhZGRpbmcgY29ubmVjdGlvbjonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGBjb25uZWN0aW9uLmdldENvbm5lY3Rpb25zOiR7ZnJvbVR5cGV9OiR7ZnJvbUlkfToke3RvVHlwZSB8fCAnJ31gKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0Q29ubmVjdGlvbnMgPSBhc3luYyAoXG4gICAgZnJvbVR5cGU6IENvbGxlY3Rpb25UeXBlLFxuICAgIGZyb21JZDogc3RyaW5nLFxuICAgIHRvVHlwZT86IENvbGxlY3Rpb25UeXBlLFxuICAgIGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPENvbm5lY3Rpb25FZGdlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxDb25uZWN0aW9uRWRnZVtdPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgYGNvbm5lY3Rpb24uZ2V0Q29ubmVjdGlvbnM6JHtmcm9tVHlwZX06JHtmcm9tSWR9OiR7dG9UeXBlIHx8ICcnfWAsXG4gICAgICAgIHtmaWx0ZXJzLCBmcm9tSWQsIGZyb21UeXBlLCB0b1R5cGV9LFxuICAgICAgICByZXF1ZXN0T3B0aW9uc1xuICAgICAgKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB7dHlwZTogc3RyaW5nOyB2YWx1ZTogdW5rbm93bn0+ID0ge1xuICAgICAgICBmcm9tSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VJZChmcm9tSWQpXG4gICAgICAgIH0sXG4gICAgICAgIGZyb21UeXBlOiB7XG4gICAgICAgICAgdHlwZTogJ1N0cmluZyEnLFxuICAgICAgICAgIHZhbHVlOiBmcm9tVHlwZVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZih0b1R5cGUpIHtcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMudG9UeXBlID0ge1xuICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgIHZhbHVlOiB0b1R5cGVcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmtleXMoZmlsdGVycykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzW2tleV0gPSB7XG4gICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgdmFsdWU6IGZpbHRlcnNba2V5XVxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PENvbm5lY3Rpb25FZGdlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnY29ubmVjdGlvbnMnLFxuICAgICAgICAnY29ubmVjdGlvbnMnLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW1xuICAgICAgICAgICdfZnJvbScsXG4gICAgICAgICAgJ190bycsXG4gICAgICAgICAgJ2Nvbm5lY3Rpb25UeXBlJyxcbiAgICAgICAgICAnZnJvbUlkJyxcbiAgICAgICAgICAnZnJvbVR5cGUnLFxuICAgICAgICAgICdtZXRhZGF0YScsXG4gICAgICAgICAgJ3RvSWQnLFxuICAgICAgICAgICd0b1R5cGUnXG4gICAgICAgIF0sXG4gICAgICAgIHt9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gYXdhaXQgc2V0Q2FjaGVkUmVxdWVzdChcbiAgICAgICAgZmx1eCxcbiAgICAgICAgYGNvbm5lY3Rpb24uZ2V0Q29ubmVjdGlvbnM6JHtmcm9tVHlwZX06JHtmcm9tSWR9OiR7dG9UeXBlIHx8ICcnfWAsXG4gICAgICAgIHtmaWx0ZXJzLCBmcm9tSWQsIGZyb21UeXBlLCB0b1R5cGV9LFxuICAgICAgICByZXN1bHQsXG4gICAgICAgIHJlcXVlc3RPcHRpb25zXG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdldHRpbmcgY29ubmVjdGlvbnM6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlbW92ZUNvbm5lY3Rpb24gPSBhc3luYyAoXG4gICAgZnJvbVR5cGU6IENvbGxlY3Rpb25UeXBlLFxuICAgIGZyb21JZDogc3RyaW5nLFxuICAgIHRvVHlwZTogQ29sbGVjdGlvblR5cGUsXG4gICAgdG9JZDogc3RyaW5nLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgZnJvbUlkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSWQoZnJvbUlkKVxuICAgICAgICB9LFxuICAgICAgICBmcm9tVHlwZToge1xuICAgICAgICAgIHR5cGU6ICdTdHJpbmchJyxcbiAgICAgICAgICB2YWx1ZTogZnJvbVR5cGVcbiAgICAgICAgfSxcbiAgICAgICAgdG9JZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBwYXJzZUlkKHRvSWQpXG4gICAgICAgIH0sXG4gICAgICAgIHRvVHlwZToge1xuICAgICAgICAgIHR5cGU6ICdTdHJpbmchJyxcbiAgICAgICAgICB2YWx1ZTogdG9UeXBlXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IGFwcE11dGF0aW9uPGJvb2xlYW4+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAncmVtb3ZlQ29ubmVjdGlvbicsXG4gICAgICAgICdjb25uZWN0aW9ucycsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXSxcbiAgICAgICAge31cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlbW92aW5nIGNvbm5lY3Rpb246JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgY29ubmVjdGlvbi5nZXRDb25uZWN0aW9uczoke2Zyb21UeXBlfToke2Zyb21JZH06JHt0b1R5cGUgfHwgJyd9YCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWRkQ29ubmVjdGlvbixcbiAgICBnZXRDb25uZWN0aW9ucyxcbiAgICByZW1vdmVDb25uZWN0aW9uXG4gIH07XG59O1xuIl0sIm5hbWVzIjpbInBhcnNlSWQiLCJDT05ORUNUSU9OX1RZUEVTIiwiYXBwTXV0YXRpb24iLCJhcHBRdWVyeSIsImNsZWFyQ2FjaGVkUmVxdWVzdCIsImdldENhY2hlZFJlcXVlc3QiLCJzZXRDYWNoZWRSZXF1ZXN0IiwiY3JlYXRlQ29ubmVjdGlvbkFjdGlvbnMiLCJmbHV4IiwiYWRkQ29ubmVjdGlvbiIsImZyb21UeXBlIiwiZnJvbUlkIiwidG9UeXBlIiwidG9JZCIsImNvbm5lY3Rpb25UeXBlIiwiTUVNQkVSIiwibWV0YWRhdGEiLCJyZXF1ZXN0T3B0aW9ucyIsInF1ZXJ5VmFyaWFibGVzIiwiY29ubmVjdGlvbiIsInR5cGUiLCJ2YWx1ZSIsImVycm9yIiwiY29uc29sZSIsImdldENvbm5lY3Rpb25zIiwiZmlsdGVycyIsImNhY2hlZFJlc3VsdCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwicmVzdWx0IiwicmVtb3ZlQ29ubmVjdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsT0FBTyxRQUFPLGVBQWU7QUFFckMsU0FBUUMsZ0JBQWdCLFFBQWMsaUNBQWlDO0FBQ3ZFLFNBQVFDLFdBQVcsRUFBRUMsUUFBUSxRQUFPLHFCQUFxQjtBQUN6RCxTQUFRQyxrQkFBa0IsRUFBRUMsZ0JBQWdCLEVBQUVDLGdCQUFnQixRQUFPLDhCQUE4QjtBQTBDbkcsT0FBTyxNQUFNQywwQkFBMEIsQ0FBQ0M7SUFDdEMsTUFBTUMsZ0JBQWdCLE9BQ3BCQyxVQUNBQyxRQUNBQyxRQUNBQyxNQUNBQyxpQkFBaUNiLGlCQUFpQmMsTUFBTSxFQUN4REMsV0FBZ0MsQ0FBQyxDQUFDLEVBQ2xDQyxpQkFBdUMsQ0FBQyxDQUFDO1FBRXpDLElBQUk7WUFDRixNQUFNQyxpQkFBaUU7Z0JBQ3JFQyxZQUFZO29CQUNWQyxNQUFNO29CQUNOQyxPQUFPO3dCQUNMUDt3QkFDQUgsUUFBUVgsUUFBUVc7d0JBQ2hCRDt3QkFDQU07d0JBQ0FILE1BQU1iLFFBQVFhO3dCQUNkRDtvQkFDRjtnQkFDRjtZQUNGO1lBRUEsT0FBTyxNQUFNVixZQUNYTSxNQUNBLGlCQUNBLGVBQ0FVLGdCQUNBO2dCQUNFO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2FBQ0QsRUFDRCxDQUFDO1FBRUwsRUFBRSxPQUFNSSxPQUFPO1lBQ2JDLFFBQVFELEtBQUssQ0FBQyw0QkFBNEJBO1lBQzFDLE1BQU1BO1FBQ1Is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
@@ -0,0 +1,34 @@
1
+ import type { FluxFramework } from '@nlabs/arkhamjs';
2
+ import type { ContentInputType, ContentType } from '../../adapters/contentAdapter/contentAdapter.js';
3
+ import type { BaseAdapterOptions } from '../../utils/validatorFactory.js';
4
+ import type { ActionRequestOptions } from '../../utils/requestCache.js';
5
+ export interface ContentAdapterOptions extends BaseAdapterOptions {
6
+ }
7
+ export interface ContentActionsOptions {
8
+ contentAdapter?: (input: unknown, options?: ContentAdapterOptions) => any;
9
+ contentAdapterOptions?: ContentAdapterOptions;
10
+ }
11
+ export type ContentApiResultsType = {
12
+ contents: {
13
+ addContent: ContentType;
14
+ getContent: ContentType;
15
+ getContentByKey: ContentType;
16
+ getContentsByCategory: ContentType[];
17
+ getContentsList: ContentType[];
18
+ deleteContent: ContentType;
19
+ updateContent: ContentType;
20
+ };
21
+ };
22
+ export interface ContentActions {
23
+ add: (contentData: ContentInputType, contentProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ContentType>;
24
+ itemById: (contentId: string, contentProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ContentType>;
25
+ itemByKey: (key: string, locale?: string, contentProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ContentType>;
26
+ listByCategory: (category: string, contentProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ContentType[]>;
27
+ list: (contentProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ContentType[]>;
28
+ delete: (contentId: string, contentProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ContentType>;
29
+ update: (content: ContentInputType, contentProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ContentType>;
30
+ updateContentAdapter: (adapter: (input: unknown, options?: ContentAdapterOptions) => any) => void;
31
+ updateContentAdapterOptions: (options: ContentAdapterOptions) => void;
32
+ }
33
+ export declare const createContentActions: (flux: FluxFramework, options?: ContentActionsOptions) => ContentActions;
34
+ //# sourceMappingURL=contentActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentActions.d.ts","sourceRoot":"","sources":["../../../src/actions/contentActions/contentActions.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AACrG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAIxE,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;CAChE;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,GAAG,CAAC;IAC1E,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE;QACR,UAAU,EAAE,WAAW,CAAC;QACxB,UAAU,EAAE,WAAW,CAAC;QACxB,eAAe,EAAE,WAAW,CAAC;QAC7B,qBAAqB,EAAE,WAAW,EAAE,CAAC;QACrC,eAAe,EAAE,WAAW,EAAE,CAAC;QAC/B,aAAa,EAAE,WAAW,CAAC;QAC3B,aAAa,EAAE,WAAW,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7H,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACtH,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAClI,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7H,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACjG,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACpH,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5H,oBAAoB,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,GAAG,KAAK,IAAI,CAAC;IAClG,2BAA2B,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACvE;AAID,eAAO,MAAM,oBAAoB,GAC/B,MAAM,aAAa,EACnB,UAAU,qBAAqB,KAC9B,cA0QF,CAAC"}
@@ -0,0 +1,314 @@
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { parseId } from '@nlabs/utils';
5
+ import { parseContentInput } from '../../adapters/contentAdapter/contentAdapter.js';
6
+ import { CONTENT_CONSTANTS } from '../../stores/contentStore.js';
7
+ import { appMutation, appQuery } from '../../utils/api.js';
8
+ import { createBaseActions } from '../../utils/baseActionFactory.js';
9
+ import { clearCachedRequest, getCachedRequest, setCachedRequest } from '../../utils/requestCache.js';
10
+ const DATA_TYPE = 'contents';
11
+ const defaultContentValidator = (input, options)=>parseContentInput(input);
12
+ export const createContentActions = (flux, options)=>{
13
+ const contentBase = createBaseActions(flux, defaultContentValidator, {
14
+ ...options?.contentAdapter && {
15
+ adapter: options.contentAdapter
16
+ },
17
+ ...options?.contentAdapterOptions && {
18
+ adapterOptions: options.contentAdapterOptions
19
+ }
20
+ });
21
+ const add = async (contentData, contentProps = [], requestOptions = {})=>{
22
+ try {
23
+ const queryVariables = {
24
+ content: {
25
+ type: 'ContentInput!',
26
+ value: contentBase.validator(contentData)
27
+ }
28
+ };
29
+ const onSuccess = (data)=>{
30
+ const addContent = data?.contents?.addContent || {};
31
+ return flux.dispatch({
32
+ content: addContent,
33
+ type: CONTENT_CONSTANTS.ADD_ITEM_SUCCESS
34
+ });
35
+ };
36
+ return await appMutation(flux, 'addContent', DATA_TYPE, queryVariables, [
37
+ 'contentId',
38
+ 'key',
39
+ 'locale',
40
+ 'content',
41
+ ...contentProps
42
+ ], {
43
+ onSuccess
44
+ });
45
+ } catch (error) {
46
+ flux.dispatch({
47
+ error,
48
+ type: CONTENT_CONSTANTS.ADD_ITEM_ERROR
49
+ });
50
+ throw error;
51
+ } finally{
52
+ await clearCachedRequest(flux, 'content.list');
53
+ }
54
+ };
55
+ const itemById = async (contentId, contentProps = [], requestOptions = {})=>{
56
+ try {
57
+ const cachedResult = getCachedRequest(flux, `content.itemById:${contentId}`, {
58
+ contentId,
59
+ contentProps
60
+ }, requestOptions);
61
+ if (cachedResult !== undefined) {
62
+ return cachedResult;
63
+ }
64
+ const queryVariables = {
65
+ contentId: {
66
+ type: 'ID!',
67
+ value: parseId(contentId)
68
+ }
69
+ };
70
+ const onSuccess = (data)=>{
71
+ const content = data?.contents?.getContent || {};
72
+ return flux.dispatch({
73
+ content,
74
+ type: CONTENT_CONSTANTS.GET_ITEM_SUCCESS
75
+ });
76
+ };
77
+ const result = await appQuery(flux, 'content', DATA_TYPE, queryVariables, [
78
+ 'contentId',
79
+ 'key',
80
+ 'locale',
81
+ 'content',
82
+ 'description',
83
+ 'category',
84
+ 'isActive',
85
+ ...contentProps
86
+ ], {
87
+ onSuccess
88
+ });
89
+ return await setCachedRequest(flux, `content.itemById:${contentId}`, {
90
+ contentId,
91
+ contentProps
92
+ }, result, requestOptions);
93
+ } catch (error) {
94
+ flux.dispatch({
95
+ error,
96
+ type: CONTENT_CONSTANTS.GET_ITEM_ERROR
97
+ });
98
+ throw error;
99
+ }
100
+ };
101
+ const itemByKey = async (key, locale = 'en', contentProps = [], requestOptions = {})=>{
102
+ try {
103
+ const cachedResult = getCachedRequest(flux, `content.itemByKey:${key}:${locale}`, {
104
+ key,
105
+ locale,
106
+ contentProps
107
+ }, requestOptions);
108
+ if (cachedResult !== undefined) {
109
+ return cachedResult;
110
+ }
111
+ const queryVariables = {
112
+ key: {
113
+ type: 'String!',
114
+ value: key
115
+ },
116
+ locale: {
117
+ type: 'String!',
118
+ value: locale
119
+ }
120
+ };
121
+ const onSuccess = (data)=>{
122
+ const content = data?.contents?.getContentByKey || {};
123
+ return flux.dispatch({
124
+ content,
125
+ type: CONTENT_CONSTANTS.GET_ITEM_SUCCESS
126
+ });
127
+ };
128
+ const result = await appQuery(flux, 'contentByKey', DATA_TYPE, queryVariables, [
129
+ 'contentId',
130
+ 'key',
131
+ 'locale',
132
+ 'content',
133
+ 'description',
134
+ 'category',
135
+ 'isActive',
136
+ ...contentProps
137
+ ], {
138
+ onSuccess
139
+ });
140
+ return await setCachedRequest(flux, `content.itemByKey:${key}:${locale}`, {
141
+ key,
142
+ locale,
143
+ contentProps
144
+ }, result, requestOptions);
145
+ } catch (error) {
146
+ flux.dispatch({
147
+ error,
148
+ type: CONTENT_CONSTANTS.GET_ITEM_ERROR
149
+ });
150
+ throw error;
151
+ }
152
+ };
153
+ const listByCategory = async (category, contentProps = [], requestOptions = {})=>{
154
+ try {
155
+ const cachedResult = getCachedRequest(flux, `content.listByCategory:${category}`, {
156
+ category,
157
+ contentProps
158
+ }, requestOptions);
159
+ if (cachedResult !== undefined) {
160
+ return cachedResult;
161
+ }
162
+ const queryVariables = {
163
+ category: {
164
+ type: 'String!',
165
+ value: category
166
+ }
167
+ };
168
+ const onSuccess = (data)=>{
169
+ const contentsByCategory = data?.contents?.getContentsByCategory || [];
170
+ return flux.dispatch({
171
+ list: contentsByCategory,
172
+ type: CONTENT_CONSTANTS.GET_LIST_SUCCESS
173
+ });
174
+ };
175
+ const result = await appQuery(flux, 'contentsByCategory', DATA_TYPE, queryVariables, [
176
+ 'contentId',
177
+ 'key',
178
+ 'locale',
179
+ 'content',
180
+ 'description',
181
+ 'category',
182
+ 'isActive',
183
+ ...contentProps
184
+ ], {
185
+ onSuccess
186
+ });
187
+ return await setCachedRequest(flux, `content.listByCategory:${category}`, {
188
+ category,
189
+ contentProps
190
+ }, result, requestOptions);
191
+ } catch (error) {
192
+ flux.dispatch({
193
+ error,
194
+ type: CONTENT_CONSTANTS.GET_LIST_ERROR
195
+ });
196
+ throw error;
197
+ }
198
+ };
199
+ const list = async (contentProps = [], requestOptions = {})=>{
200
+ try {
201
+ const cachedResult = getCachedRequest(flux, 'content.list', {
202
+ contentProps
203
+ }, requestOptions);
204
+ if (cachedResult !== undefined) {
205
+ return cachedResult;
206
+ }
207
+ const onSuccess = (data)=>{
208
+ const contentsList = data?.contents?.getContentsList || [];
209
+ return flux.dispatch({
210
+ list: contentsList,
211
+ type: CONTENT_CONSTANTS.GET_LIST_SUCCESS
212
+ });
213
+ };
214
+ const result = await appQuery(flux, 'contentsList', DATA_TYPE, {}, [
215
+ 'contentId',
216
+ 'key',
217
+ 'locale',
218
+ 'content',
219
+ 'description',
220
+ 'category',
221
+ 'isActive',
222
+ ...contentProps
223
+ ], {
224
+ onSuccess
225
+ });
226
+ return await setCachedRequest(flux, 'content.list', {
227
+ contentProps
228
+ }, result, requestOptions);
229
+ } catch (error) {
230
+ flux.dispatch({
231
+ error,
232
+ type: CONTENT_CONSTANTS.GET_LIST_ERROR
233
+ });
234
+ throw error;
235
+ }
236
+ };
237
+ const deleteContent = async (contentId, contentProps = [], requestOptions = {})=>{
238
+ try {
239
+ const queryVariables = {
240
+ contentId: {
241
+ type: 'ID!',
242
+ value: parseId(contentId)
243
+ }
244
+ };
245
+ const onSuccess = (data)=>{
246
+ const deleteContent = data?.contents?.deleteContent || {};
247
+ return flux.dispatch({
248
+ content: deleteContent,
249
+ type: CONTENT_CONSTANTS.REMOVE_ITEM_SUCCESS
250
+ });
251
+ };
252
+ return await appMutation(flux, 'deleteContent', DATA_TYPE, queryVariables, [
253
+ 'contentId',
254
+ ...contentProps
255
+ ], {
256
+ onSuccess
257
+ });
258
+ } catch (error) {
259
+ flux.dispatch({
260
+ error,
261
+ type: CONTENT_CONSTANTS.REMOVE_ITEM_ERROR
262
+ });
263
+ throw error;
264
+ } finally{
265
+ await clearCachedRequest(flux, `content.itemById:${contentId}`);
266
+ await clearCachedRequest(flux, 'content.list');
267
+ }
268
+ };
269
+ const update = async (content, contentProps = [], requestOptions = {})=>{
270
+ try {
271
+ const queryVariables = {
272
+ content: {
273
+ type: 'ContentUpdateInput!',
274
+ value: contentBase.validator(content)
275
+ }
276
+ };
277
+ const onSuccess = (data)=>{
278
+ const updateContent = data?.contents?.updateContent || {};
279
+ return flux.dispatch({
280
+ content: updateContent,
281
+ type: CONTENT_CONSTANTS.UPDATE_ITEM_SUCCESS
282
+ });
283
+ };
284
+ return await appMutation(flux, 'updateContent', DATA_TYPE, queryVariables, [
285
+ 'contentId',
286
+ ...contentProps
287
+ ], {
288
+ onSuccess
289
+ });
290
+ } catch (error) {
291
+ flux.dispatch({
292
+ error,
293
+ type: CONTENT_CONSTANTS.UPDATE_ITEM_ERROR
294
+ });
295
+ throw error;
296
+ } finally{
297
+ await clearCachedRequest(flux, `content.itemById:${String(content?.contentId || '')}`);
298
+ await clearCachedRequest(flux, 'content.list');
299
+ }
300
+ };
301
+ return {
302
+ add,
303
+ itemById,
304
+ itemByKey,
305
+ listByCategory,
306
+ list,
307
+ delete: deleteContent,
308
+ update,
309
+ updateContentAdapter: contentBase.updateAdapter,
310
+ updateContentAdapterOptions: contentBase.updateOptions
311
+ };
312
+ };
313
+
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9jb250ZW50QWN0aW9ucy9jb250ZW50QWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHsgcGFyc2VJZCB9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7IHBhcnNlQ29udGVudElucHV0IH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvY29udGVudEFkYXB0ZXIvY29udGVudEFkYXB0ZXIuanMnO1xuaW1wb3J0IHsgQ09OVEVOVF9DT05TVEFOVFMgfSBmcm9tICcuLi8uLi9zdG9yZXMvY29udGVudFN0b3JlLmpzJztcbmltcG9ydCB7IGFwcE11dGF0aW9uLCBhcHBRdWVyeSB9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVCYXNlQWN0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2Jhc2VBY3Rpb25GYWN0b3J5LmpzJztcbmltcG9ydCB7Y2xlYXJDYWNoZWRSZXF1ZXN0LCBnZXRDYWNoZWRSZXF1ZXN0LCBzZXRDYWNoZWRSZXF1ZXN0fSBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0Q2FjaGUuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEZsdXhGcmFtZXdvcmsgfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUgeyBDb250ZW50SW5wdXRUeXBlLCBDb250ZW50VHlwZSB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2NvbnRlbnRBZGFwdGVyL2NvbnRlbnRBZGFwdGVyLmpzJztcbmltcG9ydCB0eXBlIHsgQmFzZUFkYXB0ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9yRmFjdG9yeS5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdENhY2hlLmpzJztcblxuY29uc3QgREFUQV9UWVBFID0gJ2NvbnRlbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50QWRhcHRlck9wdGlvbnMgZXh0ZW5kcyBCYXNlQWRhcHRlck9wdGlvbnMge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRBY3Rpb25zT3B0aW9ucyB7XG4gIGNvbnRlbnRBZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogQ29udGVudEFkYXB0ZXJPcHRpb25zKSA9PiBhbnk7XG4gIGNvbnRlbnRBZGFwdGVyT3B0aW9ucz86IENvbnRlbnRBZGFwdGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgQ29udGVudEFwaVJlc3VsdHNUeXBlID0ge1xuICBjb250ZW50czoge1xuICAgIGFkZENvbnRlbnQ6IENvbnRlbnRUeXBlO1xuICAgIGdldENvbnRlbnQ6IENvbnRlbnRUeXBlO1xuICAgIGdldENvbnRlbnRCeUtleTogQ29udGVudFR5cGU7XG4gICAgZ2V0Q29udGVudHNCeUNhdGVnb3J5OiBDb250ZW50VHlwZVtdO1xuICAgIGdldENvbnRlbnRzTGlzdDogQ29udGVudFR5cGVbXTtcbiAgICBkZWxldGVDb250ZW50OiBDb250ZW50VHlwZTtcbiAgICB1cGRhdGVDb250ZW50OiBDb250ZW50VHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEFjdGlvbnMge1xuICBhZGQ6IChjb250ZW50RGF0YTogQ29udGVudElucHV0VHlwZSwgY29udGVudFByb3BzPzogc3RyaW5nW10sIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8Q29udGVudFR5cGU+O1xuICBpdGVtQnlJZDogKGNvbnRlbnRJZDogc3RyaW5nLCBjb250ZW50UHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxDb250ZW50VHlwZT47XG4gIGl0ZW1CeUtleTogKGtleTogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcsIGNvbnRlbnRQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPENvbnRlbnRUeXBlPjtcbiAgbGlzdEJ5Q2F0ZWdvcnk6IChjYXRlZ29yeTogc3RyaW5nLCBjb250ZW50UHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxDb250ZW50VHlwZVtdPjtcbiAgbGlzdDogKGNvbnRlbnRQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPENvbnRlbnRUeXBlW10+O1xuICBkZWxldGU6IChjb250ZW50SWQ6IHN0cmluZywgY29udGVudFByb3BzPzogc3RyaW5nW10sIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8Q29udGVudFR5cGU+O1xuICB1cGRhdGU6IChjb250ZW50OiBDb250ZW50SW5wdXRUeXBlLCBjb250ZW50UHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxDb250ZW50VHlwZT47XG4gIHVwZGF0ZUNvbnRlbnRBZGFwdGVyOiAoYWRhcHRlcjogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogQ29udGVudEFkYXB0ZXJPcHRpb25zKSA9PiBhbnkpID0+IHZvaWQ7XG4gIHVwZGF0ZUNvbnRlbnRBZGFwdGVyT3B0aW9uczogKG9wdGlvbnM6IENvbnRlbnRBZGFwdGVyT3B0aW9ucykgPT4gdm9pZDtcbn1cblxuY29uc3QgZGVmYXVsdENvbnRlbnRWYWxpZGF0b3IgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBDb250ZW50QWRhcHRlck9wdGlvbnMpID0+IHBhcnNlQ29udGVudElucHV0KGlucHV0IGFzIENvbnRlbnRJbnB1dFR5cGUpO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29udGVudEFjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBDb250ZW50QWN0aW9uc09wdGlvbnNcbik6IENvbnRlbnRBY3Rpb25zID0+IHtcbiAgY29uc3QgY29udGVudEJhc2UgPSBjcmVhdGVCYXNlQWN0aW9ucyhmbHV4LCBkZWZhdWx0Q29udGVudFZhbGlkYXRvciwge1xuICAgIC4uLihvcHRpb25zPy5jb250ZW50QWRhcHRlciAmJiB7YWRhcHRlcjogb3B0aW9ucy5jb250ZW50QWRhcHRlcn0pLFxuICAgIC4uLihvcHRpb25zPy5jb250ZW50QWRhcHRlck9wdGlvbnMgJiYge2FkYXB0ZXJPcHRpb25zOiBvcHRpb25zLmNvbnRlbnRBZGFwdGVyT3B0aW9uc30pXG4gIH0pO1xuICBjb25zdCBhZGQgPSBhc3luYyAoY29udGVudERhdGE6IENvbnRlbnRJbnB1dFR5cGUsIGNvbnRlbnRQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPENvbnRlbnRUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgdHlwZTogJ0NvbnRlbnRJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiBjb250ZW50QmFzZS52YWxpZGF0b3IoY29udGVudERhdGEpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBDb250ZW50QXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3QgYWRkQ29udGVudCA9IGRhdGE/LmNvbnRlbnRzPy5hZGRDb250ZW50IHx8IHt9O1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7Y29udGVudDogYWRkQ29udGVudCwgdHlwZTogQ09OVEVOVF9DT05TVEFOVFMuQUREX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGFwcE11dGF0aW9uPENvbnRlbnRUeXBlPihmbHV4LCAnYWRkQ29udGVudCcsIERBVEFfVFlQRSwgcXVlcnlWYXJpYWJsZXMsIFsnY29udGVudElkJywgJ2tleScsICdsb2NhbGUnLCAnY29udGVudCcsIC4uLmNvbnRlbnRQcm9wc10sIHtvblN1Y2Nlc3N9KTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogQ09OVEVOVF9DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2NvbnRlbnQubGlzdCcpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBpdGVtQnlJZCA9IGFzeW5jIChjb250ZW50SWQ6IHN0cmluZywgY29udGVudFByb3BzOiBzdHJpbmdbXSA9IFtdLCByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8Q29udGVudFR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxDb250ZW50VHlwZT4oZmx1eCwgYGNvbnRlbnQuaXRlbUJ5SWQ6JHtjb250ZW50SWR9YCwge2NvbnRlbnRJZCwgY29udGVudFByb3BzfSwgcmVxdWVzdE9wdGlvbnMpO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgY29udGVudElkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSWQoY29udGVudElkKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQ29udGVudEFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBkYXRhPy5jb250ZW50cz8uZ2V0Q29udGVudCB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2NvbnRlbnQsIHR5cGU6IENPTlRFTlRfQ09OU1RBTlRTLkdFVF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PENvbnRlbnRUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2NvbnRlbnQnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2NvbnRlbnRJZCcsXG4gICAgICAgICAgJ2tleScsXG4gICAgICAgICAgJ2xvY2FsZScsXG4gICAgICAgICAgJ2NvbnRlbnQnLFxuICAgICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgJ2NhdGVnb3J5JyxcbiAgICAgICAgICAnaXNBY3RpdmUnLFxuICAgICAgICAgIC4uLmNvbnRlbnRQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsIGBjb250ZW50Lml0ZW1CeUlkOiR7Y29udGVudElkfWAsIHtjb250ZW50SWQsIGNvbnRlbnRQcm9wc30sIHJlc3VsdCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBDT05URU5UX0NPTlNUQU5UUy5HRVRfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGl0ZW1CeUtleSA9IGFzeW5jIChrZXk6IHN0cmluZywgbG9jYWxlOiBzdHJpbmcgPSAnZW4nLCBjb250ZW50UHJvcHM6IHN0cmluZ1tdID0gW10sIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDb250ZW50VHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBnZXRDYWNoZWRSZXF1ZXN0PENvbnRlbnRUeXBlPihmbHV4LCBgY29udGVudC5pdGVtQnlLZXk6JHtrZXl9OiR7bG9jYWxlfWAsIHtrZXksIGxvY2FsZSwgY29udGVudFByb3BzfSwgcmVxdWVzdE9wdGlvbnMpO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAga2V5OiB7XG4gICAgICAgICAgdHlwZTogJ1N0cmluZyEnLFxuICAgICAgICAgIHZhbHVlOiBrZXlcbiAgICAgICAgfSxcbiAgICAgICAgbG9jYWxlOiB7XG4gICAgICAgICAgdHlwZTogJ1N0cmluZyEnLFxuICAgICAgICAgIHZhbHVlOiBsb2NhbGVcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IENvbnRlbnRBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZGF0YT8uY29udGVudHM/LmdldENvbnRlbnRCeUtleSB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2NvbnRlbnQsIHR5cGU6IENPTlRFTlRfQ09OU1RBTlRTLkdFVF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PENvbnRlbnRUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2NvbnRlbnRCeUtleScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnY29udGVudElkJyxcbiAgICAgICAgICAna2V5JyxcbiAgICAgICAgICAnbG9jYWxlJyxcbiAgICAgICAgICAnY29udGVudCcsXG4gICAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAnY2F0ZWdvcnknLFxuICAgICAgICAgICdpc0FjdGl2ZScsXG4gICAgICAgICAgLi4uY29udGVudFByb3BzXG4gICAgICAgIF0sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgYGNvbnRlbnQuaXRlbUJ5S2V5OiR7a2V5fToke2xvY2FsZX1gLCB7a2V5LCBsb2NhbGUsIGNvbnRlbnRQcm9wc30sIHJlc3VsdCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBDT05URU5UX0NPTlNUQU5UUy5HRVRfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeUNhdGVnb3J5ID0gYXN5bmMgKGNhdGVnb3J5OiBzdHJpbmcsIGNvbnRlbnRQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPENvbnRlbnRUeXBlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxDb250ZW50VHlwZVtdPihmbHV4LCBgY29udGVudC5saXN0QnlDYXRlZ29yeToke2NhdGVnb3J5fWAsIHtjYXRlZ29yeSwgY29udGVudFByb3BzfSwgcmVxdWVzdE9wdGlvbnMpO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICB0eXBlOiAnU3RyaW5nIScsXG4gICAgICAgICAgdmFsdWU6IGNhdGVnb3J5XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBDb250ZW50QXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudHNCeUNhdGVnb3J5ID0gZGF0YT8uY29udGVudHM/LmdldENvbnRlbnRzQnlDYXRlZ29yeSB8fCBbXTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGxpc3Q6IGNvbnRlbnRzQnlDYXRlZ29yeSxcbiAgICAgICAgICB0eXBlOiBDT05URU5UX0NPTlNUQU5UUy5HRVRfTElTVF9TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8Q29udGVudFR5cGVbXT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdjb250ZW50c0J5Q2F0ZWdvcnknLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2NvbnRlbnRJZCcsXG4gICAgICAgICAgJ2tleScsXG4gICAgICAgICAgJ2xvY2FsZScsXG4gICAgICAgICAgJ2NvbnRlbnQnLFxuICAgICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgJ2NhdGVnb3J5JyxcbiAgICAgICAgICAnaXNBY3RpdmUnLFxuICAgICAgICAgIC4uLmNvbnRlbnRQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsIGBjb250ZW50Lmxpc3RCeUNhdGVnb3J5OiR7Y2F0ZWdvcnl9YCwge2NhdGVnb3J5LCBjb250ZW50UHJvcHN9LCByZXN1bHQsIHJlcXVlc3RPcHRpb25zKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogQ09OVEVOVF9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBsaXN0ID0gYXN5bmMgKGNvbnRlbnRQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPENvbnRlbnRUeXBlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxDb250ZW50VHlwZVtdPihmbHV4LCAnY29udGVudC5saXN0Jywge2NvbnRlbnRQcm9wc30sIHJlcXVlc3RPcHRpb25zKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IENvbnRlbnRBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50c0xpc3QgPSBkYXRhPy5jb250ZW50cz8uZ2V0Q29udGVudHNMaXN0IHx8IFtdO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgbGlzdDogY29udGVudHNMaXN0LFxuICAgICAgICAgIHR5cGU6IENPTlRFTlRfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxDb250ZW50VHlwZVtdPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2NvbnRlbnRzTGlzdCcsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAge30sXG4gICAgICAgIFtcbiAgICAgICAgICAnY29udGVudElkJyxcbiAgICAgICAgICAna2V5JyxcbiAgICAgICAgICAnbG9jYWxlJyxcbiAgICAgICAgICAnY29udGVudCcsXG4gICAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAnY2F0ZWdvcnknLFxuICAgICAgICAgICdpc0FjdGl2ZScsXG4gICAgICAgICAgLi4uY29udGVudFByb3BzXG4gICAgICAgIF0sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ2NvbnRlbnQubGlzdCcsIHtjb250ZW50UHJvcHN9LCByZXN1bHQsIHJlcXVlc3RPcHRpb25zKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogQ09OVEVOVF9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWxldGVDb250ZW50ID0gYXN5bmMgKGNvbnRlbnRJZDogc3RyaW5nLCBjb250ZW50UHJvcHM6IHN0cmluZ1tdID0gW10sIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDb250ZW50VHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgY29udGVudElkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSWQoY29udGVudElkKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQ29udGVudEFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlbGV0ZUNvbnRlbnQgPSBkYXRhPy5jb250ZW50cz8uZGVsZXRlQ29udGVudCB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2NvbnRlbnQ6IGRlbGV0ZUNvbnRlbnQsIHR5cGU6IENPTlRFTlRfQ09OU1RBTlRTLlJFTU9WRV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxDb250ZW50VHlwZT4oZmx1eCwgJ2RlbGV0ZUNvbnRlbnQnLCBEQVRBX1RZUEUsIHF1ZXJ5VmFyaWFibGVzLCBbJ2NvbnRlbnRJZCcsIC4uLmNvbnRlbnRQcm9wc10sIHtvblN1Y2Nlc3N9KTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogQ09OVEVOVF9DT05TVEFOVFMuUkVNT1ZFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGNvbnRlbnQuaXRlbUJ5SWQ6JHtjb250ZW50SWR9YCk7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2NvbnRlbnQubGlzdCcpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB1cGRhdGUgPSBhc3luYyAoY29udGVudDogQ29udGVudElucHV0VHlwZSwgY29udGVudFByb3BzOiBzdHJpbmdbXSA9IFtdLCByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8Q29udGVudFR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICB0eXBlOiAnQ29udGVudFVwZGF0ZUlucHV0IScsXG4gICAgICAgICAgdmFsdWU6IGNvbnRlbnRCYXNlLnZhbGlkYXRvcihjb250ZW50KVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQ29udGVudEFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZUNvbnRlbnQgPSBkYXRhPy5jb250ZW50cz8udXBkYXRlQ29udGVudCB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2NvbnRlbnQ6IHVwZGF0ZUNvbnRlbnQsIHR5cGU6IENPTlRFTlRfQ09OU1RBTlRTLlVQREFURV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxDb250ZW50VHlwZT4oZmx1eCwgJ3VwZGF0ZUNvbnRlbnQnLCBEQVRBX1RZUEUsIHF1ZXJ5VmFyaWFibGVzLCBbJ2NvbnRlbnRJZCcsIC4uLmNvbnRlbnRQcm9wc10sIHtvblN1Y2Nlc3N9KTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogQ09OVEVOVF9DT05TVEFOVFMuVVBEQVRFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGNvbnRlbnQuaXRlbUJ5SWQ6JHtTdHJpbmcoY29udGVudD8uY29udGVudElkIHx8ICcnKX1gKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnY29udGVudC5saXN0Jyk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgYWRkLFxuICAgIGl0ZW1CeUlkLFxuICAgIGl0ZW1CeUtleSxcbiAgICBsaXN0QnlDYXRlZ29yeSxcbiAgICBsaXN0LFxuICAgIGRlbGV0ZTogZGVsZXRlQ29udGVudCxcbiAgICB1cGRhdGUsXG4gICAgdXBkYXRlQ29udGVudEFkYXB0ZXI6IGNvbnRlbnRCYXNlLnVwZGF0ZUFkYXB0ZXIsXG4gICAgdXBkYXRlQ29udGVudEFkYXB0ZXJPcHRpb25zOiBjb250ZW50QmFzZS51cGRhdGVPcHRpb25zXG4gIH07XG59O1xuIl0sIm5hbWVzIjpbInBhcnNlSWQiLCJwYXJzZUNvbnRlbnRJbnB1dCIsIkNPTlRFTlRfQ09OU1RBTlRTIiwiYXBwTXV0YXRpb24iLCJhcHBRdWVyeSIsImNyZWF0ZUJhc2VBY3Rpb25zIiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJEQVRBX1RZUEUiLCJkZWZhdWx0Q29udGVudFZhbGlkYXRvciIsImlucHV0Iiwib3B0aW9ucyIsImNyZWF0ZUNvbnRlbnRBY3Rpb25zIiwiZmx1eCIsImNvbnRlbnRCYXNlIiwiY29udGVudEFkYXB0ZXIiLCJhZGFwdGVyIiwiY29udGVudEFkYXB0ZXJPcHRpb25zIiwiYWRhcHRlck9wdGlvbnMiLCJhZGQiLCJjb250ZW50RGF0YSIsImNvbnRlbnRQcm9wcyIsInJlcXVlc3RPcHRpb25zIiwicXVlcnlWYXJpYWJsZXMiLCJjb250ZW50IiwidHlwZSIsInZhbHVlIiwidmFsaWRhdG9yIiwib25TdWNjZXNzIiwiZGF0YSIsImFkZENvbnRlbnQiLCJjb250ZW50cyIsImRpc3BhdGNoIiwiQUREX0lURU1fU1VDQ0VTUyIsImVycm9yIiwiQUREX0lURU1fRVJST1IiLCJpdGVtQnlJZCIsImNvbnRlbnRJZCIsImNhY2hlZFJlc3VsdCIsInVuZGVmaW5lZCIsImdldENvbnRlbnQiLCJHRVRfSVRFTV9TVUNDRVNTIiwicmVzdWx0IiwiR0VUX0lURU1fRVJST1IiLCJpdGVtQnlLZXkiLCJrZXkiLCJsb2NhbGUiLCJnZXRDb250ZW50QnlLZXkiLCJsaXN0QnlDYXRlZ29yeSIsImNhdGVnb3J5IiwiY29udGVudHNCeUNhdGVnb3J5IiwiZ2V0Q29udGVudHNCeUNhdGVnb3J5IiwibGlzdCIsIkdFVF9MSVNUX1NVQ0NFU1MiLCJHRVRfTElTVF9FUlJPUiIsImNvbnRlbnRzTGlzdCIsImdldENvbnRlbnRzTGlzdCIsImRlbGV0ZUNvbnRlbnQiLCJSRU1PVkVfSVRFTV9TVUNDRVNTIiwiUkVNT1ZFX0lURU1fRVJST1IiLCJ1cGRhdGUiLCJ1cGRhdGVDb250ZW50IiwiVVBEQVRFX0lURU1fU1VDQ0VTUyIsIlVQREFURV9JVEVNX0VSUk9SIiwiU3RyaW5nIiwiZGVsZXRlIiwidXBkYXRlQ29udGVudEFkYXB0ZXIiLCJ1cGRhdGVBZGFwdGVyIiwidXBkYXRlQ29udGVudEFkYXB0ZXJPcHRpb25zIiwidXBkYXRlT3B0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBU0EsT0FBTyxRQUFRLGVBQWU7QUFFdkMsU0FBU0MsaUJBQWlCLFFBQVEsa0RBQWtEO0FBQ3BGLFNBQVNDLGlCQUFpQixRQUFRLCtCQUErQjtBQUNqRSxTQUFTQyxXQUFXLEVBQUVDLFFBQVEsUUFBUSxxQkFBcUI7QUFDM0QsU0FBU0MsaUJBQWlCLFFBQVEsbUNBQW1DO0FBQ3JFLFNBQVFDLGtCQUFrQixFQUFFQyxnQkFBZ0IsRUFBRUMsZ0JBQWdCLFFBQU8sOEJBQThCO0FBT25HLE1BQU1DLFlBQVk7QUFrQ2xCLE1BQU1DLDBCQUEwQixDQUFDQyxPQUFnQkMsVUFBb0NYLGtCQUFrQlU7QUFFdkcsT0FBTyxNQUFNRSx1QkFBdUIsQ0FDbENDLE1BQ0FGO0lBRUEsTUFBTUcsY0FBY1Ysa0JBQWtCUyxNQUFNSix5QkFBeUI7UUFDbkUsR0FBSUUsU0FBU0ksa0JBQWtCO1lBQUNDLFNBQVNMLFFBQVFJLGNBQWM7UUFBQSxDQUFDO1FBQ2hFLEdBQUlKLFNBQVNNLHlCQUF5QjtZQUFDQyxnQkFBZ0JQLFFBQVFNLHFCQUFxQjtRQUFBLENBQUM7SUFDdkY7SUFDQSxNQUFNRSxNQUFNLE9BQU9DLGFBQStCQyxlQUF5QixFQUFFLEVBQUVDLGlCQUF1QyxDQUFDLENBQUM7UUFDdEgsSUFBSTtZQUNGLE1BQU1DLGlCQUFpQjtnQkFDckJDLFNBQVM7b0JBQ1BDLE1BQU07b0JBQ05D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
@@ -0,0 +1,30 @@
1
+ import type { FluxFramework } from '@nlabs/arkhamjs';
2
+ import type { ConversationType } from '../../adapters/conversationAdapter/conversationAdapter.js';
3
+ import type { BaseAdapterOptions } from '../../utils/validatorFactory.js';
4
+ import type { ActionRequestOptions } from '../../utils/requestCache.js';
5
+ export interface ConversationAdapterOptions extends BaseAdapterOptions {
6
+ }
7
+ export interface ConversationActionsOptions {
8
+ conversationAdapter?: (input: unknown, options?: ConversationAdapterOptions) => any;
9
+ conversationAdapterOptions?: ConversationAdapterOptions;
10
+ }
11
+ export type ConversationApiResultsType = {
12
+ conversations: {
13
+ add?: ConversationType;
14
+ itemById?: ConversationType;
15
+ list?: ConversationType[];
16
+ remove?: ConversationType;
17
+ update?: ConversationType;
18
+ };
19
+ };
20
+ export interface ConversationActions {
21
+ add: (conversationData: Partial<ConversationType>, conversationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ConversationType>;
22
+ delete: (conversationId: string, conversationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ConversationType>;
23
+ itemById: (conversationId: string, conversationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ConversationType>;
24
+ list: (from?: number, to?: number, conversationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ConversationType[]>;
25
+ update: (conversation: Partial<ConversationType>, conversationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<ConversationType>;
26
+ updateConversationAdapter: (adapter: (input: unknown, options?: ConversationAdapterOptions) => any) => void;
27
+ updateConversationAdapterOptions: (options: ConversationAdapterOptions) => void;
28
+ }
29
+ export declare const createConversationActions: (flux: FluxFramework, options?: ConversationActionsOptions) => ConversationActions;
30
+ //# sourceMappingURL=conversationActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationActions.d.ts","sourceRoot":"","sources":["../../../src/actions/conversationActions/conversationActions.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,2DAA2D,CAAC;AAChG,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAItE,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;CACrE;AAED,MAAM,WAAW,0BAA0B;IACzC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,0BAA0B,KAAK,GAAG,CAAC;IACpF,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;CACzD;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,aAAa,EAAE;QACb,GAAG,CAAC,EAAE,gBAAgB,CAAC;QACvB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;QAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrJ,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnI,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrI,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvI,MAAM,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpJ,yBAAyB,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,0BAA0B,KAAK,GAAG,KAAK,IAAI,CAAC;IAC5G,gCAAgC,EAAE,CAAC,OAAO,EAAE,0BAA0B,KAAK,IAAI,CAAC;CACjF;AAKD,eAAO,MAAM,yBAAyB,GACpC,MAAM,aAAa,EACnB,UAAU,0BAA0B,KACnC,mBA+NF,CAAC"}