@nlabs/metropolisjs 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/.github/copilot-instructions.md +167 -0
  2. package/AGENTS.md +13 -0
  3. package/CHANGELOG.md +112 -0
  4. package/GRAPHQL_VALIDATION_RESULTS.md +158 -0
  5. package/PERMISSION_GRAPHQL_INTEGRATION.md +293 -0
  6. package/PERMISSION_IMPLEMENTATION_SUMMARY.md +243 -0
  7. package/README.md +1123 -112
  8. package/SIGNIN_GRAPHQL_VALIDATION.md +125 -0
  9. package/VAULT_GRAPHQL_API_FINDINGS.md +312 -0
  10. package/docs/ACTIONS.md +63 -0
  11. package/docs/COLLECTIONS.md +1038 -0
  12. package/docs/CONNECTIONS.md +1367 -0
  13. package/docs/CRUD_INTEGRATION.md +702 -0
  14. package/examples/connections-usage.tsx +909 -0
  15. package/examples/content-actions-usage.ts +144 -0
  16. package/examples/crud-usage.tsx +847 -0
  17. package/examples/extensibility-usage.tsx +889 -0
  18. package/examples/i18n-import-examples.ts +86 -0
  19. package/examples/i18n-namespace-usage.ts +118 -0
  20. package/examples/i18next-singleton-demo.ts +187 -0
  21. package/examples/permission-system-usage.tsx +415 -0
  22. package/examples/project-details.tsx +397 -0
  23. package/examples/shared-i18n-usage.tsx +203 -0
  24. package/examples/signup-error-handling.ts +100 -0
  25. package/examples/translation-types.ts +86 -0
  26. package/examples/translation-usage.tsx +336 -0
  27. package/index.js +1 -0
  28. package/jest.config.mjs +28 -0
  29. package/lex.config.mjs +11 -2
  30. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts +22 -0
  31. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts.map +1 -0
  32. package/lib/__tests__/e2e/helpers/testGraphQLServer.js +197 -0
  33. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts +3 -0
  34. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts.map +1 -0
  35. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.js +52 -0
  36. package/lib/actions/appActions/appActions.d.ts +29 -0
  37. package/lib/actions/appActions/appActions.d.ts.map +1 -0
  38. package/lib/actions/appActions/appActions.js +159 -0
  39. package/lib/actions/connectionActions/connectionActions.d.ts +19 -0
  40. package/lib/actions/connectionActions/connectionActions.d.ts.map +1 -0
  41. package/lib/actions/connectionActions/connectionActions.js +131 -0
  42. package/lib/actions/contentActions/contentActions.d.ts +34 -0
  43. package/lib/actions/contentActions/contentActions.d.ts.map +1 -0
  44. package/lib/actions/contentActions/contentActions.js +314 -0
  45. package/lib/actions/conversationActions/conversationActions.d.ts +30 -0
  46. package/lib/actions/conversationActions/conversationActions.d.ts.map +1 -0
  47. package/lib/actions/conversationActions/conversationActions.js +225 -0
  48. package/lib/actions/eventActions/eventActions.d.ts +27 -7
  49. package/lib/actions/eventActions/eventActions.d.ts.map +1 -0
  50. package/lib/actions/eventActions/eventActions.js +436 -2
  51. package/lib/actions/groupActions/groupActions.d.ts +30 -0
  52. package/lib/actions/groupActions/groupActions.d.ts.map +1 -0
  53. package/lib/actions/groupActions/groupActions.js +229 -0
  54. package/lib/actions/imageActions/imageActions.d.ts +16 -10
  55. package/lib/actions/imageActions/imageActions.d.ts.map +1 -0
  56. package/lib/actions/imageActions/imageActions.js +593 -2
  57. package/lib/actions/index.d.ts +21 -9
  58. package/lib/actions/index.d.ts.map +1 -0
  59. package/lib/actions/index.js +22 -2
  60. package/lib/actions/locationActions/locationActions.d.ts +11 -9
  61. package/lib/actions/locationActions/locationActions.d.ts.map +1 -0
  62. package/lib/actions/locationActions/locationActions.js +388 -2
  63. package/lib/actions/messageActions/messageActions.d.ts +16 -32
  64. package/lib/actions/messageActions/messageActions.d.ts.map +1 -0
  65. package/lib/actions/messageActions/messageActions.js +235 -2
  66. package/lib/actions/permissionActions/permissionActions.d.ts +34 -0
  67. package/lib/actions/permissionActions/permissionActions.d.ts.map +1 -0
  68. package/lib/actions/permissionActions/permissionActions.js +330 -0
  69. package/lib/actions/personaActions/personaActions.d.ts +65 -0
  70. package/lib/actions/personaActions/personaActions.d.ts.map +1 -0
  71. package/lib/actions/personaActions/personaActions.js +572 -0
  72. package/lib/actions/postActions/postActions.d.ts +12 -32
  73. package/lib/actions/postActions/postActions.d.ts.map +1 -0
  74. package/lib/actions/postActions/postActions.js +447 -2
  75. package/lib/actions/reactionActions/reactionActions.d.ts +13 -27
  76. package/lib/actions/reactionActions/reactionActions.d.ts.map +1 -0
  77. package/lib/actions/reactionActions/reactionActions.js +413 -2
  78. package/lib/actions/sseActions/sseActions.d.ts +1 -0
  79. package/lib/actions/sseActions/sseActions.d.ts.map +1 -0
  80. package/lib/actions/sseActions/sseActions.js +148 -2
  81. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +24 -0
  82. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +1 -0
  83. package/lib/actions/subscriptionActions/subscriptionActions.js +329 -0
  84. package/lib/actions/tagActions/tagActions.d.ts +13 -31
  85. package/lib/actions/tagActions/tagActions.d.ts.map +1 -0
  86. package/lib/actions/tagActions/tagActions.js +347 -2
  87. package/lib/actions/translationActions/translationActions.d.ts +38 -0
  88. package/lib/actions/translationActions/translationActions.d.ts.map +1 -0
  89. package/lib/actions/translationActions/translationActions.js +189 -0
  90. package/lib/actions/userActions/userActions.d.ts +44 -95
  91. package/lib/actions/userActions/userActions.d.ts.map +1 -0
  92. package/lib/actions/userActions/userActions.js +870 -2
  93. package/lib/actions/videoActions/videoActions.d.ts +41 -0
  94. package/lib/actions/videoActions/videoActions.d.ts.map +1 -0
  95. package/lib/actions/videoActions/videoActions.js +532 -0
  96. package/lib/actions/websocketActions/websocketActions.d.ts +20 -21
  97. package/lib/actions/websocketActions/websocketActions.d.ts.map +1 -0
  98. package/lib/actions/websocketActions/websocketActions.js +377 -2
  99. package/lib/adapters/appAdapter/appAdapter.d.ts +8 -0
  100. package/lib/adapters/appAdapter/appAdapter.d.ts.map +1 -0
  101. package/lib/adapters/appAdapter/appAdapter.js +90 -0
  102. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +3 -2
  103. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +1 -0
  104. package/lib/adapters/arangoAdapter/arangoAdapter.js +75 -2
  105. package/lib/adapters/contentAdapter/contentAdapter.d.ts +3 -2
  106. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +1 -0
  107. package/lib/adapters/contentAdapter/contentAdapter.js +107 -2
  108. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +3 -2
  109. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +1 -0
  110. package/lib/adapters/conversationAdapter/conversationAdapter.js +75 -2
  111. package/lib/adapters/eventAdapter/eventAdapter.d.ts +5 -2
  112. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +1 -0
  113. package/lib/adapters/eventAdapter/eventAdapter.js +162 -2
  114. package/lib/adapters/fileAdapter/fileAdapter.d.ts +3 -2
  115. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +1 -0
  116. package/lib/adapters/fileAdapter/fileAdapter.js +118 -2
  117. package/lib/adapters/groupAdapter/groupAdapter.d.ts +28 -0
  118. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +1 -0
  119. package/lib/adapters/groupAdapter/groupAdapter.js +66 -0
  120. package/lib/adapters/imageAdapter/imageAdapter.d.ts +9 -2
  121. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +1 -0
  122. package/lib/adapters/imageAdapter/imageAdapter.js +134 -2
  123. package/lib/adapters/index.d.ts +34 -16
  124. package/lib/adapters/index.d.ts.map +1 -0
  125. package/lib/adapters/index.js +19 -2
  126. package/lib/adapters/locationAdapter/locationAdapter.d.ts +3 -2
  127. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +1 -0
  128. package/lib/adapters/locationAdapter/locationAdapter.js +95 -2
  129. package/lib/adapters/messageAdapter/messageAdapter.d.ts +23 -19
  130. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +1 -0
  131. package/lib/adapters/messageAdapter/messageAdapter.js +82 -2
  132. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +41 -0
  133. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +1 -0
  134. package/lib/adapters/permissionAdapter/permissionAdapter.js +120 -0
  135. package/lib/adapters/personaAdapter/personaAdapter.d.ts +28 -2
  136. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +1 -0
  137. package/lib/adapters/personaAdapter/personaAdapter.js +161 -2
  138. package/lib/adapters/postAdapter/postAdapter.d.ts +3 -2
  139. package/lib/adapters/postAdapter/postAdapter.d.ts.map +1 -0
  140. package/lib/adapters/postAdapter/postAdapter.js +115 -2
  141. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +5 -2
  142. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +1 -0
  143. package/lib/adapters/reactionAdapter/reactionAdapter.js +81 -2
  144. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +3 -2
  145. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +1 -0
  146. package/lib/adapters/reaktorAdapter/reaktorAdapter.js +58 -2
  147. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +3 -2
  148. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +1 -0
  149. package/lib/adapters/sessionAdapter/sessionAdapter.js +80 -2
  150. package/lib/adapters/tagAdapter/tagAdapter.d.ts +3 -2
  151. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +1 -0
  152. package/lib/adapters/tagAdapter/tagAdapter.js +98 -2
  153. package/lib/adapters/translationAdapter/translationAdapter.d.ts +21 -0
  154. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +1 -0
  155. package/lib/adapters/translationAdapter/translationAdapter.js +55 -0
  156. package/lib/adapters/userAdapter/userAdapter.d.ts +18 -6
  157. package/lib/adapters/userAdapter/userAdapter.d.ts.map +1 -0
  158. package/lib/adapters/userAdapter/userAdapter.js +302 -2
  159. package/lib/adapters/videoAdapter/videoAdapter.d.ts +8 -0
  160. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +1 -0
  161. package/lib/adapters/videoAdapter/videoAdapter.js +194 -0
  162. package/lib/config/index.d.ts +19 -6
  163. package/lib/config/index.d.ts.map +1 -0
  164. package/lib/config/index.js +97 -2
  165. package/lib/constants/Collections.d.ts +44 -0
  166. package/lib/constants/Collections.d.ts.map +1 -0
  167. package/lib/constants/Collections.js +40 -0
  168. package/lib/constants/MetropolisConstants.d.ts +1 -0
  169. package/lib/constants/MetropolisConstants.d.ts.map +1 -0
  170. package/lib/constants/MetropolisConstants.js +15 -2
  171. package/lib/graphql/message.d.ts +1 -0
  172. package/lib/graphql/message.d.ts.map +1 -0
  173. package/lib/graphql/message.js +6 -4
  174. package/lib/graphql/notification.d.ts +1 -0
  175. package/lib/graphql/notification.d.ts.map +1 -0
  176. package/lib/graphql/notification.js +6 -4
  177. package/lib/graphql/session.d.ts +1 -0
  178. package/lib/graphql/session.d.ts.map +1 -0
  179. package/lib/graphql/session.js +4 -3
  180. package/lib/index.d.ts +45 -22
  181. package/lib/index.d.ts.map +1 -0
  182. package/lib/index.js +248 -2
  183. package/lib/stores/appStore.d.ts +1 -0
  184. package/lib/stores/appStore.d.ts.map +1 -0
  185. package/lib/stores/appStore.js +23 -2
  186. package/lib/stores/contentStore.d.ts +36 -0
  187. package/lib/stores/contentStore.d.ts.map +1 -0
  188. package/lib/stores/contentStore.js +139 -0
  189. package/lib/stores/conversationStore.d.ts +38 -0
  190. package/lib/stores/conversationStore.d.ts.map +1 -0
  191. package/lib/stores/conversationStore.js +117 -0
  192. package/lib/stores/eventStore.d.ts +4 -1
  193. package/lib/stores/eventStore.d.ts.map +1 -0
  194. package/lib/stores/eventStore.js +47 -2
  195. package/lib/stores/groupStore.d.ts +37 -0
  196. package/lib/stores/groupStore.d.ts.map +1 -0
  197. package/lib/stores/groupStore.js +68 -0
  198. package/lib/stores/imageStore.d.ts +6 -1
  199. package/lib/stores/imageStore.d.ts.map +1 -0
  200. package/lib/stores/imageStore.js +53 -2
  201. package/lib/stores/index.d.ts +20 -11
  202. package/lib/stores/index.d.ts.map +1 -0
  203. package/lib/stores/index.js +24 -2
  204. package/lib/stores/locationStore.d.ts +2 -1
  205. package/lib/stores/locationStore.d.ts.map +1 -0
  206. package/lib/stores/locationStore.js +42 -2
  207. package/lib/stores/messageStore.d.ts +19 -4
  208. package/lib/stores/messageStore.d.ts.map +1 -0
  209. package/lib/stores/messageStore.js +137 -2
  210. package/lib/stores/notificationStore.d.ts +33 -0
  211. package/lib/stores/notificationStore.d.ts.map +1 -0
  212. package/lib/stores/notificationStore.js +55 -0
  213. package/lib/stores/permissionStore.d.ts +37 -0
  214. package/lib/stores/permissionStore.d.ts.map +1 -0
  215. package/lib/stores/permissionStore.js +117 -0
  216. package/lib/stores/personaStore.d.ts +26 -0
  217. package/lib/stores/personaStore.d.ts.map +1 -0
  218. package/lib/stores/personaStore.js +118 -0
  219. package/lib/stores/postStore.d.ts +2 -1
  220. package/lib/stores/postStore.d.ts.map +1 -0
  221. package/lib/stores/postStore.js +53 -2
  222. package/lib/stores/reactionStore.d.ts +1 -0
  223. package/lib/stores/reactionStore.d.ts.map +1 -0
  224. package/lib/stores/reactionStore.js +28 -2
  225. package/lib/stores/subscriptionStore.d.ts +41 -0
  226. package/lib/stores/subscriptionStore.d.ts.map +1 -0
  227. package/lib/stores/subscriptionStore.js +85 -0
  228. package/lib/stores/tagStore.d.ts +8 -5
  229. package/lib/stores/tagStore.d.ts.map +1 -0
  230. package/lib/stores/tagStore.js +87 -2
  231. package/lib/stores/translationStore.d.ts +42 -0
  232. package/lib/stores/translationStore.d.ts.map +1 -0
  233. package/lib/stores/translationStore.js +122 -0
  234. package/lib/stores/userStore.d.ts +5 -4
  235. package/lib/stores/userStore.d.ts.map +1 -0
  236. package/lib/stores/userStore.js +319 -2
  237. package/lib/stores/videoStore.d.ts +39 -0
  238. package/lib/stores/videoStore.d.ts.map +1 -0
  239. package/lib/stores/videoStore.js +132 -0
  240. package/lib/stores/websocketStore.d.ts +1 -0
  241. package/lib/stores/websocketStore.d.ts.map +1 -0
  242. package/lib/stores/websocketStore.js +51 -2
  243. package/lib/types/apps.types.d.ts +17 -0
  244. package/lib/types/apps.types.d.ts.map +1 -0
  245. package/lib/types/apps.types.js +6 -0
  246. package/lib/types/common.types.d.ts +31 -0
  247. package/lib/types/common.types.d.ts.map +1 -0
  248. package/lib/types/common.types.js +6 -0
  249. package/lib/types/conversations.types.d.ts +17 -0
  250. package/lib/types/conversations.types.d.ts.map +1 -0
  251. package/lib/types/conversations.types.js +6 -0
  252. package/lib/types/edges.types.d.ts +38 -0
  253. package/lib/types/edges.types.d.ts.map +1 -0
  254. package/lib/types/edges.types.js +6 -0
  255. package/lib/types/groups.types.d.ts +19 -0
  256. package/lib/types/groups.types.d.ts.map +1 -0
  257. package/lib/types/groups.types.js +6 -0
  258. package/lib/types/index.d.ts +12 -0
  259. package/lib/types/index.d.ts.map +1 -0
  260. package/lib/types/index.js +12 -0
  261. package/lib/types/subscriptions.types.d.ts +32 -0
  262. package/lib/types/subscriptions.types.d.ts.map +1 -0
  263. package/lib/types/subscriptions.types.js +6 -0
  264. package/lib/types/videos.types.d.ts +61 -0
  265. package/lib/types/videos.types.d.ts.map +1 -0
  266. package/lib/types/videos.types.js +6 -0
  267. package/lib/utils/MetropolisProvider.d.ts +39 -15
  268. package/lib/utils/MetropolisProvider.d.ts.map +1 -0
  269. package/lib/utils/MetropolisProvider.js +31 -2
  270. package/lib/utils/actionFactory.d.ts +21 -19
  271. package/lib/utils/actionFactory.d.ts.map +1 -0
  272. package/lib/utils/actionFactory.js +95 -2
  273. package/lib/utils/api.d.ts +5 -4
  274. package/lib/utils/api.d.ts.map +1 -0
  275. package/lib/utils/api.js +252 -6
  276. package/lib/utils/app.d.ts +1 -0
  277. package/lib/utils/app.d.ts.map +1 -0
  278. package/lib/utils/app.js +15 -2
  279. package/lib/utils/baseActionFactory.d.ts +5 -23
  280. package/lib/utils/baseActionFactory.d.ts.map +1 -0
  281. package/lib/utils/baseActionFactory.js +72 -2
  282. package/lib/utils/configUtils.d.ts +11 -0
  283. package/lib/utils/configUtils.d.ts.map +1 -0
  284. package/lib/utils/configUtils.js +20 -0
  285. package/lib/utils/dateUtils.d.ts +1 -0
  286. package/lib/utils/dateUtils.d.ts.map +1 -0
  287. package/lib/utils/dateUtils.js +11 -2
  288. package/lib/utils/file.d.ts +3 -1
  289. package/lib/utils/file.d.ts.map +1 -0
  290. package/lib/utils/file.js +156 -2
  291. package/lib/utils/i18n.d.ts +7 -0
  292. package/lib/utils/i18n.d.ts.map +1 -0
  293. package/lib/utils/i18n.js +96 -0
  294. package/lib/utils/index.d.ts +20 -0
  295. package/lib/utils/index.d.ts.map +1 -0
  296. package/lib/utils/index.js +26 -0
  297. package/lib/utils/location.d.ts +4 -3
  298. package/lib/utils/location.d.ts.map +1 -0
  299. package/lib/utils/location.js +82 -2
  300. package/lib/utils/permissionUtils.d.ts +22 -0
  301. package/lib/utils/permissionUtils.d.ts.map +1 -0
  302. package/lib/utils/permissionUtils.js +72 -0
  303. package/lib/utils/requestCache.d.ts +8 -0
  304. package/lib/utils/requestCache.d.ts.map +1 -0
  305. package/lib/utils/requestCache.js +53 -0
  306. package/lib/utils/session.d.ts +14 -0
  307. package/lib/utils/session.d.ts.map +1 -0
  308. package/lib/utils/session.js +107 -0
  309. package/lib/utils/useConversationTyping.d.ts +26 -0
  310. package/lib/utils/useConversationTyping.d.ts.map +1 -0
  311. package/lib/utils/useConversationTyping.js +117 -0
  312. package/lib/utils/useMetropolis.d.ts +67 -12
  313. package/lib/utils/useMetropolis.d.ts.map +1 -0
  314. package/lib/utils/useMetropolis.js +311 -2
  315. package/lib/utils/useTranslations.d.ts +16 -0
  316. package/lib/utils/useTranslations.d.ts.map +1 -0
  317. package/lib/utils/useTranslations.js +105 -0
  318. package/lib/utils/validatorFactory.d.ts +3 -2
  319. package/lib/utils/validatorFactory.d.ts.map +1 -0
  320. package/lib/utils/validatorFactory.js +95 -2
  321. package/package.json +58 -17
  322. package/temp_signin.ts +73 -0
  323. package/lib/actions/profileActions/profileActions.d.ts +0 -50
  324. package/lib/actions/profileActions/profileActions.js +0 -2
  325. package/lib/adapters/profileAdapter/profileAdapter.d.ts +0 -32
  326. package/lib/adapters/profileAdapter/profileAdapter.js +0 -2
  327. package/lib/stores/profileStore.d.ts +0 -24
  328. package/lib/stores/profileStore.js +0 -2
  329. /package/{FACTORY_PATTERN_GUIDE.md → factoryPatternGuide.md} +0 -0
