@genesislcap/foundation-comms 14.306.1 → 14.306.2-alpha-9324131.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 (38) hide show
  1. package/dist/dts/auth/auth.d.ts +19 -2
  2. package/dist/dts/auth/auth.d.ts.map +1 -1
  3. package/dist/dts/connect/connect.d.ts +14 -2
  4. package/dist/dts/connect/connect.d.ts.map +1 -1
  5. package/dist/dts/connect/message.d.ts +1 -0
  6. package/dist/dts/connect/message.d.ts.map +1 -1
  7. package/dist/dts/connect/socket.d.ts +6 -11
  8. package/dist/dts/connect/socket.d.ts.map +1 -1
  9. package/dist/dts/metadata/metadata.types.d.ts +1 -0
  10. package/dist/dts/metadata/metadata.types.d.ts.map +1 -1
  11. package/dist/dts/testing/mocks/connect/connect.d.ts +1 -0
  12. package/dist/dts/testing/mocks/connect/connect.d.ts.map +1 -1
  13. package/dist/dts/testing/mocks/connect/socket.d.ts +5 -2
  14. package/dist/dts/testing/mocks/connect/socket.d.ts.map +1 -1
  15. package/dist/esm/auth/auth.js +91 -5
  16. package/dist/esm/connect/connect.js +21 -4
  17. package/dist/esm/connect/socket.js +15 -86
  18. package/dist/esm/testing/mocks/connect/connect.js +2 -1
  19. package/dist/esm/testing/mocks/connect/socket.js +8 -1
  20. package/dist/foundation-comms.api.json +257 -2
  21. package/dist/foundation-comms.d.ts +52 -23
  22. package/docs/api/foundation-comms.connect.md +21 -0
  23. package/docs/api/foundation-comms.connect.sessionexpired_.md +13 -0
  24. package/docs/api/foundation-comms.defaultauth._constructor_.md +15 -1
  25. package/docs/api/foundation-comms.defaultauth.md +20 -1
  26. package/docs/api/foundation-comms.defaultauth.reauth_action_lock_key.md +11 -0
  27. package/docs/api/foundation-comms.defaultconnect._constructor_.md +15 -1
  28. package/docs/api/foundation-comms.defaultconnect.md +41 -1
  29. package/docs/api/foundation-comms.defaultconnect.sessionexpired_.md +13 -0
  30. package/docs/api/foundation-comms.defaultconnect.user.md +11 -0
  31. package/docs/api/foundation-comms.defaultsocket.md +12 -0
  32. package/docs/api/foundation-comms.defaultsocket.updatesessionandsubscriptions.md +50 -0
  33. package/docs/api/foundation-comms.messagedetails.loggedinsysteminfo.md +1 -0
  34. package/docs/api/foundation-comms.rawdataserverresult.md +1 -0
  35. package/docs/api/foundation-comms.socket.md +11 -0
  36. package/docs/api/foundation-comms.socket.updatesessionandsubscriptions.md +52 -0
  37. package/docs/api-report.md.api.md +32 -13
  38. package/package.json +13 -13
@@ -1,7 +1,5 @@
1
- var DefaultSocket_1;
2
1
  import { __awaiter, __decorate, __param } from "tslib";
3
2
  import { User } from '@genesislcap/foundation-user';
4
- import { LOGIN_DETAILS_URL, LOGIN_URL } from '@genesislcap/foundation-utils';
5
3
  import { GENESIS_SOCKET_URL, JSONSerializer, UUID } from '@genesislcap/foundation-utils';
6
4
  import { DOM, observable } from '@microsoft/fast-element';
7
5
  import { DI } from '@microsoft/fast-foundation';
