@genesislcap/foundation-comms 14.167.2 → 14.167.3-alpha-b40d1e5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/dts/auth/auth.d.ts.map +1 -1
  2. package/dist/dts/connect/connect.d.ts +11 -1
  3. package/dist/dts/connect/connect.d.ts.map +1 -1
  4. package/dist/dts/connect/connect.events.d.ts +173 -0
  5. package/dist/dts/connect/connect.events.d.ts.map +1 -0
  6. package/dist/dts/connect/http.connect.d.ts +1 -0
  7. package/dist/dts/connect/http.connect.d.ts.map +1 -1
  8. package/dist/dts/connect/index.d.ts +2 -0
  9. package/dist/dts/connect/index.d.ts.map +1 -1
  10. package/dist/dts/connect/message.d.ts +51 -0
  11. package/dist/dts/connect/message.d.ts.map +1 -1
  12. package/dist/dts/connect/socket.d.ts +72 -8
  13. package/dist/dts/connect/socket.d.ts.map +1 -1
  14. package/dist/dts/connect/socket.status.d.ts +79 -0
  15. package/dist/dts/connect/socket.status.d.ts.map +1 -0
  16. package/dist/dts/datasource/datasource.d.ts +9 -0
  17. package/dist/dts/datasource/datasource.d.ts.map +1 -1
  18. package/dist/dts/fdc3/fdc3.d.ts +17 -1
  19. package/dist/dts/fdc3/fdc3.d.ts.map +1 -1
  20. package/dist/dts/index.d.ts +1 -0
  21. package/dist/dts/index.d.ts.map +1 -1
  22. package/dist/dts/networkMonitor/config.d.ts +56 -0
  23. package/dist/dts/networkMonitor/config.d.ts.map +1 -0
  24. package/dist/dts/networkMonitor/index.d.ts +4 -0
  25. package/dist/dts/networkMonitor/index.d.ts.map +1 -0
  26. package/dist/dts/networkMonitor/service.d.ts +193 -0
  27. package/dist/dts/networkMonitor/service.d.ts.map +1 -0
  28. package/dist/dts/networkMonitor/types.d.ts +133 -0
  29. package/dist/dts/networkMonitor/types.d.ts.map +1 -0
  30. package/dist/dts/testing/mocks/connect/connect.d.ts +1 -0
  31. package/dist/dts/testing/mocks/connect/connect.d.ts.map +1 -1
  32. package/dist/dts/testing/mocks/connect/socket.d.ts +5 -1
  33. package/dist/dts/testing/mocks/connect/socket.d.ts.map +1 -1
  34. package/dist/dts/testing/mocks/datasource/datasource.d.ts +1 -0
  35. package/dist/dts/testing/mocks/datasource/datasource.d.ts.map +1 -1
  36. package/dist/dts/user/user.d.ts +15 -0
  37. package/dist/dts/user/user.d.ts.map +1 -1
  38. package/dist/esm/auth/auth.js +5 -2
  39. package/dist/esm/connect/connect.events.js +113 -0
  40. package/dist/esm/connect/connect.js +30 -8
  41. package/dist/esm/connect/http.connect.js +6 -0
  42. package/dist/esm/connect/index.js +2 -0
  43. package/dist/esm/connect/message.js +25 -4
  44. package/dist/esm/connect/socket.js +113 -44
  45. package/dist/esm/connect/socket.status.js +119 -0
  46. package/dist/esm/datasource/datasource.js +18 -8
  47. package/dist/esm/fdc3/fdc3.js +4 -4
  48. package/dist/esm/index.js +1 -0
  49. package/dist/esm/networkMonitor/config.js +46 -0
  50. package/dist/esm/networkMonitor/index.js +3 -0
  51. package/dist/esm/networkMonitor/service.js +432 -0
  52. package/dist/esm/networkMonitor/types.js +5 -0
  53. package/dist/esm/testing/mocks/connect/connect.js +3 -0
  54. package/dist/esm/testing/mocks/connect/socket.js +1 -1
  55. package/dist/esm/testing/mocks/datasource/datasource.js +1 -0
  56. package/dist/esm/user/user.js +22 -1
  57. package/dist/foundation-comms.api.json +14711 -8166
  58. package/dist/foundation-comms.d.ts +841 -13
  59. package/docs/api/foundation-comms.commitevent.md +14 -0
  60. package/docs/api/foundation-comms.commiteventdetail.md +17 -0
  61. package/docs/api/foundation-comms.commiteventtype.md +12 -0
  62. package/docs/api/foundation-comms.connect.getmorecolumns.md +26 -0
  63. package/docs/api/foundation-comms.connect.md +1 -0
  64. package/docs/api/foundation-comms.connectevents.addcommitlistener.md +24 -0
  65. package/docs/api/foundation-comms.connectevents.addmetadatalistener.md +24 -0
  66. package/docs/api/foundation-comms.connectevents.addstreamlistener.md +25 -0
  67. package/docs/api/foundation-comms.connectevents.md +22 -0
  68. package/docs/api/foundation-comms.connecteventsemitter.md +24 -0
  69. package/docs/api/foundation-comms.connecteventsemitter.oncommitevent.md +25 -0
  70. package/docs/api/foundation-comms.connecteventsemitter.onmetadataevent.md +26 -0
  71. package/docs/api/foundation-comms.connecteventsemitter.onstreamcompleteevent.md +24 -0
  72. package/docs/api/foundation-comms.connecteventsemitter.onstreamevent.md +27 -0
  73. package/docs/api/foundation-comms.currentuser.md +2 -0
  74. package/docs/api/foundation-comms.currentuser.set.md +22 -0
  75. package/docs/api/foundation-comms.currentuser.unset.md +15 -0
  76. package/docs/api/foundation-comms.datasource.destroy.md +17 -0
  77. package/docs/api/foundation-comms.datasource.md +1 -0
  78. package/docs/api/foundation-comms.defaultconnect._constructor_.md +2 -1
  79. package/docs/api/foundation-comms.defaultconnect.getmorecolumns.md +22 -0
  80. package/docs/api/foundation-comms.defaultconnect.md +2 -1
  81. package/docs/api/foundation-comms.defaultconnectevents.addcommitlistener.md +24 -0
  82. package/docs/api/foundation-comms.defaultconnectevents.addmetadatalistener.md +24 -0
  83. package/docs/api/foundation-comms.defaultconnectevents.addstreamlistener.md +25 -0
  84. package/docs/api/foundation-comms.defaultconnectevents.md +27 -0
  85. package/docs/api/foundation-comms.defaultconnectevents.oncommitevent.md +25 -0
  86. package/docs/api/foundation-comms.defaultconnectevents.onmetadataevent.md +26 -0
  87. package/docs/api/foundation-comms.defaultconnectevents.onstreamcompleteevent.md +24 -0
  88. package/docs/api/foundation-comms.defaultconnectevents.onstreamevent.md +27 -0
  89. package/docs/api/foundation-comms.defaultdatasource.destroy.md +17 -0
  90. package/docs/api/foundation-comms.defaultdatasource.md +1 -0
  91. package/docs/api/foundation-comms.defaulthttpconnect.getmorecolumns.md +22 -0
  92. package/docs/api/foundation-comms.defaulthttpconnect.md +1 -0
  93. package/docs/api/foundation-comms.defaultmessagebuilder._constructor_.md +21 -0
  94. package/docs/api/foundation-comms.defaultmessagebuilder.createchangepasswordmessage.md +24 -0
  95. package/docs/api/foundation-comms.defaultmessagebuilder.createcommitmessage.md +23 -0
  96. package/docs/api/foundation-comms.defaultmessagebuilder.createdatalogoffmessage.md +22 -0
  97. package/docs/api/foundation-comms.defaultmessagebuilder.createdatalogonmessage.md +23 -0
  98. package/docs/api/foundation-comms.defaultmessagebuilder.createforgotpasswordmessage.md +24 -0
  99. package/docs/api/foundation-comms.defaultmessagebuilder.createforgotpasswordtokenmessage.md +25 -0
  100. package/docs/api/foundation-comms.defaultmessagebuilder.createhttpheadersfrommessage.md +23 -0
  101. package/docs/api/foundation-comms.defaultmessagebuilder.createloginmessage.md +22 -0
  102. package/docs/api/foundation-comms.defaultmessagebuilder.createlogoutmessage.md +22 -0
  103. package/docs/api/foundation-comms.defaultmessagebuilder.createmetarequestmessage.md +23 -0
  104. package/docs/api/foundation-comms.defaultmessagebuilder.createmorecolumnsmessage.md +22 -0
  105. package/docs/api/foundation-comms.defaultmessagebuilder.createmorerowsmessage.md +22 -0
  106. package/docs/api/foundation-comms.defaultmessagebuilder.createrefreshtokenmessage.md +15 -0
  107. package/docs/api/foundation-comms.defaultmessagebuilder.createrequestmessage.md +23 -0
  108. package/docs/api/foundation-comms.defaultmessagebuilder.createresourcesmessage.md +22 -0
  109. package/docs/api/foundation-comms.defaultmessagebuilder.md +41 -0
  110. package/docs/api/foundation-comms.defaultnetworkmonitor.addresource.md +23 -0
  111. package/docs/api/foundation-comms.defaultnetworkmonitor.create.md +16 -0
  112. package/docs/api/foundation-comms.defaultnetworkmonitor.destroy.md +16 -0
  113. package/docs/api/foundation-comms.defaultnetworkmonitor.md +31 -0
  114. package/docs/api/foundation-comms.defaultnetworkmonitor.removeresource.md +22 -0
  115. package/docs/api/foundation-comms.defaultnetworkmonitor.runallchecks.md +11 -0
  116. package/docs/api/foundation-comms.defaultnetworkmonitor.status.md +12 -0
  117. package/docs/api/foundation-comms.defaultnetworkmonitorconfig.md +13 -0
  118. package/docs/api/foundation-comms.defaultsocket._constructor_.md +24 -0
  119. package/docs/api/foundation-comms.defaultsocket.connect.md +24 -0
  120. package/docs/api/foundation-comms.defaultsocket.hasvalidsession.md +13 -0
  121. package/docs/api/foundation-comms.defaultsocket.isconfigured.md +11 -0
  122. package/docs/api/foundation-comms.defaultsocket.isconnected.md +11 -0
  123. package/docs/api/foundation-comms.defaultsocket.isconnectedsubject.md +11 -0
  124. package/docs/api/foundation-comms.defaultsocket.isconnecting.md +11 -0
  125. package/docs/api/foundation-comms.defaultsocket.isdisconnected.md +11 -0
  126. package/docs/api/foundation-comms.defaultsocket.isdisconnectedbyserver.md +11 -0
  127. package/docs/api/foundation-comms.defaultsocket.isreconnecting.md +11 -0
  128. package/docs/api/foundation-comms.defaultsocket.md +44 -0
  129. package/docs/api/foundation-comms.defaultsocket.reset.md +15 -0
  130. package/docs/api/foundation-comms.defaultsocket.send.md +23 -0
  131. package/docs/api/foundation-comms.defaultsocket.sendforstream.md +25 -0
  132. package/docs/api/foundation-comms.defaultsocket.socketmessages.md +11 -0
  133. package/docs/api/foundation-comms.defaultsocketstatus.closedclean.md +11 -0
  134. package/docs/api/foundation-comms.defaultsocketstatus.closedcode.md +11 -0
  135. package/docs/api/foundation-comms.defaultsocketstatus.closedreason.md +11 -0
  136. package/docs/api/foundation-comms.defaultsocketstatus.hasvalidsession.md +11 -0
  137. package/docs/api/foundation-comms.defaultsocketstatus.isconfigured.md +11 -0
  138. package/docs/api/foundation-comms.defaultsocketstatus.isconnected.md +11 -0
  139. package/docs/api/foundation-comms.defaultsocketstatus.isconnectedchanged.md +15 -0
  140. package/docs/api/foundation-comms.defaultsocketstatus.isconnectedsubject.md +11 -0
  141. package/docs/api/foundation-comms.defaultsocketstatus.isconnecting.md +11 -0
  142. package/docs/api/foundation-comms.defaultsocketstatus.isdisconnected.md +11 -0
  143. package/docs/api/foundation-comms.defaultsocketstatus.isdisconnectedbyserver.md +11 -0
  144. package/docs/api/foundation-comms.defaultsocketstatus.isreconnecting.md +11 -0
  145. package/docs/api/foundation-comms.defaultsocketstatus.isreconnectingchanged.md +15 -0
  146. package/docs/api/foundation-comms.defaultsocketstatus.md +42 -0
  147. package/docs/api/foundation-comms.defaultsocketstatus.onclose.md +22 -0
  148. package/docs/api/foundation-comms.defaultsocketstatus.reconnectionlimitreached.md +11 -0
  149. package/docs/api/foundation-comms.defaultsocketstatus.resetclosedstate.md +15 -0
  150. package/docs/api/foundation-comms.defaultsocketstatus.serialize.md +15 -0
  151. package/docs/api/foundation-comms.genesisconnectevents.md +18 -0
  152. package/docs/api/foundation-comms.getnetworkmonitor.md +30 -0
  153. package/docs/api/foundation-comms.getsocket.md +30 -0
  154. package/docs/api/foundation-comms.getsocketstatus.md +30 -0
  155. package/docs/api/foundation-comms.md +39 -0
  156. package/docs/api/foundation-comms.messagebuilder.createmorecolumnsmessage.md +30 -0
  157. package/docs/api/foundation-comms.messagebuilder.md +1 -0
  158. package/docs/api/foundation-comms.messagehaserrorcode.md +13 -0
  159. package/docs/api/foundation-comms.messagetype.md +2 -0
  160. package/docs/api/foundation-comms.metadataevent.md +14 -0
  161. package/docs/api/foundation-comms.metadataeventdetail.md +18 -0
  162. package/docs/api/foundation-comms.metadataeventtype.md +12 -0
  163. package/docs/api/foundation-comms.monitoredresource.md +15 -0
  164. package/docs/api/foundation-comms.monitoredresourcechecks.md +15 -0
  165. package/docs/api/foundation-comms.monitoredresourcechecksresult.isconnected.md +11 -0
  166. package/docs/api/foundation-comms.monitoredresourcechecksresult.lastmessage.md +11 -0
  167. package/docs/api/foundation-comms.monitoredresourcechecksresult.lastupdated.md +11 -0
  168. package/docs/api/foundation-comms.monitoredresourcechecksresult.md +23 -0
  169. package/docs/api/foundation-comms.monitoredresourcechecksresult.timeout.md +11 -0
  170. package/docs/api/foundation-comms.monitoredresourcedatalogon.md +15 -0
  171. package/docs/api/foundation-comms.monitoredresourcemetadata.md +15 -0
  172. package/docs/api/foundation-comms.networklogger.md +12 -0
  173. package/docs/api/foundation-comms.networkmonitor.addresource.md +23 -0
  174. package/docs/api/foundation-comms.networkmonitor.create.md +15 -0
  175. package/docs/api/foundation-comms.networkmonitor.destroy.md +15 -0
  176. package/docs/api/foundation-comms.networkmonitor.md +34 -0
  177. package/docs/api/foundation-comms.networkmonitor.removeresource.md +22 -0
  178. package/docs/api/foundation-comms.networkmonitor.runallchecks.md +23 -0
  179. package/docs/api/foundation-comms.networkmonitor.status.md +11 -0
  180. package/docs/api/foundation-comms.networkmonitorconfig.checkinterval.md +13 -0
  181. package/docs/api/foundation-comms.networkmonitorconfig.checktimeout.md +13 -0
  182. package/docs/api/foundation-comms.networkmonitorconfig.documentevents.md +13 -0
  183. package/docs/api/foundation-comms.networkmonitorconfig.eventemitter.md +13 -0
  184. package/docs/api/foundation-comms.networkmonitorconfig.genesisconnectevents.md +13 -0
  185. package/docs/api/foundation-comms.networkmonitorconfig.md +27 -0
  186. package/docs/api/foundation-comms.networkmonitorconfig.resourcechecks.md +13 -0
  187. package/docs/api/foundation-comms.networkmonitorconfig.resourcedatalogon.md +18 -0
  188. package/docs/api/foundation-comms.networkmonitorconfig.windowevents.md +13 -0
  189. package/docs/api/foundation-comms.resourcehealth.md +19 -0
  190. package/docs/api/foundation-comms.serializedsocketstatus.closedclean.md +11 -0
  191. package/docs/api/foundation-comms.serializedsocketstatus.closedcode.md +11 -0
  192. package/docs/api/foundation-comms.serializedsocketstatus.closedreason.md +11 -0
  193. package/docs/api/foundation-comms.serializedsocketstatus.hasvalidsession.md +11 -0
  194. package/docs/api/foundation-comms.serializedsocketstatus.isconfigured.md +13 -0
  195. package/docs/api/foundation-comms.serializedsocketstatus.isconnected.md +11 -0
  196. package/docs/api/foundation-comms.serializedsocketstatus.isconnecting.md +11 -0
  197. package/docs/api/foundation-comms.serializedsocketstatus.isdisconnected.md +11 -0
  198. package/docs/api/foundation-comms.serializedsocketstatus.isdisconnectedbyserver.md +11 -0
  199. package/docs/api/foundation-comms.serializedsocketstatus.isreconnecting.md +11 -0
  200. package/docs/api/foundation-comms.serializedsocketstatus.md +30 -0
  201. package/docs/api/foundation-comms.serializedsocketstatus.reconnectionlimitreached.md +11 -0
  202. package/docs/api/foundation-comms.socket.md +3 -11
  203. package/docs/api/foundation-comms.socket.sendforstream.md +2 -1
  204. package/docs/api/{foundation-comms.socket.isconnectedsubject.md → foundation-comms.socketstatus.isconnectedsubject.md} +2 -2
  205. package/docs/api/foundation-comms.socketstatus.md +28 -0
  206. package/docs/api/foundation-comms.socketstatus.onclose.md +22 -0
  207. package/docs/api/foundation-comms.socketstatus.serialize.md +15 -0
  208. package/docs/api/foundation-comms.streamcompleteevent.md +14 -0
  209. package/docs/api/foundation-comms.streamcompleteeventtype.md +12 -0
  210. package/docs/api/foundation-comms.streamevent.md +14 -0
  211. package/docs/api/foundation-comms.streameventdetail.md +19 -0
  212. package/docs/api/foundation-comms.streameventfunctions.md +19 -0
  213. package/docs/api/foundation-comms.streameventtype.md +12 -0
  214. package/docs/api/foundation-comms.systemhealthchanged.md +13 -0
  215. package/docs/api/foundation-comms.systemhealthchangedevent.md +15 -0
  216. package/docs/api/foundation-comms.systemhealthstatus.md +29 -0
  217. package/docs/api/foundation-comms.user.md +2 -0
  218. package/docs/api/foundation-comms.user.set.md +22 -0
  219. package/docs/api/foundation-comms.user.unset.md +15 -0
  220. package/docs/api-report.md +520 -16
  221. package/package.json +13 -11
  222. package/docs/api/foundation-comms.socket.hasvalidsession.md +0 -11
  223. package/docs/api/foundation-comms.socket.isconnected.md +0 -11
  224. package/docs/api/foundation-comms.socket.isreconnecting.md +0 -11
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { AppIntent } from '@finos/fdc3';
4
4
  import { BehaviorSubject } from 'rxjs';
