@genesislcap/foundation-auth 15.64.0 → 15.64.1-FUI-2629.6

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.
@@ -4,10 +4,13 @@ import type { ACK } from './ACK';
4
4
  */
5
5
  export interface Details {
6
6
  readonly SYSTEM: System;
7
- readonly HEARTBEAT_INTERVAL_SECS: number;
7
+ /**
8
+ * Server-configured heartbeat interval. `0` when the server doesn't configure one.
9
+ */
10
+ readonly HEARTBEAT_INTERVAL_SECONDS: number;
8
11
  readonly FAILED_LOGIN_ATTEMPTS: number;
9
12
  readonly REJECTED_LOGIN_ATTEMPTS: number;
10
- readonly LAST_LOGIN_DATETIME: number;
13
+ readonly LAST_LOGIN_DATE_TIME: number;
11
14
  readonly DAYS_TO_PASSWORD_EXPIRY: number;
12
15
  readonly PRODUCT: Product[];
13
16
  }
@@ -24,6 +27,17 @@ export interface Product {
24
27
  readonly NAME: string;
25
28
  readonly VERSION: string;
26
29
  }
30
+ /**
31
+ * Update-queue settings. Which fields are set depends on `UPDATE_QUEUE` (`ZeroMq` or `Aeron`).
32
+ * @public
33
+ */
34
+ export interface UpdateQueueDetails {
35
+ readonly UPDATE_QUEUE: string;
36
+ readonly ZERO_MQ_PROXY_MODE_ENABLED?: boolean;
37
+ readonly ZERO_MQ_PROXY_INBOUND_PORT?: number;
38
+ readonly ZERO_MQ_PROXY_OUTBOUND_PORT?: number;
39
+ readonly AERON_SERVICE_PORT?: number;
40
+ }
27
41
  /**
28
42
  * @public
29
43
  */