@@ -85,7 +83,7 @@ export class SocketMessageHandler {
85
83
  * Default Socket implementation.
86
84
  * @public
87
85
  */
88
- let DefaultSocket = DefaultSocket_1 = class DefaultSocket {
86
+ let DefaultSocket = class DefaultSocket {
89
87
  get isConfigured() {
90
88
  return this.status.isConfigured;
91
89
  }
@@ -203,6 +201,14 @@ let DefaultSocket = DefaultSocket_1 = class DefaultSocket {
203
201
  switch (receivedMessage.MESSAGE_TYPE) {
204
202
  case EventMessageType.EVENT_LOGIN_AUTH_ACK: {
205
203
  const systemDetails = receivedMessage.DETAILS;
204
+ const MINUTES_TO_MILLISECONDS = 60 * 1000;
205
+ const timeoutMs = systemDetails.SESSION_TIMEOUT_MINS * MINUTES_TO_MILLISECONDS;
206
+ setTimeout(() => {
207
+ var _a;
208
+ const heartbeatPing = this.messageBuilder.createHeartbeatPingMessage((_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.verboseHeartbeat);
209
+ this.websocket.next(heartbeatPing);
210
+ logger.info(`Heartbeat ping sent after session timeout (${systemDetails.SESSION_TIMEOUT_MINS} mins)`);
211
+ }, timeoutMs);
206
212
  // Reconfigures the heartbeat with system details from the login response
207
213
  if (systemDetails.HEARTBEAT_INTERVAL_SECS &&
208
214
  ((_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.heartbeatInterval) === undefined) {
@@ -268,85 +274,14 @@ let DefaultSocket = DefaultSocket_1 = class DefaultSocket {
268
274
  this.status.isConfigured = true;
269
275
  });
270
276
  }
271
- /**
272
- *
273
- * @remarks
274
- * This is triggered after `sessionTimeoutMins` elapses and heartbeat would tell us that user is no longer authenticated
275
- * more info here https://docs.genesis.global/docs/develop/server-capabilities/access-control/authentication/#sessiontimeoutmins
276
- */
277
- handleExpiredSession() {
278
- return __awaiter(this, void 0, void 0, function* () {
279
- // to detect which auth method is used we check if refreshToken is present in session storage
280
- // it would not be available in cookies method as it's securely stored within cookie
281
- // and not accessible from the client
282
- if (this.session.getSessionStorageItem('refreshToken')) {
283
- const refreshTokenMessage = this.messageBuilder.createRefreshTokenMessage();
284
- const refreshTokenResult = yield this.send(refreshTokenMessage);
285
- this.session.setAuthResult(refreshTokenResult);
286
- this.updateSessionAndSubscriptions(refreshTokenResult);
287
- }
288
- else {
289
- yield this.handleCookieBasedReauth();
290
- }
291
- });
292
- }
293
- handleCookieBasedReauth() {
294
- return __awaiter(this, void 0, void 0, function* () {
295
- // checking for stale locks, so we don't block reauth forever
296
- const lockTimestamp = parseInt(localStorage.getItem(DefaultSocket_1.REAUTH_ACTION_LOCK_KEY) || '0');
297
- const LOCK_TIMEOUT_MS = 30000;
298
- if (Date.now() - lockTimestamp > LOCK_TIMEOUT_MS) {
299
- localStorage.removeItem(DefaultSocket_1.REAUTH_ACTION_LOCK_KEY);
300
- }
301
- // this is to prevent multiple tabs from trying to reauthenticate at the same time
302
- if (!localStorage.getItem(DefaultSocket_1.REAUTH_ACTION_LOCK_KEY)) {
303
- localStorage.setItem(DefaultSocket_1.REAUTH_ACTION_LOCK_KEY, Date.now().toString());
304
- // session might already be extended on another tab, so we first check if user is
305
- // authenticated and if it is we just reconnect as cookies are shared between tabs and
306
- // the browser uses latest one when establishing connection with ws
307
- const loginDetailsFetch = yield fetch(LOGIN_DETAILS_URL, { credentials: 'include' });
308
- const loginDetails = yield loginDetailsFetch.json();
309
- if (loginDetails.MESSAGE_TYPE !== 'EVENT_LOGIN_DETAILS_ACK') {
310
- const refreshLoginResponse = yield fetch(LOGIN_URL, {
311
- credentials: 'include',
312
- headers: { 'Content-type': 'application/json; charset=UTF-8' },
313
- method: 'POST',
314
- body: JSON.stringify({
315
- DETAILS: {},
316
- MESSAGE_TYPE: 'EVENT_LOGIN_AUTH',
317
- }),
318
- });
319
- // if the refresh login is not successful we need to reload the page to get back to the login page
320
- if (!refreshLoginResponse.ok) {
321
- window.location.reload();
322
- }
323
- }
324
- localStorage.removeItem(DefaultSocket_1.REAUTH_ACTION_LOCK_KEY);
325
- // connect again to a new stream to use new session token from obtained cookie
326
- yield this.connect();
327
- }
328
- else {
329
- // session is already being reauthenticated on another tab so we just wait when it finishes and reconnect
330
- window.addEventListener('storage', this.onStorageEvent.bind(this));
277
+ updateSessionAndSubscriptions(refreshTokenResult) {
278
+ this.wsMessageHandlers.forEach((mh) => {
279
+ if (mh.isSubscription) {
280
+ mh.sentMessage.SESSION_AUTH_TOKEN = refreshTokenResult;
281
+ this.websocket.next(mh.sentMessage);
331
282
  }
332
283
  });
333
284
  }
334
- onStorageEvent(event) {
335
- if (event.key === DefaultSocket_1.REAUTH_ACTION_LOCK_KEY && event.newValue === null) {
336
- this.connect();
337
- window.removeEventListener('storage', this.onStorageEvent);
338
- }
339
- }
340
- updateSessionAndSubscriptions(refreshTokenResult) {
341
- if ((refreshTokenResult === null || refreshTokenResult === void 0 ? void 0 : refreshTokenResult.MESSAGE_TYPE) === EventMessageType.EVENT_LOGIN_AUTH_ACK) {
342
- this.wsMessageHandlers.forEach((mh) => {
343
- if (mh.isSubscription) {
344
- mh.sentMessage.SESSION_AUTH_TOKEN = refreshTokenResult.SESSION_AUTH_TOKEN;
345
- this.websocket.next(mh.sentMessage);
346
- }
347
- });
348
- }
349
- }
350
285
  prepareHeartbeat() {
351
286
  var _a, _b, _c, _d;
352
287
  if (this.heartbeatTicker) {
@@ -361,11 +296,6 @@ let DefaultSocket = DefaultSocket_1 = class DefaultSocket {
361
296
  this.connectOptions.heartbeatPingCallback(ping);
362
297
  }
363
298
  const pong = yield this.send(ping);
364
- // when heartbeat runs before user logs in (connected to websocket but
365
- // not authenticated) we don't extend session as it doesn't exist yet
366
- if (this.user.isAuthenticated && !pong.IS_AUTHENTICATED) {
367
- this.handleExpiredSession();
368
- }
369
299
  if ((_c = this.connectOptions) === null || _c === void 0 ? void 0 : _c.heartbeatPongCallback) {
370
300
  this.connectOptions.heartbeatPongCallback(pong);
371
301
  }
@@ -552,7 +482,6 @@ let DefaultSocket = DefaultSocket_1 = class DefaultSocket {
552
482
  }
553
483
  }
554
484
  };
555
- DefaultSocket.REAUTH_ACTION_LOCK_KEY = 'reauthActionLock';
556
485
  __decorate([
557
486
  observable
558
487
  ], DefaultSocket.prototype, "websocket", void 0);
@@ -568,7 +497,7 @@ __decorate([
568
497
  __decorate([
569
498
  observable
570
499
  ], DefaultSocket.prototype, "heartbeatIsEnabled", void 0);
571
- DefaultSocket = DefaultSocket_1 = __decorate([
500
+ DefaultSocket = __decorate([
572
501
  __param(0, MessageBuilder),
573
502
  __param(1, Session),
574
503
  __param(2, JSONSerializer),
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { from } from 'rxjs';
2
+ import { BehaviorSubject, from } from 'rxjs';
3
3
  /**
4
4
  * @internal
5
5
  */
@@ -7,6 +7,7 @@ export class ConnectMock {
7
7
  constructor() {
8
8
  this.isConnected = true;
9
9
  this.isWorking = false;
10
+ this.sessionExpired$ = new BehaviorSubject(false);
10
11
  }
11
12
  get host() {
12
13
  return this.socket.host;
@@ -8,6 +8,7 @@ export class SocketMock {
8
8
  this.isConnectedSubject = new BehaviorSubject(true);
9
9
  this.host = 'mock-host';
10
10
  this.socketMessagesSubject = new SocketSubject();
11
+ this.sessionExpiredSubject = new SocketSubject();
11
12
  }
12
13
  connect(host, options, reconnectOptions) {
13
14
  this.host = host;
@@ -26,7 +27,13 @@ export class SocketMock {
26
27
  socketMessages() {
27
28
  return this.socketMessagesSubject;
28
29
  }
30
+ sessionExpired() {
31
+ return this.sessionExpiredSubject;
32
+ }
33
+ updateSessionAndSubscriptions(refreshToken) {
34
+ // mock: do nothing
35
+ }
29
36
  reset() {
30
- throw new Error('Method not implemented.');
37
+ // mock: do nothing
31
38
  }
32
39
  }
@@ -2108,6 +2108,38 @@
2108
2108
  ],
2109
2109
  "name": "request"
2110
2110
  },
2111
+ {
2112
+ "kind": "PropertySignature",
2113
+ "canonicalReference": "@genesislcap/foundation-comms!Connect#sessionExpired$:member",
2114
+ "docComment": "/**\n * Emits true when the session is detected as expired (e.g., IS_AUTHENTICATED is false in heartbeat pong). Consumers can subscribe to this to react to session expiration events.\n */\n",
2115
+ "excerptTokens": [
2116
+ {
2117
+ "kind": "Content",
2118
+ "text": "readonly sessionExpired$?: "
2119
+ },
2120
+ {
2121
+ "kind": "Reference",
2122
+ "text": "Subject",
2123
+ "canonicalReference": "rxjs!Subject:class"
2124
+ },
2125
+ {
2126
+ "kind": "Content",
2127
+ "text": "<boolean>"
2128
+ },
2129
+ {
2130
+ "kind": "Content",
2131
+ "text": ";"
2132
+ }
2133
+ ],
2134
+ "isReadonly": true,
2135
+ "isOptional": true,
2136
+ "releaseTag": "Public",
2137
+ "name": "sessionExpired$",
2138
+ "propertyTypeTokenRange": {
2139
+ "startIndex": 1,
2140
+ "endIndex": 3
2141
+ }
2142
+ },
2111
2143
  {
2112
2144
  "kind": "MethodSignature",
2113
2145
  "canonicalReference": "@genesislcap/foundation-comms!Connect#snapshot:member(1)",
@@ -10935,6 +10967,15 @@
10935
10967
  "text": "User",
10936
10968
  "canonicalReference": "@genesislcap/foundation-user!User:interface"
10937
10969
  },
10970
+ {
10971
+ "kind": "Content",
10972
+ "text": ", socket: "
10973
+ },
10974
+ {
10975
+ "kind": "Reference",
10976
+ "text": "Socket",
10977
+ "canonicalReference": "@genesislcap/foundation-comms!Socket:interface"
10978
+ },
10938
10979
  {
10939
10980
  "kind": "Content",
10940
10981
  "text": ");"
@@ -10983,6 +11024,14 @@
10983
11024
  "endIndex": 10
10984
11025
  },
10985
11026
  "isOptional": false
11027
+ },
11028
+ {
11029
+ "parameterName": "socket",
11030
+ "parameterTypeTokenRange": {
11031
+ "startIndex": 11,
11032
+ "endIndex": 12
11033
+ },
11034
+ "isOptional": false
10986
11035
  }
10987
11036
  ]
10988
11037
  },
@@ -11251,6 +11300,36 @@
11251
11300
  "isAbstract": false,
11252
11301
  "name": "logout"
11253
11302
  },
11303
+ {
11304
+ "kind": "Property",
11305
+ "canonicalReference": "@genesislcap/foundation-comms!DefaultAuth.REAUTH_ACTION_LOCK_KEY:member",
11306
+ "docComment": "",
11307
+ "excerptTokens": [
11308
+ {
11309
+ "kind": "Content",
11310
+ "text": "static REAUTH_ACTION_LOCK_KEY: "
11311
+ },
11312
+ {
11313
+ "kind": "Content",
11314
+ "text": "string"
11315
+ },
11316
+ {
11317
+ "kind": "Content",
11318
+ "text": ";"
11319
+ }
11320
+ ],
11321
+ "isReadonly": false,
11322
+ "isOptional": false,
11323
+ "releaseTag": "Public",
11324
+ "name": "REAUTH_ACTION_LOCK_KEY",
11325
+ "propertyTypeTokenRange": {
11326
+ "startIndex": 1,
11327
+ "endIndex": 2
11328
+ },
11329
+ "isStatic": true,
11330
+ "isProtected": false,
11331
+ "isAbstract": false
11332
+ },
11254
11333
  {
11255
11334
  "kind": "Method",
11256
11335
  "canonicalReference": "@genesislcap/foundation-comms!DefaultAuth#reAuthFromSession:member(1)",
@@ -11370,6 +11449,15 @@
11370
11449
  "text": "ConnectConfig",
11371
11450
  "canonicalReference": "@genesislcap/foundation-comms!ConnectConfig:interface"
11372
11451
  },
11452
+ {
11453
+ "kind": "Content",
11454
+ "text": ", user: "
11455
+ },
11456
+ {
11457
+ "kind": "Reference",
11458
+ "text": "User",
11459
+ "canonicalReference": "@genesislcap/foundation-user!User:interface"
11460
+ },
11373
11461
  {
11374
11462
  "kind": "Content",
11375
11463
  "text": ");"
@@ -11418,6 +11506,14 @@
11418
11506
  "endIndex": 10
11419
11507
  },
11420
11508
  "isOptional": false
11509
+ },
11510
+ {
11511
+ "parameterName": "user",
11512
+ "parameterTypeTokenRange": {
11513
+ "startIndex": 11,
11514
+ "endIndex": 12
11515
+ },
11516
+ "isOptional": false
11421
11517
  }
11422
11518
  ]
11423
11519
  },
@@ -12362,6 +12458,41 @@
12362
12458
  "isAbstract": false,
12363
12459
  "name": "send"
12364
12460
  },
12461
+ {
12462
+ "kind": "Property",
12463
+ "canonicalReference": "@genesislcap/foundation-comms!DefaultConnect#sessionExpired$:member",
12464
+ "docComment": "/**\n * Emits true when the session is detected as expired (e.g., IS_AUTHENTICATED is false in heartbeat pong). Consumers can subscribe to this to react to session expiration events.\n */\n",
12465
+ "excerptTokens": [
12466
+ {
12467
+ "kind": "Content",
12468
+ "text": "readonly sessionExpired$: "
12469
+ },
12470
+ {
12471
+ "kind": "Reference",
12472
+ "text": "BehaviorSubject",
12473
+ "canonicalReference": "rxjs!BehaviorSubject:class"
12474
+ },
12475
+ {
12476
+ "kind": "Content",
12477
+ "text": "<boolean>"
12478
+ },
12479
+ {
12480
+ "kind": "Content",
12481
+ "text": ";"
12482
+ }
12483
+ ],
12484
+ "isReadonly": true,
12485
+ "isOptional": false,
12486
+ "releaseTag": "Public",
12487
+ "name": "sessionExpired$",
12488
+ "propertyTypeTokenRange": {
12489
+ "startIndex": 1,
12490
+ "endIndex": 3
12491
+ },
12492
+ "isStatic": false,
12493
+ "isProtected": false,
12494
+ "isAbstract": false
12495
+ },
12365
12496
  {
12366
12497
  "kind": "Method",
12367
12498
  "canonicalReference": "@genesislcap/foundation-comms!DefaultConnect#setValidSession:member(1)",
@@ -12865,6 +12996,37 @@
12865
12996
  "isOptional": false,
12866
12997
  "isAbstract": false,
12867
12998
  "name": "streamWithoutAutoTeardown"
12999
+ },
13000
+ {
13001
+ "kind": "Property",
13002
+ "canonicalReference": "@genesislcap/foundation-comms!DefaultConnect#user:member",
13003
+ "docComment": "",
13004
+ "excerptTokens": [
13005
+ {
13006
+ "kind": "Content",
13007
+ "text": "protected user: "
13008
+ },
13009
+ {
13010
+ "kind": "Reference",
13011
+ "text": "User",
13012
+ "canonicalReference": "@genesislcap/foundation-user!User:interface"
13013
+ },
13014
+ {
13015
+ "kind": "Content",
13016
+ "text": ";"
13017
+ }
13018
+ ],
13019
+ "isReadonly": false,
13020
+ "isOptional": false,
13021
+ "releaseTag": "Public",
13022
+ "name": "user",
13023
+ "propertyTypeTokenRange": {
13024
+ "startIndex": 1,
13025
+ "endIndex": 2
13026
+ },
13027
+ "isStatic": false,
13028
+ "isProtected": true,
13029
+ "isAbstract": false
12868
13030
  }
12869
13031
  ],
12870
13032
  "implementsTokenRanges": [
@@ -23080,6 +23242,54 @@
23080
23242
  "isProtected": false,
23081
23243
  "isAbstract": false
23082
23244
  },
23245
+ {
23246
+ "kind": "Method",
23247
+ "canonicalReference": "@genesislcap/foundation-comms!DefaultSocket#updateSessionAndSubscriptions:member(1)",
23248
+ "docComment": "",
23249
+ "excerptTokens": [
23250
+ {
23251
+ "kind": "Content",
23252
+ "text": "updateSessionAndSubscriptions(refreshTokenResult: "
23253
+ },
23254
+ {
23255
+ "kind": "Content",
23256
+ "text": "string"
23257
+ },
23258
+ {
23259
+ "kind": "Content",
23260
+ "text": "): "
23261
+ },
23262
+ {
23263
+ "kind": "Content",
23264
+ "text": "void"
23265
+ },
23266
+ {
23267
+ "kind": "Content",
23268
+ "text": ";"
23269
+ }
23270
+ ],
23271
+ "isStatic": false,
23272
+ "returnTypeTokenRange": {
23273
+ "startIndex": 3,
23274
+ "endIndex": 4
23275
+ },
23276
+ "releaseTag": "Public",
23277
+ "isProtected": false,
23278
+ "overloadIndex": 1,
23279
+ "parameters": [
23280
+ {
23281
+ "parameterName": "refreshTokenResult",
23282
+ "parameterTypeTokenRange": {
23283
+ "startIndex": 1,
23284
+ "endIndex": 2
23285
+ },
23286
+ "isOptional": false
23287
+ }
23288
+ ],
23289
+ "isOptional": false,
23290
+ "isAbstract": false,
23291
+ "name": "updateSessionAndSubscriptions"
23292
+ },
23083
23293
  {
23084
23294
  "kind": "Property",
23085
23295
  "canonicalReference": "@genesislcap/foundation-comms!DefaultSocket#user:member",
@@ -29259,7 +29469,7 @@
29259
29469
  },
29260
29470
  {
29261
29471
  "kind": "Content",
29262
- "text": "{\n DAYS_TO_PASSWORD_EXPIRY: number;\n FAILED_LOGIN_ATTEMPTS: number;\n HEARTBEAT_INTERVAL_SECS: number;\n LAST_LOGIN_DATETIME: number;\n NOTIFY_EXPIRY?: boolean;\n PRODUCT?: any[];\n SYSTEM?: any;\n }"
29472
+ "text": "{\n DAYS_TO_PASSWORD_EXPIRY: number;\n FAILED_LOGIN_ATTEMPTS: number;\n HEARTBEAT_INTERVAL_SECS: number;\n LAST_LOGIN_DATETIME: number;\n NOTIFY_EXPIRY?: boolean;\n PRODUCT?: any[];\n SYSTEM?: any;\n SESSION_TIMEOUT_MINS?: number;\n }"
29263
29473
  },
29264
29474
  {
29265
29475
  "kind": "Content",
@@ -31577,7 +31787,7 @@
31577
31787
  },
31578
31788
  {
31579
31789
  "kind": "Content",
31580
- "text": "[];\n SOURCE_REF: string;\n MORE_ROWS: boolean;\n ROWS_COUNT: number;\n SEQUENCE_ID: number;\n}"
31790
+ "text": "[];\n SOURCE_REF: string;\n MORE_ROWS: boolean;\n ROWS_COUNT: number;\n SEQUENCE_ID: number;\n LOGGED_OUT: boolean;\n}"
31581
31791
  },
31582
31792
  {
31583
31793
  "kind": "Content",
@@ -34025,6 +34235,51 @@
34025
34235
  "overloadIndex": 1,
34026
34236
  "parameters": [],
34027
34237
  "name": "socketMessages"
34238
+ },
34239
+ {
34240
+ "kind": "MethodSignature",
34241
+ "canonicalReference": "@genesislcap/foundation-comms!Socket#updateSessionAndSubscriptions:member(1)",
34242
+ "docComment": "/**\n * Updates the session and subscriptions with the new session token.\n *\n * @param refreshTokenResult - The refresh token result.\n */\n",
34243
+ "excerptTokens": [
34244
+ {
34245
+ "kind": "Content",
34246
+ "text": "updateSessionAndSubscriptions(refreshToken: "
34247
+ },
34248
+ {
34249
+ "kind": "Content",
34250
+ "text": "string"
34251
+ },
34252
+ {
34253
+ "kind": "Content",
34254
+ "text": "): "
34255
+ },
34256
+ {
34257
+ "kind": "Content",
34258
+ "text": "void"
34259
+ },
34260
+ {
34261
+ "kind": "Content",
34262
+ "text": ";"
34263
+ }
34264
+ ],
34265
+ "isOptional": false,
34266
+ "returnTypeTokenRange": {
34267
+ "startIndex": 3,
34268
+ "endIndex": 4
34269
+ },
34270
+ "releaseTag": "Public",
34271
+ "overloadIndex": 1,
34272
+ "parameters": [
34273
+ {
34274
+ "parameterName": "refreshToken",
34275
+ "parameterTypeTokenRange": {
34276
+ "startIndex": 1,
34277
+ "endIndex": 2
34278
+ },
34279
+ "isOptional": false
34280
+ }
34281
+ ],
34282
+ "name": "updateSessionAndSubscriptions"
34028
34283
  }
34029
34284
  ],
34030
34285
  "extendsTokenRanges": [