5
+ import { default as Bowser_2 } from 'bowser';
5
6
  import { Channel } from '@finos/fdc3';
6
7
  import { Context } from '@finos/fdc3';
7
8
  import { ContextHandler } from '@finos/fdc3';
@@ -11,11 +12,14 @@ import { Intents } from '@finos/fdc3';
11
12
  import { InterfaceSymbol } from '@microsoft/fast-foundation';
12
13
  import { JSONSchema7 } from 'json-schema';
13
14
  import { JSONSerializer } from '@genesislcap/foundation-utils';
15
+ import { Listener } from '@genesislcap/foundation-utils';
14
16
  import { Logger } from '@genesislcap/foundation-logger';
15
17
  import { Observable } from 'rxjs';
16
- import { Observer } from 'rxjs';
18
+ import { Observer } from '@genesislcap/foundation-utils';
19
+ import { Observer as Observer_2 } from 'rxjs';
17
20
  import { Subscription as SocketSubscription } from 'rxjs';
18
21
  import { Subject } from 'rxjs';
22
+ import { UUID } from '@genesislcap/foundation-utils';
19
23
 
20
24
  /**
21
25
  * Auth is the main interface for authenticating with a Genesis Server endpoint.
@@ -148,6 +152,24 @@ export declare type BasicCredentialsInput = {
148
152
  password: string;
149
153
  };
150
154
 
155
+ /**
156
+ * @public
157
+ */
158
+ export declare type CommitEvent = CustomEvent<CommitEventDetail>;
159
+
160
+ /**
161
+ * @public
162
+ */
163
+ export declare type CommitEventDetail = {
164
+ eventName: string;
165
+ message: Message;
166
+ };
167
+
168
+ /**
169
+ * @public
170
+ */
171
+ export declare const CommitEventType = "connect-commit-event";
172
+
151
173
  /**
152
174
  * Parameters for a COMMIT message
153
175
  * @public
@@ -245,6 +267,13 @@ export declare interface Connect {
245
267
  * @returns A promise that resolves with the additional rows of data.
246
268
  */