@@ -35,10 +49,10 @@ export interface EVENT_LOGIN_AUTH_ACK extends ACK {
35
49
  readonly REFRESH_AUTH_TOKEN: string;
36
50
  readonly SESSION_ID: string;
37
51
  readonly USER_NAME: string;
38
- readonly UPDATE_QUEUE: string;
39
- readonly ZERO_MQ_PROXY_MODE_ENABLED: boolean;
40
- readonly ZERO_MQ_PROXY_INBOUND_PORT: number;
41
- readonly ZERO_MQ_PROXY_OUTBOUND_PORT: number;
52
+ /**
53
+ * `null` when the server has no recognised update queue or hides these details.
54
+ */
55
+ readonly UPDATE_QUEUE_DETAILS?: UpdateQueueDetails | null;
42
56
  /**
43
57
  * @privateRemarks
44
58
  * This is not the actual "user", it is random JSON / key value pairs set by BE app devs.
@@ -1 +1 @@
1
- {"version":3,"file":"EVENT_LOGIN_AUTH_ACK.d.ts","sourceRoot":"","sources":["../../../src/dto/EVENT_LOGIN_AUTH_ACK.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,GAAG;IAC/C;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;IAC7C,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;CAC5B"}
1
+ {"version":3,"file":"EVENT_LOGIN_AUTH_ACK.d.ts","sourceRoot":"","sources":["../../../src/dto/EVENT_LOGIN_AUTH_ACK.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,GAAG;IAC/C;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1D;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;CAC5B"}
@@ -2,6 +2,7 @@ export { ACK } from './ACK';
2
2
  export { EVENT_CHANGE_USER_PASSWORD } from './EVENT_CHANGE_USER_PASSWORD';
3
3
  export { EVENT_LOGIN_AUTH } from './EVENT_LOGIN_AUTH';
4
4
  export { EVENT_LOGIN_AUTH_ACK } from './EVENT_LOGIN_AUTH_ACK';
5
+ export type { UpdateQueueDetails } from './EVENT_LOGIN_AUTH_ACK';
5
6
  export { EVENT_LOGIN_AUTH_NACK } from './EVENT_LOGIN_AUTH_NACK';
6
7
  export type { MFA_TYPE } from './EVENT_LOGIN_AUTH_NACK';
7
8
  export { EVENT_LOGIN_DETAILS_ACK } from './EVENT_LOGIN_DETAILS_ACK';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loginMapper.d.ts","sourceRoot":"","sources":["../../../src/mapper/loginMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,OAAO,EAAgB,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI3F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AASjC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;AAEtF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,oBAAoB,CAExE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,uBAAuB,CAElF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,qBAAqB,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,QAAQ,CAExE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,eAAe,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,SAAS,CAE1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;CAAG;AAErE;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAC9C,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IAE3B;;OAEG;IACH,QAAQ,GAAI,KAAK,QAAQ,KAAG,WAAW,CAwDrC;IAEF;;OAEG;IACH,KAAK,GAAI,QAAQ,WAAW,KAAG,QAAQ,CAiDrC;IAEF,SAAS,CAAC,aAAa,GAAI,QAAQ,SAAS,KAAG,YAAY,CACnB;IAExC,SAAS,CAAC,cAAc,GAAI,UAAU,UAAU,EAAE,KAAG,aAAa,EAAE,CAM3D;CACV;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,mEAA0E,CAAC"}
1
+ {"version":3,"file":"loginMapper.d.ts","sourceRoot":"","sources":["../../../src/mapper/loginMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,OAAO,EAAgB,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI3F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AASjC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;AAEtF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,oBAAoB,CAExE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,uBAAuB,CAElF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,qBAAqB,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,QAAQ,CAExE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,eAAe,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,SAAS,CAE1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;CAAG;AAErE;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAC9C,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IAE3B;;OAEG;IACH,QAAQ,GAAI,KAAK,QAAQ,KAAG,WAAW,CA2DrC;IAEF;;OAEG;IACH,KAAK,GAAI,QAAQ,WAAW,KAAG,QAAQ,CAiDrC;IAEF,SAAS,CAAC,aAAa,GAAI,QAAQ,SAAS,KAAG,YAAY,CACnB;IAExC,SAAS,CAAC,cAAc,GAAI,UAAU,UAAU,EAAE,KAAG,aAAa,EAAE,CAM3D;CACV;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,mEAA0E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loginMapper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loginMapper.test.d.ts","sourceRoot":"","sources":["../../../src/mapper/loginMapper.test.ts"],"names":[],"mappings":""}
@@ -68,13 +68,16 @@ export class DefaultLoginMapper {
68
68
  try {
69
69
  if (isLoginAckDTO(dto) || isLoginDetailsAckDTO(dto)) {
70
70
  const { DETAILS } = dto;
71
- const ack = Object.assign(Object.assign({}, fromDTOAck(dto)), { userName: dto.USER_NAME, updateQueue: dto.UPDATE_QUEUE, zeroMqProxyModeEnabled: dto.ZERO_MQ_PROXY_MODE_ENABLED, zeroMqProxyInboundPort: dto.ZERO_MQ_PROXY_INBOUND_PORT, zeroMqProxyOutboundPort: dto.ZERO_MQ_PROXY_OUTBOUND_PORT, userKVs: dto.USER, details: DETAILS
71
+ // GSF nests the update-queue settings under UPDATE_QUEUE_DETAILS (null when the server
72
+ // hides them).
73
+ const queue = dto.UPDATE_QUEUE_DETAILS;
74
+ const ack = Object.assign(Object.assign({}, fromDTOAck(dto)), { userName: dto.USER_NAME, updateQueue: queue === null || queue === void 0 ? void 0 : queue.UPDATE_QUEUE, zeroMqProxyModeEnabled: queue === null || queue === void 0 ? void 0 : queue.ZERO_MQ_PROXY_MODE_ENABLED, zeroMqProxyInboundPort: queue === null || queue === void 0 ? void 0 : queue.ZERO_MQ_PROXY_INBOUND_PORT, zeroMqProxyOutboundPort: queue === null || queue === void 0 ? void 0 : queue.ZERO_MQ_PROXY_OUTBOUND_PORT, userKVs: dto.USER, details: DETAILS
72
75
  ? {
73
76
  system: this.fromSystemDTO(DETAILS.SYSTEM),
74
- heartbeatIntervalSecs: DETAILS.HEARTBEAT_INTERVAL_SECS,
77
+ heartbeatIntervalSecs: DETAILS.HEARTBEAT_INTERVAL_SECONDS,
75
78
  failedLoginAttempts: DETAILS.FAILED_LOGIN_ATTEMPTS,
76
79
  rejectedLoginAttempts: DETAILS.REJECTED_LOGIN_ATTEMPTS,
77
- lastLoginDatetime: DETAILS.LAST_LOGIN_DATETIME,
80
+ lastLoginDatetime: DETAILS.LAST_LOGIN_DATE_TIME,
78
81
  daysToPasswordExpiry: DETAILS.DAYS_TO_PASSWORD_EXPIRY,
79
82
  product: this.fromProductDTO(DETAILS.PRODUCT),
80
83
  }
@@ -0,0 +1,84 @@
1
+ import { __rest } from "tslib";
2
+ import { assert, createLogicSuite } from '@genesislcap/foundation-testing';
3
+ import { DefaultLoginMapper } from './loginMapper';
4
+ const Suite = createLogicSuite('DefaultLoginMapper');
5
+ /**
6
+ * EVENT_LOGIN_AUTH_ACK recorded from the showcase's real GSF 8.15.x server (auth 8.15.5), copied from
7
+ * `packages/tooling/mock-server/test/conformance/recordings/showcase-real/http-login.json`
8
+ * (`steps[0].received[0].BODY`). Only PERMISSION/PROFILE are trimmed.
9
+ */
10
+ const recordedLoginAck = {
11
+ SESSION_AUTH_TOKEN: '<redacted>',
12
+ REFRESH_AUTH_TOKEN: '<redacted>',
13
+ SESSION_ID: '<redacted>',
14
+ USER_NAME: 'admin',
15
+ DETAILS: {
16
+ HEARTBEAT_INTERVAL_SECONDS: 30,
17
+ SESSION_TIMEOUT_MINS: 20,
18
+ REFRESH_TOKEN_EXPIRATION_MINS: 7200,
19
+ FAILED_LOGIN_ATTEMPTS: 0,
20
+ REJECTED_LOGIN_ATTEMPTS: 0,
21
+ LAST_LOGIN_DATE_TIME: 1790859942833,
22
+ DAYS_TO_PASSWORD_EXPIRY: 730,
23
+ NOTIFY_EXPIRY: null,
24
+ MFA_CODE: null,
25
+ MFA_CODE_EXPIRY_MINS: null,
26
+ SYSTEM: { DATE: 'Thu Oct 01 13:05:42 UTC 2026' },
27
+ PRODUCT: [
28
+ { NAME: 'genesis-notify', VERSION: '8.15.16' },
29
+ { NAME: 'auth', VERSION: '8.15.5' },
30
+ { NAME: 'reporting', VERSION: '8.15.3' },
31
+ { NAME: 'genesis', VERSION: '8.15.29' },
32
+ ],
33
+ },
34
+ PERMISSION: ['AMEND_PROFILE', 'AMEND_USER'],
35
+ PROFILE: ['USER_ADMIN'],
36
+ UPDATE_QUEUE_DETAILS: {
37
+ UPDATE_QUEUE: 'ZeroMq',
38
+ ZERO_MQ_PROXY_MODE_ENABLED: false,
39
+ ZERO_MQ_PROXY_INBOUND_PORT: 5001,
40
+ ZERO_MQ_PROXY_OUTBOUND_PORT: 5000,
41
+ AERON_SERVICE_PORT: null,
42
+ },
43
+ USER: null,
44
+ USER_DETAILS: { FIRST_NAME: 'admin', LAST_NAME: 'global' },
45
+ MESSAGE_TYPE: 'EVENT_LOGIN_AUTH_ACK',
46
+ SOURCE_REF: 'AUTO_20eadc83-501d-453b-a428-7b503c674e6e',
47
+ };
48
+ const toLoginAck = (dto) => new DefaultLoginMapper().toEntity(dto);
49
+ Suite('maps the recorded GSF login ack', () => {
50
+ const ack = toLoginAck(recordedLoginAck);
51
+ assert.is(ack.userName, 'admin');
52
+ assert.is(ack.details.heartbeatIntervalSecs, 30);
53
+ assert.is(ack.details.lastLoginDatetime, 1790859942833);
54
+ assert.is(ack.details.daysToPasswordExpiry, 730);
55
+ assert.is(ack.updateQueue, 'ZeroMq');
56
+ assert.is(ack.zeroMqProxyModeEnabled, false);
57
+ assert.is(ack.zeroMqProxyInboundPort, 5001);
58
+ assert.is(ack.zeroMqProxyOutboundPort, 5000);
59
+ });
60
+ Suite('maps the same fields on EVENT_LOGIN_DETAILS_ACK', () => {
61
+ const ack = toLoginAck(Object.assign(Object.assign({}, recordedLoginAck), { MESSAGE_TYPE: 'EVENT_LOGIN_DETAILS_ACK' }));
62
+ assert.is(ack.details.heartbeatIntervalSecs, 30);
63
+ assert.is(ack.details.lastLoginDatetime, 1790859942833);
64
+ assert.is(ack.updateQueue, 'ZeroMq');
65
+ });
66
+ Suite('leaves update-queue settings undefined when the server hides them', () => {
67
+ const ack = toLoginAck(Object.assign(Object.assign({}, recordedLoginAck), { UPDATE_QUEUE_DETAILS: null }));
68
+ assert.is(ack.updateQueue, undefined);
69
+ assert.is(ack.zeroMqProxyInboundPort, undefined);
70
+ });
71
+ Suite('ignores the legacy field names that GSF does not send', () => {
72
+ const { UPDATE_QUEUE_DETAILS } = recordedLoginAck, rest = __rest(recordedLoginAck, ["UPDATE_QUEUE_DETAILS"]);
73
+ const ack = toLoginAck(Object.assign(Object.assign({}, rest), { UPDATE_QUEUE: 'MOCK', ZERO_MQ_PROXY_MODE_ENABLED: true, ZERO_MQ_PROXY_INBOUND_PORT: 1, ZERO_MQ_PROXY_OUTBOUND_PORT: 2, DETAILS: {
74
+ SYSTEM: { DATE: '2026-10-01T13:05:42.000Z' },
75
+ HEARTBEAT_INTERVAL_SECS: 15,
76
+ LAST_LOGIN_DATETIME: 42,
77
+ PRODUCT: [],
78
+ } }));
79
+ assert.is(ack.details.heartbeatIntervalSecs, undefined);
80
+ assert.is(ack.details.lastLoginDatetime, undefined);
81
+ assert.is(ack.updateQueue, undefined);
82
+ assert.is(ack.zeroMqProxyInboundPort, undefined);
83
+ });
84
+ Suite.run();
@@ -9479,16 +9479,21 @@
9479
9479
  },
