grm-shared-library 1.1.189 → 1.1.190

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.
@@ -62,5 +62,12 @@ exports.KAFKA_TOPICS = {
62
62
  TRACKING_PROVIDER_HEALTH: 'tracking.provider.health.v1',
63
63
  TRACKING_DEVICE_UNMAPPED: 'tracking.device.unmapped.v1',
64
64
  TRACKING_INGESTION_ERROR: 'tracking.ingestion.error.v1',
65
+ // Organization response-unit lifecycle (producer: clarion-organization;
66
+ // consumer: clarion-response-tracking projection) — versioned.
67
+ ORG_RESPONSE_UNIT_CREATED: 'organization.response-unit.created.v1',
68
+ ORG_RESPONSE_UNIT_UPDATED: 'organization.response-unit.updated.v1',
69
+ ORG_RESPONSE_UNIT_DELETED: 'organization.response-unit.deleted.v1',
70
+ ORG_RESPONSE_UNIT_CONTROL_CENTRE_CHANGED: 'organization.response-unit.control-centre-changed.v1',
71
+ ORG_RESPONSE_UNIT_STATUS_CHANGED: 'organization.response-unit.status-changed.v1',
65
72
  };
66
73
  //# sourceMappingURL=topics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IACxB,OAAO;IACP,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM;IACN,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,MAAM;IACN,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,eAAe;IAC9B,WAAW;IACX,cAAc,EAAE,gBAAgB;IAChC,WAAW;IACX,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,0BAA0B,EAAE,4BAA4B;IACxD,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,2BAA2B,EAAE,6BAA6B;IAC1D,yCAAyC,EAAE,2CAA2C;IACtF,OAAO;IACP,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,OAAO;IACP,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW;IACX,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,iEAAiE;IACjE,iBAAiB,EAAE,oCAAoC;IACvD,eAAe,EAAE,kCAAkC;IACnD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;CAC1D,CAAC"}