247
269
  getMoreRows(sourceRef: string): Promise<Message>;
270
+ /**
271
+ * Requests additional columns for the specified source reference.
272
+ * @public
273
+ * @param sourceRef - The source reference to request more columns for.
274
+ * @returns A promise that resolves with the additional columns.
275
+ */
276
+ getMoreColumns(sourceRef: string): Promise<Message>;
248
277
  /**
249
278
  * Logs off from the specified data source.
250
279
  * @public
@@ -318,6 +347,85 @@ export declare interface ConnectConfig {
318
347
  */
319
348
  export declare const ConnectConfig: InterfaceSymbol<ConnectConfig>;
320
349
 
350
+ /**
351
+ * `ConnectEvents` provide hooks to respond to specific connect events.
352
+ *
353
+ * @public
354
+ */
355
+ export declare interface ConnectEvents {
356
+ /**
357
+ * Add a stream listener.
358
+ * @param listener - A listener callback function.
359
+ * @param complete - A complete listener callback function.
360
+ */
361
+ addStreamListener(listener: Listener<StreamEvent>, complete: Listener<StreamCompleteEvent>): () => void;
362
+ /**
363
+ * Add a commit listener.
364
+ * @param listener - A listener callback function.
365
+ */
366
+ addCommitListener(listener: Listener<CommitEvent>): () => void;
367
+ /**
368
+ * Add a metadata listener.
369
+ * @param listener - A listener callback function.
370
+ */
371
+ addMetadataListener(listener: Listener<MetadataEvent>): () => void;
372
+ }
373
+
374
+ /**
375
+ * ConnectEvents DI key.
376
+ *
377
+ * @privateRemarks
378
+ * Marked as internal to stop api-extractor becoming confused cross-linking tokens with the same name.
379
+ *
380
+ * @internal
381
+ */
382
+ export declare const ConnectEvents: InterfaceSymbol<ConnectEvents>;
383
+
384
+ /**
385
+ * `ConnectEventsEmitter` provide event emitting hooks to Connect.
386
+ *
387
+ * @public
388
+ */
389
+ export declare interface ConnectEventsEmitter extends ConnectEvents {
390
+ /**
391
+ * Called by Connect.
392
+ * @param resourceName - The name of the resource.
393
+ * @param message - The message.
394
+ * @param stream - The actual stream itself.
395
+ * @param functions - Any functions provided.
396
+ */
397
+ onStreamEvent(resourceName: string, message: Message<MessageDetails.DataserverRequest>, stream: SocketObservable<any>, functions: StreamEventFunctions): void;
398
+ /**
399
+ * Called by Connect.
400
+ * @param stream - The actual stream itself.
401
+ */
402
+ onStreamCompleteEvent(stream: SocketObservable<any>): void;
403
+ /**
404
+ * Called by Connect.
405
+ * @param eventName - The name of the event.
406
+ * @param message - The message.
407
+ */
408
+ onCommitEvent(eventName: string, message: Message): void;
409
+ /**
410
+ * Called by Connect.
411
+ * @param resourceName - The name of the resource.
412
+ * @param message - The message.
413
+ * @param error - Optional error.
414
+ */
415
+ onMetadataEvent(resourceName: string, message: Message<MessageDetails.MetaRequest>, error?: any): void;
416
+ }
417
+
418
+ /**
419
+ * ConnectEventsEmitter DI key.
420
+ *
421
+ * @privateRemarks
422
+ * ConnectEventsEmitter is used by Connect.
423
+ * Marked as internal to stop api-extractor becoming confused cross-linking tokens with the same name.
424
+ *
425
+ * @internal
426
+ */
427
+ export declare const ConnectEventsEmitter: InterfaceSymbol<ConnectEventsEmitter>;
428
+
321
429
  /**
322
430
  * The connection status of the Genesis client.
323
431
  * @public
@@ -349,6 +457,7 @@ export declare class ConnectMock implements Connect {
349
457
  snapshot(resourceName: string, params?: any): Promise<Message>;
350
458
  stream(resourceName: string, onMessage: Function, onError: Function, params?: any): SocketObservable<Message>;
351
459
  getMoreRows(sourceRef: string): Promise<Message<any>>;
460
+ getMoreColumns(sourceRef: string): Promise<Message<any>>;
352
461
  dataLogoff(sourceRef: string): Promise<Message<any>>;
353
462
  getJSONSchema(resourceName: string): Promise<any>;
354
463
  }
@@ -641,6 +750,8 @@ export declare class CurrentUser implements User {
641
750
  profiles: UserProfile[];
642
751
  username: string;
643
752
  constructor(options: UserOptions);
753
+ set(options: UserOptions): void;
754
+ unset(): void;
644
755
  hasAdminProfile(): boolean;
645
756
  hasPermission(permission: string | string[]): boolean;
646
757
  hasProfile(profile: string | string[]): boolean;
@@ -801,6 +912,13 @@ export declare interface Datasource {
801
912
  * @returns A promise that resolves when the item has been updated.
802
913
  */