9480
9480
  {
9481
9481
  "kind": "PropertySignature",
9482
- "canonicalReference": "@genesislcap/foundation-auth!EVENT_LOGIN_AUTH_ACK#UPDATE_QUEUE:member",
9483
- "docComment": "",
9482
+ "canonicalReference": "@genesislcap/foundation-auth!EVENT_LOGIN_AUTH_ACK#UPDATE_QUEUE_DETAILS:member",
9483
+ "docComment": "/**\n * `null` when the server has no recognised update queue or hides these details.\n */\n",
9484
9484
  "excerptTokens": [
9485
9485
  {
9486
9486
  "kind": "Content",
9487
- "text": "readonly UPDATE_QUEUE: "
9487
+ "text": "readonly UPDATE_QUEUE_DETAILS?: "
9488
+ },
9489
+ {
9490
+ "kind": "Reference",
9491
+ "text": "UpdateQueueDetails",
9492
+ "canonicalReference": "@genesislcap/foundation-auth!UpdateQueueDetails:interface"
9488
9493
  },
9489
9494
  {
9490
9495
  "kind": "Content",
9491
- "text": "string"
9496
+ "text": " | null"
9492
9497
  },
9493
9498
  {
9494
9499
  "kind": "Content",
@@ -9496,12 +9501,12 @@
9496
9501
  }
9497
9502
  ],
9498
9503
  "isReadonly": true,
9499
- "isOptional": false,
9504
+ "isOptional": true,
9500
9505
  "releaseTag": "Public",
9501
- "name": "UPDATE_QUEUE",
9506
+ "name": "UPDATE_QUEUE_DETAILS",
9502
9507
  "propertyTypeTokenRange": {
9503
9508
  "startIndex": 1,
9504
- "endIndex": 2
9509
+ "endIndex": 3
9505
9510
  }
9506
9511
  },
