@genesislcap/foundation-comms 14.184.0 → 14.186.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. package/dist/dts/auth/auth.types.d.ts +1 -1
  2. package/dist/dts/auth/auth.types.d.ts.map +1 -1
  3. package/dist/dts/connect/connect.d.ts +14 -6
  4. package/dist/dts/connect/connect.d.ts.map +1 -1
  5. package/dist/dts/connect/connect.events.d.ts +28 -2
  6. package/dist/dts/connect/connect.events.d.ts.map +1 -1
  7. package/dist/dts/connect/connect.types.d.ts +5 -52
  8. package/dist/dts/connect/connect.types.d.ts.map +1 -1
  9. package/dist/dts/connect/http.connect.d.ts +4 -8
  10. package/dist/dts/connect/http.connect.d.ts.map +1 -1
  11. package/dist/dts/connect/http.connect.types.d.ts +62 -0
  12. package/dist/dts/connect/http.connect.types.d.ts.map +1 -0
  13. package/dist/dts/connect/index.d.ts +1 -0
  14. package/dist/dts/connect/index.d.ts.map +1 -1
  15. package/dist/dts/connect/message.d.ts +6 -2
  16. package/dist/dts/connect/message.d.ts.map +1 -1
  17. package/dist/dts/connect/socket.d.ts +3 -56
  18. package/dist/dts/connect/socket.d.ts.map +1 -1
  19. package/dist/dts/connect/socket.types.d.ts +57 -0
  20. package/dist/dts/connect/socket.types.d.ts.map +1 -0
  21. package/dist/dts/connect/updateState.d.ts +3 -0
  22. package/dist/dts/connect/updateState.d.ts.map +1 -0
  23. package/dist/dts/networkMonitor/service.d.ts.map +1 -1
  24. package/dist/dts/testing/mocks/auth/auth.d.ts +1 -1
  25. package/dist/dts/testing/mocks/auth/auth.d.ts.map +1 -1
  26. package/dist/dts/testing/mocks/connect/connect.d.ts +3 -1
  27. package/dist/dts/testing/mocks/connect/connect.d.ts.map +1 -1
  28. package/dist/dts/testing/mocks/connect/socket.d.ts +1 -1
  29. package/dist/dts/testing/mocks/connect/socket.d.ts.map +1 -1
  30. package/dist/dts/testing/mocks/datasource/datasource.d.ts +1 -1
  31. package/dist/dts/testing/mocks/datasource/datasource.d.ts.map +1 -1
  32. package/dist/esm/connect/connect.events.js +21 -2
  33. package/dist/esm/connect/connect.js +26 -28
  34. package/dist/esm/connect/connect.types.js +21 -5
  35. package/dist/esm/connect/http.connect.js +11 -23
  36. package/dist/esm/connect/http.connect.types.js +24 -0
  37. package/dist/esm/connect/index.js +1 -0
  38. package/dist/esm/connect/message.js +3 -2
  39. package/dist/esm/connect/socket.js +10 -5
  40. package/dist/esm/connect/socket.types.js +1 -0
  41. package/dist/esm/connect/updateState.js +26 -0
  42. package/dist/esm/networkMonitor/service.js +18 -8
  43. package/dist/esm/testing/mocks/connect/connect.js +3 -0
  44. package/dist/esm/testing/mocks/connect/socket.js +1 -1
  45. package/dist/foundation-comms.api.json +823 -384
  46. package/dist/foundation-comms.d.ts +63 -16
  47. package/docs/api/foundation-comms.connect.md +1 -0
  48. package/docs/api/foundation-comms.connect.streamstate.md +30 -0
  49. package/docs/api/foundation-comms.connectconfig.iswebsocketexpression.md +13 -0
  50. package/docs/api/foundation-comms.connectconfig.md +1 -0
  51. package/docs/api/foundation-comms.connectevents.addstreamlistener.md +2 -1
  52. package/docs/api/foundation-comms.connectevents.md +1 -1
  53. package/docs/api/foundation-comms.connecteventsemitter.md +1 -0
  54. package/docs/api/foundation-comms.connecteventsemitter.onstreamerrorevent.md +26 -0
  55. package/docs/api/foundation-comms.defaultconnect._constructor_.md +2 -2
  56. package/docs/api/foundation-comms.defaultconnect.md +1 -0
  57. package/docs/api/foundation-comms.defaultconnect.streamstate.md +26 -0
  58. package/docs/api/foundation-comms.defaultconnectevents.addstreamlistener.md +2 -1
  59. package/docs/api/foundation-comms.defaultconnectevents.md +2 -1
  60. package/docs/api/foundation-comms.defaultconnectevents.onstreamerrorevent.md +26 -0
  61. package/docs/api/foundation-comms.defaulthttpconnect._constructor_.md +2 -2
  62. package/docs/api/foundation-comms.defaulthttpconnect.md +1 -0
  63. package/docs/api/foundation-comms.defaulthttpconnect.streamstate.md +26 -0
  64. package/docs/api/foundation-comms.md +3 -4
  65. package/docs/api/foundation-comms.pingmessage.md +1 -1
  66. package/docs/api/foundation-comms.streamerrorevent.md +14 -0
  67. package/docs/api/foundation-comms.streamerroreventdetail.md +16 -0
  68. package/docs/api/foundation-comms.streamerroreventtype.md +12 -0
  69. package/docs/api-report.md +36 -38
  70. package/package.json +21 -13
  71. package/docs/api/foundation-comms.defaulthttpconnectconfig.md +0 -13
  72. package/docs/api/foundation-comms.httpconnectconfig.md +0 -20
  73. package/docs/api/foundation-comms.httpconnectconfig.polling.md +0 -13
  74. package/docs/api/foundation-comms.httppollingconfig.md +0 -22
  75. package/docs/api/foundation-comms.httppollingconfig.polling_frequency.md +0 -13
  76. package/docs/api/foundation-comms.httppollingconfig.polling_interval_map.md +0 -15
  77. package/docs/api/foundation-comms.httppollingconfig.polling_map.md +0 -15
  78. package/docs/api/foundation-comms.pollingconfiguration.amount_of_polls.md +0 -18
  79. package/docs/api/foundation-comms.pollingconfiguration.md +0 -22
  80. package/docs/api/foundation-comms.pollingconfiguration.queries.md +0 -13
  81. package/docs/api/foundation-comms.pollingconfiguration.temp_frequency.md +0 -13
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/networkMonitor/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/networkMonitor/service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { User } from '@genesislcap/foundation-user';
2
- import { Auth, AuthInfo, LoginResult, LogoutResult } from '../../../';
2
+ import type { Auth, AuthInfo, LoginResult, LogoutResult } from '../../../';
3
3
  /**
4
4
  * @internal
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../src/testing/mocks/auth/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEtE;;GAEG;AACH,qBAAa,QAAS,YAAW,IAAI;IACvB,SAAS,UAAS;IAClB,gBAAgB,EAAE,WAAW,CAAQ;IACrC,WAAW,EAAE,IAAI,CAAQ;IACzB,UAAU,EAAE,OAAO,CAAS;IAExC,eAAe,EAAE,WAAW,CAAC;IAC7B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAEpB,KAAK,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlD,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAI/B,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG5C"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../src/testing/mocks/auth/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE3E;;GAEG;AACH,qBAAa,QAAS,YAAW,IAAI;IACvB,SAAS,UAAS;IAClB,gBAAgB,EAAE,WAAW,CAAQ;IACrC,WAAW,EAAE,IAAI,CAAQ;IACzB,UAAU,EAAE,OAAO,CAAS;IAExC,eAAe,EAAE,WAAW,CAAC;IAC7B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAEpB,KAAK,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlD,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAI/B,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG5C"}
@@ -1,5 +1,5 @@
1
1
  import { BehaviorSubject, Observable } from 'rxjs';
2
- import { CommitParams, Connect, Message, Metadata, RequestParams, SocketMock, SocketObservable } from '../../../';
2
+ import type { CommitParams, Connect, Message, Metadata, RequestParams, SocketMock, SocketObservable } from '../../../';
3
3
  /**
4
4
  * @internal
5
5
  */