803
914
  updateItem?(itemId: string, data: any): Promise<void>;
915
+ /**
916
+ * Destroy the datasource.
917
+ * @privateRemarks
918
+ * I suspect we may need to call this from datasource disconnectedCallbacks etc to ensure we fully clean up.
919
+ * @public
920
+ */
921
+ destroy(): void;
804
922
  }
805
923
 
806
924
  /**
@@ -852,6 +970,7 @@ export declare class DatasourceMock implements Datasource {
852
970
  stream: SocketObservable<FilteredDataServerResult | RequestServerResult>;
853
971
  init(options: DatasourceOptions, fetchMeta: boolean): Promise<boolean>;
854
972
  deinit(): void;
973
+ destroy(): void;
855
974
  validResourceName(resourceName: string): boolean;
856
975
  getMetadata?(resourceName: string): Promise<FieldMetadata[]>;
857
976
  snapshot(params?: any): void;
@@ -1009,12 +1128,13 @@ export declare class DefaultConnect implements Connect {
1009
1128
  socket: Socket;
1010
1129
  private messageBuilder;
1011
1130
  private metaCache;
1131
+ private events;
1012
1132
  private config;
1013
1133
  isWorking: boolean;
1014
1134
  get isConnected(): boolean;
1015
1135
  get isConnectedSubject(): BehaviorSubject<boolean>;
1016
1136
  get isConnected$(): Observable<boolean>;
1017
- constructor(socket: Socket, messageBuilder: MessageBuilder, metaCache: MetaCache, config?: ConnectConfig);
1137
+ constructor(socket: Socket, messageBuilder: MessageBuilder, metaCache: MetaCache, events: ConnectEventsEmitter, config?: ConnectConfig);
1018
1138
  httpMode(): boolean;
1019
1139
  setValidSession(valid: boolean): void;
1020
1140
  send<T>(message: Message<any>, needsHandling?: boolean): Promise<any>;
@@ -1023,6 +1143,7 @@ export declare class DefaultConnect implements Connect {
1023
1143
  snapshot(resourceName: string, params?: any): Promise<Message>;
1024
1144
  stream(resourceName: string, onMessage: Function, onError: Function, params?: any): SocketObservable<Message>;
1025
1145
  getMoreRows(sourceRef: string): Promise<Message>;
1146
+ getMoreColumns(sourceRef: string): Promise<Message>;
1026
1147
  dataLogoff(streamSourceRef: string): Promise<Message>;
1027
1148
  getMetadata(resourceName: string, useCache?: boolean): Promise<Metadata>;
1028
1149
  getJSONSchema(resourceName: string, useCache?: boolean): Promise<SchemaResponse>;
@@ -1037,6 +1158,35 @@ export declare class DefaultConnect implements Connect {
1037
1158
  */
1038
1159
  export declare const defaultConnectConfig: ConnectConfig;
1039
1160
 
1161
+ /**
1162
+ * Default ConnectEvents implementation.
1163
+ * @public
1164
+ */
1165
+ export declare class DefaultConnectEvents implements ConnectEventsEmitter {
1166
+ /** @internal */
1167
+ protected streamListeners: Observer<StreamEvent>;
1168
+ /** @internal */
1169
+ protected streamCompleteListeners: Observer<StreamCompleteEvent>;
1170
+ /** {@inheritDoc ConnectEvents.addStreamListener} */
1171
+ addStreamListener(listener: Listener<StreamEvent>, complete: Listener<StreamCompleteEvent>): () => void;
1172
+ /** {@inheritDoc ConnectEventsEmitter.onStreamEvent} */
1173
+ onStreamEvent(resourceName: string, message: Message<MessageDetails.DataserverRequest>, stream: SocketObservable<any>, functions: StreamEventFunctions): void;
1174
+ /** {@inheritDoc ConnectEventsEmitter.onStreamCompleteEvent} */
1175
+ onStreamCompleteEvent(stream: SocketObservable<any>): void;
1176
+ /** @internal */
1177
+ protected commitListeners: Observer<CommitEvent>;
1178
+ /** {@inheritDoc ConnectEvents.addCommitListener} */
1179
+ addCommitListener(listener: Listener<CommitEvent>): () => void;
1180
+ /** {@inheritDoc ConnectEventsEmitter.onStreamEvent} */
1181
+ onCommitEvent(eventName: string, message: Message): void;
1182
+ /** @internal */
1183
+ protected metadataListeners: Observer<MetadataEvent>;
1184
+ /** {@inheritDoc ConnectEvents.addMetadataListener} */
1185
+ addMetadataListener(listener: Listener<MetadataEvent>): () => void;
1186
+ /** {@inheritDoc ConnectEventsEmitter.onMetadataEvent} */
1187
+ onMetadataEvent(resourceName: string, message: Message<MessageDetails.MetaRequest>, error?: any): void;
1188
+ }
1189
+
1040
1190
  /**
1041
1191
  * The default implementation for the CredentialManager interface.
1042
1192
  * @public
@@ -1105,6 +1255,8 @@ export declare class DefaultDatasource implements Datasource {
1105
1255
  validResourceName(resourceName: string): boolean;
1106
1256
  init(options: DatasourceOptions, fetchMeta?: boolean): Promise<boolean>;
1107
1257
  deinit(): void;
1258
+ /** {@inheritDoc Datasource.destroy} */
1259
+ destroy(): void;
1108
1260
  get stream(): SocketObservable<FilteredDataServerResult | RequestServerResult>;
1109
1261
  get params(): any;
1110
1262
  snapshot(): Promise<Message>;
@@ -1147,6 +1299,23 @@ export declare class DefaultEntityDatasource<TDTO, TEntity> extends DefaultDatas
1147
1299
  protected processRowDataUpdate(rowData: RowData[], inserting?: boolean): void;
1148
1300
  }
1149
1301
 
1302
+ /**
1303
+ * The FDC3 implementation.
1304
+ * @internal
1305
+ */
1306
+ export declare class DefaultFDC3 implements FDC3_2 {
1307
+ isReady: boolean;
1308
+ constructor();
1309
+ private connect;
1310
+ addIntentListeners(listeners: Map<FDC3Intents, FDC3ContextHandler>): void;
1311
+ findIntent(intent: FDC3Intents, context?: FDC3Context): Promise<FDC3AppIntent>;
1312
+ findIntentsByContext(context: FDC3Context): Promise<FDC3AppIntent[]>;
1313
+ raiseIntent(context: FDC3Context, intent?: FDC3Intents): Promise<FDC3IntentResolution>;
1314
+ joinChannel(channelId: string): Promise<void>;
1315
+ getOrCreateChannel(channelId: string): Promise<FDC3Channel>;
1316
+ broadcastOnChannel(channelId: string, context: FDC3Context): Promise<void>;
1317
+ }
1318
+
1150
1319
  /**
1151
1320
  * The default implementation for the FoundationAnalytics interface.
1152
1321
  * @public
@@ -1221,6 +1390,7 @@ export declare class DefaultHttpConnect implements Connect {
1221
1390
  stream(resourceName: string, onMessage: Function, onError: Function, params?: any): SocketObservable<Message>;
1222
1391
  private getMessage;
1223
1392
  getMoreRows(sourceRef: string): Promise<Message>;
1393
+ getMoreColumns(sourceRef: string): Promise<Message>;
1224
1394
  dataLogoff(streamSourceRef: string): Promise<Message>;
1225
1395
  getMetadata(resourceName: string, useCache?: boolean): Promise<Metadata>;
1226
1396
  getJSONSchema(resourceName: string): Promise<SchemaResponse>;
@@ -1322,6 +1492,38 @@ export declare class DefaultKVStorage implements KVStorage {
1322
1492
  */
1323
1493
  export declare const defaultKVStorageConfig: KVStorageConfig;
1324
1494
 