9507
9512
  {
@@ -9557,87 +9562,6 @@
9557
9562
  "startIndex": 1,
9558
9563
  "endIndex": 2
9559
9564
  }
9560
- },
9561
- {
9562
- "kind": "PropertySignature",
9563
- "canonicalReference": "@genesislcap/foundation-auth!EVENT_LOGIN_AUTH_ACK#ZERO_MQ_PROXY_INBOUND_PORT:member",
9564
- "docComment": "",
9565
- "excerptTokens": [
9566
- {
9567
- "kind": "Content",
9568
- "text": "readonly ZERO_MQ_PROXY_INBOUND_PORT: "
9569
- },
9570
- {
9571
- "kind": "Content",
9572
- "text": "number"
9573
- },
9574
- {
9575
- "kind": "Content",
9576
- "text": ";"
9577
- }
9578
- ],
9579
- "isReadonly": true,
9580
- "isOptional": false,
9581
- "releaseTag": "Public",
9582
- "name": "ZERO_MQ_PROXY_INBOUND_PORT",
9583
- "propertyTypeTokenRange": {
9584
- "startIndex": 1,
9585
- "endIndex": 2
9586
- }
9587
- },
9588
- {
9589
- "kind": "PropertySignature",
9590
- "canonicalReference": "@genesislcap/foundation-auth!EVENT_LOGIN_AUTH_ACK#ZERO_MQ_PROXY_MODE_ENABLED:member",
9591
- "docComment": "",
9592
- "excerptTokens": [
9593
- {
9594
- "kind": "Content",
9595
- "text": "readonly ZERO_MQ_PROXY_MODE_ENABLED: "
9596
- },
9597
- {
9598
- "kind": "Content",
9599
- "text": "boolean"
9600
- },
9601
- {
9602
- "kind": "Content",
9603
- "text": ";"
9604
- }
9605
- ],
9606
- "isReadonly": true,
9607
- "isOptional": false,
9608
- "releaseTag": "Public",
9609
- "name": "ZERO_MQ_PROXY_MODE_ENABLED",
9610
- "propertyTypeTokenRange": {
9611
- "startIndex": 1,
9612
- "endIndex": 2
9613
- }
9614
- },
9615
- {
9616
- "kind": "PropertySignature",
9617
- "canonicalReference": "@genesislcap/foundation-auth!EVENT_LOGIN_AUTH_ACK#ZERO_MQ_PROXY_OUTBOUND_PORT:member",
9618
- "docComment": "",
9619
- "excerptTokens": [
9620
- {
9621
- "kind": "Content",
9622
- "text": "readonly ZERO_MQ_PROXY_OUTBOUND_PORT: "
9623
- },
9624
- {
9625
- "kind": "Content",
9626
- "text": "number"
9627
- },
9628
- {
9629
- "kind": "Content",
9630
- "text": ";"
9631
- }
9632
- ],
9633
- "isReadonly": true,
9634
- "isOptional": false,
9635
- "releaseTag": "Public",
9636
- "name": "ZERO_MQ_PROXY_OUTBOUND_PORT",
9637
- "propertyTypeTokenRange": {
9638
- "startIndex": 1,
9639
- "endIndex": 2
9640
- }
9641
9565
  }
