@finsemble/finsemble-ui 10.0.0-iocd.8 → 10.0.3-beta.2

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 (1537) hide show
  1. package/FEA.d.ts +1440 -1430
  2. package/FEA.d.ts.map +1 -1
  3. package/FEA.js +10 -10
  4. package/FEA.js.map +1 -1
  5. package/clients/Interop/FinsembleDesktopAgent.d.ts +235 -235
  6. package/clients/Interop/FinsembleDesktopAgent.d.ts.map +1 -1
  7. package/clients/Interop/FinsembleDesktopAgent.js +1331 -1308
  8. package/clients/Interop/FinsembleDesktopAgent.js.map +1 -1
  9. package/clients/Interop/InteropAdmin.d.ts +29 -29
  10. package/clients/Interop/InteropAdmin.js +98 -98
  11. package/clients/Interop/InteropAdmin.js.map +1 -1
  12. package/clients/Interop/index.d.ts +1 -1
  13. package/clients/Interop/index.js +2 -2
  14. package/clients/Interop/types.d.ts +445 -443
  15. package/clients/Interop/types.d.ts.map +1 -1
  16. package/clients/Interop/types.js +45 -45
  17. package/clients/Interop/types.js.map +1 -1
  18. package/clients/Startup/FSBLDesktop.d.ts +157 -157
  19. package/clients/Startup/FSBLDesktop.d.ts.map +1 -1
  20. package/clients/Startup/FSBLDesktop.js +447 -430
  21. package/clients/Startup/FSBLDesktop.js.map +1 -1
  22. package/clients/Startup/FSBLFreestanding.d.ts +27 -27
  23. package/clients/Startup/FSBLFreestanding.js +129 -129
  24. package/clients/Startup/FSBLFreestanding.js.map +1 -1
  25. package/clients/Startup/FSBLService.d.ts +7 -7
  26. package/clients/Startup/FSBLService.js +57 -57
  27. package/clients/Startup/RouterConfig.d.ts +37 -37
  28. package/clients/Startup/RouterConfig.d.ts.map +1 -1
  29. package/clients/Startup/RouterConfig.js +124 -115
  30. package/clients/Startup/RouterConfig.js.map +1 -1
  31. package/clients/Startup/SDDListeners.d.ts +11 -11
  32. package/clients/Startup/SDDListeners.d.ts.map +1 -1
  33. package/clients/Startup/SDDListeners.js +96 -96
  34. package/clients/Startup/SDDListeners.js.map +1 -1
  35. package/clients/Startup/Startup.d.ts +58 -58
  36. package/clients/Startup/Startup.js +101 -101
  37. package/clients/Startup/Startup.js.map +1 -1
  38. package/clients/Startup/index.d.ts +1 -1
  39. package/clients/Startup/index.js +2 -2
  40. package/clients/Startup/types.d.ts +81 -81
  41. package/clients/Startup/types.d.ts.map +1 -1
  42. package/clients/Startup/types.js +1 -1
  43. package/clients/Startup/unhandledErrors.d.ts +6 -6
  44. package/clients/Startup/unhandledErrors.d.ts.map +1 -1
  45. package/clients/Startup/unhandledErrors.js +77 -75
  46. package/clients/Startup/unhandledErrors.js.map +1 -1
  47. package/clients/Startup/windowStartup.d.ts +17 -17
  48. package/clients/Startup/windowStartup.d.ts.map +1 -1
  49. package/clients/Startup/windowStartup.js +491 -478
  50. package/clients/Startup/windowStartup.js.map +1 -1
  51. package/clients/StoreModel.d.ts +394 -394
  52. package/clients/StoreModel.d.ts.map +1 -1
  53. package/clients/StoreModel.js +906 -906
  54. package/clients/StoreModel.js.map +1 -1
  55. package/clients/appsClient.d.ts +618 -476
  56. package/clients/appsClient.d.ts.map +1 -1
  57. package/clients/appsClient.js +729 -710
  58. package/clients/appsClient.js.map +1 -1
  59. package/clients/authenticationClient.d.ts +190 -190
  60. package/clients/authenticationClient.d.ts.map +1 -1
  61. package/clients/authenticationClient.js +247 -247
  62. package/clients/authenticationClient.js.map +1 -1
  63. package/clients/configClient.d.ts +638 -638
  64. package/clients/configClient.d.ts.map +1 -1
  65. package/clients/configClient.js +969 -969
  66. package/clients/configClient.js.map +1 -1
  67. package/clients/controller/DialogManagerClientController.d.ts +77 -77
  68. package/clients/controller/DialogManagerClientController.js +215 -215
  69. package/clients/controller/DialogManagerClientController.js.map +1 -1
  70. package/clients/dialogManagerClient.d.ts +186 -186
  71. package/clients/dialogManagerClient.d.ts.map +1 -1
  72. package/clients/dialogManagerClient.js +479 -475
  73. package/clients/dialogManagerClient.js.map +1 -1
  74. package/clients/distributedStoreClient.d.ts +150 -151
  75. package/clients/distributedStoreClient.d.ts.map +1 -1
  76. package/clients/distributedStoreClient.js +256 -253
  77. package/clients/distributedStoreClient.js.map +1 -1
  78. package/clients/hotkeyClient.d.ts +128 -128
  79. package/clients/hotkeyClient.d.ts.map +1 -1
  80. package/clients/hotkeyClient.js +648 -648
  81. package/clients/hotkeyClient.js.map +1 -1
  82. package/clients/index.d.ts +16 -16
  83. package/clients/index.js +18 -18
  84. package/clients/launcherClient.d.ts +123 -123
  85. package/clients/launcherClient.d.ts.map +1 -1
  86. package/clients/launcherClient.js +64 -64
  87. package/clients/logger.d.ts +363 -363
  88. package/clients/logger.d.ts.map +1 -1
  89. package/clients/logger.js +940 -931
  90. package/clients/logger.js.map +1 -1
  91. package/clients/notificationClient.d.ts +310 -310
  92. package/clients/notificationClient.d.ts.map +1 -1
  93. package/clients/notificationClient.js +557 -557
  94. package/clients/notificationClient.js.map +1 -1
  95. package/clients/routerClient.d.ts +520 -520
  96. package/clients/routerClient.d.ts.map +1 -1
  97. package/clients/routerClient.js +1448 -1416
  98. package/clients/routerClient.js.map +1 -1
  99. package/clients/searchClient.d.ts +156 -156
  100. package/clients/searchClient.d.ts.map +1 -1
  101. package/clients/searchClient.js +282 -282
  102. package/clients/searchClient.js.map +1 -1
  103. package/clients/storageClient.d.ts +235 -235
  104. package/clients/storageClient.d.ts.map +1 -1
  105. package/clients/storageClient.js +308 -308
  106. package/clients/storageClient.js.map +1 -1
  107. package/clients/windowClient.d.ts +714 -712
  108. package/clients/windowClient.d.ts.map +1 -1
  109. package/clients/windowClient.js +1072 -1070
  110. package/clients/windowClient.js.map +1 -1
  111. package/clients/workspaceClient.d.ts +511 -511
  112. package/clients/workspaceClient.d.ts.map +1 -1
  113. package/clients/workspaceClient.js +758 -746
  114. package/clients/workspaceClient.js.map +1 -1
  115. package/common/Desktop.d.ts +56 -56
  116. package/common/Desktop.d.ts.map +1 -1
  117. package/common/Desktop.js +109 -97
  118. package/common/Desktop.js.map +1 -1
  119. package/common/FinsembleWindow.d.ts +823 -813
  120. package/common/FinsembleWindow.d.ts.map +1 -1
  121. package/common/FinsembleWindow.js +1458 -1416
  122. package/common/FinsembleWindow.js.map +1 -1
  123. package/common/Globals.d.ts +96 -96
  124. package/common/Globals.d.ts.map +1 -1
  125. package/common/Globals.js +29 -29
  126. package/common/Monitors.d.ts +160 -155
  127. package/common/Monitors.d.ts.map +1 -1
  128. package/common/Monitors.js +504 -447
  129. package/common/Monitors.js.map +1 -1
  130. package/common/Performance.d.ts +6 -6
  131. package/common/Performance.js +12 -12
  132. package/common/REST.d.ts +16 -16
  133. package/common/REST.js +84 -84
  134. package/common/REST.js.map +1 -1
  135. package/common/Singleton.d.ts +74 -72
  136. package/common/Singleton.d.ts.map +1 -1
  137. package/common/Singleton.js +95 -95
  138. package/common/Singleton.js.map +1 -1
  139. package/common/configUtil.d.ts +58 -58
  140. package/common/configUtil.d.ts.map +1 -1
  141. package/common/configUtil.js +347 -347
  142. package/common/configUtil.js.map +1 -1
  143. package/common/constants.d.ts +101 -101
  144. package/common/constants.js +171 -171
  145. package/common/dependencyManager.d.ts +170 -171
  146. package/common/dependencyManager.d.ts.map +1 -1
  147. package/common/dependencyManager.js +383 -383
  148. package/common/dependencyManager.js.map +1 -1
  149. package/common/events/FinsembleEvent.d.ts +29 -29
  150. package/common/events/FinsembleEvent.d.ts.map +1 -1
  151. package/common/events/FinsembleEvent.js +71 -71
  152. package/common/events/FinsembleEvent.js.map +1 -1
  153. package/common/events/PublicEventManager.d.ts +69 -68
  154. package/common/events/PublicEventManager.d.ts.map +1 -1
  155. package/common/events/PublicEventManager.js +192 -192
  156. package/common/events/PublicEventManager.js.map +1 -1
  157. package/common/index.d.ts +3 -3
  158. package/common/index.js +5 -5
  159. package/common/redux/getRemoteStore.d.ts +53 -53
  160. package/common/redux/getRemoteStore.d.ts.map +1 -1
  161. package/common/redux/getRemoteStore.js +50 -50
  162. package/common/redux/remoteReduxEnhancer.d.ts +28 -28
  163. package/common/redux/remoteReduxEnhancer.d.ts.map +1 -1
  164. package/common/redux/remoteReduxEnhancer.js +228 -218
  165. package/common/redux/remoteReduxEnhancer.js.map +1 -1
  166. package/common/redux/types.d.ts +26 -26
  167. package/common/redux/types.d.ts.map +1 -1
  168. package/common/redux/types.js +1 -1
  169. package/common/system.d.ts +328 -308
  170. package/common/system.d.ts.map +1 -1
  171. package/common/system.js +559 -545
  172. package/common/system.js.map +1 -1
  173. package/common/systemManagerClient.d.ts +91 -91
  174. package/common/systemManagerClient.d.ts.map +1 -1
  175. package/common/systemManagerClient.js +189 -189
  176. package/common/systemManagerClient.js.map +1 -1
  177. package/common/testPoint.d.ts +56 -56
  178. package/common/testPoint.js +105 -105
  179. package/common/testPoint.js.map +1 -1
  180. package/common/toast.d.ts +35 -35
  181. package/common/toast.d.ts.map +1 -1
  182. package/common/toast.js +93 -87
  183. package/common/toast.js.map +1 -1
  184. package/common/util.d.ts +141 -136
  185. package/common/util.d.ts.map +1 -1
  186. package/common/util.js +458 -445
  187. package/common/util.js.map +1 -1
  188. package/deprecated/SmartDesktopClient.d.ts +18 -18
  189. package/deprecated/SmartDesktopClient.js +18 -18
  190. package/deprecated/baseClient.d.ts +87 -87
  191. package/deprecated/baseClient.d.ts.map +1 -1
  192. package/deprecated/baseClient.js +123 -123
  193. package/deprecated/baseClient.js.map +1 -1
  194. package/deprecated/deprecatedFunctions.d.ts +44 -44
  195. package/deprecated/deprecatedFunctions.d.ts.map +1 -1
  196. package/deprecated/deprecatedFunctions.js +199 -199
  197. package/deprecated/deprecatedFunctions.js.map +1 -1
  198. package/deprecated/deprecatedlauncherClient.d.ts +162 -162
  199. package/deprecated/deprecatedlauncherClient.d.ts.map +1 -1
  200. package/deprecated/deprecatedlauncherClient.js +285 -285
  201. package/deprecated/deprecatedlauncherClient.js.map +1 -1
  202. package/deprecated/dragAndDropClient.d.ts +288 -288
  203. package/deprecated/dragAndDropClient.d.ts.map +1 -1
  204. package/deprecated/dragAndDropClient.js +753 -698
  205. package/deprecated/dragAndDropClient.js.map +1 -1
  206. package/deprecated/index.d.ts +1 -1
  207. package/deprecated/index.d.ts.map +1 -1
  208. package/deprecated/index.js +1 -1
  209. package/deprecated/legacyUIComponentNames.d.ts +23 -23
  210. package/deprecated/legacyUIComponentNames.js +23 -23
  211. package/deprecated/linkerClient.d.ts +422 -422
  212. package/deprecated/linkerClient.d.ts.map +1 -1
  213. package/deprecated/linkerClient.js +892 -892
  214. package/deprecated/linkerClient.js.map +1 -1
  215. package/index.d.ts +65 -70
  216. package/index.d.ts.map +1 -1
  217. package/index.js +3 -5
  218. package/index.js.map +1 -1
  219. package/main.d.ts +725 -862
  220. package/main.d.ts.map +1 -1
  221. package/main.js +85 -85
  222. package/package.json +10 -14
  223. package/platform/preloads/BloombergBridgeClient.d.ts +453 -453
  224. package/platform/preloads/BloombergBridgeClient.d.ts.map +1 -1
  225. package/platform/preloads/BloombergBridgeClient.js +568 -568
  226. package/platform/preloads/BloombergBridgeClient.js.map +1 -1
  227. package/platform/services/Interop/AuthSignVerify.d.ts +50 -50
  228. package/platform/services/Interop/AuthSignVerify.js +283 -283
  229. package/platform/services/Interop/AuthSignVerify.js.map +1 -1
  230. package/platform/services/Interop/modules/actions.d.ts +16 -16
  231. package/platform/services/Interop/modules/actions.js +10 -10
  232. package/platform/services/Interop/modules/types.d.ts +182 -182
  233. package/platform/services/Interop/modules/types.d.ts.map +1 -1
  234. package/platform/services/Interop/modules/types.js +1 -1
  235. package/platform/services/Interop/types.d.ts +634 -632
  236. package/platform/services/Interop/types.d.ts.map +1 -1
  237. package/platform/services/Interop/types.js +25 -25
  238. package/platform/services/Interop/types.js.map +1 -1
  239. package/platform/services/baseService.d.ts +82 -82
  240. package/platform/services/baseService.d.ts.map +1 -1
  241. package/platform/services/baseService.js +300 -300
  242. package/platform/services/baseService.js.map +1 -1
  243. package/platform/services/bloombergBridge/lib/types.d.ts +108 -108
  244. package/platform/services/bloombergBridge/lib/types.d.ts.map +1 -1
  245. package/platform/services/bloombergBridge/lib/types.js +39 -39
  246. package/platform/services/config/types.d.ts +42 -42
  247. package/platform/services/config/types.d.ts.map +1 -1
  248. package/platform/services/config/types.js +1 -1
  249. package/platform/services/distributedStore/storeUtils.d.ts +67 -67
  250. package/platform/services/distributedStore/storeUtils.d.ts.map +1 -1
  251. package/platform/services/distributedStore/storeUtils.js +238 -238
  252. package/platform/services/distributedStore/storeUtils.js.map +1 -1
  253. package/platform/services/index.d.ts +5 -5
  254. package/platform/services/index.js +9 -9
  255. package/platform/services/logger/types.d.ts +78 -78
  256. package/platform/services/logger/types.d.ts.map +1 -1
  257. package/platform/services/logger/types.js +1 -1
  258. package/platform/services/notification/index.d.ts +1 -1
  259. package/platform/services/notification/index.js +2 -2
  260. package/platform/services/notification/types/Action.d.ts +12 -12
  261. package/platform/services/notification/types/Action.js +7 -7
  262. package/platform/services/notification/types/ActionTypes.d.ts +16 -16
  263. package/platform/services/notification/types/ActionTypes.js +18 -18
  264. package/platform/services/notification/types/Callbacks.d.ts +7 -7
  265. package/platform/services/notification/types/Callbacks.js +1 -1
  266. package/platform/services/notification/types/Filter.d.ts +22 -22
  267. package/platform/services/notification/types/Filter.js +19 -19
  268. package/platform/services/notification/types/IAction.d.ts +51 -51
  269. package/platform/services/notification/types/IAction.js +1 -1
  270. package/platform/services/notification/types/IFilter.d.ts +24 -24
  271. package/platform/services/notification/types/IFilter.js +1 -1
  272. package/platform/services/notification/types/ILastIssued.d.ts +8 -8
  273. package/platform/services/notification/types/ILastIssued.js +1 -1
  274. package/platform/services/notification/types/IMuteFilter.d.ts +7 -7
  275. package/platform/services/notification/types/IMuteFilter.js +4 -4
  276. package/platform/services/notification/types/INotification.d.ts +100 -100
  277. package/platform/services/notification/types/INotification.d.ts.map +1 -1
  278. package/platform/services/notification/types/INotification.js +1 -1
  279. package/platform/services/notification/types/INotificationClient.d.ts +94 -94
  280. package/platform/services/notification/types/INotificationClient.js +1 -1
  281. package/platform/services/notification/types/INotificationHistoryOptions.d.ts +18 -18
  282. package/platform/services/notification/types/INotificationHistoryOptions.d.ts.map +1 -1
  283. package/platform/services/notification/types/INotificationHistoryOptions.js +1 -1
  284. package/platform/services/notification/types/INotificationService.d.ts +57 -57
  285. package/platform/services/notification/types/INotificationService.js +1 -1
  286. package/platform/services/notification/types/IPerformedAction.d.ts +9 -9
  287. package/platform/services/notification/types/IPerformedAction.js +1 -1
  288. package/platform/services/notification/types/ISnoozeTimer.d.ts +13 -13
  289. package/platform/services/notification/types/ISnoozeTimer.js +9 -9
  290. package/platform/services/notification/types/ISubscription.d.ts +15 -15
  291. package/platform/services/notification/types/ISubscription.js +1 -1
  292. package/platform/services/notification/types/LastIssued.d.ts +10 -10
  293. package/platform/services/notification/types/LastIssued.js +6 -6
  294. package/platform/services/notification/types/Meta.d.ts +12 -12
  295. package/platform/services/notification/types/Meta.js +6 -6
  296. package/platform/services/notification/types/Notification.d.ts +29 -29
  297. package/platform/services/notification/types/Notification.js +16 -16
  298. package/platform/services/notification/types/NotificationConfig.d.ts +21 -21
  299. package/platform/services/notification/types/NotificationConfig.js +1 -1
  300. package/platform/services/notification/types/NotificationHookTypes.d.ts +6 -6
  301. package/platform/services/notification/types/NotificationHookTypes.js +1 -1
  302. package/platform/services/notification/types/PerformedAction.d.ts +10 -10
  303. package/platform/services/notification/types/PerformedAction.js +7 -7
  304. package/platform/services/notification/types/SnoozeTimer.d.ts +7 -7
  305. package/platform/services/notification/types/SnoozeTimer.js +2 -2
  306. package/platform/services/notification/types/Subscription.d.ts +13 -13
  307. package/platform/services/notification/types/Subscription.js +14 -14
  308. package/platform/services/notification/types/index.d.ts +45 -45
  309. package/platform/services/notification/types/index.d.ts.map +1 -1
  310. package/platform/services/notification/types/index.js +23 -23
  311. package/platform/services/router/routerTransport.d.ts +80 -80
  312. package/platform/services/router/routerTransport.d.ts.map +1 -1
  313. package/platform/services/router/routerTransport.js +486 -476
  314. package/platform/services/router/routerTransport.js.map +1 -1
  315. package/platform/services/router/types.d.ts +214 -212
  316. package/platform/services/router/types.d.ts.map +1 -1
  317. package/platform/services/router/types.js +1 -1
  318. package/platform/services/search/index.d.ts +1 -1
  319. package/platform/services/search/index.js +2 -2
  320. package/platform/services/search/types.d.ts +29 -29
  321. package/platform/services/search/types.d.ts.map +1 -1
  322. package/platform/services/search/types.js +1 -1
  323. package/platform/services/storage/adapters/base.d.ts +3 -3
  324. package/platform/services/storage/adapters/base.js +63 -63
  325. package/platform/services/storage/adapters/base.js.map +1 -1
  326. package/platform/services/storage/adapters/types.d.ts +21 -21
  327. package/platform/services/storage/adapters/types.d.ts.map +1 -1
  328. package/platform/services/storage/adapters/types.js +1 -1
  329. package/platform/services/systemManager/_constants.d.ts +9 -9
  330. package/platform/services/systemManager/_constants.js +22 -22
  331. package/platform/services/systemManager/common.d.ts +13 -13
  332. package/platform/services/systemManager/common.js +19 -19
  333. package/platform/services/systemManager/types.d.ts +49 -48
  334. package/platform/services/systemManager/types.d.ts.map +1 -1
  335. package/platform/services/systemManager/types.js +11 -11
  336. package/platform/services/types.d.ts +10 -10
  337. package/platform/services/types.d.ts.map +1 -1
  338. package/platform/services/types.js +9 -9
  339. package/platform/services/window/index.d.ts +1 -1
  340. package/platform/services/window/index.js +2 -2
  341. package/platform/services/window/modules/actions.d.ts +76 -70
  342. package/platform/services/window/modules/actions.d.ts.map +1 -1
  343. package/platform/services/window/modules/actions.js +67 -62
  344. package/platform/services/window/modules/actions.js.map +1 -1
  345. package/platform/services/window/types.d.ts +1211 -1194
  346. package/platform/services/window/types.d.ts.map +1 -1
  347. package/platform/services/window/types.js +6 -1
  348. package/platform/services/window/types.js.map +1 -1
  349. package/platform/services/workspace/index.d.ts +1 -1
  350. package/platform/services/workspace/index.js +2 -2
  351. package/platform/services/workspace/types.d.ts +78 -78
  352. package/platform/services/workspace/types.d.ts.map +1 -1
  353. package/platform/services/workspace/types.js +1 -1
  354. package/platform/services/workspace/workspaceAdminAPI.d.ts +26 -26
  355. package/platform/services/workspace/workspaceAdminAPI.d.ts.map +1 -1
  356. package/platform/services/workspace/workspaceAdminAPI.js +44 -44
  357. package/platform/services/workspace/workspaceAdminAPI.js.map +1 -1
  358. package/react/actions/favoriteActions.d.ts +21 -21
  359. package/react/actions/favoriteActions.d.ts.map +1 -1
  360. package/react/actions/favoriteActions.js +8 -8
  361. package/react/actions/linkerActions.d.ts +48 -48
  362. package/react/actions/linkerActions.d.ts.map +1 -1
  363. package/react/actions/linkerActions.js +8 -8
  364. package/react/actions/menuActions.d.ts +16 -16
  365. package/react/actions/menuActions.d.ts.map +1 -1
  366. package/react/actions/menuActions.js +9 -9
  367. package/react/actions/rootActions.d.ts +9 -9
  368. package/react/actions/rootActions.d.ts.map +1 -1
  369. package/react/actions/rootActions.js +2 -2
  370. package/react/actions/searchActions.d.ts +12 -12
  371. package/react/actions/searchActions.d.ts.map +1 -1
  372. package/react/actions/searchActions.js +7 -7
  373. package/react/actions/smartDesktopDesignerActions.d.ts +56 -56
  374. package/react/actions/smartDesktopDesignerActions.d.ts.map +1 -1
  375. package/react/actions/smartDesktopDesignerActions.js +27 -27
  376. package/react/actions/toolbarActions.d.ts +61 -61
  377. package/react/actions/toolbarActions.d.ts.map +1 -1
  378. package/react/actions/toolbarActions.js +24 -24
  379. package/react/actions/workspaceActions.d.ts +11 -11
  380. package/react/actions/workspaceActions.d.ts.map +1 -1
  381. package/react/actions/workspaceActions.js +6 -6
  382. package/react/assets/css/advancedAppLauncher.css +1 -1
  383. package/react/assets/css/appCatalog.css +4 -4
  384. package/react/assets/css/dialogs.css +2 -6
  385. package/react/assets/css/favorites.css +1 -3
  386. package/react/assets/css/finsemble.css +0 -1
  387. package/react/assets/css/font-finance.css +4 -282
  388. package/react/assets/css/menus.css +5 -1
  389. package/react/assets/css/search.css +1 -2
  390. package/react/assets/css/toolbar.css +9 -1
  391. package/react/assets/css/userPreferences.css +1 -1
  392. package/react/components/FinsembleCSS.d.ts +17 -17
  393. package/react/components/FinsembleCSS.d.ts.map +1 -1
  394. package/react/components/FinsembleCSS.js +27 -26
  395. package/react/components/FinsembleCSS.js.map +1 -1
  396. package/react/components/FinsembleProvider.d.ts +28 -28
  397. package/react/components/FinsembleProvider.d.ts.map +1 -1
  398. package/react/components/FinsembleProvider.js +33 -33
  399. package/react/components/appCatalog/AppCatalog.d.ts +13 -13
  400. package/react/components/appCatalog/AppCatalog.d.ts.map +1 -1
  401. package/react/components/appCatalog/AppCatalog.js +33 -33
  402. package/react/components/appCatalog/AppCatalogComponent.d.ts +98 -98
  403. package/react/components/appCatalog/AppCatalogComponent.d.ts.map +1 -1
  404. package/react/components/appCatalog/AppCatalogComponent.js +307 -307
  405. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  406. package/react/components/appCatalog/components/AppCard.d.ts +64 -64
  407. package/react/components/appCatalog/components/AppCard.d.ts.map +1 -1
  408. package/react/components/appCatalog/components/AppCard.js +200 -200
  409. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  410. package/react/components/appCatalog/components/AppList.d.ts +8 -8
  411. package/react/components/appCatalog/components/AppList.d.ts.map +1 -1
  412. package/react/components/appCatalog/components/AppList.js +25 -25
  413. package/react/components/appCatalog/components/AppList.js.map +1 -1
  414. package/react/components/appCatalog/components/AppResults.d.ts +25 -21
  415. package/react/components/appCatalog/components/AppResults.d.ts.map +1 -1
  416. package/react/components/appCatalog/components/AppResults.js +71 -71
  417. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  418. package/react/components/appCatalog/components/Carousel.d.ts +42 -42
  419. package/react/components/appCatalog/components/Carousel.d.ts.map +1 -1
  420. package/react/components/appCatalog/components/Carousel.js +126 -126
  421. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  422. package/react/components/appCatalog/components/EmptyResults.d.ts +11 -7
  423. package/react/components/appCatalog/components/EmptyResults.d.ts.map +1 -1
  424. package/react/components/appCatalog/components/EmptyResults.js +12 -12
  425. package/react/components/appCatalog/components/Hero.d.ts +42 -42
  426. package/react/components/appCatalog/components/Hero.d.ts.map +1 -1
  427. package/react/components/appCatalog/components/Hero.js +83 -83
  428. package/react/components/appCatalog/components/Hero.js.map +1 -1
  429. package/react/components/appCatalog/components/Home.d.ts +29 -21
  430. package/react/components/appCatalog/components/Home.d.ts.map +1 -1
  431. package/react/components/appCatalog/components/Home.js +28 -28
  432. package/react/components/appCatalog/components/SearchBar.d.ts +57 -57
  433. package/react/components/appCatalog/components/SearchBar.js +107 -107
  434. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  435. package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +15 -11
  436. package/react/components/appCatalog/components/Showcase/AppDescription.d.ts.map +1 -1
  437. package/react/components/appCatalog/components/Showcase/AppDescription.js +15 -15
  438. package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +18 -14
  439. package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts.map +1 -1
  440. package/react/components/appCatalog/components/Showcase/AppDevNotes.js +30 -30
  441. package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts +37 -37
  442. package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts.map +1 -1
  443. package/react/components/appCatalog/components/Showcase/AppShowcase.js +128 -128
  444. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  445. package/react/components/appCatalog/components/Showcase/Header.d.ts +21 -21
  446. package/react/components/appCatalog/components/Showcase/Header.d.ts.map +1 -1
  447. package/react/components/appCatalog/components/Showcase/Header.js +58 -58
  448. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  449. package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts +14 -13
  450. package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts.map +1 -1
  451. package/react/components/appCatalog/components/Showcase/ImageCarousel.js +25 -25
  452. package/react/components/appCatalog/components/Showcase/Modal.d.ts +18 -18
  453. package/react/components/appCatalog/components/Showcase/Modal.d.ts.map +1 -1
  454. package/react/components/appCatalog/components/Showcase/Modal.js +23 -23
  455. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  456. package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts +10 -9
  457. package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts.map +1 -1
  458. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js +18 -18
  459. package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts +12 -11
  460. package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts.map +1 -1
  461. package/react/components/appCatalog/components/Showcase/SupportNotes.js +26 -26
  462. package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts +10 -9
  463. package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts.map +1 -1
  464. package/react/components/appCatalog/components/Showcase/VersionNotes.js +21 -21
  465. package/react/components/appCatalog/components/Showcase/defaults.d.ts +3 -3
  466. package/react/components/appCatalog/components/Showcase/defaults.js +3 -3
  467. package/react/components/appCatalog/components/Toast.d.ts +15 -11
  468. package/react/components/appCatalog/components/Toast.d.ts.map +1 -1
  469. package/react/components/appCatalog/components/Toast.js +38 -38
  470. package/react/components/appCatalog/components/Toast.js.map +1 -1
  471. package/react/components/appCatalog/components/helpers.d.ts +2 -2
  472. package/react/components/appCatalog/components/helpers.js +33 -33
  473. package/react/components/appCatalog/components/helpers.js.map +1 -1
  474. package/react/components/appCatalog/index.d.ts +1 -1
  475. package/react/components/appCatalog/index.js +1 -1
  476. package/react/components/appCatalog/modules/AppDirectory.d.ts +12 -12
  477. package/react/components/appCatalog/modules/AppDirectory.d.ts.map +1 -1
  478. package/react/components/appCatalog/modules/AppDirectory.js +10 -10
  479. package/react/components/appCatalog/modules/FDC3.d.ts +51 -51
  480. package/react/components/appCatalog/modules/FDC3.js +146 -146
  481. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  482. package/react/components/appCatalog/stores/appStore.d.ts +9 -9
  483. package/react/components/appCatalog/stores/appStore.js +47 -47
  484. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  485. package/react/components/appCatalog/stores/storeActions.d.ts +145 -145
  486. package/react/components/appCatalog/stores/storeActions.d.ts.map +1 -1
  487. package/react/components/appCatalog/stores/storeActions.js +423 -423
  488. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  489. package/react/components/bloomberg/BloombergFDC3.d.ts +3 -3
  490. package/react/components/bloomberg/BloombergFDC3.d.ts.map +1 -1
  491. package/react/components/bloomberg/BloombergFDC3.js +71 -71
  492. package/react/components/bloomberg/BloombergFDC3.js.map +1 -1
  493. package/react/components/bloomberg/BloombergLink.d.ts +11 -11
  494. package/react/components/bloomberg/BloombergLink.d.ts.map +1 -1
  495. package/react/components/bloomberg/BloombergLink.js +48 -48
  496. package/react/components/bloomberg/BloombergLink.js.map +1 -1
  497. package/react/components/bloomberg/BloombergRelay.d.ts +9 -9
  498. package/react/components/bloomberg/BloombergRelay.d.ts.map +1 -1
  499. package/react/components/bloomberg/BloombergRelay.js +74 -68
  500. package/react/components/bloomberg/BloombergRelay.js.map +1 -1
  501. package/react/components/common/Button.d.ts +35 -35
  502. package/react/components/common/Button.js +21 -21
  503. package/react/components/common/Button.js.map +1 -1
  504. package/react/components/common/ButtonIcon.d.ts +4 -4
  505. package/react/components/common/ButtonIcon.js +11 -11
  506. package/react/components/common/ButtonIcon.js.map +1 -1
  507. package/react/components/common/ButtonRow.d.ts +15 -15
  508. package/react/components/common/ButtonRow.js +24 -24
  509. package/react/components/common/ButtonRow.js.map +1 -1
  510. package/react/components/common/Checkbox.d.ts +12 -12
  511. package/react/components/common/Checkbox.js +19 -19
  512. package/react/components/common/Checkbox.js.map +1 -1
  513. package/react/components/common/ContextMenu.d.ts +13 -13
  514. package/react/components/common/ContextMenu.d.ts.map +1 -1
  515. package/react/components/common/ContextMenu.js +62 -62
  516. package/react/components/common/ContextMenu.js.map +1 -1
  517. package/react/components/common/Dropdown.d.ts +14 -14
  518. package/react/components/common/Dropdown.d.ts.map +1 -1
  519. package/react/components/common/Dropdown.js +82 -82
  520. package/react/components/common/Dropdown.js.map +1 -1
  521. package/react/components/common/DropdownButton.d.ts +10 -10
  522. package/react/components/common/DropdownButton.d.ts.map +1 -1
  523. package/react/components/common/DropdownButton.js +52 -52
  524. package/react/components/common/DropdownButton.js.map +1 -1
  525. package/react/components/common/ErrorBoundary.d.ts +35 -35
  526. package/react/components/common/ErrorBoundary.d.ts.map +1 -1
  527. package/react/components/common/ErrorBoundary.js +43 -43
  528. package/react/components/common/ErrorBoundary.js.map +1 -1
  529. package/react/components/common/FinsembleIcon.d.ts +20 -20
  530. package/react/components/common/FinsembleIcon.d.ts.map +1 -1
  531. package/react/components/common/FinsembleIcon.js +150 -150
  532. package/react/components/common/FinsembleIcon.js.map +1 -1
  533. package/react/components/common/FinsembleToggle.d.ts +9 -9
  534. package/react/components/common/FinsembleToggle.d.ts.map +1 -1
  535. package/react/components/common/FinsembleToggle.js +11 -11
  536. package/react/components/common/FinsembleToggleButtonBar.d.ts +15 -15
  537. package/react/components/common/FinsembleToggleButtonBar.d.ts.map +1 -1
  538. package/react/components/common/FinsembleToggleButtonBar.js +39 -39
  539. package/react/components/common/FinsembleToggleButtonBar.js.map +1 -1
  540. package/react/components/common/Header.d.ts +13 -13
  541. package/react/components/common/Header.d.ts.map +1 -1
  542. package/react/components/common/Header.js +20 -20
  543. package/react/components/common/Header.js.map +1 -1
  544. package/react/components/common/TimeSelect.d.ts +16 -16
  545. package/react/components/common/TimeSelect.d.ts.map +1 -1
  546. package/react/components/common/TimeSelect.js +173 -173
  547. package/react/components/common/TimeSelect.js.map +1 -1
  548. package/react/components/common/css/icon.css +0 -2
  549. package/react/components/common/loadCSSAsStyle.d.ts +3 -0
  550. package/react/components/common/loadCSSAsStyle.d.ts.map +1 -0
  551. package/react/components/common/loadCSSAsStyle.js +18 -0
  552. package/react/components/common/loadCSSAsStyle.js.map +1 -0
  553. package/react/components/downloadManager/DownloadItem.d.ts +14 -14
  554. package/react/components/downloadManager/DownloadItem.d.ts.map +1 -1
  555. package/react/components/downloadManager/DownloadItem.js +76 -76
  556. package/react/components/downloadManager/DownloadItem.js.map +1 -1
  557. package/react/components/downloadManager/DownloadManager.d.ts +9 -9
  558. package/react/components/downloadManager/DownloadManager.d.ts.map +1 -1
  559. package/react/components/downloadManager/DownloadManager.js +39 -39
  560. package/react/components/downloadManager/DownloadManager.js.map +1 -1
  561. package/react/components/downloadManager/index.d.ts +1 -1
  562. package/react/components/downloadManager/index.js +1 -1
  563. package/react/components/favorites/FavoriteMaker.d.ts +17 -17
  564. package/react/components/favorites/FavoriteMaker.d.ts.map +1 -1
  565. package/react/components/favorites/FavoriteMaker.js +41 -41
  566. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  567. package/react/components/favorites/FavoritesShell.d.ts +7 -7
  568. package/react/components/favorites/FavoritesShell.d.ts.map +1 -1
  569. package/react/components/favorites/FavoritesShell.js +40 -40
  570. package/react/components/favorites/FavoritesShell.js.map +1 -1
  571. package/react/components/fdc3Resolver/ResolverContainer.d.ts +12 -8
  572. package/react/components/fdc3Resolver/ResolverContainer.d.ts.map +1 -1
  573. package/react/components/fdc3Resolver/ResolverContainer.js +98 -98
  574. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  575. package/react/components/fdc3Resolver/ResolverDialog.d.ts +31 -31
  576. package/react/components/fdc3Resolver/ResolverDialog.d.ts.map +1 -1
  577. package/react/components/fdc3Resolver/ResolverDialog.js +167 -164
  578. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  579. package/react/components/fdc3Resolver/index.d.ts +1 -1
  580. package/react/components/fdc3Resolver/index.js +1 -1
  581. package/react/components/icon/Icon.d.ts +21 -21
  582. package/react/components/icon/Icon.d.ts.map +1 -1
  583. package/react/components/icon/Icon.js +102 -102
  584. package/react/components/icon/Icon.js.map +1 -1
  585. package/react/components/icon/index.d.ts +1 -1
  586. package/react/components/icon/index.js +1 -1
  587. package/react/components/index.d.ts +28 -28
  588. package/react/components/index.js +28 -28
  589. package/react/components/legacyControls/FinsembleDialog.d.ts +18 -18
  590. package/react/components/legacyControls/FinsembleDialog.d.ts.map +1 -1
  591. package/react/components/legacyControls/FinsembleDialog.js +47 -47
  592. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  593. package/react/components/legacyControls/FinsembleDialogButton.d.ts +16 -16
  594. package/react/components/legacyControls/FinsembleDialogButton.d.ts.map +1 -1
  595. package/react/components/legacyControls/FinsembleDialogButton.js +21 -21
  596. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  597. package/react/components/legacyControls/FinsembleDialogQuestion.d.ts +14 -14
  598. package/react/components/legacyControls/FinsembleDialogQuestion.d.ts.map +1 -1
  599. package/react/components/legacyControls/FinsembleDialogQuestion.js +16 -16
  600. package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +22 -22
  601. package/react/components/legacyControls/FinsembleDialogTextInput.d.ts.map +1 -1
  602. package/react/components/legacyControls/FinsembleDialogTextInput.js +64 -64
  603. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  604. package/react/components/legacyControls/FinsembleDnDContext.d.ts +46 -46
  605. package/react/components/legacyControls/FinsembleDnDContext.d.ts.map +1 -1
  606. package/react/components/legacyControls/FinsembleDnDContext.js +308 -308
  607. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  608. package/react/components/legacyControls/FinsembleDraggable.d.ts +15 -15
  609. package/react/components/legacyControls/FinsembleDraggable.d.ts.map +1 -1
  610. package/react/components/legacyControls/FinsembleDraggable.js +21 -21
  611. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  612. package/react/components/linker/LinkerMenu.d.ts +10 -6
  613. package/react/components/linker/LinkerMenu.d.ts.map +1 -1
  614. package/react/components/linker/LinkerMenu.js +155 -155
  615. package/react/components/linker/LinkerMenu.js.map +1 -1
  616. package/react/components/linker/LinkerMenuDeprecated.d.ts +13 -7
  617. package/react/components/linker/LinkerMenuDeprecated.d.ts.map +1 -1
  618. package/react/components/linker/LinkerMenuDeprecated.js +38 -38
  619. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  620. package/react/components/linker/index.d.ts +1 -1
  621. package/react/components/linker/index.js +1 -1
  622. package/react/components/linker/remoteRedux.d.ts +3 -3
  623. package/react/components/linker/remoteRedux.d.ts.map +1 -1
  624. package/react/components/linker/remoteRedux.js +10 -9
  625. package/react/components/linker/remoteRedux.js.map +1 -1
  626. package/react/components/menu/Menu.d.ts +29 -29
  627. package/react/components/menu/Menu.d.ts.map +1 -1
  628. package/react/components/menu/Menu.js +25 -25
  629. package/react/components/menu/Menu.js.map +1 -1
  630. package/react/components/menu/MenuAutoResizer.d.ts +19 -18
  631. package/react/components/menu/MenuAutoResizer.d.ts.map +1 -1
  632. package/react/components/menu/MenuAutoResizer.js +125 -67
  633. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  634. package/react/components/menu/MenuContent.d.ts +11 -11
  635. package/react/components/menu/MenuContent.d.ts.map +1 -1
  636. package/react/components/menu/MenuContent.js +14 -14
  637. package/react/components/menu/MenuHotKey.d.ts +20 -20
  638. package/react/components/menu/MenuHotKey.d.ts.map +1 -1
  639. package/react/components/menu/MenuHotKey.js +45 -45
  640. package/react/components/menu/MenuHotKey.js.map +1 -1
  641. package/react/components/menu/MenuItem.d.ts +19 -19
  642. package/react/components/menu/MenuItem.d.ts.map +1 -1
  643. package/react/components/menu/MenuItem.js +28 -21
  644. package/react/components/menu/MenuItem.js.map +1 -1
  645. package/react/components/menu/MenuPortal.d.ts +7 -7
  646. package/react/components/menu/MenuPortal.d.ts.map +1 -1
  647. package/react/components/menu/MenuPortal.js +321 -245
  648. package/react/components/menu/MenuPortal.js.map +1 -1
  649. package/react/components/menu/MenuShell.d.ts +31 -31
  650. package/react/components/menu/MenuShell.d.ts.map +1 -1
  651. package/react/components/menu/MenuShell.js +47 -47
  652. package/react/components/menu/MenuToggle.d.ts +7 -7
  653. package/react/components/menu/MenuToggle.d.ts.map +1 -1
  654. package/react/components/menu/MenuToggle.js +19 -18
  655. package/react/components/menu/MenuToggle.js.map +1 -1
  656. package/react/components/menu/index.d.ts +5 -5
  657. package/react/components/menu/index.js +5 -5
  658. package/react/components/menu/keyboardNavigation.d.ts +13 -13
  659. package/react/components/menu/keyboardNavigation.d.ts.map +1 -1
  660. package/react/components/menu/keyboardNavigation.js +197 -195
  661. package/react/components/menu/keyboardNavigation.js.map +1 -1
  662. package/react/components/menu/menuContext.d.ts +16 -17
  663. package/react/components/menu/menuContext.d.ts.map +1 -1
  664. package/react/components/menu/menuContext.js +8 -8
  665. package/react/components/menu/menuHelpers.d.ts +32 -32
  666. package/react/components/menu/menuHelpers.d.ts.map +1 -1
  667. package/react/components/menu/menuHelpers.js +112 -112
  668. package/react/components/menu/menuHelpers.js.map +1 -1
  669. package/react/components/notifications/components/NoNotifications.d.ts +3 -3
  670. package/react/components/notifications/components/NoNotifications.d.ts.map +1 -1
  671. package/react/components/notifications/components/NoNotifications.js +4 -4
  672. package/react/components/notifications/components/notificationsCenter/NotificationCenterUtils.d.ts +18 -18
  673. package/react/components/notifications/components/notificationsCenter/NotificationCenterUtils.d.ts.map +1 -1
  674. package/react/components/notifications/components/notificationsCenter/NotificationCenterUtils.js +83 -83
  675. package/react/components/notifications/components/notificationsCenter/NotificationCenterUtils.js.map +1 -1
  676. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.d.ts +5 -5
  677. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.d.ts.map +1 -1
  678. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +44 -44
  679. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  680. package/react/components/notifications/components/notificationsCenter/components/CardView.d.ts +4 -4
  681. package/react/components/notifications/components/notificationsCenter/components/CardView.d.ts.map +1 -1
  682. package/react/components/notifications/components/notificationsCenter/components/CardView.js +91 -91
  683. package/react/components/notifications/components/notificationsCenter/components/CardView.js.map +1 -1
  684. package/react/components/notifications/components/notificationsCenter/components/Drawer.d.ts +7 -7
  685. package/react/components/notifications/components/notificationsCenter/components/Drawer.d.ts.map +1 -1
  686. package/react/components/notifications/components/notificationsCenter/components/Drawer.js +4 -4
  687. package/react/components/notifications/components/notificationsCenter/components/DrawerControls.d.ts +3 -3
  688. package/react/components/notifications/components/notificationsCenter/components/DrawerControls.d.ts.map +1 -1
  689. package/react/components/notifications/components/notificationsCenter/components/DrawerControls.js +93 -93
  690. package/react/components/notifications/components/notificationsCenter/components/DrawerControls.js.map +1 -1
  691. package/react/components/notifications/components/notificationsCenter/components/DrawerHeader.d.ts +7 -7
  692. package/react/components/notifications/components/notificationsCenter/components/DrawerHeader.d.ts.map +1 -1
  693. package/react/components/notifications/components/notificationsCenter/components/DrawerHeader.js +80 -77
  694. package/react/components/notifications/components/notificationsCenter/components/DrawerHeader.js.map +1 -1
  695. package/react/components/notifications/components/notificationsCenter/components/ListView.d.ts +14 -14
  696. package/react/components/notifications/components/notificationsCenter/components/ListView.d.ts.map +1 -1
  697. package/react/components/notifications/components/notificationsCenter/components/ListView.js +150 -150
  698. package/react/components/notifications/components/notificationsCenter/components/ListView.js.map +1 -1
  699. package/react/components/notifications/components/notificationsCenter/components/NotificationCenterMainView.d.ts +18 -18
  700. package/react/components/notifications/components/notificationsCenter/components/NotificationCenterMainView.d.ts.map +1 -1
  701. package/react/components/notifications/components/notificationsCenter/components/NotificationCenterMainView.js +68 -68
  702. package/react/components/notifications/components/notificationsCenter/components/NotificationCenterMainView.js.map +1 -1
  703. package/react/components/notifications/components/notificationsCenter/components/NotificationDetailsView.d.ts +6 -6
  704. package/react/components/notifications/components/notificationsCenter/components/NotificationDetailsView.d.ts.map +1 -1
  705. package/react/components/notifications/components/notificationsCenter/components/NotificationDetailsView.js +63 -63
  706. package/react/components/notifications/components/notificationsCenter/components/NotificationDetailsView.js.map +1 -1
  707. package/react/components/notifications/components/notificationsCenter/components/NotificationsCenterWindow.d.ts +9 -9
  708. package/react/components/notifications/components/notificationsCenter/components/NotificationsCenterWindow.d.ts.map +1 -1
  709. package/react/components/notifications/components/notificationsCenter/components/NotificationsCenterWindow.js +312 -303
  710. package/react/components/notifications/components/notificationsCenter/components/NotificationsCenterWindow.js.map +1 -1
  711. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.d.ts +4 -4
  712. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.d.ts.map +1 -1
  713. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +220 -220
  714. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  715. package/react/components/notifications/components/shared/CheckButton.d.ts +5 -5
  716. package/react/components/notifications/components/shared/CheckButton.d.ts.map +1 -1
  717. package/react/components/notifications/components/shared/CheckButton.js +38 -38
  718. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  719. package/react/components/notifications/components/shared/IconButton.d.ts +10 -10
  720. package/react/components/notifications/components/shared/IconButton.d.ts.map +1 -1
  721. package/react/components/notifications/components/shared/IconButton.js +10 -10
  722. package/react/components/notifications/components/shared/IconButton.js.map +1 -1
  723. package/react/components/notifications/components/shared/NotificationCardShell.d.ts +20 -20
  724. package/react/components/notifications/components/shared/NotificationCardShell.d.ts.map +1 -1
  725. package/react/components/notifications/components/shared/NotificationCardShell.js +92 -92
  726. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  727. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.d.ts +5 -5
  728. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.d.ts.map +1 -1
  729. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js +31 -31
  730. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js.map +1 -1
  731. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyContentLogo.d.ts +4 -4
  732. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyContentLogo.d.ts.map +1 -1
  733. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyContentLogo.js +6 -6
  734. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.d.ts +8 -8
  735. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.d.ts.map +1 -1
  736. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js +12 -12
  737. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.d.ts +13 -13
  738. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.d.ts.map +1 -1
  739. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js +149 -149
  740. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js.map +1 -1
  741. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderLogo.d.ts +4 -4
  742. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderLogo.d.ts.map +1 -1
  743. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderLogo.js +7 -7
  744. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.d.ts +10 -10
  745. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.d.ts.map +1 -1
  746. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js +18 -18
  747. package/react/components/notifications/constants.d.ts +9 -9
  748. package/react/components/notifications/constants.js +11 -11
  749. package/react/components/notifications/css/notification-card.css +1 -1
  750. package/react/components/notifications/icons/EnvelopeClose.d.ts +2 -2
  751. package/react/components/notifications/icons/EnvelopeClose.d.ts.map +1 -1
  752. package/react/components/notifications/icons/EnvelopeClose.js +11 -11
  753. package/react/components/notifications/icons/EnvelopeOpen.d.ts +2 -2
  754. package/react/components/notifications/icons/EnvelopeOpen.d.ts.map +1 -1
  755. package/react/components/notifications/icons/EnvelopeOpen.js +10 -10
  756. package/react/components/notifications/icons/SnoozeIcon.d.ts +2 -2
  757. package/react/components/notifications/icons/SnoozeIcon.d.ts.map +1 -1
  758. package/react/components/notifications/icons/SnoozeIcon.js +12 -12
  759. package/react/components/notifications/index.d.ts +8 -8
  760. package/react/components/notifications/index.js +8 -8
  761. package/react/components/notifications/notificationsContext.d.ts +6 -7
  762. package/react/components/notifications/notificationsContext.d.ts.map +1 -1
  763. package/react/components/notifications/notificationsContext.js +6 -6
  764. package/react/components/notifications/types.d.ts +90 -90
  765. package/react/components/notifications/types.d.ts.map +1 -1
  766. package/react/components/notifications/types.js +1 -1
  767. package/react/components/notifications/utils.d.ts +12 -12
  768. package/react/components/notifications/utils.js +70 -70
  769. package/react/components/notifications/utils.js.map +1 -1
  770. package/react/components/processMonitor/ProcessMonitor.d.ts +6 -6
  771. package/react/components/processMonitor/ProcessMonitor.d.ts.map +1 -1
  772. package/react/components/processMonitor/ProcessMonitor.js +64 -64
  773. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  774. package/react/components/processMonitor/ProcessMonitorTypes.d.ts +22 -22
  775. package/react/components/processMonitor/ProcessMonitorTypes.d.ts.map +1 -1
  776. package/react/components/processMonitor/ProcessMonitorTypes.js +1 -1
  777. package/react/components/processMonitor/components/ChildWindow.d.ts +11 -11
  778. package/react/components/processMonitor/components/ChildWindow.d.ts.map +1 -1
  779. package/react/components/processMonitor/components/ChildWindow.js +32 -32
  780. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  781. package/react/components/processMonitor/components/ListHeader.d.ts +8 -8
  782. package/react/components/processMonitor/components/ListHeader.d.ts.map +1 -1
  783. package/react/components/processMonitor/components/ListHeader.js +50 -50
  784. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  785. package/react/components/processMonitor/components/Process.d.ts +9 -9
  786. package/react/components/processMonitor/components/Process.d.ts.map +1 -1
  787. package/react/components/processMonitor/components/Process.js +10 -10
  788. package/react/components/processMonitor/components/ProcessStatistics.d.ts +10 -10
  789. package/react/components/processMonitor/components/ProcessStatistics.d.ts.map +1 -1
  790. package/react/components/processMonitor/components/ProcessStatistics.js +64 -64
  791. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  792. package/react/components/processMonitor/constants.d.ts +8 -8
  793. package/react/components/processMonitor/constants.js +23 -23
  794. package/react/components/processMonitor/helpers.d.ts +17 -17
  795. package/react/components/processMonitor/helpers.js +48 -48
  796. package/react/components/processMonitor/helpers.js.map +1 -1
  797. package/react/components/processMonitor/index.d.ts +1 -1
  798. package/react/components/processMonitor/index.js +1 -1
  799. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +58 -58
  800. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts.map +1 -1
  801. package/react/components/processMonitor/stores/ProcessMonitorStore.js +264 -264
  802. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  803. package/react/components/quickComponentForm/QuickComponentForm.d.ts +7 -7
  804. package/react/components/quickComponentForm/QuickComponentForm.d.ts.map +1 -1
  805. package/react/components/quickComponentForm/QuickComponentForm.js +123 -123
  806. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  807. package/react/components/quickComponentForm/index.d.ts +1 -1
  808. package/react/components/quickComponentForm/index.js +1 -1
  809. package/react/components/search/Highlight.d.ts +12 -12
  810. package/react/components/search/Highlight.d.ts.map +1 -1
  811. package/react/components/search/Highlight.js +41 -41
  812. package/react/components/search/Highlight.js.map +1 -1
  813. package/react/components/search/Search.d.ts +5 -5
  814. package/react/components/search/Search.d.ts.map +1 -1
  815. package/react/components/search/Search.js +19 -27
  816. package/react/components/search/Search.js.map +1 -1
  817. package/react/components/search/SearchBestMatch.d.ts +6 -6
  818. package/react/components/search/SearchBestMatch.d.ts.map +1 -1
  819. package/react/components/search/SearchBestMatch.js +38 -38
  820. package/react/components/search/SearchBestMatch.js.map +1 -1
  821. package/react/components/search/SearchInput.d.ts +6 -6
  822. package/react/components/search/SearchInput.d.ts.map +1 -1
  823. package/react/components/search/SearchInput.js +26 -26
  824. package/react/components/search/SearchInput.js.map +1 -1
  825. package/react/components/search/SearchProviderResults.d.ts +5 -5
  826. package/react/components/search/SearchProviderResults.d.ts.map +1 -1
  827. package/react/components/search/SearchProviderResults.js +26 -26
  828. package/react/components/search/SearchResult.d.ts +12 -12
  829. package/react/components/search/SearchResult.d.ts.map +1 -1
  830. package/react/components/search/SearchResult.js +52 -47
  831. package/react/components/search/SearchResult.js.map +1 -1
  832. package/react/components/search/SearchResults.d.ts +3 -3
  833. package/react/components/search/SearchResults.d.ts.map +1 -1
  834. package/react/components/search/SearchResults.js +21 -21
  835. package/react/components/search/SearchResults.js.map +1 -1
  836. package/react/components/search/index.d.ts +1 -1
  837. package/react/components/search/index.js +1 -1
  838. package/react/components/shared/BellIcon.d.ts +3 -3
  839. package/react/components/shared/BellIcon.d.ts.map +1 -1
  840. package/react/components/shared/BellIcon.js +7 -7
  841. package/react/components/shared/BellIconCrossed.d.ts +3 -3
  842. package/react/components/shared/BellIconCrossed.d.ts.map +1 -1
  843. package/react/components/shared/BellIconCrossed.js +9 -9
  844. package/react/components/shared/Button.d.ts +9 -9
  845. package/react/components/shared/Button.d.ts.map +1 -1
  846. package/react/components/shared/Button.js +5 -5
  847. package/react/components/shared/ConditionalWrapper.d.ts +8 -8
  848. package/react/components/shared/ConditionalWrapper.d.ts.map +1 -1
  849. package/react/components/shared/ConditionalWrapper.js +5 -5
  850. package/react/components/shared/DefaultDropdownButton.d.ts +18 -18
  851. package/react/components/shared/DefaultDropdownButton.d.ts.map +1 -1
  852. package/react/components/shared/DefaultDropdownButton.js +117 -117
  853. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  854. package/react/components/shared/Tag.d.ts +16 -8
  855. package/react/components/shared/Tag.d.ts.map +1 -1
  856. package/react/components/shared/Tag.js +22 -22
  857. package/react/components/shared/TagsMenu.d.ts +36 -36
  858. package/react/components/shared/TagsMenu.js +77 -77
  859. package/react/components/shared/TagsMenu.js.map +1 -1
  860. package/react/components/shared/addProtocolToValidURL.d.ts +7 -7
  861. package/react/components/shared/addProtocolToValidURL.js +11 -11
  862. package/react/components/shared/openQuitConfirmationDialog.d.ts +1 -1
  863. package/react/components/shared/openQuitConfirmationDialog.d.ts.map +1 -1
  864. package/react/components/shared/openQuitConfirmationDialog.js +73 -71
  865. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  866. package/react/components/shared/validateURL.d.ts +19 -19
  867. package/react/components/shared/validateURL.js +29 -29
  868. package/react/components/singleInputDialog/SingleInputDialog.d.ts +12 -8
  869. package/react/components/singleInputDialog/SingleInputDialog.d.ts.map +1 -1
  870. package/react/components/singleInputDialog/SingleInputDialog.js +112 -112
  871. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  872. package/react/components/singleInputDialog/index.d.ts +1 -1
  873. package/react/components/singleInputDialog/index.js +1 -1
  874. package/react/components/system/System.d.ts +34 -34
  875. package/react/components/system/System.d.ts.map +1 -1
  876. package/react/components/system/System.js +92 -93
  877. package/react/components/system/System.js.map +1 -1
  878. package/react/components/system/SystemTrayComponentShell.d.ts +14 -14
  879. package/react/components/system/SystemTrayComponentShell.d.ts.map +1 -1
  880. package/react/components/system/SystemTrayComponentShell.js +47 -45
  881. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  882. package/react/components/system/index.d.ts +2 -2
  883. package/react/components/system/index.js +2 -2
  884. package/react/components/toolbar/AlwaysOnTop.d.ts +10 -10
  885. package/react/components/toolbar/AlwaysOnTop.d.ts.map +1 -1
  886. package/react/components/toolbar/AlwaysOnTop.js +95 -78
  887. package/react/components/toolbar/AlwaysOnTop.js.map +1 -1
  888. package/react/components/toolbar/AutoArrange.d.ts +12 -12
  889. package/react/components/toolbar/AutoArrange.d.ts.map +1 -1
  890. package/react/components/toolbar/AutoArrange.js +36 -36
  891. package/react/components/toolbar/AutoArrange.js.map +1 -1
  892. package/react/components/toolbar/DownloadButton.d.ts +10 -10
  893. package/react/components/toolbar/DownloadButton.d.ts.map +1 -1
  894. package/react/components/toolbar/DownloadButton.js +43 -46
  895. package/react/components/toolbar/DownloadButton.js.map +1 -1
  896. package/react/components/toolbar/DragHandle.d.ts +11 -11
  897. package/react/components/toolbar/DragHandle.d.ts.map +1 -1
  898. package/react/components/toolbar/DragHandle.js +49 -49
  899. package/react/components/toolbar/MinimizeAll.d.ts +11 -11
  900. package/react/components/toolbar/MinimizeAll.d.ts.map +1 -1
  901. package/react/components/toolbar/MinimizeAll.js +24 -24
  902. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  903. package/react/components/toolbar/NotificationControl.d.ts +12 -12
  904. package/react/components/toolbar/NotificationControl.d.ts.map +1 -1
  905. package/react/components/toolbar/NotificationControl.js +85 -79
  906. package/react/components/toolbar/NotificationControl.js.map +1 -1
  907. package/react/components/toolbar/RevealAll.d.ts +11 -11
  908. package/react/components/toolbar/RevealAll.d.ts.map +1 -1
  909. package/react/components/toolbar/RevealAll.js +26 -26
  910. package/react/components/toolbar/RevealAll.js.map +1 -1
  911. package/react/components/toolbar/SddButton.d.ts +6 -6
  912. package/react/components/toolbar/SddButton.d.ts.map +1 -1
  913. package/react/components/toolbar/SddButton.js +27 -27
  914. package/react/components/toolbar/SddButton.js.map +1 -1
  915. package/react/components/toolbar/ToolbarIcon.d.ts +6 -6
  916. package/react/components/toolbar/ToolbarIcon.d.ts.map +1 -1
  917. package/react/components/toolbar/ToolbarIcon.js +29 -41
  918. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  919. package/react/components/toolbar/ToolbarSection.d.ts +16 -16
  920. package/react/components/toolbar/ToolbarSection.d.ts.map +1 -1
  921. package/react/components/toolbar/ToolbarSection.js +41 -41
  922. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  923. package/react/components/toolbar/ToolbarShell.d.ts +20 -20
  924. package/react/components/toolbar/ToolbarShell.d.ts.map +1 -1
  925. package/react/components/toolbar/ToolbarShell.js +35 -35
  926. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  927. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.d.ts +10 -10
  928. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.d.ts.map +1 -1
  929. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js +26 -33
  930. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js.map +1 -1
  931. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/AdvancedAppLauncher.d.ts +43 -42
  932. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/AdvancedAppLauncher.d.ts.map +1 -1
  933. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/AdvancedAppLauncher.js +97 -89
  934. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  935. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AddNewAppForm.d.ts +93 -93
  936. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AddNewAppForm.js +334 -333
  937. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  938. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AddNewFolder.d.ts +10 -10
  939. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AddNewFolder.js +15 -15
  940. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppActionsMenu.d.ts +56 -56
  941. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppActionsMenu.js +175 -175
  942. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  943. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppDefinition.d.ts +33 -33
  944. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppDefinition.d.ts.map +1 -1
  945. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppDefinition.js +53 -53
  946. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppDefinition.js.map +1 -1
  947. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppTagsList.d.ts +16 -16
  948. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppTagsList.js +43 -43
  949. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/AppTagsList.js.map +1 -1
  950. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/Content.d.ts +38 -38
  951. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/Content.d.ts.map +1 -1
  952. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/Content.js +172 -171
  953. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/Content.js.map +1 -1
  954. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/FilterSort.d.ts +20 -20
  955. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/FilterSort.js +52 -52
  956. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/FilterSort.js.map +1 -1
  957. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/FoldersList.d.ts +59 -59
  958. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/FoldersList.d.ts.map +1 -1
  959. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/FoldersList.js +308 -295
  960. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/FoldersList.js.map +1 -1
  961. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/LeftNavBottomLinks.d.ts +25 -25
  962. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/LeftNavBottomLinks.js +103 -103
  963. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  964. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/NoAppsFound.d.ts +11 -11
  965. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/NoAppsFound.js +9 -9
  966. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/SearchBox.d.ts +18 -18
  967. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/SearchBox.js +51 -51
  968. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/SortBy.d.ts +13 -13
  969. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/SortBy.js +34 -34
  970. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/TagsList.d.ts +19 -19
  971. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/TagsList.js +38 -38
  972. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/ToggleFavoriteDropdown.d.ts +8 -8
  973. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/ToggleFavoriteDropdown.d.ts.map +1 -1
  974. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/ToggleFavoriteDropdown.js +26 -26
  975. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  976. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/modules/AppDirectory.d.ts +8 -8
  977. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/modules/AppDirectory.js +10 -10
  978. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/modules/FDC3.d.ts +55 -55
  979. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/modules/FDC3.d.ts.map +1 -1
  980. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/modules/FDC3.js +145 -145
  981. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/modules/FDC3.js.map +1 -1
  982. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/stores/LauncherStore.d.ts +5 -5
  983. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/stores/LauncherStore.js +21 -21
  984. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/stores/LauncherStore.js.map +1 -1
  985. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/stores/StoreActions.d.ts +96 -96
  986. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/stores/StoreActions.d.ts.map +1 -1
  987. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/stores/StoreActions.js +548 -546
  988. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/stores/StoreActions.js.map +1 -1
  989. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/utils/sort-functions.d.ts +18 -18
  990. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/utils/sort-functions.js +55 -55
  991. package/react/components/toolbar/advancedAppLauncher/finsembleAdvancedAppLauncher/utils/sort-functions.js.map +1 -1
  992. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/AdvancedAppLauncher.d.ts +16 -16
  993. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/AdvancedAppLauncher.d.ts.map +1 -1
  994. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/AdvancedAppLauncher.js +279 -240
  995. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  996. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AddNewAppForm.d.ts +96 -96
  997. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AddNewAppForm.js +329 -328
  998. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  999. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AppDefinition.d.ts +40 -40
  1000. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AppDefinition.d.ts.map +1 -1
  1001. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AppDefinition.js +61 -61
  1002. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AppDefinition.js.map +1 -1
  1003. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AppTagsList.d.ts +17 -17
  1004. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AppTagsList.js +42 -42
  1005. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/AppTagsList.js.map +1 -1
  1006. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/Content.d.ts +18 -18
  1007. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/Content.d.ts.map +1 -1
  1008. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/Content.js +114 -114
  1009. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/Content.js.map +1 -1
  1010. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/FoldersList.d.ts +62 -62
  1011. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/FoldersList.js +260 -271
  1012. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/FoldersList.js.map +1 -1
  1013. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/LeftNavBottomLinks.d.ts +9 -9
  1014. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/LeftNavBottomLinks.d.ts.map +1 -1
  1015. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/LeftNavBottomLinks.js +36 -37
  1016. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  1017. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/NoAppsFound.d.ts +11 -11
  1018. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/NoAppsFound.js +9 -9
  1019. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/SearchBox.d.ts +12 -12
  1020. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/SearchBox.js +23 -23
  1021. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/SortBy.d.ts +12 -12
  1022. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/SortBy.js +16 -16
  1023. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/SortBy.js.map +1 -1
  1024. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/TagsList.d.ts +11 -11
  1025. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/components/TagsList.js +15 -15
  1026. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/constants.d.ts +4 -4
  1027. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/constants.js +4 -4
  1028. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/initializeStore.d.ts +26 -26
  1029. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/initializeStore.d.ts.map +1 -1
  1030. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/initializeStore.js +44 -42
  1031. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/initializeStore.js.map +1 -1
  1032. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/types.d.ts +19 -19
  1033. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/types.d.ts.map +1 -1
  1034. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/types.js +1 -1
  1035. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/utils/sort-functions.d.ts +16 -16
  1036. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/utils/sort-functions.js +46 -46
  1037. package/react/components/toolbar/advancedAppLauncher/iocdAdvancedAppLauncher/utils/sort-functions.js.map +1 -1
  1038. package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +28 -28
  1039. package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts.map +1 -1
  1040. package/react/components/toolbar/appLauncher/AppLauncherMenu.js +48 -48
  1041. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  1042. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +29 -29
  1043. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts.map +1 -1
  1044. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +54 -48
  1045. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  1046. package/react/components/toolbar/appLauncher/appLauncher.css +0 -6
  1047. package/react/components/toolbar/appLauncher/components/componentList.d.ts +14 -7
  1048. package/react/components/toolbar/appLauncher/components/componentList.d.ts.map +1 -1
  1049. package/react/components/toolbar/appLauncher/components/componentList.js +133 -133
  1050. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  1051. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +44 -44
  1052. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts.map +1 -1
  1053. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +274 -259
  1054. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  1055. package/react/components/toolbar/bloomberg/BloombergStatus.d.ts +4 -4
  1056. package/react/components/toolbar/bloomberg/BloombergStatus.d.ts.map +1 -1
  1057. package/react/components/toolbar/bloomberg/BloombergStatus.js +109 -109
  1058. package/react/components/toolbar/bloomberg/BloombergStatus.js.map +1 -1
  1059. package/react/components/toolbar/dashbar/Dashbar.d.ts +4 -4
  1060. package/react/components/toolbar/dashbar/Dashbar.d.ts.map +1 -1
  1061. package/react/components/toolbar/dashbar/Dashbar.js +441 -449
  1062. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  1063. package/react/components/toolbar/dashbar/DashbarItem.d.ts +17 -17
  1064. package/react/components/toolbar/dashbar/DashbarItem.d.ts.map +1 -1
  1065. package/react/components/toolbar/dashbar/DashbarItem.js +58 -58
  1066. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  1067. package/react/components/toolbar/index.d.ts +18 -18
  1068. package/react/components/toolbar/index.js +18 -18
  1069. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +21 -21
  1070. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts.map +1 -1
  1071. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +62 -56
  1072. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  1073. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +23 -23
  1074. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts.map +1 -1
  1075. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +76 -76
  1076. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  1077. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +8 -3
  1078. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts.map +1 -1
  1079. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +50 -50
  1080. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +14 -9
  1081. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts.map +1 -1
  1082. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +24 -24
  1083. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +136 -136
  1084. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts.map +1 -1
  1085. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +684 -684
  1086. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  1087. package/react/components/userPreferences/NotificationsPreferencesContext.d.ts +14 -15
  1088. package/react/components/userPreferences/NotificationsPreferencesContext.d.ts.map +1 -1
  1089. package/react/components/userPreferences/NotificationsPreferencesContext.js +6 -6
  1090. package/react/components/userPreferences/UserPreferenceTypes.d.ts +9 -9
  1091. package/react/components/userPreferences/UserPreferenceTypes.d.ts.map +1 -1
  1092. package/react/components/userPreferences/UserPreferenceTypes.js +1 -1
  1093. package/react/components/userPreferences/UserPreferences.d.ts +20 -16
  1094. package/react/components/userPreferences/UserPreferences.d.ts.map +1 -1
  1095. package/react/components/userPreferences/UserPreferences.js +27 -24
  1096. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  1097. package/react/components/userPreferences/UserPreferencesBase.d.ts +3 -11
  1098. package/react/components/userPreferences/UserPreferencesBase.d.ts.map +1 -1
  1099. package/react/components/userPreferences/UserPreferencesBase.js +101 -101
  1100. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  1101. package/react/components/userPreferences/UserPreferencesWrapper.d.ts +4 -4
  1102. package/react/components/userPreferences/UserPreferencesWrapper.d.ts.map +1 -1
  1103. package/react/components/userPreferences/UserPreferencesWrapper.js +32 -28
  1104. package/react/components/userPreferences/UserPreferencesWrapper.js.map +1 -1
  1105. package/react/components/userPreferences/components/ContentSection.d.ts +23 -12
  1106. package/react/components/userPreferences/components/ContentSection.d.ts.map +1 -1
  1107. package/react/components/userPreferences/components/ContentSection.js +21 -21
  1108. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  1109. package/react/components/userPreferences/components/LeftNav.d.ts +14 -14
  1110. package/react/components/userPreferences/components/LeftNav.d.ts.map +1 -1
  1111. package/react/components/userPreferences/components/LeftNav.js +31 -31
  1112. package/react/components/userPreferences/components/LeftNav.js.map +1 -1
  1113. package/react/components/userPreferences/components/content/BloombergPreferences.d.ts +3 -3
  1114. package/react/components/userPreferences/components/content/BloombergPreferences.d.ts.map +1 -1
  1115. package/react/components/userPreferences/components/content/BloombergPreferences.js +58 -58
  1116. package/react/components/userPreferences/components/content/BloombergPreferences.js.map +1 -1
  1117. package/react/components/userPreferences/components/content/DashbarEditor.d.ts +8 -8
  1118. package/react/components/userPreferences/components/content/DashbarEditor.d.ts.map +1 -1
  1119. package/react/components/userPreferences/components/content/DashbarEditor.js +129 -129
  1120. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  1121. package/react/components/userPreferences/components/content/DashbarEditorItem.d.ts +10 -10
  1122. package/react/components/userPreferences/components/content/DashbarEditorItem.d.ts.map +1 -1
  1123. package/react/components/userPreferences/components/content/DashbarEditorItem.js +10 -10
  1124. package/react/components/userPreferences/components/content/General.d.ts +3 -4
  1125. package/react/components/userPreferences/components/content/General.d.ts.map +1 -1
  1126. package/react/components/userPreferences/components/content/General.js +48 -29
  1127. package/react/components/userPreferences/components/content/General.js.map +1 -1
  1128. package/react/components/userPreferences/components/content/Notifications.d.ts +11 -11
  1129. package/react/components/userPreferences/components/content/Notifications.d.ts.map +1 -1
  1130. package/react/components/userPreferences/components/content/Notifications.js +39 -35
  1131. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  1132. package/react/components/userPreferences/components/content/Workspaces.d.ts +88 -88
  1133. package/react/components/userPreferences/components/content/Workspaces.d.ts.map +1 -1
  1134. package/react/components/userPreferences/components/content/Workspaces.js +546 -529
  1135. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  1136. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.d.ts +3 -3
  1137. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.d.ts.map +1 -1
  1138. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +220 -211
  1139. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  1140. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.d.ts +3 -3
  1141. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.d.ts.map +1 -1
  1142. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +134 -134
  1143. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  1144. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.d.ts +3 -3
  1145. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.d.ts.map +1 -1
  1146. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +79 -79
  1147. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  1148. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.d.ts +4 -4
  1149. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.d.ts.map +1 -1
  1150. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js +39 -39
  1151. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js.map +1 -1
  1152. package/react/components/userPreferences/components/general/DownloadPreferences.d.ts +9 -9
  1153. package/react/components/userPreferences/components/general/DownloadPreferences.d.ts.map +1 -1
  1154. package/react/components/userPreferences/components/general/DownloadPreferences.js +119 -111
  1155. package/react/components/userPreferences/components/general/DownloadPreferences.js.map +1 -1
  1156. package/react/components/userPreferences/components/general/ResetPreferences.d.ts +3 -4
  1157. package/react/components/userPreferences/components/general/ResetPreferences.d.ts.map +1 -1
  1158. package/react/components/userPreferences/components/general/ResetPreferences.js +42 -36
  1159. package/react/components/userPreferences/components/general/ResetPreferences.js.map +1 -1
  1160. package/react/components/userPreferences/components/general/ScheduledClose.d.ts +10 -10
  1161. package/react/components/userPreferences/components/general/ScheduledClose.d.ts.map +1 -1
  1162. package/react/components/userPreferences/components/general/ScheduledClose.js +133 -76
  1163. package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
  1164. package/react/components/userPreferences/components/workspaces/WorkspaceButton.d.ts +8 -8
  1165. package/react/components/userPreferences/components/workspaces/WorkspaceButton.d.ts.map +1 -1
  1166. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js +8 -8
  1167. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
  1168. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.d.ts +6 -6
  1169. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.d.ts.map +1 -1
  1170. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.js +10 -10
  1171. package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts +36 -35
  1172. package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts.map +1 -1
  1173. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +85 -86
  1174. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
  1175. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.d.ts +8 -8
  1176. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.d.ts.map +1 -1
  1177. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js +6 -20
  1178. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js.map +1 -1
  1179. package/react/components/userPreferences/index.d.ts +6 -6
  1180. package/react/components/userPreferences/index.js +6 -6
  1181. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +39 -39
  1182. package/react/components/userPreferences/stores/UserPreferencesStore.js +140 -140
  1183. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  1184. package/react/components/utils.d.ts +49 -49
  1185. package/react/components/utils.d.ts.map +1 -1
  1186. package/react/components/utils.js +59 -59
  1187. package/react/components/utils.js.map +1 -1
  1188. package/react/components/windowTitleBar/AlwaysOnTopButton.d.ts +8 -8
  1189. package/react/components/windowTitleBar/AlwaysOnTopButton.d.ts.map +1 -1
  1190. package/react/components/windowTitleBar/AlwaysOnTopButton.js +28 -28
  1191. package/react/components/windowTitleBar/CloneButton.d.ts +2 -2
  1192. package/react/components/windowTitleBar/CloneButton.d.ts.map +1 -1
  1193. package/react/components/windowTitleBar/CloneButton.js +22 -22
  1194. package/react/components/windowTitleBar/CloneButton.js.map +1 -1
  1195. package/react/components/windowTitleBar/CloseButton.d.ts +2 -2
  1196. package/react/components/windowTitleBar/CloseButton.d.ts.map +1 -1
  1197. package/react/components/windowTitleBar/CloseButton.js +21 -21
  1198. package/react/components/windowTitleBar/CloseButton.js.map +1 -1
  1199. package/react/components/windowTitleBar/GroupingButton.d.ts +2 -2
  1200. package/react/components/windowTitleBar/GroupingButton.d.ts.map +1 -1
  1201. package/react/components/windowTitleBar/GroupingButton.js +24 -24
  1202. package/react/components/windowTitleBar/LinkerButton.d.ts +10 -6
  1203. package/react/components/windowTitleBar/LinkerButton.d.ts.map +1 -1
  1204. package/react/components/windowTitleBar/LinkerButton.js +116 -116
  1205. package/react/components/windowTitleBar/LinkerButton.js.map +1 -1
  1206. package/react/components/windowTitleBar/LinkerButtonDeprecated.d.ts +10 -6
  1207. package/react/components/windowTitleBar/LinkerButtonDeprecated.d.ts.map +1 -1
  1208. package/react/components/windowTitleBar/LinkerButtonDeprecated.js +62 -62
  1209. package/react/components/windowTitleBar/LinkerButtonDeprecated.js.map +1 -1
  1210. package/react/components/windowTitleBar/LinkerGroups.d.ts +6 -2
  1211. package/react/components/windowTitleBar/LinkerGroups.d.ts.map +1 -1
  1212. package/react/components/windowTitleBar/LinkerGroups.js +20 -20
  1213. package/react/components/windowTitleBar/LinkerGroupsDeprecated.d.ts +6 -2
  1214. package/react/components/windowTitleBar/LinkerGroupsDeprecated.d.ts.map +1 -1
  1215. package/react/components/windowTitleBar/LinkerGroupsDeprecated.js +34 -34
  1216. package/react/components/windowTitleBar/LinkerGroupsDeprecated.js.map +1 -1
  1217. package/react/components/windowTitleBar/MaximizeButton.d.ts +2 -2
  1218. package/react/components/windowTitleBar/MaximizeButton.d.ts.map +1 -1
  1219. package/react/components/windowTitleBar/MaximizeButton.js +17 -17
  1220. package/react/components/windowTitleBar/MinimizeButton.d.ts +2 -2
  1221. package/react/components/windowTitleBar/MinimizeButton.d.ts.map +1 -1
  1222. package/react/components/windowTitleBar/MinimizeButton.js +20 -20
  1223. package/react/components/windowTitleBar/ShareButton.d.ts +2 -2
  1224. package/react/components/windowTitleBar/ShareButton.d.ts.map +1 -1
  1225. package/react/components/windowTitleBar/ShareButton.js +23 -23
  1226. package/react/components/windowTitleBar/TabRegion.d.ts +30 -30
  1227. package/react/components/windowTitleBar/TabRegion.d.ts.map +1 -1
  1228. package/react/components/windowTitleBar/TabRegion.js +502 -490
  1229. package/react/components/windowTitleBar/TabRegion.js.map +1 -1
  1230. package/react/components/windowTitleBar/TabTitle.d.ts +7 -7
  1231. package/react/components/windowTitleBar/TabTitle.d.ts.map +1 -1
  1232. package/react/components/windowTitleBar/TabTitle.js +16 -16
  1233. package/react/components/windowTitleBar/TabTitle.js.map +1 -1
  1234. package/react/components/windowTitleBar/TitleEdit.d.ts +9 -9
  1235. package/react/components/windowTitleBar/TitleEdit.d.ts.map +1 -1
  1236. package/react/components/windowTitleBar/TitleEdit.js +30 -29
  1237. package/react/components/windowTitleBar/TitleEdit.js.map +1 -1
  1238. package/react/components/windowTitleBar/WindowTitleBarContext.d.ts +10 -11
  1239. package/react/components/windowTitleBar/WindowTitleBarContext.d.ts.map +1 -1
  1240. package/react/components/windowTitleBar/WindowTitleBarContext.js +2 -2
  1241. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +16 -16
  1242. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts.map +1 -1
  1243. package/react/components/windowTitleBar/WindowTitleBarShell.js +46 -45
  1244. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  1245. package/react/components/windowTitleBar/getOrCreateWindowTitleBarContainer.d.ts +9 -9
  1246. package/react/components/windowTitleBar/getOrCreateWindowTitleBarContainer.js +22 -22
  1247. package/react/components/windowTitleBar/index.d.ts +12 -12
  1248. package/react/components/windowTitleBar/index.js +12 -12
  1249. package/react/components/windowTitleBar/useKeyboardNavigation.d.ts +6 -6
  1250. package/react/components/windowTitleBar/useKeyboardNavigation.js +56 -56
  1251. package/react/components/windowTitleBar/useKeyboardNavigation.js.map +1 -1
  1252. package/react/components/windowTitleBar/useMaximize.d.ts +4 -4
  1253. package/react/components/windowTitleBar/useMaximize.js +22 -22
  1254. package/react/components/yesNoDialog/YesNoDialog.d.ts +11 -7
  1255. package/react/components/yesNoDialog/YesNoDialog.d.ts.map +1 -1
  1256. package/react/components/yesNoDialog/YesNoDialog.js +154 -154
  1257. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  1258. package/react/components/yesNoDialog/index.d.ts +1 -1
  1259. package/react/components/yesNoDialog/index.js +1 -1
  1260. package/react/components/yesNoDialog/timer.d.ts +15 -16
  1261. package/react/components/yesNoDialog/timer.d.ts.map +1 -1
  1262. package/react/components/yesNoDialog/timer.js +32 -32
  1263. package/react/components/yesNoDialog/timer.js.map +1 -1
  1264. package/react/hooks/index.d.ts +4 -4
  1265. package/react/hooks/index.js +4 -4
  1266. package/react/hooks/useAuth.d.ts +10 -10
  1267. package/react/hooks/useAuth.d.ts.map +1 -1
  1268. package/react/hooks/useAuth.js +26 -26
  1269. package/react/hooks/useDashbar.d.ts +8 -8
  1270. package/react/hooks/useDashbar.d.ts.map +1 -1
  1271. package/react/hooks/useDashbar.js +115 -115
  1272. package/react/hooks/useDashbar.js.map +1 -1
  1273. package/react/hooks/useDeepEffect.d.ts +5 -5
  1274. package/react/hooks/useDeepEffect.js +33 -33
  1275. package/react/hooks/useDeepEffect.js.map +1 -1
  1276. package/react/hooks/useDownloadItems.d.ts +23 -23
  1277. package/react/hooks/useDownloadItems.d.ts.map +1 -1
  1278. package/react/hooks/useDownloadItems.js +67 -67
  1279. package/react/hooks/useDownloadItems.js.map +1 -1
  1280. package/react/hooks/useDragRegion.d.ts +25 -26
  1281. package/react/hooks/useDragRegion.d.ts.map +1 -1
  1282. package/react/hooks/useDragRegion.js +73 -73
  1283. package/react/hooks/useDragRegion.js.map +1 -1
  1284. package/react/hooks/useFavorites.d.ts +24 -24
  1285. package/react/hooks/useFavorites.d.ts.map +1 -1
  1286. package/react/hooks/useFavorites.js +23 -23
  1287. package/react/hooks/useFavoritesShell.d.ts +14 -14
  1288. package/react/hooks/useFavoritesShell.d.ts.map +1 -1
  1289. package/react/hooks/useFavoritesShell.js +76 -83
  1290. package/react/hooks/useFavoritesShell.js.map +1 -1
  1291. package/react/hooks/useFloatingFocus.d.ts +15 -15
  1292. package/react/hooks/useFloatingFocus.d.ts.map +1 -1
  1293. package/react/hooks/useFloatingFocus.js +36 -35
  1294. package/react/hooks/useFloatingFocus.js.map +1 -1
  1295. package/react/hooks/useHotkey.d.ts +8 -8
  1296. package/react/hooks/useHotkey.js +24 -24
  1297. package/react/hooks/useInjectedTitleBar.d.ts +2 -2
  1298. package/react/hooks/useInjectedTitleBar.js +436 -436
  1299. package/react/hooks/useInjectedTitleBar.js.map +1 -1
  1300. package/react/hooks/useLinker.d.ts +4 -4
  1301. package/react/hooks/useLinker.js +111 -111
  1302. package/react/hooks/useLinker.js.map +1 -1
  1303. package/react/hooks/useMenu.d.ts +39 -39
  1304. package/react/hooks/useMenu.d.ts.map +1 -1
  1305. package/react/hooks/useMenu.js +51 -51
  1306. package/react/hooks/useNotifications.d.ts +76 -76
  1307. package/react/hooks/useNotifications.d.ts.map +1 -1
  1308. package/react/hooks/useNotifications.js +457 -434
  1309. package/react/hooks/useNotifications.js.map +1 -1
  1310. package/react/hooks/useOAuth.d.ts +16 -16
  1311. package/react/hooks/useOAuth.d.ts.map +1 -1
  1312. package/react/hooks/useOAuth.js +115 -115
  1313. package/react/hooks/useOAuth.js.map +1 -1
  1314. package/react/hooks/useOutsideClickDetector.d.ts +5 -5
  1315. package/react/hooks/useOutsideClickDetector.d.ts.map +1 -1
  1316. package/react/hooks/useOutsideClickDetector.js +17 -17
  1317. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  1318. package/react/hooks/usePubSub.d.ts +21 -21
  1319. package/react/hooks/usePubSub.js +38 -38
  1320. package/react/hooks/usePubSub.js.map +1 -1
  1321. package/react/hooks/useSearch.d.ts +14 -14
  1322. package/react/hooks/useSearch.d.ts.map +1 -1
  1323. package/react/hooks/useSearch.js +76 -72
  1324. package/react/hooks/useSearch.js.map +1 -1
  1325. package/react/hooks/useTitle.d.ts +17 -17
  1326. package/react/hooks/useTitle.d.ts.map +1 -1
  1327. package/react/hooks/useTitle.js +28 -28
  1328. package/react/hooks/useTitle.js.map +1 -1
  1329. package/react/hooks/useToolbar.d.ts +11 -11
  1330. package/react/hooks/useToolbar.js +162 -162
  1331. package/react/hooks/useToolbar.js.map +1 -1
  1332. package/react/index.d.ts +2 -2
  1333. package/react/index.js +2 -2
  1334. package/react/reducers/favoriteReducer.d.ts +11 -11
  1335. package/react/reducers/favoriteReducer.d.ts.map +1 -1
  1336. package/react/reducers/favoriteReducer.js +27 -27
  1337. package/react/reducers/linkerReducer.d.ts +13 -13
  1338. package/react/reducers/linkerReducer.d.ts.map +1 -1
  1339. package/react/reducers/linkerReducer.js +43 -43
  1340. package/react/reducers/linkerReducer.js.map +1 -1
  1341. package/react/reducers/menuReducer.d.ts +36 -36
  1342. package/react/reducers/menuReducer.d.ts.map +1 -1
  1343. package/react/reducers/menuReducer.js +65 -65
  1344. package/react/reducers/rootReducer.d.ts +239 -239
  1345. package/react/reducers/rootReducer.d.ts.map +1 -1
  1346. package/react/reducers/rootReducer.js +20 -20
  1347. package/react/reducers/searchReducer.d.ts +15 -15
  1348. package/react/reducers/searchReducer.d.ts.map +1 -1
  1349. package/react/reducers/searchReducer.js +27 -27
  1350. package/react/reducers/smartDesktopDesignerReducer.d.ts +5 -5
  1351. package/react/reducers/smartDesktopDesignerReducer.js +190 -190
  1352. package/react/reducers/smartDesktopDesignerReducer.js.map +1 -1
  1353. package/react/reducers/toolbarReducer.d.ts +10 -10
  1354. package/react/reducers/toolbarReducer.d.ts.map +1 -1
  1355. package/react/reducers/toolbarReducer.js +29 -29
  1356. package/react/reducers/workspaceReducer.d.ts +10 -10
  1357. package/react/reducers/workspaceReducer.d.ts.map +1 -1
  1358. package/react/reducers/workspaceReducer.js +26 -26
  1359. package/react/reducers/workspaceReducer.js.map +1 -1
  1360. package/react/store.d.ts +450 -450
  1361. package/react/store.d.ts.map +1 -1
  1362. package/react/store.js +17 -17
  1363. package/react/types/advancedAppLauncherTypes.d.ts +44 -44
  1364. package/react/types/advancedAppLauncherTypes.d.ts.map +1 -1
  1365. package/react/types/advancedAppLauncherTypes.js +1 -1
  1366. package/react/types/dashbarTypes.d.ts +44 -41
  1367. package/react/types/dashbarTypes.d.ts.map +1 -1
  1368. package/react/types/dashbarTypes.js +1 -1
  1369. package/react/types/favoriteTypes.d.ts +8 -8
  1370. package/react/types/favoriteTypes.d.ts.map +1 -1
  1371. package/react/types/favoriteTypes.js +1 -1
  1372. package/react/types/fdc3.d.ts +27 -29
  1373. package/react/types/fdc3.d.ts.map +1 -1
  1374. package/react/types/fdc3.js +6 -6
  1375. package/react/types/hotkeyTypes.d.ts +1 -1
  1376. package/react/types/hotkeyTypes.d.ts.map +1 -1
  1377. package/react/types/hotkeyTypes.js +1 -1
  1378. package/react/types/linkerTypes.d.ts +27 -27
  1379. package/react/types/linkerTypes.d.ts.map +1 -1
  1380. package/react/types/linkerTypes.js +2 -2
  1381. package/react/types/smartDesktopDesignerTypes.d.ts +227 -227
  1382. package/react/types/smartDesktopDesignerTypes.d.ts.map +1 -1
  1383. package/react/types/smartDesktopDesignerTypes.js +19 -19
  1384. package/react/types/workspaceTypes.d.ts +30 -30
  1385. package/react/types/workspaceTypes.d.ts.map +1 -1
  1386. package/react/types/workspaceTypes.js +1 -1
  1387. package/services/index.d.ts +6 -0
  1388. package/services/index.d.ts.map +1 -0
  1389. package/services/index.js +6 -0
  1390. package/services/index.js.map +1 -0
  1391. package/services/logger/types.d.ts +2 -0
  1392. package/services/logger/types.d.ts.map +1 -0
  1393. package/services/logger/types.js +2 -0
  1394. package/services/logger/types.js.map +1 -0
  1395. package/services/search/types.d.ts +2 -0
  1396. package/services/search/types.d.ts.map +1 -0
  1397. package/services/search/types.js +2 -0
  1398. package/services/search/types.js.map +1 -0
  1399. package/services/storage/adapters/types.d.ts +2 -0
  1400. package/services/storage/adapters/types.d.ts.map +1 -0
  1401. package/services/storage/adapters/types.js +2 -0
  1402. package/services/storage/adapters/types.js.map +1 -0
  1403. package/services/window/types.d.ts +2 -0
  1404. package/services/window/types.d.ts.map +1 -0
  1405. package/services/window/types.js +2 -0
  1406. package/services/window/types.js.map +1 -0
  1407. package/services/workspace/types.d.ts +2 -0
  1408. package/services/workspace/types.d.ts.map +1 -0
  1409. package/services/workspace/types.js +2 -0
  1410. package/services/workspace/types.js.map +1 -0
  1411. package/typedoc-types.d.ts +8 -8
  1412. package/typedoc-types.d.ts.map +1 -1
  1413. package/typedoc-types.js +5 -5
  1414. package/types.d.ts +15 -16
  1415. package/types.d.ts.map +1 -1
  1416. package/types.js +4 -7
  1417. package/types.js.map +1 -1
  1418. package/react/components/userPreferences/FinsembleUserPreferences.d.ts +0 -17
  1419. package/react/components/userPreferences/FinsembleUserPreferences.d.ts.map +0 -1
  1420. package/react/components/userPreferences/FinsembleUserPreferences.js +0 -28
  1421. package/react/components/userPreferences/FinsembleUserPreferences.js.map +0 -1
  1422. package/react/components/userPreferences/iocdUserPreferences.d.ts +0 -17
  1423. package/react/components/userPreferences/iocdUserPreferences.d.ts.map +0 -1
  1424. package/react/components/userPreferences/iocdUserPreferences.js +0 -49
  1425. package/react/components/userPreferences/iocdUserPreferences.js.map +0 -1
  1426. package/react/components/userPreferences/utils.d.ts +0 -3
  1427. package/react/components/userPreferences/utils.d.ts.map +0 -1
  1428. package/react/components/userPreferences/utils.js +0 -11
  1429. package/react/components/userPreferences/utils.js.map +0 -1
  1430. package/typedefs/FDC3/api/AppIdentifier.d.ts +0 -22
  1431. package/typedefs/FDC3/api/AppIdentifier.d.ts.map +0 -1
  1432. package/typedefs/FDC3/api/AppIdentifier.js +0 -6
  1433. package/typedefs/FDC3/api/AppIdentifier.js.map +0 -1
  1434. package/typedefs/FDC3/api/AppIntent.d.ts +0 -16
  1435. package/typedefs/FDC3/api/AppIntent.d.ts.map +0 -1
  1436. package/typedefs/FDC3/api/AppIntent.js +0 -6
  1437. package/typedefs/FDC3/api/AppIntent.js.map +0 -1
  1438. package/typedefs/FDC3/api/AppMetadata.d.ts +0 -41
  1439. package/typedefs/FDC3/api/AppMetadata.d.ts.map +0 -1
  1440. package/typedefs/FDC3/api/AppMetadata.js +0 -6
  1441. package/typedefs/FDC3/api/AppMetadata.js.map +0 -1
  1442. package/typedefs/FDC3/api/Channel.d.ts +0 -73
  1443. package/typedefs/FDC3/api/Channel.d.ts.map +0 -1
  1444. package/typedefs/FDC3/api/Channel.js +0 -6
  1445. package/typedefs/FDC3/api/Channel.js.map +0 -1
  1446. package/typedefs/FDC3/api/ContextMetadata.d.ts +0 -19
  1447. package/typedefs/FDC3/api/ContextMetadata.d.ts.map +0 -1
  1448. package/typedefs/FDC3/api/ContextMetadata.js +0 -6
  1449. package/typedefs/FDC3/api/ContextMetadata.js.map +0 -1
  1450. package/typedefs/FDC3/api/DesktopAgent.d.ts +0 -549
  1451. package/typedefs/FDC3/api/DesktopAgent.d.ts.map +0 -1
  1452. package/typedefs/FDC3/api/DesktopAgent.js +0 -6
  1453. package/typedefs/FDC3/api/DesktopAgent.js.map +0 -1
  1454. package/typedefs/FDC3/api/DisplayMetadata.d.ts +0 -24
  1455. package/typedefs/FDC3/api/DisplayMetadata.d.ts.map +0 -1
  1456. package/typedefs/FDC3/api/DisplayMetadata.js +0 -6
  1457. package/typedefs/FDC3/api/DisplayMetadata.js.map +0 -1
  1458. package/typedefs/FDC3/api/Errors.d.ts +0 -67
  1459. package/typedefs/FDC3/api/Errors.d.ts.map +0 -1
  1460. package/typedefs/FDC3/api/Errors.js +0 -72
  1461. package/typedefs/FDC3/api/Errors.js.map +0 -1
  1462. package/typedefs/FDC3/api/Icon.d.ts +0 -13
  1463. package/typedefs/FDC3/api/Icon.d.ts.map +0 -1
  1464. package/typedefs/FDC3/api/Icon.js +0 -6
  1465. package/typedefs/FDC3/api/Icon.js.map +0 -1
  1466. package/typedefs/FDC3/api/Image.d.ts +0 -15
  1467. package/typedefs/FDC3/api/Image.d.ts.map +0 -1
  1468. package/typedefs/FDC3/api/Image.js +0 -6
  1469. package/typedefs/FDC3/api/Image.js.map +0 -1
  1470. package/typedefs/FDC3/api/ImplementationMetadata.d.ts +0 -36
  1471. package/typedefs/FDC3/api/ImplementationMetadata.d.ts.map +0 -1
  1472. package/typedefs/FDC3/api/ImplementationMetadata.js +0 -6
  1473. package/typedefs/FDC3/api/ImplementationMetadata.js.map +0 -1
  1474. package/typedefs/FDC3/api/IntentMetadata.d.ts +0 -18
  1475. package/typedefs/FDC3/api/IntentMetadata.d.ts.map +0 -1
  1476. package/typedefs/FDC3/api/IntentMetadata.js +0 -6
  1477. package/typedefs/FDC3/api/IntentMetadata.js.map +0 -1
  1478. package/typedefs/FDC3/api/IntentResolution.d.ts +0 -68
  1479. package/typedefs/FDC3/api/IntentResolution.d.ts.map +0 -1
  1480. package/typedefs/FDC3/api/IntentResolution.js +0 -6
  1481. package/typedefs/FDC3/api/IntentResolution.js.map +0 -1
  1482. package/typedefs/FDC3/api/Listener.d.ts +0 -11
  1483. package/typedefs/FDC3/api/Listener.d.ts.map +0 -1
  1484. package/typedefs/FDC3/api/Listener.js +0 -6
  1485. package/typedefs/FDC3/api/Listener.js.map +0 -1
  1486. package/typedefs/FDC3/api/Methods.d.ts +0 -72
  1487. package/typedefs/FDC3/api/Methods.d.ts.map +0 -1
  1488. package/typedefs/FDC3/api/Methods.js +0 -199
  1489. package/typedefs/FDC3/api/Methods.js.map +0 -1
  1490. package/typedefs/FDC3/api/PrivateChannel.d.ts +0 -54
  1491. package/typedefs/FDC3/api/PrivateChannel.d.ts.map +0 -1
  1492. package/typedefs/FDC3/api/PrivateChannel.js +0 -6
  1493. package/typedefs/FDC3/api/PrivateChannel.js.map +0 -1
  1494. package/typedefs/FDC3/api/RecommendedChannels.d.ts +0 -14
  1495. package/typedefs/FDC3/api/RecommendedChannels.d.ts.map +0 -1
  1496. package/typedefs/FDC3/api/RecommendedChannels.js +0 -80
  1497. package/typedefs/FDC3/api/RecommendedChannels.js.map +0 -1
  1498. package/typedefs/FDC3/api/Types.d.ts +0 -30
  1499. package/typedefs/FDC3/api/Types.d.ts.map +0 -1
  1500. package/typedefs/FDC3/api/Types.js +0 -6
  1501. package/typedefs/FDC3/api/Types.js.map +0 -1
  1502. package/typedefs/FDC3/bridging/BridgingTypes.d.ts +0 -3967
  1503. package/typedefs/FDC3/bridging/BridgingTypes.d.ts.map +0 -1
  1504. package/typedefs/FDC3/bridging/BridgingTypes.js +0 -1857
  1505. package/typedefs/FDC3/bridging/BridgingTypes.js.map +0 -1
  1506. package/typedefs/FDC3/context/ContextType.d.ts +0 -41
  1507. package/typedefs/FDC3/context/ContextType.d.ts.map +0 -1
  1508. package/typedefs/FDC3/context/ContextType.js +0 -30
  1509. package/typedefs/FDC3/context/ContextType.js.map +0 -1
  1510. package/typedefs/FDC3/context/ContextTypes.d.ts +0 -2000
  1511. package/typedefs/FDC3/context/ContextTypes.d.ts.map +0 -1
  1512. package/typedefs/FDC3/context/ContextTypes.js +0 -873
  1513. package/typedefs/FDC3/context/ContextTypes.js.map +0 -1
  1514. package/typedefs/FDC3/index.d.ts +0 -34
  1515. package/typedefs/FDC3/index.d.ts.map +0 -1
  1516. package/typedefs/FDC3/index.js +0 -30
  1517. package/typedefs/FDC3/index.js.map +0 -1
  1518. package/typedefs/FDC3/intents/Intents.d.ts +0 -36
  1519. package/typedefs/FDC3/intents/Intents.d.ts.map +0 -1
  1520. package/typedefs/FDC3/intents/Intents.js +0 -29
  1521. package/typedefs/FDC3/intents/Intents.js.map +0 -1
  1522. package/typedefs/FDC3/internal/contextConfiguration.d.ts +0 -2
  1523. package/typedefs/FDC3/internal/contextConfiguration.d.ts.map +0 -1
  1524. package/typedefs/FDC3/internal/contextConfiguration.js +0 -5
  1525. package/typedefs/FDC3/internal/contextConfiguration.js.map +0 -1
  1526. package/typedefs/FDC3/internal/intentConfiguration.d.ts +0 -2
  1527. package/typedefs/FDC3/internal/intentConfiguration.d.ts.map +0 -1
  1528. package/typedefs/FDC3/internal/intentConfiguration.js +0 -5
  1529. package/typedefs/FDC3/internal/intentConfiguration.js.map +0 -1
  1530. package/typedefs/FDC3/internal/typeHelpers.d.ts +0 -7
  1531. package/typedefs/FDC3/internal/typeHelpers.d.ts.map +0 -1
  1532. package/typedefs/FDC3/internal/typeHelpers.js +0 -5
  1533. package/typedefs/FDC3/internal/typeHelpers.js.map +0 -1
  1534. package/typedefs/index.d.ts +0 -2
  1535. package/typedefs/index.d.ts.map +0 -1
  1536. package/typedefs/index.js +0 -3
  1537. package/typedefs/index.js.map +0 -1