1495
+ /**
1496
+ * TODO: Abstract out localStorage interaction with shell io stuff
1497
+ */
1498
+ /**
1499
+ * Default MessageBuilder implementation.
1500
+ * @public
1501
+ */
1502
+ export declare class DefaultMessageBuilder implements MessageBuilder {
1503
+ private session;
1504
+ private uuid;
1505
+ /**
1506
+ * UUID will be created in the DI with the App specific requirements.
1507
+ * Keeping it encapsulated means messages will always conform.
1508
+ */
1509
+ constructor(session: Session, uuid: UUID);
1510
+ createLoginMessage(credentials: AuthInfo): Message<MessageDetails.Login>;
1511
+ createLogoutMessage(loginResult?: LoginResult): Message;
1512
+ createDataLogonMessage(resourceName: string, params?: any): Message<MessageDetails.DataserverRequest>;
1513
+ createDataLogoffMessage<T = any>(sourceRef: string): Message<T>;
1514
+ createRequestMessage<T = any>(resourceName: string, params?: RequestParams): Message<T>;
1515
+ createResourcesMessage<T = any>(params?: RequestParams): Message<T>;
1516
+ createMetaRequestMessage(resourceName: string, messageType?: EventMessageType): Message<MessageDetails.MetaRequest>;
1517
+ createCommitMessage<T = any>(eventName: string, params?: CommitParams): Message<T>;
1518
+ createRefreshTokenMessage(): Message<MessageDetails.RefreshToken>;
1519
+ createChangePasswordMessage(username: string, oldPassword: string, newPassword: string): Message<MessageDetails.ChangePassword>;
1520
+ createForgotPasswordMessage(username: string, returnUrl: string, requester?: string): Message<MessageDetails.ForgotPassword>;
1521
+ createForgotPasswordTokenMessage(username: string, resetToken: string, newPassword: string, requester?: string): Message<MessageDetails.ForgotPasswordToken>;
1522
+ createMoreRowsMessage(sourceRef: string): Message;
1523
+ createMoreColumnsMessage(sourceRef: string): Message;
1524
+ createHTTPHeadersFromMessage(message: Message, contentType?: string): HeadersInit;
1525
+ }
1526
+
1325
1527
  /**
1326
1528
  * The default implementation for the MetaCache interface.
1327
1529
  * @public
@@ -1337,6 +1539,144 @@ export declare class DefaultMetaCache implements MetaCache {
1337
1539
  setJsonSchemaFor(resourceName: string, schemaResponse: SchemaResponse): void;
1338
1540
  }
1339
1541
 
1542
+ /**
1543
+ * Default NetworkMonitor implementation.
1544
+ * @public
1545
+ */
1546
+ export declare class DefaultNetworkMonitor implements NetworkMonitor {
1547
+ /**
1548
+ * High-level configuration.
1549
+ * @internal
1550
+ */
1551
+ protected config: NetworkMonitorConfig;
1552
+ /**
1553
+ * @internal
1554
+ */
1555
+ protected socketStatus: SocketStatus;
1556
+ /**
1557
+ * @internal
1558
+ */
1559
+ protected connectEvents: ConnectEvents;
1560
+ /**
1561
+ * @internal
1562
+ */
1563
+ protected user: User;
1564
+ /**
1565
+ * @internal
1566
+ */
1567
+ protected unsubscribableObservers: any[];
1568
+ /**
1569
+ * @privateRemarks
1570
+ * Originally aimed to use WeakMap for resources, but need to iterate and process these. I also had a
1571
+ * `this.registry = new FinalizationRegistry<any>(this.registryCleanup);` in the mix to handle clean up actions.
1572
+ *
1573
+ * @internal
1574
+ */
1575
+ protected resources: Map<MonitoredResource, MonitoredResourceMetadata>;
1576
+ /**
1577
+ * @internal
1578
+ */
1579
+ protected internalId: ReturnType<typeof setInterval>;
1580
+ /**
1581
+ * @internal
1582
+ */
1583
+ protected isRunningChecks: boolean;
1584
+ /**
1585
+ * {@inheritDoc NetworkMonitor.status}
1586
+ */
1587
+ status: SystemHealthStatus;
1588
+ /**
1589
+ * {@inheritDoc NetworkMonitor.create}
1590
+ */
1591
+ create(): void;
1592
+ /**
1593
+ * {@inheritDoc NetworkMonitor.destroy}
1594
+ */
1595
+ destroy(): void;
1596
+ /**
1597
+ * @internal
1598
+ */
1599
+ protected isOnlineCheck(): Promise<boolean>;
1600
+ /**
1601
+ * {@inheritDoc NetworkMonitor.runAllChecks}
1602
+ */
1603
+ runAllChecks: (source?: unknown, force?: boolean) => Promise<void>;
1604
+ /**
1605
+ * {@inheritDoc NetworkMonitor.addResource}
1606
+ */
1607
+ addResource(resource: MonitoredResource, metadata: MonitoredResourceMetadata): void;
1608
+ /**
1609
+ * {@inheritDoc NetworkMonitor.removeResource}
1610
+ */
1611
+ removeResource(resource: MonitoredResource): void;
1612
+ /**
1613
+ * @internal
1614
+ */
1615
+ protected addListeners(): void;
1616
+ /**
1617
+ * @internal
1618
+ */
1619
+ protected removeListeners(): void;
1620
+ /**
1621
+ * @internal
1622
+ */
1623
+ protected reportSystemHealth(detail: Partial<SystemHealthStatus>): void;
1624
+ /**
1625
+ * @internal
1626
+ */
1627
+ protected reportStabilityToGenesis(detail: Partial<SystemHealthStatus>): Promise<boolean>;
1628
+ /**
1629
+ * @remarks
1630
+ * Deal with false positives.
1631
+ *
1632
+ * @privateRemarks
1633
+ * There's an argument here for and against normalising ResourceHealth. I think it's more useful to consumers like
1634
+ * visual overlays if there is no conflicting information. If we're offline and using the cache, then that should be
1635
+ * reflected here.
1636
+ *
1637
+ * @internal
1638
+ */
1639
+ protected normaliseResourceHealth(health: ResourceHealth, isOnline?: boolean): ResourceHealth;
1640
+ /**
1641
+ * @remarks
1642
+ * Deal with false positives.
1643
+ *
1644
+ * @privateRemarks
1645
+ * There's an argument here for and against a normalised SerializedSocketStatus. I think it's more useful to consumers
1646
+ * like visual overlays if there is no conflicting information. If we're offline and using the cache, then that
1647
+ * should be reflected here.
1648
+ *
1649
+ * @internal
1650
+ */
1651
+ protected normaliseSerializedSocketStatus(socketStatus: SerializedSocketStatus, isOnline?: boolean): SerializedSocketStatus;
1652
+ /**
1653
+ * @internal
1654
+ */
1655
+ protected normaliseEventDetail(detail: Partial<SystemHealthStatus>): SystemHealthStatus;
1656
+ /**
1657
+ * @internal
1658
+ */
1659
+ protected getFormattedTimestamp(milliseconds: number): string;
1660
+ /**
1661
+ * @internal
1662
+ */
1663
+ protected getNowTimestamp(): number;
1664
+ /**
1665
+ * @internal
1666
+ */
1667
+ protected getNextTimestamp(): number;
1668
+ /**
1669
+ * @internal
1670
+ */
1671
+ protected synchroniseCheckInterval(): void;
1672
+ }
1673
+
1674
+ /**
1675
+ * Default NetworkMonitorConfig DI implementation.
1676
+ * @public
1677
+ */
1678
+ export declare const defaultNetworkMonitorConfig: NetworkMonitorConfig;
1679
+
1340
1680
  /**
1341
1681
  * The default implementation for the Session interface.
1342
1682
  * @public
@@ -1363,6 +1703,79 @@ export declare class DefaultSession implements Session {
1363
1703
  removeSessionStorageItem(key: string | UserInfoKeys): void;
1364
1704
  }
1365
1705
 
1706
+ /**
1707
+ * Default Socket implementation.
1708
+ * @public
1709
+ */
1710
+ export declare class DefaultSocket implements Socket {
1711
+ private messageBuilder;
1712
+ private session;
1713
+ private serializer;
1714
+ private uuid;
1715
+ private status;
1716
+ private readonly defaultInterval;
1717
+ private readonly secondsMultiplier;
1718
+ private websocket;
1719
+ private wsMessages;
1720
+ private wsMessageHandlers;
1721
+ get isConfigured(): boolean;
1722
+ get isConnecting(): boolean;
1723
+ get isConnected(): boolean;
1724
+ get isConnectedSubject(): BehaviorSubject<boolean>;
1725
+ get isDisconnected(): boolean;
1726
+ get isDisconnectedByServer(): boolean;
1727
+ get isReconnecting(): boolean;
1728
+ get hasValidSession(): boolean;
1729
+ set hasValidSession(value: boolean);
1730
+ private heartbeatIsEnabled;
1731
+ private heartbeatInterval;
1732
+ private heartbeatTicker;
1733
+ private url;
1734
+ private connectOptions;
1735
+ private reconnectOptions;
1736
+ private socketSubscription;
1737
+ constructor(messageBuilder: MessageBuilder, session: Session, serializer: JSONSerializer, uuid: UUID, status: SocketStatus);
1738
+ private get heartbeatLoggingIsEnabled();
1739
+ private get messageLoggingIsEnabled();
1740
+ connect(host: string, connectOptions?: SocketConnectOptions, reconnectOptions?: SocketReconnectOptions): Promise<boolean>;
1741
+ private prepareHeartbeat;
1742
+ private reconnect;
1743
+ reset(): void;
1744
+ private cleanMessages;
1745
+ send<T>(message: Message<T | any>, needsHandling?: boolean): Promise<Message | any>;
1746
+ sendForStream<T>(message: Message<T | any>, onMessage: Function, onError: Function, onComplete?: Function): Observable<Message>;
1747
+ socketMessages: () => SocketSubject<Message>;
1748
+ private setMessageHandler;
1749
+ private sendDataLogoff;
1750
+ private removeMessageHandler;
1751
+ private getMessageHandler;
1752
+ private logMessageTypeFlow;
1753
+ }
1754
+
1755
+ /**
1756
+ * Default SocketStatus implementation.
1757
+ * @public
1758
+ */
1759
+ export declare class DefaultSocketStatus implements SocketStatus {
1760
+ isConfigured: boolean;
1761
+ isConnecting: boolean;
1762
+ isConnected: boolean;
1763
+ isReconnecting: boolean;
1764
+ reconnectionLimitReached: boolean;
1765
+ hasValidSession: boolean;
1766
+ closedCode: any;
1767
+ closedReason: any;
1768
+ closedClean: any;
1769
+ get isDisconnected(): boolean;
1770
+ get isDisconnectedByServer(): boolean;
1771
+ isConnectedSubject: BehaviorSubject<boolean>;
1772
+ protected isConnectedChanged(): void;
1773
+ protected isReconnectingChanged(): void;
1774
+ protected resetClosedState(): void;
1775
+ serialize(): SerializedSocketStatus;
1776
+ onClose(event: CloseEvent): void;
1777
+ }
1778
+
1366
1779
  /**
1367
1780
  * EntityDatasource DI interface.
1368
1781
  *
@@ -1521,7 +1934,7 @@ export declare const exponentialScheduler: SocketReconnectScheduler;
1521
1934
  export declare const extractFieldDefinitions: (metadata: Metadata) => MetadataDetail[];
1522
1935
 
1523
1936
  /**
1524
- * The DI token for the FDC3Service interface.
1937
+ * The DI token for the FDC3 interface.
1525
1938
  * @internal
1526
1939
  */