1
+ {"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IACxB,OAAO;IACP,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM;IACN,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,MAAM;IACN,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,eAAe;IAC9B,WAAW;IACX,cAAc,EAAE,gBAAgB;IAChC,WAAW;IACX,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,0BAA0B,EAAE,4BAA4B;IACxD,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,2BAA2B,EAAE,6BAA6B;IAC1D,yCAAyC,EAAE,2CAA2C;IACtF,OAAO;IACP,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,OAAO;IACP,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW;IACX,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,iEAAiE;IACjE,iBAAiB,EAAE,oCAAoC;IACvD,eAAe,EAAE,kCAAkC;IACnD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wEAAwE;IACxE,+DAA+D;IAC/D,yBAAyB,EAAE,uCAAuC;IAClE,yBAAyB,EAAE,uCAAuC;IAClE,yBAAyB,EAAE,uCAAuC;IAClE,wCAAwC,EACpC,sDAAsD;IAC1D,gCAAgC,EAAE,8CAA8C;CACnF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TRACKING_SCHEMA_VERSION = exports.TRACKING_REALTIME_CHANNEL = exports.TRACKING_CONSUMER_GROUPS = exports.TRACKING_KAFKA_TOPICS = void 0;
3
+ exports.TRACKING_SCHEMA_VERSION = exports.TRACKING_REALTIME_CHANNEL = exports.TRACKING_CONSUMER_GROUPS = exports.ORG_RESPONSE_UNIT_TOPICS = exports.TRACKING_KAFKA_TOPICS = void 0;
4
4
  const topics_1 = require("../../../kafka/topics");
5
5
  /**
6
6
  * Grouped, typed view of the tracking Kafka topics. The canonical string values
@@ -18,6 +18,17 @@ exports.TRACKING_KAFKA_TOPICS = {
18
18
  DEVICE_UNMAPPED: topics_1.KAFKA_TOPICS.TRACKING_DEVICE_UNMAPPED,
19
19
  INGESTION_ERROR: topics_1.KAFKA_TOPICS.TRACKING_INGESTION_ERROR,
20
20
  };
21
+ /**
22
+ * Response-unit lifecycle topics. Producer: clarion-organization. Consumer:
23
+ * clarion-response-tracking projection. Single source of truth = {@link KAFKA_TOPICS}.
24
+ */
25
+ exports.ORG_RESPONSE_UNIT_TOPICS = {
26
+ CREATED: topics_1.KAFKA_TOPICS.ORG_RESPONSE_UNIT_CREATED,
27
+ UPDATED: topics_1.KAFKA_TOPICS.ORG_RESPONSE_UNIT_UPDATED,
28
+ DELETED: topics_1.KAFKA_TOPICS.ORG_RESPONSE_UNIT_DELETED,
29
+ CONTROL_CENTRE_CHANGED: topics_1.KAFKA_TOPICS.ORG_RESPONSE_UNIT_CONTROL_CENTRE_CHANGED,
30
+ STATUS_CHANGED: topics_1.KAFKA_TOPICS.ORG_RESPONSE_UNIT_STATUS_CHANGED,
31
+ };
21
32
  /**
22
33
  * Consumer group ids for tracking consumers. Distinct groups keep each concern's
23
34
  * offsets independent and let projector replicas share partitions safely.
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-kafka.const.js","sourceRoot":"","sources":["../../../../../src/modules/tracking/constants/tracking-kafka.const.ts"],"names":[],"mappings":";;;AAAA,kDAAqD;AAErD;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG;IACjC,QAAQ,EAAE,qBAAY,CAAC,iBAAiB;IACxC,MAAM,EAAE,qBAAY,CAAC,eAAe;IACpC,eAAe,EAAE,qBAAY,CAAC,wBAAwB;IACtD,eAAe,EAAE,qBAAY,CAAC,wBAAwB;IACtD,eAAe,EAAE,qBAAY,CAAC,wBAAwB;CAChD,CAAC;AAEX;;;GAGG;AACU,QAAA,wBAAwB,GAAG;IACpC,6EAA6E;IAC7E,SAAS,EAAE,sCAAsC;CAC3C,CAAC;AAEX;;;;GAIG;AACU,QAAA,yBAAyB,GAAG,mBAAmB,CAAC;AAE7D,iEAAiE;AACpD,QAAA,uBAAuB,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"tracking-kafka.const.js","sourceRoot":"","sources":["../../../../../src/modules/tracking/constants/tracking-kafka.const.ts"],"names":[],"mappings":";;;AAAA,kDAAqD;AAErD;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG;IACjC,QAAQ,EAAE,qBAAY,CAAC,iBAAiB;IACxC,MAAM,EAAE,qBAAY,CAAC,eAAe;IACpC,eAAe,EAAE,qBAAY,CAAC,wBAAwB;IACtD,eAAe,EAAE,qBAAY,CAAC,wBAAwB;IACtD,eAAe,EAAE,qBAAY,CAAC,wBAAwB;CAChD,CAAC;AAEX;;;GAGG;AACU,QAAA,wBAAwB,GAAG;IACpC,OAAO,EAAE,qBAAY,CAAC,yBAAyB;IAC/C,OAAO,EAAE,qBAAY,CAAC,yBAAyB;IAC/C,OAAO,EAAE,qBAAY,CAAC,yBAAyB;IAC/C,sBAAsB,EAAE,qBAAY,CAAC,wCAAwC;IAC7E,cAAc,EAAE,qBAAY,CAAC,gCAAgC;CACvD,CAAC;AAEX;;;GAGG;AACU,QAAA,wBAAwB,GAAG;IACpC,6EAA6E;IAC7E,SAAS,EAAE,sCAAsC;CAC3C,CAAC;AAEX;;;;GAIG;AACU,QAAA,yBAAyB,GAAG,mBAAmB,CAAC;AAE7D,iEAAiE;AACpD,QAAA,uBAAuB,GAAG,CAAU,CAAC"}
@@ -27,6 +27,7 @@ __exportStar(require("./interfaces/response-unit-status-event-v1"), exports);
27
27
  __exportStar(require("./interfaces/tracking-provider-health-event-v1"), exports);
28
28
  __exportStar(require("./interfaces/tracking-device-unmapped-event-v1"), exports);
29
29
  __exportStar(require("./interfaces/tracking-ingestion-error-event-v1"), exports);
30
+ __exportStar(require("./interfaces/response-unit-lifecycle-events"), exports);
30
31
  // Interfaces — projections & realtime delivery
31
32
  __exportStar(require("./interfaces/tracking-unit-current-state"), exports);
32
33
  __exportStar(require("./interfaces/tracking-socket-payloads"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/tracking/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,sEAAoD;AACpD,uEAAqD;AACrD,0EAAwD;AACxD,2EAAyD;AACzD,sEAAoD;AAEpD,+CAA+C;AAC/C,+EAA6D;AAC7D,+EAA6D;AAC7D,6EAA2D;AAC3D,iFAA+D;AAC/D,iFAA+D;AAC/D,iFAA+D;AAE/D,+CAA+C;AAC/C,2EAAyD;AACzD,wEAAsD;AACtD,0EAAwD;AAExD,YAAY;AACZ,mEAAiD;AAEjD,YAAY;AACZ,iEAA+C;AAC/C,mEAAiD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/tracking/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,sEAAoD;AACpD,uEAAqD;AACrD,0EAAwD;AACxD,2EAAyD;AACzD,sEAAoD;AAEpD,+CAA+C;AAC/C,+EAA6D;AAC7D,+EAA6D;AAC7D,6EAA2D;AAC3D,iFAA+D;AAC/D,iFAA+D;AAC/D,iFAA+D;AAC/D,8EAA4D;AAE5D,+CAA+C;AAC/C,2EAAyD;AACzD,wEAAsD;AACtD,0EAAwD;AAExD,YAAY;AACZ,mEAAiD;AAEjD,YAAY;AACZ,iEAA+C;AAC/C,mEAAiD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=response-unit-lifecycle-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-unit-lifecycle-events.js","sourceRoot":"","sources":["../../../../../src/modules/tracking/interfaces/response-unit-lifecycle-events.ts"],"names":[],"mappings":""}
@@ -59,5 +59,12 @@ export const KAFKA_TOPICS = {
59
59
  TRACKING_PROVIDER_HEALTH: 'tracking.provider.health.v1',
60
60
  TRACKING_DEVICE_UNMAPPED: 'tracking.device.unmapped.v1',
61
61
  TRACKING_INGESTION_ERROR: 'tracking.ingestion.error.v1',
62
+ // Organization response-unit lifecycle (producer: clarion-organization;
63
+ // consumer: clarion-response-tracking projection) — versioned.
64
+ ORG_RESPONSE_UNIT_CREATED: 'organization.response-unit.created.v1',
65
+ ORG_RESPONSE_UNIT_UPDATED: 'organization.response-unit.updated.v1',
66
+ ORG_RESPONSE_UNIT_DELETED: 'organization.response-unit.deleted.v1',
67
+ ORG_RESPONSE_UNIT_CONTROL_CENTRE_CHANGED: 'organization.response-unit.control-centre-changed.v1',
68
+ ORG_RESPONSE_UNIT_STATUS_CHANGED: 'organization.response-unit.status-changed.v1',
62
69
  };
63
70
  //# sourceMappingURL=topics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,OAAO;IACP,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM;IACN,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,MAAM;IACN,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,eAAe;IAC9B,WAAW;IACX,cAAc,EAAE,gBAAgB;IAChC,WAAW;IACX,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,0BAA0B,EAAE,4BAA4B;IACxD,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,2BAA2B,EAAE,6BAA6B;IAC1D,yCAAyC,EAAE,2CAA2C;IACtF,OAAO;IACP,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,OAAO;IACP,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW;IACX,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,iEAAiE;IACjE,iBAAiB,EAAE,oCAAoC;IACvD,eAAe,EAAE,kCAAkC;IACnD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;CAC1D,CAAC"}
1
+ {"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,OAAO;IACP,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM;IACN,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,MAAM;IACN,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,eAAe;IAC9B,WAAW;IACX,cAAc,EAAE,gBAAgB;IAChC,WAAW;IACX,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,0BAA0B,EAAE,4BAA4B;IACxD,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,2BAA2B,EAAE,6BAA6B;IAC1D,yCAAyC,EAAE,2CAA2C;IACtF,OAAO;IACP,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,OAAO;IACP,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW;IACX,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,iEAAiE;IACjE,iBAAiB,EAAE,oCAAoC;IACvD,eAAe,EAAE,kCAAkC;IACnD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wEAAwE;IACxE,+DAA+D;IAC/D,yBAAyB,EAAE,uCAAuC;IAClE,yBAAyB,EAAE,uCAAuC;IAClE,yBAAyB,EAAE,uCAAuC;IAClE,wCAAwC,EACpC,sDAAsD;IAC1D,gCAAgC,EAAE,8CAA8C;CACnF,CAAC"}
@@ -15,6 +15,17 @@ export const TRACKING_KAFKA_TOPICS = {
15
15
  DEVICE_UNMAPPED: KAFKA_TOPICS.TRACKING_DEVICE_UNMAPPED,
16
16
  INGESTION_ERROR: KAFKA_TOPICS.TRACKING_INGESTION_ERROR,
17
17
  };
18
+ /**
19
+ * Response-unit lifecycle topics. Producer: clarion-organization. Consumer:
20
+ * clarion-response-tracking projection. Single source of truth = {@link KAFKA_TOPICS}.
21
+ */
22
+ export const ORG_RESPONSE_UNIT_TOPICS = {
23
+ CREATED: KAFKA_TOPICS.ORG_RESPONSE_UNIT_CREATED,
24
+ UPDATED: KAFKA_TOPICS.ORG_RESPONSE_UNIT_UPDATED,
25
+ DELETED: KAFKA_TOPICS.ORG_RESPONSE_UNIT_DELETED,
26
+ CONTROL_CENTRE_CHANGED: KAFKA_TOPICS.ORG_RESPONSE_UNIT_CONTROL_CENTRE_CHANGED,
27
+ STATUS_CHANGED: KAFKA_TOPICS.ORG_RESPONSE_UNIT_STATUS_CHANGED,
28
+ };
18
29
  /**
19
30
  * Consumer group ids for tracking consumers. Distinct groups keep each concern's
20
31
  * offsets independent and let projector replicas share partitions safely.
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-kafka.const.js","sourceRoot":"","sources":["../../../../../src/modules/tracking/constants/tracking-kafka.const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,QAAQ,EAAE,YAAY,CAAC,iBAAiB;IACxC,MAAM,EAAE,YAAY,CAAC,eAAe;IACpC,eAAe,EAAE,YAAY,CAAC,wBAAwB;IACtD,eAAe,EAAE,YAAY,CAAC,wBAAwB;IACtD,eAAe,EAAE,YAAY,CAAC,wBAAwB;CAChD,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,6EAA6E;IAC7E,SAAS,EAAE,sCAAsC;CAC3C,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAE7D,iEAAiE;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"tracking-kafka.const.js","sourceRoot":"","sources":["../../../../../src/modules/tracking/constants/tracking-kafka.const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,QAAQ,EAAE,YAAY,CAAC,iBAAiB;IACxC,MAAM,EAAE,YAAY,CAAC,eAAe;IACpC,eAAe,EAAE,YAAY,CAAC,wBAAwB;IACtD,eAAe,EAAE,YAAY,CAAC,wBAAwB;IACtD,eAAe,EAAE,YAAY,CAAC,wBAAwB;CAChD,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,OAAO,EAAE,YAAY,CAAC,yBAAyB;IAC/C,OAAO,EAAE,YAAY,CAAC,yBAAyB;IAC/C,OAAO,EAAE,YAAY,CAAC,yBAAyB;IAC/C,sBAAsB,EAAE,YAAY,CAAC,wCAAwC;IAC7E,cAAc,EAAE,YAAY,CAAC,gCAAgC;CACvD,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,6EAA6E;IAC7E,SAAS,EAAE,sCAAsC;CAC3C,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAE7D,iEAAiE;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAU,CAAC"}
@@ -11,6 +11,7 @@ export * from './interfaces/response-unit-status-event-v1';
11
11
  export * from './interfaces/tracking-provider-health-event-v1';
12
12
  export * from './interfaces/tracking-device-unmapped-event-v1';
13
13
  export * from './interfaces/tracking-ingestion-error-event-v1';
14
+ export * from './interfaces/response-unit-lifecycle-events';
14
15
  // Interfaces — projections & realtime delivery
15
16
  export * from './interfaces/tracking-unit-current-state';
16
17
  export * from './interfaces/tracking-socket-payloads';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/tracking/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AAEpD,+CAA+C;AAC/C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC;AAE/D,+CAA+C;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AAExD,YAAY;AACZ,cAAc,kCAAkC,CAAC;AAEjD,YAAY;AACZ,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/tracking/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AAEpD,+CAA+C;AAC/C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,6CAA6C,CAAC;AAE5D,+CAA+C;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AAExD,YAAY;AACZ,cAAc,kCAAkC,CAAC;AAEjD,YAAY;AACZ,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=response-unit-lifecycle-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-unit-lifecycle-events.js","sourceRoot":"","sources":["../../../../../src/modules/tracking/interfaces/response-unit-lifecycle-events.ts"],"names":[],"mappings":""}
@@ -48,4 +48,9 @@ export declare const KAFKA_TOPICS: {
48
48
  TRACKING_PROVIDER_HEALTH: string;
49
49
  TRACKING_DEVICE_UNMAPPED: string;
50
50
  TRACKING_INGESTION_ERROR: string;
51
+ ORG_RESPONSE_UNIT_CREATED: string;
52
+ ORG_RESPONSE_UNIT_UPDATED: string;
53
+ ORG_RESPONSE_UNIT_DELETED: string;
54
+ ORG_RESPONSE_UNIT_CONTROL_CENTRE_CHANGED: string;
55
+ ORG_RESPONSE_UNIT_STATUS_CHANGED: string;
51
56
  };
@@ -14,6 +14,17 @@ export declare const TRACKING_KAFKA_TOPICS: {
14
14
  readonly DEVICE_UNMAPPED: string;
15
15
  readonly INGESTION_ERROR: string;
16
16
  };
17
+ /**
18
+ * Response-unit lifecycle topics. Producer: clarion-organization. Consumer:
19
+ * clarion-response-tracking projection. Single source of truth = {@link KAFKA_TOPICS}.
20
+ */
21
+ export declare const ORG_RESPONSE_UNIT_TOPICS: {
22
+ readonly CREATED: string;
23
+ readonly UPDATED: string;
24
+ readonly DELETED: string;
25
+ readonly CONTROL_CENTRE_CHANGED: string;
26
+ readonly STATUS_CHANGED: string;
27
+ };
17
28
  /**
18
29
  * Consumer group ids for tracking consumers. Distinct groups keep each concern's
19
30
  * offsets independent and let projector replicas share partitions safely.
@@ -9,6 +9,7 @@ export * from './interfaces/response-unit-status-event-v1';
9
9
  export * from './interfaces/tracking-provider-health-event-v1';
10
10
  export * from './interfaces/tracking-device-unmapped-event-v1';
11
11
  export * from './interfaces/tracking-ingestion-error-event-v1';
12
+ export * from './interfaces/response-unit-lifecycle-events';
12
13
  export * from './interfaces/tracking-unit-current-state';
13
14
  export * from './interfaces/tracking-socket-payloads';
14
15
  export * from './interfaces/tracking-realtime-envelope';
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Response-unit lifecycle events published by clarion-organization (source of
3
+ * truth) and consumed by clarion-response-tracking to keep its local read
4
+ * projection in sync. Versioned (schema v1), provider-neutral, and free of
5
+ * provider/tracking-specific data.
6
+ *
7
+ * `sourceUpdatedAt` is the authoritative "when the change happened upstream"
8
+ * timestamp used by the consumer for idempotent, monotonic (older-event-reject)
9
+ * projection updates. `occurredAt` is when the event itself was produced.
10
+ */
11
+ export interface ResponseUnitLifecycleEventBase {
12
+ schemaVersion: 1;
13
+ /** Stable/deterministic id per the producer's convention (dedup + audit). */
14
+ eventId: string;
15
+ responseUnitId: number;
16
+ organizationId: number;
17
+ controlCentreId: number | null;
18
+ /** ISO 8601 UTC — upstream change time (ordering key for the projection). */
19
+ sourceUpdatedAt: string;
20
+ /** ISO 8601 UTC — when this event was produced. */
21
+ occurredAt: string;
22
+ correlationId?: string;
23
+ }
24
+ /** Descriptive response-unit fields carried by create/update/status events. */
25
+ export interface ResponseUnitDescriptor {
26
+ name?: string | null;
27
+ registrationNumber?: string | null;
28
+ responseUnitType?: string | null;
29
+ operationalStatus?: string | null;
30
+ enabled?: boolean;
31
+ }
32
+ export interface ResponseUnitCreatedEventV1 extends ResponseUnitLifecycleEventBase, ResponseUnitDescriptor {
33
+ }
34
+ export interface ResponseUnitUpdatedEventV1 extends ResponseUnitLifecycleEventBase, ResponseUnitDescriptor {
35
+ }
36
+ export interface ResponseUnitStatusChangedEventV1 extends ResponseUnitLifecycleEventBase, ResponseUnitDescriptor {
37
+ /** Whether the unit is enabled after the change (explicit for status events). */
38
+ enabled: boolean;
39
+ }
40
+ export interface ResponseUnitControlCentreChangedEventV1 extends ResponseUnitLifecycleEventBase, ResponseUnitDescriptor {
41
+ /** The control centre the unit moved FROM (null if it had none). */
42
+ previousControlCentreId: number | null;
43
+ }
44
+ export interface ResponseUnitDeletedEventV1 extends ResponseUnitLifecycleEventBase {
45
+ deleted: true;
46
+ }
47
+ /** Union of all response-unit lifecycle events. */
48
+ export type ResponseUnitLifecycleEventV1 = ResponseUnitCreatedEventV1 | ResponseUnitUpdatedEventV1 | ResponseUnitStatusChangedEventV1 | ResponseUnitControlCentreChangedEventV1 | ResponseUnitDeletedEventV1;
package/package.json CHANGED
@@ -1,70 +1,70 @@
1
- {
2
- "name": "grm-shared-library",
3
- "version": "1.1.189",
4
- "main": "dist/cjs/index.js",
5
- "module": "dist/esm/index.js",
6
- "types": "dist/types/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/types/index.d.ts",
10
- "import": "./dist/esm/index.js",
11
- "require": "./dist/cjs/index.js"
12
- },
13
- "./dist/modules/*": {
14
- "types": "./dist/types/modules/*.d.ts",
15
- "import": "./dist/esm/modules/*.js",
16
- "require": "./dist/cjs/modules/*.js"
17
- }
18
- },
19
- "files": [
20
- "dist/**/*"
21
- ],
22
- "scripts": {
23
- "clean": "rimraf dist dist-test",
24
- "build:cjs": "tsc -p tsconfig.cjs.json",
25
- "build:esm": "tsc -p tsconfig.esm.json",
26
- "build:types": "tsc -p tsconfig.types.json",
27
- "build": "npm run clean && npm run build:types && npm run build:cjs && npm run build:esm",
28
- "prepublishOnly": "npm run build",
29
- "pretest": "rimraf dist-test",
30
- "test": "tsc -p tsconfig.spec.json && node --test \"dist-test/**/*.spec.js\""
31
- },
32
- "keywords": [],
33
- "author": "",
34
- "license": "ISC",
35
- "description": "",
36
- "publishConfig": {
37
- "access": "public"
38
- },
39
- "devDependencies": {
40
- "@types/express": "^5.0.3",
41
- "@types/geojson": "^7946.0.14",
42
- "@types/node": "^22.10.5",
43
- "rimraf": "^5.0.5",
44
- "typescript": "^5.7.3"
45
- },
46
- "dependencies": {
47
- "@nestjs/common": "^11.0.0",
48
- "@nestjs/core": "^11.0.0",
49
- "@nestjs/mapped-types": "^2.0.6",
50
- "@nestjs/microservices": "^11.0.0",
51
- "@nestjs/swagger": "^11.2.0",
52
- "@sentry/node": "^8.0.0",
53
- "class-transformer": "^0.5.0",
54
- "class-validator": "^0.14.0",
55
- "express": "^5.1.0",
56
- "geojson": "^0.5.0",
57
- "grm-shared-library": "^1.1.101",
58
- "libphonenumber-js": "^1.13.8",
59
- "rxjs": "^7.8.2",
60
- "swagger-ui-express": "^5.0.1"
61
- },
62
- "peerDependencies": {
63
- "@nestjs/common": "^11.0.0",
64
- "@nestjs/core": "^11.0.0",
65
- "@nestjs/microservices": "^11.0.0",
66
- "@sentry/node": "^8.0.0",
67
- "class-transformer": "^0.5.0",
68
- "class-validator": "^0.14.0"
69
- }
70
- }
1
+ {
2
+ "name": "grm-shared-library",
3
+ "version": "1.1.190",
4
+ "main": "dist/cjs/index.js",
5
+ "module": "dist/esm/index.js",
6
+ "types": "dist/types/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/types/index.d.ts",
10
+ "import": "./dist/esm/index.js",
11
+ "require": "./dist/cjs/index.js"
12
+ },
13
+ "./dist/modules/*": {
14
+ "types": "./dist/types/modules/*.d.ts",
15
+ "import": "./dist/esm/modules/*.js",
16
+ "require": "./dist/cjs/modules/*.js"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist/**/*"
21
+ ],
22
+ "scripts": {
23
+ "clean": "rimraf dist dist-test",
24
+ "build:cjs": "tsc -p tsconfig.cjs.json",
25
+ "build:esm": "tsc -p tsconfig.esm.json",
26
+ "build:types": "tsc -p tsconfig.types.json",
27
+ "build": "npm run clean && npm run build:types && npm run build:cjs && npm run build:esm",
28
+ "prepublishOnly": "npm run build",
29
+ "pretest": "rimraf dist-test",
30
+ "test": "tsc -p tsconfig.spec.json && node --test \"dist-test/**/*.spec.js\""
31
+ },
32
+ "keywords": [],
33
+ "author": "",
34
+ "license": "ISC",
35
+ "description": "",
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "devDependencies": {
40
+ "@types/express": "^5.0.3",
41
+ "@types/geojson": "^7946.0.14",
42
+ "@types/node": "^22.10.5",
43
+ "rimraf": "^5.0.5",
44
+ "typescript": "^5.7.3"
45
+ },
46
+ "dependencies": {
47
+ "@nestjs/common": "^11.0.0",
48
+ "@nestjs/core": "^11.0.0",
49
+ "@nestjs/mapped-types": "^2.0.6",
50
+ "@nestjs/microservices": "^11.0.0",
51
+ "@nestjs/swagger": "^11.2.0",
52
+ "@sentry/node": "^8.0.0",
53
+ "class-transformer": "^0.5.0",
54
+ "class-validator": "^0.14.0",
55
+ "express": "^5.1.0",
56
+ "geojson": "^0.5.0",
57
+ "grm-shared-library": "^1.1.101",
58
+ "libphonenumber-js": "^1.13.8",
59
+ "rxjs": "^7.8.2",
60
+ "swagger-ui-express": "^5.0.1"
61
+ },
62
+ "peerDependencies": {
63
+ "@nestjs/common": "^11.0.0",
64
+ "@nestjs/core": "^11.0.0",
65
+ "@nestjs/microservices": "^11.0.0",
66
+ "@sentry/node": "^8.0.0",
67
+ "class-transformer": "^0.5.0",
68
+ "class-validator": "^0.14.0"
69
+ }
70
+ }