9642
9566
  ],
9643
9567
  "extendsTokenRanges": [
@@ -14054,6 +13978,159 @@
14054
13978
  "startIndex": 1,
14055
13979
  "endIndex": 2
14056
13980
  }
13981
+ },
13982
+ {
13983
+ "kind": "Interface",
13984
+ "canonicalReference": "@genesislcap/foundation-auth!UpdateQueueDetails:interface",
13985
+ "docComment": "/**\n * Update-queue settings. Which fields are set depends on `UPDATE_QUEUE` (`ZeroMq` or `Aeron`).\n *\n * @public\n */\n",
13986
+ "excerptTokens": [
13987
+ {
13988
+ "kind": "Content",
13989
+ "text": "export interface UpdateQueueDetails "
13990
+ }
13991
+ ],
13992
+ "fileUrlPath": "src/dto/EVENT_LOGIN_AUTH_ACK.ts",
13993
+ "releaseTag": "Public",
13994
+ "name": "UpdateQueueDetails",
13995
+ "preserveMemberOrder": false,
13996
+ "members": [
13997
+ {
13998
+ "kind": "PropertySignature",
13999
+ "canonicalReference": "@genesislcap/foundation-auth!UpdateQueueDetails#AERON_SERVICE_PORT:member",
14000
+ "docComment": "",
14001
+ "excerptTokens": [
14002
+ {
14003
+ "kind": "Content",
14004
+ "text": "readonly AERON_SERVICE_PORT?: "
14005
+ },
14006
+ {
14007
+ "kind": "Content",
14008
+ "text": "number"
14009
+ },
14010
+ {
14011
+ "kind": "Content",
14012
+ "text": ";"
14013
+ }
14014
+ ],
14015
+ "isReadonly": true,
14016
+ "isOptional": true,
14017
+ "releaseTag": "Public",
14018
+ "name": "AERON_SERVICE_PORT",
14019
+ "propertyTypeTokenRange": {
14020
+ "startIndex": 1,
14021
+ "endIndex": 2
14022
+ }
14023
+ },
14024
+ {
14025
+ "kind": "PropertySignature",
14026
+ "canonicalReference": "@genesislcap/foundation-auth!UpdateQueueDetails#UPDATE_QUEUE:member",
14027
+ "docComment": "",
14028
+ "excerptTokens": [
14029
+ {
14030
+ "kind": "Content",
14031
+ "text": "readonly UPDATE_QUEUE: "
14032
+ },
14033
+ {
14034
+ "kind": "Content",
14035
+ "text": "string"
14036
+ },
14037
+ {
14038
+ "kind": "Content",
14039
+ "text": ";"
14040
+ }
14041
+ ],
14042
+ "isReadonly": true,
14043
+ "isOptional": false,
14044
+ "releaseTag": "Public",
14045
+ "name": "UPDATE_QUEUE",
14046
+ "propertyTypeTokenRange": {
14047
+ "startIndex": 1,
14048
+ "endIndex": 2
14049
+ }
14050
+ },
14051
+ {
14052
+ "kind": "PropertySignature",
14053
+ "canonicalReference": "@genesislcap/foundation-auth!UpdateQueueDetails#ZERO_MQ_PROXY_INBOUND_PORT:member",
14054
+ "docComment": "",
14055
+ "excerptTokens": [
14056
+ {
14057
+ "kind": "Content",
14058
+ "text": "readonly ZERO_MQ_PROXY_INBOUND_PORT?: "
14059
+ },
14060
+ {
14061
+ "kind": "Content",
14062
+ "text": "number"
14063
+ },
14064
+ {
14065
+ "kind": "Content",
14066
+ "text": ";"
14067
+ }
14068
+ ],
14069
+ "isReadonly": true,
14070
+ "isOptional": true,
14071
+ "releaseTag": "Public",
14072
+ "name": "ZERO_MQ_PROXY_INBOUND_PORT",
14073
+ "propertyTypeTokenRange": {
14074
+ "startIndex": 1,
14075
+ "endIndex": 2
14076
+ }
14077
+ },
14078
+ {
14079
+ "kind": "PropertySignature",
14080
+ "canonicalReference": "@genesislcap/foundation-auth!UpdateQueueDetails#ZERO_MQ_PROXY_MODE_ENABLED:member",
14081
+ "docComment": "",
14082
+ "excerptTokens": [
14083
+ {
14084
+ "kind": "Content",
14085
+ "text": "readonly ZERO_MQ_PROXY_MODE_ENABLED?: "
14086
+ },
14087
+ {
14088
+ "kind": "Content",
14089
+ "text": "boolean"
14090
+ },
14091
+ {
14092
+ "kind": "Content",
14093
+ "text": ";"
14094
+ }
14095
+ ],
14096
+ "isReadonly": true,
14097
+ "isOptional": true,
14098
+ "releaseTag": "Public",
14099
+ "name": "ZERO_MQ_PROXY_MODE_ENABLED",
14100
+ "propertyTypeTokenRange": {
14101
+ "startIndex": 1,
14102
+ "endIndex": 2
14103
+ }
14104
+ },
14105
+ {
14106
+ "kind": "PropertySignature",
14107
+ "canonicalReference": "@genesislcap/foundation-auth!UpdateQueueDetails#ZERO_MQ_PROXY_OUTBOUND_PORT:member",
14108
+ "docComment": "",
14109
+ "excerptTokens": [
14110
+ {
14111
+ "kind": "Content",
14112
+ "text": "readonly ZERO_MQ_PROXY_OUTBOUND_PORT?: "
14113
+ },
14114
+ {
14115
+ "kind": "Content",
14116
+ "text": "number"
14117
+ },
14118
+ {
14119
+ "kind": "Content",
14120
+ "text": ";"
14121
+ }
14122
+ ],
14123
+ "isReadonly": true,
14124
+ "isOptional": true,
14125
+ "releaseTag": "Public",
14126
+ "name": "ZERO_MQ_PROXY_OUTBOUND_PORT",
14127
+ "propertyTypeTokenRange": {
14128
+ "startIndex": 1,
14129
+ "endIndex": 2
14130
+ }
14131
+ }
14132
+ ],
14133
+ "extendsTokenRanges": []
14057
14134
  }