@@ -1,2 +1,148 @@
1
- const w=(s,i)=>{let t=null,d=0,E=null,r=new Map;const a={url:"",withCredentials:!1,retryInterval:5e3,maxRetries:5,timeout:3e4,...i?.sseOptions},y=e=>{const n={id:e.lastEventId,event:e.type,data:e.data};i?.onMessage?.(n);const o=r.get(e.type);o&&o.forEach(m=>m(n)),s.dispatch({type:"SSE_MESSAGE_RECEIVED",event:n})},S=e=>{i?.onError?.(e),s.dispatch({type:"SSE_CONNECTION_ERROR",error:e}),t&&d<(a.maxRetries||5)&&(d++,setTimeout(()=>v(),a.retryInterval))},u=e=>{d=0,i?.onOpen?.(e),s.dispatch({type:"SSE_CONNECTION_OPEN",event:e})},c=async e=>{const n={...a,...e};if(!n.url)throw new Error("SSE URL is required");l();try{t=new EventSource(n.url,{withCredentials:n.withCredentials}),t.onmessage=y,t.onerror=S,t.onopen=u,n.timeout&&setTimeout(()=>{t&&t.readyState===EventSource.CONNECTING&&(t.close(),S(new Event("timeout")))},n.timeout)}catch(o){throw S(o),o}},l=()=>{t&&(t.close(),t=null),E&&(clearTimeout(E),E=null)},v=async()=>{l(),await c()},p=()=>t?.readyState===EventSource.OPEN;return{connect:c,disconnect:l,reconnect:v,isConnected:p,sendMessage:(e,n)=>{if(!p())throw new Error("SSE connection not established");s.dispatch({type:"SSE_MESSAGE_SENT",data:e,eventType:n})},addEventListener:(e,n)=>{r.has(e)||r.set(e,new Set),r.get(e).add(n)},removeEventListener:(e,n)=>{const o=r.get(e);o&&o.delete(n)},updateSSEOptions:e=>{Object.assign(a,e.sseOptions)}}};export{w as createSSEActions};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvc3NlQWN0aW9ucy9zc2VBY3Rpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTU0VFdmVudCB7XG4gIHJlYWRvbmx5IGRhdGE6IHN0cmluZztcbiAgcmVhZG9ubHkgZXZlbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSByZXRyeT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTU0VDb25uZWN0aW9uT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkb25seSBtYXhSZXRyaWVzPzogbnVtYmVyO1xuICByZWFkb25seSByZXRyeUludGVydmFsPzogbnVtYmVyO1xuICByZWFkb25seSB0aW1lb3V0PzogbnVtYmVyO1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgcmVhZG9ubHkgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTU0VBY3Rpb25zT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG9uQ2xvc2U/OiAoZXZlbnQ6IENsb3NlRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uRXJyb3I/OiAoZXJyb3I6IEV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBvbk1lc3NhZ2U/OiAoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBvbk9wZW4/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBzc2VPcHRpb25zPzogU1NFQ29ubmVjdGlvbk9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFQWN0aW9ucyB7XG4gIHJlYWRvbmx5IGNvbm5lY3Q6IChvcHRpb25zPzogU1NFQ29ubmVjdGlvbk9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWRvbmx5IGRpc2Nvbm5lY3Q6ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHJlY29ubmVjdDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVhZG9ubHkgaXNDb25uZWN0ZWQ6ICgpID0+IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNlbmRNZXNzYWdlOiAoZGF0YTogc3RyaW5nLCBldmVudFR5cGU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGFkZEV2ZW50TGlzdGVuZXI6IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50VHlwZTogc3RyaW5nLCBoYW5kbGVyOiAoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkKSA9PiB2b2lkO1xuICByZWFkb25seSB1cGRhdGVTU0VPcHRpb25zOiAob3B0aW9uczogU1NFQWN0aW9uc09wdGlvbnMpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTU0VBY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogU1NFQWN0aW9uc09wdGlvbnNcbik6IFNTRUFjdGlvbnMgPT4ge1xuICBsZXQgZXZlbnRTb3VyY2U6IEV2ZW50U291cmNlIHwgbnVsbCA9IG51bGw7XG4gIGxldCByZXRyeUNvdW50ID0gMDtcbiAgbGV0IHJldHJ5VGltZW91dDogTm9kZUpTLlRpbWVvdXQgfCBudWxsID0gbnVsbDtcbiAgbGV0IGV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgU2V0PChldmVudDogU1NFRXZlbnQpID0+IHZvaWQ+PigpO1xuXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBTU0VDb25uZWN0aW9uT3B0aW9ucyA9IHtcbiAgICB1cmw6ICcnLFxuICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgcmV0cnlJbnRlcnZhbDogNTAwMCxcbiAgICBtYXhSZXRyaWVzOiA1LFxuICAgIHRpbWVvdXQ6IDMwMDAwLFxuICAgIC4uLm9wdGlvbnM/LnNzZU9wdGlvbnNcbiAgfTtcblxuICBjb25zdCBoYW5kbGVNZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICBjb25zdCBzc2VFdmVudDogU1NFRXZlbnQgPSB7XG4gICAgICBpZDogZXZlbnQubGFzdEV2ZW50SWQsXG4gICAgICBldmVudDogZXZlbnQudHlwZSxcbiAgICAgIGRhdGE6IGV2ZW50LmRhdGFcbiAgICB9O1xuXG4gICAgLy8gQ2FsbCBnbG9iYWwgbWVzc2FnZSBoYW5kbGVyXG4gICAgb3B0aW9ucz8ub25NZXNzYWdlPy4oc3NlRXZlbnQpO1xuXG4gICAgLy8gQ2FsbCBzcGVjaWZpYyBldmVudCBoYW5kbGVyc1xuICAgIGNvbnN0IGhhbmRsZXJzID0gZXZlbnRIYW5kbGVycy5nZXQoZXZlbnQudHlwZSk7XG4gICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICBoYW5kbGVycy5mb3JFYWNoKGhhbmRsZXIgPT4gaGFuZGxlcihzc2VFdmVudCkpO1xuICAgIH1cblxuICAgIC8vIERpc3BhdGNoIHRvIGZsdXggc3RvcmVcbiAgICBmbHV4LmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6ICdTU0VfTUVTU0FHRV9SRUNFSVZFRCcsXG4gICAgICBldmVudDogc3NlRXZlbnRcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFcnJvciA9IChlcnJvcjogRXZlbnQpID0+IHtcbiAgICBvcHRpb25zPy5vbkVycm9yPy4oZXJyb3IpO1xuXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX0NPTk5FQ1RJT05fRVJST1InLFxuICAgICAgZXJyb3JcbiAgICB9KTtcblxuICAgIC8vIEF1dG8tcmVjb25uZWN0IGlmIG5vdCBtYW51YWxseSBkaXNjb25uZWN0ZWRcbiAgICBpZiAoZXZlbnRTb3VyY2UgJiYgcmV0cnlDb3VudCA8IChkZWZhdWx0T3B0aW9ucy5tYXhSZXRyaWVzIHx8IDUpKSB7XG4gICAgICByZXRyeUNvdW50Kys7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHJlY29ubmVjdCgpLCBkZWZhdWx0T3B0aW9ucy5yZXRyeUludGVydmFsKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlbiA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICByZXRyeUNvdW50ID0gMDtcbiAgICBvcHRpb25zPy5vbk9wZW4/LihldmVudCk7XG5cbiAgICBmbHV4LmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6ICdTU0VfQ09OTkVDVElPTl9PUEVOJyxcbiAgICAgIGV2ZW50XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gY29uc3QgaGFuZGxlQ2xvc2UgPSAoZXZlbnQ6IENsb3NlRXZlbnQpID0+IHtcbiAgLy8gICBvcHRpb25zPy5vbkNsb3NlPy4oZXZlbnQpO1xuXG4gIC8vICAgZmx1eC5kaXNwYXRjaCh7XG4gIC8vICAgICB0eXBlOiAnU1NFX0NPTk5FQ1RJT05fQ0xPU0VEJyxcbiAgLy8gICAgIGV2ZW50XG4gIC8vICAgfSk7XG4gIC8vIH07XG5cbiAgY29uc3QgY29ubmVjdCA9IGFzeW5jIChjb25uZWN0aW9uT3B0aW9ucz86IFNTRUNvbm5lY3Rpb25PcHRpb25zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qgb3B0cyA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLmNvbm5lY3Rpb25PcHRpb25zIH07XG5cbiAgICBpZiAoIW9wdHMudXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NTRSBVUkwgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBkaXNjb25uZWN0KCk7XG5cbiAgICB0cnkge1xuICAgICAgZXZlbnRTb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2Uob3B0cy51cmwsIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBvcHRzLndpdGhDcmVkZW50aWFsc1xuICAgICAgfSk7XG5cbiAgICAgIGV2ZW50U291cmNlLm9ubWVzc2FnZSA9IGhhbmRsZU1lc3NhZ2U7XG4gICAgICBldmVudFNvdXJjZS5vbmVycm9yID0gaGFuZGxlRXJyb3I7XG4gICAgICBldmVudFNvdXJjZS5vbm9wZW4gPSBoYW5kbGVPcGVuO1xuXG4gICAgICAvLyBTZXQgdGltZW91dFxuICAgICAgaWYgKG9wdHMudGltZW91dCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnRTb3VyY2UgJiYgZXZlbnRTb3VyY2UucmVhZHlTdGF0ZSA9PT0gRXZlbnRTb3VyY2UuQ09OTkVDVElORykge1xuICAgICAgICAgICAgZXZlbnRTb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgICAgIGhhbmRsZUVycm9yKG5ldyBFdmVudCgndGltZW91dCcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG9wdHMudGltZW91dCk7XG4gICAgICB9XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlRXJyb3IoZXJyb3IgYXMgRXZlbnQpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRpc2Nvbm5lY3QgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKGV2ZW50U291cmNlKSB7XG4gICAgICBldmVudFNvdXJjZS5jbG9zZSgpO1xuICAgICAgZXZlbnRTb3VyY2UgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChyZXRyeVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dChyZXRyeVRpbWVvdXQpO1xuICAgICAgcmV0cnlUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVjb25uZWN0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGRpc2Nvbm5lY3QoKTtcbiAgICBhd2FpdCBjb25uZWN0KCk7XG4gIH07XG5cbiAgY29uc3QgaXNDb25uZWN0ZWQgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIGV2ZW50U291cmNlPy5yZWFkeVN0YXRlID09PSBFdmVudFNvdXJjZS5PUEVOO1xuICB9O1xuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gKGRhdGE6IHN0cmluZywgZXZlbnRUeXBlPzogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgaWYgKCFpc0Nvbm5lY3RlZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NTRSBjb25uZWN0aW9uIG5vdCBlc3RhYmxpc2hlZCcpO1xuICAgIH1cblxuICAgIC8vIE5vdGU6IFNTRSBpcyBvbmUtd2F5LCBidXQgd2UgY2FuIGRpc3BhdGNoIHRvIGZsdXggZm9yIGxvZ2dpbmdcbiAgICBmbHV4LmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6ICdTU0VfTUVTU0FHRV9TRU5UJyxcbiAgICAgIGRhdGEsXG4gICAgICBldmVudFR5cGVcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBhZGRFdmVudExpc3RlbmVyID0gKGV2ZW50VHlwZTogc3RyaW5nLCBoYW5kbGVyOiAoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkKTogdm9pZCA9PiB7XG4gICAgaWYgKCFldmVudEhhbmRsZXJzLmhhcyhldmVudFR5cGUpKSB7XG4gICAgICBldmVudEhhbmRsZXJzLnNldChldmVudFR5cGUsIG5ldyBTZXQoKSk7XG4gICAgfVxuICAgIGV2ZW50SGFuZGxlcnMuZ2V0KGV2ZW50VHlwZSkhLmFkZChoYW5kbGVyKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVFdmVudExpc3RlbmVyID0gKGV2ZW50VHlwZTogc3RyaW5nLCBoYW5kbGVyOiAoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkKTogdm9pZCA9PiB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSBldmVudEhhbmRsZXJzLmdldChldmVudFR5cGUpO1xuICAgIGlmIChoYW5kbGVycykge1xuICAgICAgaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB1cGRhdGVTU0VPcHRpb25zID0gKG5ld09wdGlvbnM6IFNTRUFjdGlvbnNPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgT2JqZWN0LmFzc2lnbihkZWZhdWx0T3B0aW9ucywgbmV3T3B0aW9ucy5zc2VPcHRpb25zKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNvbm5lY3QsXG4gICAgZGlzY29ubmVjdCxcbiAgICByZWNvbm5lY3QsXG4gICAgaXNDb25uZWN0ZWQsXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgYWRkRXZlbnRMaXN0ZW5lcixcbiAgICByZW1vdmVFdmVudExpc3RlbmVyLFxuICAgIHVwZGF0ZVNTRU9wdGlvbnNcbiAgfTtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBMENPLE1BQU1BLEVBQW1CLENBQzlCQyxFQUNBQyxJQUNlLENBQ2YsSUFBSUMsRUFBa0MsS0FDbENDLEVBQWEsRUFDYkMsRUFBc0MsS0FDdENDLEVBQWdCLElBQUksSUFFeEIsTUFBTUMsRUFBdUMsQ0FDM0MsSUFBSyxHQUNMLGdCQUFpQixHQUNqQixjQUFlLElBQ2YsV0FBWSxFQUNaLFFBQVMsSUFDVCxHQUFHTCxHQUFTLFVBQ2QsRUFFTU0sRUFBaUJDLEdBQXdCLENBQzdDLE1BQU1DLEVBQXFCLENBQ3pCLEdBQUlELEVBQU0sWUFDVixNQUFPQSxFQUFNLEtBQ2IsS0FBTUEsRUFBTSxJQUNkLEVBR0FQLEdBQVMsWUFBWVEsQ0FBUSxFQUc3QixNQUFNQyxFQUFXTCxFQUFjLElBQUlHLEVBQU0sSUFBSSxFQUN6Q0UsR0FDRkEsRUFBUyxRQUFRQyxHQUFXQSxFQUFRRixDQUFRLENBQUMsRUFJL0NULEVBQUssU0FBUyxDQUNaLEtBQU0sdUJBQ04sTUFBT1MsQ0FDVCxDQUFDLENBQ0gsRUFFTUcsRUFBZUMsR0FBaUIsQ0FDcENaLEdBQVMsVUFBVVksQ0FBSyxFQUV4QmIsRUFBSyxTQUFTLENBQ1osS0FBTSx1QkFDTixNQUFBYSxDQUNGLENBQUMsRUFHR1gsR0FBZUMsR0FBY0csRUFBZSxZQUFjLEtBQzVESCxJQUNBLFdBQVcsSUFBTVcsRUFBVSxFQUFHUixFQUFlLGFBQWEsRUFFOUQsRUFFTVMsRUFBY1AsR0FBaUIsQ0FDbkNMLEVBQWEsRUFDYkYsR0FBUyxTQUFTTyxDQUFLLEVBRXZCUixFQUFLLFNBQVMsQ0FDWixLQUFNLHNCQUNOLE1BQUFRLENBQ0YsQ0FBQyxDQUNILEVBV01RLEVBQVUsTUFBT0MsR0FBNEQsQ0FDakYsTUFBTUMsRUFBTyxDQUFFLEdBQUdaLEVBQWdCLEdBQUdXLENBQWtCLEVBRXZELEdBQUksQ0FBQ0MsRUFBSyxJQUNSLE1BQU0sSUFBSSxNQUFNLHFCQUFxQixFQUd2Q0MsRUFBVyxFQUVYLEdBQUksQ0FDRmpCLEVBQWMsSUFBSSxZQUFZZ0IsRUFBSyxJQUFLLENBQ3RDLGdCQUFpQkEsRUFBSyxlQUN4QixDQUFDLEVBRURoQixFQUFZLFVBQVlLLEVBQ3hCTCxFQUFZLFFBQVVVLEVBQ3RCVixFQUFZLE9BQVNhLEVBR2pCRyxFQUFLLFNBQ1AsV0FBVyxJQUFNLENBQ1hoQixHQUFlQSxFQUFZLGFBQWUsWUFBWSxhQUN4REEsRUFBWSxNQUFNLEVBQ2xCVSxFQUFZLElBQUksTUFBTSxTQUFTLENBQUMsRUFFcEMsRUFBR00sRUFBSyxPQUFPLENBR25CLE9BQVNMLEVBQU8sQ0FDZCxNQUFBRCxFQUFZQyxDQUFjLEVBQ3BCQSxDQUNSLENBQ0YsRUFFTU0sRUFBYSxJQUFZLENBQ3pCakIsSUFDRkEsRUFBWSxNQUFNLEVBQ2xCQSxFQUFjLE1BR1pFLElBQ0YsYUFBYUEsQ0FBWSxFQUN6QkEsRUFBZSxLQUVuQixFQUVNVSxFQUFZLFNBQTJCLENBQzNDSyxFQUFXLEVBQ1gsTUFBTUgsRUFBUSxDQUNoQixFQUVNSSxFQUFjLElBQ1hsQixHQUFhLGFBQWUsWUFBWSxLQWtDakQsTUFBTyxDQUNMLFFBQUFjLEVBQ0EsV0FBQUcsRUFDQSxVQUFBTCxFQUNBLFlBQUFNLEVBQ0EsWUFwQ2tCLENBQUNDLEVBQWNDLElBQTZCLENBQzlELEdBQUksQ0FBQ0YsRUFBWSxFQUNmLE1BQU0sSUFBSSxNQUFNLGdDQUFnQyxFQUlsRHBCLEVBQUssU0FBUyxDQUNaLEtBQU0sbUJBQ04sS0FBQXFCLEVBQ0EsVUFBQUMsQ0FDRixDQUFDLENBQ0gsRUEwQkUsaUJBeEJ1QixDQUFDQSxFQUFtQlgsSUFBNkMsQ0FDbkZOLEVBQWMsSUFBSWlCLENBQVMsR0FDOUJqQixFQUFjLElBQUlpQixFQUFXLElBQUksR0FBSyxFQUV4Q2pCLEVBQWMsSUFBSWlCLENBQVMsRUFBRyxJQUFJWCxDQUFPLENBQzNDLEVBb0JFLG9CQWxCMEIsQ0FBQ1csRUFBbUJYLElBQTZDLENBQzNGLE1BQU1ELEVBQVdMLEVBQWMsSUFBSWlCLENBQVMsRUFDeENaLEdBQ0ZBLEVBQVMsT0FBT0MsQ0FBTyxDQUUzQixFQWNFLGlCQVp3QlksR0FBd0MsQ0FDaEUsT0FBTyxPQUFPakIsRUFBZ0JpQixFQUFXLFVBQVUsQ0FDckQsQ0FXQSxDQUNGIiwKICAibmFtZXMiOiBbImNyZWF0ZVNTRUFjdGlvbnMiLCAiZmx1eCIsICJvcHRpb25zIiwgImV2ZW50U291cmNlIiwgInJldHJ5Q291bnQiLCAicmV0cnlUaW1lb3V0IiwgImV2ZW50SGFuZGxlcnMiLCAiZGVmYXVsdE9wdGlvbnMiLCAiaGFuZGxlTWVzc2FnZSIsICJldmVudCIsICJzc2VFdmVudCIsICJoYW5kbGVycyIsICJoYW5kbGVyIiwgImhhbmRsZUVycm9yIiwgImVycm9yIiwgInJlY29ubmVjdCIsICJoYW5kbGVPcGVuIiwgImNvbm5lY3QiLCAiY29ubmVjdGlvbk9wdGlvbnMiLCAib3B0cyIsICJkaXNjb25uZWN0IiwgImlzQ29ubmVjdGVkIiwgImRhdGEiLCAiZXZlbnRUeXBlIiwgIm5ld09wdGlvbnMiXQp9Cg==
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ export const createSSEActions = (flux, options)=>{
5
+ let eventSource = null;
6
+ let retryCount = 0;
7
+ let retryTimeout = null;
8
+ let eventHandlers = new Map();
9
+ const defaultOptions = {
10
+ url: '',
11
+ withCredentials: false,
12
+ retryInterval: 5000,
13
+ maxRetries: 5,
14
+ timeout: 30000,
15
+ ...options?.sseOptions
16
+ };
17
+ const handleMessage = (event)=>{
18
+ const sseEvent = {
19
+ id: event.lastEventId,
20
+ event: event.type,
21
+ data: event.data
22
+ };
23
+ // Call global message handler
24
+ options?.onMessage?.(sseEvent);
25
+ // Call specific event handlers
26
+ const handlers = eventHandlers.get(event.type);
27
+ if (handlers) {
28
+ handlers.forEach((handler)=>handler(sseEvent));
29
+ }
30
+ // Dispatch to flux store
31
+ flux.dispatch({
32
+ type: 'SSE_MESSAGE_RECEIVED',
33
+ event: sseEvent
34
+ });
35
+ };
36
+ const handleError = (error)=>{
37
+ options?.onError?.(error);
38
+ flux.dispatch({
39
+ type: 'SSE_CONNECTION_ERROR',
40
+ error
41
+ });
42
+ // Auto-reconnect if not manually disconnected
43
+ if (eventSource && retryCount < (defaultOptions.maxRetries || 5)) {
44
+ retryCount++;
45
+ setTimeout(()=>reconnect(), defaultOptions.retryInterval);
46
+ }
47
+ };
48
+ const handleOpen = (event)=>{
49
+ retryCount = 0;
50
+ options?.onOpen?.(event);
51
+ flux.dispatch({
52
+ type: 'SSE_CONNECTION_OPEN',
53
+ event
54
+ });
55
+ };
56
+ // const handleClose = (event: CloseEvent) => {
57
+ // options?.onClose?.(event);
58
+ // flux.dispatch({
59
+ // type: 'SSE_CONNECTION_CLOSED',
60
+ // event
61
+ // });
62
+ // };
63
+ const connect = async (connectionOptions)=>{
64
+ const opts = {
65
+ ...defaultOptions,
66
+ ...connectionOptions
67
+ };
68
+ if (!opts.url) {
69
+ throw new Error('SSE URL is required');
70
+ }
71
+ disconnect();
72
+ try {
73
+ eventSource = new EventSource(opts.url, {
74
+ withCredentials: opts.withCredentials
75
+ });
76
+ eventSource.onmessage = handleMessage;
77
+ eventSource.onerror = handleError;
78
+ eventSource.onopen = handleOpen;
79
+ // Set timeout
80
+ if (opts.timeout) {
81
+ setTimeout(()=>{
82
+ if (eventSource && eventSource.readyState === EventSource.CONNECTING) {
83
+ eventSource.close();
84
+ handleError(new Event('timeout'));
85
+ }
86
+ }, opts.timeout);
87
+ }
88
+ } catch (error) {
89
+ handleError(error);
90
+ throw error;
91
+ }
92
+ };
93
+ const disconnect = ()=>{
94
+ if (eventSource) {
95
+ eventSource.close();
96
+ eventSource = null;
97
+ }
98
+ if (retryTimeout) {
99
+ clearTimeout(retryTimeout);
100
+ retryTimeout = null;
101
+ }
102
+ };
103
+ const reconnect = async ()=>{
104
+ disconnect();
105
+ await connect();
106
+ };
107
+ const isConnected = ()=>{
108
+ return eventSource?.readyState === EventSource.OPEN;
109
+ };
110
+ const sendMessage = (data, eventType)=>{
111
+ if (!isConnected()) {
112
+ throw new Error('SSE connection not established');
113
+ }
114
+ // Note: SSE is one-way, but we can dispatch to flux for logging
115
+ flux.dispatch({
116
+ type: 'SSE_MESSAGE_SENT',
117
+ data,
118
+ eventType
119
+ });
120
+ };
121
+ const addEventListener = (eventType, handler)=>{
122
+ if (!eventHandlers.has(eventType)) {
123
+ eventHandlers.set(eventType, new Set());
124
+ }
125
+ eventHandlers.get(eventType).add(handler);
126
+ };
127
+ const removeEventListener = (eventType, handler)=>{
128
+ const handlers = eventHandlers.get(eventType);
129
+ if (handlers) {
130
+ handlers.delete(handler);
131
+ }
132
+ };
133
+ const updateSSEOptions = (newOptions)=>{
134
+ Object.assign(defaultOptions, newOptions.sseOptions);
135
+ };
136
+ return {
137
+ connect,
138
+ disconnect,
139
+ reconnect,
140
+ isConnected,
141
+ sendMessage,
142
+ addEventListener,
143
+ removeEventListener,
144
+ updateSSEOptions
145
+ };
146
+ };
147
+
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9zc2VBY3Rpb25zL3NzZUFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFRXZlbnQge1xuICByZWFkb25seSBkYXRhOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV2ZW50Pzogc3RyaW5nO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmV0cnk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFQ29ubmVjdGlvbk9wdGlvbnMge1xuICByZWFkb25seSBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgbWF4UmV0cmllcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgcmV0cnlJbnRlcnZhbD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdGltZW91dD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFQWN0aW9uc09wdGlvbnMge1xuICByZWFkb25seSBvbkNsb3NlPzogKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBvbkVycm9yPzogKGVycm9yOiBFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25NZXNzYWdlPzogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25PcGVuPzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgc3NlT3B0aW9ucz86IFNTRUNvbm5lY3Rpb25PcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNTRUFjdGlvbnMge1xuICByZWFkb25seSBjb25uZWN0OiAob3B0aW9ucz86IFNTRUNvbm5lY3Rpb25PcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBkaXNjb25uZWN0OiAoKSA9PiB2b2lkO1xuICByZWFkb25seSByZWNvbm5lY3Q6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWRvbmx5IGlzQ29ubmVjdGVkOiAoKSA9PiBib29sZWFuO1xuICByZWFkb25seSBzZW5kTWVzc2FnZTogKGRhdGE6IHN0cmluZywgZXZlbnRUeXBlPzogc3RyaW5nKSA9PiB2b2lkO1xuICByZWFkb25seSBhZGRFdmVudExpc3RlbmVyOiAoZXZlbnRUeXBlOiBzdHJpbmcsIGhhbmRsZXI6IChldmVudDogU1NFRXZlbnQpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgdXBkYXRlU1NFT3B0aW9uczogKG9wdGlvbnM6IFNTRUFjdGlvbnNPcHRpb25zKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU1NFQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IFNTRUFjdGlvbnNPcHRpb25zXG4pOiBTU0VBY3Rpb25zID0+IHtcbiAgbGV0IGV2ZW50U291cmNlOiBFdmVudFNvdXJjZSB8IG51bGwgPSBudWxsO1xuICBsZXQgcmV0cnlDb3VudCA9IDA7XG4gIGxldCByZXRyeVRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCA9IG51bGw7XG4gIGxldCBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIFNldDwoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkPj4oKTtcblxuICBjb25zdCBkZWZhdWx0T3B0aW9uczogU1NFQ29ubmVjdGlvbk9wdGlvbnMgPSB7XG4gICAgdXJsOiAnJyxcbiAgICB3aXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgIHJldHJ5SW50ZXJ2YWw6IDUwMDAsXG4gICAgbWF4UmV0cmllczogNSxcbiAgICB0aW1lb3V0OiAzMDAwMCxcbiAgICAuLi5vcHRpb25zPy5zc2VPcHRpb25zXG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgY29uc3Qgc3NlRXZlbnQ6IFNTRUV2ZW50ID0ge1xuICAgICAgaWQ6IGV2ZW50Lmxhc3RFdmVudElkLFxuICAgICAgZXZlbnQ6IGV2ZW50LnR5cGUsXG4gICAgICBkYXRhOiBldmVudC5kYXRhXG4gICAgfTtcblxuICAgIC8vIENhbGwgZ2xvYmFsIG1lc3NhZ2UgaGFuZGxlclxuICAgIG9wdGlvbnM/Lm9uTWVzc2FnZT8uKHNzZUV2ZW50KTtcblxuICAgIC8vIENhbGwgc3BlY2lmaWMgZXZlbnQgaGFuZGxlcnNcbiAgICBjb25zdCBoYW5kbGVycyA9IGV2ZW50SGFuZGxlcnMuZ2V0KGV2ZW50LnR5cGUpO1xuICAgIGlmIChoYW5kbGVycykge1xuICAgICAgaGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IGhhbmRsZXIoc3NlRXZlbnQpKTtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBmbHV4IHN0b3JlXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX01FU1NBR0VfUkVDRUlWRUQnLFxuICAgICAgZXZlbnQ6IHNzZUV2ZW50XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXJyb3IgPSAoZXJyb3I6IEV2ZW50KSA9PiB7XG4gICAgb3B0aW9ucz8ub25FcnJvcj8uKGVycm9yKTtcblxuICAgIGZsdXguZGlzcGF0Y2goe1xuICAgICAgdHlwZTogJ1NTRV9DT05ORUNUSU9OX0VSUk9SJyxcbiAgICAgIGVycm9yXG4gICAgfSk7XG5cbiAgICAvLyBBdXRvLXJlY29ubmVjdCBpZiBub3QgbWFudWFsbHkgZGlzY29ubmVjdGVkXG4gICAgaWYgKGV2ZW50U291cmNlICYmIHJldHJ5Q291bnQgPCAoZGVmYXVsdE9wdGlvbnMubWF4UmV0cmllcyB8fCA1KSkge1xuICAgICAgcmV0cnlDb3VudCsrO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiByZWNvbm5lY3QoKSwgZGVmYXVsdE9wdGlvbnMucmV0cnlJbnRlcnZhbCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW4gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgcmV0cnlDb3VudCA9IDA7XG4gICAgb3B0aW9ucz8ub25PcGVuPy4oZXZlbnQpO1xuXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX0NPTk5FQ1RJT05fT1BFTicsXG4gICAgICBldmVudFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIGNvbnN0IGhhbmRsZUNsb3NlID0gKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB7XG4gIC8vICAgb3B0aW9ucz8ub25DbG9zZT8uKGV2ZW50KTtcblxuICAvLyAgIGZsdXguZGlzcGF0Y2goe1xuICAvLyAgICAgdHlwZTogJ1NTRV9DT05ORUNUSU9OX0NMT1NFRCcsXG4gIC8vICAgICBldmVudFxuICAvLyAgIH0pO1xuICAvLyB9O1xuXG4gIGNvbnN0IGNvbm5lY3QgPSBhc3luYyAoY29ubmVjdGlvbk9wdGlvbnM/OiBTU0VDb25uZWN0aW9uT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5jb25uZWN0aW9uT3B0aW9ucyB9O1xuXG4gICAgaWYgKCFvcHRzLnVybCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTU0UgVVJMIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgZGlzY29ubmVjdCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGV2ZW50U291cmNlID0gbmV3IEV2ZW50U291cmNlKG9wdHMudXJsLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0cy53aXRoQ3JlZGVudGlhbHNcbiAgICAgIH0pO1xuXG4gICAgICBldmVudFNvdXJjZS5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlO1xuICAgICAgZXZlbnRTb3VyY2Uub25lcnJvciA9IGhhbmRsZUVycm9yO1xuICAgICAgZXZlbnRTb3VyY2Uub25vcGVuID0gaGFuZGxlT3BlbjtcblxuICAgICAgLy8gU2V0IHRpbWVvdXRcbiAgICAgIGlmIChvcHRzLnRpbWVvdXQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50U291cmNlICYmIGV2ZW50U291cmNlLnJlYWR5U3RhdGUgPT09IEV2ZW50U291cmNlLkNPTk5FQ1RJTkcpIHtcbiAgICAgICAgICAgIGV2ZW50U291cmNlLmNsb3NlKCk7XG4gICAgICAgICAgICBoYW5kbGVFcnJvcihuZXcgRXZlbnQoJ3RpbWVvdXQnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBvcHRzLnRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZUVycm9yKGVycm9yIGFzIEV2ZW50KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkaXNjb25uZWN0ID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmIChldmVudFNvdXJjZSkge1xuICAgICAgZXZlbnRTb3VyY2UuY2xvc2UoKTtcbiAgICAgIGV2ZW50U291cmNlID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocmV0cnlUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQocmV0cnlUaW1lb3V0KTtcbiAgICAgIHJldHJ5VGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlY29ubmVjdCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBkaXNjb25uZWN0KCk7XG4gICAgYXdhaXQgY29ubmVjdCgpO1xuICB9O1xuXG4gIGNvbnN0IGlzQ29ubmVjdGVkID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBldmVudFNvdXJjZT8ucmVhZHlTdGF0ZSA9PT0gRXZlbnRTb3VyY2UuT1BFTjtcbiAgfTtcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IChkYXRhOiBzdHJpbmcsIGV2ZW50VHlwZT86IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIGlmICghaXNDb25uZWN0ZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTU0UgY29ubmVjdGlvbiBub3QgZXN0YWJsaXNoZWQnKTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBTU0UgaXMgb25lLXdheSwgYnV0IHdlIGNhbiBkaXNwYXRjaCB0byBmbHV4IGZvciBsb2dnaW5nXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX01FU1NBR0VfU0VOVCcsXG4gICAgICBkYXRhLFxuICAgICAgZXZlbnRUeXBlXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYWRkRXZlbnRMaXN0ZW5lciA9IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICAgIGlmICghZXZlbnRIYW5kbGVycy5oYXMoZXZlbnRUeXBlKSkge1xuICAgICAgZXZlbnRIYW5kbGVycy5zZXQoZXZlbnRUeXBlLCBuZXcgU2V0KCkpO1xuICAgIH1cbiAgICBldmVudEhhbmRsZXJzLmdldChldmVudFR5cGUpIS5hZGQoaGFuZGxlcik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGhhbmRsZXJzID0gZXZlbnRIYW5kbGVycy5nZXQoZXZlbnRUeXBlKTtcbiAgICBpZiAoaGFuZGxlcnMpIHtcbiAgICAgIGhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlU1NFT3B0aW9ucyA9IChuZXdPcHRpb25zOiBTU0VBY3Rpb25zT3B0aW9ucyk6IHZvaWQgPT4ge1xuICAgIE9iamVjdC5hc3NpZ24oZGVmYXVsdE9wdGlvbnMsIG5ld09wdGlvbnMuc3NlT3B0aW9ucyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb25uZWN0LFxuICAgIGRpc2Nvbm5lY3QsXG4gICAgcmVjb25uZWN0LFxuICAgIGlzQ29ubmVjdGVkLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGFkZEV2ZW50TGlzdGVuZXIsXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcixcbiAgICB1cGRhdGVTU0VPcHRpb25zXG4gIH07XG59OyJdLCJuYW1lcyI6WyJjcmVhdGVTU0VBY3Rpb25zIiwiZmx1eCIsIm9wdGlvbnMiLCJldmVudFNvdXJjZSIsInJldHJ5Q291bnQiLCJyZXRyeVRpbWVvdXQiLCJldmVudEhhbmRsZXJzIiwiTWFwIiwiZGVmYXVsdE9wdGlvbnMiLCJ1cmwiLCJ3aXRoQ3JlZGVudGlhbHMiLCJyZXRyeUludGVydmFsIiwibWF4UmV0cmllcyIsInRpbWVvdXQiLCJzc2VPcHRpb25zIiwiaGFuZGxlTWVzc2FnZSIsImV2ZW50Iiwic3NlRXZlbnQiLCJpZCIsImxhc3RFdmVudElkIiwidHlwZSIsImRhdGEiLCJvbk1lc3NhZ2UiLCJoYW5kbGVycyIsImdldCIsImZvckVhY2giLCJoYW5kbGVyIiwiZGlzcGF0Y2giLCJoYW5kbGVFcnJvciIsImVycm9yIiwib25FcnJvciIsInNldFRpbWVvdXQiLCJyZWNvbm5lY3QiLCJoYW5kbGVPcGVuIiwib25PcGVuIiwiY29ubmVjdCIsImNvbm5lY3Rpb25PcHRpb25zIiwib3B0cyIsIkVycm9yIiwiZGlzY29ubmVjdCIsIkV2ZW50U291cmNlIiwib25tZXNzYWdlIiwib25lcnJvciIsIm9ub3BlbiIsInJlYWR5U3RhdGUiLCJDT05ORUNUSU5HIiwiY2xvc2UiLCJFdmVudCIsImNsZWFyVGltZW91dCIsImlzQ29ubmVjdGVkIiwiT1BFTiIsInNlbmRNZXNzYWdlIiwiZXZlbnRUeXBlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhcyIsInNldCIsIlNldCIsImFkZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkZWxldGUiLCJ1cGRhdGVTU0VPcHRpb25zIiwibmV3T3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBdUNELE9BQU8sTUFBTUEsbUJBQW1CLENBQzlCQyxNQUNBQztJQUVBLElBQUlDLGNBQWtDO0lBQ3RDLElBQUlDLGFBQWE7SUFDakIsSUFBSUMsZUFBc0M7SUFDMUMsSUFBSUMsZ0JBQWdCLElBQUlDO0lBRXhCLE1BQU1DLGlCQUF1QztRQUMzQ0MsS0FBSztRQUNMQyxpQkFBaUI7UUFDakJDLGVBQWU7UUFDZkMsWUFBWTtRQUNaQyxTQUFTO1FBQ1QsR0FBR1gsU0FBU1ksVUFBVTtJQUN4QjtJQUVBLE1BQU1DLGdCQUFnQixDQUFDQztRQUNyQixNQUFNQyxXQUFxQjtZQUN6QkMsSUFBSUYsTUFBTUcsV0FBVztZQUNyQkgsT0FBT0EsTUFBTUksSUFBSTtZQUNqQkMsTUFBTUwsTUFBTUssSUFBSTtRQUNsQjtRQUVBLDhCQUE4QjtRQUM5Qm5CLFNBQVNvQixZQUFZTDtRQUVyQiwrQkFBK0I7UUFDL0IsTUFBTU0sV0FBV2pCLGNBQWNrQixHQUFHLENBQUNSLE1BQU1JLElBQUk7UUFDN0MsSUFBSUcsVUFBVTtZQUNaQSxTQUFTRSxPQUFPLENBQUNDLENBQUFBLFVBQVdBLFFBQVFUO1FBQ3RDO1FBRUEseUJBQXlCO1FBQ3pCaEIsS0FBSzBCLFFBQVEsQ0FBQztZQUNaUCxNQUFNO1lBQ05KLE9BQU9DO1FBQ1Q7SUFDRjtJQUVBLE1BQU1XLGNBQWMsQ0FBQ0M7UUFDbkIzQixTQUFTNEIs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
@@ -0,0 +1,24 @@
1
+ import type { FluxFramework } from '@nlabs/arkhamjs';
2
+ import type { PaymentPlanType, PaymentSubscriptionType } from '../../types/subscriptions.types.js';
3
+ import type { ActionRequestOptions } from '../../utils/requestCache.js';
4
+ export type SubscriptionApiResultsType = {
5
+ subscriptions: {
6
+ addPlan?: PaymentPlanType;
7
+ addSubscription?: PaymentSubscriptionType;
8
+ deleteSubscription?: boolean;
9
+ getPlanByItem?: PaymentPlanType;
10
+ getSubscription?: PaymentSubscriptionType;
11
+ getSubscriptionListByUser?: PaymentSubscriptionType[];
12
+ getSubscriptionByItem?: PaymentSubscriptionType;
13
+ };
14
+ };
15
+ export interface SubscriptionActions {
16
+ addPlan: (plan: Partial<PaymentPlanType>, planProps?: string[], requestOptions?: ActionRequestOptions) => Promise<PaymentPlanType>;
17
+ addSubscription: (subscription: Partial<PaymentSubscriptionType>, subscriptionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<PaymentSubscriptionType>;
18
+ deleteSubscription: (itemId: string, itemType?: string, requestOptions?: ActionRequestOptions) => Promise<boolean>;
19
+ getPlanByItem: (itemId: string, itemType?: string, planProps?: string[], requestOptions?: ActionRequestOptions) => Promise<PaymentPlanType>;
20
+ getSubscriptionListByUser: (userId: string, from?: number, to?: number, subscriptionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<PaymentSubscriptionType[]>;
21
+ getSubscriptionByItem: (itemId: string, itemType?: string, subscriptionProps?: string[], requestOptions?: ActionRequestOptions) => Promise<PaymentSubscriptionType>;
22
+ }
23
+ export declare const createSubscriptionActions: (flux: FluxFramework) => SubscriptionActions;
24
+ //# sourceMappingURL=subscriptionActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptionActions.d.ts","sourceRoot":"","sources":["../../../src/actions/subscriptionActions/subscriptionActions.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAC,eAAe,EAAE,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AACjG,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AA2BtE,MAAM,MAAM,0BAA0B,GAAG;IACvC,aAAa,EAAE;QACb,OAAO,CAAC,EAAE,eAAe,CAAC;QAC1B,eAAe,CAAC,EAAE,uBAAuB,CAAC;QAC1C,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,aAAa,CAAC,EAAE,eAAe,CAAC;QAChC,eAAe,CAAC,EAAE,uBAAuB,CAAC;QAC1C,yBAAyB,CAAC,EAAE,uBAAuB,EAAE,CAAC;QACtD,qBAAqB,CAAC,EAAE,uBAAuB,CAAC;KACjD,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACnI,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,uBAAuB,CAAC,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC3K,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnH,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5I,yBAAyB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACnL,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACrK;AAED,eAAO,MAAM,yBAAyB,GACpC,MAAM,aAAa,KAClB,mBA+PF,CAAC"}
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Copyright (c) 2026-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { parseId, parseNum, parseString } from '@nlabs/utils';
5
+ import { SUBSCRIPTION_CONSTANTS } from '../../stores/subscriptionStore.js';
6
+ import { appMutation, appQuery } from '../../utils/api.js';
7
+ import { clearCachedRequest, getCachedRequest, setCachedRequest } from '../../utils/requestCache.js';
8
+ const DATA_TYPE = 'subscriptions';
9
+ const DEFAULT_ITEM_TYPE = 'personas';
10
+ const DEFAULT_PLAN_FIELDS = [
11
+ 'amount',
12
+ 'currency',
13
+ 'description',
14
+ 'id',
15
+ 'interval',
16
+ 'intervalCount',
17
+ 'isActive',
18
+ 'itemId',
19
+ 'itemType',
20
+ 'name',
21
+ 'userId'
22
+ ];
23
+ const DEFAULT_SUBSCRIPTION_FIELDS = [
24
+ 'cancelDate',
25
+ 'expires',
26
+ 'id',
27
+ 'itemId',
28
+ 'itemType',
29
+ 'planId',
30
+ 'status',
31
+ 'transactionId',
32
+ 'trialEnd',
33
+ 'userId',
34
+ `plan {${DEFAULT_PLAN_FIELDS.join(', ')}}`
35
+ ];
36
+ const buildItemKey = (itemId, itemType = DEFAULT_ITEM_TYPE)=>`${parseString(itemType || DEFAULT_ITEM_TYPE, 32).toLowerCase()}:${parseId(itemId)}`;
37
+ const normalizePlan = (plan = {})=>({
38
+ ...plan,
39
+ ...plan.amount !== undefined ? {
40
+ amount: parseNum(plan.amount)
41
+ } : {},
42
+ ...plan.interval ? {
43
+ interval: parseString(plan.interval, 16).toLowerCase()
44
+ } : {},
45
+ ...plan.intervalCount !== undefined ? {
46
+ intervalCount: parseNum(plan.intervalCount)
47
+ } : {},
48
+ ...plan.itemId ? {
49
+ itemId: parseId(plan.itemId)
50
+ } : {},
51
+ ...plan.itemType ? {
52
+ itemType: parseString(plan.itemType, 32).toLowerCase()
53
+ } : {}
54
+ });
55
+ const normalizeSubscription = (subscription = {})=>({
56
+ ...subscription,
57
+ ...subscription.itemId ? {
58
+ itemId: parseId(subscription.itemId)
59
+ } : {},
60
+ ...subscription.itemType ? {
61
+ itemType: parseString(subscription.itemType, 32).toLowerCase()
62
+ } : {},
63
+ ...subscription.planId ? {
64
+ planId: parseId(subscription.planId)
65
+ } : {}
66
+ });
67
+ export const createSubscriptionActions = (flux)=>{
68
+ const addPlan = async (plan, planProps = [], requestOptions = {})=>{
69
+ const normalizedPlan = normalizePlan(plan);
70
+ const itemKey = buildItemKey(String(normalizedPlan.itemId || ''), String(normalizedPlan.itemType || DEFAULT_ITEM_TYPE));
71
+ try {
72
+ const queryVariables = {
73
+ item: {
74
+ type: 'PlanInput!',
75
+ value: normalizedPlan
76
+ }
77
+ };
78
+ const onSuccess = (data)=>{
79
+ const plan = data?.subscriptions?.addPlan || {};
80
+ return flux.dispatch({
81
+ itemKey,
82
+ plan,
83
+ type: SUBSCRIPTION_CONSTANTS.ADD_PLAN_SUCCESS
84
+ });
85
+ };
86
+ return await appMutation(flux, 'addPlan', DATA_TYPE, queryVariables, [
87
+ ...DEFAULT_PLAN_FIELDS,
88
+ ...planProps
89
+ ], {
90
+ onSuccess
91
+ });
92
+ } catch (error) {
93
+ flux.dispatch({
94
+ error,
95
+ type: SUBSCRIPTION_CONSTANTS.ADD_PLAN_ERROR
96
+ });
97
+ throw error;
98
+ } finally{
99
+ await clearCachedRequest(flux, `subscription.getPlanByItem:${itemKey}`);
100
+ }
101
+ };
102
+ const getPlanByItem = async (itemId, itemType = DEFAULT_ITEM_TYPE, planProps = [], requestOptions = {})=>{
103
+ const itemKey = buildItemKey(itemId, itemType);
104
+ const cachedResult = getCachedRequest(flux, `subscription.getPlanByItem:${itemKey}`, {
105
+ itemId,
106
+ itemType,
107
+ planProps
108
+ }, requestOptions);
109
+ if (cachedResult !== undefined) {
110
+ return cachedResult;
111
+ }
112
+ try {
113
+ const queryVariables = {
114
+ itemId: {
115
+ type: 'ID!',
116
+ value: parseId(itemId)
117
+ },
118
+ itemType: {
119
+ type: 'String',
120
+ value: parseString(itemType || DEFAULT_ITEM_TYPE, 32).toLowerCase()
121
+ }
122
+ };
123
+ const onSuccess = (data)=>{
124
+ const plan = data?.subscriptions?.getPlanByItem || {};
125
+ return flux.dispatch({
126
+ itemKey,
127
+ plan,
128
+ type: SUBSCRIPTION_CONSTANTS.GET_PLAN_SUCCESS
129
+ });
130
+ };
131
+ const result = await appQuery(flux, 'getPlanByItem', DATA_TYPE, queryVariables, [
132
+ ...DEFAULT_PLAN_FIELDS,
133
+ ...planProps
134
+ ], {
135
+ onSuccess
136
+ });
137
+ return await setCachedRequest(flux, `subscription.getPlanByItem:${itemKey}`, {
138
+ itemId,
139
+ itemType,
140
+ planProps
141
+ }, result, requestOptions);
142
+ } catch (error) {
143
+ flux.dispatch({
144
+ error,
145
+ type: SUBSCRIPTION_CONSTANTS.GET_PLAN_ERROR
146
+ });
147
+ throw error;
148
+ }
149
+ };
150
+ const addSubscription = async (subscription, subscriptionProps = [], requestOptions = {})=>{
151
+ const normalizedSubscription = normalizeSubscription(subscription);
152
+ const itemKey = buildItemKey(String(normalizedSubscription.itemId || ''), String(normalizedSubscription.itemType || DEFAULT_ITEM_TYPE));
153
+ try {
154
+ const queryVariables = {
155
+ item: {
156
+ type: 'SubscriptionInput!',
157
+ value: normalizedSubscription
158
+ }
159
+ };
160
+ const onSuccess = (data)=>{
161
+ const subscription = data?.subscriptions?.addSubscription || {};
162
+ return flux.dispatch({
163
+ itemKey,
164
+ subscription,
165
+ type: SUBSCRIPTION_CONSTANTS.ADD_SUBSCRIPTION_SUCCESS
166
+ });
167
+ };
168
+ return await appMutation(flux, 'addSubscription', DATA_TYPE, queryVariables, [
169
+ ...DEFAULT_SUBSCRIPTION_FIELDS,
170
+ ...subscriptionProps
171
+ ], {
172
+ onSuccess
173
+ });
174
+ } catch (error) {
175
+ flux.dispatch({
176
+ error,
177
+ type: SUBSCRIPTION_CONSTANTS.ADD_SUBSCRIPTION_ERROR
178
+ });
179
+ throw error;
180
+ } finally{
181
+ await clearCachedRequest(flux, `subscription.getSubscriptionByItem:${itemKey}`);
182
+ }
183
+ };
184
+ const getSubscriptionByItem = async (itemId, itemType = DEFAULT_ITEM_TYPE, subscriptionProps = [], requestOptions = {})=>{
185
+ const itemKey = buildItemKey(itemId, itemType);
186
+ const cachedResult = getCachedRequest(flux, `subscription.getSubscriptionByItem:${itemKey}`, {
187
+ itemId,
188
+ itemType,
189
+ subscriptionProps
190
+ }, requestOptions);
191
+ if (cachedResult !== undefined) {
192
+ return cachedResult;
193
+ }
194
+ try {
195
+ const queryVariables = {
196
+ itemId: {
197
+ type: 'ID!',
198
+ value: parseId(itemId)
199
+ },
200
+ itemType: {
201
+ type: 'String',
202
+ value: parseString(itemType || DEFAULT_ITEM_TYPE, 32).toLowerCase()
203
+ }
204
+ };
205
+ const onSuccess = (data)=>{
206
+ const subscription = data?.subscriptions?.getSubscriptionByItem || {};
207
+ return flux.dispatch({
208
+ itemKey,
209
+ subscription,
210
+ type: SUBSCRIPTION_CONSTANTS.GET_SUBSCRIPTION_SUCCESS
211
+ });
212
+ };
213
+ const result = await appQuery(flux, 'getSubscriptionByItem', DATA_TYPE, queryVariables, [
214
+ ...DEFAULT_SUBSCRIPTION_FIELDS,
215
+ ...subscriptionProps
216
+ ], {
217
+ onSuccess
218
+ });
219
+ return await setCachedRequest(flux, `subscription.getSubscriptionByItem:${itemKey}`, {
220
+ itemId,
221
+ itemType,
222
+ subscriptionProps
223
+ }, result, requestOptions);
224
+ } catch (error) {
225
+ flux.dispatch({
226
+ error,
227
+ type: SUBSCRIPTION_CONSTANTS.GET_SUBSCRIPTION_ERROR
228
+ });
229
+ throw error;
230
+ }
231
+ };
232
+ const getSubscriptionListByUser = async (userId, from = 0, to = 30, subscriptionProps = [], requestOptions = {})=>{
233
+ const normalizedUserId = parseId(userId);
234
+ const cacheKey = `subscription.getSubscriptionListByUser:${normalizedUserId}:${from}:${to}`;
235
+ const cachedResult = getCachedRequest(flux, cacheKey, {
236
+ from,
237
+ subscriptionProps,
238
+ to,
239
+ userId: normalizedUserId
240
+ }, requestOptions);
241
+ if (cachedResult !== undefined) {
242
+ return cachedResult;
243
+ }
244
+ try {
245
+ const queryVariables = {
246
+ userId: {
247
+ type: 'ID!',
248
+ value: normalizedUserId
249
+ },
250
+ from: {
251
+ type: 'Int',
252
+ value: from
253
+ },
254
+ to: {
255
+ type: 'Int',
256
+ value: to
257
+ }
258
+ };
259
+ const onSuccess = (data)=>{
260
+ const list = data?.subscriptions?.getSubscriptionListByUser || [];
261
+ return flux.dispatch({
262
+ list,
263
+ type: SUBSCRIPTION_CONSTANTS.GET_SUBSCRIPTION_LIST_SUCCESS
264
+ });
265
+ };
266
+ const result = await appQuery(flux, 'getSubscriptionListByUser', DATA_TYPE, queryVariables, [
267
+ ...DEFAULT_SUBSCRIPTION_FIELDS,
268
+ ...subscriptionProps
269
+ ], {
270
+ onSuccess
271
+ });
272
+ return await setCachedRequest(flux, cacheKey, {
273
+ from,
274
+ subscriptionProps,
275
+ to,
276
+ userId: normalizedUserId
277
+ }, result, requestOptions);
278
+ } catch (error) {
279
+ flux.dispatch({
280
+ error,
281
+ type: SUBSCRIPTION_CONSTANTS.GET_SUBSCRIPTION_LIST_ERROR
282
+ });
283
+ throw error;
284
+ }
285
+ };
286
+ const deleteSubscription = async (itemId, itemType = DEFAULT_ITEM_TYPE, requestOptions = {})=>{
287
+ const itemKey = buildItemKey(itemId, itemType);
288
+ try {
289
+ const queryVariables = {
290
+ item: {
291
+ type: 'SubscriptionInput!',
292
+ value: {
293
+ itemId: parseId(itemId),
294
+ itemType: parseString(itemType || DEFAULT_ITEM_TYPE, 32).toLowerCase()
295
+ }
296
+ }
297
+ };
298
+ const onSuccess = (data)=>{
299
+ const success = Boolean(data?.subscriptions?.deleteSubscription);
300
+ return flux.dispatch({
301
+ itemKey,
302
+ success,
303
+ type: SUBSCRIPTION_CONSTANTS.DELETE_SUBSCRIPTION_SUCCESS
304
+ });
305
+ };
306
+ return await appMutation(flux, 'deleteSubscription', DATA_TYPE, queryVariables, [], {
307
+ onSuccess
308
+ });
309
+ } catch (error) {
310
+ flux.dispatch({
311
+ error,
312
+ type: SUBSCRIPTION_CONSTANTS.DELETE_SUBSCRIPTION_ERROR
313
+ });
314
+ throw error;
315
+ } finally{
316
+ await clearCachedRequest(flux, `subscription.getSubscriptionByItem:${itemKey}`);
317
+ }
318
+ };
319
+ return {
320
+ addPlan,
321
+ addSubscription,
322
+ deleteSubscription,
323
+ getPlanByItem,
324
+ getSubscriptionListByUser,
325
+ getSubscriptionByItem
326
+ };
327
+ };
328
+
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy9zdWJzY3JpcHRpb25BY3Rpb25zL3N1YnNjcmlwdGlvbkFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7cGFyc2VJZCwgcGFyc2VOdW0sIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuXG5pbXBvcnQge1NVQlNDUklQVElPTl9DT05TVEFOVFN9IGZyb20gJy4uLy4uL3N0b3Jlcy9zdWJzY3JpcHRpb25TdG9yZS5qcyc7XG5pbXBvcnQge2FwcE11dGF0aW9uLCBhcHBRdWVyeX0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLmpzJztcbmltcG9ydCB7Y2xlYXJDYWNoZWRSZXF1ZXN0LCBnZXRDYWNoZWRSZXF1ZXN0LCBzZXRDYWNoZWRSZXF1ZXN0fSBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0Q2FjaGUuanMnO1xuXG5pbXBvcnQgdHlwZSB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB0eXBlIHtQYXltZW50UGxhblR5cGUsIFBheW1lbnRTdWJzY3JpcHRpb25UeXBlfSBmcm9tICcuLi8uLi90eXBlcy9zdWJzY3JpcHRpb25zLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBY3Rpb25SZXF1ZXN0T3B0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdENhY2hlLmpzJztcblxuY29uc3QgREFUQV9UWVBFID0gJ3N1YnNjcmlwdGlvbnMnO1xuY29uc3QgREVGQVVMVF9JVEVNX1RZUEUgPSAncGVyc29uYXMnO1xuY29uc3QgREVGQVVMVF9QTEFOX0ZJRUxEUyA9IFsnYW1vdW50JywgJ2N1cnJlbmN5JywgJ2Rlc2NyaXB0aW9uJywgJ2lkJywgJ2ludGVydmFsJywgJ2ludGVydmFsQ291bnQnLCAnaXNBY3RpdmUnLCAnaXRlbUlkJywgJ2l0ZW1UeXBlJywgJ25hbWUnLCAndXNlcklkJ107XG5jb25zdCBERUZBVUxUX1NVQlNDUklQVElPTl9GSUVMRFMgPSBbJ2NhbmNlbERhdGUnLCAnZXhwaXJlcycsICdpZCcsICdpdGVtSWQnLCAnaXRlbVR5cGUnLCAncGxhbklkJywgJ3N0YXR1cycsICd0cmFuc2FjdGlvbklkJywgJ3RyaWFsRW5kJywgJ3VzZXJJZCcsIGBwbGFuIHske0RFRkFVTFRfUExBTl9GSUVMRFMuam9pbignLCAnKX19YF07XG5cbmNvbnN0IGJ1aWxkSXRlbUtleSA9IChpdGVtSWQ6IHN0cmluZywgaXRlbVR5cGU6IHN0cmluZyA9IERFRkFVTFRfSVRFTV9UWVBFKSA9PiAoXG4gIGAke3BhcnNlU3RyaW5nKGl0ZW1UeXBlIHx8IERFRkFVTFRfSVRFTV9UWVBFLCAzMikudG9Mb3dlckNhc2UoKX06JHtwYXJzZUlkKGl0ZW1JZCl9YFxuKTtcblxuY29uc3Qgbm9ybWFsaXplUGxhbiA9IChwbGFuOiBQYXJ0aWFsPFBheW1lbnRQbGFuVHlwZT4gPSB7fSk6IFBhcnRpYWw8UGF5bWVudFBsYW5UeXBlPiA9PiAoe1xuICAuLi5wbGFuLFxuICAuLi4ocGxhbi5hbW91bnQgIT09IHVuZGVmaW5lZCA/IHthbW91bnQ6IHBhcnNlTnVtKHBsYW4uYW1vdW50KX0gOiB7fSksXG4gIC4uLihwbGFuLmludGVydmFsID8ge2ludGVydmFsOiBwYXJzZVN0cmluZyhwbGFuLmludGVydmFsLCAxNikudG9Mb3dlckNhc2UoKX0gOiB7fSksXG4gIC4uLihwbGFuLmludGVydmFsQ291bnQgIT09IHVuZGVmaW5lZCA/IHtpbnRlcnZhbENvdW50OiBwYXJzZU51bShwbGFuLmludGVydmFsQ291bnQpfSA6IHt9KSxcbiAgLi4uKHBsYW4uaXRlbUlkID8ge2l0ZW1JZDogcGFyc2VJZChwbGFuLml0ZW1JZCl9IDoge30pLFxuICAuLi4ocGxhbi5pdGVtVHlwZSA/IHtpdGVtVHlwZTogcGFyc2VTdHJpbmcocGxhbi5pdGVtVHlwZSwgMzIpLnRvTG93ZXJDYXNlKCl9IDoge30pXG59KTtcblxuY29uc3Qgbm9ybWFsaXplU3Vic2NyaXB0aW9uID0gKHN1YnNjcmlwdGlvbjogUGFydGlhbDxQYXltZW50U3Vic2NyaXB0aW9uVHlwZT4gPSB7fSkgPT4gKHtcbiAgLi4uc3Vic2NyaXB0aW9uLFxuICAuLi4oc3Vic2NyaXB0aW9uLml0ZW1JZCA/IHtpdGVtSWQ6IHBhcnNlSWQoc3Vic2NyaXB0aW9uLml0ZW1JZCl9IDoge30pLFxuICAuLi4oc3Vic2NyaXB0aW9uLml0ZW1UeXBlID8ge2l0ZW1UeXBlOiBwYXJzZVN0cmluZyhzdWJzY3JpcHRpb24uaXRlbVR5cGUsIDMyKS50b0xvd2VyQ2FzZSgpfSA6IHt9KSxcbiAgLi4uKHN1YnNjcmlwdGlvbi5wbGFuSWQgPyB7cGxhbklkOiBwYXJzZUlkKHN1YnNjcmlwdGlvbi5wbGFuSWQpfSA6IHt9KVxufSk7XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvbkFwaVJlc3VsdHNUeXBlID0ge1xuICBzdWJzY3JpcHRpb25zOiB7XG4gICAgYWRkUGxhbj86IFBheW1lbnRQbGFuVHlwZTtcbiAgICBhZGRTdWJzY3JpcHRpb24/OiBQYXltZW50U3Vic2NyaXB0aW9uVHlwZTtcbiAgICBkZWxldGVTdWJzY3JpcHRpb24/OiBib29sZWFuO1xuICAgIGdldFBsYW5CeUl0ZW0/OiBQYXltZW50UGxhblR5cGU7XG4gICAgZ2V0U3Vic2NyaXB0aW9uPzogUGF5bWVudFN1YnNjcmlwdGlvblR5cGU7XG4gICAgZ2V0U3Vic2NyaXB0aW9uTGlzdEJ5VXNlcj86IFBheW1lbnRTdWJzY3JpcHRpb25UeXBlW107XG4gICAgZ2V0U3Vic2NyaXB0aW9uQnlJdGVtPzogUGF5bWVudFN1YnNjcmlwdGlvblR5cGU7XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmlwdGlvbkFjdGlvbnMge1xuICBhZGRQbGFuOiAocGxhbjogUGFydGlhbDxQYXltZW50UGxhblR5cGU+LCBwbGFuUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxQYXltZW50UGxhblR5cGU+O1xuICBhZGRTdWJzY3JpcHRpb246IChzdWJzY3JpcHRpb246IFBhcnRpYWw8UGF5bWVudFN1YnNjcmlwdGlvblR5cGU+LCBzdWJzY3JpcHRpb25Qcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFBheW1lbnRTdWJzY3JpcHRpb25UeXBlPjtcbiAgZGVsZXRlU3Vic2NyaXB0aW9uOiAoaXRlbUlkOiBzdHJpbmcsIGl0ZW1UeXBlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBnZXRQbGFuQnlJdGVtOiAoaXRlbUlkOiBzdHJpbmcsIGl0ZW1UeXBlPzogc3RyaW5nLCBwbGFuUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxQYXltZW50UGxhblR5cGU+O1xuICBnZXRTdWJzY3JpcHRpb25MaXN0QnlVc2VyOiAodXNlcklkOiBzdHJpbmcsIGZyb20/OiBudW1iZXIsIHRvPzogbnVtYmVyLCBzdWJzY3JpcHRpb25Qcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFBheW1lbnRTdWJzY3JpcHRpb25UeXBlW10+O1xuICBnZXRTdWJzY3JpcHRpb25CeUl0ZW06IChpdGVtSWQ6IHN0cmluZywgaXRlbVR5cGU/OiBzdHJpbmcsIHN1YnNjcmlwdGlvblByb3BzPzogc3RyaW5nW10sIHJlcXVlc3RPcHRpb25zPzogQWN0aW9uUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvblR5cGU+O1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU3Vic2NyaXB0aW9uQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29ya1xuKTogU3Vic2NyaXB0aW9uQWN0aW9ucyA9PiB7XG4gIGNvbnN0IGFkZFBsYW4gPSBhc3luYyAoXG4gICAgcGxhbjogUGFydGlhbDxQYXltZW50UGxhblR5cGU+LFxuICAgIHBsYW5Qcm9wczogc3RyaW5nW10gPSBbXSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFBheW1lbnRQbGFuVHlwZT4gPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQbGFuID0gbm9ybWFsaXplUGxhbihwbGFuKTtcbiAgICBjb25zdCBpdGVtS2V5ID0gYnVpbGRJdGVtS2V5KFN0cmluZyhub3JtYWxpemVkUGxhbi5pdGVtSWQgfHwgJycpLCBTdHJpbmcobm9ybWFsaXplZFBsYW4uaXRlbVR5cGUgfHwgREVGQVVMVF9JVEVNX1RZUEUpKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgIHR5cGU6ICdQbGFuSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplZFBsYW5cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFN1YnNjcmlwdGlvbkFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBsYW4gPSBkYXRhPy5zdWJzY3JpcHRpb25zPy5hZGRQbGFuIHx8IHt9O1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7aXRlbUtleSwgcGxhbiwgdHlwZTogU1VCU0NSSVBUSU9OX0NPTlNUQU5UUy5BRERfUExBTl9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gYXdhaXQgYXBwTXV0YXRpb248UGF5bWVudFBsYW5UeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2FkZFBsYW4nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbLi4uREVGQVVMVF9QTEFOX0ZJRUxEUywgLi4ucGxhblByb3BzXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFNVQlNDUklQVElPTl9DT05TVEFOVFMuQUREX1BMQU5fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYHN1YnNjcmlwdGlvbi5nZXRQbGFuQnlJdGVtOiR7aXRlbUtleX1gKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0UGxhbkJ5SXRlbSA9IGFzeW5jIChcbiAgICBpdGVtSWQ6IHN0cmluZyxcbiAgICBpdGVtVHlwZTogc3RyaW5nID0gREVGQVVMVF9JVEVNX1RZUEUsXG4gICAgcGxhblByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8UGF5bWVudFBsYW5UeXBlPiA9PiB7XG4gICAgY29uc3QgaXRlbUtleSA9IGJ1aWxkSXRlbUtleShpdGVtSWQsIGl0ZW1UeXBlKTtcbiAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBnZXRDYWNoZWRSZXF1ZXN0PFBheW1lbnRQbGFuVHlwZT4oZmx1eCwgYHN1YnNjcmlwdGlvbi5nZXRQbGFuQnlJdGVtOiR7aXRlbUtleX1gLCB7aXRlbUlkLCBpdGVtVHlwZSwgcGxhblByb3BzfSwgcmVxdWVzdE9wdGlvbnMpO1xuXG4gICAgaWYoY2FjaGVkUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBpdGVtSWQ6IHt0eXBlOiAnSUQhJywgdmFsdWU6IHBhcnNlSWQoaXRlbUlkKX0sXG4gICAgICAgIGl0ZW1UeXBlOiB7dHlwZTogJ1N0cmluZycsIHZhbHVlOiBwYXJzZVN0cmluZyhpdGVtVHlwZSB8fCBERUZBVUxUX0lURU1fVFlQRSwgMzIpLnRvTG93ZXJDYXNlKCl9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogU3Vic2NyaXB0aW9uQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3QgcGxhbiA9IGRhdGE/LnN1YnNjcmlwdGlvbnM/LmdldFBsYW5CeUl0ZW0gfHwge307XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtpdGVtS2V5LCBwbGFuLCB0eXBlOiBTVUJTQ1JJUFRJT05fQ09OU1RBTlRTLkdFVF9QTEFOX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PFBheW1lbnRQbGFuVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRQbGFuQnlJdGVtJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgWy4uLkRFRkFVTFRfUExBTl9GSUVMRFMsIC4uLnBsYW5Qcm9wc10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gYXdhaXQgc2V0Q2FjaGVkUmVxdWVzdChmbHV4LCBgc3Vic2NyaXB0aW9uLmdldFBsYW5CeUl0ZW06JHtpdGVtS2V5fWAsIHtpdGVtSWQsIGl0ZW1UeXBlLCBwbGFuUHJvcHN9LCByZXN1bHQsIHJlcXVlc3RPcHRpb25zKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogU1VCU0NSSVBUSU9OX0NPTlNUQU5UUy5HRVRfUExBTl9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZFN1YnNjcmlwdGlvbiA9IGFzeW5jIChcbiAgICBzdWJzY3JpcHRpb246IFBhcnRpYWw8UGF5bWVudFN1YnNjcmlwdGlvblR5cGU+LFxuICAgIHN1YnNjcmlwdGlvblByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvblR5cGU+ID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkU3Vic2NyaXB0aW9uID0gbm9ybWFsaXplU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgY29uc3QgaXRlbUtleSA9IGJ1aWxkSXRlbUtleShTdHJpbmcobm9ybWFsaXplZFN1YnNjcmlwdGlvbi5pdGVtSWQgfHwgJycpLCBTdHJpbmcobm9ybWFsaXplZFN1YnNjcmlwdGlvbi5pdGVtVHlwZSB8fCBERUZBVUxUX0lURU1fVFlQRSkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgdHlwZTogJ1N1YnNjcmlwdGlvbklucHV0IScsXG4gICAgICAgICAgdmFsdWU6IG5vcm1hbGl6ZWRTdWJzY3JpcHRpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFN1YnNjcmlwdGlvbkFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGRhdGE/LnN1YnNjcmlwdGlvbnM/LmFkZFN1YnNjcmlwdGlvbiB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2l0ZW1LZXksIHN1YnNjcmlwdGlvbiwgdHlwZTogU1VCU0NSSVBUSU9OX0NPTlNUQU5UUy5BRERfU1VCU0NSSVBUSU9OX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxQYXltZW50U3Vic2NyaXB0aW9uVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdhZGRTdWJzY3JpcHRpb24nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbLi4uREVGQVVMVF9TVUJTQ1JJUFRJT05fRklFTERTLCAuLi5zdWJzY3JpcHRpb25Qcm9wc10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBTVUJTQ1JJUFRJT05fQ09OU1RBTlRTLkFERF9TVUJTQ1JJUFRJT05fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgYHN1YnNjcmlwdGlvbi5nZXRTdWJzY3JpcHRpb25CeUl0ZW06JHtpdGVtS2V5fWApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRTdWJzY3JpcHRpb25CeUl0ZW0gPSBhc3luYyAoXG4gICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgaXRlbVR5cGU6IHN0cmluZyA9IERFRkFVTFRfSVRFTV9UWVBFLFxuICAgIHN1YnNjcmlwdGlvblByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8UGF5bWVudFN1YnNjcmlwdGlvblR5cGU+ID0+IHtcbiAgICBjb25zdCBpdGVtS2V5ID0gYnVpbGRJdGVtS2V5KGl0ZW1JZCwgaXRlbVR5cGUpO1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8UGF5bWVudFN1YnNjcmlwdGlvblR5cGU+KGZsdXgsIGBzdWJzY3JpcHRpb24uZ2V0U3Vic2NyaXB0aW9uQnlJdGVtOiR7aXRlbUtleX1gLCB7aXRlbUlkLCBpdGVtVHlwZSwgc3Vic2NyaXB0aW9uUHJvcHN9LCByZXF1ZXN0T3B0aW9ucyk7XG5cbiAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGl0ZW1JZDoge3R5cGU6ICdJRCEnLCB2YWx1ZTogcGFyc2VJZChpdGVtSWQpfSxcbiAgICAgICAgaXRlbVR5cGU6IHt0eXBlOiAnU3RyaW5nJywgdmFsdWU6IHBhcnNlU3RyaW5nKGl0ZW1UeXBlIHx8IERFRkFVTFRfSVRFTV9UWVBFLCAzMikudG9Mb3dlckNhc2UoKX1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBTdWJzY3JpcHRpb25BcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBkYXRhPy5zdWJzY3JpcHRpb25zPy5nZXRTdWJzY3JpcHRpb25CeUl0ZW0gfHwge307XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtpdGVtS2V5LCBzdWJzY3JpcHRpb24sIHR5cGU6IFNVQlNDUklQVElPTl9DT05TVEFOVFMuR0VUX1NVQlNDUklQVElPTl9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxQYXltZW50U3Vic2NyaXB0aW9uVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRTdWJzY3JpcHRpb25CeUl0ZW0nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbLi4uREVGQVVMVF9TVUJTQ1JJUFRJT05fRklFTERTLCAuLi5zdWJzY3JpcHRpb25Qcm9wc10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gYXdhaXQgc2V0Q2FjaGVkUmVxdWVzdChmbHV4LCBgc3Vic2NyaXB0aW9uLmdldFN1YnNjcmlwdGlvbkJ5SXRlbToke2l0ZW1LZXl9YCwge2l0ZW1JZCwgaXRlbVR5cGUsIHN1YnNjcmlwdGlvblByb3BzfSwgcmVzdWx0LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFNVQlNDUklQVElPTl9DT05TVEFOVFMuR0VUX1NVQlNDUklQVElPTl9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFN1YnNjcmlwdGlvbkxpc3RCeVVzZXIgPSBhc3luYyAoXG4gICAgdXNlcklkOiBzdHJpbmcsXG4gICAgZnJvbTogbnVtYmVyID0gMCxcbiAgICB0bzogbnVtYmVyID0gMzAsXG4gICAgc3Vic2NyaXB0aW9uUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxQYXltZW50U3Vic2NyaXB0aW9uVHlwZVtdPiA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFVzZXJJZCA9IHBhcnNlSWQodXNlcklkKTtcbiAgICBjb25zdCBjYWNoZUtleSA9IGBzdWJzY3JpcHRpb24uZ2V0U3Vic2NyaXB0aW9uTGlzdEJ5VXNlcjoke25vcm1hbGl6ZWRVc2VySWR9OiR7ZnJvbX06JHt0b31gO1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8UGF5bWVudFN1YnNjcmlwdGlvblR5cGVbXT4oZmx1eCwgY2FjaGVLZXksIHtcbiAgICAgIGZyb20sXG4gICAgICBzdWJzY3JpcHRpb25Qcm9wcyxcbiAgICAgIHRvLFxuICAgICAgdXNlcklkOiBub3JtYWxpemVkVXNlcklkXG4gICAgfSwgcmVxdWVzdE9wdGlvbnMpO1xuXG4gICAgaWYoY2FjaGVkUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB1c2VySWQ6IHt0eXBlOiAnSUQhJywgdmFsdWU6IG5vcm1hbGl6ZWRVc2VySWR9LFxuICAgICAgICBmcm9tOiB7dHlwZTogJ0ludCcsIHZhbHVlOiBmcm9tfSxcbiAgICAgICAgdG86IHt0eXBlOiAnSW50JywgdmFsdWU6IHRvfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFN1YnNjcmlwdGlvbkFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBkYXRhPy5zdWJzY3JpcHRpb25zPy5nZXRTdWJzY3JpcHRpb25MaXN0QnlVc2VyIHx8IFtdO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7bGlzdCwgdHlwZTogU1VCU0NSSVBUSU9OX0NPTlNUQU5UUy5HRVRfU1VCU0NSSVBUSU9OX0xJU1RfU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8UGF5bWVudFN1YnNjcmlwdGlvblR5cGVbXT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRTdWJzY3JpcHRpb25MaXN0QnlVc2VyJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgWy4uLkRFRkFVTFRfU1VCU0NSSVBUSU9OX0ZJRUxEUywgLi4uc3Vic2NyaXB0aW9uUHJvcHNdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgY2FjaGVLZXksIHtcbiAgICAgICAgZnJvbSxcbiAgICAgICAgc3Vic2NyaXB0aW9uUHJvcHMsXG4gICAgICAgIHRvLFxuICAgICAgICB1c2VySWQ6IG5vcm1hbGl6ZWRVc2VySWRcbiAgICAgIH0sIHJlc3VsdCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBTVUJTQ1JJUFRJT05fQ09OU1RBTlRTLkdFVF9TVUJTQ1JJUFRJT05fTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZVN1YnNjcmlwdGlvbiA9IGFzeW5jIChcbiAgICBpdGVtSWQ6IHN0cmluZyxcbiAgICBpdGVtVHlwZTogc3RyaW5nID0gREVGQVVMVF9JVEVNX1RZUEUsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3QgaXRlbUtleSA9IGJ1aWxkSXRlbUtleShpdGVtSWQsIGl0ZW1UeXBlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgIHR5cGU6ICdTdWJzY3JpcHRpb25JbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBpdGVtSWQ6IHBhcnNlSWQoaXRlbUlkKSxcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBwYXJzZVN0cmluZyhpdGVtVHlwZSB8fCBERUZBVUxUX0lURU1fVFlQRSwgMzIpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBTdWJzY3JpcHRpb25BcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gQm9vbGVhbihkYXRhPy5zdWJzY3JpcHRpb25zPy5kZWxldGVTdWJzY3JpcHRpb24pO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7aXRlbUtleSwgc3VjY2VzcywgdHlwZTogU1VCU0NSSVBUSU9OX0NPTlNUQU5UUy5ERUxFVEVfU1VCU0NSSVBUSU9OX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxib29sZWFuPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2RlbGV0ZVN1YnNjcmlwdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogU1VCU0NSSVBUSU9OX0NPTlNUQU5UUy5ERUxFVEVfU1VCU0NSSVBUSU9OX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGBzdWJzY3JpcHRpb24uZ2V0U3Vic2NyaXB0aW9uQnlJdGVtOiR7aXRlbUtleX1gKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRQbGFuLFxuICAgIGFkZFN1YnNjcmlwdGlvbixcbiAgICBkZWxldGVTdWJzY3JpcHRpb24sXG4gICAgZ2V0UGxhbkJ5SXRlbSxcbiAgICBnZXRTdWJzY3JpcHRpb25MaXN0QnlVc2VyLFxuICAgIGdldFN1YnNjcmlwdGlvbkJ5SXRlbVxuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJwYXJzZUlkIiwicGFyc2VOdW0iLCJwYXJzZVN0cmluZyIsIlNVQlNDUklQVElPTl9DT05TVEFOVFMiLCJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJEQVRBX1RZUEUiLCJERUZBVUxUX0lURU1fVFlQRSIsIkRFRkFVTFRfUExBTl9GSUVMRFMiLCJERUZBVUxUX1NVQlNDUklQVElPTl9GSUVMRFMiLCJqb2luIiwiYnVpbGRJdGVtS2V5IiwiaXRlbUlkIiwiaXRlbVR5cGUiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVBsYW4iLCJwbGFuIiwiYW1vdW50IiwidW5kZWZpbmVkIiwiaW50ZXJ2YWwiLCJpbnRlcnZhbENvdW50Iiwibm9ybWFsaXplU3Vic2NyaXB0aW9uIiwic3Vic2NyaXB0aW9uIiwicGxhbklkIiwiY3JlYXRlU3Vic2NyaXB0aW9uQWN0aW9ucyIsImZsdXgiLCJhZGRQbGFuIiwicGxhblByb3BzIiwicmVxdWVzdE9wdGlvbnMiLCJub3JtYWxpemVkUGxhbiIsIml0ZW1LZXkiLCJTdHJpbmciLCJxdWVyeVZhcmlhYmxlcyIsIml0ZW0iLCJ0eXBlIiwidmFsdWUiLCJvblN1Y2Nlc3MiLCJkYXRhIiwic3Vic2NyaXB0aW9ucyIsImRpc3BhdGNoIiwiQUREX1BMQU5fU1VDQ0VTUyIsImVycm9yIiwiQUREX1BMQU5fRVJST1IiLCJnZXRQbGFuQnlJdGVtIiwiY2FjaGVkUmVzdWx0IiwiR0VUX1BMQU5fU1VDQ0VTUyIsInJlc3VsdCIsIkdFVF9QTEFOX0VSUk9SIiwiYWRkU3Vic2NyaXB0aW9uIiwic3Vic2NyaXB0aW9uUHJvcHMiLCJub3JtYWxpemVkU3Vic2NyaXB0aW9uIiwiQUREX1NVQlNDUklQVElPTl9TVUNDRVNTIiwiQUREX1NVQlNDUklQVElPTl9FUlJPUiIsImdldFN1YnNjcmlwdGlvbkJ5SXRlbSIsIkdFVF9TVUJTQ1JJUFRJT05fU1VDQ0VTUyIsIkdFVF9TVUJTQ1JJUFRJT05fRVJST1IiLCJnZXRTdWJzY3JpcHRpb25MaXN0QnlVc2VyIiwidXNlcklkIiwiZnJvbSIsInRvIiwibm9ybWFsaXplZFVzZXJJZCIsImNhY2hlS2V5IiwibGlzdCIsIkdFVF9TVUJTQ1JJUFRJT05fTElTVF9TVUNDRVNTIiwiR0VUX1NVQlNDUklQVElPTl9MSVNUX0VSUk9SIiwiZGVsZXRlU3Vic2NyaXB0aW9uIiwic3VjY2VzcyIsIkJvb2xlYW4iLCJERUxFVEVfU1VCU0NSSVBUSU9OX1NVQ0NFU1MiLCJE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