1527
1940
  export declare const FDC3: InterfaceSymbol<FDC3_2>;
@@ -1590,7 +2003,7 @@ declare interface FDC3_2 {
1590
2003
  }
1591
2004
 
1592
2005
  /**
1593
- * The DI token for the FDC3Service interface.
2006
+ * The DI token for the FDC3 interface.
1594
2007
  * @internal
1595
2008
  */
1596
2009
  declare const FDC3: InterfaceSymbol<FDC3_2>;
@@ -1733,6 +2146,17 @@ export declare enum FoundationAnalyticsEventType {
1733
2146
  routeChanged = "routeChanged"
1734
2147
  }
1735
2148
 
2149
+ /**
2150
+ * Genesis connect events that can be monitored to invoke resource checking.
2151
+ *
2152
+ * @remarks
2153
+ * 'steam' and 'commit' are monitored by default and will invoke resource checking. 'metadata' request failures are
2154
+ * monitored for the purpose of surfacing such errors to the console only. For now, 'metadata' errors are unrecoverable.
2155
+ *
2156
+ * @public
2157
+ */
2158
+ export declare type GenesisConnectEvents = 'stream' | 'commit';
2159
+
1736
2160
  /**
1737
2161
  * Get Connect from the DI container.
1738
2162
  *
@@ -1791,6 +2215,57 @@ export declare type GetCredentialOptions = CredentialRequestOptions & {};
1791
2215
  */
1792
2216
  export declare function getDatasource(): Datasource;
1793
2217
 
2218
+ /**
2219
+ * Gets NetworkMonitor from the DI container.
2220
+ *
2221
+ * @remarks
2222
+ * A utility method for host applications that are not using decorators or the DI container.
2223
+ *
2224
+ * @example
2225
+ * ```ts
2226
+ * import { getNetworkMonitor } from '@genesislcap/foundation-comms';
2227
+ * ...
2228
+ * private monitor = getNetworkMonitor();
2229
+ * ```
2230
+ *
2231
+ * @public
2232
+ */
2233
+ export declare function getNetworkMonitor(): NetworkMonitor;
2234
+
2235
+ /**
2236
+ * Gets Socket from the DI container.
2237
+ *
2238
+ * @remarks
2239
+ * A utility method for host applications that are not using decorators or the DI container.
2240
+ *
2241
+ * @example
2242
+ * ```ts
2243
+ * import { getSocket } from '@genesislcap/foundation-comms';
2244
+ * ...
2245
+ * private socket = getSocket();
2246
+ * ```
2247
+ *
2248
+ * @public
2249
+ */
2250
+ export declare function getSocket(): Socket;
2251
+
2252
+ /**
2253
+ * Gets SocketStatus from the DI container.
2254
+ *
2255
+ * @remarks
2256
+ * A utility method for host applications that are not using decorators or the DI container.
2257
+ *
2258
+ * @example
2259
+ * ```ts
2260
+ * import { getSocketStatus } from '@genesislcap/foundation-comms';
2261
+ * ...
2262
+ * private socketStatus = getSocketStatus();
2263
+ * ```
2264
+ *
2265
+ * @public
2266
+ */
2267
+ export declare function getSocketStatus(): SocketStatus;
2268
+
1794
2269
  /**
1795
2270
  * An interface representing an HTTP client that can make GET and POST requests and return a promise with the response data.
1796
2271
  * @public
@@ -2184,6 +2659,15 @@ export declare interface MessageBuilder {
2184
2659
  * @returns The more rows message.
2185
2660
  */
2186
2661
  createMoreRowsMessage(sourceRef: string): Message;