14058
14135
  ]
14059
14136
  }
@@ -1299,10 +1299,13 @@ export declare interface Details extends UserDetailsProperty {
1299
1299
  */
1300
1300
  declare interface Details_2 {
1301
1301
  readonly SYSTEM: System_2;
1302
- readonly HEARTBEAT_INTERVAL_SECS: number;
1302
+ /**
1303
+ * Server-configured heartbeat interval. `0` when the server doesn't configure one.
1304
+ */
1305
+ readonly HEARTBEAT_INTERVAL_SECONDS: number;
1303
1306
  readonly FAILED_LOGIN_ATTEMPTS: number;
1304
1307
  readonly REJECTED_LOGIN_ATTEMPTS: number;
1305
- readonly LAST_LOGIN_DATETIME: number;
1308
+ readonly LAST_LOGIN_DATE_TIME: number;
1306
1309
  readonly DAYS_TO_PASSWORD_EXPIRY: number;
1307
1310
  readonly PRODUCT: Product_2[];
1308
1311
  }
@@ -1351,10 +1354,10 @@ export declare interface EVENT_LOGIN_AUTH_ACK extends ACK {
1351
1354
  readonly REFRESH_AUTH_TOKEN: string;
1352
1355
  readonly SESSION_ID: string;
1353
1356
  readonly USER_NAME: string;
1354
- readonly UPDATE_QUEUE: string;
1355
- readonly ZERO_MQ_PROXY_MODE_ENABLED: boolean;
1356
- readonly ZERO_MQ_PROXY_INBOUND_PORT: number;
1357
- readonly ZERO_MQ_PROXY_OUTBOUND_PORT: number;
1357
+ /**
1358
+ * `null` when the server has no recognised update queue or hides these details.
1359
+ */
1360
+ readonly UPDATE_QUEUE_DETAILS?: UpdateQueueDetails | null;
1358
1361
  /**
1359
1362
  * @privateRemarks
1360
1363
  * This is not the actual "user", it is random JSON / key value pairs set by BE app devs.
@@ -2767,6 +2770,18 @@ export declare type TermsConditionsParams = {
2767
2770
  version: string;
2768
2771
  };
2769
2772
 
2773
+ /**
2774
+ * Update-queue settings. Which fields are set depends on `UPDATE_QUEUE` (`ZeroMq` or `Aeron`).
2775
+ * @public
2776
+ */
2777
+ export declare interface UpdateQueueDetails {
2778
+ readonly UPDATE_QUEUE: string;
2779
+ readonly ZERO_MQ_PROXY_MODE_ENABLED?: boolean;
2780
+ readonly ZERO_MQ_PROXY_INBOUND_PORT?: number;
2781
+ readonly ZERO_MQ_PROXY_OUTBOUND_PORT?: number;
2782
+ readonly AERON_SERVICE_PORT?: number;
2783
+ }
2784
+
2770
2785
  export { User }
2771
2786
 
2772
2787
  export { UserActionHistory }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/foundation-auth",
3
3
  "description": "Genesis Foundation Auth",
4
- "version": "15.64.0",
4
+ "version": "15.64.1-FUI-2629.6",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "main": "dist/esm/index.js",
7
7
  "types": "dist/foundation-auth.d.ts",
@@ -134,24 +134,24 @@
134
134
  }
135
135
  },
