@nlabs/metropolisjs 0.1.1 → 0.2.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 (326) 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 +1343 -0
  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/factory-pattern-usage.ts +283 -0
  19. package/examples/i18n-import-examples.ts +86 -0
  20. package/examples/i18n-namespace-usage.ts +118 -0
  21. package/examples/i18next-singleton-demo.ts +187 -0
  22. package/examples/permission-system-usage.tsx +415 -0
  23. package/examples/project-details.tsx +397 -0
  24. package/examples/shared-i18n-usage.tsx +203 -0
  25. package/examples/signup-error-handling.ts +100 -0
  26. package/examples/translation-types.ts +86 -0
  27. package/examples/translation-usage.tsx +336 -0
  28. package/factoryPatternGuide.md +244 -0
  29. package/index.js +1 -0
  30. package/jest.config.mjs +28 -0
  31. package/lex.config.mjs +26 -0
  32. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts +22 -0
  33. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts.map +1 -0
  34. package/lib/__tests__/e2e/helpers/testGraphQLServer.js +197 -0
  35. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts +3 -0
  36. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts.map +1 -0
  37. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.js +52 -0
  38. package/lib/actions/appActions/appActions.d.ts +29 -0
  39. package/lib/actions/appActions/appActions.d.ts.map +1 -0
  40. package/lib/actions/appActions/appActions.js +159 -0
  41. package/lib/actions/connectionActions/connectionActions.d.ts +19 -0
  42. package/lib/actions/connectionActions/connectionActions.d.ts.map +1 -0
  43. package/lib/actions/connectionActions/connectionActions.js +131 -0
  44. package/lib/actions/contentActions/contentActions.d.ts +34 -0
  45. package/lib/actions/contentActions/contentActions.d.ts.map +1 -0
  46. package/lib/actions/contentActions/contentActions.js +314 -0
  47. package/lib/actions/conversationActions/conversationActions.d.ts +30 -0
  48. package/lib/actions/conversationActions/conversationActions.d.ts.map +1 -0
  49. package/lib/actions/conversationActions/conversationActions.js +225 -0
  50. package/lib/actions/eventActions/eventActions.d.ts +65 -0
  51. package/lib/actions/eventActions/eventActions.d.ts.map +1 -0
  52. package/lib/actions/eventActions/eventActions.js +436 -0
  53. package/lib/actions/groupActions/groupActions.d.ts +30 -0
  54. package/lib/actions/groupActions/groupActions.d.ts.map +1 -0
  55. package/lib/actions/groupActions/groupActions.js +229 -0
  56. package/lib/actions/imageActions/imageActions.d.ts +62 -0
  57. package/lib/actions/imageActions/imageActions.d.ts.map +1 -0
  58. package/lib/actions/imageActions/imageActions.js +593 -0
  59. package/lib/actions/index.d.ts +21 -0
  60. package/lib/actions/index.d.ts.map +1 -0
  61. package/lib/actions/index.js +22 -0
  62. package/lib/actions/locationActions/locationActions.d.ts +60 -0
  63. package/lib/actions/locationActions/locationActions.d.ts.map +1 -0
  64. package/lib/actions/locationActions/locationActions.js +388 -0
  65. package/lib/actions/messageActions/messageActions.d.ts +38 -0
  66. package/lib/actions/messageActions/messageActions.d.ts.map +1 -0
  67. package/lib/actions/messageActions/messageActions.js +235 -0
  68. package/lib/actions/permissionActions/permissionActions.d.ts +34 -0
  69. package/lib/actions/permissionActions/permissionActions.d.ts.map +1 -0
  70. package/lib/actions/permissionActions/permissionActions.js +330 -0
  71. package/lib/actions/personaActions/personaActions.d.ts +65 -0
  72. package/lib/actions/personaActions/personaActions.d.ts.map +1 -0
  73. package/lib/actions/personaActions/personaActions.js +572 -0
  74. package/lib/actions/postActions/postActions.d.ts +36 -0
  75. package/lib/actions/postActions/postActions.d.ts.map +1 -0
  76. package/lib/actions/postActions/postActions.js +447 -0
  77. package/lib/actions/reactionActions/reactionActions.d.ts +38 -0
  78. package/lib/actions/reactionActions/reactionActions.d.ts.map +1 -0
  79. package/lib/actions/reactionActions/reactionActions.js +413 -0
  80. package/lib/actions/sseActions/sseActions.d.ts +38 -0
  81. package/lib/actions/sseActions/sseActions.d.ts.map +1 -0
  82. package/lib/actions/sseActions/sseActions.js +148 -0
  83. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +24 -0
  84. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +1 -0
  85. package/lib/actions/subscriptionActions/subscriptionActions.js +329 -0
  86. package/lib/actions/tagActions/tagActions.d.ts +37 -0
  87. package/lib/actions/tagActions/tagActions.d.ts.map +1 -0
  88. package/lib/actions/tagActions/tagActions.js +347 -0
  89. package/lib/actions/translationActions/translationActions.d.ts +38 -0
  90. package/lib/actions/translationActions/translationActions.d.ts.map +1 -0
  91. package/lib/actions/translationActions/translationActions.js +189 -0
  92. package/lib/actions/userActions/userActions.d.ts +78 -0
  93. package/lib/actions/userActions/userActions.d.ts.map +1 -0
  94. package/lib/actions/userActions/userActions.js +844 -0
  95. package/lib/actions/videoActions/videoActions.d.ts +41 -0
  96. package/lib/actions/videoActions/videoActions.d.ts.map +1 -0
  97. package/lib/actions/videoActions/videoActions.js +532 -0
  98. package/lib/actions/websocketActions/websocketActions.d.ts +30 -0
  99. package/lib/actions/websocketActions/websocketActions.d.ts.map +1 -0
  100. package/lib/actions/websocketActions/websocketActions.js +377 -0
  101. package/lib/adapters/appAdapter/appAdapter.d.ts +8 -0
  102. package/lib/adapters/appAdapter/appAdapter.d.ts.map +1 -0
  103. package/lib/adapters/appAdapter/appAdapter.js +90 -0
  104. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +21 -0
  105. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +1 -0
  106. package/lib/adapters/arangoAdapter/arangoAdapter.js +75 -0
  107. package/lib/adapters/contentAdapter/contentAdapter.d.ts +32 -0
  108. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +1 -0
  109. package/lib/adapters/contentAdapter/contentAdapter.js +107 -0
  110. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +24 -0
  111. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +1 -0
  112. package/lib/adapters/conversationAdapter/conversationAdapter.js +75 -0
  113. package/lib/adapters/eventAdapter/eventAdapter.d.ts +46 -0
  114. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +1 -0
  115. package/lib/adapters/eventAdapter/eventAdapter.js +162 -0
  116. package/lib/adapters/fileAdapter/fileAdapter.d.ts +30 -0
  117. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +1 -0
  118. package/lib/adapters/fileAdapter/fileAdapter.js +118 -0
  119. package/lib/adapters/groupAdapter/groupAdapter.d.ts +28 -0
  120. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +1 -0
  121. package/lib/adapters/groupAdapter/groupAdapter.js +66 -0
  122. package/lib/adapters/imageAdapter/imageAdapter.d.ts +38 -0
  123. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +1 -0
  124. package/lib/adapters/imageAdapter/imageAdapter.js +134 -0
  125. package/lib/adapters/index.d.ts +34 -0
  126. package/lib/adapters/index.d.ts.map +1 -0
  127. package/lib/adapters/index.js +19 -0
  128. package/lib/adapters/locationAdapter/locationAdapter.d.ts +28 -0
  129. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +1 -0
  130. package/lib/adapters/locationAdapter/locationAdapter.js +95 -0
  131. package/lib/adapters/messageAdapter/messageAdapter.d.ts +31 -0
  132. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +1 -0
  133. package/lib/adapters/messageAdapter/messageAdapter.js +82 -0
  134. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +41 -0
  135. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +1 -0
  136. package/lib/adapters/permissionAdapter/permissionAdapter.js +120 -0
  137. package/lib/adapters/personaAdapter/personaAdapter.d.ts +44 -0
  138. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +1 -0
  139. package/lib/adapters/personaAdapter/personaAdapter.js +161 -0
  140. package/lib/adapters/postAdapter/postAdapter.d.ts +33 -0
  141. package/lib/adapters/postAdapter/postAdapter.d.ts.map +1 -0
  142. package/lib/adapters/postAdapter/postAdapter.js +115 -0
  143. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +23 -0
  144. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +1 -0
  145. package/lib/adapters/reactionAdapter/reactionAdapter.js +81 -0
  146. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +17 -0
  147. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +1 -0
  148. package/lib/adapters/reaktorAdapter/reaktorAdapter.js +58 -0
  149. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +24 -0
  150. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +1 -0
  151. package/lib/adapters/sessionAdapter/sessionAdapter.js +80 -0
  152. package/lib/adapters/tagAdapter/tagAdapter.d.ts +21 -0
  153. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +1 -0
  154. package/lib/adapters/tagAdapter/tagAdapter.js +98 -0
  155. package/lib/adapters/translationAdapter/translationAdapter.d.ts +21 -0
  156. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +1 -0
  157. package/lib/adapters/translationAdapter/translationAdapter.js +55 -0
  158. package/lib/adapters/userAdapter/userAdapter.d.ts +67 -0
  159. package/lib/adapters/userAdapter/userAdapter.d.ts.map +1 -0
  160. package/lib/adapters/userAdapter/userAdapter.js +302 -0
  161. package/lib/adapters/videoAdapter/videoAdapter.d.ts +8 -0
  162. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +1 -0
  163. package/lib/adapters/videoAdapter/videoAdapter.js +194 -0
  164. package/lib/config/index.d.ts +44 -0
  165. package/lib/config/index.d.ts.map +1 -0
  166. package/lib/config/index.js +97 -0
  167. package/lib/constants/Collections.d.ts +44 -0
  168. package/lib/constants/Collections.d.ts.map +1 -0
  169. package/lib/constants/Collections.js +40 -0
  170. package/lib/constants/MetropolisConstants.d.ts +15 -0
  171. package/lib/constants/MetropolisConstants.d.ts.map +1 -0
  172. package/lib/constants/MetropolisConstants.js +15 -0
  173. package/lib/graphql/message.d.ts +3 -0
  174. package/lib/graphql/message.d.ts.map +1 -0
  175. package/lib/graphql/message.js +20 -0
  176. package/lib/graphql/notification.d.ts +3 -0
  177. package/lib/graphql/notification.d.ts.map +1 -0
  178. package/lib/graphql/notification.js +20 -0
  179. package/lib/graphql/session.d.ts +2 -0
  180. package/lib/graphql/session.d.ts.map +1 -0
  181. package/lib/graphql/session.js +17 -0
  182. package/lib/index.d.ts +52 -0
  183. package/lib/index.d.ts.map +1 -0
  184. package/lib/index.js +248 -0
  185. package/lib/stores/appStore.d.ts +23 -0
  186. package/lib/stores/appStore.d.ts.map +1 -0
  187. package/lib/stores/appStore.js +23 -0
  188. package/lib/stores/contentStore.d.ts +36 -0
  189. package/lib/stores/contentStore.d.ts.map +1 -0
  190. package/lib/stores/contentStore.js +139 -0
  191. package/lib/stores/conversationStore.d.ts +38 -0
  192. package/lib/stores/conversationStore.d.ts.map +1 -0
  193. package/lib/stores/conversationStore.js +117 -0
  194. package/lib/stores/eventStore.d.ts +37 -0
  195. package/lib/stores/eventStore.d.ts.map +1 -0
  196. package/lib/stores/eventStore.js +47 -0
  197. package/lib/stores/groupStore.d.ts +37 -0
  198. package/lib/stores/groupStore.d.ts.map +1 -0
  199. package/lib/stores/groupStore.js +68 -0
  200. package/lib/stores/imageStore.d.ts +40 -0
  201. package/lib/stores/imageStore.d.ts.map +1 -0
  202. package/lib/stores/imageStore.js +53 -0
  203. package/lib/stores/index.d.ts +24 -0
  204. package/lib/stores/index.d.ts.map +1 -0
  205. package/lib/stores/index.js +24 -0
  206. package/lib/stores/locationStore.d.ts +34 -0
  207. package/lib/stores/locationStore.d.ts.map +1 -0
  208. package/lib/stores/locationStore.js +42 -0
  209. package/lib/stores/messageStore.d.ts +51 -0
  210. package/lib/stores/messageStore.d.ts.map +1 -0
  211. package/lib/stores/messageStore.js +137 -0
  212. package/lib/stores/notificationStore.d.ts +33 -0
  213. package/lib/stores/notificationStore.d.ts.map +1 -0
  214. package/lib/stores/notificationStore.js +55 -0
  215. package/lib/stores/permissionStore.d.ts +37 -0
  216. package/lib/stores/permissionStore.d.ts.map +1 -0
  217. package/lib/stores/permissionStore.js +117 -0
  218. package/lib/stores/personaStore.d.ts +26 -0
  219. package/lib/stores/personaStore.d.ts.map +1 -0
  220. package/lib/stores/personaStore.js +118 -0
  221. package/lib/stores/postStore.d.ts +34 -0
  222. package/lib/stores/postStore.d.ts.map +1 -0
  223. package/lib/stores/postStore.js +53 -0
  224. package/lib/stores/reactionStore.d.ts +25 -0
  225. package/lib/stores/reactionStore.d.ts.map +1 -0
  226. package/lib/stores/reactionStore.js +28 -0
  227. package/lib/stores/subscriptionStore.d.ts +41 -0
  228. package/lib/stores/subscriptionStore.d.ts.map +1 -0
  229. package/lib/stores/subscriptionStore.js +85 -0
  230. package/lib/stores/tagStore.d.ts +34 -0
  231. package/lib/stores/tagStore.d.ts.map +1 -0
  232. package/lib/stores/tagStore.js +87 -0
  233. package/lib/stores/translationStore.d.ts +42 -0
  234. package/lib/stores/translationStore.d.ts.map +1 -0
  235. package/lib/stores/translationStore.js +122 -0
  236. package/lib/stores/userStore.d.ts +74 -0
  237. package/lib/stores/userStore.d.ts.map +1 -0
  238. package/lib/stores/userStore.js +319 -0
  239. package/lib/stores/videoStore.d.ts +39 -0
  240. package/lib/stores/videoStore.d.ts.map +1 -0
  241. package/lib/stores/videoStore.js +132 -0
  242. package/lib/stores/websocketStore.d.ts +24 -0
  243. package/lib/stores/websocketStore.d.ts.map +1 -0
  244. package/lib/stores/websocketStore.js +51 -0
  245. package/lib/types/apps.types.d.ts +17 -0
  246. package/lib/types/apps.types.d.ts.map +1 -0
  247. package/lib/types/apps.types.js +6 -0
  248. package/lib/types/common.types.d.ts +31 -0
  249. package/lib/types/common.types.d.ts.map +1 -0
  250. package/lib/types/common.types.js +6 -0
  251. package/lib/types/conversations.types.d.ts +17 -0
  252. package/lib/types/conversations.types.d.ts.map +1 -0
  253. package/lib/types/conversations.types.js +6 -0
  254. package/lib/types/edges.types.d.ts +38 -0
  255. package/lib/types/edges.types.d.ts.map +1 -0
  256. package/lib/types/edges.types.js +6 -0
  257. package/lib/types/groups.types.d.ts +19 -0
  258. package/lib/types/groups.types.d.ts.map +1 -0
  259. package/lib/types/groups.types.js +6 -0
  260. package/lib/types/index.d.ts +12 -0
  261. package/lib/types/index.d.ts.map +1 -0
  262. package/lib/types/index.js +12 -0
  263. package/lib/types/subscriptions.types.d.ts +32 -0
  264. package/lib/types/subscriptions.types.d.ts.map +1 -0
  265. package/lib/types/subscriptions.types.js +6 -0
  266. package/lib/types/videos.types.d.ts +61 -0
  267. package/lib/types/videos.types.d.ts.map +1 -0
  268. package/lib/types/videos.types.js +6 -0
  269. package/lib/utils/MetropolisProvider.d.ts +58 -0
  270. package/lib/utils/MetropolisProvider.d.ts.map +1 -0
  271. package/lib/utils/MetropolisProvider.js +31 -0
  272. package/lib/utils/actionFactory.d.ts +24 -0
  273. package/lib/utils/actionFactory.d.ts.map +1 -0
  274. package/lib/utils/actionFactory.js +95 -0
  275. package/lib/utils/api.d.ts +44 -0
  276. package/lib/utils/api.d.ts.map +1 -0
  277. package/lib/utils/api.js +253 -0
  278. package/lib/utils/app.d.ts +7 -0
  279. package/lib/utils/app.d.ts.map +1 -0
  280. package/lib/utils/app.js +15 -0
  281. package/lib/utils/baseActionFactory.d.ts +16 -0
  282. package/lib/utils/baseActionFactory.d.ts.map +1 -0
  283. package/lib/utils/baseActionFactory.js +72 -0
  284. package/lib/utils/configUtils.d.ts +11 -0
  285. package/lib/utils/configUtils.d.ts.map +1 -0
  286. package/lib/utils/configUtils.js +20 -0
  287. package/lib/utils/dateUtils.d.ts +3 -0
  288. package/lib/utils/dateUtils.d.ts.map +1 -0
  289. package/lib/utils/dateUtils.js +11 -0
  290. package/lib/utils/file.d.ts +3 -0
  291. package/lib/utils/file.d.ts.map +1 -0
  292. package/lib/utils/file.js +156 -0
  293. package/lib/utils/i18n.d.ts +7 -0
  294. package/lib/utils/i18n.d.ts.map +1 -0
  295. package/lib/utils/i18n.js +96 -0
  296. package/lib/utils/index.d.ts +20 -0
  297. package/lib/utils/index.d.ts.map +1 -0
  298. package/lib/utils/index.js +26 -0
  299. package/lib/utils/location.d.ts +10 -0
  300. package/lib/utils/location.d.ts.map +1 -0
  301. package/lib/utils/location.js +82 -0
  302. package/lib/utils/permissionUtils.d.ts +22 -0
  303. package/lib/utils/permissionUtils.d.ts.map +1 -0
  304. package/lib/utils/permissionUtils.js +72 -0
  305. package/lib/utils/requestCache.d.ts +8 -0
  306. package/lib/utils/requestCache.d.ts.map +1 -0
  307. package/lib/utils/requestCache.js +53 -0
  308. package/lib/utils/session.d.ts +14 -0
  309. package/lib/utils/session.d.ts.map +1 -0
  310. package/lib/utils/session.js +107 -0
  311. package/lib/utils/useConversationTyping.d.ts +26 -0
  312. package/lib/utils/useConversationTyping.d.ts.map +1 -0
  313. package/lib/utils/useConversationTyping.js +117 -0
  314. package/lib/utils/useMetropolis.d.ts +67 -0
  315. package/lib/utils/useMetropolis.d.ts.map +1 -0
  316. package/lib/utils/useMetropolis.js +311 -0
  317. package/lib/utils/useTranslations.d.ts +16 -0
  318. package/lib/utils/useTranslations.d.ts.map +1 -0
  319. package/lib/utils/useTranslations.js +105 -0
  320. package/lib/utils/validatorFactory.d.ts +49 -0
  321. package/lib/utils/validatorFactory.d.ts.map +1 -0
  322. package/lib/utils/validatorFactory.js +95 -0
  323. package/package.json +75 -28
  324. package/temp_signin.ts +73 -0
  325. package/tsconfig.lint.json +25 -0
  326. package/tsconfig.test.json +14 -0
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { parseId } from '@nlabs/utils';
5
+ import { validateMessageInput } from '../../adapters/messageAdapter/messageAdapter.js';
6
+ import { MESSAGE_CONSTANTS } from '../../stores/messageStore.js';
7
+ import { appMutation, appQuery } from '../../utils/api.js';
8
+ import { clearCachedRequest, getCachedRequest, setCachedRequest } from '../../utils/requestCache.js';
9
+ const DATA_TYPE = 'messages';
10
+ const defaultMessageValidator = (input, options)=>validateMessageInput(input);
11
+ const createMessageValidator = (customAdapter, options)=>(input, validatorOptions)=>{
12
+ const mergedOptions = {
13
+ ...options,
14
+ ...validatorOptions
15
+ };
16
+ let validated = defaultMessageValidator(input, mergedOptions);
17
+ if (customAdapter) {
18
+ validated = customAdapter(validated, mergedOptions);
19
+ }
20
+ if (mergedOptions?.customValidation) {
21
+ validated = mergedOptions.customValidation(validated);
22
+ }
23
+ return validated;
24
+ };
25
+ export const createMessageActions = (flux, options)=>{
26
+ let messageAdapterOptions = options?.messageAdapterOptions || {};
27
+ let customMessageAdapter = options?.messageAdapter;
28
+ let validateMessage = createMessageValidator(customMessageAdapter, messageAdapterOptions);
29
+ const updateMessageAdapter = (adapter)=>{
30
+ customMessageAdapter = adapter;
31
+ validateMessage = createMessageValidator(customMessageAdapter, messageAdapterOptions);
32
+ };
33
+ const updateMessageAdapterOptions = (options)=>{
34
+ messageAdapterOptions = {
35
+ ...messageAdapterOptions,
36
+ ...options
37
+ };
38
+ validateMessage = createMessageValidator(customMessageAdapter, messageAdapterOptions);
39
+ };
40
+ const getActivePersonaId = ()=>parseId(String(flux.getState('user.session.personaId') || ''));
41
+ const getActiveUserId = ()=>parseId(String(flux.getState('user.session.userId') || ''));
42
+ const sendMessage = async (message, messageProps = [], requestOptions = {})=>{
43
+ try {
44
+ const nextMessage = validateMessage(message, messageAdapterOptions);
45
+ const personaId = parseId(String(nextMessage.personaId || getActivePersonaId() || ''));
46
+ const userId = parseId(String(nextMessage.userId || getActiveUserId() || ''));
47
+ const queryVariables = {
48
+ message: {
49
+ type: 'MessageInput!',
50
+ value: {
51
+ ...nextMessage,
52
+ ...personaId && {
53
+ personaId
54
+ },
55
+ ...userId && {
56
+ userId
57
+ }
58
+ }
59
+ }
60
+ };
61
+ const onSuccess = (data = {})=>{
62
+ const message = data?.messages?.addMessage || {};
63
+ return flux.dispatch({
64
+ message,
65
+ type: MESSAGE_CONSTANTS.ADD_ITEM_SUCCESS
66
+ });
67
+ };
68
+ return await appMutation(flux, 'addMessage', DATA_TYPE, queryVariables, [
69
+ 'added',
70
+ 'content',
71
+ 'modified',
72
+ 'messageId',
73
+ 'user { userId, personaId, name, username, thumbUrl, imageUrl }',
74
+ ...messageProps
75
+ ], {}).then((result)=>result?.messages?.addMessage || {});
76
+ } catch (error) {
77
+ flux.dispatch({
78
+ error,
79
+ type: MESSAGE_CONSTANTS.ADD_ITEM_ERROR
80
+ });
81
+ throw error;
82
+ } finally{
83
+ await clearCachedRequest(flux, `message.getMessages:${String(message?.conversationId || '')}`);
84
+ await clearCachedRequest(flux, 'message.getConversations');
85
+ }
86
+ };
87
+ const getDirectConversation = async (userId, requestOptions = {})=>{
88
+ try {
89
+ const cachedResult = getCachedRequest(flux, `message.getDirectConversation:${userId}`, {
90
+ userId
91
+ }, requestOptions);
92
+ if (cachedResult) {
93
+ return cachedResult;
94
+ }
95
+ const queryVariables = {
96
+ userId: {
97
+ type: 'ID!',
98
+ value: userId
99
+ }
100
+ };
101
+ const onSuccess = (data = {})=>{
102
+ const conversation = data?.messages?.directConversation || {};
103
+ return flux.dispatch({
104
+ conversation,
105
+ type: MESSAGE_CONSTANTS.GET_CONVO_LIST_SUCCESS
106
+ });
107
+ };
108
+ const result = await appQuery(flux, 'directConversation', DATA_TYPE, queryVariables, [
109
+ 'added',
110
+ 'conversationId',
111
+ 'modified',
112
+ 'name',
113
+ 'users { userId, personaId, name, username, thumbUrl, imageUrl }'
114
+ ], {
115
+ onSuccess
116
+ });
117
+ const conversation = result?.conversation || result?.messages?.directConversation || {};
118
+ return await setCachedRequest(flux, `message.getDirectConversation:${userId}`, {
119
+ userId
120
+ }, conversation, requestOptions);
121
+ } catch (error) {
122
+ flux.dispatch({
123
+ error,
124
+ type: MESSAGE_CONSTANTS.GET_CONVO_LIST_ERROR
125
+ });
126
+ throw error;
127
+ }
128
+ };
129
+ const getMessages = async (conversationId, messageProps = [], requestOptions = {})=>{
130
+ try {
131
+ const cachedResult = getCachedRequest(flux, `message.getMessages:${conversationId}`, {
132
+ conversationId,
133
+ messageProps
134
+ }, requestOptions);
135
+ if (cachedResult) {
136
+ return cachedResult;
137
+ }
138
+ const queryVariables = {
139
+ conversationId: {
140
+ type: 'ID',
141
+ value: conversationId
142
+ }
143
+ };
144
+ const onSuccess = (data = {})=>{
145
+ const messages = Array.isArray(data?.messages?.getMessages) ? data.messages?.getMessages || [] : [];
146
+ return flux.dispatch({
147
+ conversationId,
148
+ list: messages,
149
+ type: MESSAGE_CONSTANTS.GET_LIST_SUCCESS
150
+ });
151
+ };
152
+ const result = await appQuery(flux, 'getMessages', DATA_TYPE, queryVariables, [
153
+ 'added',
154
+ 'content',
155
+ 'modified',
156
+ 'messageId',
157
+ 'user { userId, personaId, name, username, thumbUrl, imageUrl }',
158
+ ...messageProps
159
+ ], {
160
+ onSuccess
161
+ });
162
+ const messages = result?.messages?.getMessages || [];
163
+ return await setCachedRequest(flux, `message.getMessages:${conversationId}`, {
164
+ conversationId,
165
+ messageProps
166
+ }, messages, requestOptions);
167
+ } catch (error) {
168
+ flux.dispatch({
169
+ error,
170
+ type: MESSAGE_CONSTANTS.GET_LIST_ERROR
171
+ });
172
+ throw error;
173
+ }
174
+ };
175
+ const getConversations = async (from = 0, to = 10, requestOptions = {})=>{
176
+ try {
177
+ const cachedResult = getCachedRequest(flux, 'message.getConversations', {
178
+ from,
179
+ to
180
+ }, requestOptions);
181
+ if (cachedResult) {
182
+ return cachedResult;
183
+ }
184
+ const queryVariables = {
185
+ from: {
186
+ type: 'Int',
187
+ value: from
188
+ },
189
+ to: {
190
+ type: 'Int',
191
+ value: to
192
+ }
193
+ };
194
+ const onSuccess = (data = {})=>{
195
+ const conversations = Array.isArray(data?.messages?.getConversations) ? data.messages?.getConversations || [] : [];
196
+ return flux.dispatch({
197
+ conversations,
198
+ type: MESSAGE_CONSTANTS.GET_CONVO_LIST_SUCCESS
199
+ });
200
+ };
201
+ const result = await appQuery(flux, 'getConversations', DATA_TYPE, queryVariables, [
202
+ 'added',
203
+ 'content',
204
+ 'conversationId',
205
+ 'isDirect',
206
+ 'modified',
207
+ 'name',
208
+ 'users { userId, personaId, name, username, thumbUrl, imageUrl }'
209
+ ], {
210
+ onSuccess
211
+ });
212
+ const conversations = result?.messages?.getConversations || [];
213
+ return await setCachedRequest(flux, 'message.getConversations', {
214
+ from,
215
+ to
216
+ }, conversations, requestOptions);
217
+ } catch (error) {
218
+ flux.dispatch({
219
+ error,
220
+ type: MESSAGE_CONSTANTS.GET_CONVO_LIST_ERROR
221
+ });
222
+ throw error;
223
+ }
224
+ };
225
+ return {
226
+ sendMessage,
227
+ getDirectConversation,
228
+ getMessages,
229
+ getConversations,
230
+ updateMessageAdapter,
231
+ updateMessageAdapterOptions
232
+ };
233
+ };
234
+
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9tZXNzYWdlQWN0aW9ucy9tZXNzYWdlQWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG5pbXBvcnQge3BhcnNlSWR9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3ZhbGlkYXRlTWVzc2FnZUlucHV0fSBmcm9tICcuLi8uLi9hZGFwdGVycy9tZXNzYWdlQWRhcHRlci9tZXNzYWdlQWRhcHRlci5qcyc7XG5pbXBvcnQge01FU1NBR0VfQ09OU1RBTlRTfSBmcm9tICcuLi8uLi9zdG9yZXMvbWVzc2FnZVN0b3JlLmpzJztcbmltcG9ydCB7YXBwTXV0YXRpb24sIGFwcFF1ZXJ5fSBmcm9tICcuLi8uLi91dGlscy9hcGkuanMnO1xuaW1wb3J0IHtjbGVhckNhY2hlZFJlcXVlc3QsIGdldENhY2hlZFJlcXVlc3QsIHNldENhY2hlZFJlcXVlc3R9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge0NvbnZlcnNhdGlvblR5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2NvbnZlcnNhdGlvbkFkYXB0ZXIvY29udmVyc2F0aW9uQWRhcHRlci5qcyc7XG5pbXBvcnQgdHlwZSB7TWVzc2FnZVR5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL21lc3NhZ2VBZGFwdGVyL21lc3NhZ2VBZGFwdGVyLmpzJztcbmltcG9ydCB0eXBlIHtBcGlSZXN1bHRzVHlwZX0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLmpzJztcbmltcG9ydCB0eXBlIHtBY3Rpb25SZXF1ZXN0T3B0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdENhY2hlLmpzJztcblxuY29uc3QgREFUQV9UWVBFID0gJ21lc3NhZ2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUFjdGlvbnNPcHRpb25zIHtcbiAgbWVzc2FnZUFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBNZXNzYWdlQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgbWVzc2FnZUFkYXB0ZXJPcHRpb25zPzogTWVzc2FnZUFkYXB0ZXJPcHRpb25zO1xufVxuXG5leHBvcnQgdHlwZSBNZXNzYWdlQXBpUmVzdWx0c1R5cGUgPSB7XG4gIG1lc3NhZ2VzPzoge1xuICAgIGFkZE1lc3NhZ2U/OiBNZXNzYWdlVHlwZTtcbiAgICBjb252ZXJzYXRpb25zPzogQ29udmVyc2F0aW9uVHlwZVtdO1xuICAgIGRpcmVjdENvbnZlcnNhdGlvbj86IENvbnZlcnNhdGlvblR5cGU7XG4gICAgZ2V0TWVzc2FnZT86IE1lc3NhZ2VUeXBlO1xuICAgIGdldE1lc3NhZ2VzPzogTWVzc2FnZVR5cGVbXTtcbiAgICBnZXRDb252ZXJzYXRpb25zPzogQ29udmVyc2F0aW9uVHlwZVtdO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQWN0aW9ucyB7XG4gIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogUGFydGlhbDxNZXNzYWdlVHlwZT4sIG1lc3NhZ2VQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPE1lc3NhZ2VUeXBlPjtcbiAgZ2V0RGlyZWN0Q29udmVyc2F0aW9uOiAodXNlcklkOiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT47XG4gIGdldE1lc3NhZ2VzOiAoY29udmVyc2F0aW9uSWQ6IHN0cmluZywgbWVzc2FnZVByb3BzPzogc3RyaW5nW10sIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8TWVzc2FnZVR5cGVbXT47XG4gIGdldENvbnZlcnNhdGlvbnM6IChmcm9tPzogbnVtYmVyLCB0bz86IG51bWJlciwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlW10+O1xuICB1cGRhdGVNZXNzYWdlQWRhcHRlcjogKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IE1lc3NhZ2VBZGFwdGVyT3B0aW9ucykgPT4gYW55KSA9PiB2b2lkO1xuICB1cGRhdGVNZXNzYWdlQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBNZXNzYWdlQWRhcHRlck9wdGlvbnMpID0+IHZvaWQ7XG59XG5cbmNvbnN0IGRlZmF1bHRNZXNzYWdlVmFsaWRhdG9yID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogTWVzc2FnZUFkYXB0ZXJPcHRpb25zKSA9PiB2YWxpZGF0ZU1lc3NhZ2VJbnB1dChpbnB1dCk7XG5cbmNvbnN0IGNyZWF0ZU1lc3NhZ2VWYWxpZGF0b3IgPSAoXG4gIGN1c3RvbUFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBNZXNzYWdlQWRhcHRlck9wdGlvbnMpID0+IGFueSxcbiAgb3B0aW9ucz86IE1lc3NhZ2VBZGFwdGVyT3B0aW9uc1xuKSA9PiAoaW5wdXQ6IHVua25vd24sIHZhbGlkYXRvck9wdGlvbnM/OiBNZXNzYWdlQWRhcHRlck9wdGlvbnMpID0+IHtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHsuLi5vcHRpb25zLCAuLi52YWxpZGF0b3JPcHRpb25zfTtcblxuICBsZXQgdmFsaWRhdGVkID0gZGVmYXVsdE1lc3NhZ2VWYWxpZGF0b3IoaW5wdXQsIG1lcmdlZE9wdGlvbnMpO1xuXG4gIGlmKGN1c3RvbUFkYXB0ZXIpIHtcbiAgICB2YWxpZGF0ZWQgPSBjdXN0b21BZGFwdGVyKHZhbGlkYXRlZCwgbWVyZ2VkT3B0aW9ucyk7XG4gIH1cblxuICBpZihtZXJnZWRPcHRpb25zPy5jdXN0b21WYWxpZGF0aW9uKSB7XG4gICAgdmFsaWRhdGVkID0gbWVyZ2VkT3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uKHZhbGlkYXRlZCkgYXMgTWVzc2FnZVR5cGU7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1lc3NhZ2VBY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogTWVzc2FnZUFjdGlvbnNPcHRpb25zXG4pOiBNZXNzYWdlQWN0aW9ucyA9PiB7XG4gIGxldCBtZXNzYWdlQWRhcHRlck9wdGlvbnMgPSBvcHRpb25zPy5tZXNzYWdlQWRhcHRlck9wdGlvbnMgfHwge307XG4gIGxldCBjdXN0b21NZXNzYWdlQWRhcHRlciA9IG9wdGlvbnM/Lm1lc3NhZ2VBZGFwdGVyO1xuXG4gIGxldCB2YWxpZGF0ZU1lc3NhZ2UgPSBjcmVhdGVNZXNzYWdlVmFsaWRhdG9yKGN1c3RvbU1lc3NhZ2VBZGFwdGVyLCBtZXNzYWdlQWRhcHRlck9wdGlvbnMpO1xuXG4gIGNvbnN0IHVwZGF0ZU1lc3NhZ2VBZGFwdGVyID0gKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IE1lc3NhZ2VBZGFwdGVyT3B0aW9ucykgPT4gYW55KTogdm9pZCA9PiB7XG4gICAgY3VzdG9tTWVzc2FnZUFkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIHZhbGlkYXRlTWVzc2FnZSA9IGNyZWF0ZU1lc3NhZ2VWYWxpZGF0b3IoY3VzdG9tTWVzc2FnZUFkYXB0ZXIsIG1lc3NhZ2VBZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlTWVzc2FnZUFkYXB0ZXJPcHRpb25zID0gKG9wdGlvbnM6IE1lc3NhZ2VBZGFwdGVyT3B0aW9ucyk6IHZvaWQgPT4ge1xuICAgIG1lc3NhZ2VBZGFwdGVyT3B0aW9ucyA9IHsuLi5tZXNzYWdlQWRhcHRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHZhbGlkYXRlTWVzc2FnZSA9IGNyZWF0ZU1lc3NhZ2VWYWxpZGF0b3IoY3VzdG9tTWVzc2FnZUFkYXB0ZXIsIG1lc3NhZ2VBZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgY29uc3QgZ2V0QWN0aXZlUGVyc29uYUlkID0gKCk6IHN0cmluZyA9PiBwYXJzZUlkKFN0cmluZyhmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24ucGVyc29uYUlkJykgfHwgJycpKTtcbiAgY29uc3QgZ2V0QWN0aXZlVXNlcklkID0gKCk6IHN0cmluZyA9PiBwYXJzZUlkKFN0cmluZyhmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udXNlcklkJykgfHwgJycpKTtcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IGFzeW5jIChcbiAgICBtZXNzYWdlOiBQYXJ0aWFsPE1lc3NhZ2VUeXBlPixcbiAgICBtZXNzYWdlUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBuZXh0TWVzc2FnZSA9IHZhbGlkYXRlTWVzc2FnZShtZXNzYWdlLCBtZXNzYWdlQWRhcHRlck9wdGlvbnMpO1xuICAgICAgY29uc3QgcGVyc29uYUlkID0gcGFyc2VJZChTdHJpbmcobmV4dE1lc3NhZ2UucGVyc29uYUlkIHx8IGdldEFjdGl2ZVBlcnNvbmFJZCgpIHx8ICcnKSk7XG4gICAgICBjb25zdCB1c2VySWQgPSBwYXJzZUlkKFN0cmluZyhuZXh0TWVzc2FnZS51c2VySWQgfHwgZ2V0QWN0aXZlVXNlcklkKCkgfHwgJycpKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgdHlwZTogJ01lc3NhZ2VJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi5uZXh0TWVzc2FnZSxcbiAgICAgICAgICAgIC4uLihwZXJzb25hSWQgJiYge3BlcnNvbmFJZH0pLFxuICAgICAgICAgICAgLi4uKHVzZXJJZCAmJiB7dXNlcklkfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZGF0YSBhcyBNZXNzYWdlQXBpUmVzdWx0c1R5cGUpPy5tZXNzYWdlcz8uYWRkTWVzc2FnZSB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe21lc3NhZ2UsIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkFERF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxNZXNzYWdlQXBpUmVzdWx0c1R5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnYWRkTWVzc2FnZScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFsnYWRkZWQnLCAnY29udGVudCcsICdtb2RpZmllZCcsICdtZXNzYWdlSWQnLCAndXNlciB7IHVzZXJJZCwgcGVyc29uYUlkLCBuYW1lLCB1c2VybmFtZSwgdGh1bWJVcmwsIGltYWdlVXJsIH0nLCAuLi5tZXNzYWdlUHJvcHNdLFxuICAgICAgICB7fVxuICAgICAgKS50aGVuKChyZXN1bHQpID0+ICgocmVzdWx0IGFzIE1lc3NhZ2VBcGlSZXN1bHRzVHlwZSk/Lm1lc3NhZ2VzPy5hZGRNZXNzYWdlIHx8IHt9KSBhcyBNZXNzYWdlVHlwZSk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkFERF9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGBtZXNzYWdlLmdldE1lc3NhZ2VzOiR7U3RyaW5nKG1lc3NhZ2U/LmNvbnZlcnNhdGlvbklkIHx8ICcnKX1gKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnbWVzc2FnZS5nZXRDb252ZXJzYXRpb25zJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldERpcmVjdENvbnZlcnNhdGlvbiA9IGFzeW5jIChcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxDb252ZXJzYXRpb25UeXBlPihmbHV4LCBgbWVzc2FnZS5nZXREaXJlY3RDb252ZXJzYXRpb246JHt1c2VySWR9YCwge3VzZXJJZH0sIHJlcXVlc3RPcHRpb25zKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB1c2VySWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogdXNlcklkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IChkYXRhIGFzIE1lc3NhZ2VBcGlSZXN1bHRzVHlwZSk/Lm1lc3NhZ2VzPy5kaXJlY3RDb252ZXJzYXRpb24gfHwge307XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtjb252ZXJzYXRpb24sIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkdFVF9DT05WT19MSVNUX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PE1lc3NhZ2VBcGlSZXN1bHRzVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdkaXJlY3RDb252ZXJzYXRpb24nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbJ2FkZGVkJywgJ2NvbnZlcnNhdGlvbklkJywgJ21vZGlmaWVkJywgJ25hbWUnLCAndXNlcnMgeyB1c2VySWQsIHBlcnNvbmFJZCwgbmFtZSwgdXNlcm5hbWUsIHRodW1iVXJsLCBpbWFnZVVybCB9J10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBjb252ZXJzYXRpb24gPSAoXG4gICAgICAgIChyZXN1bHQgYXMgdW5rbm93biBhcyB7Y29udmVyc2F0aW9uPzogQ29udmVyc2F0aW9uVHlwZX0pPy5jb252ZXJzYXRpb25cbiAgICAgICAgfHwgcmVzdWx0Py5tZXNzYWdlcz8uZGlyZWN0Q29udmVyc2F0aW9uXG4gICAgICAgIHx8IHt9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgYG1lc3NhZ2UuZ2V0RGlyZWN0Q29udmVyc2F0aW9uOiR7dXNlcklkfWAsIHt1c2VySWR9LCBjb252ZXJzYXRpb24gYXMgQ29udmVyc2F0aW9uVHlwZSwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBNRVNTQUdFX0NPTlNUQU5UUy5HRVRfQ09OVk9fTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldE1lc3NhZ2VzID0gYXN5bmMgKFxuICAgIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsXG4gICAgbWVzc2FnZVByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8TWVzc2FnZVR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBnZXRDYWNoZWRSZXF1ZXN0PE1lc3NhZ2VUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICBgbWVzc2FnZS5nZXRNZXNzYWdlczoke2NvbnZlcnNhdGlvbklkfWAsXG4gICAgICAgIHtjb252ZXJzYXRpb25JZCwgbWVzc2FnZVByb3BzfSxcbiAgICAgICAgcmVxdWVzdE9wdGlvbnNcbiAgICAgICk7XG5cbiAgICAgIGlmKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgY29udmVyc2F0aW9uSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQnLFxuICAgICAgICAgIHZhbHVlOiBjb252ZXJzYXRpb25JZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IEFycmF5LmlzQXJyYXkoKGRhdGEgYXMgTWVzc2FnZUFwaVJlc3VsdHNUeXBlKT8ubWVzc2FnZXM/LmdldE1lc3NhZ2VzKVxuICAgICAgICAgID8gKGRhdGEgYXMgTWVzc2FnZUFwaVJlc3VsdHNUeXBlKS5tZXNzYWdlcz8uZ2V0TWVzc2FnZXMgfHwgW11cbiAgICAgICAgICA6IFtdO1xuXG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgICBsaXN0OiBtZXNzYWdlcyxcbiAgICAgICAgICB0eXBlOiBNRVNTQUdFX0NPTlNUQU5UUy5HRVRfTElTVF9TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8TWVzc2FnZUFwaVJlc3VsdHNUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2dldE1lc3NhZ2VzJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgWydhZGRlZCcsICdjb250ZW50JywgJ21vZGlmaWVkJywgJ21lc3NhZ2VJZCcsICd1c2VyIHsgdXNlcklkLCBwZXJzb25hSWQsIG5hbWUsIHVzZXJuYW1lLCB0aHVtYlVybCwgaW1hZ2VVcmwgfScsIC4uLm1lc3NhZ2VQcm9wc10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBtZXNzYWdlcyA9IHJlc3VsdD8ubWVzc2FnZXM/LmdldE1lc3NhZ2VzIHx8IFtdO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgYG1lc3NhZ2UuZ2V0TWVzc2FnZXM6JHtjb252ZXJzYXRpb25JZH1gLCB7Y29udmVyc2F0aW9uSWQsIG1lc3NhZ2VQcm9wc30sIG1lc3NhZ2VzIGFzIE1lc3NhZ2VUeXBlW10sIHJlcXVlc3RPcHRpb25zKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogTUVTU0FHRV9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRDb252ZXJzYXRpb25zID0gYXN5bmMgKFxuICAgIGZyb206IG51bWJlciA9IDAsXG4gICAgdG86IG51bWJlciA9IDEwLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8Q29udmVyc2F0aW9uVHlwZVtdPihmbHV4LCAnbWVzc2FnZS5nZXRDb252ZXJzYXRpb25zJywge2Zyb20sIHRvfSwgcmVxdWVzdE9wdGlvbnMpO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGZyb206IHtcbiAgICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgICB2YWx1ZTogZnJvbVxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiB0b1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb25zID0gQXJyYXkuaXNBcnJheSgoZGF0YSBhcyBNZXNzYWdlQXBpUmVzdWx0c1R5cGUpPy5tZXNzYWdlcz8uZ2V0Q29udmVyc2F0aW9ucylcbiAgICAgICAgICA/IChkYXRhIGFzIE1lc3NhZ2VBcGlSZXN1bHRzVHlwZSkubWVzc2FnZXM/LmdldENvbnZlcnNhdGlvbnMgfHwgW11cbiAgICAgICAgICA6IFtdO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7Y29udmVyc2F0aW9ucywgdHlwZTogTUVTU0FHRV9DT05TVEFOVFMuR0VUX0NPTlZPX0xJU1RfU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8TWVzc2FnZUFwaVJlc3VsdHNUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2dldENvbnZlcnNhdGlvbnMnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbJ2FkZGVkJywgJ2NvbnRlbnQnLCAnY29udmVyc2F0aW9uSWQnLCAnaXNEaXJlY3QnLCAnbW9kaWZpZWQnLCAnbmFtZScsICd1c2VycyB7IHVzZXJJZCwgcGVyc29uYUlkLCBuYW1lLCB1c2VybmFtZSwgdGh1bWJVcmwsIGltYWdlVXJsIH0nXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbnMgPSByZXN1bHQ/Lm1lc3NhZ2VzPy5nZXRDb252ZXJzYXRpb25zIHx8IFtdO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ21lc3NhZ2UuZ2V0Q29udmVyc2F0aW9ucycsIHtmcm9tLCB0b30sIGNvbnZlcnNhdGlvbnMgYXMgQ29udmVyc2F0aW9uVHlwZVtdLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkdFVF9DT05WT19MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzZW5kTWVzc2FnZSxcbiAgICBnZXREaXJlY3RDb252ZXJzYXRpb24sXG4gICAgZ2V0TWVzc2FnZXMsXG4gICAgZ2V0Q29udmVyc2F0aW9ucyxcbiAgICB1cGRhdGVNZXNzYWdlQWRhcHRlcixcbiAgICB1cGRhdGVNZXNzYWdlQWRhcHRlck9wdGlvbnNcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsicGFyc2VJZCIsInZhbGlkYXRlTWVzc2FnZUlucHV0IiwiTUVTU0FHRV9DT05TVEFOVFMiLCJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJEQVRBX1RZUEUiLCJkZWZhdWx0TWVzc2FnZVZhbGlkYXRvciIsImlucHV0Iiwib3B0aW9ucyIsImNyZWF0ZU1lc3NhZ2VWYWxpZGF0b3IiLCJjdXN0b21BZGFwdGVyIiwidmFsaWRhdG9yT3B0aW9ucyIsIm1lcmdlZE9wdGlvbnMiLCJ2YWxpZGF0ZWQiLCJjdXN0b21WYWxpZGF0aW9uIiwiY3JlYXRlTWVzc2FnZUFjdGlvbnMiLCJmbHV4IiwibWVzc2FnZUFkYXB0ZXJPcHRpb25zIiwiY3VzdG9tTWVzc2FnZUFkYXB0ZXIiLCJtZXNzYWdlQWRhcHRlciIsInZhbGlkYXRlTWVzc2FnZSIsInVwZGF0ZU1lc3NhZ2VBZGFwdGVyIiwiYWRhcHRlciIsInVwZGF0ZU1lc3NhZ2VBZGFwdGVyT3B0aW9ucyIsImdldEFjdGl2ZVBlcnNvbmFJZCIsIlN0cmluZyIsImdldFN0YXRlIiwiZ2V0QWN0aXZlVXNlcklkIiwic2VuZE1lc3NhZ2UiLCJtZXNzYWdlIiwibWVzc2FnZVByb3BzIiwicmVxdWVzdE9wdGlvbnMiLCJuZXh0TWVzc2FnZSIsInBlcnNvbmFJZCIsInVzZXJJZCIsInF1ZXJ5VmFyaWFibGVzIiwidHlwZSIsInZhbHVlIiwib25TdWNjZXNzIiwiZGF0YSIsIm1lc3NhZ2VzIiwiYWRkTWVzc2FnZSIsImRpc3BhdGNoIiwiQUREX0lURU1fU1VDQ0VTUyIsInRoZW4iLCJyZXN1bHQiLCJlcnJvciIsIkFERF9JVEVNX0VSUk9SIiwiY29udmVyc2F0aW9uSWQiLCJnZXREaXJlY3RDb252ZXJzYXRpb24iLCJjYWNoZWRSZXN1bHQiLCJjb252ZXJzYXRpb24iLCJkaXJlY3RDb252ZXJzYXRpb24iLCJHRVRfQ09OVk9fTElTVF9TVUNDRVNTIiwiR0VUX0NPTlZPX0xJU1RfRVJST1IiLCJnZXRNZXNzYWdlcyIsIkFycmF5IiwiaXNBcnJheSIsImxpc3QiLCJHRVRfTElTVF9TVUNDRVNTIiwiR0VUX0xJU1RfRVJST1IiLCJnZXRDb252ZXJzYXRpb25zIiwiZnJvbSIsInRvIiwiY29udmVyc2F0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBRUQsU0FBUUEsT0FBTyxRQUFPLGVBQWU7QUFDckMsU0FBUUMsb0JBQW9CLFFBQU8sa0RBQWtEO0FBQ3JGLFNBQVFDLGlCQUFpQixRQUFPLCtCQUErQjtBQUMvRCxTQUFRQyxXQUFXLEVBQUVDLFFBQVEsUUFBTyxxQkFBcUI7QUFDekQsU0FBUUMsa0JBQWtCLEVBQUVDLGdCQUFnQixFQUFFQyxnQkFBZ0IsUUFBTyw4QkFBOEI7QUFRbkcsTUFBTUMsWUFBWTtBQWtDbEIsTUFBTUMsMEJBQTBCLENBQUNDLE9BQWdCQyxVQUFvQ1YscUJBQXFCUztBQUUxRyxNQUFNRSx5QkFBeUIsQ0FDN0JDLGVBQ0FGLFVBQ0csQ0FBQ0QsT0FBZ0JJO1FBQ3BCLE1BQU1DLGdCQUFnQjtZQUFDLEdBQUdKLE9BQU87WUFBRSxHQUFHRyxnQkFBZ0I7UUFBQTtRQUV0RCxJQUFJRSxZQUFZUCx3QkFBd0JDLE9BQU9LO1FBRS9DLElBQUdGLGVBQWU7WUFDaEJHLFlBQVlILGNBQWNHLFdBQVdEO1FBQ3ZDO1FBRUEsSUFBR0EsZUFBZUUsa0JBQWtCO1lBQ2xDRCxZQUFZRCxjQUFjRSxnQkFBZ0IsQ0FBQ0Q7UUFDN0M7UUFFQSxPQUFPQTtJQUNUO0FBRUEsT0FBTyxNQUFNRSx1QkFBdUIsQ0FDbENDLE1BQ0FSO0lBRUEsSUFBSVMsd0JBQXdCVCxTQUFTUyx5QkFBeUIsQ0FBQztJQUMvRCxJQUFJQyx1QkFBdUJWLFNBQVNXO0lBRXBDLElBQUlDLGtCQUFrQlgsdUJBQXVCUyxzQkFBc0JEO0lBRW5FLE1BQU1JLHVCQUF1QixDQUFDQztRQUM1QkosdUJBQXVCSTtRQUN2QkYsa0JBQWtCWCx1QkFBdUJTLHNCQUFzQkQ7SUFD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
@@ -0,0 +1,34 @@
1
+ import type { BaseAdapterOptions } from '../../utils/validatorFactory.js';
2
+ import type { FluxFramework } from '@nlabs/arkhamjs';
3
+ import type { Permission } from '../../adapters/permissionAdapter/permissionAdapter.js';
4
+ import type { ActionRequestOptions } from '../../utils/requestCache.js';
5
+ export interface PermissionAdapterOptions extends BaseAdapterOptions {
6
+ }
7
+ export interface PermissionActionsOptions {
8
+ permissionAdapter?: (input: unknown, options?: PermissionAdapterOptions) => any;
9
+ permissionAdapterOptions?: PermissionAdapterOptions;
10
+ }
11
+ export type PermissionApiResultsType = {
12
+ permissions: {
13
+ add?: Permission;
14
+ check?: boolean;
15
+ itemById?: Permission;
16
+ list?: Permission[];
17
+ listByUser?: Permission[];
18
+ remove?: Permission;
19
+ update?: Permission;
20
+ };
21
+ };
22
+ export interface PermissionActions {
23
+ add: (permissionData: Partial<Permission>, permissionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<Permission>;
24
+ check: (userId: string, resource: string, requiredLevel: number, requestOptions?: ActionRequestOptions) => Promise<boolean>;
25
+ itemById: (permissionId: string, permissionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<Permission>;
26
+ list: (from?: number, to?: number, permissionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<Permission[]>;
27
+ listByUser: (userId: string, permissionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<Permission[]>;
28
+ remove: (permissionId: string, requestOptions?: ActionRequestOptions) => Promise<Permission>;
29
+ update: (permission: Partial<Permission>, permissionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<Permission>;
30
+ updatePermissionAdapter: (adapter: (input: unknown, options?: PermissionAdapterOptions) => any) => void;
31
+ updatePermissionAdapterOptions: (options: PermissionAdapterOptions) => void;
32
+ }
33
+ export declare const createPermissionActions: (flux: FluxFramework, options?: PermissionActionsOptions) => PermissionActions;
34
+ //# sourceMappingURL=permissionActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissionActions.d.ts","sourceRoot":"","sources":["../../../src/actions/permissionActions/permissionActions.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uDAAuD,CAAC;AACtF,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAItE,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;CAAG;AAEvE,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,wBAAwB,KAAK,GAAG,CAAC;IAChF,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE;QACX,GAAG,CAAC,EAAE,UAAU,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,UAAU,CAAC;QACtB,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;QACpB,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;QAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;QACpB,MAAM,CAAC,EAAE,UAAU,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACrI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5H,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3H,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/H,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzH,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7F,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACpI,uBAAuB,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,wBAAwB,KAAK,GAAG,KAAK,IAAI,CAAC;IACxG,8BAA8B,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,CAAC;CAC7E;AAKD,eAAO,MAAM,uBAAuB,GAClC,MAAM,aAAa,EACnB,UAAU,wBAAwB,KACjC,iBAiWF,CAAC"}