2662
+ /**
2663
+ * Creates a message to request more columns.
2664
+ *
2665
+ * @remarks MORE_COLUMNS
2666
+ * @public
2667
+ * @param sourceRef - The source reference.
2668
+ * @returns The more columns message.
2669
+ */
2670
+ createMoreColumnsMessage(sourceRef: string): Message;
2187
2671
  /**
2188
2672
  * Creates a request message.
2189
2673
  *
@@ -2431,6 +2915,14 @@ export declare type MessageError = {
2431
2915
  TEXT: string;
2432
2916
  };
2433
2917
 
2918
+ /**
2919
+ * Check if the message contains an error code.
2920
+ * @param message - The message object.
2921
+ * @param code - The error code.
2922
+ * @public
2923
+ */
2924
+ export declare const messageHasErrorCode: (message: Message, code: string | number) => boolean;
2925
+
2434
2926
  /**
2435
2927
  * Check if the provided message contains an error and throw an Error if it does
2436
2928
  * @public
@@ -2451,6 +2943,8 @@ export declare enum MessageType {
2451
2943
  HEARTBEAT_PING = "HEARTBEAT_PING",
2452
2944
  HEARTBEAT_PONG = "HEARTBEAT_PONG",
2453
2945
  MORE_ROWS = "MORE_ROWS",
2946
+ MORE_COLUMNS = "MORE_COLUMNS",
2947
+ MORE_COLUMNS_ACK = "MORE_COLUMNS_ACK",
2454
2948
  MSG_ACK = "MSG_ACK",
2455
2949
  MSG_NACK = "MSG_NACK",
2456
2950
  LOGOUT_ACK = "LOGOUT_ACK",
@@ -2530,6 +3024,158 @@ export declare type MetadataDetail = {
2530
3024
  UI_LABEL?: string;
2531
3025
  };
2532
3026
 
3027
+ /**
3028
+ * @public
3029
+ */
3030
+ export declare type MetadataEvent = CustomEvent<MetadataEventDetail>;
3031
+
3032
+ /**
3033
+ * @public
3034
+ */
3035
+ export declare type MetadataEventDetail = {
3036
+ resourceName: string;
3037
+ message: Message<MessageDetails.MetaRequest>;
3038
+ error?: any;
3039
+ };
3040
+
3041
+ /**
3042
+ * @public
3043
+ */
3044
+ export declare const MetadataEventType = "connect-metadata-event";
3045
+
3046
+ /**
3047
+ * MonitoredResource.
3048
+ * @public
3049
+ */
3050
+ export declare type MonitoredResource = SocketObservable<any>;
3051
+
3052
+ /**
3053
+ * MonitoredResourceChecks.
3054
+ * @param sourceRef - The resource source ref.
3055
+ * @param resource - The resource reference.
3056
+ * @public
3057
+ */
3058
+ export declare type MonitoredResourceChecks = (sourceRef: string, resource: MonitoredResource) => Promise<MonitoredResourceChecksResult>;
3059
+
3060
+ /**
3061
+ * MonitoredResourceChecksResult.
3062
+ * @public
3063
+ */
3064
+ export declare interface MonitoredResourceChecksResult {
3065
+ isConnected: boolean;
3066
+ lastUpdated: number;
3067
+ lastMessage?: Message;
3068
+ timeout?: boolean;
3069
+ }
3070
+
3071
+ /**
3072
+ * MonitoredResourceDataLogon.
3073
+ * @param metadata - The resource metadata.
3074
+ * @public
3075
+ */
3076
+ export declare type MonitoredResourceDataLogon = (metadata: MonitoredResourceMetadata) => void;
3077
+
3078
+ /**
3079
+ * MonitoredResourceMetadata.
3080
+ * @public
3081
+ */
3082
+ export declare interface MonitoredResourceMetadata extends Partial<MonitoredResourceChecksResult>, Partial<StreamEventDetail> {
3083
+ }
3084
+
3085
+ /**
3086
+ * @public
3087
+ */
3088
+ export declare const networkLogger: Logger;
3089
+
3090
+ /**
3091
+ * `NetworkMonitor` monitors network and resource availability and health.
3092
+ *
3093
+ * @remarks
3094
+ * UIs can listen for 'system-health-changed' events and display visual overlays to communicate status to the user.
3095
+ *
3096
+ * @public
3097
+ */
3098
+ export declare interface NetworkMonitor {
3099
+ status: SystemHealthStatus;
3100
+ create(): void;
3101
+ destroy(): void;
3102
+ /**
3103
+ * @param source - The source of the call, which may have been an event or scheduled interval.
3104
+ * @param force - A flag to bypass abort if already in progress logic.
3105
+ */
3106
+ runAllChecks(source?: unknown, force?: boolean): Promise<void>;
3107
+ /**
3108
+ * @param resource - The resource reference.
3109
+ * @param metadata - The resource metadata.
3110
+ */
3111
+ addResource(resource: MonitoredResource, metadata: MonitoredResourceMetadata): void;
3112
+ /**
3113
+ * @param resource - The resource reference.
3114
+ */
3115
+ removeResource(resource: MonitoredResource): void;
3116
+ }
3117
+
3118
+ /**
3119
+ * NetworkMonitor DI key.
3120
+ *
3121
+ * @privateRemarks
3122
+ * Marked as internal to stop api-extractor becoming confused cross-linking tokens with the same name.
3123
+ *
3124
+ * @internal
3125
+ */
3126
+ export declare const NetworkMonitor: InterfaceSymbol<NetworkMonitor>;
3127
+
3128
+ /**
3129
+ * NetworkMonitorConfig DI interface.
3130
+ *
3131
+ * @public
3132
+ */
3133
+ export declare interface NetworkMonitorConfig {
3134
+ /**
3135
+ * Window events that invoke checks
3136
+ */
3137
+ windowEvents?: (keyof WindowEventHandlersEventMap)[];
3138
+ /**
3139
+ * Document events that invoke checks
3140
+ */
3141
+ documentEvents?: (keyof DocumentEventMap)[];
3142
+ /**
3143
+ * Genesis connect events that invoke checks
3144
+ */
3145
+ genesisConnectEvents?: GenesisConnectEvents[];
3146
+ /**
3147
+ * Periodic check internal in ms
3148
+ */
3149
+ checkInterval?: number;
3150
+ /**
3151
+ * Check timeout in ms
3152
+ */
3153
+ checkTimeout?: number;
3154
+ /**
3155
+ * Default resource checks function
3156
+ */
3157
+ resourceChecks?: MonitoredResourceChecks;
3158
+ /**
3159
+ * Default resource data logon function
3160
+ * @remarks
3161
+ * Used to re-attempt data logon on an unhealthy data server
3162
+ */
3163
+ resourceDataLogon?: MonitoredResourceDataLogon;
3164
+ /**
3165
+ * The element to emit events from
3166
+ */
3167
+ eventEmitter?: HTMLElement;
3168
+ }
3169
+
3170
+ /**
3171
+ * NetworkMonitorConfig DI key.
3172
+ *
3173
+ * @internal
3174
+ * @privateRemarks
3175
+ * Marked as internal to stop api-extractor becoming confused cross-linking tokens with the same name.
3176
+ */
3177
+ export declare const NetworkMonitorConfig: InterfaceSymbol<NetworkMonitorConfig>;
3178
+
2533
3179
  /**
2534
3180
  * Normalise criteria.
2535
3181
  *
@@ -2618,6 +3264,16 @@ export declare type RequestServerResult = {
2618
3264
  MESSAGE_TYPE?: string;
2619
3265
  };
2620
3266
 
3267
+ /**
3268
+ * ResourceHealth.
3269
+ * @public
3270
+ */
3271
+ export declare type ResourceHealth = MonitoredResourceChecksResult & {
3272
+ name: string;
3273
+ sourceRef: string;
3274
+ lastError?: any;
3275
+ };
3276
+
2621
3277
  /**
2622
3278
  * Types of Genesis resources.
2623
3279
  * @public
@@ -2656,6 +3312,27 @@ export declare type SchemaResponse = {
2656
3312
  SOURCE_REF: string;
2657
3313
  };
2658
3314
 
3315
+ /**
3316
+ * `SerializedSocketStatus` provides the serialize state of the web socket.
3317
+ * @public
3318
+ */
3319
+ export declare interface SerializedSocketStatus {
3320
+ /**
3321
+ * When the socket has been configured for use.
3322
+ */
3323
+ isConfigured: boolean;
3324
+ isConnecting: boolean;
3325
+ isConnected: boolean;
3326
+ isDisconnected: boolean;
3327
+ isDisconnectedByServer: boolean;
3328
+ isReconnecting: boolean;
3329
+ reconnectionLimitReached: boolean;
3330
+ hasValidSession: boolean;
3331
+ readonly closedCode: number;
3332
+ readonly closedReason: string;
3333
+ readonly closedClean: boolean;
3334
+ }
3335
+
2659
3336
  /**
2660
3337
  * A Serializer interface for serializing and deserializing objects.
2661
3338
  * @public
@@ -2838,18 +3515,14 @@ export declare class SessionMock implements Session {
2838
3515
  * Provides methods for socket connection, sending and receiving WS messages.
2839
3516
  * @public
2840
3517
  */