@@ -16,6 +16,7 @@ export declare class ConnectMock implements Connect {
16
16
  nextJSONSchema: any;
17
17
  nextMessage: Message;
18
18
  requestParams: RequestParams;
19
+ nextListState: any[];
19
20
  commitEvent(eventName: string, params?: CommitParams): Promise<Message>;
20
21
  connect(host: string): Promise<boolean>;
21
22
  disconnect(): void;
@@ -24,6 +25,7 @@ export declare class ConnectMock implements Connect {
24
25
  getAvailableResources(params?: RequestParams): Promise<Message>;
25
26
  snapshot(resourceName: string, params?: any): Promise<Message>;
26
27
  stream(resourceName: string, onMessage: Function, onError: Function, params?: any): SocketObservable<Message>;
28
+ streamState(resourceName: string, onMessage: Function, onError: Function, params?: any, initialState?: any[]): Observable<any[]>;
27
29
  streamWithoutAutoTeardown(resourceName: string, onMessage: Function, onError: Function, params?: any): SocketObservable<Message>;
28
30
  getMoreRows(sourceRef: string): Promise<Message<any>>;
29
31
  getMoreColumns(sourceRef: string): Promise<Message<any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../../src/testing/mocks/connect/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,EACL,YAAY,EACZ,OAAO,EACP,OAAO,EACP,QAAQ,EACR,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,WAAW,EAAE,OAAO,CAAQ;IAC5B,SAAS,EAAE,OAAO,CAAS;IAC3B,MAAM,EAAE,UAAU,CAAC;IAEnB,IAAI,kBAAkB,IAAI,eAAe,CAAC,OAAO,CAAC,CAEjD;IAED,IAAI,YAAY,IAAI,UAAU,CAAC,OAAO,CAAC,CAEtC;IAED,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrE,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIrC,QAAQ,IAAI,OAAO;IAInB,YAAY,EAAE,QAAQ,CAAC;IACvB,cAAc,EAAE,GAAG,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAE7B,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvC,UAAU,IAAI,IAAI;IAElB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIpD,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAKvE,qBAAqB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,MAAM,CACJ,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,GAAG,GACX,gBAAgB,CAAC,OAAO,CAAC;IAI5B,yBAAyB,CACvB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,GAAG,GACX,gBAAgB,CAAC,OAAO,CAAC;IAI5B,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAIrD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAIxD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAIpD,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAGlD"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../../src/testing/mocks/connect/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,OAAO,EACP,QAAQ,EACR,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,WAAW,EAAE,OAAO,CAAQ;IAC5B,SAAS,EAAE,OAAO,CAAS;IAC3B,MAAM,EAAE,UAAU,CAAC;IAEnB,IAAI,kBAAkB,IAAI,eAAe,CAAC,OAAO,CAAC,CAEjD;IAED,IAAI,YAAY,IAAI,UAAU,CAAC,OAAO,CAAC,CAEtC;IAED,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrE,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIrC,QAAQ,IAAI,OAAO;IAInB,YAAY,EAAE,QAAQ,CAAC;IACvB,cAAc,EAAE,GAAG,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,GAAG,EAAE,CAAC;IAErB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvC,UAAU,IAAI,IAAI;IAElB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIpD,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAKvE,qBAAqB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,MAAM,CACJ,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,GAAG,GACX,gBAAgB,CAAC,OAAO,CAAC;IAI5B,WAAW,CACT,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,GAAG,EACZ,YAAY,CAAC,EAAE,GAAG,EAAE,GACnB,UAAU,CAAC,GAAG,EAAE,CAAC;IAIpB,yBAAyB,CACvB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,GAAG,GACX,gBAAgB,CAAC,OAAO,CAAC;IAI5B,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAIrD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAIxD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAIpD,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAGlD"}
@@ -1,6 +1,6 @@
1
1
  import { BehaviorSubject, Observable } from 'rxjs';
2
2
  import type { Message, Socket, SocketConnectOptions, SocketReconnectOptions } from '../../../connect';
3
- import { SocketSubject } from '../../../connect';
3
+ import { SocketSubject } from '../../../connect/socket';
4
4
  /**
5
5
  * @internal
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../../../src/testing/mocks/connect/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,qBAAa,UAAW,YAAW,MAAM;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,CAA6B;IACzE,cAAc,EAAE,OAAO,CAAC;IAExB,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,8BAAgC;IAErD,OAAO,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,oBAAoB,EAC9B,gBAAgB,CAAC,EAAE,sBAAsB,GACxC,OAAO,CAAC,OAAO,CAAC;IAIZ,UAAU,IAAI,IAAI;IAElB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;IAItD,aAAa,CAAC,CAAC,EACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EACrB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,EACjB,UAAU,CAAC,EAAE,QAAQ,GACpB,UAAU,CAAC,OAAO,CAAC;IAItB,4BAA4B,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EACrB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,GAChB,UAAU,CAAC,OAAO,CAAC;IAIf,cAAc,IAAI,aAAa,CAAC,OAAO,CAAC;IAI/C,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../../../src/testing/mocks/connect/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAQ,UAAU,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;GAEG;AACH,qBAAa,UAAW,YAAW,MAAM;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,CAA6B;IACzE,cAAc,EAAE,OAAO,CAAC;IAExB,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,8BAAgC;IAErD,OAAO,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,oBAAoB,EAC9B,gBAAgB,CAAC,EAAE,sBAAsB,GACxC,OAAO,CAAC,OAAO,CAAC;IAIZ,UAAU,IAAI,IAAI;IAElB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;IAItD,aAAa,CAAC,CAAC,EACpB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EACrB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,EACjB,UAAU,CAAC,EAAE,QAAQ,GACpB,UAAU,CAAC,OAAO,CAAC;IAItB,4BAA4B,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EACrB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,QAAQ,GAChB,UAAU,CAAC,OAAO,CAAC;IAIf,cAAc,IAAI,aAAa,CAAC,OAAO,CAAC;IAI/C,KAAK,IAAI,IAAI;CAGd"}
@@ -1,5 +1,5 @@
1
1
  import { SocketObservable } from '../../../connect';
2
- import { Datasource, DatasourceOptions, Dataview, ResourceType } from '../../../datasource';
2
+ import type { Datasource, DatasourceOptions, Dataview, ResourceType } from '../../../datasource';
3
3
  import { FieldMetadata, FilteredDataServerResult, RequestServerResult } from '../../../metadata';
4
4
  /**
5
5
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../../../../src/testing/mocks/datasource/datasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEjG;;GAEG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC,wBAAwB,GAAG,mBAAmB,CAAC,CAAC;IAEzE,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAItE,MAAM;IAEN,OAAO;IAEP,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAMhD,WAAW,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAI5D,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG;IAErB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM;IAE/B,UAAU,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAIhC,OAAO,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE9B,QAAQ,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE/B,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,UAAU,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtD"}
1
+ {"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../../../../src/testing/mocks/datasource/datasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEjG;;GAEG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC,wBAAwB,GAAG,mBAAmB,CAAC,CAAC;IAEzE,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAItE,MAAM;IAEN,OAAO;IAEP,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAMhD,WAAW,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAI5D,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG;IAErB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM;IAE/B,UAAU,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAIhC,OAAO,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE9B,QAAQ,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE/B,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,UAAU,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtD"}
@@ -8,6 +8,10 @@ export const CommitEventType = 'connect-commit-event';
8
8
  * @public
9
9
  */
10
10
  export const StreamEventType = 'connect-stream-event';
11
+ /**
12
+ * @public
13
+ */
14
+ export const StreamErrorEventType = 'connect-stream-error-event';
11
15
  /**
12
16
  * @public
13
17
  */
@@ -27,18 +31,22 @@ export class DefaultConnectEvents {
27
31
  /** @internal */
28
32
  this.streamCompleteListeners = createObserver();
29
33
  /** @internal */
34
+ this.streamErrorListeners = createObserver();
35
+ /** @internal */
30
36
  this.commitListeners = createObserver();
31
37
  /** @internal */
32
38
  this.metadataListeners = createObserver();
33
39
  }
34
40
  /** {@inheritDoc ConnectEvents.addStreamListener} */
35
- addStreamListener(listener, complete) {
36
- var _a, _b;
41
+ addStreamListener(listener, complete, error) {
42
+ var _a, _b, _c;
37
43
  const unsubscribe = (_a = this.streamListeners) === null || _a === void 0 ? void 0 : _a.subscribe(listener);
38
44
  const completeUnsubscribe = (_b = this.streamCompleteListeners) === null || _b === void 0 ? void 0 : _b.subscribe(complete);
45
+ const errorUnsubscribe = (_c = this.streamErrorListeners) === null || _c === void 0 ? void 0 : _c.subscribe(error);
39
46
  return () => {
40
47
  unsubscribe();
41
48
  completeUnsubscribe();
49
+ errorUnsubscribe();
42
50
  };
43
51
  }
44
52
  /** {@inheritDoc ConnectEventsEmitter.onStreamEvent} */
@@ -53,6 +61,17 @@ export class DefaultConnectEvents {
53
61
  },
54
62
  }));