136
136
  "devDependencies": {
137
- "@genesislcap/foundation-testing": "15.64.0",
138
- "@genesislcap/genx": "15.64.0",
139
- "@genesislcap/ts-builder": "15.64.0",
140
- "@genesislcap/uvu-playwright-builder": "15.64.0",
141
- "@genesislcap/vite-builder": "15.64.0",
142
- "@genesislcap/webpack-builder": "15.64.0"
137
+ "@genesislcap/foundation-testing": "15.64.1-FUI-2629.6",
138
+ "@genesislcap/genx": "15.64.1-FUI-2629.6",
139
+ "@genesislcap/ts-builder": "15.64.1-FUI-2629.6",
140
+ "@genesislcap/uvu-playwright-builder": "15.64.1-FUI-2629.6",
141
+ "@genesislcap/vite-builder": "15.64.1-FUI-2629.6",
142
+ "@genesislcap/webpack-builder": "15.64.1-FUI-2629.6"
143
143
  },
144
144
  "dependencies": {
145
- "@genesislcap/foundation-comms": "15.64.0",
146
- "@genesislcap/foundation-events": "15.64.0",
147
- "@genesislcap/foundation-i18n": "15.64.0",
148
- "@genesislcap/foundation-logger": "15.64.0",
149
- "@genesislcap/foundation-state-machine": "15.64.0",
150
- "@genesislcap/foundation-store": "15.64.0",
151
- "@genesislcap/foundation-ui": "15.64.0",
152
- "@genesislcap/foundation-user": "15.64.0",
153
- "@genesislcap/foundation-utils": "15.64.0",
154
- "@genesislcap/foundation-zero": "15.64.0",
145
+ "@genesislcap/foundation-comms": "15.64.1-FUI-2629.6",
146
+ "@genesislcap/foundation-events": "15.64.1-FUI-2629.6",
147
+ "@genesislcap/foundation-i18n": "15.64.1-FUI-2629.6",
148
+ "@genesislcap/foundation-logger": "15.64.1-FUI-2629.6",
149
+ "@genesislcap/foundation-state-machine": "15.64.1-FUI-2629.6",
150
+ "@genesislcap/foundation-store": "15.64.1-FUI-2629.6",
151
+ "@genesislcap/foundation-ui": "15.64.1-FUI-2629.6",
152
+ "@genesislcap/foundation-user": "15.64.1-FUI-2629.6",
153
+ "@genesislcap/foundation-utils": "15.64.1-FUI-2629.6",
154
+ "@genesislcap/foundation-zero": "15.64.1-FUI-2629.6",
155
155
  "@microsoft/fast-components": "2.30.6",
156
156
  "@microsoft/fast-element": "1.14.0",
157
157
  "@microsoft/fast-foundation": "2.50.0",