@@ -1,1417 +1,1449 @@
1
- /*!
2
- * Copyright 2017 - 2020 by ChartIQ, Inc.
3
- * All rights reserved.
4
- */
5
- /**
6
- * For communications amongst desktop services, components, or outside the container entirely, Finsemble provides an event infrastructure with high level protocols.
7
- * The Router is the center of this functionality, sending and receiving messages between windows.
8
- *
9
- *
10
- * See the [Router tutorial](/docs/how-finsemble-works/TheRouter) for an overview.
11
- * @module RouterClient
12
- */
13
- import RouterTransport from "../platform/services/router/routerTransport";
14
- import { toast } from "../common/toast";
15
- import { LoggerClient as Logger } from "./logger"; // should never be used, but message sent before router ready will be queue
16
- import { Globals } from "../common/Globals";
17
- import { Performance } from "../common/Performance";
18
- import { singleton } from "../common/Singleton";
19
- import uuidv4 from "uuid-random";
20
- /**
21
- * Duplicate of Utils.clone(). Do not import Utils into this file because it drags along Monitors.ts which
22
- * is incompatible with freestanding apps.
23
- */
24
- function clone(from, to = {}) {
25
- if (from === null || typeof from !== "object") {
26
- return from;
27
- }
28
- if (from.constructor == Date ||
29
- from.constructor == RegExp ||
30
- from.constructor == Function ||
31
- from.constructor == String ||
32
- from.constructor == Number ||
33
- from.constructor == Boolean) {
34
- return new from.constructor(from);
35
- }
36
- to = to || new from.constructor();
37
- for (const n in from) {
38
- to[n] = typeof to[n] === "undefined" ? clone(from[n], null) : to[n];
39
- }
40
- return to;
41
- }
42
- /**
43
- * @ignore
44
- */
45
- export class RouterConnection {
46
- constructor() {
47
- this.queue = [];
48
- this.started = false;
49
- this.clientName = "RouterClient.clientName not yet set";
50
- this.transport = null;
51
- this.isRouterReady = false;
52
- this.isTransportFailed = false;
53
- this.parentReadyCallbackQueue = []; // must be queue because may be multiple waiters
54
- this.parentFailureCallbackQueue = []; // must be queue because may be multiple waiters
55
- // Maps all listeners ( registered with calls to subscribe() ) for the given topics
56
- this.mapListeners = {};
57
- // Maps query channels to the registered responder (from a call to addResponder() )
58
- this.mapQueryResponders = {};
59
- this.mapPubSubResponders = {};
60
- // Contains the current state for all responder channels
61
- this.mapPubSubResponderState = {};
62
- this.mapPubSubResponderRegEx = {};
63
- // For a given pubsub topic, which subscriber ID's are listening
64
- this.pubsubListOfSubscribers = {};
65
- // Maps subscriber ID's to their callbacks
66
- this.mapSubscribersID = {};
67
- // Maps subscriber ID's to the topic they're subscribed on
68
- this.mapSubscribersTopic = {};
69
- this.mapQueryResponses = {};
70
- // Map of running queries to their timeouts
71
- this.mapQueryResponseTimeOut = {};
72
- }
73
- // ////////////////////
74
- // Private Functions
75
- // ////////////////////
76
- // See IRouterClient.ts
77
- onReadyCallBack() {
78
- Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient Ready");
79
- this.isRouterReady = true;
80
- // invoke all the parent callbacks waiting for router to be ready
81
- while (this.parentReadyCallbackQueue.length > 0) {
82
- Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient parentReady invoked");
83
- const nextParentCallback = this.parentReadyCallbackQueue.shift();
84
- nextParentCallback === null || nextParentCallback === void 0 ? void 0 : nextParentCallback();
85
- }
86
- }
87
- // *** all outbound messages exit here though the appropriate transport ***
88
- sendToRouterService(message) {
89
- if (!this.transport) {
90
- Logger.system.info("RouterClient: Queuing message since router initialization not complete", message);
91
- this.queue.push(message);
92
- }
93
- else {
94
- this.transport.send(message);
95
- }
96
- }
97
- // returns true if this routerClient originated the message
98
- originatedHere(message) {
99
- return message.header.origin === this.clientName;
100
- }
101
- // invoke client callbacks in the input array (that are attached to a specific channel and listener type)
102
- invokeListeners(message) {
103
- const { channel, origin } = message.header;
104
- const listeners = this.mapListeners[channel] || [];
105
- if (!Array.isArray(listeners) || listeners.length === 0) {
106
- Logger.system.log(`RouterClient: no listener for incoming transmit on channel ${channel} from ${origin}. Possibly the listener was removed while this message was in transit.`, message);
107
- }
108
- else {
109
- message.originatedHere = () => this.originatedHere(message);
110
- listeners.forEach((listener) => {
111
- if (!Logger.channelFilter(channel)) {
112
- Logger.system.info("RouterClient: incoming transmit", "CHANNEL", channel, "FROM", origin, "MESSAGE", message);
113
- }
114
- listener(null, message); // invoke the callback; the error parameter is always null for this case
115
- });
116
- }
117
- }
118
- /**
119
- * When an incoming query request is received from a client (via the RouterService) we look
120
- * up the registered responder and pass it the incoming query along with
121
- * a sendQueryResponse() method that will return the data back to the client.
122
- */
123
- invokeResponder(queryMessage) {
124
- const { channel, origin, queryID, error } = queryMessage.header;
125
- Logger.system.info("RouterClient: incoming query", "CHANNEL", channel, "FROM", origin, "QUERY MESSAGE", queryMessage);
126
- /**
127
- * Set up a closure that will allow our responder to send back a QueryResponse
128
- */
129
- const sendQueryResponse = (err, responseData) => {
130
- Logger.system.info("RouterClient: outgoing query response", "CHANNEL", channel, "RESPONSE DATA", responseData, "QUERY ID", queryID);
131
- let message = {
132
- header: {
133
- origin: this.clientName,
134
- queryID: queryID,
135
- type: "queryResponse",
136
- },
137
- data: responseData,
138
- };
139
- // Native apps expect a non-error condition to always result in transmission of null (not missing or undefined).
140
- // For actual errors, toString() converts from Error or string type
141
- message.header.error = err ? err.toString() : null;
142
- this.sendToRouterService(message);
143
- };
144
- const responderCallback = this.mapQueryResponders[channel];
145
- if (responderCallback === undefined) {
146
- if (queryMessage.header.logWhenNoResponder) {
147
- Logger.system.warn(`RouterClient: No query responder defined on channel ${channel} for incoming from ${origin}.`, queryMessage);
148
- }
149
- }
150
- else if (!error) {
151
- // Add the sendQueryResponse() and originatedHere() methods
152
- const responderObject = Object.assign(Object.assign({}, queryMessage), { originatedHere: () => this.originatedHere(queryMessage), sendQueryResponse: (err, responseData) => {
153
- sendQueryResponse(err, responseData);
154
- } });
155
- responderCallback(null, responderObject); // invoke the callback (no error)
156
- }
157
- else {
158
- // invoke the callback with error since flag in message (from router service)
159
- Logger.system.warn("RouterClient: queryResponder error", queryMessage);
160
- responderCallback(error);
161
- delete this.mapQueryResponders[channel]; // this is a bad responder (e.g. duplicate) so remove it
162
- }
163
- }
164
- /**
165
- * Received a query response back from the router service. Look up the callback
166
- * and invoke it with the received data.
167
- */
168
- invokeQueryResponse(message) {
169
- var _a;
170
- Logger.system.info("RouterClient: incoming query response", "CHANNEL", message.header.channel, "QUERY ID", message.header.queryID, "message", message);
171
- const { queryID } = message.header;
172
- // delete any existing timer waiting on the response
173
- const theTimer = this.mapQueryResponseTimeOut[queryID];
174
- delete this.mapQueryResponseTimeOut[queryID];
175
- if (theTimer)
176
- clearTimeout(theTimer);
177
- const clientCallback = this.mapQueryResponses[queryID];
178
- if (clientCallback) {
179
- delete this.mapQueryResponses[queryID];
180
- const error = (_a = message.header.error) !== null && _a !== void 0 ? _a : null;
181
- clientCallback(error, message);
182
- }
183
- else {
184
- Logger.system.warn("Invariant: RouterClient: no handler found for incoming query response.", message);
185
- }
186
- }
187
- /**
188
- * Updates pub/sub subscriptions whenever state updates (or on initial subscribe to the topic).
189
- * This looks up local subscribers and calls them with the pub/sub state.
190
- */
191
- invokeNotifyCallback(notifyMessage) {
192
- const { subscribeID, error } = notifyMessage.header;
193
- const notifyCallback = this.mapSubscribersID[subscribeID];
194
- if (!notifyCallback) {
195
- Logger.system.info("RouterClient: no subscription handler defined for incoming notify for subscriberID. Possibly the subscription was removed while this publish was in transit.", subscribeID, notifyMessage);
196
- }
197
- else if (!error) {
198
- notifyMessage.originatedHere = () => this.originatedHere(notifyMessage);
199
- Logger.system.info("RouterClient: incoming PubSub notify", "SUBSCRIBER ID", subscribeID, "NOTIFY MESSAGE", notifyMessage);
200
- notifyCallback(null, notifyMessage);
201
- }
202
- else {
203
- Logger.system.info("RouterClient: incoming PubSub notify error for subscriberID", "SUBSCRIBER ID", subscribeID, "NOTIFY MESSAGE", notifyMessage);
204
- notifyCallback(error, notifyMessage);
205
- }
206
- }
207
- /**
208
- * Returns a responder given a topic. The topic could be a regex key, in
209
- * which case mapPubSubResponderRegEx is searched
210
- */
211
- findResponder(topic) {
212
- const responder = this.mapPubSubResponders[topic];
213
- // if responder is undefined then look for a matching RegEx topic
214
- if (!responder) {
215
- for (const key in this.mapPubSubResponderRegEx) {
216
- if (this.mapPubSubResponderRegEx[key].test(topic)) {
217
- return this.mapPubSubResponders[key];
218
- }
219
- }
220
- }
221
- else {
222
- return responder;
223
- }
224
- }
225
- // for incoming Publish: invoke publish callback for pubsub server
226
- invokePublishEvent(publishMessage) {
227
- const { topic } = publishMessage.header;
228
- let responder = this.findResponder(topic);
229
- // if responder is *still* undefined
230
- if (!responder) {
231
- Logger.system.warn("RouterClient: no pubsub responder defined for incoming publish", "TOPIC", topic, "PUBLISH MESSAGE", publishMessage);
232
- }
233
- else {
234
- // callback function for invokePublishPubSubCallback to send Notify
235
- const sendNotifyToAllSubscribers = (request, err, notifyData) => {
236
- var _a;
237
- if (!err) {
238
- this.mapPubSubResponderState[topic] = notifyData; // store new state
239
- const listOfSubscribers = (_a = this.pubsubListOfSubscribers[topic]) !== null && _a !== void 0 ? _a : [];
240
- listOfSubscribers.forEach((subscribeID) => {
241
- Logger.system.info("RouterClient: sending pubsub notify", "TOPIC", topic, "NOTIFY DATA", notifyData);
242
- const message = {
243
- header: {
244
- origin: this.clientName,
245
- type: "notify",
246
- topic: topic,
247
- subscribeID,
248
- },
249
- data: notifyData,
250
- };
251
- this.sendToRouterService(message);
252
- });
253
- }
254
- else {
255
- Logger.system.warn("RouterClient: incoming publish rejected by pubsub responder", err, notifyData);
256
- }
257
- };
258
- Logger.system.info(`RouterClient: incoming PubSub publish ${responder.publishCallback ? "(publishCallback hook invoked)" : ""}`, "TOPIC", topic, "PUBLISH MESSAGE", publishMessage);
259
- // If the responder has a hook for publish events
260
- if (responder.publishCallback) {
261
- const hookMessage = Object.assign(Object.assign({}, publishMessage), { sendNotifyToAllSubscribers: (err, data) => {
262
- sendNotifyToAllSubscribers(publishMessage, err, data);
263
- } });
264
- responder.publishCallback(null, hookMessage);
265
- }
266
- else {
267
- // since no publish callback defined, use default functionality
268
- sendNotifyToAllSubscribers(publishMessage, null, publishMessage.data);
269
- }
270
- }
271
- }
272
- // for incoming subscribe: invoke notify callback for pubsub responder
273
- invokeSubscribeEvent(subscribeMessage) {
274
- var _a;
275
- const { topic, error } = subscribeMessage.header;
276
- Logger.system.info("RouterClient: PubSub subscribe", "TOPIC", topic);
277
- let responder = this.mapPubSubResponders[topic];
278
- if (!responder) {
279
- // if responder is undefined then look for a matching RegEx topic
280
- for (const regExKey in this.mapPubSubResponderRegEx) {
281
- if (this.mapPubSubResponderRegEx[regExKey].test(topic)) {
282
- responder = this.mapPubSubResponders[regExKey];
283
- // If no initial state defined then take the default from the regEx
284
- this.mapPubSubResponderState[topic] =
285
- (_a = this.mapPubSubResponderState[topic]) !== null && _a !== void 0 ? _a : this.mapPubSubResponderState[regExKey];
286
- break;
287
- }
288
- }
289
- }
290
- if (!responder) {
291
- // If responder is *still* undefined then warning
292
- Logger.system.warn("RouterClient: no pubsub responder defined for incoming subscribe event", subscribeMessage);
293
- }
294
- else if (error) {
295
- Logger.system.warn(`RouterClient: pubsub error received from router service: ${error}`, subscribeMessage);
296
- }
297
- else {
298
- if (responder.subscribeCallback) {
299
- const hookMessage = Object.assign(Object.assign({}, subscribeMessage), { sendNotifyToSubscriber: (err, data) => {
300
- this.sendNotifyToSubscriber(subscribeMessage, err, data);
301
- } });
302
- subscribeMessage.data = this.mapPubSubResponderState[topic];
303
- responder.subscribeCallback(null, hookMessage); // invoke the callback (no error)
304
- }
305
- else {
306
- // since no subscribe callback defined, use default functionality
307
- this.sendNotifyToSubscriber(subscribeMessage, null, this.mapPubSubResponderState[topic]);
308
- }
309
- }
310
- }
311
- // for incoming unsubscribe: invoke unsubscribe callback for pubsub server
312
- invokeUnsubscribeEvent(unsubscribeMessage) {
313
- const { topic, subscribeID } = unsubscribeMessage.header;
314
- let responder = this.findResponder(topic);
315
- if (!responder) {
316
- // if responder is undefined then look for a matching RegEx topic
317
- for (const key in this.mapPubSubResponderRegEx) {
318
- if (this.mapPubSubResponderRegEx[key].test(topic)) {
319
- responder = this.mapPubSubResponders[key];
320
- break;
321
- }
322
- }
323
- }
324
- if (!responder) {
325
- // if responder is *still* undefined
326
- Logger.system.warn("RouterClient: no pubsub responder defined for incoming unsubscribe event", "TOPIC", topic, "UNSUBSCRIBE MESSAGE", unsubscribeMessage);
327
- }
328
- else {
329
- Logger.system.info(`RouterClient: incoming unsubscribe ${responder.unsubscribeCallback ? "with unsubscribeCallback hook" : ""}`, "TOPIC", topic, "UNSUBSCRIBE MESSAGE", unsubscribeMessage);
330
- if (responder.unsubscribeCallback) {
331
- const hookMessage = Object.assign(Object.assign({}, unsubscribeMessage), { removeSubscriber: () => {
332
- this.removeSubscribers(topic, subscribeID);
333
- } });
334
- responder.unsubscribeCallback(null, hookMessage); // invoke the callback (no error)
335
- }
336
- else {
337
- // since no unsubscribe callback defined, use default functionality
338
- this.removeSubscribers(topic, subscribeID);
339
- }
340
- }
341
- }
342
- // callback function for invokeSubscribePubSubCallback to notify new subscriber
343
- sendNotifyToSubscriber(subscribeMessage, err, notifyData) {
344
- const { topic, subscribeID } = subscribeMessage.header;
345
- // Don't send initial notification unless state has been explicitly defined (it may be null, so we have to explicitly check for undefined).
346
- // This matches functionality if this pubsub responder is in routerService;
347
- // This can happen because initialState is an optional parameter
348
- if (typeof notifyData !== "undefined") {
349
- let message = {
350
- header: {
351
- origin: this.clientName,
352
- type: "notify",
353
- topic: topic,
354
- subscribeID: subscribeID,
355
- },
356
- data: notifyData,
357
- };
358
- if (err)
359
- message.header.error = err;
360
- this.sendToRouterService(message);
361
- }
362
- if (!err) {
363
- // add new subscriber to list
364
- if (!(topic in this.pubsubListOfSubscribers)) {
365
- this.pubsubListOfSubscribers[topic] = [subscribeID];
366
- }
367
- else {
368
- this.pubsubListOfSubscribers[topic].push(subscribeID);
369
- }
370
- Logger.system.info("RouterClient: incoming subscription added", "TOPIC", topic, "MESSAGE");
371
- }
372
- else {
373
- Logger.system.warn("RouterClient: incoming subscription rejected by pubsub responder", "TOPIC", topic, "MESSAGE", this);
374
- }
375
- }
376
- // Removes the subscribeID from the array for the given subscription topic
377
- removeSubscribers(topic, subscribeID) {
378
- let removed = false;
379
- if (topic in this.pubsubListOfSubscribers) {
380
- const list = this.pubsubListOfSubscribers[topic];
381
- for (let i = 0; i < list.length; i++) {
382
- if (subscribeID === list[i]) {
383
- list.splice(i, 1);
384
- if (list.length === 0) {
385
- delete this.pubsubListOfSubscribers[topic];
386
- }
387
- removed = true;
388
- Logger.system.info("RouterClient: PubSub removeListener", "TOPIC", topic, "FROM", subscribeID);
389
- break;
390
- }
391
- }
392
- }
393
- if (!removed) {
394
- Logger.system.warn(`RouterClient: tried to remove non-existent listener on ${topic} from ${subscribeID}`);
395
- }
396
- }
397
- // route incoming message to appropriate callback, which depends on the message type and channel
398
- routeIncomingMessage(incomingMessage) {
399
- const newTimeCalibrationHandler = () => {
400
- if (!this.timeCalibrationHandler) {
401
- setTimeout(() => {
402
- newTimeCalibrationHandler();
403
- }, 10);
404
- return;
405
- }
406
- this.timeCalibrationHandler(incomingMessage);
407
- };
408
- Logger.system.verbose("Incoming Message Type", incomingMessage.header.type, incomingMessage);
409
- switch (incomingMessage.header.type) {
410
- case "transmit":
411
- this.invokeListeners(incomingMessage);
412
- break;
413
- case "query":
414
- this.invokeResponder(incomingMessage);
415
- break;
416
- case "queryResponse":
417
- this.invokeQueryResponse(incomingMessage);
418
- break;
419
- case "notify":
420
- this.invokeNotifyCallback(incomingMessage);
421
- break;
422
- case "publish":
423
- this.invokePublishEvent(incomingMessage);
424
- break;
425
- case "subscribe":
426
- this.invokeSubscribeEvent(incomingMessage);
427
- break;
428
- case "unsubscribe":
429
- this.invokeUnsubscribeEvent(incomingMessage);
430
- break;
431
- case "timeCalibration":
432
- // Sometimes when multiple BrowserViews are added to the same window in quick succession (e.g. when loading dashbar at startup)
433
- // It gets in here before this function exists. So wait for the function to exist.
434
- newTimeCalibrationHandler();
435
- break;
436
- case "initialHandshakeResponse":
437
- this.handshakeHandler();
438
- break;
439
- default:
440
- }
441
- }
442
- // connects to event-router service. will retry various ways if needed
443
- asyncConnectToEventRouter(routerConfig, transportName, cb) {
444
- Logger.system.debug(`Name of transport to establish: ${transportName}`);
445
- let myTimer = null;
446
- let myRetryCounter = 0;
447
- let isFinished = false;
448
- let handshakeFailedCount = 0;
449
- // Define getClientTransport to avoid warning about it being used before defined.
450
- let getClientTransport = null;
451
- const handshakeFailedHandler = () => {
452
- clearInterval(myTimer);
453
- handshakeFailedCount++;
454
- if (handshakeFailedCount <= 3) {
455
- Logger.console.error("WINDOW LIFECYCLE:STARTUP:RouterClient: failure to connect to router service. Retrying...", handshakeFailedCount, routerConfig);
456
- getClientTransport === null || getClientTransport === void 0 ? void 0 : getClientTransport();
457
- }
458
- else {
459
- const failureMessage = "A cross domain transport has failed to connect. Cross domain components may not work. Please contact your administrator.";
460
- Logger.console.error(failureMessage, routerConfig);
461
- toast("dev", "ONCE-SINCE-STARTUP", "FSBL-Internal-Transport-Failure", failureMessage);
462
- }
463
- };
464
- const sendHandshake = () => {
465
- const MaxRetryHandshake = Number.MAX_SAFE_INTEGER;
466
- Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient: sendHandshake", myRetryCounter);
467
- const message = {
468
- header: {
469
- origin: this.clientName,
470
- type: "initialHandshake",
471
- },
472
- };
473
- this.sendToRouterService(message);
474
- if (myRetryCounter++ > MaxRetryHandshake) {
475
- handshakeFailedHandler();
476
- }
477
- };
478
- const finished = () => {
479
- if (!isFinished) {
480
- // ensure only invoked once
481
- Logger.system.debug(`WINDOW LIFECYCLE:STARTUP:RouterClient connected: Starting ${this.clientName} with transport ${this.transport.identifier()}`);
482
- isFinished = true;
483
- clearInterval(myTimer);
484
- // this should not happen with proper startup order, which waits on routerClient to be ready
485
- for (let i = 0; i < this.queue.length; i++) {
486
- Logger.system.debug("RouterClient: releasing queued msg");
487
- const msg = this.queue[i];
488
- // Queued messages won't yet have had a valid origin (clientName). We can replace it now that clientName has been definitively set.
489
- this.transport.send(Object.assign(Object.assign({}, msg), { header: Object.assign(Object.assign({}, msg.header), { origin: this.clientName }) }));
490
- }
491
- // notify initialization is complete
492
- cb === null || cb === void 0 ? void 0 : cb();
493
- }
494
- };
495
- const transportReady = (transportObj) => {
496
- const HandshakeRetryInterval = 1000;
497
- myRetryCounter = 0;
498
- Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient:transport ready", "TRANSPORT OBJECT", transportObj);
499
- this.transport = transportObj;
500
- this.handshakeHandler = finished; // set function to receive handshake response
501
- sendHandshake();
502
- myTimer = setInterval(sendHandshake, HandshakeRetryInterval); // time to retry if response not received back from router service
503
- };
504
- const onFailureCallBack = () => {
505
- Logger.system.error("RouterClient Transport Failed -- onFailure() callbacks invoked.");
506
- this.isTransportFailed = true;
507
- // invoke all the parent callbacks registered for onFailure
508
- while (this.parentFailureCallbackQueue.length > 0) {
509
- Logger.system.debug("RouterClient parentFailure invoked");
510
- const nextParentCallback = this.parentFailureCallbackQueue.shift();
511
- nextParentCallback === null || nextParentCallback === void 0 ? void 0 : nextParentCallback();
512
- }
513
- };
514
- getClientTransport = () => {
515
- Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient:getClientTransport", "ROUTER PARAMS:", routerConfig);
516
- // *** all incoming messages from underlying transport arrive here ***
517
- // although incoming transport information is available, it is not passed on because not needed
518
- const incomingMessageHandler = (incomingTransportInfo, message) => {
519
- message.header.lastClient = this.clientName; // add last client for diagnostics
520
- message.header.incomingTransportInfo = incomingTransportInfo;
521
- this.routeIncomingMessage(message);
522
- };
523
- RouterTransport.getTransport(routerConfig, transportName, incomingMessageHandler, this.clientName, "RouterService", onFailureCallBack)
524
- .then(transportReady)
525
- .catch((error) => {
526
- Logger.console.error("RouterClient getTransport error", error);
527
- });
528
- };
529
- // main code for this asyncConnectToEventRouter function -- only executed once
530
- getClientTransport();
531
- }
532
- // support function for addPubSubResponder -- add pubsub responder callbackHandler for the given channel
533
- addPubSubResponderCallBack(topic, subscribeCallback, publishCallback, unsubscribeCallback) {
534
- const topicAsString = topic.toString(); // toString() in case RegExp
535
- if (!this.mapPubSubResponders[topicAsString]) {
536
- if (topic instanceof RegExp) {
537
- this.mapPubSubResponderRegEx[topicAsString] = topic;
538
- Logger.system.info(`RouterClient: PubSub RegEx added for topic ${topicAsString}`);
539
- }
540
- this.mapPubSubResponders[topicAsString] = {
541
- subscribeCallback,
542
- publishCallback,
543
- unsubscribeCallback,
544
- };
545
- return true;
546
- }
547
- return false;
548
- }
549
- /**
550
- * Estimates offset to align the reference time with Router Service. Does this by exchanging messages with RouterService, getting the service's time, and estimating communication delay.
551
- */
552
- calibrateTimeWithRouterService(callback) {
553
- const TARGET_HANDSHAKE_COUNT = 5;
554
- let handshakeCounter = 0;
555
- let offsetForFastest = 0;
556
- let fastestRRT = Infinity;
557
- const calibrationCalculation = (finalHandshakeMessage) => {
558
- const { clientBaseTime, serviceBaseTime } = finalHandshakeMessage;
559
- let timeOffset = 0;
560
- for (let i = 1; i < TARGET_HANDSHAKE_COUNT; i++) {
561
- const startClientTime = clientBaseTime[i - 1];
562
- const stopClientTime = clientBaseTime[i];
563
- const rtt = stopClientTime - startClientTime; // round-trip time
564
- const serviceTime = serviceBaseTime[i - 1];
565
- const offset = serviceTime - (startClientTime + rtt / 2);
566
- if (rtt < fastestRRT) {
567
- fastestRRT = rtt;
568
- offsetForFastest = offset;
569
- }
570
- timeOffset = timeOffset + offset;
571
- Logger.system.debug("calibrationCalculation Intermediate Values", "lastRRT", rtt, "lastOffset", offset, "fastestOffset", offsetForFastest, "fastestRRT", fastestRRT);
572
- }
573
- timeOffset = timeOffset / (TARGET_HANDSHAKE_COUNT - 1);
574
- Logger.system.debug("RouterClient calibrationCalculation", "Average Offset", timeOffset, "Chosen FastestOffset", offsetForFastest, finalHandshakeMessage);
575
- callback(offsetForFastest); // use the offset with the shortest RTT since it is often the most accurate
576
- };
577
- const timeCalibrationHandlerFunction = (calibration) => {
578
- handshakeCounter++;
579
- if (handshakeCounter > TARGET_HANDSHAKE_COUNT) {
580
- calibrationCalculation(calibration); // enough handshake data gather, so do the calibration
581
- }
582
- else {
583
- calibration.clientBaseTime.push(Performance.timing.navigationStart + Performance.now());
584
- const message = {
585
- header: {
586
- origin: this.clientName,
587
- type: "timeCalibration",
588
- },
589
- clientBaseTime: calibration.clientBaseTime,
590
- serviceBaseTime: calibration.serviceBaseTime,
591
- };
592
- this.sendToRouterService(message);
593
- }
594
- };
595
- const message = {
596
- header: {
597
- origin: this.clientName,
598
- type: "timeCalibration",
599
- },
600
- clientBaseTime: [],
601
- serviceBaseTime: [],
602
- };
603
- this.timeCalibrationHandler = timeCalibrationHandlerFunction; // used in routeIncomingMessage to route handshake response back to handler
604
- this.timeCalibrationHandler(message); // invoke first time to start exchanging handshakes; will be invoked each time handshake message received back from RouterService
605
- }
606
- /**
607
- * Starts the router client, creating a unique name to represent this instance, initiating the
608
- * transport that is specified in routerConfig, and then registering itself with the router
609
- * service. Most of this work occurs in the internal function `asyncConnectToEventRouter()`.
610
- */
611
- start(routerConfig) {
612
- return new Promise(async (resolve) => {
613
- if (this.started) {
614
- const warning = `RouterClient.start() called twice. Ignoring second call.`;
615
- Logger.system.warn(warning);
616
- return resolve(warning);
617
- }
618
- this.started = true;
619
- // The client name is also the origin name passed to router service.
620
- // NOTE: the second dot-separated token in the clientName must be the window name since the router service will
621
- // bind this name to the transport so the InteropService can use for authentication
622
- this.clientName = `RouterClient.${routerConfig.windowName}.${uuidv4()}`;
623
- const logMessage = `"RouterClient Check: connecting new client for ${this.clientName}`;
624
- Logger.system.debug(logMessage);
625
- console.debug(logMessage);
626
- RouterTransport.setTransports();
627
- this.asyncConnectToEventRouter(routerConfig, routerConfig.transportName, () => {
628
- this.onReadyCallBack();
629
- resolve(null);
630
- });
631
- });
632
- }
633
- // See IRouterClient.ts
634
- disconnectFromService() {
635
- Logger.system.info("RouterClient.disconnectFromService");
636
- const message = {
637
- header: {
638
- origin: this.clientName,
639
- type: "disconnectFromService",
640
- },
641
- };
642
- this.sendToRouterService(message);
643
- }
644
- /**
645
- * Stops the router. This disconnects all responders and listeners and closes all transports.
646
- * Once stopped, a router may be started again.
647
- */
648
- stop() {
649
- // Remove all registered listeners from router service
650
- this.disconnectAll();
651
- // Close the currently open transport
652
- RouterTransport.close();
653
- this.started = false;
654
- this.disconnectFromService();
655
- }
656
- // ///////////////////////////////////////////
657
- // Public Functions -- The Router Client API
658
- // ///////////////////////////////////////////
659
- // See IRouterClient.ts
660
- onReady(cb) {
661
- return new Promise((resolve) => {
662
- const sendSignal = () => {
663
- if (cb)
664
- cb();
665
- resolve();
666
- };
667
- if (this.isRouterReady) {
668
- sendSignal();
669
- }
670
- else {
671
- this.parentReadyCallbackQueue.push(sendSignal);
672
- }
673
- });
674
- }
675
- // See IRouterClient.ts
676
- onFailure(cb) {
677
- return new Promise((resolve) => {
678
- const sendSignal = () => {
679
- if (cb)
680
- cb();
681
- resolve();
682
- };
683
- if (this.isTransportFailed) {
684
- sendSignal();
685
- }
686
- else {
687
- this.parentFailureCallbackQueue.push(sendSignal);
688
- }
689
- });
690
- }
691
- // See IRouterClient.ts
692
- addListener(channel, eventHandler) {
693
- Logger.system.info("RouterClient.addListener", "CHANNEL", channel);
694
- // for addListener: add a callbackHandler into the specified map (which depends on listener type) for the given channel
695
- const listeners = this.mapListeners[channel];
696
- if (!listeners || listeners.length === 0) {
697
- this.mapListeners[channel] = [eventHandler];
698
- const message = {
699
- header: {
700
- origin: this.clientName,
701
- type: "addListener",
702
- channel,
703
- },
704
- };
705
- this.sendToRouterService(message);
706
- }
707
- else {
708
- if (listeners.some((listener) => eventHandler === listener)) {
709
- Logger.debug("RouterClient.addListener() Ignoring duplicate listener with identical callback", channel, eventHandler);
710
- }
711
- else {
712
- listeners.push(eventHandler);
713
- }
714
- }
715
- return () => {
716
- this.removeListener(channel, eventHandler);
717
- };
718
- }
719
- // See IRouterClient.ts
720
- transmit(toChannel, data, options) {
721
- if (!Logger.channelFilter(toChannel)) {
722
- Logger.system.info("RouterClient.transmit", "TO CHANNEL", toChannel, "DATA", data);
723
- }
724
- const message = {
725
- header: {
726
- origin: this.clientName,
727
- type: "transmit",
728
- channel: toChannel,
729
- },
730
- data,
731
- options,
732
- };
733
- this.sendToRouterService(message);
734
- }
735
- // See IRouterClient.ts
736
- removeListener(channel, eventHandler) {
737
- Logger.system.info("RouterClient.removeListener", "CHANNEL", channel, "EVENT HANDLER", eventHandler);
738
- if (!this.mapListeners[channel]) {
739
- Logger.system.debug("Attempt to remove non existent listener", channel, eventHandler);
740
- console.log("Attempt to remove non existent listener", channel, eventHandler);
741
- return;
742
- }
743
- // Remove any matching listeners from the listener array
744
- this.mapListeners[channel] = this.mapListeners[channel].flatMap((listener) => {
745
- if (listener === eventHandler) {
746
- return [];
747
- }
748
- else {
749
- return [listener];
750
- }
751
- });
752
- // If there are no more listeners for this channel then let the router service
753
- // know that we are no longer interested in this channel.
754
- if (!this.mapListeners[channel].length) {
755
- delete this.mapListeners[channel];
756
- const message = {
757
- header: {
758
- origin: this.clientName,
759
- type: "removeListener",
760
- channel,
761
- },
762
- };
763
- this.sendToRouterService(message);
764
- }
765
- }
766
- // See IRouterClient.ts
767
- addResponder(channel, queryEventHandler) {
768
- Logger.system.info("RouterClient.addResponder", "CHANNEL", channel);
769
- // add responder callbackHandler for the given channel
770
- if (!this.mapQueryResponders[channel]) {
771
- this.mapQueryResponders[channel] = queryEventHandler;
772
- const message = {
773
- header: {
774
- origin: this.clientName,
775
- type: "addResponder",
776
- channel,
777
- },
778
- };
779
- this.sendToRouterService(message);
780
- }
781
- else {
782
- const warning = `RouterClient.addResponder: Responder already locally defined for channel ${channel}`;
783
- Logger.system.warn(warning);
784
- queryEventHandler(warning);
785
- }
786
- }
787
- // See IRouterClient.ts for overloads
788
- // Here we have a complicated type definition to tackle both overloads
789
- query(responderChannel, queryEvent, queryParams, responseEventHandler) {
790
- var _a, _b;
791
- const newQueryID = `${this.clientName}.${uuidv4()}.${responderChannel}`;
792
- const timestamp = Performance.timing.navigationStart + Performance.now();
793
- const navstart = Performance.timing.navigationStart;
794
- const timenow = Performance.now(); // these timer values used for logging diagnostics
795
- Logger.system.info("RouterClient.query", "RESPONDER CHANNEL", responderChannel, "QUERY EVENT", queryEvent, "PARAMS", queryParams, "QUERY ID", newQueryID, { timestamp, navstart, timenow });
796
- // 4th parameter if it exists, otherwise 3rd parameter if it's a function, otherwise null
797
- const handler = responseEventHandler !== null && responseEventHandler !== void 0 ? responseEventHandler : (typeof queryParams === "function" ? queryParams : null);
798
- const timeout = (_a = queryParams === null || queryParams === void 0 ? void 0 : queryParams.timeout) !== null && _a !== void 0 ? _a : 20000;
799
- // Normally the central logger will log a warning when no responder exists for a query but
800
- // sometimes there are unavoidable race conditions. Use this parameter to work around those conditions
801
- // along with timeout = 0
802
- const logWhenNoResponder = (_b = queryParams === null || queryParams === void 0 ? void 0 : queryParams.logWhenNoResponder) !== null && _b !== void 0 ? _b : true;
803
- const promiseResolver = (resolve) => {
804
- // add a callbackHandler into the query-response map for the given queryID
805
- this.mapQueryResponses[newQueryID] = (err, response) => {
806
- handler === null || handler === void 0 ? void 0 : handler(err, response);
807
- resolve({ err, response });
808
- };
809
- // Waiting on timeouts can cause unit tests to hang (if an unintended query is triggered)
810
- if (!Globals.runningInFSBLUnitTest && timeout > 0) {
811
- // add timer to wait for query response
812
- this.mapQueryResponseTimeOut[newQueryID] = setTimeout(() => {
813
- Logger.system.warn(`RouterClient: timeout after ${timeout} ms waiting on query response on channel ${responderChannel} for queryID ${newQueryID}`);
814
- delete this.mapQueryResponseTimeOut[newQueryID];
815
- }, timeout);
816
- }
817
- const message = {
818
- header: {
819
- origin: this.clientName,
820
- type: "query",
821
- queryID: newQueryID,
822
- channel: responderChannel,
823
- logWhenNoResponder,
824
- },
825
- data: queryEvent,
826
- };
827
- this.sendToRouterService(message);
828
- };
829
- return new Promise(promiseResolver);
830
- }
831
- // See IRouterClient.ts
832
- removeResponder(responderChannel) {
833
- Logger.system.info("RouterClient.removeResponder", "RESPONDER CHANNEL", responderChannel);
834
- if (this.mapQueryResponders[responderChannel]) {
835
- delete this.mapQueryResponders[responderChannel];
836
- const message = {
837
- header: {
838
- origin: this.clientName,
839
- type: "removeResponder",
840
- channel: responderChannel,
841
- },
842
- };
843
- this.sendToRouterService(message);
844
- }
845
- }
846
- // See IRouterClient.ts
847
- addPubSubResponder(topic, initialState, params, callback) {
848
- let error;
849
- let response;
850
- Logger.system.info("RouterClient.addPubSubResponder", "TOPIC", topic, "INITIAL STATE", initialState, "PARAMS", params);
851
- params = params || {};
852
- // if this pubsub responder doesn't define any of the special callback handlers, then the pubsub can be handled in the router service
853
- if (typeof params.subscribeCallback === "undefined" &&
854
- typeof params.publishCallback === "undefined" &&
855
- typeof params.unsubscribeCallback === "undefined") {
856
- initialState = initialState || {};
857
- // this message indicates the pubsub will be handled within the router service
858
- const message = {
859
- header: {
860
- origin: this.clientName,
861
- type: "addPubSubResponder",
862
- topic: topic.toString(),
863
- handleOnServer: true,
864
- },
865
- data: initialState,
866
- };
867
- this.sendToRouterService(message);
868
- response = "success";
869
- }
870
- else {
871
- const status = this.addPubSubResponderCallBack(topic, params.subscribeCallback, params.publishCallback, params.unsubscribeCallback);
872
- if (status) {
873
- initialState = initialState || {};
874
- this.mapPubSubResponderState[topic.toString()] = clone(initialState);
875
- // this message indicates the pubsub will be handled locally withing this router client
876
- const message = {
877
- header: {
878
- origin: this.clientName,
879
- type: "addPubSubResponder",
880
- topic: topic.toString(),
881
- handleOnServer: false,
882
- },
883
- data: initialState,
884
- };
885
- this.sendToRouterService(message);
886
- response = "success";
887
- }
888
- else {
889
- error = `RouterClient.addPubSubResponder: Responder already locally defined for topic ${topic}`;
890
- Logger.system.error(error);
891
- }
892
- }
893
- if (callback) {
894
- callback(error, response);
895
- }
896
- }
897
- // See IRouterClient.ts
898
- removePubSubResponder(topic) {
899
- Logger.system.info("RouterClient.removePubSubResponder", "TOPIC", topic);
900
- const topicAsString = topic.toString(); // string or RegExp
901
- if (this.mapPubSubResponders[topicAsString]) {
902
- delete this.mapPubSubResponders[topicAsString]; // remove responder
903
- delete this.mapPubSubResponderState[topicAsString]; // remove corresponding state
904
- delete this.mapPubSubResponderRegEx[topicAsString]; // remove regex maybe
905
- const message = {
906
- header: {
907
- origin: this.clientName,
908
- type: "removePubSubResponder",
909
- topic,
910
- },
911
- };
912
- this.sendToRouterService(message);
913
- }
914
- else {
915
- Logger.system.warn(`RouterClient.removePubSubResponder failed: Could not find responder for topic ${topic}`);
916
- }
917
- }
918
- // See IRouterClient.ts
919
- subscribe(topic, notifyCallback) {
920
- Logger.system.info("RouterClient.subscribe", "TOPIC", topic);
921
- const subscribeID = `${this.clientName}.${uuidv4()}`;
922
- this.mapSubscribersID[subscribeID] = notifyCallback;
923
- this.mapSubscribersTopic[subscribeID] = topic;
924
- const message = {
925
- header: {
926
- origin: this.clientName,
927
- type: "subscribe",
928
- subscribeID,
929
- topic,
930
- },
931
- };
932
- this.sendToRouterService(message);
933
- return { subscribeID, topic };
934
- }
935
- // See IRouterClient.ts
936
- publish(topic, data) {
937
- Logger.system.info("RouterClient.publish", "TOPIC", topic, "EVENT", data);
938
- const message = {
939
- header: {
940
- origin: this.clientName,
941
- type: "publish",
942
- topic,
943
- },
944
- data: data,
945
- };
946
- this.sendToRouterService(message);
947
- }
948
- // See IRouterClient.ts
949
- unsubscribe(subscribeIDStruct) {
950
- Logger.system.info("RouterClient.unsubscribe", "SUBSCRIBE ID", subscribeIDStruct);
951
- // outgoing Unsubscribe: remove subscriber callbackHandler for the given channel
952
- const { subscribeID } = subscribeIDStruct;
953
- if (this.mapSubscribersID[subscribeID]) {
954
- delete this.mapSubscribersID[subscribeID];
955
- delete this.mapSubscribersTopic[subscribeID];
956
- const message = {
957
- header: {
958
- origin: this.clientName,
959
- type: "unsubscribe",
960
- subscribeID: subscribeIDStruct.subscribeID,
961
- topic: subscribeIDStruct.topic,
962
- },
963
- };
964
- this.sendToRouterService(message);
965
- }
966
- else {
967
- Logger.system.warn(`RouterClient.unsubscribe: Could not find subscribeID for topic ${subscribeIDStruct.topic}`);
968
- }
969
- }
970
- /**
971
- * Test an incoming router message to see if it originated from the same origin (e.g. a trusted source...not cross-domain). Currently same origin is known only because a sharedWorker transport is used (by definition SharedWorkers do not work cross-domain). This means any message coming in over the Inter-application Bus will not be trusted; however, by default all same-origin components and services connect to the router using a SharedWorker transport.
972
- *
973
- * ```javascript
974
- * FSBL.Clients.RouterClient.trustedMessage(incomingRouterMessage);
975
- * ```
976
- * @param {object} incomingMessage an incoming router message (e.g. transmit, query, notification) to test to see if trusted.
977
- */
978
- trustedMessage(incomingMessage) {
979
- var _a;
980
- Logger.system.debug("RouterClient.trustedMessage header", incomingMessage.header);
981
- return (_a = incomingMessage.header.originMetadata) === null || _a === void 0 ? void 0 : _a.transportInfo.transportID.includes("SharedWorker");
982
- }
983
- // See IRouterClient.ts
984
- disconnectAll() {
985
- Logger.system.info("RouterClient.disconnectAll");
986
- Object.keys(this.mapListeners).forEach((channel) => {
987
- const handlers = Array.from(new Set(this.mapListeners[channel])); // de-dupe to avoid warning messages
988
- handlers.forEach((handler) => {
989
- this.removeListener(channel, handler);
990
- });
991
- });
992
- Object.keys(this.mapQueryResponders).forEach((channel) => {
993
- this.removeResponder(channel);
994
- });
995
- Object.keys(this.mapPubSubResponders).forEach((topic) => {
996
- this.removePubSubResponder(topic);
997
- });
998
- Object.keys(this.mapSubscribersID).forEach((subscribeID) => {
999
- const topic = this.mapSubscribersTopic[subscribeID];
1000
- this.unsubscribe({ topic, subscribeID });
1001
- });
1002
- }
1003
- }
1004
- /**
1005
- * @ignore
1006
- */
1007
- export const RouterController = {
1008
- /**
1009
- * Used to start the router. This is called by entry points (FSBLDesktop.ts, FSBLFreestanding.ts, FSBLService.ts [ in baseService, serviceManager's bootEngine.ts, logger's main.jsx ] )
1010
- * @private
1011
- */
1012
- start: (params) => {
1013
- const routerConnection = singleton("RouterClient", RouterConnection);
1014
- Logger.setRouterClient(routerConnection);
1015
- return routerConnection.start(params);
1016
- },
1017
- /**
1018
- * Used to stop the router. Generally used for unit testing.
1019
- * @private
1020
- */
1021
- stop: () => {
1022
- const routerConnection = singleton("RouterClient", RouterConnection);
1023
- routerConnection.stop();
1024
- },
1025
- /**
1026
- * Used internally by Logger client
1027
- */
1028
- calibrateTimeWithRouterService(callback) {
1029
- const routerConnection = singleton("RouterClient", RouterConnection);
1030
- routerConnection.calibrateTimeWithRouterService(callback);
1031
- },
1032
- };
1033
- /**
1034
- * @language javascript, java, dotnet
1035
- * @deprecated Don't use this method. (Apps that use the FSBL API and wait on the global `onReady` event are guaranteed that the router will be ready). Internal code
1036
- * should wait on Startup.onReady().
1037
- *
1038
- * Checks if Router is ready. May be invoked multiple times. Invokes optional callback and resolves promise when ready, which may be immediately. Router is not ready until underlying transport to Router Service is ready.
1039
- *
1040
- * @param {function} [cb] Optional callback function to invoke when Router is ready.
1041
- * @return {Promise} Promise resolves when Router is ready
1042
- */
1043
- export const onReady = (cb) => {
1044
- Logger.system.deprecated("You no longer need to call RouterClient.onReady()");
1045
- const routerConnection = singleton("RouterClient", RouterConnection);
1046
- return routerConnection.onReady(cb);
1047
- };
1048
- /**
1049
- * @language javascript, java, dotnet
1050
- * May be invoked multiple times. Invokes optional callback and resolves promise if router client fails, typically due to underlying transport failure.
1051
- *
1052
- * @param {function} [cb] Optional callback function to invoke if the routerClient fail due to a loss of connectivity.
1053
- * @return {Promise} Promise resolves on Router failure
1054
- */
1055
- export const onFailure = (cb) => {
1056
- const routerConnection = singleton("RouterClient", RouterConnection);
1057
- return routerConnection.onFailure(cb);
1058
- };
1059
- /**
1060
- * @language javascript, java, dotnet
1061
- * Adds a listener for incoming transmit events on the specified channel. Each of the incoming events will trigger the specified event handler. The number of listeners is not limited (either local to this Finsemble window or in a separate Finsemble window).
1062
- *
1063
- * See [`transmit`](#transmit) for sending a corresponding event message to the listener. See [`removeListener`](#removelistener) to remove the listener.
1064
- *
1065
- * ```javascript
1066
- * FSBL.Clients.RouterClient.addListener("SomeChannelName", function (error, response) {
1067
- * if (error) {
1068
- * Logger.system.error("ChannelA Error: " + JSON.stringify(error));
1069
- * } else {
1070
- * var data = response.data;
1071
- * if (response.originatedHere()) {
1072
- * Logger.system.warn("Received a message from the calling window, ignoring");
1073
- * } else {
1074
- * // Logic to perform with data
1075
- * }
1076
- * }
1077
- * });
1078
- * ```
1079
- * @param {string} channel A unique string to identify the channel (must match corresponding transmit channel name).
1080
- * @param {function} eventHandler A callback handling any possible error and the response. Use <b>response.originatedHere()</b> to determine if the message came from the same window. (see example below).
1081
- * @return {RouterListenerUnsubscribe} Returns a function that can be called to unsubscribe (convenient alternative to removeListener)
1082
- */
1083
- export const addListener = (channel, eventHandler) => {
1084
- const routerConnection = singleton("RouterClient", RouterConnection);
1085
- return routerConnection.addListener(channel, eventHandler);
1086
- };
1087
- /**
1088
- * @language javascript, java, dotnet
1089
- * Transmits data to all listeners on the specified channel. If there are no listeners on the channel, the event is discarded without error. All listeners on the channel in this Finsemble window and other Finsemble windows will receive the transmit.
1090
- *
1091
- * See [`addListener`](#addlistener) to add a listener to receive the transmit.
1092
- *
1093
- * ```javascript
1094
- * FSBL.Clients.RouterClient.transmit("SomeChannelName", event);
1095
- * ```
1096
- * @param {string} toChannel A unique string to identify the channel (must match corresponding listener channel name).
1097
- * @param {any} data An object or primitive type to be transmitted.
1098
- * @param {object} options An object containing options for your transmission.
1099
- * @param {boolean} options.suppressWarnings By default, the Router will log warnings if you transmit to a channel with no listeners. Set this to true to eliminate those warnings.
1100
- */
1101
- export const transmit = (toChannel, data, options) => {
1102
- const routerConnection = singleton("RouterClient", RouterConnection);
1103
- routerConnection.transmit(toChannel, data, options);
1104
- };
1105
- /**
1106
- * @language javascript, java, dotnet
1107
- * Removes an event listener from the specified channel for the specific event handler; only listeners created locally can be removed.
1108
- *
1109
- * See [`addListener`](#addlistener) for corresponding add of a listener.
1110
- *
1111
- * @param {string} channel The unique channel name from which to remove the listener.
1112
- * @param {function} eventHandler Function used for the event handler when the listener was added.
1113
- */
1114
- export const removeListener = (channel, eventHandler) => {
1115
- const routerConnection = singleton("RouterClient", RouterConnection);
1116
- routerConnection.removeListener(channel, eventHandler);
1117
- };
1118
- /**
1119
- * @language javascript, java, dotnet
1120
- * Adds a query responder to the specified channel. The responder's `queryEventHandler` function will receive all incoming queries for the specified channel (whether from this Finsemble window or remote Finsemble windows).
1121
- *
1122
- * :::note
1123
- * Only one responder is allowed per channel within Finsemble.
1124
- * :::
1125
- *
1126
- * See [`query`](#query) for sending a corresponding query-event message to this responder.
1127
- *
1128
- * ```javascript
1129
- * FSBL.Clients.RouterClient.addResponder("ResponderChannelName", function (error, queryMessage) {
1130
- * if (error) {
1131
- * Logger.system.log('addResponder failed: ' + JSON.stringify(error));
1132
- * } else {
1133
- * console.log("incoming data=" + queryMessage.data);
1134
- * var response="Back at ya"; // Responses can be objects or strings
1135
- * queryMessage.sendQueryResponse(null, response); // The callback must respond, else a timeout will occur on the querying client.
1136
- * }
1137
- * });
1138
- * ```
1139
- * @param {string} channel A unique string to identify the channel (must match corresponding query channel name); only one responder is allowed per channel.
1140
- * @param {StandardCallback} queryEventHandler A function to handle the incoming query (see example); note the incoming `queryMessage` contains a function to send the response.
1141
- */
1142
- export const addResponder = (channel, queryEventHandler) => {
1143
- const routerConnection = singleton("RouterClient", RouterConnection);
1144
- routerConnection.addResponder(channel, queryEventHandler);
1145
- };
1146
- /**
1147
- * @language javascript, java, dotnet
1148
- * Sends a query to the responder listening on the specified channel. The responder may be in this Finsemble window or another Finsemble window.
1149
- *
1150
- *
1151
- * See [`addResponder`](#addresponser) to add a responder to receive the query.
1152
- *
1153
- * ```javascript
1154
- * FSBL.Clients.RouterClient.query("someChannelName", {}, function (error, queryResponseMessage) {
1155
- * if (error) {
1156
- * Logger.system.log('query failed: ' + JSON.stringify(error));
1157
- * } else {
1158
- * // process income query response message
1159
- * var responseData = queryResponseMessage.data;
1160
- * Logger.system.log('query response: ' + JSON.stringify(queryResponseMessage));
1161
- * }
1162
- * });
1163
- *
1164
- * FSBL.Clients.RouterClient.query("someChannelName", { queryKey: "abc123"}, { timeout: 1000 }, function (error, queryResponseMessage) {
1165
- * if (!error) {
1166
- * // process income query response message
1167
- * var responseData = queryResponseMessage.data;
1168
- * }
1169
- * });
1170
- * ```
1171
- * @param {string} responderChannel A unique string that identifies the channel (must match the channel name on which a responder is listening).
1172
- * @param {object} queryEvent The event message sent to the responder.
1173
- * @param {function} responseEventHandler An event handler to receive the query response (sent from a responder that is listening on this channel).
1174
- */
1175
- export const query = (responderChannel, queryEvent, queryParams, responseEventHandler) => {
1176
- const routerConnection = singleton("RouterClient", RouterConnection);
1177
- return routerConnection.query(responderChannel, queryEvent, queryParams, responseEventHandler);
1178
- };
1179
- /**
1180
- * @language javascript, java, dotnet
1181
- * Removes the query responder from the specified channel. Only a locally added responder can be removed (i.e., a responder defined in the same component or service).
1182
- *
1183
- * See [`addResponder()`](#addresponder) for adding a query responder.
1184
- *
1185
- * ```javascript
1186
- * FSBL.Clients.RouterClient.removeResponder("someChannelName");
1187
- * ```
1188
- * @param {string} responderChannel String identifying the channel from which to remove the responder.
1189
- */
1190
- export const removeResponder = (responderChannel) => {
1191
- const routerConnection = singleton("RouterClient", RouterConnection);
1192
- routerConnection.removeResponder(responderChannel);
1193
- };
1194
- /**
1195
- * @language javascript, java, dotnet
1196
- * Adds a PubSub responder for the specified topic (either a specific string or a regular-expression match). PubSub
1197
- * topics are stateful. New subscribers to the topic are automatically provided the most recent state.
1198
- * Once a responder has been added, other apps can subscribe to and publish state on the topic
1199
- *
1200
- * See [`publish()`](#publish) and [`subscribe()`](#subscribe).
1201
- *
1202
- * Only one responder may be set per topic across the entire system (otherwise a warning will show in Central Logger).
1203
- * If another responder is set with an overlapping regular-expression then the responder with an exact string is still guaranteed to get the messages
1204
- * (the regex responder will not receive messages that match a responder with a matching string).
1205
- *
1206
- * > If multiple responders are set with _overlapping_ regular-expressions, then the receiver is _indeterminate_.
1207
- *
1208
- * When initializing a responder, hooks can be provided to intercept and manipulate publish, subscribe, and unsubscribe events (see parameters).
1209
- *
1210
- * ```javascript
1211
- * // Example, initializing a responder without any optional hooks:
1212
- * FSBL.Clients.RouterClient.addPubSubResponder("topicABC", { "State": "start" });
1213
- *
1214
- * // Example, initializing a responder with a regex for matching topics:
1215
- * FSBL.Clients.RouterClient.addPubSubResponder(new RegExp("topicA*"), { "State": "start" });
1216
- *
1217
- * // Example, initializing a responder with all three hooks and an initial state:
1218
- * FSBL.Clients.RouterClient.addPubSubResponder("topicABC", { "State": "start" },
1219
- * {
1220
- * subscribeCallback:subscribeCallback,
1221
- * publishCallback:publishCallback,
1222
- * unsubscribeCallback:unsubscribeCallback
1223
- * });
1224
- *
1225
- * // Example publish hook:
1226
- * function publishCallback(error, publish) {
1227
- * if (publish) {
1228
- * // `publish.data` contains the data that the originating app published.
1229
- * console.log(publish.data);
1230
- *
1231
- * // This function must be called to complete the publication. Set the first parameter to `null`
1232
- * // to complete the publication. Set the first parameter to a string in order to suppress the publication
1233
- * // and return an error to the publisher.
1234
- * //
1235
- * // The second parameter must contain the data that you wish to publish. This data will be sent to all
1236
- * // subscribers including the originating app. It can be either the originating state (from `publish.data`)
1237
- * // or a different/manipulated state. This will become the new current state for the topic.
1238
- * publish.sendNotifyToAllSubscribers(null, { someOtherData: "blah"});
1239
- * }
1240
- * }
1241
- *
1242
- * // Example subscribe hook:
1243
- * function subscribeCallback(error, subscribe) {
1244
- * if (subscribe) {
1245
- * // This function must be called to accept or reject the subscription. Send an error code as the first parameter
1246
- * // to reject. Send null as the first parameter to accept. Once accepted, the subscriber will receive
1247
- * // the current topic's state unless the second parameter is provided which will override what is sent
1248
- * // to the subscriber (but not override the topic's actual internal state).
1249
- * subscribe.sendNotifyToSubscriber(null, { "NOTIFICATION-STATE": "One" });
1250
- * }
1251
- * }
1252
- *
1253
- * // Example unsubscribe hook:
1254
- * function unsubscribeCallback(error, unsubscribe) {
1255
- * if (unsubscribe) {
1256
- * // This function must be called to accept or reject the unsubscription. Send null (or nothing) as the first
1257
- * // parameter to accept the unsubscription. Send an error code to reject it.
1258
- * unsubscribe.removeSubscriber(null);
1259
- * }
1260
- * }
1261
- * ```
1262
- * @param string|RegExp topic A unique topic for this responder, or a RegEx (e.g. '/abc.+/') to handle a set of topics.
1263
- * @param {object} initialState The initial state for the topic (defaults to `{}`).
1264
- * @param {object} params Optional hooks
1265
- * @param {function} params.publishCallback This hook is called whenever a remote app publishes new state.
1266
- * `[arg2].sendNotifyToAllSubscribers()` must be called to complete the publication but can send a different state than what was published by the originating app
1267
- * (the originating publishing app will receive this state on its subscriptions).
1268
- * See example publish hook.
1269
- *
1270
- * @param {function} params.subscribeCallback This hook is called whenever a remote app subscribes to this responder's topic.
1271
- * It can be used to deny subscriptions or to run independent code for any new subscription.
1272
- * `[arg2].sendNotifyToSubscriber()` must be called in order for the responder to complete the subscription, and can optionally provide
1273
- * the subscribing app with a different initial than the topic's current state.
1274
- * See example subscribe hook.
1275
- *
1276
- * @param {function} params.unsubscribeCallback This hook is called whenever a remote app unsubscribes from this responder's topic.
1277
- * `[arg2].removeSubscriber()` must be called in order to complete the unsubscription.
1278
- * See example unsubscribe hook.
1279
- *
1280
- * @param {function} callback An optional callback function which should accept a possible error.
1281
- * If `addPubSubResponder()` failed then the first parameter to the callback will contain the error condition.
1282
- * The most common error is when adding a responder for a topic that already has a responder:
1283
- * "RouterClient.addPubSubResponder: Responder already locally defined for topic ${topic}";
1284
- */
1285
- export const addPubSubResponder = (topic, initialState, params, callback) => {
1286
- const routerConnection = singleton("RouterClient", RouterConnection);
1287
- routerConnection.addPubSubResponder(topic, initialState, params, callback);
1288
- };
1289
- /**
1290
- * @language javascript, java, dotnet
1291
- * Removes a PubSub responder from the specified topic. Only locally created responders (i.e. created in the local window) can be removed.
1292
- *
1293
- * See [`addPubSubResponder`](#addpubsubresponder) for corresponding addition of a PubSub responder.
1294
- *
1295
- * ```javascript
1296
- * FSBL.Clients.RouterClient.removePubSubResponder("topicABC");
1297
- * ```
1298
- * @param {string} topic Unique topic for responder being removed (may be RegEx, but if so much be exact RegEx used previously with `addPubSubResponder`).
1299
- */
1300
- export const removePubSubResponder = (topic) => {
1301
- const routerConnection = singleton("RouterClient", RouterConnection);
1302
- routerConnection.removePubSubResponder(topic);
1303
- };
1304
- /**
1305
- * @language javascript, java, dotnet
1306
- * Subscribe to a PubSub responder. Each responder topic can have many subscribers (local in this window or remote in other windows). Each subscriber immediately (but asynchronously) receives back current state in a notify; new notifications are received for each publish sent to the same topic.
1307
- *
1308
- * See [`addPubSubResponder`](#addpubsubresponder) for corresponding addition of a PubSub responder to handle the subscribe. See [`publish()`](#publish) for how to publish data to subscribers.
1309
- *
1310
- * ```javascript
1311
- * var subscribeId = RouterClient.subscribe("topicABC", function(err, notify) {
1312
- * if (!err) {
1313
- * var notificationStateData = notify.data;
1314
- * // do something with notify data
1315
- * }
1316
- * });
1317
- * ```
1318
- * @param {string} topic A unique string representing the topic being subscribed to.
1319
- * @param {function} notifyCallback Invoked on immediately upon subscription, then again on each incoming notification for the specified topic.
1320
- * @returns {object} An object containing a unique id representing the subscription. This can be used later to unsubscribe.
1321
- */
1322
- export const subscribe = (topic, notifyCallback) => {
1323
- const routerConnection = singleton("RouterClient", RouterConnection);
1324
- return routerConnection.subscribe(topic, notifyCallback);
1325
- };
1326
- /**
1327
- * @language javascript, java, dotnet
1328
- * Publish to a PubSub Responder, which will trigger a corresponding notification to all subscribers (local in this window or remote in other windows). There may be multiple publishers for a topic (again, in same window or remote windows).
1329
- *
1330
- * See [`addPubSubResponder`](#addpubsubresponder) for corresponding addition of a PubSub publisher (i.e., sending notifications to all subscriber). See [`Subscribe`](#subscribe) for corresponding subscription published results (in the form of a `Notify` event).
1331
- *
1332
- * ```javascript
1333
- * FSBL.Clients.RouterClient.publish("topicABC", topicState);
1334
- * ```
1335
- * @param {string} topic A unique string representing the topic being published.
1336
- * @param {object} event The topic state to be published to all subscribers (unless the PubSub responder optionally modifies in between).
1337
- */
1338
- export const publish = (topic, event) => {
1339
- const routerConnection = singleton("RouterClient", RouterConnection);
1340
- routerConnection.publish(topic, event);
1341
- };
1342
- /**
1343
- * @language javascript, java, dotnet
1344
- * Unsubscribes from a PubSub responder so no more notifications are received (but doesn't affect other subscriptions). Only works from the window the PubSub responder was created in.
1345
- *
1346
- * See [`subscribe`](#subscribe) for corresponding subscription being removed.
1347
- *
1348
- * ```javascript
1349
- * FSBL.Clients.RouterClient.unsubscribe(subscribeId);
1350
- * ```
1351
- * @param {object} subscribeIDStruct
1352
- * @param {string} subscribeIDStruct.subscribeID The id returned from the corresponding subscription to the topic.
1353
- * @param {string} subscribeIDStruct.topic The topic for the subscription.
1354
- */
1355
- export const unsubscribe = (subscribeIDStruct) => {
1356
- const routerConnection = singleton("RouterClient", RouterConnection);
1357
- routerConnection.unsubscribe(subscribeIDStruct);
1358
- };
1359
- /**
1360
- * @language javascript, java, dotnet
1361
- * Tests an incoming Router message to see if it originated from the same origin (i.e., a trusted source; not cross-domain).
1362
- *
1363
- * Currently, the origin of an incoming Router message is determined by way of the SharedWorker transport. By definition, SharedWorkers do not work across domains.
1364
- * This means any message coming in over the transport will not be trusted. However, by default, all same-origin components
1365
- * and services connect to the Router using a SharedWorker transport.
1366
- *
1367
- * ```javascript
1368
- * FSBL.Clients.RouterClient.trustedMessage(incomingRouterMessage);
1369
- * ```
1370
- * @param {object} incomingMessage An incoming Router message (e.g., transmit, query, notification) to test to see if trusted.
1371
- */
1372
- export const trustedMessage = (incomingMessage) => {
1373
- const routerConnection = singleton("RouterClient", RouterConnection);
1374
- return routerConnection.trustedMessage(incomingMessage);
1375
- };
1376
- /**
1377
- * @language javascript, java, dotnet
1378
- * Removes all listeners, responders, and subscribers for this router client -- automatically called when the client is shutting down. Can be called multiple times.
1379
- */
1380
- export const disconnectAll = () => {
1381
- const routerConnection = singleton("RouterClient", RouterConnection);
1382
- routerConnection.disconnectAll();
1383
- };
1384
- /**
1385
- * Used internally by Logger client
1386
- * @ignore
1387
- */
1388
- export const calibrateTimeWithRouterService = (callback) => {
1389
- const routerConnection = singleton("RouterClient", RouterConnection);
1390
- routerConnection.calibrateTimeWithRouterService(callback);
1391
- };
1392
- /**
1393
- * @ignore
1394
- */
1395
- export const RouterClient = {
1396
- onReady,
1397
- onFailure,
1398
- addListener,
1399
- transmit,
1400
- removeListener,
1401
- addResponder,
1402
- query,
1403
- removeResponder,
1404
- addPubSubResponder,
1405
- removePubSubResponder,
1406
- subscribe,
1407
- publish,
1408
- unsubscribe,
1409
- trustedMessage,
1410
- disconnectAll,
1411
- calibrateTimeWithRouterService,
1412
- };
1413
- /**
1414
- * @ignore
1415
- */
1416
- export default RouterClient;
1
+ /*!
2
+ * Copyright 2017 - 2020 by ChartIQ, Inc.
3
+ * All rights reserved.
4
+ */
5
+ /**
6
+ * For communications amongst desktop services, components, or outside the container entirely, Finsemble provides an event infrastructure with high level protocols.
7
+ * The Router is the center of this functionality, sending and receiving messages between windows.
8
+ *
9
+ *
10
+ * See the [Router tutorial](/docs/how-finsemble-works/TheRouter) for an overview.
11
+ * @module RouterClient
12
+ */
13
+ import RouterTransport from "../platform/services/router/routerTransport";
14
+ import { toast } from "../common/toast";
15
+ import { LoggerClient as Logger } from "./logger"; // should never be used, but message sent before router ready will be queue
16
+ import { Globals } from "../common/Globals";
17
+ import { Performance } from "../common/Performance";
18
+ import { singleton } from "../common/Singleton";
19
+ import uuidv4 from "uuid-random";
20
+ /**
21
+ * Duplicate of Utils.clone(). Do not import Utils into this file because it drags along Monitors.ts which
22
+ * is incompatible with freestanding apps.
23
+ */
24
+ function clone(from, to = {}) {
25
+ if (from === null || typeof from !== "object") {
26
+ return from;
27
+ }
28
+ if (from.constructor == Date ||
29
+ from.constructor == RegExp ||
30
+ from.constructor == Function ||
31
+ from.constructor == String ||
32
+ from.constructor == Number ||
33
+ from.constructor == Boolean) {
34
+ return new from.constructor(from);
35
+ }
36
+ to = to || new from.constructor();
37
+ for (const n in from) {
38
+ to[n] = typeof to[n] === "undefined" ? clone(from[n], null) : to[n];
39
+ }
40
+ return to;
41
+ }
42
+ /**
43
+ * @ignore
44
+ */
45
+ export class RouterConnection {
46
+ constructor() {
47
+ this.queue = [];
48
+ this.started = false;
49
+ this.clientName = "RouterClient.clientName not yet set";
50
+ this.transport = null;
51
+ this.isRouterReady = false;
52
+ this.isTransportFailed = false;
53
+ this.parentReadyCallbackQueue = []; // must be queue because may be multiple waiters
54
+ this.parentFailureCallbackQueue = []; // must be queue because may be multiple waiters
55
+ // Maps all listeners ( registered with calls to subscribe() ) for the given topics
56
+ this.mapListeners = {};
57
+ // Maps query channels to the registered responder (from a call to addResponder() )
58
+ this.mapQueryResponders = {};
59
+ this.mapPubSubResponders = {};
60
+ // Contains the current state for all responder channels
61
+ this.mapPubSubResponderState = {};
62
+ this.mapPubSubResponderRegEx = {};
63
+ // For a given pubsub topic, which subscriber ID's are listening
64
+ this.pubsubListOfSubscribers = {};
65
+ // Maps subscriber ID's to their callbacks
66
+ this.mapSubscribersID = {};
67
+ // Maps subscriber ID's to the topic they're subscribed on
68
+ this.mapSubscribersTopic = {};
69
+ this.mapQueryResponses = {};
70
+ // Map of running queries to their timeouts
71
+ this.mapQueryResponseTimeOut = {};
72
+ }
73
+ // ////////////////////
74
+ // Private Functions
75
+ // ////////////////////
76
+ // See IRouterClient.ts
77
+ onReadyCallBack() {
78
+ Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient Ready");
79
+ this.isRouterReady = true;
80
+ // invoke all the parent callbacks waiting for router to be ready
81
+ while (this.parentReadyCallbackQueue.length > 0) {
82
+ Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient parentReady invoked");
83
+ const nextParentCallback = this.parentReadyCallbackQueue.shift();
84
+ nextParentCallback === null || nextParentCallback === void 0 ? void 0 : nextParentCallback();
85
+ }
86
+ }
87
+ // *** all outbound messages exit here though the appropriate transport ***
88
+ sendToRouterService(message) {
89
+ if (!this.transport) {
90
+ Logger.system.info("RouterClient: Queuing message since router initialization not complete", message);
91
+ this.queue.push(message);
92
+ }
93
+ else {
94
+ this.transport.send(message);
95
+ }
96
+ }
97
+ // returns true if this routerClient originated the message
98
+ originatedHere(message) {
99
+ return message.header.origin === this.clientName;
100
+ }
101
+ // invoke client callbacks in the input array (that are attached to a specific channel and listener type)
102
+ invokeListeners(message) {
103
+ const { channel, origin } = message.header;
104
+ const listeners = this.mapListeners[channel] || [];
105
+ if (!Array.isArray(listeners) || listeners.length === 0) {
106
+ Logger.system.log(`RouterClient: no listener for incoming transmit on channel ${channel} from ${origin}. Possibly the listener was removed while this message was in transit.`, message);
107
+ }
108
+ else {
109
+ message.originatedHere = () => this.originatedHere(message);
110
+ listeners.forEach((listener) => {
111
+ if (!Logger.channelFilter(channel)) {
112
+ Logger.system.info("RouterClient: incoming transmit", "CHANNEL", channel, "FROM", origin, "MESSAGE", message);
113
+ }
114
+ listener(null, message); // invoke the callback; the error parameter is always null for this case
115
+ });
116
+ }
117
+ }
118
+ /**
119
+ * When an incoming query request is received from a client (via the RouterService) we look
120
+ * up the registered responder and pass it the incoming query along with
121
+ * a sendQueryResponse() method that will return the data back to the client.
122
+ */
123
+ invokeResponder(queryMessage) {
124
+ const { channel, origin, queryID, error } = queryMessage.header;
125
+ Logger.system.info("RouterClient: incoming query", "CHANNEL", channel, "FROM", origin, "QUERY MESSAGE", queryMessage);
126
+ /**
127
+ * Set up a closure that will allow our responder to send back a QueryResponse
128
+ */
129
+ const sendQueryResponse = (err, responseData) => {
130
+ Logger.system.info("RouterClient: outgoing query response", "CHANNEL", channel, "RESPONSE DATA", responseData, "QUERY ID", queryID);
131
+ let message = {
132
+ header: {
133
+ origin: this.clientName,
134
+ queryID: queryID,
135
+ type: "queryResponse",
136
+ },
137
+ data: responseData,
138
+ };
139
+ // Native apps expect a non-error condition to always result in transmission of null (not missing or undefined).
140
+ // For actual errors, toString() converts from Error or string type
141
+ message.header.error = err ? err.toString() : null;
142
+ this.sendToRouterService(message);
143
+ };
144
+ const responderCallback = this.mapQueryResponders[channel];
145
+ if (responderCallback === undefined) {
146
+ if (queryMessage.header.logWhenNoResponder) {
147
+ Logger.system.warn(`RouterClient: No query responder defined on channel ${channel} for incoming from ${origin}.`, queryMessage);
148
+ }
149
+ }
150
+ else if (!error) {
151
+ // Add the sendQueryResponse() and originatedHere() methods
152
+ const responderObject = {
153
+ ...queryMessage,
154
+ originatedHere: () => this.originatedHere(queryMessage),
155
+ sendQueryResponse: (err, responseData) => {
156
+ sendQueryResponse(err, responseData);
157
+ },
158
+ };
159
+ responderCallback(null, responderObject); // invoke the callback (no error)
160
+ }
161
+ else {
162
+ // invoke the callback with error since flag in message (from router service)
163
+ Logger.system.warn("RouterClient: queryResponder error", queryMessage);
164
+ responderCallback(error);
165
+ delete this.mapQueryResponders[channel]; // this is a bad responder (e.g. duplicate) so remove it
166
+ }
167
+ }
168
+ /**
169
+ * Received a query response back from the router service. Look up the callback
170
+ * and invoke it with the received data.
171
+ */
172
+ invokeQueryResponse(message) {
173
+ var _a;
174
+ Logger.system.info("RouterClient: incoming query response", "CHANNEL", message.header.channel, "QUERY ID", message.header.queryID, "message", message);
175
+ const { queryID } = message.header;
176
+ // delete any existing timer waiting on the response
177
+ const theTimer = this.mapQueryResponseTimeOut[queryID];
178
+ delete this.mapQueryResponseTimeOut[queryID];
179
+ if (theTimer)
180
+ clearTimeout(theTimer);
181
+ const clientCallback = this.mapQueryResponses[queryID];
182
+ if (clientCallback) {
183
+ delete this.mapQueryResponses[queryID];
184
+ const error = (_a = message.header.error) !== null && _a !== void 0 ? _a : null;
185
+ clientCallback(error, message);
186
+ }
187
+ else {
188
+ Logger.system.warn("Invariant: RouterClient: no handler found for incoming query response.", message);
189
+ }
190
+ }
191
+ /**
192
+ * Updates pub/sub subscriptions whenever state updates (or on initial subscribe to the topic).
193
+ * This looks up local subscribers and calls them with the pub/sub state.
194
+ */
195
+ invokeNotifyCallback(notifyMessage) {
196
+ const { subscribeID, error } = notifyMessage.header;
197
+ const notifyCallback = this.mapSubscribersID[subscribeID];
198
+ if (!notifyCallback) {
199
+ Logger.system.info("RouterClient: no subscription handler defined for incoming notify for subscriberID. Possibly the subscription was removed while this publish was in transit.", subscribeID, notifyMessage);
200
+ }
201
+ else if (!error) {
202
+ notifyMessage.originatedHere = () => this.originatedHere(notifyMessage);
203
+ Logger.system.info("RouterClient: incoming PubSub notify", "SUBSCRIBER ID", subscribeID, "NOTIFY MESSAGE", notifyMessage);
204
+ notifyCallback(null, notifyMessage);
205
+ }
206
+ else {
207
+ Logger.system.info("RouterClient: incoming PubSub notify error for subscriberID", "SUBSCRIBER ID", subscribeID, "NOTIFY MESSAGE", notifyMessage);
208
+ notifyCallback(error, notifyMessage);
209
+ }
210
+ }
211
+ /**
212
+ * Returns a responder given a topic. The topic could be a regex key, in
213
+ * which case mapPubSubResponderRegEx is searched
214
+ */
215
+ findResponder(topic) {
216
+ const responder = this.mapPubSubResponders[topic];
217
+ // if responder is undefined then look for a matching RegEx topic
218
+ if (!responder) {
219
+ for (const key in this.mapPubSubResponderRegEx) {
220
+ if (this.mapPubSubResponderRegEx[key].test(topic)) {
221
+ return this.mapPubSubResponders[key];
222
+ }
223
+ }
224
+ }
225
+ else {
226
+ return responder;
227
+ }
228
+ }
229
+ // for incoming Publish: invoke publish callback for pubsub server
230
+ invokePublishEvent(publishMessage) {
231
+ const { topic } = publishMessage.header;
232
+ let responder = this.findResponder(topic);
233
+ // if responder is *still* undefined
234
+ if (!responder) {
235
+ Logger.system.warn("RouterClient: no pubsub responder defined for incoming publish", "TOPIC", topic, "PUBLISH MESSAGE", publishMessage);
236
+ }
237
+ else {
238
+ // callback function for invokePublishPubSubCallback to send Notify
239
+ const sendNotifyToAllSubscribers = (request, err, notifyData) => {
240
+ var _a;
241
+ if (!err) {
242
+ this.mapPubSubResponderState[topic] = notifyData; // store new state
243
+ const listOfSubscribers = (_a = this.pubsubListOfSubscribers[topic]) !== null && _a !== void 0 ? _a : [];
244
+ listOfSubscribers.forEach((subscribeID) => {
245
+ Logger.system.info("RouterClient: sending pubsub notify", "TOPIC", topic, "NOTIFY DATA", notifyData);
246
+ const message = {
247
+ header: {
248
+ origin: this.clientName,
249
+ type: "notify",
250
+ topic: topic,
251
+ subscribeID,
252
+ },
253
+ data: notifyData,
254
+ };
255
+ this.sendToRouterService(message);
256
+ });
257
+ }
258
+ else {
259
+ Logger.system.warn("RouterClient: incoming publish rejected by pubsub responder", err, notifyData);
260
+ }
261
+ };
262
+ Logger.system.info(`RouterClient: incoming PubSub publish ${responder.publishCallback ? "(publishCallback hook invoked)" : ""}`, "TOPIC", topic, "PUBLISH MESSAGE", publishMessage);
263
+ // If the responder has a hook for publish events
264
+ if (responder.publishCallback) {
265
+ const hookMessage = {
266
+ ...publishMessage,
267
+ sendNotifyToAllSubscribers: (err, data) => {
268
+ sendNotifyToAllSubscribers(publishMessage, err, data);
269
+ },
270
+ };
271
+ responder.publishCallback(null, hookMessage);
272
+ }
273
+ else {
274
+ // since no publish callback defined, use default functionality
275
+ sendNotifyToAllSubscribers(publishMessage, null, publishMessage.data);
276
+ }
277
+ }
278
+ }
279
+ // for incoming subscribe: invoke notify callback for pubsub responder
280
+ invokeSubscribeEvent(subscribeMessage) {
281
+ var _a;
282
+ const { topic, error } = subscribeMessage.header;
283
+ Logger.system.info("RouterClient: PubSub subscribe", "TOPIC", topic);
284
+ let responder = this.mapPubSubResponders[topic];
285
+ if (!responder) {
286
+ // if responder is undefined then look for a matching RegEx topic
287
+ for (const regExKey in this.mapPubSubResponderRegEx) {
288
+ if (this.mapPubSubResponderRegEx[regExKey].test(topic)) {
289
+ responder = this.mapPubSubResponders[regExKey];
290
+ // If no initial state defined then take the default from the regEx
291
+ this.mapPubSubResponderState[topic] =
292
+ (_a = this.mapPubSubResponderState[topic]) !== null && _a !== void 0 ? _a : this.mapPubSubResponderState[regExKey];
293
+ break;
294
+ }
295
+ }
296
+ }
297
+ if (!responder) {
298
+ // If responder is *still* undefined then warning
299
+ Logger.system.warn("RouterClient: no pubsub responder defined for incoming subscribe event", subscribeMessage);
300
+ }
301
+ else if (error) {
302
+ Logger.system.warn(`RouterClient: pubsub error received from router service: ${error}`, subscribeMessage);
303
+ }
304
+ else {
305
+ if (responder.subscribeCallback) {
306
+ const hookMessage = {
307
+ ...subscribeMessage,
308
+ sendNotifyToSubscriber: (err, data) => {
309
+ this.sendNotifyToSubscriber(subscribeMessage, err, data);
310
+ },
311
+ };
312
+ subscribeMessage.data = this.mapPubSubResponderState[topic];
313
+ responder.subscribeCallback(null, hookMessage); // invoke the callback (no error)
314
+ }
315
+ else {
316
+ // since no subscribe callback defined, use default functionality
317
+ this.sendNotifyToSubscriber(subscribeMessage, null, this.mapPubSubResponderState[topic]);
318
+ }
319
+ }
320
+ }
321
+ // for incoming unsubscribe: invoke unsubscribe callback for pubsub server
322
+ invokeUnsubscribeEvent(unsubscribeMessage) {
323
+ const { topic, subscribeID } = unsubscribeMessage.header;
324
+ let responder = this.findResponder(topic);
325
+ if (!responder) {
326
+ // if responder is undefined then look for a matching RegEx topic
327
+ for (const key in this.mapPubSubResponderRegEx) {
328
+ if (this.mapPubSubResponderRegEx[key].test(topic)) {
329
+ responder = this.mapPubSubResponders[key];
330
+ break;
331
+ }
332
+ }
333
+ }
334
+ if (!responder) {
335
+ // if responder is *still* undefined
336
+ Logger.system.warn("RouterClient: no pubsub responder defined for incoming unsubscribe event", "TOPIC", topic, "UNSUBSCRIBE MESSAGE", unsubscribeMessage);
337
+ }
338
+ else {
339
+ Logger.system.info(`RouterClient: incoming unsubscribe ${responder.unsubscribeCallback ? "with unsubscribeCallback hook" : ""}`, "TOPIC", topic, "UNSUBSCRIBE MESSAGE", unsubscribeMessage);
340
+ if (responder.unsubscribeCallback) {
341
+ const hookMessage = {
342
+ ...unsubscribeMessage,
343
+ removeSubscriber: () => {
344
+ this.removeSubscribers(topic, subscribeID);
345
+ },
346
+ };
347
+ responder.unsubscribeCallback(null, hookMessage); // invoke the callback (no error)
348
+ }
349
+ else {
350
+ // since no unsubscribe callback defined, use default functionality
351
+ this.removeSubscribers(topic, subscribeID);
352
+ }
353
+ }
354
+ }
355
+ // callback function for invokeSubscribePubSubCallback to notify new subscriber
356
+ sendNotifyToSubscriber(subscribeMessage, err, notifyData) {
357
+ const { topic, subscribeID } = subscribeMessage.header;
358
+ // Don't send initial notification unless state has been explicitly defined (it may be null, so we have to explicitly check for undefined).
359
+ // This matches functionality if this pubsub responder is in routerService;
360
+ // This can happen because initialState is an optional parameter
361
+ if (typeof notifyData !== "undefined") {
362
+ let message = {
363
+ header: {
364
+ origin: this.clientName,
365
+ type: "notify",
366
+ topic: topic,
367
+ subscribeID: subscribeID,
368
+ },
369
+ data: notifyData,
370
+ };
371
+ if (err)
372
+ message.header.error = err;
373
+ this.sendToRouterService(message);
374
+ }
375
+ if (!err) {
376
+ // add new subscriber to list
377
+ if (!(topic in this.pubsubListOfSubscribers)) {
378
+ this.pubsubListOfSubscribers[topic] = [subscribeID];
379
+ }
380
+ else {
381
+ this.pubsubListOfSubscribers[topic].push(subscribeID);
382
+ }
383
+ Logger.system.info("RouterClient: incoming subscription added", "TOPIC", topic, "MESSAGE");
384
+ }
385
+ else {
386
+ Logger.system.warn("RouterClient: incoming subscription rejected by pubsub responder", "TOPIC", topic, "MESSAGE", this);
387
+ }
388
+ }
389
+ // Removes the subscribeID from the array for the given subscription topic
390
+ removeSubscribers(topic, subscribeID) {
391
+ let removed = false;
392
+ if (topic in this.pubsubListOfSubscribers) {
393
+ const list = this.pubsubListOfSubscribers[topic];
394
+ for (let i = 0; i < list.length; i++) {
395
+ if (subscribeID === list[i]) {
396
+ list.splice(i, 1);
397
+ if (list.length === 0) {
398
+ delete this.pubsubListOfSubscribers[topic];
399
+ }
400
+ removed = true;
401
+ Logger.system.info("RouterClient: PubSub removeListener", "TOPIC", topic, "FROM", subscribeID);
402
+ break;
403
+ }
404
+ }
405
+ }
406
+ if (!removed) {
407
+ Logger.system.warn(`RouterClient: tried to remove non-existent listener on ${topic} from ${subscribeID}`);
408
+ }
409
+ }
410
+ // route incoming message to appropriate callback, which depends on the message type and channel
411
+ routeIncomingMessage(incomingMessage) {
412
+ const newTimeCalibrationHandler = () => {
413
+ if (!this.timeCalibrationHandler) {
414
+ setTimeout(() => {
415
+ newTimeCalibrationHandler();
416
+ }, 10);
417
+ return;
418
+ }
419
+ this.timeCalibrationHandler(incomingMessage);
420
+ };
421
+ Logger.system.verbose("Incoming Message Type", incomingMessage.header.type, incomingMessage);
422
+ switch (incomingMessage.header.type) {
423
+ case "transmit":
424
+ this.invokeListeners(incomingMessage);
425
+ break;
426
+ case "query":
427
+ this.invokeResponder(incomingMessage);
428
+ break;
429
+ case "queryResponse":
430
+ this.invokeQueryResponse(incomingMessage);
431
+ break;
432
+ case "notify":
433
+ this.invokeNotifyCallback(incomingMessage);
434
+ break;
435
+ case "publish":
436
+ this.invokePublishEvent(incomingMessage);
437
+ break;
438
+ case "subscribe":
439
+ this.invokeSubscribeEvent(incomingMessage);
440
+ break;
441
+ case "unsubscribe":
442
+ this.invokeUnsubscribeEvent(incomingMessage);
443
+ break;
444
+ case "timeCalibration":
445
+ // Sometimes when multiple BrowserViews are added to the same window in quick succession (e.g. when loading dashbar at startup)
446
+ // It gets in here before this function exists. So wait for the function to exist.
447
+ newTimeCalibrationHandler();
448
+ break;
449
+ case "initialHandshakeResponse":
450
+ this.handshakeHandler();
451
+ break;
452
+ default:
453
+ }
454
+ }
455
+ // connects to event-router service. will retry various ways if needed
456
+ asyncConnectToEventRouter(routerConfig, transportName, cb) {
457
+ Logger.system.debug(`Name of transport to establish: ${transportName}`);
458
+ let myTimer = null;
459
+ let myRetryCounter = 0;
460
+ let isFinished = false;
461
+ let handshakeFailedCount = 0;
462
+ // Define getClientTransport to avoid warning about it being used before defined.
463
+ let getClientTransport = null;
464
+ const handshakeFailedHandler = () => {
465
+ clearInterval(myTimer);
466
+ handshakeFailedCount++;
467
+ if (handshakeFailedCount <= 3) {
468
+ Logger.console.error("WINDOW LIFECYCLE:STARTUP:RouterClient: failure to connect to router service. Retrying...", handshakeFailedCount, routerConfig);
469
+ getClientTransport === null || getClientTransport === void 0 ? void 0 : getClientTransport();
470
+ }
471
+ else {
472
+ const failureMessage = "A cross domain transport has failed to connect. Cross domain components may not work. Please contact your administrator.";
473
+ Logger.console.error(failureMessage, routerConfig);
474
+ toast("dev", "ONCE-SINCE-STARTUP", "FSBL-Internal-Transport-Failure", failureMessage);
475
+ }
476
+ };
477
+ const sendHandshake = () => {
478
+ var _a;
479
+ const MaxRetryHandshake = Number.MAX_SAFE_INTEGER;
480
+ Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient: sendHandshake", myRetryCounter);
481
+ const message = {
482
+ header: {
483
+ origin: this.clientName,
484
+ type: "initialHandshake",
485
+ },
486
+ };
487
+ (_a = Globals.fin) === null || _a === void 0 ? void 0 : _a.log(`preload: sending handshake attempt ${myRetryCounter}`);
488
+ this.sendToRouterService(message);
489
+ if (myRetryCounter++ > MaxRetryHandshake) {
490
+ handshakeFailedHandler();
491
+ }
492
+ };
493
+ const finished = () => {
494
+ var _a, _b;
495
+ (_a = Globals.fin) === null || _a === void 0 ? void 0 : _a.log("preload: received finished handshake");
496
+ if (!isFinished) {
497
+ // ensure only invoked once
498
+ Logger.system.debug(`WINDOW LIFECYCLE:STARTUP:RouterClient connected: Starting ${this.clientName} with transport ${this.transport.identifier()}`);
499
+ isFinished = true;
500
+ clearInterval(myTimer);
501
+ // this should not happen with proper startup order, which waits on routerClient to be ready
502
+ for (let i = 0; i < this.queue.length; i++) {
503
+ Logger.system.debug("RouterClient: releasing queued msg");
504
+ const msg = this.queue[i];
505
+ // Queued messages won't yet have had a valid origin (clientName). We can replace it now that clientName has been definitively set.
506
+ this.transport.send({
507
+ ...msg,
508
+ header: {
509
+ ...msg.header,
510
+ origin: this.clientName,
511
+ },
512
+ });
513
+ }
514
+ // notify initialization is complete
515
+ (_b = Globals.fin) === null || _b === void 0 ? void 0 : _b.log("preload: routerClient handshake completed");
516
+ cb === null || cb === void 0 ? void 0 : cb();
517
+ }
518
+ };
519
+ const transportReady = (transportObj) => {
520
+ var _a;
521
+ (_a = Globals.fin) === null || _a === void 0 ? void 0 : _a.log("preload: transportReady");
522
+ const HandshakeRetryInterval = 1000;
523
+ myRetryCounter = 0;
524
+ Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient:transport ready", "TRANSPORT OBJECT", transportObj);
525
+ this.transport = transportObj;
526
+ this.handshakeHandler = finished; // set function to receive handshake response
527
+ sendHandshake();
528
+ myTimer = setInterval(sendHandshake, HandshakeRetryInterval); // time to retry if response not received back from router service
529
+ };
530
+ const onFailureCallBack = () => {
531
+ Logger.system.error("RouterClient Transport Failed -- onFailure() callbacks invoked.");
532
+ this.isTransportFailed = true;
533
+ // invoke all the parent callbacks registered for onFailure
534
+ while (this.parentFailureCallbackQueue.length > 0) {
535
+ Logger.system.debug("RouterClient parentFailure invoked");
536
+ const nextParentCallback = this.parentFailureCallbackQueue.shift();
537
+ nextParentCallback === null || nextParentCallback === void 0 ? void 0 : nextParentCallback();
538
+ }
539
+ };
540
+ getClientTransport = () => {
541
+ Logger.system.debug("WINDOW LIFECYCLE:STARTUP:RouterClient:getClientTransport", "ROUTER PARAMS:", routerConfig);
542
+ // *** all incoming messages from underlying transport arrive here ***
543
+ // although incoming transport information is available, it is not passed on because not needed
544
+ const incomingMessageHandler = (incomingTransportInfo, message) => {
545
+ message.header.lastClient = this.clientName; // add last client for diagnostics
546
+ message.header.incomingTransportInfo = incomingTransportInfo;
547
+ this.routeIncomingMessage(message);
548
+ };
549
+ RouterTransport.getTransport(routerConfig, transportName, incomingMessageHandler, this.clientName, "RouterService", onFailureCallBack)
550
+ .then(transportReady)
551
+ .catch((error) => {
552
+ Logger.console.error("RouterClient getTransport error", error);
553
+ });
554
+ };
555
+ // main code for this asyncConnectToEventRouter function -- only executed once
556
+ getClientTransport();
557
+ }
558
+ // support function for addPubSubResponder -- add pubsub responder callbackHandler for the given channel
559
+ addPubSubResponderCallBack(topic, subscribeCallback, publishCallback, unsubscribeCallback) {
560
+ const topicAsString = topic.toString(); // toString() in case RegExp
561
+ if (!this.mapPubSubResponders[topicAsString]) {
562
+ if (topic instanceof RegExp) {
563
+ this.mapPubSubResponderRegEx[topicAsString] = topic;
564
+ Logger.system.info(`RouterClient: PubSub RegEx added for topic ${topicAsString}`);
565
+ }
566
+ this.mapPubSubResponders[topicAsString] = {
567
+ subscribeCallback,
568
+ publishCallback,
569
+ unsubscribeCallback,
570
+ };
571
+ return true;
572
+ }
573
+ return false;
574
+ }
575
+ /**
576
+ * Estimates offset to align the reference time with Router Service. Does this by exchanging messages with RouterService, getting the service's time, and estimating communication delay.
577
+ */
578
+ calibrateTimeWithRouterService(callback) {
579
+ const TARGET_HANDSHAKE_COUNT = 5;
580
+ let handshakeCounter = 0;
581
+ let offsetForFastest = 0;
582
+ let fastestRRT = Infinity;
583
+ const calibrationCalculation = (finalHandshakeMessage) => {
584
+ const { clientBaseTime, serviceBaseTime } = finalHandshakeMessage;
585
+ let timeOffset = 0;
586
+ for (let i = 1; i < TARGET_HANDSHAKE_COUNT; i++) {
587
+ const startClientTime = clientBaseTime[i - 1];
588
+ const stopClientTime = clientBaseTime[i];
589
+ const rtt = stopClientTime - startClientTime; // round-trip time
590
+ const serviceTime = serviceBaseTime[i - 1];
591
+ const offset = serviceTime - (startClientTime + rtt / 2);
592
+ if (rtt < fastestRRT) {
593
+ fastestRRT = rtt;
594
+ offsetForFastest = offset;
595
+ }
596
+ timeOffset = timeOffset + offset;
597
+ Logger.system.debug("calibrationCalculation Intermediate Values", "lastRRT", rtt, "lastOffset", offset, "fastestOffset", offsetForFastest, "fastestRRT", fastestRRT);
598
+ }
599
+ timeOffset = timeOffset / (TARGET_HANDSHAKE_COUNT - 1);
600
+ Logger.system.debug("RouterClient calibrationCalculation", "Average Offset", timeOffset, "Chosen FastestOffset", offsetForFastest, finalHandshakeMessage);
601
+ callback(offsetForFastest); // use the offset with the shortest RTT since it is often the most accurate
602
+ };
603
+ const timeCalibrationHandlerFunction = (calibration) => {
604
+ handshakeCounter++;
605
+ if (handshakeCounter > TARGET_HANDSHAKE_COUNT) {
606
+ calibrationCalculation(calibration); // enough handshake data gather, so do the calibration
607
+ }
608
+ else {
609
+ calibration.clientBaseTime.push(Performance.timing.navigationStart + Performance.now());
610
+ const message = {
611
+ header: {
612
+ origin: this.clientName,
613
+ type: "timeCalibration",
614
+ },
615
+ clientBaseTime: calibration.clientBaseTime,
616
+ serviceBaseTime: calibration.serviceBaseTime,
617
+ };
618
+ this.sendToRouterService(message);
619
+ }
620
+ };
621
+ const message = {
622
+ header: {
623
+ origin: this.clientName,
624
+ type: "timeCalibration",
625
+ },
626
+ clientBaseTime: [],
627
+ serviceBaseTime: [],
628
+ };
629
+ this.timeCalibrationHandler = timeCalibrationHandlerFunction; // used in routeIncomingMessage to route handshake response back to handler
630
+ this.timeCalibrationHandler(message); // invoke first time to start exchanging handshakes; will be invoked each time handshake message received back from RouterService
631
+ }
632
+ /**
633
+ * Starts the router client, creating a unique name to represent this instance, initiating the
634
+ * transport that is specified in routerConfig, and then registering itself with the router
635
+ * service. Most of this work occurs in the internal function `asyncConnectToEventRouter()`.
636
+ */
637
+ start(routerConfig) {
638
+ return new Promise(async (resolve) => {
639
+ var _a;
640
+ if (this.started) {
641
+ const warning = `RouterClient.start() called twice. Ignoring second call.`;
642
+ Logger.system.warn(warning);
643
+ return resolve(warning);
644
+ }
645
+ this.started = true;
646
+ // The client name is also the origin name passed to router service.
647
+ // NOTE: the second dot-separated token in the clientName must be the window name since the router service will
648
+ // bind this name to the transport so the InteropService can use for authentication
649
+ this.clientName = `RouterClient.${routerConfig.windowName}.${uuidv4()}`;
650
+ const logMessage = `"RouterClient Check: connecting new client for ${this.clientName}`;
651
+ Logger.system.debug(logMessage);
652
+ console.debug(logMessage);
653
+ (_a = Globals.fin) === null || _a === void 0 ? void 0 : _a.log(logMessage);
654
+ RouterTransport.setTransports();
655
+ this.asyncConnectToEventRouter(routerConfig, routerConfig.transportName, () => {
656
+ this.onReadyCallBack();
657
+ resolve(null);
658
+ });
659
+ });
660
+ }
661
+ // See IRouterClient.ts
662
+ disconnectFromService() {
663
+ Logger.system.info("RouterClient.disconnectFromService");
664
+ const message = {
665
+ header: {
666
+ origin: this.clientName,
667
+ type: "disconnectFromService",
668
+ },
669
+ };
670
+ this.sendToRouterService(message);
671
+ }
672
+ /**
673
+ * Stops the router. This disconnects all responders and listeners and closes all transports.
674
+ * Once stopped, a router may be started again.
675
+ */
676
+ stop() {
677
+ // Remove all registered listeners from router service
678
+ this.disconnectAll();
679
+ // Close the currently open transport
680
+ RouterTransport.close();
681
+ this.started = false;
682
+ this.disconnectFromService();
683
+ }
684
+ // ///////////////////////////////////////////
685
+ // Public Functions -- The Router Client API
686
+ // ///////////////////////////////////////////
687
+ // See IRouterClient.ts
688
+ onReady(cb) {
689
+ return new Promise((resolve) => {
690
+ const sendSignal = () => {
691
+ if (cb)
692
+ cb();
693
+ resolve();
694
+ };
695
+ if (this.isRouterReady) {
696
+ sendSignal();
697
+ }
698
+ else {
699
+ this.parentReadyCallbackQueue.push(sendSignal);
700
+ }
701
+ });
702
+ }
703
+ // See IRouterClient.ts
704
+ onFailure(cb) {
705
+ return new Promise((resolve) => {
706
+ const sendSignal = () => {
707
+ if (cb)
708
+ cb();
709
+ resolve();
710
+ };
711
+ if (this.isTransportFailed) {
712
+ sendSignal();
713
+ }
714
+ else {
715
+ this.parentFailureCallbackQueue.push(sendSignal);
716
+ }
717
+ });
718
+ }
719
+ // See IRouterClient.ts
720
+ addListener(channel, eventHandler) {
721
+ Logger.system.info("RouterClient.addListener", "CHANNEL", channel);
722
+ // for addListener: add a callbackHandler into the specified map (which depends on listener type) for the given channel
723
+ const listeners = this.mapListeners[channel];
724
+ if (!listeners || listeners.length === 0) {
725
+ this.mapListeners[channel] = [eventHandler];
726
+ const message = {
727
+ header: {
728
+ origin: this.clientName,
729
+ type: "addListener",
730
+ channel,
731
+ },
732
+ };
733
+ this.sendToRouterService(message);
734
+ }
735
+ else {
736
+ if (listeners.some((listener) => eventHandler === listener)) {
737
+ Logger.debug("RouterClient.addListener() Ignoring duplicate listener with identical callback", channel, eventHandler);
738
+ }
739
+ else {
740
+ listeners.push(eventHandler);
741
+ }
742
+ }
743
+ return () => {
744
+ this.removeListener(channel, eventHandler);
745
+ };
746
+ }
747
+ // See IRouterClient.ts
748
+ transmit(toChannel, data, options) {
749
+ if (!Logger.channelFilter(toChannel)) {
750
+ Logger.system.info("RouterClient.transmit", "TO CHANNEL", toChannel, "DATA", data);
751
+ }
752
+ const message = {
753
+ header: {
754
+ origin: this.clientName,
755
+ type: "transmit",
756
+ channel: toChannel,
757
+ },
758
+ data,
759
+ options,
760
+ };
761
+ this.sendToRouterService(message);
762
+ }
763
+ // See IRouterClient.ts
764
+ removeListener(channel, eventHandler) {
765
+ Logger.system.info("RouterClient.removeListener", "CHANNEL", channel, "EVENT HANDLER", eventHandler);
766
+ if (!this.mapListeners[channel]) {
767
+ Logger.system.debug("Attempt to remove non existent listener", channel, eventHandler);
768
+ console.log("Attempt to remove non existent listener", channel, eventHandler);
769
+ return;
770
+ }
771
+ // Remove any matching listeners from the listener array
772
+ this.mapListeners[channel] = this.mapListeners[channel].flatMap((listener) => {
773
+ if (listener === eventHandler) {
774
+ return [];
775
+ }
776
+ else {
777
+ return [listener];
778
+ }
779
+ });
780
+ // If there are no more listeners for this channel then let the router service
781
+ // know that we are no longer interested in this channel.
782
+ if (!this.mapListeners[channel].length) {
783
+ delete this.mapListeners[channel];
784
+ const message = {
785
+ header: {
786
+ origin: this.clientName,
787
+ type: "removeListener",
788
+ channel,
789
+ },
790
+ };
791
+ this.sendToRouterService(message);
792
+ }
793
+ }
794
+ // See IRouterClient.ts
795
+ addResponder(channel, queryEventHandler) {
796
+ Logger.system.info("RouterClient.addResponder", "CHANNEL", channel);
797
+ // add responder callbackHandler for the given channel
798
+ if (!this.mapQueryResponders[channel]) {
799
+ this.mapQueryResponders[channel] = queryEventHandler;
800
+ const message = {
801
+ header: {
802
+ origin: this.clientName,
803
+ type: "addResponder",
804
+ channel,
805
+ },
806
+ };
807
+ this.sendToRouterService(message);
808
+ }
809
+ else {
810
+ const warning = `RouterClient.addResponder: Responder already locally defined for channel ${channel}`;
811
+ Logger.system.warn(warning);
812
+ queryEventHandler(warning);
813
+ }
814
+ }
815
+ // See IRouterClient.ts for overloads
816
+ // Here we have a complicated type definition to tackle both overloads
817
+ query(responderChannel, queryEvent, queryParams, responseEventHandler) {
818
+ var _a, _b;
819
+ const newQueryID = `${this.clientName}.${uuidv4()}.${responderChannel}`;
820
+ const timestamp = Performance.timing.navigationStart + Performance.now();
821
+ const navstart = Performance.timing.navigationStart;
822
+ const timenow = Performance.now(); // these timer values used for logging diagnostics
823
+ Logger.system.info("RouterClient.query", "RESPONDER CHANNEL", responderChannel, "QUERY EVENT", queryEvent, "PARAMS", queryParams, "QUERY ID", newQueryID, { timestamp, navstart, timenow });
824
+ // 4th parameter if it exists, otherwise 3rd parameter if it's a function, otherwise null
825
+ const handler = responseEventHandler !== null && responseEventHandler !== void 0 ? responseEventHandler : (typeof queryParams === "function" ? queryParams : null);
826
+ const timeout = (_a = queryParams === null || queryParams === void 0 ? void 0 : queryParams.timeout) !== null && _a !== void 0 ? _a : 20000;
827
+ // Normally the central logger will log a warning when no responder exists for a query but
828
+ // sometimes there are unavoidable race conditions. Use this parameter to work around those conditions
829
+ // along with timeout = 0
830
+ const logWhenNoResponder = (_b = queryParams === null || queryParams === void 0 ? void 0 : queryParams.logWhenNoResponder) !== null && _b !== void 0 ? _b : true;
831
+ const promiseResolver = (resolve) => {
832
+ // add a callbackHandler into the query-response map for the given queryID
833
+ this.mapQueryResponses[newQueryID] = (err, response) => {
834
+ handler === null || handler === void 0 ? void 0 : handler(err, response);
835
+ resolve({ err, response });
836
+ };
837
+ // Waiting on timeouts can cause unit tests to hang (if an unintended query is triggered)
838
+ if (!Globals.runningInFSBLUnitTest && timeout > 0) {
839
+ // add timer to wait for query response
840
+ // The RouterService is responsible for monitoring long queries and will log to central logger.
841
+ // So this local warning is really only in play when this app itself has gotten disconnected from the router
842
+ // therefore it is only logged to console, so as to avoid a mess of duplicate logs
843
+ this.mapQueryResponseTimeOut[newQueryID] = setTimeout(() => {
844
+ console.warn(`RouterClient: timeout after ${timeout} ms waiting on query response on channel ${responderChannel} for queryID ${newQueryID} from client ${this.clientName}`, "from event", queryEvent, "with params", queryParams);
845
+ delete this.mapQueryResponseTimeOut[newQueryID];
846
+ }, timeout);
847
+ }
848
+ const message = {
849
+ header: {
850
+ origin: this.clientName,
851
+ type: "query",
852
+ queryID: newQueryID,
853
+ channel: responderChannel,
854
+ logWhenNoResponder,
855
+ timeout,
856
+ },
857
+ data: queryEvent,
858
+ };
859
+ this.sendToRouterService(message);
860
+ };
861
+ return new Promise(promiseResolver);
862
+ }
863
+ // See IRouterClient.ts
864
+ removeResponder(responderChannel) {
865
+ Logger.system.info("RouterClient.removeResponder", "RESPONDER CHANNEL", responderChannel);
866
+ if (this.mapQueryResponders[responderChannel]) {
867
+ delete this.mapQueryResponders[responderChannel];
868
+ const message = {
869
+ header: {
870
+ origin: this.clientName,
871
+ type: "removeResponder",
872
+ channel: responderChannel,
873
+ },
874
+ };
875
+ this.sendToRouterService(message);
876
+ }
877
+ }
878
+ // See IRouterClient.ts
879
+ addPubSubResponder(topic, initialState, params, callback) {
880
+ let error;
881
+ let response;
882
+ Logger.system.info("RouterClient.addPubSubResponder", "TOPIC", topic, "INITIAL STATE", initialState, "PARAMS", params);
883
+ params = params || {};
884
+ // if this pubsub responder doesn't define any of the special callback handlers, then the pubsub can be handled in the router service
885
+ if (typeof params.subscribeCallback === "undefined" &&
886
+ typeof params.publishCallback === "undefined" &&
887
+ typeof params.unsubscribeCallback === "undefined") {
888
+ initialState = initialState || {};
889
+ // this message indicates the pubsub will be handled within the router service
890
+ const message = {
891
+ header: {
892
+ origin: this.clientName,
893
+ type: "addPubSubResponder",
894
+ topic: topic.toString(),
895
+ handleOnServer: true,
896
+ },
897
+ data: initialState,
898
+ };
899
+ this.sendToRouterService(message);
900
+ response = "success";
901
+ }
902
+ else {
903
+ const status = this.addPubSubResponderCallBack(topic, params.subscribeCallback, params.publishCallback, params.unsubscribeCallback);
904
+ if (status) {
905
+ initialState = initialState || {};
906
+ this.mapPubSubResponderState[topic.toString()] = clone(initialState);
907
+ // this message indicates the pubsub will be handled locally withing this router client
908
+ const message = {
909
+ header: {
910
+ origin: this.clientName,
911
+ type: "addPubSubResponder",
912
+ topic: topic.toString(),
913
+ handleOnServer: false,
914
+ },
915
+ data: initialState,
916
+ };
917
+ this.sendToRouterService(message);
918
+ response = "success";
919
+ }
920
+ else {
921
+ error = `RouterClient.addPubSubResponder: Responder already locally defined for topic ${topic}`;
922
+ Logger.system.error(error);
923
+ }
924
+ }
925
+ if (callback) {
926
+ callback(error, response);
927
+ }
928
+ }
929
+ // See IRouterClient.ts
930
+ removePubSubResponder(topic) {
931
+ Logger.system.info("RouterClient.removePubSubResponder", "TOPIC", topic);
932
+ const topicAsString = topic.toString(); // string or RegExp
933
+ if (this.mapPubSubResponders[topicAsString]) {
934
+ delete this.mapPubSubResponders[topicAsString]; // remove responder
935
+ delete this.mapPubSubResponderState[topicAsString]; // remove corresponding state
936
+ delete this.mapPubSubResponderRegEx[topicAsString]; // remove regex maybe
937
+ const message = {
938
+ header: {
939
+ origin: this.clientName,
940
+ type: "removePubSubResponder",
941
+ topic,
942
+ },
943
+ };
944
+ this.sendToRouterService(message);
945
+ }
946
+ else {
947
+ Logger.system.warn(`RouterClient.removePubSubResponder failed: Could not find responder for topic ${topic}`);
948
+ }
949
+ }
950
+ // See IRouterClient.ts
951
+ subscribe(topic, notifyCallback) {
952
+ Logger.system.info("RouterClient.subscribe", "TOPIC", topic);
953
+ const subscribeID = `${this.clientName}.${uuidv4()}`;
954
+ this.mapSubscribersID[subscribeID] = notifyCallback;
955
+ this.mapSubscribersTopic[subscribeID] = topic;
956
+ const message = {
957
+ header: {
958
+ origin: this.clientName,
959
+ type: "subscribe",
960
+ subscribeID,
961
+ topic,
962
+ },
963
+ };
964
+ this.sendToRouterService(message);
965
+ return { subscribeID, topic };
966
+ }
967
+ // See IRouterClient.ts
968
+ publish(topic, data) {
969
+ Logger.system.info("RouterClient.publish", "TOPIC", topic, "EVENT", data);
970
+ const message = {
971
+ header: {
972
+ origin: this.clientName,
973
+ type: "publish",
974
+ topic,
975
+ },
976
+ data: data,
977
+ };
978
+ this.sendToRouterService(message);
979
+ }
980
+ // See IRouterClient.ts
981
+ unsubscribe(subscribeIDStruct) {
982
+ Logger.system.info("RouterClient.unsubscribe", "SUBSCRIBE ID", subscribeIDStruct);
983
+ // outgoing Unsubscribe: remove subscriber callbackHandler for the given channel
984
+ const { subscribeID } = subscribeIDStruct;
985
+ if (this.mapSubscribersID[subscribeID]) {
986
+ delete this.mapSubscribersID[subscribeID];
987
+ delete this.mapSubscribersTopic[subscribeID];
988
+ const message = {
989
+ header: {
990
+ origin: this.clientName,
991
+ type: "unsubscribe",
992
+ subscribeID: subscribeIDStruct.subscribeID,
993
+ topic: subscribeIDStruct.topic,
994
+ },
995
+ };
996
+ this.sendToRouterService(message);
997
+ }
998
+ else {
999
+ Logger.system.warn(`RouterClient.unsubscribe: Could not find subscribeID for topic ${subscribeIDStruct.topic}`);
1000
+ }
1001
+ }
1002
+ /**
1003
+ * Test an incoming router message to see if it originated from the same origin (e.g. a trusted source...not cross-domain). Currently same origin is known only because a sharedWorker transport is used (by definition SharedWorkers do not work cross-domain). This means any message coming in over the Inter-application Bus will not be trusted; however, by default all same-origin components and services connect to the router using a SharedWorker transport.
1004
+ *
1005
+ * ```javascript
1006
+ * FSBL.Clients.RouterClient.trustedMessage(incomingRouterMessage);
1007
+ * ```
1008
+ * @param {object} incomingMessage an incoming router message (e.g. transmit, query, notification) to test to see if trusted.
1009
+ */
1010
+ trustedMessage(incomingMessage) {
1011
+ var _a;
1012
+ Logger.system.debug("RouterClient.trustedMessage header", incomingMessage.header);
1013
+ return (_a = incomingMessage.header.originMetadata) === null || _a === void 0 ? void 0 : _a.transportInfo.transportID.includes("SharedWorker");
1014
+ }
1015
+ // See IRouterClient.ts
1016
+ disconnectAll() {
1017
+ Logger.system.info("RouterClient.disconnectAll");
1018
+ Object.keys(this.mapListeners).forEach((channel) => {
1019
+ const handlers = Array.from(new Set(this.mapListeners[channel])); // de-dupe to avoid warning messages
1020
+ handlers.forEach((handler) => {
1021
+ this.removeListener(channel, handler);
1022
+ });
1023
+ });
1024
+ Object.keys(this.mapQueryResponders).forEach((channel) => {
1025
+ this.removeResponder(channel);
1026
+ });
1027
+ Object.keys(this.mapPubSubResponders).forEach((topic) => {
1028
+ this.removePubSubResponder(topic);
1029
+ });
1030
+ Object.keys(this.mapSubscribersID).forEach((subscribeID) => {
1031
+ const topic = this.mapSubscribersTopic[subscribeID];
1032
+ this.unsubscribe({ topic, subscribeID });
1033
+ });
1034
+ }
1035
+ }
1036
+ /**
1037
+ * @ignore
1038
+ */
1039
+ export const RouterController = {
1040
+ /**
1041
+ * Used to start the router. This is called by entry points (FSBLDesktop.ts, FSBLFreestanding.ts, FSBLService.ts [ in baseService, serviceManager's bootEngine.ts, logger's main.jsx ] )
1042
+ * @private
1043
+ */
1044
+ start: (params) => {
1045
+ const routerConnection = singleton("RouterClient", RouterConnection);
1046
+ Logger.setRouterClient(routerConnection);
1047
+ return routerConnection.start(params);
1048
+ },
1049
+ /**
1050
+ * Used to stop the router. Generally used for unit testing.
1051
+ * @private
1052
+ */
1053
+ stop: () => {
1054
+ const routerConnection = singleton("RouterClient", RouterConnection);
1055
+ routerConnection.stop();
1056
+ },
1057
+ /**
1058
+ * Used internally by Logger client
1059
+ */
1060
+ calibrateTimeWithRouterService(callback) {
1061
+ const routerConnection = singleton("RouterClient", RouterConnection);
1062
+ routerConnection.calibrateTimeWithRouterService(callback);
1063
+ },
1064
+ };
1065
+ /**
1066
+ * @language javascript, java, dotnet
1067
+ * @deprecated Don't use this method. (Apps that use the FSBL API and wait on the global `onReady` event are guaranteed that the router will be ready). Internal code
1068
+ * should wait on Startup.onReady().
1069
+ *
1070
+ * Checks if Router is ready. May be invoked multiple times. Invokes optional callback and resolves promise when ready, which may be immediately. Router is not ready until underlying transport to Router Service is ready.
1071
+ *
1072
+ * @param {function} [cb] Optional callback function to invoke when Router is ready.
1073
+ * @return {Promise} Promise resolves when Router is ready
1074
+ */
1075
+ export const onReady = (cb) => {
1076
+ Logger.system.deprecated("You no longer need to call RouterClient.onReady()");
1077
+ const routerConnection = singleton("RouterClient", RouterConnection);
1078
+ return routerConnection.onReady(cb);
1079
+ };
1080
+ /**
1081
+ * @language javascript, java, dotnet
1082
+ * May be invoked multiple times. Invokes optional callback and resolves promise if router client fails, typically due to underlying transport failure.
1083
+ *
1084
+ * @param {function} [cb] Optional callback function to invoke if the routerClient fail due to a loss of connectivity.
1085
+ * @return {Promise} Promise resolves on Router failure
1086
+ */
1087
+ export const onFailure = (cb) => {
1088
+ const routerConnection = singleton("RouterClient", RouterConnection);
1089
+ return routerConnection.onFailure(cb);
1090
+ };
1091
+ /**
1092
+ * @language javascript, java, dotnet
1093
+ * Adds a listener for incoming transmit events on the specified channel. Each of the incoming events will trigger the specified event handler. The number of listeners is not limited (either local to this Finsemble window or in a separate Finsemble window).
1094
+ *
1095
+ * See [`transmit`](#transmit) for sending a corresponding event message to the listener. See [`removeListener`](#removelistener) to remove the listener.
1096
+ *
1097
+ * ```javascript
1098
+ * FSBL.Clients.RouterClient.addListener("SomeChannelName", function (error, response) {
1099
+ * if (error) {
1100
+ * Logger.system.error("ChannelA Error: " + JSON.stringify(error));
1101
+ * } else {
1102
+ * var data = response.data;
1103
+ * if (response.originatedHere()) {
1104
+ * Logger.system.warn("Received a message from the calling window, ignoring");
1105
+ * } else {
1106
+ * // Logic to perform with data
1107
+ * }
1108
+ * }
1109
+ * });
1110
+ * ```
1111
+ * @param {string} channel A unique string to identify the channel (must match corresponding transmit channel name).
1112
+ * @param {function} eventHandler A callback handling any possible error and the response. Use <b>response.originatedHere()</b> to determine if the message came from the same window. (see example below).
1113
+ * @return {RouterListenerUnsubscribe} Returns a function that can be called to unsubscribe (convenient alternative to removeListener)
1114
+ */
1115
+ export const addListener = (channel, eventHandler) => {
1116
+ const routerConnection = singleton("RouterClient", RouterConnection);
1117
+ return routerConnection.addListener(channel, eventHandler);
1118
+ };
1119
+ /**
1120
+ * @language javascript, java, dotnet
1121
+ * Transmits data to all listeners on the specified channel. If there are no listeners on the channel, the event is discarded without error. All listeners on the channel in this Finsemble window and other Finsemble windows will receive the transmit.
1122
+ *
1123
+ * See [`addListener`](#addlistener) to add a listener to receive the transmit.
1124
+ *
1125
+ * ```javascript
1126
+ * FSBL.Clients.RouterClient.transmit("SomeChannelName", event);
1127
+ * ```
1128
+ * @param {string} toChannel A unique string to identify the channel (must match corresponding listener channel name).
1129
+ * @param {any} data An object or primitive type to be transmitted.
1130
+ * @param {object} options An object containing options for your transmission.
1131
+ * @param {boolean} options.suppressWarnings By default, the Router will log warnings if you transmit to a channel with no listeners. Set this to true to eliminate those warnings.
1132
+ */
1133
+ export const transmit = (toChannel, data, options) => {
1134
+ const routerConnection = singleton("RouterClient", RouterConnection);
1135
+ routerConnection.transmit(toChannel, data, options);
1136
+ };
1137
+ /**
1138
+ * @language javascript, java, dotnet
1139
+ * Removes an event listener from the specified channel for the specific event handler; only listeners created locally can be removed.
1140
+ *
1141
+ * See [`addListener`](#addlistener) for corresponding add of a listener.
1142
+ *
1143
+ * @param {string} channel The unique channel name from which to remove the listener.
1144
+ * @param {function} eventHandler Function used for the event handler when the listener was added.
1145
+ */
1146
+ export const removeListener = (channel, eventHandler) => {
1147
+ const routerConnection = singleton("RouterClient", RouterConnection);
1148
+ routerConnection.removeListener(channel, eventHandler);
1149
+ };
1150
+ /**
1151
+ * @language javascript, java, dotnet
1152
+ * Adds a query responder to the specified channel. The responder's `queryEventHandler` function will receive all incoming queries for the specified channel (whether from this Finsemble window or remote Finsemble windows).
1153
+ *
1154
+ * :::note
1155
+ * Only one responder is allowed per channel within Finsemble.
1156
+ * :::
1157
+ *
1158
+ * See [`query`](#query) for sending a corresponding query-event message to this responder.
1159
+ *
1160
+ * ```javascript
1161
+ * FSBL.Clients.RouterClient.addResponder("ResponderChannelName", function (error, queryMessage) {
1162
+ * if (error) {
1163
+ * Logger.system.log('addResponder failed: ' + JSON.stringify(error));
1164
+ * } else {
1165
+ * console.log("incoming data=" + queryMessage.data);
1166
+ * var response="Back at ya"; // Responses can be objects or strings
1167
+ * queryMessage.sendQueryResponse(null, response); // The callback must respond, else a timeout will occur on the querying client.
1168
+ * }
1169
+ * });
1170
+ * ```
1171
+ * @param {string} channel A unique string to identify the channel (must match corresponding query channel name); only one responder is allowed per channel.
1172
+ * @param {StandardCallback} queryEventHandler A function to handle the incoming query (see example); note the incoming `queryMessage` contains a function to send the response.
1173
+ */
1174
+ export const addResponder = (channel, queryEventHandler) => {
1175
+ const routerConnection = singleton("RouterClient", RouterConnection);
1176
+ routerConnection.addResponder(channel, queryEventHandler);
1177
+ };
1178
+ /**
1179
+ * @language javascript, java, dotnet
1180
+ * Sends a query to the responder listening on the specified channel. The responder may be in this Finsemble window or another Finsemble window.
1181
+ *
1182
+ *
1183
+ * See [`addResponder`](#addresponser) to add a responder to receive the query.
1184
+ *
1185
+ * ```javascript
1186
+ * FSBL.Clients.RouterClient.query("someChannelName", {}, function (error, queryResponseMessage) {
1187
+ * if (error) {
1188
+ * Logger.system.log('query failed: ' + JSON.stringify(error));
1189
+ * } else {
1190
+ * // process income query response message
1191
+ * var responseData = queryResponseMessage.data;
1192
+ * Logger.system.log('query response: ' + JSON.stringify(queryResponseMessage));
1193
+ * }
1194
+ * });
1195
+ *
1196
+ * FSBL.Clients.RouterClient.query("someChannelName", { queryKey: "abc123"}, { timeout: 1000 }, function (error, queryResponseMessage) {
1197
+ * if (!error) {
1198
+ * // process income query response message
1199
+ * var responseData = queryResponseMessage.data;
1200
+ * }
1201
+ * });
1202
+ * ```
1203
+ * @param {string} responderChannel A unique string that identifies the channel (must match the channel name on which a responder is listening).
1204
+ * @param {object} queryEvent The event message sent to the responder.
1205
+ * @param {function} responseEventHandler An event handler to receive the query response (sent from a responder that is listening on this channel).
1206
+ */
1207
+ export const query = (responderChannel, queryEvent, queryParams, responseEventHandler) => {
1208
+ const routerConnection = singleton("RouterClient", RouterConnection);
1209
+ return routerConnection.query(responderChannel, queryEvent, queryParams, responseEventHandler);
1210
+ };
1211
+ /**
1212
+ * @language javascript, java, dotnet
1213
+ * Removes the query responder from the specified channel. Only a locally added responder can be removed (i.e., a responder defined in the same component or service).
1214
+ *
1215
+ * See [`addResponder()`](#addresponder) for adding a query responder.
1216
+ *
1217
+ * ```javascript
1218
+ * FSBL.Clients.RouterClient.removeResponder("someChannelName");
1219
+ * ```
1220
+ * @param {string} responderChannel String identifying the channel from which to remove the responder.
1221
+ */
1222
+ export const removeResponder = (responderChannel) => {
1223
+ const routerConnection = singleton("RouterClient", RouterConnection);
1224
+ routerConnection.removeResponder(responderChannel);
1225
+ };
1226
+ /**
1227
+ * @language javascript, java, dotnet
1228
+ * Adds a PubSub responder for the specified topic (either a specific string or a regular-expression match). PubSub
1229
+ * topics are stateful. New subscribers to the topic are automatically provided the most recent state.
1230
+ * Once a responder has been added, other apps can subscribe to and publish state on the topic
1231
+ *
1232
+ * See [`publish()`](#publish) and [`subscribe()`](#subscribe).
1233
+ *
1234
+ * Only one responder may be set per topic across the entire system (otherwise a warning will show in Central Logger).
1235
+ * If another responder is set with an overlapping regular-expression then the responder with an exact string is still guaranteed to get the messages
1236
+ * (the regex responder will not receive messages that match a responder with a matching string).
1237
+ *
1238
+ * > If multiple responders are set with _overlapping_ regular-expressions, then the receiver is _indeterminate_.
1239
+ *
1240
+ * When initializing a responder, hooks can be provided to intercept and manipulate publish, subscribe, and unsubscribe events (see parameters).
1241
+ *
1242
+ * ```javascript
1243
+ * // Example, initializing a responder without any optional hooks:
1244
+ * FSBL.Clients.RouterClient.addPubSubResponder("topicABC", { "State": "start" });
1245
+ *
1246
+ * // Example, initializing a responder with a regex for matching topics:
1247
+ * FSBL.Clients.RouterClient.addPubSubResponder(new RegExp("topicA*"), { "State": "start" });
1248
+ *
1249
+ * // Example, initializing a responder with all three hooks and an initial state:
1250
+ * FSBL.Clients.RouterClient.addPubSubResponder("topicABC", { "State": "start" },
1251
+ * {
1252
+ * subscribeCallback:subscribeCallback,
1253
+ * publishCallback:publishCallback,
1254
+ * unsubscribeCallback:unsubscribeCallback
1255
+ * });
1256
+ *
1257
+ * // Example publish hook:
1258
+ * function publishCallback(error, publish) {
1259
+ * if (publish) {
1260
+ * // `publish.data` contains the data that the originating app published.
1261
+ * console.log(publish.data);
1262
+ *
1263
+ * // This function must be called to complete the publication. Set the first parameter to `null`
1264
+ * // to complete the publication. Set the first parameter to a string in order to suppress the publication
1265
+ * // and return an error to the publisher.
1266
+ * //
1267
+ * // The second parameter must contain the data that you wish to publish. This data will be sent to all
1268
+ * // subscribers including the originating app. It can be either the originating state (from `publish.data`)
1269
+ * // or a different/manipulated state. This will become the new current state for the topic.
1270
+ * publish.sendNotifyToAllSubscribers(null, { someOtherData: "blah"});
1271
+ * }
1272
+ * }
1273
+ *
1274
+ * // Example subscribe hook:
1275
+ * function subscribeCallback(error, subscribe) {
1276
+ * if (subscribe) {
1277
+ * // This function must be called to accept or reject the subscription. Send an error code as the first parameter
1278
+ * // to reject. Send null as the first parameter to accept. Once accepted, the subscriber will receive
1279
+ * // the current topic's state unless the second parameter is provided which will override what is sent
1280
+ * // to the subscriber (but not override the topic's actual internal state).
1281
+ * subscribe.sendNotifyToSubscriber(null, { "NOTIFICATION-STATE": "One" });
1282
+ * }
1283
+ * }
1284
+ *
1285
+ * // Example unsubscribe hook:
1286
+ * function unsubscribeCallback(error, unsubscribe) {
1287
+ * if (unsubscribe) {
1288
+ * // This function must be called to accept or reject the unsubscription. Send null (or nothing) as the first
1289
+ * // parameter to accept the unsubscription. Send an error code to reject it.
1290
+ * unsubscribe.removeSubscriber(null);
1291
+ * }
1292
+ * }
1293
+ * ```
1294
+ * @param string|RegExp topic A unique topic for this responder, or a RegEx (e.g. '/abc.+/') to handle a set of topics.
1295
+ * @param {object} initialState The initial state for the topic (defaults to `{}`).
1296
+ * @param {object} params Optional hooks
1297
+ * @param {function} params.publishCallback This hook is called whenever a remote app publishes new state.
1298
+ * `[arg2].sendNotifyToAllSubscribers()` must be called to complete the publication but can send a different state than what was published by the originating app
1299
+ * (the originating publishing app will receive this state on its subscriptions).
1300
+ * See example publish hook.
1301
+ *
1302
+ * @param {function} params.subscribeCallback This hook is called whenever a remote app subscribes to this responder's topic.
1303
+ * It can be used to deny subscriptions or to run independent code for any new subscription.
1304
+ * `[arg2].sendNotifyToSubscriber()` must be called in order for the responder to complete the subscription, and can optionally provide
1305
+ * the subscribing app with a different initial than the topic's current state.
1306
+ * See example subscribe hook.
1307
+ *
1308
+ * @param {function} params.unsubscribeCallback This hook is called whenever a remote app unsubscribes from this responder's topic.
1309
+ * `[arg2].removeSubscriber()` must be called in order to complete the unsubscription.
1310
+ * See example unsubscribe hook.
1311
+ *
1312
+ * @param {function} callback An optional callback function which should accept a possible error.
1313
+ * If `addPubSubResponder()` failed then the first parameter to the callback will contain the error condition.
1314
+ * The most common error is when adding a responder for a topic that already has a responder:
1315
+ * "RouterClient.addPubSubResponder: Responder already locally defined for topic ${topic}";
1316
+ */
1317
+ export const addPubSubResponder = (topic, initialState, params, callback) => {
1318
+ const routerConnection = singleton("RouterClient", RouterConnection);
1319
+ routerConnection.addPubSubResponder(topic, initialState, params, callback);
1320
+ };
1321
+ /**
1322
+ * @language javascript, java, dotnet
1323
+ * Removes a PubSub responder from the specified topic. Only locally created responders (i.e. created in the local window) can be removed.
1324
+ *
1325
+ * See [`addPubSubResponder`](#addpubsubresponder) for corresponding addition of a PubSub responder.
1326
+ *
1327
+ * ```javascript
1328
+ * FSBL.Clients.RouterClient.removePubSubResponder("topicABC");
1329
+ * ```
1330
+ * @param {string} topic Unique topic for responder being removed (may be RegEx, but if so much be exact RegEx used previously with `addPubSubResponder`).
1331
+ */
1332
+ export const removePubSubResponder = (topic) => {
1333
+ const routerConnection = singleton("RouterClient", RouterConnection);
1334
+ routerConnection.removePubSubResponder(topic);
1335
+ };
1336
+ /**
1337
+ * @language javascript, java, dotnet
1338
+ * Subscribe to a PubSub responder. Each responder topic can have many subscribers (local in this window or remote in other windows). Each subscriber immediately (but asynchronously) receives back current state in a notify; new notifications are received for each publish sent to the same topic.
1339
+ *
1340
+ * See [`addPubSubResponder`](#addpubsubresponder) for corresponding addition of a PubSub responder to handle the subscribe. See [`publish()`](#publish) for how to publish data to subscribers.
1341
+ *
1342
+ * ```javascript
1343
+ * var subscribeId = RouterClient.subscribe("topicABC", function(err, notify) {
1344
+ * if (!err) {
1345
+ * var notificationStateData = notify.data;
1346
+ * // do something with notify data
1347
+ * }
1348
+ * });
1349
+ * ```
1350
+ * @param {string} topic A unique string representing the topic being subscribed to.
1351
+ * @param {function} notifyCallback Invoked on immediately upon subscription, then again on each incoming notification for the specified topic.
1352
+ * @returns {object} An object containing a unique id representing the subscription. This can be used later to unsubscribe.
1353
+ */
1354
+ export const subscribe = (topic, notifyCallback) => {
1355
+ const routerConnection = singleton("RouterClient", RouterConnection);
1356
+ return routerConnection.subscribe(topic, notifyCallback);
1357
+ };
1358
+ /**
1359
+ * @language javascript, java, dotnet
1360
+ * Publish to a PubSub Responder, which will trigger a corresponding notification to all subscribers (local in this window or remote in other windows). There may be multiple publishers for a topic (again, in same window or remote windows).
1361
+ *
1362
+ * See [`addPubSubResponder`](#addpubsubresponder) for corresponding addition of a PubSub publisher (i.e., sending notifications to all subscriber). See [`Subscribe`](#subscribe) for corresponding subscription published results (in the form of a `Notify` event).
1363
+ *
1364
+ * ```javascript
1365
+ * FSBL.Clients.RouterClient.publish("topicABC", topicState);
1366
+ * ```
1367
+ * @param {string} topic A unique string representing the topic being published.
1368
+ * @param {object} event The topic state to be published to all subscribers (unless the PubSub responder optionally modifies in between).
1369
+ */
1370
+ export const publish = (topic, event) => {
1371
+ const routerConnection = singleton("RouterClient", RouterConnection);
1372
+ routerConnection.publish(topic, event);
1373
+ };
1374
+ /**
1375
+ * @language javascript, java, dotnet
1376
+ * Unsubscribes from a PubSub responder so no more notifications are received (but doesn't affect other subscriptions). Only works from the window the PubSub responder was created in.
1377
+ *
1378
+ * See [`subscribe`](#subscribe) for corresponding subscription being removed.
1379
+ *
1380
+ * ```javascript
1381
+ * FSBL.Clients.RouterClient.unsubscribe(subscribeId);
1382
+ * ```
1383
+ * @param {object} subscribeIDStruct
1384
+ * @param {string} subscribeIDStruct.subscribeID The id returned from the corresponding subscription to the topic.
1385
+ * @param {string} subscribeIDStruct.topic The topic for the subscription.
1386
+ */
1387
+ export const unsubscribe = (subscribeIDStruct) => {
1388
+ const routerConnection = singleton("RouterClient", RouterConnection);
1389
+ routerConnection.unsubscribe(subscribeIDStruct);
1390
+ };
1391
+ /**
1392
+ * @language javascript, java, dotnet
1393
+ * Tests an incoming Router message to see if it originated from the same origin (i.e., a trusted source; not cross-domain).
1394
+ *
1395
+ * Currently, the origin of an incoming Router message is determined by way of the SharedWorker transport. By definition, SharedWorkers do not work across domains.
1396
+ * This means any message coming in over the transport will not be trusted. However, by default, all same-origin components
1397
+ * and services connect to the Router using a SharedWorker transport.
1398
+ *
1399
+ * ```javascript
1400
+ * FSBL.Clients.RouterClient.trustedMessage(incomingRouterMessage);
1401
+ * ```
1402
+ * @param {object} incomingMessage An incoming Router message (e.g., transmit, query, notification) to test to see if trusted.
1403
+ */
1404
+ export const trustedMessage = (incomingMessage) => {
1405
+ const routerConnection = singleton("RouterClient", RouterConnection);
1406
+ return routerConnection.trustedMessage(incomingMessage);
1407
+ };
1408
+ /**
1409
+ * @language javascript, java, dotnet
1410
+ * Removes all listeners, responders, and subscribers for this router client -- automatically called when the client is shutting down. Can be called multiple times.
1411
+ */
1412
+ export const disconnectAll = () => {
1413
+ const routerConnection = singleton("RouterClient", RouterConnection);
1414
+ routerConnection.disconnectAll();
1415
+ };
1416
+ /**
1417
+ * Used internally by Logger client
1418
+ * @ignore
1419
+ */
1420
+ export const calibrateTimeWithRouterService = (callback) => {
1421
+ const routerConnection = singleton("RouterClient", RouterConnection);
1422
+ routerConnection.calibrateTimeWithRouterService(callback);
1423
+ };
1424
+ /**
1425
+ * @ignore
1426
+ */
1427
+ export const RouterClient = {
1428
+ onReady,
1429
+ onFailure,
1430
+ addListener,
1431
+ transmit,
1432
+ removeListener,
1433
+ addResponder,
1434
+ query,
1435
+ removeResponder,
1436
+ addPubSubResponder,
1437
+ removePubSubResponder,
1438
+ subscribe,
1439
+ publish,
1440
+ unsubscribe,
1441
+ trustedMessage,
1442
+ disconnectAll,
1443
+ calibrateTimeWithRouterService,
1444
+ };
1445
+ /**
1446
+ * @ignore
1447
+ */
1448
+ export default RouterClient;
1417
1449
  //# sourceMappingURL=routerClient.js.map