55
63
  }
64
+ /** {@inheritDoc ConnectEventsEmitter.onStreamErrorEvent} */
65
+ onStreamErrorEvent(resourceName, stream, error) {
66
+ var _a;
67
+ (_a = this.streamErrorListeners) === null || _a === void 0 ? void 0 : _a.publish(new CustomEvent(StreamErrorEventType, {
68
+ detail: {
69
+ resourceName,
70
+ stream,
71
+ error,
72
+ },
73
+ }));
74
+ }
56
75
  /** {@inheritDoc ConnectEventsEmitter.onStreamCompleteEvent} */
57
76
  onStreamCompleteEvent(resourceName, stream) {
58
77
  var _a;
@@ -1,33 +1,16 @@
1
1
  import { __awaiter, __decorate, __param } from "tslib";
2
2
  import { FORCE_HTTP } from '@genesislcap/foundation-utils';
3
3
  import { observable, volatile } from '@microsoft/fast-element';
4
- import { DI, optional } from '@microsoft/fast-foundation';
4
+ import { DI } from '@microsoft/fast-foundation';
5
+ import { scan } from 'rxjs';
5
6
  import { MetaCache } from '../metadata';
6
- import { isWebSocketExpression, logger } from '../utils';
7
+ import { logger } from '../utils';
7
8
  import { ConnectEventsEmitter } from './connect.events';
8
9
  import { ConnectConfig } from './connect.types';
9
10
  import { HttpConnect } from './http.connect';
10
11
  import { EventMessageType, MessageBuilder } from './message';
11
12
  import { Socket } from './socket';
12
- /**
13
- * The default configuration for connecting to a WS service.
14
- * @public
15
- */
16
- export const defaultConnectConfig = {
17
- connect: {
18
- alwaysOn: false,
19
- enableHeartbeat: true,
20
- enableHeartbeatLogging: false,
21
- heartbeatInterval: 10000,
22
- verboseHeartbeat: false,
23
- enableMessageLogging: false,
24
- },
25
- reconnect: {
26
- reconnectAttempts: 10,
27
- reconnectInterval: 10000,
28
- reconnectStreams: true,
29
- },
30
- };
13
+ import { updateState } from './updateState';
31
14
  /**
32
15
  * The default implementation for the Connect interface (WS-only).
33
16
  * @public
@@ -43,7 +26,7 @@ let DefaultConnect = class DefaultConnect {
43
26
  var _a;
44
27
  return (_a = this.socket.isConnectedSubject) === null || _a === void 0 ? void 0 : _a.asObservable();
45
28
  }
46
- constructor(socket, messageBuilder, metaCache, events, config = defaultConnectConfig) {
29
+ constructor(socket, messageBuilder, metaCache, events, config) {
47
30
  this.socket = socket;
48
31
  this.messageBuilder = messageBuilder;
49
32
  this.metaCache = metaCache;
@@ -66,7 +49,7 @@ let DefaultConnect = class DefaultConnect {
66
49
  connect(host) {
67
50
  return __awaiter(this, void 0, void 0, function* () {
68
51
  this.socket.reset();
69
- if (!isWebSocketExpression.test(host)) {
52
+ if (!this.config.isWebSocketExpression.test(host)) {
70
53
  logger.error(`Specified host (${host}) is not valid WebSocket url. Connection will not proceed.`);
71
54
  logger.warn(`Make sure the host url starts with wss:// or ws://`);
72
55
  return;
@@ -87,7 +70,10 @@ let DefaultConnect = class DefaultConnect {
87
70
  stream(resourceName, onMessage, onError, params) {
88
71
  const msg = this.messageBuilder.createDataLogonMessage(resourceName, params);
89
72
  logger.debug(`${msg.MESSAGE_TYPE} (stream) message created -> `, msg);
90
- const resource = this.socket.sendForStream(msg, onMessage, onError, () => {
73
+ const resource = this.socket.sendForStream(msg, onMessage, (error) => {
74
+ onError(error);
75
+ this.events.onStreamErrorEvent(resourceName, resource, error);
76
+ }, () => {
91
77
  this.events.onStreamCompleteEvent(resourceName, resource);
92
78
  });
93
79
  this.events.onStreamEvent(resourceName, msg, resource, {
@@ -96,10 +82,22 @@ let DefaultConnect = class DefaultConnect {
96
82
  });
97
83
  return resource;
98
84
  }
85
+ streamState(resourceName, onMessage = () => { }, onError = () => { }, params, initialState = []) {
86
+ return this.stream(resourceName, onMessage, onError, params).pipe(scan(updateState, initialState));
87
+ }
99
88
  streamWithoutAutoTeardown(resourceName, onMessage, onError, params) {
100
- const streamMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);
101
- logger.debug(`${streamMessage.MESSAGE_TYPE} (stream without auto-teardown) message created -> `, streamMessage);
102
- return this.socket.sendForStreamWithoutTeardown(streamMessage, onMessage, onError);
89
+ logger.deprecated('streamWithoutAutoTeardown', `Please use 'stream' api instead.`, '15.0.0');
90
+ const msg = this.messageBuilder.createDataLogonMessage(resourceName, params);
91
+ logger.debug(`${msg.MESSAGE_TYPE} (stream without auto-teardown) message created -> `, msg);
92
+ const resource = this.socket.sendForStreamWithoutTeardown(msg, onMessage, (error) => {
93
+ onError(error);
94
+ this.events.onStreamErrorEvent(resourceName, resource, error);
95
+ });
96
+ this.events.onStreamEvent(resourceName, msg, resource, {
97
+ onMessage,
98
+ onError,
99
+ });
100
+ return resource;
103
101
  }
104
102
  getMoreRows(sourceRef) {
105
103
  return __awaiter(this, void 0, void 0, function* () {
@@ -213,7 +211,7 @@ DefaultConnect = __decorate([
213
211
  __param(1, MessageBuilder),
214
212
  __param(2, MetaCache),
215
213
  __param(3, ConnectEventsEmitter),
216
- __param(4, optional(ConnectConfig))
214
+ __param(4, ConnectConfig)
217
215
  ], DefaultConnect);
218
216
  export { DefaultConnect };
219
217
  const useHttpConnect = FORCE_HTTP === 'true' || false;
@@ -1,11 +1,27 @@
1
1
  import { DI } from '@microsoft/fast-foundation';
2
+ import { isWebSocketExpression } from '../utils';
2
3
  /**
3
- * Configuration options for the Connect (WS) instance.
4
- * @internal
4
+ * The default configuration for connecting to a WS service.
5
+ * @public
5
6
  */
6
- export const ConnectConfig = DI.createInterface();
7
+ export const defaultConnectConfig = {
8
+ connect: {
9
+ alwaysOn: false,
10
+ enableHeartbeat: true,
11
+ enableHeartbeatLogging: false,
12
+ heartbeatInterval: 10000,
13
+ verboseHeartbeat: false,
14
+ enableMessageLogging: false,
15
+ },
16
+ reconnect: {
17
+ reconnectAttempts: 10,
18
+ reconnectInterval: 10000,
19
+ reconnectStreams: true,
20
+ },
21
+ isWebSocketExpression,
22
+ };
7
23
  /**
8
- * Configuration options for the Connect (HTTP) instance.
24
+ * Configuration options for the Connect (WS) instance.
9
25
  * @internal
10
26
  */
11
- export const HttpConnectConfig = DI.createInterface();
27
+ export const ConnectConfig = DI.createInterface((x) => x.instance(defaultConnectConfig));
@@ -1,31 +1,15 @@
1
1
  import { __awaiter, __decorate, __param } from "tslib";
2
- import { HTTP_CONFIG, JSONSerializer } from '@genesislcap/foundation-utils';
2
+ import { JSONSerializer } from '@genesislcap/foundation-utils';
3
3
  import { observable, volatile } from '@microsoft/fast-element';
4
- import { DI, optional } from '@microsoft/fast-foundation';
5
- import { BehaviorSubject, concat, finalize, from, interval, switchMap, takeWhile, } from 'rxjs';
4
+ import { DI } from '@microsoft/fast-foundation';
5
+ import { BehaviorSubject, concat, finalize, from, interval, scan, switchMap, takeWhile, } from 'rxjs';
6
6
  import { MetaCache } from '../metadata';
7
7
  import { Session } from '../session';
8
8
  import { logger } from '../utils';
9
- import { HttpConnectConfig } from './connect.types';
10
9
  import { Http } from './http';
10
+ import { HttpConnectConfig } from './http.connect.types';
11
11
  import { EventMessageType, MessageBuilder, MessageType, } from './message';
12
- /**
13
- * The default configuration for connecting to an HTTP service.
14
- * @public
15
- */
16
- export const defaultHttpConnectConfig = {
17
- polling: Object.assign({ POLLING_MAP: {
18
- EVENT_AMEND_USER: {
19
- TEMP_FREQUENCY: 500,
20
- AMOUNT_OF_POLLS: 5,
21
- QUERIES: ['ALL_USERS'],
22
- },
23
- }, POLLING_INTERVAL_MAP: {
24
- ALL_TRADES: 5000,
25
- ALL_USERS: 5000,
26
- ALL_PROCESSES_STATUS: 10000,
27
- }, POLLING_FREQUENCY: 5000 }, (HTTP_CONFIG && HTTP_CONFIG.length ? JSON.parse(HTTP_CONFIG) : {})),
28
- };
12
+ import { updateState } from './updateState';
29
13
  /**
30
14
  * The default implementation for the Connect interface (HTTP-only).
31
15
  * @public
@@ -38,7 +22,7 @@ let DefaultHttpConnect = class DefaultHttpConnect {
38
22
  this._isConnected = value;
39
23
  this.isConnectedSubject.next(this._isConnected);
40
24
  }
41
- constructor(http, messageBuilder, session, metaCache, serializer, config = defaultHttpConnectConfig) {
25
+ constructor(http, messageBuilder, session, metaCache, serializer, config) {
42
26
  var _a;
43
27
  this.http = http;
44
28
  this.messageBuilder = messageBuilder;
@@ -148,7 +132,11 @@ let DefaultHttpConnect = class DefaultHttpConnect {
148
132
  this.streams.get(SOURCE_REF).STREAM = stream;
149
133
  return stream;
150
134
  }
135
+ streamState(resourceName, onMessage = () => { }, onError = () => { }, params, initialState = []) {
136
+ return this.stream(resourceName, onMessage, onError, params).pipe(scan(updateState, initialState));
137
+ }
151
138
  streamWithoutAutoTeardown(resourceName, onMessage, onError, params) {
139
+ logger.deprecated('streamWithoutAutoTeardown', `Please use 'stream' api instead.`, '15.0.0');
152
140
  return this.stream(resourceName, onMessage, onError, params);
153
141
  }
154
142
  getMessage(message) {
@@ -314,7 +302,7 @@ DefaultHttpConnect = __decorate([
314
302
  __param(2, Session),
315
303
  __param(3, MetaCache),
316
304
  __param(4, JSONSerializer),
317
- __param(5, optional(HttpConnectConfig))
305
+ __param(5, HttpConnectConfig)
318
306
  ], DefaultHttpConnect);
319
307
  export { DefaultHttpConnect };
320
308
  /**
@@ -0,0 +1,24 @@
1
+ import { HTTP_CONFIG } from '@genesislcap/foundation-utils';
2
+ import { DI } from '@microsoft/fast-foundation';
3
+ /**
4
+ * The default configuration for connecting to an HTTP service.
5
+ * @public
6
+ */
7
+ export const defaultHttpConnectConfig = {
8
+ polling: Object.assign({ POLLING_MAP: {
9
+ EVENT_AMEND_USER: {
10
+ TEMP_FREQUENCY: 500,
11
+ AMOUNT_OF_POLLS: 5,
12
+ QUERIES: ['ALL_USERS'],
13
+ },
14
+ }, POLLING_INTERVAL_MAP: {
15
+ ALL_TRADES: 5000,
16
+ ALL_USERS: 5000,
17
+ ALL_PROCESSES_STATUS: 10000,
18
+ }, POLLING_FREQUENCY: 5000 }, (HTTP_CONFIG && HTTP_CONFIG.length ? JSON.parse(HTTP_CONFIG) : {})),
19
+ };
20
+ /**
21
+ * Configuration options for the Connect (HTTP) instance.
22
+ * @internal
23
+ */
24
+ export const HttpConnectConfig = DI.createInterface((x) => x.instance(defaultHttpConnectConfig));
@@ -7,4 +7,5 @@ export * from './message';
7
7
  export * from './serializers';
8
8
  export * from './socket.status';
9
9
  export * from './socket';
10
+ export * from './socket.types';
10
11
  export * from './reconnectStrategy';
@@ -67,12 +67,12 @@ export const messageOrThrow = (message) => {
67
67
  /**
68
68
  * Check if the message contains an error code.
69
69
  * @param message - The message object.
70
- * @param code - The error code.
70
+ * @param code - The error code. Either a {@link http-status-codes#StatusCodes | StatusCodes} number or an entire status code string.
71
71
  * @public
72
72
  */
73
73
  export const messageHasErrorCode = (message, code) => {
74
74
  return Array.isArray(message === null || message === void 0 ? void 0 : message.ERROR)
75
- ? message === null || message === void 0 ? void 0 : message.ERROR.some((error) => error.CODE === code)
75
+ ? message === null || message === void 0 ? void 0 : message.ERROR.some((error) => { var _a, _b; return ((_a = error.CODE) === null || _a === void 0 ? void 0 : _a.includes(`${code}`)) || ((_b = error.STATUS_CODE) === null || _b === void 0 ? void 0 : _b.includes(`${code}`)); })
76
76
  : false;
77
77
  };
78
78
  /**
@@ -248,6 +248,7 @@ let DefaultMessageBuilder = class DefaultMessageBuilder {
248
248
  SOURCE_REF: this.uuid.createId(),
249
249
  VERBOSE: verbose,
250
250
  DETAILS: {},
251
+ SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),
251
252
  };
252
253
  }
253
254
  };
@@ -1,7 +1,7 @@
1
1
  import { __awaiter, __decorate, __param } from "tslib";
2
2
  import { User } from '@genesislcap/foundation-user';
3
3
  import { JSONSerializer, UUID } from '@genesislcap/foundation-utils';
4
- import { observable } from '@microsoft/fast-element';
4
+ import { DOM, observable } from '@microsoft/fast-element';
5
5
  import { DI } from '@microsoft/fast-foundation';
6
6
  import { Observable, of, Subject, Subscription, takeUntil, throwError } from 'rxjs';
7
7
  import { filter, mergeMap, switchMap, takeWhile } from 'rxjs/operators';
@@ -291,6 +291,9 @@ let DefaultSocket = class DefaultSocket {
291
291
  }
292
292
  this.heartbeatIsEnabled =
293
293
  pong.MESSAGE_TYPE === MessageType.HEARTBEAT_PONG && pong.SOURCE_REF === ping.SOURCE_REF;
294
+ if (pong.IS_AUTHENTICATED !== undefined) {
295
+ this.hasValidSession = pong.IS_AUTHENTICATED;
296
+ }
294
297
  });
295
298
  if ((_b = (_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.enableHeartbeat) !== null && _b !== void 0 ? _b : this.heartbeatIsEnabled) {
296
299
  const intervalInMillisecocnds = (_d = (_c = this.connectOptions) === null || _c === void 0 ? void 0 : _c.heartbeatInterval) !== null && _d !== void 0 ? _d : this.heartbeatInterval;
@@ -394,7 +397,12 @@ let DefaultSocket = class DefaultSocket {
394
397
  const sendingMessageLog = `Sending Message (stream) for SourceRef: ${message.SOURCE_REF} | MessageType: ${message.MESSAGE_TYPE}`;
395
398
  this.logMessageTypeFlow(message.MESSAGE_TYPE, logger.info, sendingMessageLog);
396
399
  this.setMessageHandler(message, onMessage, onError, true);
397
- this.websocket.next(message);
400
+ /**
401
+ * We need to queue these outgoing messages to allow the consumers to subscribe in time. We should review the entire
402
+ * setup with late subscribers in mind, as we can't say when they will actually subscribe. The impact is grids and
403
+ * other components remaining stuck on Loading screens, as they miss the first `onMessage` reply.
404
+ */
405
+ DOM.queueUpdate(() => this.websocket.next(message));
398
406
  /**
399
407
  * @privateRemarks
400
408
  * Running the data logoff from here makes more sense given the network monitor actor is optionally added.
@@ -438,9 +446,6 @@ let DefaultSocket = class DefaultSocket {
438
446
  this.wsMessageHandlers.set(message.SOURCE_REF, new SocketMessageHandler(message, onMessage, onError, isSubscription));
439
447
  }
440
448
  sendDataLogoff(sourceRef) {
441
- if (this.user.isAnonymous) {
442
- return;
443
- }
444
449
  this.send(this.messageBuilder.createDataLogoffMessage(sourceRef), false);
445
450
  }
446
451
  removeMessageHandler(sourceRef) {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ export const updateState = (state, update) => {
2
+ if ((update === null || update === void 0 ? void 0 : update.ROW) && state && state.length > 0) {
3
+ update.ROW.forEach((row) => {
4
+ const eventData = row;
5
+ if (eventData && eventData.DETAILS) {
6
+ const ref = eventData.DETAILS.ROW_REF;
7
+ const type = eventData.DETAILS.OPERATION;
8
+ if (type === 'INSERT') {
9
+ if (!state.find((x) => { var _a; return ((_a = x.DETAILS) === null || _a === void 0 ? void 0 : _a.ROW_REF) === ref; })) {
10
+ state.unshift(eventData);
11
+ }
12
+ }
13
+ if (type === 'DELETE') {
14
+ state = state.filter((x) => { var _a, _b; return ((_a = row.DETAILS) === null || _a === void 0 ? void 0 : _a.ROW_REF) !== ((_b = x.DETAILS) === null || _b === void 0 ? void 0 : _b.ROW_REF); });
15
+ }
16
+ if (type === 'MODIFY') {
17
+ state = state.map((item) => { var _a; return ((_a = item.DETAILS) === null || _a === void 0 ? void 0 : _a.ROW_REF) === ref ? Object.assign(Object.assign({}, item), eventData) : item; });
18
+ }
19
+ }
20
+ });
21
+ }
22
+ else if (update && (!state || state.length === 0)) {
23
+ state = [...new Set(update.ROW)];
24
+ }
25
+ return state;
26
+ };
@@ -134,20 +134,16 @@ export class DefaultNetworkMonitor {
134
134
  lastUpdated = result.lastUpdated;
135
135
  lastMessage = result.lastMessage;
136
136
  timeout = result.timeout;
137
- attemptDataLogon =
138
- timeout ||
139
- (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.MESSAGE_TYPE) === MessageType.MSG_NACK ||
140
- messageHasErrorCode(lastMessage, StatusCodes.NOT_FOUND);
141
137
  }
142
138
  catch (e) {
143
139
  isConnected = false;
144
140
  lastUpdated = this.getNowTimestamp();
145
141
  lastError = e;
146
142
  lastMessage = (_a = e === null || e === void 0 ? void 0 : e.receivedMessage) !== null && _a !== void 0 ? _a : e;
147
- attemptDataLogon =
148
- (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.MESSAGE_TYPE) === MessageType.MSG_NACK ||
149
- messageHasErrorCode(lastMessage, StatusCodes.NOT_FOUND);
150
143
  }
144
+ attemptDataLogon =
145
+ (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.MESSAGE_TYPE) === MessageType.MSG_NACK ||
146
+ messageHasErrorCode(lastMessage, StatusCodes.NOT_FOUND);
151
147
  formattedTimestamp = this.getFormattedTimestamp(lastUpdated !== null && lastUpdated !== void 0 ? lastUpdated : this.getNowTimestamp());
152
148
  if (isConnected) {
153
149
  networkLogger.debug(`${name} is healthy at ${formattedTimestamp}`);
@@ -289,6 +285,20 @@ export class DefaultNetworkMonitor {
289
285
  return;
290
286
  }
291
287
  this.removeResource(stream);
288
+ }, ({ detail }) => {
289
+ var _a;
290
+ const { resourceName, stream, error } = detail;
291
+ const lastMessage = (_a = error.receivedMessage) !== null && _a !== void 0 ? _a : error;
292
+ let readableError = '';
293
+ if (messageHasErrorCode(lastMessage, StatusCodes.NOT_FOUND)) {
294
+ readableError = `Please check the resource is running.`;
295
+ }
296
+ else if (messageHasErrorCode(lastMessage, StatusCodes.FORBIDDEN)) {
297
+ readableError = `You are not authorised to access this resource, removing it from monitoring.`;
298
+ this.removeResource(stream);
299
+ }
300
+ networkLogger.error(`${resourceName} errored at ${this.getFormattedTimestamp(this.getNowTimestamp())}.`, readableError, error);
301
+ return;
292
302
  }));
293
303
  }
294
304
  if (this.config.genesisConnectEvents.includes('commit')) {
@@ -307,7 +317,7 @@ export class DefaultNetworkMonitor {
307
317
  * In such cases the stream / resource is never actually created, so the `onStreamEvent` is never fired.
308
318
  * Meta/init failures are only reported in console logs, however, might be a good idea to show those here.
309
319
  */
310
- networkLogger.error(`${resourceName} had an unrecoverable error at ${this.getFormattedTimestamp(this.getNowTimestamp())}`, `Please check the resource is running.`, error);
320
+ networkLogger.error(`${resourceName} had an unrecoverable error at ${this.getFormattedTimestamp(this.getNowTimestamp())}.`, `Please check the resource is running.`, error);
311
321
  return;
312
322
  }
313
323
  }));
@@ -47,6 +47,9 @@ export class ConnectMock {
47
47
  stream(resourceName, onMessage, onError, params) {
48
48
  return from(Promise.resolve(this.nextMessage));
49
49
  }
50
+ streamState(resourceName, onMessage, onError, params, initialState) {
51
+ return from(Promise.resolve(this.nextListState));
52
+ }
50
53
  streamWithoutAutoTeardown(resourceName, onMessage, onError, params) {
51
54
  return from(Promise.resolve(this.nextMessage));
52
55
  }
@@ -1,5 +1,5 @@
1
1
  import { BehaviorSubject, from } from 'rxjs';
2
- import { SocketSubject } from '../../../connect';
2
+ import { SocketSubject } from '../../../connect/socket';
3
3
  /**
4
4
  * @internal
5
5
  */