grm-shared-library 1.1.220 → 1.1.222
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.
- package/README.md +17 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/kafka/topics.js +10 -1
- package/dist/cjs/kafka/topics.js.map +1 -1
- package/dist/cjs/modules/alert-dispatch/dtos/guardian-audience.dto.js +41 -0
- package/dist/cjs/modules/alert-dispatch/dtos/guardian-audience.dto.js.map +1 -0
- package/dist/cjs/modules/alert-dispatch/index.js +4 -0
- package/dist/cjs/modules/alert-dispatch/index.js.map +1 -1
- package/dist/cjs/modules/alert-dispatch/interfaces/guardian-audience.js +3 -0
- package/dist/cjs/modules/alert-dispatch/interfaces/guardian-audience.js.map +1 -0
- package/dist/cjs/modules/alert-dispatch/utils/guardian-audience.util.js +63 -0
- package/dist/cjs/modules/alert-dispatch/utils/guardian-audience.util.js.map +1 -0
- package/dist/cjs/modules/common/constants/service.const.js +1 -0
- package/dist/cjs/modules/common/constants/service.const.js.map +1 -1
- package/dist/cjs/modules/gis/dtos/private-trip.dto.js +180 -0
- package/dist/cjs/modules/gis/dtos/private-trip.dto.js.map +1 -0
- package/dist/cjs/modules/gis/enums/trip-privacy.enum.js +28 -0
- package/dist/cjs/modules/gis/enums/trip-privacy.enum.js.map +1 -0
- package/dist/cjs/modules/gis/index.js +3 -0
- package/dist/cjs/modules/gis/index.js.map +1 -1
- package/dist/cjs/modules/gis/interfaces/trip-summary.js +3 -0
- package/dist/cjs/modules/gis/interfaces/trip-summary.js.map +1 -0
- package/dist/cjs/modules/incident/dtos/incident/incident.dto.js +22 -0
- package/dist/cjs/modules/incident/dtos/incident/incident.dto.js.map +1 -1
- package/dist/cjs/modules/incident/enums/incident-origin-type.enum.js +17 -0
- package/dist/cjs/modules/incident/enums/incident-origin-type.enum.js.map +1 -0
- package/dist/cjs/modules/incident/index.js +1 -0
- package/dist/cjs/modules/incident/index.js.map +1 -1
- package/dist/cjs/modules/organization/index.js +1 -0
- package/dist/cjs/modules/organization/index.js.map +1 -1
- package/dist/cjs/modules/organization/interfaces/organization-created-event.js +3 -0
- package/dist/cjs/modules/organization/interfaces/organization-created-event.js.map +1 -0
- package/dist/cjs/modules/permission/data/permissions.data.js +12 -1
- package/dist/cjs/modules/permission/data/permissions.data.js.map +1 -1
- package/dist/cjs/modules/permission/enums/permission-actions.enum.js +28 -1
- package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
- package/dist/cjs/modules/permission/enums/permissions-module.enum.js +1 -0
- package/dist/cjs/modules/permission/enums/permissions-module.enum.js.map +1 -1
- package/dist/cjs/modules/role/constants/newsfeed-roles.js +28 -0
- package/dist/cjs/modules/role/constants/newsfeed-roles.js.map +1 -0
- package/dist/cjs/modules/role/constants/safety-roles.js +25 -0
- package/dist/cjs/modules/role/constants/safety-roles.js.map +1 -0
- package/dist/cjs/modules/role/data/roles.data.js +99 -7
- package/dist/cjs/modules/role/data/roles.data.js.map +1 -1
- package/dist/cjs/modules/role/index.js +2 -0
- package/dist/cjs/modules/role/index.js.map +1 -1
- package/dist/cjs/modules/safety/constants/safety-check-limits.const.js +51 -0
- package/dist/cjs/modules/safety/constants/safety-check-limits.const.js.map +1 -0
- package/dist/cjs/modules/safety/constants/safety-integration.const.js +71 -0
- package/dist/cjs/modules/safety/constants/safety-integration.const.js.map +1 -0
- package/dist/cjs/modules/safety/constants/safety-taxonomy.const.js +50 -0
- package/dist/cjs/modules/safety/constants/safety-taxonomy.const.js.map +1 -0
- package/dist/cjs/modules/safety/dtos/safety-admin.dto.js +232 -0
- package/dist/cjs/modules/safety/dtos/safety-admin.dto.js.map +1 -0
- package/dist/cjs/modules/safety/dtos/safety-check.dto.js +170 -0
- package/dist/cjs/modules/safety/dtos/safety-check.dto.js.map +1 -0
- package/dist/cjs/modules/safety/dtos/safety-internal.dto.js +162 -0
- package/dist/cjs/modules/safety/dtos/safety-internal.dto.js.map +1 -0
- package/dist/cjs/modules/safety/enums/safety-check-status.enum.js +45 -0
- package/dist/cjs/modules/safety/enums/safety-check-status.enum.js.map +1 -0
- package/dist/cjs/modules/safety/enums/safety-enums.js +93 -0
- package/dist/cjs/modules/safety/enums/safety-enums.js.map +1 -0
- package/dist/cjs/modules/safety/enums/safety-error-code.enum.js +27 -0
- package/dist/cjs/modules/safety/enums/safety-error-code.enum.js.map +1 -0
- package/dist/cjs/modules/safety/index.js +35 -0
- package/dist/cjs/modules/safety/index.js.map +1 -0
- package/dist/cjs/modules/safety/interfaces/safety-check-event.js +3 -0
- package/dist/cjs/modules/safety/interfaces/safety-check-event.js.map +1 -0
- package/dist/cjs/modules/safety/interfaces/safety-check.js +3 -0
- package/dist/cjs/modules/safety/interfaces/safety-check.js.map +1 -0
- package/dist/cjs/modules/safety/utils/safety-check-state-machine.js +75 -0
- package/dist/cjs/modules/safety/utils/safety-check-state-machine.js.map +1 -0
- package/dist/cjs/modules/safety/utils/safety-check-timing.util.js +68 -0
- package/dist/cjs/modules/safety/utils/safety-check-timing.util.js.map +1 -0
- package/dist/cjs/modules/sms/constants/sms-templates.config.js +12 -0
- package/dist/cjs/modules/sms/constants/sms-templates.config.js.map +1 -1
- package/dist/cjs/modules/sms/enums/sms-template.enum.js +2 -0
- package/dist/cjs/modules/sms/enums/sms-template.enum.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/kafka/topics.js +10 -1
- package/dist/esm/kafka/topics.js.map +1 -1
- package/dist/esm/modules/alert-dispatch/dtos/guardian-audience.dto.js +37 -0
- package/dist/esm/modules/alert-dispatch/dtos/guardian-audience.dto.js.map +1 -0
- package/dist/esm/modules/alert-dispatch/index.js +4 -0
- package/dist/esm/modules/alert-dispatch/index.js.map +1 -1
- package/dist/esm/modules/alert-dispatch/interfaces/guardian-audience.js +2 -0
- package/dist/esm/modules/alert-dispatch/interfaces/guardian-audience.js.map +1 -0
- package/dist/esm/modules/alert-dispatch/utils/guardian-audience.util.js +56 -0
- package/dist/esm/modules/alert-dispatch/utils/guardian-audience.util.js.map +1 -0
- package/dist/esm/modules/common/constants/service.const.js +1 -0
- package/dist/esm/modules/common/constants/service.const.js.map +1 -1
- package/dist/esm/modules/gis/dtos/private-trip.dto.js +171 -0
- package/dist/esm/modules/gis/dtos/private-trip.dto.js.map +1 -0
- package/dist/esm/modules/gis/enums/trip-privacy.enum.js +25 -0
- package/dist/esm/modules/gis/enums/trip-privacy.enum.js.map +1 -0
- package/dist/esm/modules/gis/index.js +3 -0
- package/dist/esm/modules/gis/index.js.map +1 -1
- package/dist/esm/modules/gis/interfaces/trip-summary.js +2 -0
- package/dist/esm/modules/gis/interfaces/trip-summary.js.map +1 -0
- package/dist/esm/modules/incident/dtos/incident/incident.dto.js +23 -1
- package/dist/esm/modules/incident/dtos/incident/incident.dto.js.map +1 -1
- package/dist/esm/modules/incident/enums/incident-origin-type.enum.js +14 -0
- package/dist/esm/modules/incident/enums/incident-origin-type.enum.js.map +1 -0
- package/dist/esm/modules/incident/index.js +1 -0
- package/dist/esm/modules/incident/index.js.map +1 -1
- package/dist/esm/modules/organization/index.js +1 -0
- package/dist/esm/modules/organization/index.js.map +1 -1
- package/dist/esm/modules/organization/interfaces/organization-created-event.js +2 -0
- package/dist/esm/modules/organization/interfaces/organization-created-event.js.map +1 -0
- package/dist/esm/modules/permission/data/permissions.data.js +12 -1
- package/dist/esm/modules/permission/data/permissions.data.js.map +1 -1
- package/dist/esm/modules/permission/enums/permission-actions.enum.js +28 -1
- package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
- package/dist/esm/modules/permission/enums/permissions-module.enum.js +1 -0
- package/dist/esm/modules/permission/enums/permissions-module.enum.js.map +1 -1
- package/dist/esm/modules/role/constants/newsfeed-roles.js +25 -0
- package/dist/esm/modules/role/constants/newsfeed-roles.js.map +1 -0
- package/dist/esm/modules/role/constants/safety-roles.js +22 -0
- package/dist/esm/modules/role/constants/safety-roles.js.map +1 -0
- package/dist/esm/modules/role/data/roles.data.js +99 -7
- package/dist/esm/modules/role/data/roles.data.js.map +1 -1
- package/dist/esm/modules/role/index.js +2 -0
- package/dist/esm/modules/role/index.js.map +1 -1
- package/dist/esm/modules/safety/constants/safety-check-limits.const.js +48 -0
- package/dist/esm/modules/safety/constants/safety-check-limits.const.js.map +1 -0
- package/dist/esm/modules/safety/constants/safety-integration.const.js +67 -0
- package/dist/esm/modules/safety/constants/safety-integration.const.js.map +1 -0
- package/dist/esm/modules/safety/constants/safety-taxonomy.const.js +45 -0
- package/dist/esm/modules/safety/constants/safety-taxonomy.const.js.map +1 -0
- package/dist/esm/modules/safety/dtos/safety-admin.dto.js +225 -0
- package/dist/esm/modules/safety/dtos/safety-admin.dto.js.map +1 -0
- package/dist/esm/modules/safety/dtos/safety-check.dto.js +161 -0
- package/dist/esm/modules/safety/dtos/safety-check.dto.js.map +1 -0
- package/dist/esm/modules/safety/dtos/safety-internal.dto.js +155 -0
- package/dist/esm/modules/safety/dtos/safety-internal.dto.js.map +1 -0
- package/dist/esm/modules/safety/enums/safety-check-status.enum.js +42 -0
- package/dist/esm/modules/safety/enums/safety-check-status.enum.js.map +1 -0
- package/dist/esm/modules/safety/enums/safety-enums.js +90 -0
- package/dist/esm/modules/safety/enums/safety-enums.js.map +1 -0
- package/dist/esm/modules/safety/enums/safety-error-code.enum.js +24 -0
- package/dist/esm/modules/safety/enums/safety-error-code.enum.js.map +1 -0
- package/dist/esm/modules/safety/index.js +19 -0
- package/dist/esm/modules/safety/index.js.map +1 -0
- package/dist/esm/modules/safety/interfaces/safety-check-event.js +2 -0
- package/dist/esm/modules/safety/interfaces/safety-check-event.js.map +1 -0
- package/dist/esm/modules/safety/interfaces/safety-check.js +2 -0
- package/dist/esm/modules/safety/interfaces/safety-check.js.map +1 -0
- package/dist/esm/modules/safety/utils/safety-check-state-machine.js +67 -0
- package/dist/esm/modules/safety/utils/safety-check-state-machine.js.map +1 -0
- package/dist/esm/modules/safety/utils/safety-check-timing.util.js +59 -0
- package/dist/esm/modules/safety/utils/safety-check-timing.util.js.map +1 -0
- package/dist/esm/modules/sms/constants/sms-templates.config.js +12 -0
- package/dist/esm/modules/sms/constants/sms-templates.config.js.map +1 -1
- package/dist/esm/modules/sms/enums/sms-template.enum.js +2 -0
- package/dist/esm/modules/sms/enums/sms-template.enum.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/kafka/topics.d.ts +4 -0
- package/dist/types/modules/alert-dispatch/dtos/guardian-audience.dto.d.ts +6 -0
- package/dist/types/modules/alert-dispatch/index.d.ts +3 -0
- package/dist/types/modules/alert-dispatch/interfaces/guardian-audience.d.ts +23 -0
- package/dist/types/modules/alert-dispatch/utils/guardian-audience.util.d.ts +18 -0
- package/dist/types/modules/common/constants/service.const.d.ts +4 -0
- package/dist/types/modules/gis/dtos/private-trip.dto.d.ts +42 -0
- package/dist/types/modules/gis/enums/trip-privacy.enum.d.ts +22 -0
- package/dist/types/modules/gis/index.d.ts +3 -0
- package/dist/types/modules/gis/interfaces/client-safe-trip.d.ts +8 -0
- package/dist/types/modules/gis/interfaces/trip-summary.d.ts +26 -0
- package/dist/types/modules/incident/dtos/incident/incident.dto.d.ts +14 -0
- package/dist/types/modules/incident/enums/incident-origin-type.enum.d.ts +12 -0
- package/dist/types/modules/incident/index.d.ts +1 -0
- package/dist/types/modules/incident/intefaces/incident-category.d.ts +10 -0
- package/dist/types/modules/incident/intefaces/incident-type.d.ts +10 -0
- package/dist/types/modules/incident/intefaces/incident.d.ts +14 -0
- package/dist/types/modules/organization/index.d.ts +1 -0
- package/dist/types/modules/organization/interfaces/organization-created-event.d.ts +18 -0
- package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +6 -0
- package/dist/types/modules/permission/enums/permissions-module.enum.d.ts +2 -1
- package/dist/types/modules/role/constants/newsfeed-roles.d.ts +16 -0
- package/dist/types/modules/role/constants/safety-roles.d.ts +14 -0
- package/dist/types/modules/role/index.d.ts +2 -0
- package/dist/types/modules/safety/constants/safety-check-limits.const.d.ts +47 -0
- package/dist/types/modules/safety/constants/safety-integration.const.d.ts +64 -0
- package/dist/types/modules/safety/constants/safety-taxonomy.const.d.ts +31 -0
- package/dist/types/modules/safety/dtos/safety-admin.dto.d.ts +39 -0
- package/dist/types/modules/safety/dtos/safety-check.dto.d.ts +38 -0
- package/dist/types/modules/safety/dtos/safety-internal.dto.d.ts +51 -0
- package/dist/types/modules/safety/enums/safety-check-status.enum.d.ts +40 -0
- package/dist/types/modules/safety/enums/safety-enums.d.ts +81 -0
- package/dist/types/modules/safety/enums/safety-error-code.enum.d.ts +22 -0
- package/dist/types/modules/safety/index.d.ts +13 -0
- package/dist/types/modules/safety/interfaces/safety-check-event.d.ts +36 -0
- package/dist/types/modules/safety/interfaces/safety-check.d.ts +180 -0
- package/dist/types/modules/safety/utils/safety-check-state-machine.d.ts +30 -0
- package/dist/types/modules/safety/utils/safety-check-timing.util.d.ts +37 -0
- package/dist/types/modules/sms/enums/sms-template.enum.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafetyCheckStatus = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Lifecycle of one Safety Check. clarion-safety is the only writer; every
|
|
6
|
+
* transition is validated against SAFETY_CHECK_TRANSITIONS
|
|
7
|
+
* (utils/safety-check-state-machine.ts) and applied as a conditional update, so
|
|
8
|
+
* two racing writers can never both win.
|
|
9
|
+
*
|
|
10
|
+
* CREATED accepted and persisted; tracking and the durable timer are
|
|
11
|
+
* still being set up. The user already counts as being in a
|
|
12
|
+
* check (the clock started when it was accepted).
|
|
13
|
+
* ACTIVE running; the user is expected to check in at
|
|
14
|
+
* scheduledCheckInAt.
|
|
15
|
+
* PROMPTING the check-in time has passed and the user is being asked to
|
|
16
|
+
* confirm they are safe. SOS is raised at promptDeadlineAt.
|
|
17
|
+
* CHECKED_IN the user confirmed they are safe. Terminal, successful.
|
|
18
|
+
* SOS_TRIGGERED an SOS was raised - the user missed the check-in or asked for
|
|
19
|
+
* one. Terminal for the check; the incident lives on in
|
|
20
|
+
* clarion-incident. `incidentId` is null until the incident
|
|
21
|
+
* has been created (clarion-safety keeps retrying).
|
|
22
|
+
* STOPPED the user ended the check before it completed. Terminal.
|
|
23
|
+
* EXPIRED the check-in window closed so long ago (a platform outage
|
|
24
|
+
* longer than SAFETY_CHECK_LIMITS.staleSosWindowMinutes) that
|
|
25
|
+
* raising an SOS now would be noise rather than help. Terminal;
|
|
26
|
+
* always an operational alarm.
|
|
27
|
+
* CANCELLED ended by the platform rather than the user (e.g. the account
|
|
28
|
+
* was signed out and the user chose to end it). Terminal.
|
|
29
|
+
* FAILED the SOS could not be raised because clarion-incident refused
|
|
30
|
+
* it outright (a non-retryable error). Terminal; the user is
|
|
31
|
+
* told to call for help and operators are alerted.
|
|
32
|
+
*/
|
|
33
|
+
var SafetyCheckStatus;
|
|
34
|
+
(function (SafetyCheckStatus) {
|
|
35
|
+
SafetyCheckStatus["CREATED"] = "CREATED";
|
|
36
|
+
SafetyCheckStatus["ACTIVE"] = "ACTIVE";
|
|
37
|
+
SafetyCheckStatus["PROMPTING"] = "PROMPTING";
|
|
38
|
+
SafetyCheckStatus["CHECKED_IN"] = "CHECKED_IN";
|
|
39
|
+
SafetyCheckStatus["SOS_TRIGGERED"] = "SOS_TRIGGERED";
|
|
40
|
+
SafetyCheckStatus["STOPPED"] = "STOPPED";
|
|
41
|
+
SafetyCheckStatus["EXPIRED"] = "EXPIRED";
|
|
42
|
+
SafetyCheckStatus["CANCELLED"] = "CANCELLED";
|
|
43
|
+
SafetyCheckStatus["FAILED"] = "FAILED";
|
|
44
|
+
})(SafetyCheckStatus || (exports.SafetyCheckStatus = SafetyCheckStatus = {}));
|
|
45
|
+
//# sourceMappingURL=safety-check-status.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-check-status.enum.js","sourceRoot":"","sources":["../../../../../src/modules/safety/enums/safety-check-status.enum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB,wCAAmB,CAAA;IACnB,sCAAiB,CAAA;IACjB,4CAAuB,CAAA;IACvB,8CAAyB,CAAA;IACzB,oDAA+B,CAAA;IAC/B,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;IACnB,4CAAuB,CAAA;IACvB,sCAAiB,CAAA;AACrB,CAAC,EAVW,iBAAiB,iCAAjB,iBAAiB,QAU5B"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafetyPushAction = exports.SafetyCheckEventType = exports.SafetyIncidentTypeCode = exports.SafetyIncidentCategoryCode = exports.SafetyFeature = exports.SafetyCheckAuditEventType = exports.SafetyCheckActorType = exports.SafetyCheckSosTrigger = void 0;
|
|
4
|
+
/** Why a Safety Check raised an SOS. */
|
|
5
|
+
var SafetyCheckSosTrigger;
|
|
6
|
+
(function (SafetyCheckSosTrigger) {
|
|
7
|
+
/** The prompt countdown ran out without the user confirming they were safe. */
|
|
8
|
+
SafetyCheckSosTrigger["MISSED_CHECK_IN"] = "MISSED_CHECK_IN";
|
|
9
|
+
/** The user pressed SOS from the Safety Check screen. */
|
|
10
|
+
SafetyCheckSosTrigger["USER_REQUESTED"] = "USER_REQUESTED";
|
|
11
|
+
})(SafetyCheckSosTrigger || (exports.SafetyCheckSosTrigger = SafetyCheckSosTrigger = {}));
|
|
12
|
+
/** Who caused a Safety Check transition - recorded on every audit entry. */
|
|
13
|
+
var SafetyCheckActorType;
|
|
14
|
+
(function (SafetyCheckActorType) {
|
|
15
|
+
SafetyCheckActorType["USER"] = "USER";
|
|
16
|
+
/** The durable timer in clarion-workflow-manager. */
|
|
17
|
+
SafetyCheckActorType["WORKFLOW"] = "WORKFLOW";
|
|
18
|
+
/** clarion-safety's backstop sweeper, acting on an overdue check. */
|
|
19
|
+
SafetyCheckActorType["RECONCILER"] = "RECONCILER";
|
|
20
|
+
SafetyCheckActorType["SYSTEM"] = "SYSTEM";
|
|
21
|
+
})(SafetyCheckActorType || (exports.SafetyCheckActorType = SafetyCheckActorType = {}));
|
|
22
|
+
/** Audit trail entries (safety_check_events.eventType). Never carries a location. */
|
|
23
|
+
var SafetyCheckAuditEventType;
|
|
24
|
+
(function (SafetyCheckAuditEventType) {
|
|
25
|
+
SafetyCheckAuditEventType["CREATED"] = "CREATED";
|
|
26
|
+
SafetyCheckAuditEventType["ACTIVATED"] = "ACTIVATED";
|
|
27
|
+
SafetyCheckAuditEventType["TRACKING_STARTED"] = "TRACKING_STARTED";
|
|
28
|
+
SafetyCheckAuditEventType["TRACKING_UNAVAILABLE"] = "TRACKING_UNAVAILABLE";
|
|
29
|
+
SafetyCheckAuditEventType["WORKFLOW_STARTED"] = "WORKFLOW_STARTED";
|
|
30
|
+
SafetyCheckAuditEventType["WORKFLOW_START_FAILED"] = "WORKFLOW_START_FAILED";
|
|
31
|
+
SafetyCheckAuditEventType["EXTENDED"] = "EXTENDED";
|
|
32
|
+
SafetyCheckAuditEventType["PROMPT_STARTED"] = "PROMPT_STARTED";
|
|
33
|
+
SafetyCheckAuditEventType["CHECKED_IN"] = "CHECKED_IN";
|
|
34
|
+
SafetyCheckAuditEventType["STOPPED"] = "STOPPED";
|
|
35
|
+
SafetyCheckAuditEventType["CANCELLED"] = "CANCELLED";
|
|
36
|
+
SafetyCheckAuditEventType["SOS_TRIGGERED"] = "SOS_TRIGGERED";
|
|
37
|
+
SafetyCheckAuditEventType["SOS_INCIDENT_CREATED"] = "SOS_INCIDENT_CREATED";
|
|
38
|
+
SafetyCheckAuditEventType["SOS_INCIDENT_RETRY"] = "SOS_INCIDENT_RETRY";
|
|
39
|
+
SafetyCheckAuditEventType["SOS_FAILED"] = "SOS_FAILED";
|
|
40
|
+
SafetyCheckAuditEventType["EXPIRED"] = "EXPIRED";
|
|
41
|
+
})(SafetyCheckAuditEventType || (exports.SafetyCheckAuditEventType = SafetyCheckAuditEventType = {}));
|
|
42
|
+
/**
|
|
43
|
+
* The safety features that can raise an incident. Phase 1 raises only
|
|
44
|
+
* SAFETY_CHECK; FOLLOW_ME exists because its incident type is provisioned for
|
|
45
|
+
* every organization from day one.
|
|
46
|
+
*/
|
|
47
|
+
var SafetyFeature;
|
|
48
|
+
(function (SafetyFeature) {
|
|
49
|
+
SafetyFeature["SAFETY_CHECK"] = "SAFETY_CHECK";
|
|
50
|
+
SafetyFeature["FOLLOW_ME"] = "FOLLOW_ME";
|
|
51
|
+
})(SafetyFeature || (exports.SafetyFeature = SafetyFeature = {}));
|
|
52
|
+
/** Stable code of the incident category every organization receives. */
|
|
53
|
+
var SafetyIncidentCategoryCode;
|
|
54
|
+
(function (SafetyIncidentCategoryCode) {
|
|
55
|
+
SafetyIncidentCategoryCode["SAFETY_ALERTS"] = "SAFETY_ALERTS";
|
|
56
|
+
})(SafetyIncidentCategoryCode || (exports.SafetyIncidentCategoryCode = SafetyIncidentCategoryCode = {}));
|
|
57
|
+
/** Stable codes of the incident types inside the Safety Alerts category. */
|
|
58
|
+
var SafetyIncidentTypeCode;
|
|
59
|
+
(function (SafetyIncidentTypeCode) {
|
|
60
|
+
SafetyIncidentTypeCode["SAFETY_CHECK_SOS"] = "SAFETY_CHECK_SOS";
|
|
61
|
+
SafetyIncidentTypeCode["FOLLOW_ME_SOS"] = "FOLLOW_ME_SOS";
|
|
62
|
+
})(SafetyIncidentTypeCode || (exports.SafetyIncidentTypeCode = SafetyIncidentTypeCode = {}));
|
|
63
|
+
/**
|
|
64
|
+
* Kafka event types published by clarion-safety (the `eventType` field of
|
|
65
|
+
* SafetyCheckEvent). One topic per type, see KAFKA_TOPICS.SAFETY_CHECK_*.
|
|
66
|
+
*/
|
|
67
|
+
var SafetyCheckEventType;
|
|
68
|
+
(function (SafetyCheckEventType) {
|
|
69
|
+
SafetyCheckEventType["STARTED"] = "SAFETY_CHECK_STARTED";
|
|
70
|
+
SafetyCheckEventType["PROMPTING"] = "SAFETY_CHECK_PROMPTING";
|
|
71
|
+
SafetyCheckEventType["ENDED"] = "SAFETY_CHECK_ENDED";
|
|
72
|
+
SafetyCheckEventType["SOS_TRIGGERED"] = "SAFETY_CHECK_SOS_TRIGGERED";
|
|
73
|
+
})(SafetyCheckEventType || (exports.SafetyCheckEventType = SafetyCheckEventType = {}));
|
|
74
|
+
/**
|
|
75
|
+
* Push `data.action` / `data.type` values the mobile app routes on. Sent by
|
|
76
|
+
* clarion-notification; the app allow-lists them in
|
|
77
|
+
* notification_deep_link_coordinator.dart. Changing a value is a breaking
|
|
78
|
+
* change to installed apps.
|
|
79
|
+
*/
|
|
80
|
+
var SafetyPushAction;
|
|
81
|
+
(function (SafetyPushAction) {
|
|
82
|
+
/** To the user: it is time to confirm you are safe. */
|
|
83
|
+
SafetyPushAction["SAFETY_CHECK_PROMPT"] = "SAFETY_CHECK_PROMPT";
|
|
84
|
+
/** To the user: an SOS was raised for your Safety Check. */
|
|
85
|
+
SafetyPushAction["SAFETY_CHECK_SOS_TRIGGERED"] = "SAFETY_CHECK_SOS_TRIGGERED";
|
|
86
|
+
/** To the user: the Safety Check ended without them (FAILED/EXPIRED/CANCELLED). */
|
|
87
|
+
SafetyPushAction["SAFETY_CHECK_ENDED"] = "SAFETY_CHECK_ENDED";
|
|
88
|
+
/** To a guardian: somebody who chose you started a Safety Check. */
|
|
89
|
+
SafetyPushAction["SAFETY_CHECK_GUARDIAN_STARTED"] = "SAFETY_CHECK_GUARDIAN_STARTED";
|
|
90
|
+
/** To a guardian: that Safety Check ended safely. */
|
|
91
|
+
SafetyPushAction["SAFETY_CHECK_GUARDIAN_ENDED"] = "SAFETY_CHECK_GUARDIAN_ENDED";
|
|
92
|
+
})(SafetyPushAction || (exports.SafetyPushAction = SafetyPushAction = {}));
|
|
93
|
+
//# sourceMappingURL=safety-enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-enums.js","sourceRoot":"","sources":["../../../../../src/modules/safety/enums/safety-enums.ts"],"names":[],"mappings":";;;AAAA,wCAAwC;AACxC,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC7B,+EAA+E;IAC/E,4DAAmC,CAAA;IACnC,yDAAyD;IACzD,0DAAiC,CAAA;AACrC,CAAC,EALW,qBAAqB,qCAArB,qBAAqB,QAKhC;AAED,4EAA4E;AAC5E,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC5B,qCAAa,CAAA;IACb,qDAAqD;IACrD,6CAAqB,CAAA;IACrB,qEAAqE;IACrE,iDAAyB,CAAA;IACzB,yCAAiB,CAAA;AACrB,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAED,qFAAqF;AACrF,IAAY,yBAiBX;AAjBD,WAAY,yBAAyB;IACjC,gDAAmB,CAAA;IACnB,oDAAuB,CAAA;IACvB,kEAAqC,CAAA;IACrC,0EAA6C,CAAA;IAC7C,kEAAqC,CAAA;IACrC,4EAA+C,CAAA;IAC/C,kDAAqB,CAAA;IACrB,8DAAiC,CAAA;IACjC,sDAAyB,CAAA;IACzB,gDAAmB,CAAA;IACnB,oDAAuB,CAAA;IACvB,4DAA+B,CAAA;IAC/B,0EAA6C,CAAA;IAC7C,sEAAyC,CAAA;IACzC,sDAAyB,CAAA;IACzB,gDAAmB,CAAA;AACvB,CAAC,EAjBW,yBAAyB,yCAAzB,yBAAyB,QAiBpC;AAED;;;;GAIG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,8CAA6B,CAAA;IAC7B,wCAAuB,CAAA;AAC3B,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAED,wEAAwE;AACxE,IAAY,0BAEX;AAFD,WAAY,0BAA0B;IAClC,6DAA+B,CAAA;AACnC,CAAC,EAFW,0BAA0B,0CAA1B,0BAA0B,QAErC;AAED,4EAA4E;AAC5E,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,+DAAqC,CAAA;IACrC,yDAA+B,CAAA;AACnC,CAAC,EAHW,sBAAsB,sCAAtB,sBAAsB,QAGjC;AAED;;;GAGG;AACH,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC5B,wDAAgC,CAAA;IAChC,4DAAoC,CAAA;IACpC,oDAA4B,CAAA;IAC5B,oEAA4C,CAAA;AAChD,CAAC,EALW,oBAAoB,oCAApB,oBAAoB,QAK/B;AAED;;;;;GAKG;AACH,IAAY,gBAWX;AAXD,WAAY,gBAAgB;IACxB,uDAAuD;IACvD,+DAA2C,CAAA;IAC3C,4DAA4D;IAC5D,6EAAyD,CAAA;IACzD,mFAAmF;IACnF,6DAAyC,CAAA;IACzC,oEAAoE;IACpE,mFAA+D,CAAA;IAC/D,qDAAqD;IACrD,+EAA2D,CAAA;AAC/D,CAAC,EAXW,gBAAgB,gCAAhB,gBAAgB,QAW3B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafetyCheckErrorCode = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Machine-readable `code` on every error clarion-safety returns, so the app can
|
|
6
|
+
* react (e.g. adopt the check a duplicate start collided with) without parsing
|
|
7
|
+
* the human message.
|
|
8
|
+
*/
|
|
9
|
+
var SafetyCheckErrorCode;
|
|
10
|
+
(function (SafetyCheckErrorCode) {
|
|
11
|
+
SafetyCheckErrorCode["NOT_FOUND"] = "SAFETY_CHECK_NOT_FOUND";
|
|
12
|
+
SafetyCheckErrorCode["ALREADY_ACTIVE"] = "SAFETY_CHECK_ALREADY_ACTIVE";
|
|
13
|
+
SafetyCheckErrorCode["ALREADY_ENDED"] = "SAFETY_CHECK_ENDED";
|
|
14
|
+
SafetyCheckErrorCode["SOS_ALREADY_TRIGGERED"] = "SAFETY_CHECK_SOS_ALREADY_TRIGGERED";
|
|
15
|
+
SafetyCheckErrorCode["INVALID_TRANSITION"] = "SAFETY_CHECK_INVALID_TRANSITION";
|
|
16
|
+
SafetyCheckErrorCode["INVALID_DURATION"] = "SAFETY_CHECK_INVALID_DURATION";
|
|
17
|
+
SafetyCheckErrorCode["MAX_DURATION_EXCEEDED"] = "SAFETY_CHECK_MAX_DURATION_EXCEEDED";
|
|
18
|
+
SafetyCheckErrorCode["INVALID_REASON"] = "SAFETY_CHECK_INVALID_REASON";
|
|
19
|
+
SafetyCheckErrorCode["CUSTOM_REASON_REQUIRED"] = "SAFETY_CHECK_CUSTOM_REASON_REQUIRED";
|
|
20
|
+
SafetyCheckErrorCode["GUARDIAN_NOT_FOUND"] = "SAFETY_CHECK_GUARDIAN_NOT_FOUND";
|
|
21
|
+
SafetyCheckErrorCode["GUARDIANS_UNAVAILABLE"] = "SAFETY_CHECK_GUARDIANS_UNAVAILABLE";
|
|
22
|
+
SafetyCheckErrorCode["NO_SOS_RECIPIENTS"] = "SAFETY_CHECK_NO_SOS_RECIPIENTS";
|
|
23
|
+
SafetyCheckErrorCode["SERVICE_PROVIDER_NOT_ENTITLED"] = "SAFETY_CHECK_SERVICE_PROVIDER_NOT_ENTITLED";
|
|
24
|
+
SafetyCheckErrorCode["TRACKING_CLOSED"] = "SAFETY_CHECK_TRACKING_CLOSED";
|
|
25
|
+
SafetyCheckErrorCode["RATE_LIMITED"] = "SAFETY_CHECK_RATE_LIMITED";
|
|
26
|
+
})(SafetyCheckErrorCode || (exports.SafetyCheckErrorCode = SafetyCheckErrorCode = {}));
|
|
27
|
+
//# sourceMappingURL=safety-error-code.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-error-code.enum.js","sourceRoot":"","sources":["../../../../../src/modules/safety/enums/safety-error-code.enum.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,oBAgBX;AAhBD,WAAY,oBAAoB;IAC5B,4DAAoC,CAAA;IACpC,sEAA8C,CAAA;IAC9C,4DAAoC,CAAA;IACpC,oFAA4D,CAAA;IAC5D,8EAAsD,CAAA;IACtD,0EAAkD,CAAA;IAClD,oFAA4D,CAAA;IAC5D,sEAA8C,CAAA;IAC9C,sFAA8D,CAAA;IAC9D,8EAAsD,CAAA;IACtD,oFAA4D,CAAA;IAC5D,4EAAoD,CAAA;IACpD,oGAA4E,CAAA;IAC5E,wEAAgD,CAAA;IAChD,kEAA0C,CAAA;AAC9C,CAAC,EAhBW,oBAAoB,oCAApB,oBAAoB,QAgB/B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Enums
|
|
18
|
+
__exportStar(require("./enums/safety-check-status.enum"), exports);
|
|
19
|
+
__exportStar(require("./enums/safety-enums"), exports);
|
|
20
|
+
__exportStar(require("./enums/safety-error-code.enum"), exports);
|
|
21
|
+
// Constants
|
|
22
|
+
__exportStar(require("./constants/safety-check-limits.const"), exports);
|
|
23
|
+
__exportStar(require("./constants/safety-taxonomy.const"), exports);
|
|
24
|
+
__exportStar(require("./constants/safety-integration.const"), exports);
|
|
25
|
+
// Interfaces
|
|
26
|
+
__exportStar(require("./interfaces/safety-check"), exports);
|
|
27
|
+
__exportStar(require("./interfaces/safety-check-event"), exports);
|
|
28
|
+
// DTOs
|
|
29
|
+
__exportStar(require("./dtos/safety-check.dto"), exports);
|
|
30
|
+
__exportStar(require("./dtos/safety-admin.dto"), exports);
|
|
31
|
+
__exportStar(require("./dtos/safety-internal.dto"), exports);
|
|
32
|
+
// Utilities
|
|
33
|
+
__exportStar(require("./utils/safety-check-state-machine"), exports);
|
|
34
|
+
__exportStar(require("./utils/safety-check-timing.util"), exports);
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/safety/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,mEAAiD;AACjD,uDAAqC;AACrC,iEAA+C;AAE/C,YAAY;AACZ,wEAAsD;AACtD,oEAAkD;AAClD,uEAAqD;AAErD,aAAa;AACb,4DAA0C;AAC1C,kEAAgD;AAEhD,OAAO;AACP,0DAAwC;AACxC,0DAAwC;AACxC,6DAA2C;AAE3C,YAAY;AACZ,qEAAmD;AACnD,mEAAiD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-check-event.js","sourceRoot":"","sources":["../../../../../src/modules/safety/interfaces/safety-check-event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-check.js","sourceRoot":"","sources":["../../../../../src/modules/safety/interfaces/safety-check.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TRACKING_SAFETY_CHECK_STATUSES = exports.TERMINAL_SAFETY_CHECK_STATUSES = exports.OPEN_SAFETY_CHECK_STATUSES = exports.SAFETY_CHECK_TRANSITIONS = void 0;
|
|
4
|
+
exports.isOpenSafetyCheckStatus = isOpenSafetyCheckStatus;
|
|
5
|
+
exports.isTerminalSafetyCheckStatus = isTerminalSafetyCheckStatus;
|
|
6
|
+
exports.canTransitionSafetyCheck = canTransitionSafetyCheck;
|
|
7
|
+
exports.allowedSourcesFor = allowedSourcesFor;
|
|
8
|
+
exports.isIdempotentRepeat = isIdempotentRepeat;
|
|
9
|
+
const safety_check_status_enum_1 = require("../enums/safety-check-status.enum");
|
|
10
|
+
const S = safety_check_status_enum_1.SafetyCheckStatus;
|
|
11
|
+
/**
|
|
12
|
+
* Every legal Safety Check transition. clarion-safety refuses anything else, and
|
|
13
|
+
* applies each allowed one as `UPDATE ... WHERE status IN (<allowed sources>)`, so
|
|
14
|
+
* the database - not the caller - decides a race.
|
|
15
|
+
*
|
|
16
|
+
* Re-applying a transition to a check already in the target state is NOT listed
|
|
17
|
+
* here: it is an idempotent no-op, answered with the current check
|
|
18
|
+
* (see isIdempotentRepeat).
|
|
19
|
+
*/
|
|
20
|
+
exports.SAFETY_CHECK_TRANSITIONS = {
|
|
21
|
+
[S.CREATED]: [S.ACTIVE, S.PROMPTING, S.CHECKED_IN, S.SOS_TRIGGERED, S.STOPPED, S.CANCELLED, S.EXPIRED],
|
|
22
|
+
[S.ACTIVE]: [S.PROMPTING, S.CHECKED_IN, S.SOS_TRIGGERED, S.STOPPED, S.CANCELLED, S.EXPIRED],
|
|
23
|
+
// Back to ACTIVE when the user extends while being prompted.
|
|
24
|
+
[S.PROMPTING]: [S.ACTIVE, S.CHECKED_IN, S.SOS_TRIGGERED, S.STOPPED, S.CANCELLED, S.EXPIRED],
|
|
25
|
+
// The check is over once an SOS is raised; FAILED only when the incident
|
|
26
|
+
// could never be created.
|
|
27
|
+
[S.SOS_TRIGGERED]: [S.FAILED],
|
|
28
|
+
[S.CHECKED_IN]: [],
|
|
29
|
+
[S.STOPPED]: [],
|
|
30
|
+
[S.EXPIRED]: [],
|
|
31
|
+
[S.CANCELLED]: [],
|
|
32
|
+
[S.FAILED]: [],
|
|
33
|
+
};
|
|
34
|
+
/** States in which the user is "in a Safety Check": at most one per user. */
|
|
35
|
+
exports.OPEN_SAFETY_CHECK_STATUSES = [S.CREATED, S.ACTIVE, S.PROMPTING];
|
|
36
|
+
/** States from which the check will never move again. */
|
|
37
|
+
exports.TERMINAL_SAFETY_CHECK_STATUSES = [
|
|
38
|
+
S.CHECKED_IN,
|
|
39
|
+
S.STOPPED,
|
|
40
|
+
S.EXPIRED,
|
|
41
|
+
S.CANCELLED,
|
|
42
|
+
S.FAILED,
|
|
43
|
+
];
|
|
44
|
+
/**
|
|
45
|
+
* States in which location is still being recorded for the check. SOS_TRIGGERED
|
|
46
|
+
* is included: the recorded trip becomes the incident's trip and keeps growing.
|
|
47
|
+
*/
|
|
48
|
+
exports.TRACKING_SAFETY_CHECK_STATUSES = [
|
|
49
|
+
S.CREATED,
|
|
50
|
+
S.ACTIVE,
|
|
51
|
+
S.PROMPTING,
|
|
52
|
+
S.SOS_TRIGGERED,
|
|
53
|
+
];
|
|
54
|
+
function isOpenSafetyCheckStatus(status) {
|
|
55
|
+
return !!status && exports.OPEN_SAFETY_CHECK_STATUSES.includes(status);
|
|
56
|
+
}
|
|
57
|
+
function isTerminalSafetyCheckStatus(status) {
|
|
58
|
+
return !!status && exports.TERMINAL_SAFETY_CHECK_STATUSES.includes(status);
|
|
59
|
+
}
|
|
60
|
+
function canTransitionSafetyCheck(from, to) {
|
|
61
|
+
var _a;
|
|
62
|
+
return ((_a = exports.SAFETY_CHECK_TRANSITIONS[from]) !== null && _a !== void 0 ? _a : []).includes(to);
|
|
63
|
+
}
|
|
64
|
+
/** The states a check may be in for a transition to `to` to be applied. */
|
|
65
|
+
function allowedSourcesFor(to) {
|
|
66
|
+
return Object.keys(exports.SAFETY_CHECK_TRANSITIONS).filter((from) => exports.SAFETY_CHECK_TRANSITIONS[from].includes(to));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A repeated request for the state the check is already in - a retried "I'm OK",
|
|
70
|
+
* a second stop. Answered with the current check, never an error.
|
|
71
|
+
*/
|
|
72
|
+
function isIdempotentRepeat(current, requested) {
|
|
73
|
+
return current === requested;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=safety-check-state-machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-check-state-machine.js","sourceRoot":"","sources":["../../../../../src/modules/safety/utils/safety-check-state-machine.ts"],"names":[],"mappings":";;;AAmDA,0DAEC;AAED,kEAEC;AAED,4DAEC;AAGD,8CAIC;AAMD,gDAEC;AA5ED,gFAAsE;AAEtE,MAAM,CAAC,GAAG,4CAAiB,CAAC;AAE5B;;;;;;;;GAQG;AACU,QAAA,wBAAwB,GAAsE;IACvG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;IACtG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;IAC3F,6DAA6D;IAC7D,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;IAC3F,yEAAyE;IACzE,0BAA0B;IAC1B,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE;IAClB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE;IACf,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE;IACf,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE;IACjB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;CACjB,CAAC;AAEF,6EAA6E;AAChE,QAAA,0BAA0B,GAAiC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AAE3G,yDAAyD;AAC5C,QAAA,8BAA8B,GAAiC;IACxE,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,OAAO;IACT,CAAC,CAAC,OAAO;IACT,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,MAAM;CACX,CAAC;AAEF;;;GAGG;AACU,QAAA,8BAA8B,GAAiC;IACxE,CAAC,CAAC,OAAO;IACT,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,aAAa;CAClB,CAAC;AAEF,SAAgB,uBAAuB,CAAC,MAAqD;IACzF,OAAO,CAAC,CAAC,MAAM,IAAK,kCAAgD,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1F,CAAC;AAED,SAAgB,2BAA2B,CAAC,MAAqD;IAC7F,OAAO,CAAC,CAAC,MAAM,IAAK,sCAAoD,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9F,CAAC;AAED,SAAgB,wBAAwB,CAAC,IAAuB,EAAE,EAAqB;;IACnF,OAAO,CAAC,MAAA,gCAAwB,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,2EAA2E;AAC3E,SAAgB,iBAAiB,CAAC,EAAqB;IACnD,OAAQ,MAAM,CAAC,IAAI,CAAC,gCAAwB,CAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAClF,gCAAwB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC9C,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAA0B,EAAE,SAA4B;IACvF,OAAO,OAAO,KAAK,SAAS,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateSafetyCheckDuration = validateSafetyCheckDuration;
|
|
4
|
+
exports.isValidPromptCountdownSeconds = isValidPromptCountdownSeconds;
|
|
5
|
+
exports.latestAllowedCheckInAt = latestAllowedCheckInAt;
|
|
6
|
+
exports.planSafetyCheckExtension = planSafetyCheckExtension;
|
|
7
|
+
exports.promptDeadlineFrom = promptDeadlineFrom;
|
|
8
|
+
exports.sosDueAt = sosDueAt;
|
|
9
|
+
exports.isSosTooStale = isSosTooStale;
|
|
10
|
+
const safety_check_limits_const_1 = require("../constants/safety-check-limits.const");
|
|
11
|
+
const MINUTE_MS = 60000;
|
|
12
|
+
/** Validates a requested duration against the platform limits. */
|
|
13
|
+
function validateSafetyCheckDuration(minutes) {
|
|
14
|
+
if (typeof minutes !== 'number' || !Number.isInteger(minutes))
|
|
15
|
+
return { valid: false, reason: 'NOT_AN_INTEGER' };
|
|
16
|
+
if (minutes < safety_check_limits_const_1.SAFETY_CHECK_LIMITS.minDurationMinutes)
|
|
17
|
+
return { valid: false, reason: 'TOO_SHORT' };
|
|
18
|
+
if (minutes > safety_check_limits_const_1.SAFETY_CHECK_LIMITS.maxDurationMinutes)
|
|
19
|
+
return { valid: false, reason: 'TOO_LONG' };
|
|
20
|
+
return { valid: true };
|
|
21
|
+
}
|
|
22
|
+
/** Whether a prompt countdown (seconds) is within the configurable range. */
|
|
23
|
+
function isValidPromptCountdownSeconds(seconds) {
|
|
24
|
+
return (typeof seconds === 'number' &&
|
|
25
|
+
Number.isInteger(seconds) &&
|
|
26
|
+
seconds >= safety_check_limits_const_1.SAFETY_CHECK_LIMITS.minPromptCountdownSeconds &&
|
|
27
|
+
seconds <= safety_check_limits_const_1.SAFETY_CHECK_LIMITS.maxPromptCountdownSeconds);
|
|
28
|
+
}
|
|
29
|
+
/** The latest moment a check started at `startedAt` may be scheduled to check in. */
|
|
30
|
+
function latestAllowedCheckInAt(startedAt) {
|
|
31
|
+
return new Date(startedAt.getTime() + safety_check_limits_const_1.SAFETY_CHECK_LIMITS.maxDurationMinutes * MINUTE_MS);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Plans an extension. While the check-in time is still ahead the extension is
|
|
35
|
+
* added to it; once it has passed (the user is being prompted) it counts from
|
|
36
|
+
* now. Either way the result may not end more than maxDurationMinutes after the
|
|
37
|
+
* check started - an extension never lets a check outlive the 24 hour cap.
|
|
38
|
+
*/
|
|
39
|
+
function planSafetyCheckExtension(input) {
|
|
40
|
+
const cap = latestAllowedCheckInAt(input.startedAt).getTime();
|
|
41
|
+
const base = Math.max(input.scheduledCheckInAt.getTime(), input.now.getTime());
|
|
42
|
+
const maxAdditionalMinutes = Math.max(0, Math.floor((cap - base) / MINUTE_MS));
|
|
43
|
+
if (!Number.isInteger(input.additionalMinutes) || input.additionalMinutes < 1) {
|
|
44
|
+
return { allowed: false, maxAdditionalMinutes };
|
|
45
|
+
}
|
|
46
|
+
const next = base + input.additionalMinutes * MINUTE_MS;
|
|
47
|
+
if (next > cap)
|
|
48
|
+
return { allowed: false, maxAdditionalMinutes };
|
|
49
|
+
return {
|
|
50
|
+
allowed: true,
|
|
51
|
+
scheduledCheckInAt: new Date(next),
|
|
52
|
+
totalDurationMinutes: Math.round((next - input.startedAt.getTime()) / MINUTE_MS),
|
|
53
|
+
maxAdditionalMinutes,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** When the prompt shown at `promptStartedAt` runs out (what the user sees). */
|
|
57
|
+
function promptDeadlineFrom(promptStartedAt, promptCountdownSeconds) {
|
|
58
|
+
return new Date(promptStartedAt.getTime() + promptCountdownSeconds * 1000);
|
|
59
|
+
}
|
|
60
|
+
/** When the server actually raises the SOS: the visible deadline plus the grace. */
|
|
61
|
+
function sosDueAt(promptDeadlineAt) {
|
|
62
|
+
return new Date(promptDeadlineAt.getTime() + safety_check_limits_const_1.SAFETY_CHECK_LIMITS.checkInGraceSeconds * 1000);
|
|
63
|
+
}
|
|
64
|
+
/** Whether an SOS that fell due at `dueAt` is too stale to raise at `now`. */
|
|
65
|
+
function isSosTooStale(dueAt, now) {
|
|
66
|
+
return now.getTime() - dueAt.getTime() > safety_check_limits_const_1.SAFETY_CHECK_LIMITS.staleSosWindowMinutes * MINUTE_MS;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=safety-check-timing.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-check-timing.util.js","sourceRoot":"","sources":["../../../../../src/modules/safety/utils/safety-check-timing.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,18 @@ exports.SMS_TEMPLATES = {
|
|
|
46
46
|
variables: ['REPORTER_FIRSTNAME', 'GUARDIAN_FIRSTNAME', 'APP_NAME', 'LOCATION_LINK'],
|
|
47
47
|
description: 'Template for incident guardian notifications'
|
|
48
48
|
},
|
|
49
|
+
[sms_template_enum_1.SmsTemplateType.SAFETY_CHECK_GUARDIAN_STARTED]: {
|
|
50
|
+
name: 'Safety Check Started (Guardian)',
|
|
51
|
+
content: '{{GUARDIAN_FIRSTNAME}}, {{USER_FIRSTNAME}} has started a Safety Check on {{APP_NAME}} ({{REASON}}) and expects to check in by {{CHECK_IN_TIME}}. If they do not, you will be alerted. Nothing to do for now.',
|
|
52
|
+
variables: ['GUARDIAN_FIRSTNAME', 'USER_FIRSTNAME', 'APP_NAME', 'REASON', 'CHECK_IN_TIME'],
|
|
53
|
+
description: 'Tells an external guardian that someone who chose them started a Safety Check'
|
|
54
|
+
},
|
|
55
|
+
[sms_template_enum_1.SmsTemplateType.SAFETY_CHECK_GUARDIAN_ENDED]: {
|
|
56
|
+
name: 'Safety Check Ended (Guardian)',
|
|
57
|
+
content: '{{GUARDIAN_FIRSTNAME}}, {{USER_FIRSTNAME}} {{OUTCOME}} on {{APP_NAME}}. Nothing to do.',
|
|
58
|
+
variables: ['GUARDIAN_FIRSTNAME', 'USER_FIRSTNAME', 'OUTCOME', 'APP_NAME'],
|
|
59
|
+
description: 'Tells an external guardian that a Safety Check ended without an SOS'
|
|
60
|
+
},
|
|
49
61
|
[sms_template_enum_1.SmsTemplateType.APPOINTMENT_REMINDER]: {
|
|
50
62
|
name: 'Appointment Reminder',
|
|
51
63
|
content: 'Reminder: You have an appointment on {{DATE}} at {{TIME}} for {{PURPOSE}}. Location: {{LOCATION}}. Contact us if you need to reschedule.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sms-templates.config.js","sourceRoot":"","sources":["../../../../../src/modules/sms/constants/sms-templates.config.ts"],"names":[],"mappings":";;;AACA,kEAA6D;AAEhD,QAAA,aAAa,GAAsB;IAC5C,SAAS,EAAE;QACP,CAAC,mCAAe,CAAC,gBAAgB,CAAC,EAAE;YAChC,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,qIAAqI;YAC9I,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;YACpC,WAAW,EAAE,6CAA6C;SAC7D;QACD,CAAC,mCAAe,CAAC,cAAc,CAAC,EAAE;YAC9B,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,oKAAoK;YAC7K,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;YACpC,WAAW,EAAE,gDAAgD;SAChE;QACD,CAAC,mCAAe,CAAC,OAAO,CAAC,EAAE;YACvB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,6HAA6H;YACtI,SAAS,EAAE,CAAC,mBAAmB,EAAE,MAAM,CAAC;YACxC,WAAW,EAAE,+BAA+B;SAC/C;QACD,CAAC,mCAAe,CAAC,kBAAkB,CAAC,EAAE;YAClC,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,2IAA2I;YACpJ,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC;YAC5C,WAAW,EAAE,uCAAuC;SACvD;QACD,CAAC,mCAAe,CAAC,cAAc,CAAC,EAAE;YAC9B,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,iHAAiH;YAC1H,SAAS,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;YACzC,WAAW,EAAE,gDAAgD;SAChE;QACD,CAAC,mCAAe,CAAC,qBAAqB,CAAC,EAAE;YACrC,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,yHAAyH;YAClI,SAAS,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;YAC5C,WAAW,EAAE,qCAAqC;SACrD;QACD,CAAC,mCAAe,CAAC,8BAA8B,CAAC,EAAE;YAC9C,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,oPAAoP;YAC7P,SAAS,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,eAAe,CAAC;YACpF,WAAW,EAAE,8CAA8C;SAC9D;QACD,CAAC,mCAAe,CAAC,oBAAoB,CAAC,EAAE;YACpC,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,0IAA0I;YACnJ,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;YAClD,WAAW,EAAE,oCAAoC;SACpD;QACD,CAAC,mCAAe,CAAC,oBAAoB,CAAC,EAAE;YACpC,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,CAAC,SAAS,CAAC;YACtB,WAAW,EAAE,uCAAuC;SACvD;KACJ;CACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"sms-templates.config.js","sourceRoot":"","sources":["../../../../../src/modules/sms/constants/sms-templates.config.ts"],"names":[],"mappings":";;;AACA,kEAA6D;AAEhD,QAAA,aAAa,GAAsB;IAC5C,SAAS,EAAE;QACP,CAAC,mCAAe,CAAC,gBAAgB,CAAC,EAAE;YAChC,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,qIAAqI;YAC9I,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;YACpC,WAAW,EAAE,6CAA6C;SAC7D;QACD,CAAC,mCAAe,CAAC,cAAc,CAAC,EAAE;YAC9B,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,oKAAoK;YAC7K,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;YACpC,WAAW,EAAE,gDAAgD;SAChE;QACD,CAAC,mCAAe,CAAC,OAAO,CAAC,EAAE;YACvB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,6HAA6H;YACtI,SAAS,EAAE,CAAC,mBAAmB,EAAE,MAAM,CAAC;YACxC,WAAW,EAAE,+BAA+B;SAC/C;QACD,CAAC,mCAAe,CAAC,kBAAkB,CAAC,EAAE;YAClC,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,2IAA2I;YACpJ,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC;YAC5C,WAAW,EAAE,uCAAuC;SACvD;QACD,CAAC,mCAAe,CAAC,cAAc,CAAC,EAAE;YAC9B,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,iHAAiH;YAC1H,SAAS,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;YACzC,WAAW,EAAE,gDAAgD;SAChE;QACD,CAAC,mCAAe,CAAC,qBAAqB,CAAC,EAAE;YACrC,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,yHAAyH;YAClI,SAAS,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;YAC5C,WAAW,EAAE,qCAAqC;SACrD;QACD,CAAC,mCAAe,CAAC,8BAA8B,CAAC,EAAE;YAC9C,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,oPAAoP;YAC7P,SAAS,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,eAAe,CAAC;YACpF,WAAW,EAAE,8CAA8C;SAC9D;QACD,CAAC,mCAAe,CAAC,6BAA6B,CAAC,EAAE;YAC7C,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,8MAA8M;YACvN,SAAS,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC;YAC1F,WAAW,EAAE,+EAA+E;SAC/F;QACD,CAAC,mCAAe,CAAC,2BAA2B,CAAC,EAAE;YAC3C,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,wFAAwF;YACjG,SAAS,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC;YAC1E,WAAW,EAAE,qEAAqE;SACrF;QACD,CAAC,mCAAe,CAAC,oBAAoB,CAAC,EAAE;YACpC,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,0IAA0I;YACnJ,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;YAClD,WAAW,EAAE,oCAAoC;SACpD;QACD,CAAC,mCAAe,CAAC,oBAAoB,CAAC,EAAE;YACpC,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,CAAC,SAAS,CAAC;YACtB,WAAW,EAAE,uCAAuC;SACvD;KACJ;CACJ,CAAC"}
|
|
@@ -10,6 +10,8 @@ var SmsTemplateType;
|
|
|
10
10
|
SmsTemplateType["SECURITY_ALERT"] = "security_alert";
|
|
11
11
|
SmsTemplateType["INCIDENT_NOTIFICATION"] = "incident_notification";
|
|
12
12
|
SmsTemplateType["INCIDENT_GUARDIAN_NOTIFICATION"] = "incident_guardian_notification";
|
|
13
|
+
SmsTemplateType["SAFETY_CHECK_GUARDIAN_STARTED"] = "safety_check_guardian_started";
|
|
14
|
+
SmsTemplateType["SAFETY_CHECK_GUARDIAN_ENDED"] = "safety_check_guardian_ended";
|
|
13
15
|
SmsTemplateType["APPOINTMENT_REMINDER"] = "appointment_reminder";
|
|
14
16
|
SmsTemplateType["GENERAL_NOTIFICATION"] = "general_notification";
|
|
15
17
|
})(SmsTemplateType || (exports.SmsTemplateType = SmsTemplateType = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sms-template.enum.js","sourceRoot":"","sources":["../../../../../src/modules/sms/enums/sms-template.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"sms-template.enum.js","sourceRoot":"","sources":["../../../../../src/modules/sms/enums/sms-template.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAYX;AAZD,WAAY,eAAe;IACvB,wDAAqC,CAAA;IACrC,oDAAiC,CAAA;IACjC,sCAAmB,CAAA;IACnB,4DAAyC,CAAA;IACzC,oDAAiC,CAAA;IACjC,kEAA+C,CAAA;IAC/C,oFAAiE,CAAA;IACjE,kFAA+D,CAAA;IAC/D,8EAA2D,CAAA;IAC3D,gEAA6C,CAAA;IAC7C,gEAA6C,CAAA;AACjD,CAAC,EAZW,eAAe,+BAAf,eAAe,QAY1B"}
|
package/dist/esm/index.js
CHANGED
|
@@ -26,6 +26,7 @@ export * from './modules/system-user/index';
|
|
|
26
26
|
export * from './modules/partner/index';
|
|
27
27
|
export * from './modules/support/index';
|
|
28
28
|
export * from './modules/alert-intake/index';
|
|
29
|
+
export * from './modules/safety/index';
|
|
29
30
|
// Interfaces
|
|
30
31
|
export * from './interfaces/server-message';
|
|
31
32
|
export * from './interfaces/i-request-with-user';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AAEvC,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AAExC,YAAY;AACZ,cAAc,0BAA0B,CAAC;AAEzC,QAAQ;AACR,cAAc,eAAe,CAAC;AAE9B,YAAY;AACZ,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uDAAuD,CAAC;AAEtE,aAAa;AACb,cAAc,oBAAoB,CAAC"}
|
package/dist/esm/kafka/topics.js
CHANGED
|
@@ -9,7 +9,9 @@ export const KAFKA_TOPICS = {
|
|
|
9
9
|
USER_CREATED: 'user.created',
|
|
10
10
|
USER_UPDATED: 'user.updated',
|
|
11
11
|
USER_DELETED: 'user.deleted',
|
|
12
|
-
// Org
|
|
12
|
+
// Org. ORG_CREATED is published by clarion-organization after commit
|
|
13
|
+
// (payload OrganizationCreatedEvent); clarion-incident provisions the Safety
|
|
14
|
+
// Alerts category from it.
|
|
13
15
|
ORG_CREATED: 'org.created',
|
|
14
16
|
ORG_UPDATED: 'org.updated',
|
|
15
17
|
ORG_DELETED: 'org.deleted',
|
|
@@ -95,5 +97,12 @@ export const KAFKA_TOPICS = {
|
|
|
95
97
|
SUPPORT_FEEDBACK_RATING_SUBMITTED: 'support.feedback.rating-submitted.v1',
|
|
96
98
|
SUPPORT_PROVIDER_SYNC_FAILED: 'support.provider.sync-failed.v1',
|
|
97
99
|
SUPPORT_PROVIDER_SYNC_RECOVERED: 'support.provider.sync-recovered.v1',
|
|
100
|
+
// Safety Check (producer: clarion-safety, via its transactional outbox;
|
|
101
|
+
// payload SafetyCheckEvent) - versioned. Keyed by the check id so one check's
|
|
102
|
+
// events stay in order. Carries NO location, ever.
|
|
103
|
+
SAFETY_CHECK_STARTED: 'safety.check.started.v1',
|
|
104
|
+
SAFETY_CHECK_PROMPTING: 'safety.check.prompting.v1',
|
|
105
|
+
SAFETY_CHECK_ENDED: 'safety.check.ended.v1',
|
|
106
|
+
SAFETY_CHECK_SOS_TRIGGERED: 'safety.check.sos-triggered.v1',
|
|
98
107
|
};
|
|
99
108
|
//# 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,
|
|
1
|
+
{"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { ApiProperty } from '@nestjs/swagger';
|
|
11
|
+
import { Type } from 'class-transformer';
|
|
12
|
+
import { ArrayMaxSize, IsArray, IsInt, IsPositive, IsString, MaxLength } from 'class-validator';
|
|
13
|
+
/** Validated GuardianAudience - see the interface for what absent vs present means. */
|
|
14
|
+
export class GuardianAudienceDto {
|
|
15
|
+
}
|
|
16
|
+
__decorate([
|
|
17
|
+
ApiProperty({ type: [Number], description: 'User ids of the app-user guardians included', example: [812] }),
|
|
18
|
+
IsArray(),
|
|
19
|
+
ArrayMaxSize(50),
|
|
20
|
+
Type(() => Number),
|
|
21
|
+
IsInt({ each: true }),
|
|
22
|
+
IsPositive({ each: true }),
|
|
23
|
+
__metadata("design:type", Array)
|
|
24
|
+
], GuardianAudienceDto.prototype, "systemGuardianUserIds", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
ApiProperty({
|
|
27
|
+
type: [String],
|
|
28
|
+
description: 'E.164 phone numbers of the external (non-app) guardians included',
|
|
29
|
+
example: ['+254712345678'],
|
|
30
|
+
}),
|
|
31
|
+
IsArray(),
|
|
32
|
+
ArrayMaxSize(50),
|
|
33
|
+
IsString({ each: true }),
|
|
34
|
+
MaxLength(20, { each: true }),
|
|
35
|
+
__metadata("design:type", Array)
|
|
36
|
+
], GuardianAudienceDto.prototype, "externalGuardianPhoneNumbers", void 0);
|
|
37
|
+
//# sourceMappingURL=guardian-audience.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardian-audience.dto.js","sourceRoot":"","sources":["../../../../../src/modules/alert-dispatch/dtos/guardian-audience.dto.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGhG,uFAAuF;AACvF,MAAM,OAAO,mBAAmB;CAmB/B;AAZG;IANC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,6CAA6C,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3G,OAAO,EAAE;IACT,YAAY,CAAC,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;kEACM;AAWjC;IATC,WAAW,CAAC;QACT,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,kEAAkE;QAC/E,OAAO,EAAE,CAAC,eAAe,CAAC;KAC7B,CAAC;IACD,OAAO,EAAE;IACT,YAAY,CAAC,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;yEACU"}
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
export * from './enums/incident-dispatch-scope.enum';
|
|
3
3
|
// Interfaces
|
|
4
4
|
export * from './interfaces/alert-dispatch';
|
|
5
|
+
export * from './interfaces/guardian-audience';
|
|
6
|
+
// DTOs
|
|
7
|
+
export * from './dtos/guardian-audience.dto';
|
|
5
8
|
// Utilities
|
|
6
9
|
export * from './utils/alert-dispatch.util';
|
|
10
|
+
export * from './utils/guardian-audience.util';
|
|
7
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/alert-dispatch/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,sCAAsC,CAAC;AAErD,aAAa;AACb,cAAc,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/alert-dispatch/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,sCAAsC,CAAC;AAErD,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAE/C,OAAO;AACP,cAAc,8BAA8B,CAAC;AAE7C,YAAY;AACZ,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardian-audience.js","sourceRoot":"","sources":["../../../../../src/modules/alert-dispatch/interfaces/guardian-audience.ts"],"names":[],"mappings":""}
|