@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,21 @@
1
+ export * from './appActions/appActions.js';
2
+ export * from './connectionActions/connectionActions.js';
3
+ export * from './contentActions/contentActions.js';
4
+ export * from './conversationActions/conversationActions.js';
5
+ export * from './eventActions/eventActions.js';
6
+ export * from './groupActions/groupActions.js';
7
+ export * from './imageActions/imageActions.js';
8
+ export * from './locationActions/locationActions.js';
9
+ export * from './messageActions/messageActions.js';
10
+ export * from './permissionActions/permissionActions.js';
11
+ export * from './postActions/postActions.js';
12
+ export * from './personaActions/personaActions.js';
13
+ export * from './reactionActions/reactionActions.js';
14
+ export * from './sseActions/sseActions.js';
15
+ export * from './subscriptionActions/subscriptionActions.js';
16
+ export * from './tagActions/tagActions.js';
17
+ export * from './translationActions/translationActions.js';
18
+ export * from './userActions/userActions.js';
19
+ export * from './videoActions/videoActions.js';
20
+ export * from './websocketActions/websocketActions.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wCAAwC,CAAC"}
@@ -0,0 +1,22 @@
1
+ export * from './appActions/appActions.js';
2
+ export * from './connectionActions/connectionActions.js';
3
+ export * from './contentActions/contentActions.js';
4
+ export * from './conversationActions/conversationActions.js';
5
+ export * from './eventActions/eventActions.js';
6
+ export * from './groupActions/groupActions.js';
7
+ export * from './imageActions/imageActions.js';
8
+ export * from './locationActions/locationActions.js';
9
+ export * from './messageActions/messageActions.js';
10
+ export * from './permissionActions/permissionActions.js';
11
+ export * from './postActions/postActions.js';
12
+ export * from './personaActions/personaActions.js';
13
+ export * from './reactionActions/reactionActions.js';
14
+ export * from './sseActions/sseActions.js';
15
+ export * from './subscriptionActions/subscriptionActions.js';
16
+ export * from './tagActions/tagActions.js';
17
+ export * from './translationActions/translationActions.js';
18
+ export * from './userActions/userActions.js';
19
+ export * from './videoActions/videoActions.js';
20
+ export * from './websocketActions/websocketActions.js';
21
+
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwcEFjdGlvbnMvYXBwQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2Nvbm5lY3Rpb25BY3Rpb25zL2Nvbm5lY3Rpb25BY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudEFjdGlvbnMvY29udGVudEFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb252ZXJzYXRpb25BY3Rpb25zL2NvbnZlcnNhdGlvbkFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudEFjdGlvbnMvZXZlbnRBY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JvdXBBY3Rpb25zL2dyb3VwQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlQWN0aW9ucy9pbWFnZUFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhdGlvbkFjdGlvbnMvbG9jYXRpb25BY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZUFjdGlvbnMvbWVzc2FnZUFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9uQWN0aW9ucy9wZXJtaXNzaW9uQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Bvc3RBY3Rpb25zL3Bvc3RBY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGVyc29uYUFjdGlvbnMvcGVyc29uYUFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWFjdGlvbkFjdGlvbnMvcmVhY3Rpb25BY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vc3NlQWN0aW9ucy9zc2VBY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vc3Vic2NyaXB0aW9uQWN0aW9ucy9zdWJzY3JpcHRpb25BY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFnQWN0aW9ucy90YWdBY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRpb25BY3Rpb25zL3RyYW5zbGF0aW9uQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXJBY3Rpb25zL3VzZXJBY3Rpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlkZW9BY3Rpb25zL3ZpZGVvQWN0aW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3dlYnNvY2tldEFjdGlvbnMvd2Vic29ja2V0QWN0aW9ucy5qcyc7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkI7QUFDM0MsY0FBYywyQ0FBMkM7QUFDekQsY0FBYyxxQ0FBcUM7QUFDbkQsY0FBYywrQ0FBK0M7QUFDN0QsY0FBYyxpQ0FBaUM7QUFDL0MsY0FBYyxpQ0FBaUM7QUFDL0MsY0FBYyxpQ0FBaUM7QUFDL0MsY0FBYyx1Q0FBdUM7QUFDckQsY0FBYyxxQ0FBcUM7QUFDbkQsY0FBYywyQ0FBMkM7QUFDekQsY0FBYywrQkFBK0I7QUFDN0MsY0FBYyxxQ0FBcUM7QUFDbkQsY0FBYyx1Q0FBdUM7QUFDckQsY0FBYyw2QkFBNkI7QUFDM0MsY0FBYywrQ0FBK0M7QUFDN0QsY0FBYyw2QkFBNkI7QUFDM0MsY0FBYyw2Q0FBNkM7QUFDM0QsY0FBYywrQkFBK0I7QUFDN0MsY0FBYyxpQ0FBaUM7QUFDL0MsY0FBYyx5Q0FBeUMifQ==
@@ -0,0 +1,60 @@
1
+ import type { FluxFramework } from '@nlabs/arkhamjs';
2
+ import type { LocationType } from '../../adapters/locationAdapter/locationAdapter.js';
3
+ import type { ActionRequestOptions } from '../../utils/requestCache.js';
4
+ export interface LocationAdapterOptions {
5
+ strict?: boolean;
6
+ allowPartial?: boolean;
7
+ environment?: 'development' | 'production' | 'test';
8
+ customValidation?: (input: unknown) => unknown;
9
+ }
10
+ export interface LocationActionsOptions {
11
+ locationAdapter?: (input: unknown, options?: LocationAdapterOptions) => any;
12
+ locationAdapterOptions?: LocationAdapterOptions;
13
+ }
14
+ export type LocationApiResultsType = {
15
+ addLocation: LocationType;
16
+ deleteLocation: LocationType;
17
+ getLocation: LocationType;
18
+ getLocationsByItem: LocationType[];
19
+ updateLocation: LocationType;
20
+ };
21
+ export interface LocationActions {
22
+ autocompleteLocation: (address: string, latitude?: number, longitude?: number, locationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<LocationType[]>;
23
+ add: (location: Partial<LocationType>, locationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<LocationType>;
24
+ delete: (locationId: string, requestOptions?: ActionRequestOptions) => Promise<LocationType>;
25
+ getCurrentLocation: (setLocation?: (location: LocationType) => void, requestOptions?: ActionRequestOptions) => Promise<LocationType>;
26
+ getGoogleLocation: (address: string, requestOptions?: ActionRequestOptions) => Promise<{
27
+ latitude: number;
28
+ location: string;
29
+ longitude: number;
30
+ }>;
31
+ getLocation: (location: Partial<LocationType>, locationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<LocationType>;
32
+ listByItem: (itemId: string, locationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<LocationType[]>;
33
+ update: (location: Partial<LocationType>, locationProps?: string[], requestOptions?: ActionRequestOptions) => Promise<LocationType>;
34
+ updateLocationAdapter: (adapter: (input: unknown, options?: LocationAdapterOptions) => any) => void;
35
+ updateLocationAdapterOptions: (options: LocationAdapterOptions) => void;
36
+ }
37
+ /**
38
+ * Factory function to create LocationActions with enhanced adapter injection capabilities.
39
+ * Custom adapters are merged with default behavior, allowing partial overrides.
40
+ *
41
+ * @example
42
+ * // Basic usage with default adapters
43
+ * const locationActions = createLocationActions(flux);
44
+ *
45
+ * @example
46
+ * // Custom adapter that extends default behavior
47
+ * const customLocationAdapter = (input: unknown, options?: LocationAdapterOptions) => {
48
+ * // input is already validated by default adapter
49
+ * if (input.latitude && (input.latitude < -90 || input.latitude > 90)) {
50
+ * throw new Error('Invalid latitude');
51
+ * }
52
+ * return input;
53
+ * };
54
+ *
55
+ * const locationActions = createLocationActions(flux, {
56
+ * locationAdapter: customLocationAdapter
57
+ * });
58
+ */
59
+ export declare const createLocationActions: (flux: FluxFramework, options?: LocationActionsOptions) => LocationActions;
60
+ //# sourceMappingURL=locationActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locationActions.d.ts","sourceRoot":"","sources":["../../../src/actions/locationActions/locationActions.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AAEtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAIxE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC;IACpD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAChD;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,GAAG,CAAC;IAC5E,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,YAAY,CAAC;IAC1B,cAAc,EAAE,YAAY,CAAC;IAC7B,WAAW,EAAE,YAAY,CAAC;IAC1B,kBAAkB,EAAE,YAAY,EAAE,CAAC;IACnC,cAAc,EAAE,YAAY,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3K,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACjI,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7F,kBAAkB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrI,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAChJ,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACzI,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACzH,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpI,qBAAqB,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,GAAG,KAAK,IAAI,CAAC;IACpG,4BAA4B,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACzE;AA4BD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,aAAa,EACnB,UAAU,sBAAsB,KAC/B,eA4WF,CAAC"}
@@ -0,0 +1,388 @@
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 { validateLocationInput } from '../../adapters/locationAdapter/locationAdapter.js';
5
+ import { LOCATION_CONSTANTS } from '../../stores/locationStore.js';
6
+ import { appMutation } from '../../utils/api.js';
7
+ import { autoCompleteLocation } from '../../utils/location.js';
8
+ import { clearCachedRequest, getCachedRequest, setCachedRequest } from '../../utils/requestCache.js';
9
+ const DATA_TYPE = 'locations';
10
+ // Default validation function
11
+ const defaultLocationValidator = (input, options)=>validateLocationInput(input);
12
+ // Enhanced validation function that merges custom logic with defaults
13
+ const createLocationValidator = (customAdapter, options)=>(input, validatorOptions)=>{
14
+ const mergedOptions = {
15
+ ...options,
16
+ ...validatorOptions
17
+ };
18
+ // Start with default validation
19
+ let validated = defaultLocationValidator(input, mergedOptions);
20
+ // Apply custom validation if provided
21
+ if (customAdapter) {
22
+ validated = customAdapter(validated, mergedOptions);
23
+ }
24
+ // Apply custom validation from options if provided
25
+ if (mergedOptions?.customValidation) {
26
+ validated = mergedOptions.customValidation(validated);
27
+ }
28
+ return validated;
29
+ };
30
+ /**
31
+ * Factory function to create LocationActions with enhanced adapter injection capabilities.
32
+ * Custom adapters are merged with default behavior, allowing partial overrides.
33
+ *
34
+ * @example
35
+ * // Basic usage with default adapters
36
+ * const locationActions = createLocationActions(flux);
37
+ *
38
+ * @example
39
+ * // Custom adapter that extends default behavior
40
+ * const customLocationAdapter = (input: unknown, options?: LocationAdapterOptions) => {
41
+ * // input is already validated by default adapter
42
+ * if (input.latitude && (input.latitude < -90 || input.latitude > 90)) {
43
+ * throw new Error('Invalid latitude');
44
+ * }
45
+ * return input;
46
+ * };
47
+ *
48
+ * const locationActions = createLocationActions(flux, {
49
+ * locationAdapter: customLocationAdapter
50
+ * });
51
+ */ export const createLocationActions = (flux, options)=>{
52
+ // Initialize adapter state
53
+ let locationAdapterOptions = options?.locationAdapterOptions || {};
54
+ let customLocationAdapter = options?.locationAdapter;
55
+ // Create validators that merge custom adapters with defaults
56
+ let validateLocation = createLocationValidator(customLocationAdapter, locationAdapterOptions);
57
+ // Update functions that recreate validators
58
+ const updateLocationAdapter = (adapter)=>{
59
+ customLocationAdapter = adapter;
60
+ validateLocation = createLocationValidator(customLocationAdapter, locationAdapterOptions);
61
+ };
62
+ const updateLocationAdapterOptions = (options)=>{
63
+ locationAdapterOptions = {
64
+ ...locationAdapterOptions,
65
+ ...options
66
+ };
67
+ validateLocation = createLocationValidator(customLocationAdapter, locationAdapterOptions);
68
+ };
69
+ // Action implementations
70
+ const autocompleteLocation = async (address, latitude, longitude, locationProps = [], requestOptions = {})=>{
71
+ const cachedResult = getCachedRequest(flux, 'location.autocompleteLocation', {
72
+ address,
73
+ latitude,
74
+ locationProps,
75
+ longitude
76
+ }, requestOptions);
77
+ if (cachedResult) {
78
+ return cachedResult;
79
+ }
80
+ const result = await autoCompleteLocation(flux, address, latitude, longitude, locationProps);
81
+ return await setCachedRequest(flux, 'location.autocompleteLocation', {
82
+ address,
83
+ latitude,
84
+ locationProps,
85
+ longitude
86
+ }, result, requestOptions);
87
+ };
88
+ const add = async (location, locationProps = [], requestOptions = {})=>{
89
+ try {
90
+ const queryVariables = {
91
+ location: {
92
+ type: 'LocationInput!',
93
+ value: validateLocation(location, locationAdapterOptions)
94
+ }
95
+ };
96
+ const onSuccess = (data = {})=>{
97
+ const addLocation = data?.addLocation || {};
98
+ return flux.dispatch({
99
+ location: addLocation,
100
+ type: LOCATION_CONSTANTS.ADD_ITEM_SUCCESS
101
+ });
102
+ };
103
+ return await appMutation(flux, 'addLocation', DATA_TYPE, queryVariables, [
104
+ 'added',
105
+ 'address',
106
+ 'city',
107
+ 'country',
108
+ 'id',
109
+ 'latitude',
110
+ 'longitude',
111
+ 'modified',
112
+ 'state',
113
+ 'street',
114
+ 'zip',
115
+ ...locationProps
116
+ ], {
117
+ onSuccess
118
+ });
119
+ } catch (error) {
120
+ flux.dispatch({
121
+ error,
122
+ type: LOCATION_CONSTANTS.ADD_ITEM_ERROR
123
+ });
124
+ throw error;
125
+ } finally{
126
+ await clearCachedRequest(flux, 'location.autocompleteLocation');
127
+ }
128
+ };
129
+ const deleteLocation = async (locationId, requestOptions = {})=>{
130
+ try {
131
+ const queryVariables = {
132
+ locationId: {
133
+ type: 'ID!',
134
+ value: locationId
135
+ }
136
+ };
137
+ const onSuccess = (data = {})=>{
138
+ const location = data?.deleteLocation || {};
139
+ return flux.dispatch({
140
+ location,
141
+ type: LOCATION_CONSTANTS.REMOVE_ITEM_SUCCESS
142
+ });
143
+ };
144
+ return await appMutation(flux, 'deleteLocation', DATA_TYPE, queryVariables, [
145
+ 'id'
146
+ ], {
147
+ onSuccess
148
+ });
149
+ } catch (error) {
150
+ flux.dispatch({
151
+ error,
152
+ type: LOCATION_CONSTANTS.REMOVE_ITEM_ERROR
153
+ });
154
+ throw error;
155
+ } finally{
156
+ await clearCachedRequest(flux, `location.listByItem:${locationId}`);
157
+ }
158
+ };
159
+ const getCurrentLocation = async (setLocation, requestOptions = {})=>new Promise((resolve, reject)=>{
160
+ const { userId } = flux.getState('user.session', {});
161
+ const { city, country, latitude, longitude, state } = flux.getState([
162
+ 'user',
163
+ 'users',
164
+ userId || ''
165
+ ], {});
166
+ const locationStr = [
167
+ city,
168
+ state,
169
+ country
170
+ ].join(', ');
171
+ const personaLocation = {
172
+ latitude,
173
+ location: locationStr,
174
+ longitude
175
+ };
176
+ if (navigator.geolocation) {
177
+ navigator.geolocation.getCurrentPosition(async ({ coords })=>{
178
+ const current = {
179
+ latitude: coords.latitude,
180
+ location: 'Current Location',
181
+ longitude: coords.longitude
182
+ };
183
+ await flux.dispatch({
184
+ current,
185
+ type: LOCATION_CONSTANTS.SET_CURRENT
186
+ });
187
+ if (setLocation) {
188
+ setLocation(current);
189
+ }
190
+ resolve(current);
191
+ }, (locationError)=>{
192
+ console.log('getCurrentLocation::locationError', locationError);
193
+ console.log('getCurrentLocation::personaLocation1', personaLocation);
194
+ if (setLocation) {
195
+ setLocation(personaLocation);
196
+ }
197
+ flux.dispatch({
198
+ current: personaLocation,
199
+ type: LOCATION_CONSTANTS.SET_CURRENT
200
+ });
201
+ reject(locationError);
202
+ }, {
203
+ enableHighAccuracy: false,
204
+ maximumAge: 0,
205
+ timeout: 30000
206
+ });
207
+ } else {
208
+ console.log('getCurrentLocation::personaLocation2', personaLocation);
209
+ if (setLocation) {
210
+ setLocation(personaLocation);
211
+ }
212
+ flux.dispatch({
213
+ current: personaLocation,
214
+ type: LOCATION_CONSTANTS.SET_CURRENT
215
+ });
216
+ reject('Geolocation is not supported by this browser.');
217
+ }
218
+ });
219
+ const getGoogleLocation = async (address, requestOptions = {})=>{
220
+ const locations = await autocompleteLocation(address, undefined, undefined, [], requestOptions);
221
+ const [firstLocation = {}] = locations;
222
+ return {
223
+ latitude: firstLocation.latitude || 0,
224
+ location: firstLocation.location || '',
225
+ longitude: firstLocation.longitude || 0
226
+ };
227
+ };
228
+ const getLocation = async (location, locationProps = [], requestOptions = {})=>{
229
+ try {
230
+ const cachedResult = getCachedRequest(flux, 'location.getLocation', {
231
+ location,
232
+ locationProps
233
+ }, requestOptions);
234
+ if (cachedResult) {
235
+ return cachedResult;
236
+ }
237
+ const queryVariables = {
238
+ location: {
239
+ type: 'LocationInput!',
240
+ value: validateLocation(location, locationAdapterOptions)
241
+ }
242
+ };
243
+ const onSuccess = (data = {})=>{
244
+ const getLocation = data?.getLocation || {};
245
+ return flux.dispatch({
246
+ location: getLocation,
247
+ type: LOCATION_CONSTANTS.GET_ITEM_SUCCESS
248
+ });
249
+ };
250
+ const result = await appMutation(flux, 'getLocation', DATA_TYPE, queryVariables, [
251
+ 'added',
252
+ 'address',
253
+ 'city',
254
+ 'country',
255
+ 'id',
256
+ 'latitude',
257
+ 'longitude',
258
+ 'modified',
259
+ 'state',
260
+ 'street',
261
+ 'zip',
262
+ ...locationProps
263
+ ], {
264
+ onSuccess
265
+ });
266
+ return await setCachedRequest(flux, 'location.getLocation', {
267
+ location,
268
+ locationProps
269
+ }, result, requestOptions);
270
+ } catch (error) {
271
+ flux.dispatch({
272
+ error,
273
+ type: LOCATION_CONSTANTS.GET_ITEM_ERROR
274
+ });
275
+ throw error;
276
+ }
277
+ };
278
+ const listByItem = async (itemId, locationProps = [], requestOptions = {})=>{
279
+ try {
280
+ const cachedResult = getCachedRequest(flux, `location.listByItem:${itemId}`, {
281
+ itemId,
282
+ locationProps
283
+ }, requestOptions);
284
+ if (cachedResult) {
285
+ return cachedResult;
286
+ }
287
+ const queryVariables = {
288
+ itemId: {
289
+ type: 'ID!',
290
+ value: itemId
291
+ }
292
+ };
293
+ const onSuccess = (data = {})=>{
294
+ const locationsByItem = Array.isArray(data?.locationsByItem) ? data.locationsByItem || [] : [];
295
+ return flux.dispatch({
296
+ itemId,
297
+ list: locationsByItem,
298
+ type: LOCATION_CONSTANTS.GET_LIST_SUCCESS
299
+ });
300
+ };
301
+ const result = await appMutation(flux, 'locationsByItem', DATA_TYPE, queryVariables, [
302
+ 'added',
303
+ 'address',
304
+ 'city',
305
+ 'country',
306
+ 'id',
307
+ 'latitude',
308
+ 'longitude',
309
+ 'modified',
310
+ 'state',
311
+ 'street',
312
+ 'zip',
313
+ ...locationProps
314
+ ], {
315
+ onSuccess
316
+ });
317
+ return await setCachedRequest(flux, `location.listByItem:${itemId}`, {
318
+ itemId,
319
+ locationProps
320
+ }, result, requestOptions);
321
+ } catch (error) {
322
+ flux.dispatch({
323
+ error,
324
+ type: LOCATION_CONSTANTS.GET_LIST_ERROR
325
+ });
326
+ throw error;
327
+ }
328
+ };
329
+ const update = async (location, locationProps = [], requestOptions = {})=>{
330
+ try {
331
+ const queryVariables = {
332
+ location: {
333
+ type: 'LocationUpdateInput!',
334
+ value: validateLocation(location, locationAdapterOptions)
335
+ }
336
+ };
337
+ const onSuccess = (data = {})=>{
338
+ const updateLocation = data?.updateLocation || {};
339
+ return flux.dispatch({
340
+ location: updateLocation,
341
+ type: LOCATION_CONSTANTS.UPDATE_ITEM_SUCCESS
342
+ });
343
+ };
344
+ const result = await appMutation(flux, 'updateLocation', DATA_TYPE, queryVariables, [
345
+ 'added',
346
+ 'address',
347
+ 'city',
348
+ 'country',
349
+ 'id',
350
+ 'latitude',
351
+ 'longitude',
352
+ 'modified',
353
+ 'state',
354
+ 'street',
355
+ 'zip',
356
+ ...locationProps
357
+ ], {
358
+ onSuccess
359
+ });
360
+ return result;
361
+ } catch (error) {
362
+ flux.dispatch({
363
+ error,
364
+ type: LOCATION_CONSTANTS.UPDATE_ITEM_ERROR
365
+ });
366
+ throw error;
367
+ } finally{
368
+ await clearCachedRequest(flux, 'location.getLocation');
369
+ await clearCachedRequest(flux, 'location.autocompleteLocation');
370
+ await clearCachedRequest(flux, `location.listByItem:${String(location?.itemId || '')}`);
371
+ }
372
+ };
373
+ // Return the actions object
374
+ return {
375
+ autocompleteLocation,
376
+ add,
377
+ delete: deleteLocation,
378
+ getCurrentLocation,
379
+ getGoogleLocation,
380
+ getLocation,
381
+ listByItem,
382
+ update,
383
+ updateLocationAdapter,
384
+ updateLocationAdapterOptions
385
+ };
386
+ };
387
+
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9sb2NhdGlvbkFjdGlvbnMvbG9jYXRpb25BY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgeyB2YWxpZGF0ZUxvY2F0aW9uSW5wdXQgfSBmcm9tICcuLi8uLi9hZGFwdGVycy9sb2NhdGlvbkFkYXB0ZXIvbG9jYXRpb25BZGFwdGVyLmpzJztcbmltcG9ydCB7IExPQ0FUSU9OX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL3N0b3Jlcy9sb2NhdGlvblN0b3JlLmpzJztcbmltcG9ydCB7IGFwcE11dGF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLmpzJztcbmltcG9ydCB7IGF1dG9Db21wbGV0ZUxvY2F0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9jYXRpb24uanMnO1xuaW1wb3J0IHsgY2xlYXJDYWNoZWRSZXF1ZXN0LCBnZXRDYWNoZWRSZXF1ZXN0LCBzZXRDYWNoZWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdENhY2hlLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbHV4RnJhbWV3b3JrIH0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgTG9jYXRpb25UeXBlIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvbG9jYXRpb25BZGFwdGVyL2xvY2F0aW9uQWRhcHRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEFwaVJlc3VsdHNUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uUmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0Q2FjaGUuanMnO1xuXG5jb25zdCBEQVRBX1RZUEUgPSAnbG9jYXRpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zIHtcbiAgc3RyaWN0PzogYm9vbGVhbjtcbiAgYWxsb3dQYXJ0aWFsPzogYm9vbGVhbjtcbiAgZW52aXJvbm1lbnQ/OiAnZGV2ZWxvcG1lbnQnIHwgJ3Byb2R1Y3Rpb24nIHwgJ3Rlc3QnO1xuICBjdXN0b21WYWxpZGF0aW9uPzogKGlucHV0OiB1bmtub3duKSA9PiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQWN0aW9uc09wdGlvbnMge1xuICBsb2NhdGlvbkFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiBhbnk7XG4gIGxvY2F0aW9uQWRhcHRlck9wdGlvbnM/OiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zO1xufVxuXG5leHBvcnQgdHlwZSBMb2NhdGlvbkFwaVJlc3VsdHNUeXBlID0ge1xuICBhZGRMb2NhdGlvbjogTG9jYXRpb25UeXBlO1xuICBkZWxldGVMb2NhdGlvbjogTG9jYXRpb25UeXBlO1xuICBnZXRMb2NhdGlvbjogTG9jYXRpb25UeXBlO1xuICBnZXRMb2NhdGlvbnNCeUl0ZW06IExvY2F0aW9uVHlwZVtdO1xuICB1cGRhdGVMb2NhdGlvbjogTG9jYXRpb25UeXBlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkFjdGlvbnMge1xuICBhdXRvY29tcGxldGVMb2NhdGlvbjogKGFkZHJlc3M6IHN0cmluZywgbGF0aXR1ZGU/OiBudW1iZXIsIGxvbmdpdHVkZT86IG51bWJlciwgbG9jYXRpb25Qcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPExvY2F0aW9uVHlwZVtdPjtcbiAgYWRkOiAobG9jYXRpb246IFBhcnRpYWw8TG9jYXRpb25UeXBlPiwgbG9jYXRpb25Qcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPExvY2F0aW9uVHlwZT47XG4gIGRlbGV0ZTogKGxvY2F0aW9uSWQ6IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxMb2NhdGlvblR5cGU+O1xuICBnZXRDdXJyZW50TG9jYXRpb246IChzZXRMb2NhdGlvbj86IChsb2NhdGlvbjogTG9jYXRpb25UeXBlKSA9PiB2b2lkLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPExvY2F0aW9uVHlwZT47XG4gIGdldEdvb2dsZUxvY2F0aW9uOiAoYWRkcmVzczogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPHtsYXRpdHVkZTogbnVtYmVyOyBsb2NhdGlvbjogc3RyaW5nOyBsb25naXR1ZGU6IG51bWJlcn0+O1xuICBnZXRMb2NhdGlvbjogKGxvY2F0aW9uOiBQYXJ0aWFsPExvY2F0aW9uVHlwZT4sIGxvY2F0aW9uUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxMb2NhdGlvblR5cGU+O1xuICBsaXN0QnlJdGVtOiAoaXRlbUlkOiBzdHJpbmcsIGxvY2F0aW9uUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxMb2NhdGlvblR5cGVbXT47XG4gIHVwZGF0ZTogKGxvY2F0aW9uOiBQYXJ0aWFsPExvY2F0aW9uVHlwZT4sIGxvY2F0aW9uUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxMb2NhdGlvblR5cGU+O1xuICB1cGRhdGVMb2NhdGlvbkFkYXB0ZXI6IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiBhbnkpID0+IHZvaWQ7XG4gIHVwZGF0ZUxvY2F0aW9uQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiB2b2lkO1xufVxuXG4vLyBEZWZhdWx0IHZhbGlkYXRpb24gZnVuY3Rpb25cbmNvbnN0IGRlZmF1bHRMb2NhdGlvblZhbGlkYXRvciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IExvY2F0aW9uQWRhcHRlck9wdGlvbnMpID0+IHZhbGlkYXRlTG9jYXRpb25JbnB1dChpbnB1dCk7XG5cbi8vIEVuaGFuY2VkIHZhbGlkYXRpb24gZnVuY3Rpb24gdGhhdCBtZXJnZXMgY3VzdG9tIGxvZ2ljIHdpdGggZGVmYXVsdHNcbmNvbnN0IGNyZWF0ZUxvY2F0aW9uVmFsaWRhdG9yID0gKFxuICBjdXN0b21BZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogTG9jYXRpb25BZGFwdGVyT3B0aW9ucykgPT4gYW55LFxuICBvcHRpb25zPzogTG9jYXRpb25BZGFwdGVyT3B0aW9uc1xuKSA9PiAoaW5wdXQ6IHVua25vd24sIHZhbGlkYXRvck9wdGlvbnM/OiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiB7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7Li4ub3B0aW9ucywgLi4udmFsaWRhdG9yT3B0aW9uc307XG5cbiAgLy8gU3RhcnQgd2l0aCBkZWZhdWx0IHZhbGlkYXRpb25cbiAgbGV0IHZhbGlkYXRlZCA9IGRlZmF1bHRMb2NhdGlvblZhbGlkYXRvcihpbnB1dCwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgLy8gQXBwbHkgY3VzdG9tIHZhbGlkYXRpb24gaWYgcHJvdmlkZWRcbiAgaWYoY3VzdG9tQWRhcHRlcikge1xuICAgIHZhbGlkYXRlZCA9IGN1c3RvbUFkYXB0ZXIodmFsaWRhdGVkLCBtZXJnZWRPcHRpb25zKTtcbiAgfVxuXG4gIC8vIEFwcGx5IGN1c3RvbSB2YWxpZGF0aW9uIGZyb20gb3B0aW9ucyBpZiBwcm92aWRlZFxuICBpZihtZXJnZWRPcHRpb25zPy5jdXN0b21WYWxpZGF0aW9uKSB7XG4gICAgdmFsaWRhdGVkID0gbWVyZ2VkT3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uKHZhbGlkYXRlZCkgYXMgTG9jYXRpb25UeXBlO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlZDtcbn07XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgTG9jYXRpb25BY3Rpb25zIHdpdGggZW5oYW5jZWQgYWRhcHRlciBpbmplY3Rpb24gY2FwYWJpbGl0aWVzLlxuICogQ3VzdG9tIGFkYXB0ZXJzIGFyZSBtZXJnZWQgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLCBhbGxvd2luZyBwYXJ0aWFsIG92ZXJyaWRlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2Ugd2l0aCBkZWZhdWx0IGFkYXB0ZXJzXG4gKiBjb25zdCBsb2NhdGlvbkFjdGlvbnMgPSBjcmVhdGVMb2NhdGlvbkFjdGlvbnMoZmx1eCk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbSBhZGFwdGVyIHRoYXQgZXh0ZW5kcyBkZWZhdWx0IGJlaGF2aW9yXG4gKiBjb25zdCBjdXN0b21Mb2NhdGlvbkFkYXB0ZXIgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiB7XG4gKiAgIC8vIGlucHV0IGlzIGFscmVhZHkgdmFsaWRhdGVkIGJ5IGRlZmF1bHQgYWRhcHRlclxuICogICBpZiAoaW5wdXQubGF0aXR1ZGUgJiYgKGlucHV0LmxhdGl0dWRlIDwgLTkwIHx8IGlucHV0LmxhdGl0dWRlID4gOTApKSB7XG4gKiAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxhdGl0dWRlJyk7XG4gKiAgIH1cbiAqICAgcmV0dXJuIGlucHV0O1xuICogfTtcbiAqXG4gKiBjb25zdCBsb2NhdGlvbkFjdGlvbnMgPSBjcmVhdGVMb2NhdGlvbkFjdGlvbnMoZmx1eCwge1xuICogICBsb2NhdGlvbkFkYXB0ZXI6IGN1c3RvbUxvY2F0aW9uQWRhcHRlclxuICogfSk7XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVMb2NhdGlvbkFjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBMb2NhdGlvbkFjdGlvbnNPcHRpb25zXG4pOiBMb2NhdGlvbkFjdGlvbnMgPT4ge1xuICAvLyBJbml0aWFsaXplIGFkYXB0ZXIgc3RhdGVcbiAgbGV0IGxvY2F0aW9uQWRhcHRlck9wdGlvbnMgPSBvcHRpb25zPy5sb2NhdGlvbkFkYXB0ZXJPcHRpb25zIHx8IHt9O1xuICBsZXQgY3VzdG9tTG9jYXRpb25BZGFwdGVyID0gb3B0aW9ucz8ubG9jYXRpb25BZGFwdGVyO1xuXG4gIC8vIENyZWF0ZSB2YWxpZGF0b3JzIHRoYXQgbWVyZ2UgY3VzdG9tIGFkYXB0ZXJzIHdpdGggZGVmYXVsdHNcbiAgbGV0IHZhbGlkYXRlTG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvblZhbGlkYXRvcihjdXN0b21Mb2NhdGlvbkFkYXB0ZXIsIGxvY2F0aW9uQWRhcHRlck9wdGlvbnMpO1xuXG4gIC8vIFVwZGF0ZSBmdW5jdGlvbnMgdGhhdCByZWNyZWF0ZSB2YWxpZGF0b3JzXG4gIGNvbnN0IHVwZGF0ZUxvY2F0aW9uQWRhcHRlciA9IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiBhbnkpOiB2b2lkID0+IHtcbiAgICBjdXN0b21Mb2NhdGlvbkFkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIHZhbGlkYXRlTG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvblZhbGlkYXRvcihjdXN0b21Mb2NhdGlvbkFkYXB0ZXIsIGxvY2F0aW9uQWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUxvY2F0aW9uQWRhcHRlck9wdGlvbnMgPSAob3B0aW9uczogTG9jYXRpb25BZGFwdGVyT3B0aW9ucyk6IHZvaWQgPT4ge1xuICAgIGxvY2F0aW9uQWRhcHRlck9wdGlvbnMgPSB7Li4ubG9jYXRpb25BZGFwdGVyT3B0aW9ucywgLi4ub3B0aW9uc307XG4gICAgdmFsaWRhdGVMb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uVmFsaWRhdG9yKGN1c3RvbUxvY2F0aW9uQWRhcHRlciwgbG9jYXRpb25BZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gQWN0aW9uIGltcGxlbWVudGF0aW9uc1xuICBjb25zdCBhdXRvY29tcGxldGVMb2NhdGlvbiA9IGFzeW5jIChcbiAgICBhZGRyZXNzOiBzdHJpbmcsXG4gICAgbGF0aXR1ZGU/OiBudW1iZXIsXG4gICAgbG9uZ2l0dWRlPzogbnVtYmVyLFxuICAgIGxvY2F0aW9uUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxMb2NhdGlvblR5cGVbXT4gPT4ge1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8TG9jYXRpb25UeXBlW10+KFxuICAgICAgZmx1eCxcbiAgICAgICdsb2NhdGlvbi5hdXRvY29tcGxldGVMb2NhdGlvbicsXG4gICAgICB7YWRkcmVzcywgbGF0aXR1ZGUsIGxvY2F0aW9uUHJvcHMsIGxvbmdpdHVkZX0sXG4gICAgICByZXF1ZXN0T3B0aW9uc1xuICAgICk7XG5cbiAgICBpZihjYWNoZWRSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXV0b0NvbXBsZXRlTG9jYXRpb24oZmx1eCwgYWRkcmVzcywgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgbG9jYXRpb25Qcm9wcyk7XG4gICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ2xvY2F0aW9uLmF1dG9jb21wbGV0ZUxvY2F0aW9uJywge2FkZHJlc3MsIGxhdGl0dWRlLCBsb2NhdGlvblByb3BzLCBsb25naXR1ZGV9LCByZXN1bHQsIHJlcXVlc3RPcHRpb25zKTtcbiAgfTtcblxuICBjb25zdCBhZGQgPSBhc3luYyAoXG4gICAgbG9jYXRpb246IFBhcnRpYWw8TG9jYXRpb25UeXBlPixcbiAgICBsb2NhdGlvblByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8TG9jYXRpb25UeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgIHR5cGU6ICdMb2NhdGlvbklucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHZhbGlkYXRlTG9jYXRpb24obG9jYXRpb24sIGxvY2F0aW9uQWRhcHRlck9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZExvY2F0aW9uID0gZGF0YT8uYWRkTG9jYXRpb24gfHwge307XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtsb2NhdGlvbjogYWRkTG9jYXRpb24sIHR5cGU6IExPQ0FUSU9OX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gYXdhaXQgYXBwTXV0YXRpb248TG9jYXRpb25UeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2FkZExvY2F0aW9uJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW1xuICAgICAgICAgICdhZGRlZCcsXG4gICAgICAgICAgJ2FkZHJlc3MnLFxuICAgICAgICAgICdjaXR5JyxcbiAgICAgICAgICAnY291bnRyeScsXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAnbGF0aXR1ZGUnLFxuICAgICAgICAgICdsb25naXR1ZGUnLFxuICAgICAgICAgICdtb2RpZmllZCcsXG4gICAgICAgICAgJ3N0YXRlJyxcbiAgICAgICAgICAnc3RyZWV0JyxcbiAgICAgICAgICAnemlwJyxcbiAgICAgICAgICAuLi5sb2NhdGlvblByb3BzXG4gICAgICAgIF0sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ2xvY2F0aW9uLmF1dG9jb21wbGV0ZUxvY2F0aW9uJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZUxvY2F0aW9uID0gYXN5bmMgKGxvY2F0aW9uSWQ6IHN0cmluZywgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgbG9jYXRpb25JZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBsb2NhdGlvbklkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gZGF0YT8uZGVsZXRlTG9jYXRpb24gfHwge307XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtsb2NhdGlvbiwgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLlJFTU9WRV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxMb2NhdGlvblR5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZGVsZXRlTG9jYXRpb24nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbJ2lkJ10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuUkVNT1ZFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYGxvY2F0aW9uLmxpc3RCeUl0ZW06JHtsb2NhdGlvbklkfWApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRDdXJyZW50TG9jYXRpb24gPSBhc3luYyAoXG4gICAgc2V0TG9jYXRpb24/OiAobG9jYXRpb246IExvY2F0aW9uVHlwZSkgPT4gdm9pZCxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHt1c2VySWR9OiBVc2VyID0gZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uJywge30pO1xuICAgIGNvbnN0IHtjaXR5LCBjb3VudHJ5LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBzdGF0ZX06IFVzZXIgPSBmbHV4LmdldFN0YXRlKFsndXNlcicsICd1c2VycycsIHVzZXJJZCB8fCAnJ10sIHt9KTtcbiAgICBjb25zdCBsb2NhdGlvblN0ciA9IFtjaXR5LCBzdGF0ZSwgY291bnRyeV0uam9pbignLCAnKTtcbiAgICBjb25zdCBwZXJzb25hTG9jYXRpb24gPSB7XG4gICAgICBsYXRpdHVkZSxcbiAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblN0cixcbiAgICAgIGxvbmdpdHVkZVxuICAgIH0gYXMgTG9jYXRpb25UeXBlO1xuXG4gICAgaWYobmF2aWdhdG9yLmdlb2xvY2F0aW9uKSB7XG4gICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKFxuICAgICAgICBhc3luYyAoe2Nvb3Jkc30pID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50ID0ge1xuICAgICAgICAgICAgbGF0aXR1ZGU6IGNvb3Jkcy5sYXRpdHVkZSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiAnQ3VycmVudCBMb2NhdGlvbicsXG4gICAgICAgICAgICBsb25naXR1ZGU6IGNvb3Jkcy5sb25naXR1ZGVcbiAgICAgICAgICB9IGFzIExvY2F0aW9uVHlwZTtcbiAgICAgICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHtjdXJyZW50LCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuU0VUX0NVUlJFTlR9KTtcbiAgICAgICAgICBpZihzZXRMb2NhdGlvbikge1xuICAgICAgICAgICAgc2V0TG9jYXRpb24oY3VycmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc29sdmUoY3VycmVudCk7XG4gICAgICAgIH0sXG4gICAgICAgIChsb2NhdGlvbkVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2dldEN1cnJlbnRMb2NhdGlvbjo6bG9jYXRpb25FcnJvcicsIGxvY2F0aW9uRXJyb3IpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdnZXRDdXJyZW50TG9jYXRpb246OnBlcnNvbmFMb2NhdGlvbjEnLCBwZXJzb25hTG9jYXRpb24pO1xuICAgICAgICAgIGlmKHNldExvY2F0aW9uKSB7XG4gICAgICAgICAgICBzZXRMb2NhdGlvbihwZXJzb25hTG9jYXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZsdXguZGlzcGF0Y2goe2N1cnJlbnQ6IHBlcnNvbmFMb2NhdGlvbiwgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLlNFVF9DVVJSRU5UfSk7XG4gICAgICAgICAgcmVqZWN0KGxvY2F0aW9uRXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgICB7ZW5hYmxlSGlnaEFjY3VyYWN5OiBmYWxzZSwgbWF4aW11bUFnZTogMCwgdGltZW91dDogMzAwMDB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnZ2V0Q3VycmVudExvY2F0aW9uOjpwZXJzb25hTG9jYXRpb24yJywgcGVyc29uYUxvY2F0aW9uKTtcbiAgICAgIGlmKHNldExvY2F0aW9uKSB7XG4gICAgICAgIHNldExvY2F0aW9uKHBlcnNvbmFMb2NhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGZsdXguZGlzcGF0Y2goe2N1cnJlbnQ6IHBlcnNvbmFMb2NhdGlvbiwgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLlNFVF9DVVJSRU5UfSk7XG4gICAgICByZWplY3QoJ0dlb2xvY2F0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLicpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgZ2V0R29vZ2xlTG9jYXRpb24gPSBhc3luYyAoXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8e2xhdGl0dWRlOiBudW1iZXI7IGxvY2F0aW9uOiBzdHJpbmc7IGxvbmdpdHVkZTogbnVtYmVyfT4gPT4ge1xuICAgIGNvbnN0IGxvY2F0aW9ucyA9IGF3YWl0IGF1dG9jb21wbGV0ZUxvY2F0aW9uKGFkZHJlc3MsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBbXSwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIGNvbnN0IFtmaXJzdExvY2F0aW9uID0ge30gYXMgTG9jYXRpb25UeXBlXSA9IGxvY2F0aW9ucztcblxuICAgIHJldHVybiB7XG4gICAgICBsYXRpdHVkZTogZmlyc3RMb2NhdGlvbi5sYXRpdHVkZSB8fCAwLFxuICAgICAgbG9jYXRpb246IGZpcnN0TG9jYXRpb24ubG9jYXRpb24gfHwgJycsXG4gICAgICBsb25naXR1ZGU6IGZpcnN0TG9jYXRpb24ubG9uZ2l0dWRlIHx8IDBcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGdldExvY2F0aW9uID0gYXN5bmMgKFxuICAgIGxvY2F0aW9uOiBQYXJ0aWFsPExvY2F0aW9uVHlwZT4sXG4gICAgbG9jYXRpb25Qcm9wczogc3RyaW5nW10gPSBbXSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBnZXRDYWNoZWRSZXF1ZXN0PExvY2F0aW9uVHlwZT4oZmx1eCwgJ2xvY2F0aW9uLmdldExvY2F0aW9uJywge2xvY2F0aW9uLCBsb2NhdGlvblByb3BzfSwgcmVxdWVzdE9wdGlvbnMpO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgdHlwZTogJ0xvY2F0aW9uSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbiwgbG9jYXRpb25BZGFwdGVyT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pID0+IHtcbiAgICAgICAgY29uc3QgZ2V0TG9jYXRpb24gPSBkYXRhPy5nZXRMb2NhdGlvbiB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2xvY2F0aW9uOiBnZXRMb2NhdGlvbiwgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLkdFVF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcE11dGF0aW9uPExvY2F0aW9uVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRMb2NhdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnYWRkZWQnLFxuICAgICAgICAgICdhZGRyZXNzJyxcbiAgICAgICAgICAnY2l0eScsXG4gICAgICAgICAgJ2NvdW50cnknLFxuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ2xhdGl0dWRlJyxcbiAgICAgICAgICAnbG9uZ2l0dWRlJyxcbiAgICAgICAgICAnbW9kaWZpZWQnLFxuICAgICAgICAgICdzdGF0ZScsXG4gICAgICAgICAgJ3N0cmVldCcsXG4gICAgICAgICAgJ3ppcCcsXG4gICAgICAgICAgLi4ubG9jYXRpb25Qcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ2xvY2F0aW9uLmdldExvY2F0aW9uJywge2xvY2F0aW9uLCBsb2NhdGlvblByb3BzfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IExPQ0FUSU9OX0NPTlNUQU5UUy5HRVRfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeUl0ZW0gPSBhc3luYyAoXG4gICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgbG9jYXRpb25Qcm9wczogc3RyaW5nW10gPSBbXSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPExvY2F0aW9uVHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8TG9jYXRpb25UeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICBgbG9jYXRpb24ubGlzdEJ5SXRlbToke2l0ZW1JZH1gLFxuICAgICAgICB7aXRlbUlkLCBsb2NhdGlvblByb3BzfSxcbiAgICAgICAgcmVxdWVzdE9wdGlvbnNcbiAgICAgICk7XG5cbiAgICAgIGlmKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbUlkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1JZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhdGlvbnNCeUl0ZW0gPSBBcnJheS5pc0FycmF5KChkYXRhIGFzIHtsb2NhdGlvbnNCeUl0ZW0/OiBMb2NhdGlvblR5cGVbXX0pPy5sb2NhdGlvbnNCeUl0ZW0pXG4gICAgICAgICAgPyAoZGF0YSBhcyB7bG9jYXRpb25zQnlJdGVtPzogTG9jYXRpb25UeXBlW119KS5sb2NhdGlvbnNCeUl0ZW0gfHwgW11cbiAgICAgICAgICA6IFtdO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaXRlbUlkLFxuICAgICAgICAgIGxpc3Q6IGxvY2F0aW9uc0J5SXRlbSxcbiAgICAgICAgICB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcE11dGF0aW9uPExvY2F0aW9uVHlwZVtdPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2xvY2F0aW9uc0J5SXRlbScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnYWRkZWQnLFxuICAgICAgICAgICdhZGRyZXNzJyxcbiAgICAgICAgICAnY2l0eScsXG4gICAgICAgICAgJ2NvdW50cnknLFxuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ2xhdGl0dWRlJyxcbiAgICAgICAgICAnbG9uZ2l0dWRlJyxcbiAgICAgICAgICAnbW9kaWZpZWQnLFxuICAgICAgICAgICdzdGF0ZScsXG4gICAgICAgICAgJ3N0cmVldCcsXG4gICAgICAgICAgJ3ppcCcsXG4gICAgICAgICAgLi4ubG9jYXRpb25Qcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgYGxvY2F0aW9uLmxpc3RCeUl0ZW06JHtpdGVtSWR9YCwge2l0ZW1JZCwgbG9jYXRpb25Qcm9wc30sIHJlc3VsdCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB1cGRhdGUgPSBhc3luYyAoXG4gICAgbG9jYXRpb246IFBhcnRpYWw8TG9jYXRpb25UeXBlPixcbiAgICBsb2NhdGlvblByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8TG9jYXRpb25UeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgIHR5cGU6ICdMb2NhdGlvblVwZGF0ZUlucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHZhbGlkYXRlTG9jYXRpb24obG9jYXRpb24sIGxvY2F0aW9uQWRhcHRlck9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZUxvY2F0aW9uID0gZGF0YT8udXBkYXRlTG9jYXRpb24gfHwge307XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtsb2NhdGlvbjogdXBkYXRlTG9jYXRpb24sIHR5cGU6IExPQ0FUSU9OX0NPTlNUQU5UUy5VUERBVEVfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBNdXRhdGlvbjxMb2NhdGlvblR5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAndXBkYXRlTG9jYXRpb24nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2FkZGVkJyxcbiAgICAgICAgICAnYWRkcmVzcycsXG4gICAgICAgICAgJ2NpdHknLFxuICAgICAgICAgICdjb3VudHJ5JyxcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgICdsYXRpdHVkZScsXG4gICAgICAgICAgJ2xvbmdpdHVkZScsXG4gICAgICAgICAgJ21vZGlmaWVkJyxcbiAgICAgICAgICAnc3RhdGUnLFxuICAgICAgICAgICdzdHJlZXQnLFxuICAgICAgICAgICd6aXAnLFxuICAgICAgICAgIC4uLmxvY2F0aW9uUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IExPQ0FUSU9OX0NPTlNUQU5UUy5VUERBVEVfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnbG9jYXRpb24uZ2V0TG9jYXRpb24nKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAnbG9jYXRpb24uYXV0b2NvbXBsZXRlTG9jYXRpb24nKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgbG9jYXRpb24ubGlzdEJ5SXRlbToke1N0cmluZyhsb2NhdGlvbj8uaXRlbUlkIHx8ICcnKX1gKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBhY3Rpb25zIG9iamVjdFxuICByZXR1cm4ge1xuICAgIGF1dG9jb21wbGV0ZUxvY2F0aW9uLFxuICAgIGFkZCxcbiAgICBkZWxldGU6IGRlbGV0ZUxvY2F0aW9uLFxuICAgIGdldEN1cnJlbnRMb2NhdGlvbixcbiAgICBnZXRHb29nbGVMb2NhdGlvbixcbiAgICBnZXRMb2NhdGlvbixcbiAgICBsaXN0QnlJdGVtLFxuICAgIHVwZGF0ZSxcbiAgICB1cGRhdGVMb2NhdGlvbkFkYXB0ZXIsXG4gICAgdXBkYXRlTG9jYXRpb25BZGFwdGVyT3B0aW9uc1xuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZUxvY2F0aW9uSW5wdXQiLCJMT0NBVElPTl9DT05TVEFOVFMiLCJhcHBNdXRhdGlvbiIsImF1dG9Db21wbGV0ZUxvY2F0aW9uIiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJEQVRBX1RZUEUiLCJkZWZhdWx0TG9jYXRpb25WYWxpZGF0b3IiLCJpbnB1dCIsIm9wdGlvbnMiLCJjcmVhdGVMb2NhdGlvblZhbGlkYXRvciIsImN1c3RvbUFkYXB0ZXIiLCJ2YWxpZGF0b3JPcHRpb25zIiwibWVyZ2VkT3B0aW9ucyIsInZhbGlkYXRlZCIsImN1c3RvbVZhbGlkYXRpb24iLCJjcmVhdGVMb2NhdGlvbkFjdGlvbnMiLCJmbHV4IiwibG9jYXRpb25BZGFwdGVyT3B0aW9ucyIsImN1c3RvbUxvY2F0aW9uQWRhcHRlciIsImxvY2F0aW9uQWRhcHRlciIsInZhbGlkYXRlTG9jYXRpb24iLCJ1cGRhdGVMb2NhdGlvbkFkYXB0ZXIiLCJhZGFwdGVyIiwidXBkYXRlTG9jYXRpb25BZGFwdGVyT3B0aW9ucyIsImF1dG9jb21wbGV0ZUxvY2F0aW9uIiwiYWRkcmVzcyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibG9jYXRpb25Qcm9wcyIsInJlcXVlc3RPcHRpb25zIiwiY2FjaGVkUmVzdWx0IiwicmVzdWx0IiwiYWRkIiwibG9jYXRpb24iLCJxdWVyeVZhcmlhYmxlcyIsInR5cGUiLCJ2YWx1ZSIsIm9uU3VjY2VzcyIsImRhdGEiLCJhZGRMb2NhdGlvbiIsImRpc3BhdGNoIiwiQUREX0lURU1fU1VDQ0VTUyIsImVycm9yIiwiQUREX0lURU1fRVJST1IiLCJkZWxldGVMb2NhdGlvbiIsImxvY2F0aW9uSWQiLCJSRU1PVkVfSVRFTV9TVUNDRVNTIiwiUkVNT1ZFX0lURU1fRVJST1IiLCJnZXRDdXJyZW50TG9jYXRpb24iLCJzZXRMb2NhdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidXNlcklkIiwiZ2V0U3RhdGUiLCJjaXR5IiwiY291bnRyeSIsInN0YXRlIiwibG9jYXRpb25TdHIiLCJqb2luIiwicGVyc29uYUxvY2F0aW9uIiwibmF2aWdhdG9yIiwiZ2VvbG9jYXRpb24iLCJnZXRDdXJyZW50UG9zaXRpb24iLCJjb29yZHMiLCJjdXJyZW50IiwiU0VUX0NVUlJFTlQiLCJsb2NhdGlvbkVycm9yIiwiY29uc29sZSIsImxvZyIsImVuYWJsZUhpZ2hBY2N1cmFjeSIsIm1heGltdW1BZ2UiLCJ0aW1lb3V0IiwiZ2V0R29vZ2xlTG9jYXRpb24iLCJsb2NhdGlvbnMiLCJ1bmRlZmluZWQiLCJmaXJzdExvY2F0aW9uIiwiZ2V0TG9jYXRpb24iLCJHRVRfSVRFTV9TVUNDRVNTIiwiR0VUX0lURU1fRVJST1IiLCJsaXN0QnlJdGVtIiwiaXRlbUlkIiwibG9jYXRpb25zQnlJdGVtIiwiQXJyYXkiLCJpc0FycmF5IiwibGlzdCIsIkdFVF9MSVNUX1NVQ0NFU1MiLCJHRVRfTElTVF9FUlJPUiIsInVwZGF0ZSIsInVwZGF0ZUxvY2F0aW9uIiwiVVBEQVRFX0lURU1fU1VDQ0VTUyIsIlVQREFURV9JVEVNX0VSUk9SIiwiU3RyaW5nIiwiZGVsZXRlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFTQSxxQkFBcUIsUUFBUSxvREFBb0Q7QUFDMUYsU0FBU0Msa0JBQWtCLFFBQVEsZ0NBQWdDO0FBQ25FLFNBQVNDLFdBQVcsUUFBUSxxQkFBcUI7QUFDakQsU0FBU0Msb0JBQW9CLFFBQVEsMEJBQTBCO0FBQy9ELFNBQVNDLGtCQUFrQixFQUFFQyxnQkFBZ0IsRUFBRUMsZ0JBQWdCLFFBQVEsOEJBQThCO0FBUXJHLE1BQU1DLFlBQVk7QUFtQ2xCLDhCQUE4QjtBQUM5QixNQUFNQywyQkFBMkIsQ0FBQ0MsT0FBZ0JDLFVBQXFDVixzQkFBc0JTO0FBRTdHLHNFQUFzRTtBQUN0RSxNQUFNRSwwQkFBMEIsQ0FDOUJDLGVBQ0FGLFVBQ0csQ0FBQ0QsT0FBZ0JJO1FBQ3BCLE1BQU1DLGdCQUFnQjtZQUFDLEdBQUdKLE9BQU87WUFBRSxHQUFHRyxnQkFBZ0I7UUFBQTtRQUV0RCxnQ0FBZ0M7UUFDaEMsSUFBSUUsWUFBWVAseUJBQXlCQyxPQUFPSztRQUVoRCxzQ0FBc0M7UUFDdEMsSUFBR0YsZUFBZTtZQUNoQkcsWUFBWUgsY0FBY0csV0FBV0Q7UUFDdkM7UUFFQSxtREFBbUQ7UUFDbkQsSUFBR0EsZUFBZUUsa0JBQWtCO1lBQ2xDRCxZQUFZRCxjQUFjRSxnQkFBZ0IsQ0FBQ0Q7UUFDN0M7UUFFQSxPQUFPQTtJQUNUO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCQyxHQUNELE9B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
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ import type { FluxFramework } from '@nlabs/arkhamjs';
6
+ import type { ConversationType } from '../../adapters/conversationAdapter/conversationAdapter.js';
7
+ import type { MessageType } from '../../adapters/messageAdapter/messageAdapter.js';
8
+ import type { ActionRequestOptions } from '../../utils/requestCache.js';
9
+ export interface MessageAdapterOptions {
10
+ strict?: boolean;
11
+ allowPartial?: boolean;
12
+ environment?: 'development' | 'production' | 'test';
13
+ customValidation?: (input: unknown) => unknown;
14
+ }
15
+ export interface MessageActionsOptions {
16
+ messageAdapter?: (input: unknown, options?: MessageAdapterOptions) => any;
17
+ messageAdapterOptions?: MessageAdapterOptions;
18
+ }
19
+ export type MessageApiResultsType = {
20
+ messages?: {
21
+ addMessage?: MessageType;
22
+ conversations?: ConversationType[];
23
+ directConversation?: ConversationType;
24
+ getMessage?: MessageType;
25
+ getMessages?: MessageType[];
26
+ getConversations?: ConversationType[];
27
+ };
28
+ };
29
+ export interface MessageActions {
30
+ sendMessage: (message: Partial<MessageType>, messageProps?: string[], requestOptions?: ActionRequestOptions) => Promise<MessageType>;
31
+ getDirectConversation: (userId: string, requestOptions?: ActionRequestOptions) => Promise<ConversationType>;
32
+ getMessages: (conversationId: string, messageProps?: string[], requestOptions?: ActionRequestOptions) => Promise<MessageType[]>;
33
+ getConversations: (from?: number, to?: number, requestOptions?: ActionRequestOptions) => Promise<ConversationType[]>;
34
+ updateMessageAdapter: (adapter: (input: unknown, options?: MessageAdapterOptions) => any) => void;
35
+ updateMessageAdapterOptions: (options: MessageAdapterOptions) => void;
36
+ }
37
+ export declare const createMessageActions: (flux: FluxFramework, options?: MessageActionsOptions) => MessageActions;
38
+ //# sourceMappingURL=messageActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageActions.d.ts","sourceRoot":"","sources":["../../../src/actions/messageActions/messageActions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,2DAA2D,CAAC;AAChG,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iDAAiD,CAAC;AAEjF,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAItE,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC;IACpD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAChD;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,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;QACnC,kBAAkB,CAAC,EAAE,gBAAgB,CAAC;QACtC,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;QAC5B,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,CAAC;KACvC,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACrI,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5G,WAAW,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAChI,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrH,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;AAuBD,eAAO,MAAM,oBAAoB,GAC/B,MAAM,aAAa,EACnB,UAAU,qBAAqB,KAC9B,cAqNF,CAAC"}