2841
- export declare interface Socket {
2842
- isConnected: boolean;
2843
- isReconnecting: boolean;
2844
- hasValidSession: boolean;
2845
- isConnectedSubject: BehaviorSubject<boolean>;
3518
+ export declare interface Socket extends Omit<SocketStatus, 'serialize' | 'onClose' | 'reconnectionLimitReached' | 'closedCode' | 'closedReason' | 'closedClean'> {
2846
3519
  connect(host: string, options?: SocketConnectOptions, reconnectOptions?: SocketReconnectOptions): Promise<boolean>;
2847
3520
  /**
2848
3521
  * Disconnects the socket and clears all subscriptions
2849
3522
  */
2850
3523
  reset(): void;
2851
3524
  send<T>(message: Message<T | any>, needsHandling?: boolean): Promise<Message | any>;
2852
- sendForStream<T>(message: Message<T | any>, onMessage: Function, onError: Function): Observable<Message>;
3525
+ sendForStream<T>(message: Message<T | any>, onMessage: Function, onError: Function, onComplete?: Function): Observable<Message>;
2853
3526
  socketMessages(): SocketSubject<Message>;
2854
3527
  }
2855
3528
 
@@ -2875,7 +3548,7 @@ export declare type SocketConnectOptions = {
2875
3548
  /**
2876
3549
  * An observer to receive notifications of incoming messages from the server.
2877
3550
  */
2878
- connectObserver?: Observer<Message>;
3551
+ connectObserver?: Observer_2<Message>;
2879
3552
  /**
2880
3553
  * Enable sending heartbeat messages to the server to prevent the connection from timing out.
2881
3554
  */
@@ -2948,7 +3621,11 @@ export declare class SocketMessageHandler {
2948
3621
  * @internal
2949
3622
  */
2950
3623
  export declare class SocketMock implements Socket {
3624
+ isConfigured: boolean;
3625
+ isDisconnected: boolean;
3626
+ isDisconnectedByServer: boolean;
2951
3627
  hasValidSession: boolean;
3628
+ isConnecting: boolean;
2952
3629
  isConnected: boolean;
2953
3630
  isConnectedSubject: BehaviorSubject<boolean>;
2954
3631
  isReconnecting: boolean;
@@ -2957,7 +3634,7 @@ export declare class SocketMock implements Socket {
2957
3634
  connect(host: string, options?: SocketConnectOptions, reconnectOptions?: SocketReconnectOptions): Promise<boolean>;
2958
3635
  disconnect(): void;
2959
3636
  send<T>(message: Message<any>): Promise<Message | any>;
2960
- sendForStream<T>(message: Message<any>, onMessage: Function, onError: Function): Observable<Message>;
3637
+ sendForStream<T>(message: Message<any>, onMessage: Function, onError: Function, onComplete?: Function): Observable<Message>;
2961
3638
  socketMessages(): SocketSubject<Message>;
2962
3639
  reset(): void;
2963
3640
  }
@@ -2988,7 +3665,7 @@ export declare type SocketReconnectOptions = {
2988
3665
  * Observer to notify when reconnection occurs
2989
3666
  * @public
2990
3667
  */
2991
- reconnectObserver?: Observer<any>;
3668
+ reconnectObserver?: Observer_2<any>;
2992
3669
  /**
2993
3670
  * Reconnect stream subscriptions on reconnection
2994
3671
  * @public
@@ -3021,6 +3698,26 @@ export declare enum SocketReconnectStrategy {
3021
3698
  Exponential = "exponential"
3022
3699
  }
3023
3700
 
3701
+ /**
3702
+ * `SocketStatus` provides the state of the web socket.
3703
+ * @public
3704
+ */
3705
+ export declare interface SocketStatus extends SerializedSocketStatus {
3706
+ isConnectedSubject: BehaviorSubject<boolean>;
3707
+ serialize(): SerializedSocketStatus;
3708
+ onClose(closeEvent: CloseEvent): void;
3709
+ }
3710
+
3711
+ /**
3712
+ * SocketStatus DI key.
3713
+ *
3714
+ * @privateRemarks
3715
+ * Marked as internal to stop api-extractor becoming confused cross-linking tokens with the same name.
3716
+ *
3717
+ * @internal
3718
+ */
3719
+ export declare const SocketStatus: InterfaceSymbol<SocketStatus>;
3720
+
3024
3721
  /**
3025
3722
  * Subject that wraps a WebSocketSubject and provides a Subject interface for sending and receiving messages.
3026
3723
  * @public
@@ -3059,6 +3756,123 @@ export declare type SSOCredentialsInput = {
3059
3756
  */
3060
3757
  export declare type StorageType = 'local' | 'session';
3061
3758
 
3759
+ /**
3760
+ * @public
3761
+ */
3762
+ export declare type StreamCompleteEvent = CustomEvent<SocketObservable<any>>;
3763
+
3764
+ /**
3765
+ * @public
3766
+ */
3767
+ export declare const StreamCompleteEventType = "connect-stream-complete-event";
3768
+
3769
+ /**
3770
+ * @public
3771
+ */
3772
+ export declare type StreamEvent = CustomEvent<StreamEventDetail>;
3773
+
3774
+ /**
3775
+ * @public
3776
+ */
3777
+ export declare type StreamEventDetail = {
3778
+ functions: StreamEventFunctions;
3779
+ message: Message<MessageDetails.DataserverRequest>;
3780
+ resourceName: string;
3781
+ stream: SocketObservable<any>;
3782
+ };
3783
+
3784
+ /**
3785
+ * @public
3786
+ */
3787
+ export declare type StreamEventFunctions = {
3788
+ onMessage?: Function;
3789
+ onError?: Function;
3790
+ resourceChecks?: MonitoredResourceChecks;
3791
+ resourceDataLogon?: MonitoredResourceDataLogon;
3792
+ };
3793
+
3794
+ /**
3795
+ * @public
3796
+ */
3797
+ export declare const StreamEventType = "connect-stream-event";
3798
+
3799
+ /**
3800
+ * SystemHealthChanged.
3801
+ * @public
3802
+ */
3803
+ export declare const SystemHealthChanged = "system-health-changed";
3804
+
3805
+ /**
3806
+ * SystemHealthChangedEvent.
3807
+ * @public
3808
+ */
3809
+ export declare type SystemHealthChangedEvent = CustomEvent<SystemHealthStatus>;
3810
+
3811
+ /**
3812
+ * SystemHealthStatus.
3813
+ * @public
3814
+ */
3815
+ export declare type SystemHealthStatus = {
3816
+ /**
3817
+ * Is the browser or device working online.
3818
+ */
3819
+ isOnline: boolean;
3820
+ /**
3821
+ * Browser information.
3822
+ */
3823
+ browserInformation?: Bowser_2.Parser.ParsedResult;
3824
+ /**
3825
+ * Is the user authenticated.
3826
+ */
3827
+ isAuthenticated: boolean;
3828
+ /**
3829
+ * The username if authenticated.
3830
+ */
3831
+ username?: string;
3832
+ /**
3833
+ * Is everything online and connected.
3834
+ */
3835
+ isHealthy: boolean;
3836
+ /**
3837
+ * Socket status.
3838
+ */
3839
+ socket: SerializedSocketStatus;
3840
+ /**
3841
+ * Resource health information.
3842
+ */
3843
+ resources: Record<string, ResourceHealth>;
3844
+ /**
3845
+ * Resources are all connected flag.
3846
+ */
3847
+ resourcesAllConnected: boolean;
3848
+ /**
3849
+ * Last time the information was updated.
3850
+ */
3851
+ lastUpdated: number;
3852
+ /**
3853
+ * Next time the information will be updated.
3854
+ *
3855
+ * @privateRemarks
3856
+ * Overlays may use deltas for a visual countdown to next update.
3857
+ */
3858
+ nextUpdate: number;
3859
+ /**
3860
+ * First time the information was updated.
3861
+ *
3862
+ * @remarks
3863
+ * Can be used by applications to understand how-long it has been since the last refresh and to drive automations.
3864
+ */
3865
+ firstUpdated: number;
3866
+ /**
3867
+ * User requested run checks.
3868
+ */
3869
+ runAllChecks(): void;
3870
+ /**
3871
+ * User requested report stability to Genesis.
3872
+ */
3873
+ reportStabilityToGenesis(): Promise<boolean>;
3874
+ };
3875
+
3062
3876
  /**
3063
3877
  * Converts the field definitions to field metadata.
3064
3878
  * @public
@@ -3110,14 +3924,28 @@ export declare interface User extends UserOptions {
3110
3924
  hasAdminProfile(): boolean;
3111
3925
  hasPermission(permission: UserPermission | UserPermission[]): boolean;
3112
3926
  hasProfile(profile: UserProfile | UserProfile[]): boolean;
3927
+ set(options: UserOptions): void;
3928
+ unset(): void;
3113
3929
  }
3114
3930
 
3931
+ /**
3932
+ * User DI key.
3933
+ * @privateRemarks
3934
+ * Marked as internal to stop api-extractor becoming confused cross-linking tokens with the same name.
3935
+ * @internal
3936
+ */
3937
+ export declare const User: InterfaceSymbol<User>;
3938
+
3115
3939
  /**
3116
3940
  * The keys used to store user information in the session storage.
3117
3941
  * @internal
3118
3942
  */
3119
3943
  declare type UserInfoKeys = 'authToken' | 'ssoToken' | 'refreshToken' | 'sessionId' | 'returnUrl' | 'hostUrl' | 'gridOptions';
3120
3944
 
3945
+ /**
3946
+ * Made some minor adjustments here to make user more accessible in the short term.
3947
+ * Please note that this User will be replaced with the enhanced version shortly!
3948
+ */
3121
3949
  /**
3122
3950
  * TODO: Evolve, re-locate to foundation-data, foundation-user or similar and add JSON schema based population,
3123
3951
  * validation, evolution, foundation-store interop etc.